2 * Copyright (C) 2017-2018 "IoT.bzh"
3 * Author Clément Bénier <clement.benier@iot.bzh>
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
25 "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
26 "github.com/stretchr/testify/assert"
29 func TestFolders(t *testing.T) {
30 var cfgArray []xsapiv1.FolderConfig
31 assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
32 assert.Equal(t, len(cfgArray), 0)
34 fPrj := xsapiv1.FolderConfig{
36 ClientPath: logDir + "testproject",
37 Type: xsapiv1.TypePathMap,
38 ClientData: "clientdatatest",
39 DataPathMap: xsapiv1.PathMapConfig{
40 ServerPath: logDir + "testserverpath",
43 var cfg xsapiv1.FolderConfig
44 assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
47 isCfgPrjMatch := func(fPrj xsapiv1.FolderConfig, cfg xsapiv1.FolderConfig) {
48 re := regexp.MustCompile("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$")
49 assert.True(t, re.MatchString(cfg.ID)) //ID
50 assert.Equal(t, cfg.Label, fPrj.Label) //Label
51 assert.Equal(t, cfg.ClientPath, fPrj.ClientPath)
52 assert.Equal(t, cfg.Type, fPrj.Type)
53 assert.Equal(t, cfg.Status, "Enable")
54 assert.Equal(t, cfg.IsInSync, true)
55 assert.Equal(t, len(cfg.DefaultSdk), 0)
56 assert.Equal(t, fPrj.ClientData, cfg.ClientData)
57 assert.Equal(t, fPrj.DataPathMap.ServerPath, cfg.DataPathMap.ServerPath)
59 isCfgPrjMatch(fPrj, cfg)
60 var cfg2 xsapiv1.FolderConfig
61 assert.Nil(t, HTTPCli.Get("/folders/"+cfg.ID, &cfg2))
62 isCfgPrjMatch(fPrj, cfg2)
64 assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
65 assert.Equal(t, len(cfgArray), 1)
67 //call with the same uid create error
68 assert.NotNil(t, HTTPCli.Post("/folders", cfg, &cfg))
70 /*create/delete folders*/
71 var cfgArrayBis []xsapiv1.FolderConfig
72 assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
73 assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
74 assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
75 assert.Equal(t, len(cfgArray), 3)
76 assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[1].ID, &cfg))
77 assert.Equal(t, cfg, cfgArray[1])
78 assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis))
79 assert.Equal(t, len(cfgArrayBis), 2)
80 assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[0].ID, &cfg))
81 assert.Equal(t, cfg, cfgArray[0])
82 assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis))
83 assert.Equal(t, len(cfgArrayBis), 1)
84 assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[2].ID, &cfg))
85 assert.Equal(t, cfg, cfgArray[2])
86 assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis))
87 assert.Equal(t, len(cfgArrayBis), 0)
90 func TestFoldersEmptyValues(t *testing.T) {
91 fPrj := xsapiv1.FolderConfig{
93 ClientPath: logDir + "testproject",
94 Type: xsapiv1.TypePathMap,
95 ClientData: "clientdatatest",
96 DataPathMap: xsapiv1.PathMapConfig{
100 var cfg xsapiv1.FolderConfig
101 /*ServerPath is empty*/
102 assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
104 fPrj.DataPathMap.ServerPath = logDir + "sameserverpath"
106 /*ClientPath is Empty*/
107 assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
109 fPrj.ClientPath = "logDir"
112 assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
114 var cfgArray []xsapiv1.FolderConfig
115 assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
116 assert.Equal(t, len(cfgArray), 0)
119 func TestFoldersPathMapConfig(t *testing.T) {
120 fPrj := xsapiv1.FolderConfig{
121 Label: "testproject",
122 ClientPath: logDir + "clientpathtest",
123 Type: xsapiv1.TypePathMap,
124 ClientData: "clientdatatest",
125 DataPathMap: xsapiv1.PathMapConfig{
126 ServerPath: logDir + "serverpath",
127 CheckFile: "checkfile",
130 var cfg xsapiv1.FolderConfig
132 assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
134 var checkFileClient = fPrj.ClientPath + "/checkfile"
135 var checkFileServer = fPrj.DataPathMap.ServerPath + "/checkfile"
138 os.MkdirAll(fPrj.ClientPath, 0755)
139 fPrj.DataPathMap.CheckFile = checkFileClient
140 fPrj.DataPathMap.CheckContent = "CheckContent From Client\n"
141 file, err := os.OpenFile(checkFileClient, os.O_CREATE|os.O_RDWR, 0644)
145 if err := os.Symlink(checkFileClient, checkFileServer); err != nil {
148 /*file content differ*/
149 assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
151 /*write same message*/
152 if _, err := file.WriteString(fPrj.DataPathMap.CheckContent); err != nil {
155 assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
157 /*check server msg: ServerUID needed*/
158 var APIcfg xsapiv1.APIConfig
159 assert.Nil(t, HTTPCli.Get("/config", &APIcfg))
160 msg := "Pathmap checked message written by xds-server ID: " + APIcfg.ServerUID + "\n"
161 data, err := ioutil.ReadAll(file)
165 assert.Equal(t, msg, string(data))
167 assert.Nil(t, HTTPCli.Delete("/folders/"+cfg.ID, &cfg))
168 var cfgArray []xsapiv1.FolderConfig
169 assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
170 assert.Equal(t, len(cfgArray), 0)