aboutsummaryrefslogtreecommitdiffstats
path: root/test/folders_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/folders_test.go')
-rw-r--r--test/folders_test.go187
1 files changed, 187 insertions, 0 deletions
diff --git a/test/folders_test.go b/test/folders_test.go
new file mode 100644
index 0000000..10f1dc6
--- /dev/null
+++ b/test/folders_test.go
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2017-2018 "IoT.bzh"
+ * Author Clément Bénier <clement.benier@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package xdsservertest
+
+import (
+ "io/ioutil"
+ "os"
+ "regexp"
+ "testing"
+
+ "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestFolders(t *testing.T) {
+ /*init: check there is no folder*/
+ Debug(t, "check there is no folder")
+ var cfgArray []xsapiv1.FolderConfig
+ assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
+ assert.Equal(t, len(cfgArray), 0)
+
+ fPrj := xsapiv1.FolderConfig{
+ Label: "testproject",
+ ClientPath: logDir + "testproject",
+ Type: xsapiv1.TypePathMap,
+ ClientData: "clientdatatest",
+ DataPathMap: xsapiv1.PathMapConfig{
+ ServerPath: logDir + "testserverpath",
+ },
+ }
+ var cfg xsapiv1.FolderConfig
+ Debugf(t, "create folder: \n%v", fPrj)
+ assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ assert.NotNil(t, cfg)
+ Debugf(t, "result folder: \n%v", cfg)
+
+ isCfgPrjMatch := func(fPrj xsapiv1.FolderConfig, cfg xsapiv1.FolderConfig) {
+ re := regexp.MustCompile("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$")
+ assert.True(t, re.MatchString(cfg.ID)) //ID
+ assert.Equal(t, cfg.Label, fPrj.Label) //Label
+ assert.Equal(t, cfg.ClientPath, fPrj.ClientPath)
+ assert.Equal(t, cfg.Type, fPrj.Type)
+ assert.Equal(t, cfg.Status, "Enable")
+ assert.Equal(t, cfg.IsInSync, true)
+ assert.Equal(t, len(cfg.DefaultSdk), 0)
+ assert.Equal(t, fPrj.ClientData, cfg.ClientData)
+ assert.Equal(t, fPrj.DataPathMap.ServerPath, cfg.DataPathMap.ServerPath)
+ }
+ isCfgPrjMatch(fPrj, cfg)
+ var cfg2 xsapiv1.FolderConfig
+ assert.Nil(t, HTTPCli.Get("/folders/"+cfg.ID, &cfg2))
+ isCfgPrjMatch(fPrj, cfg2)
+
+ assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
+ assert.Equal(t, len(cfgArray), 1)
+
+ //call with the same uid create error
+ assert.NotNil(t, HTTPCli.Post("/folders", cfg, &cfg))
+
+ /*create/delete folders*/
+ var cfgArrayBis []xsapiv1.FolderConfig
+ assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ Debugf(t, "create folder with id=%v", cfg.ID)
+ assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ Debugf(t, "create folder with id=%v", cfg.ID)
+ assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
+ assert.Equal(t, len(cfgArray), 3)
+ assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[1].ID, &cfg))
+ Debugf(t, "delete folder with id=%v", cfg.ID)
+ assert.Equal(t, cfg, cfgArray[1])
+ assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis))
+ assert.Equal(t, len(cfgArrayBis), 2)
+ assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[0].ID, &cfg))
+ Debugf(t, "delete folder with id=%v", cfg.ID)
+ assert.Equal(t, cfg, cfgArray[0])
+ assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis))
+ assert.Equal(t, len(cfgArrayBis), 1)
+ assert.Nil(t, HTTPCli.Delete("/folders/"+cfgArray[2].ID, &cfg))
+ Debugf(t, "delete folder with id=%v", cfg.ID)
+ assert.Equal(t, cfg, cfgArray[2])
+ assert.Nil(t, HTTPCli.Get("/folders", &cfgArrayBis))
+ assert.Equal(t, len(cfgArrayBis), 0)
+}
+
+func TestFoldersEmptyValues(t *testing.T) {
+ fPrj := xsapiv1.FolderConfig{
+ Label: "testproject",
+ ClientPath: logDir + "testproject",
+ Type: xsapiv1.TypePathMap,
+ ClientData: "clientdatatest",
+ DataPathMap: xsapiv1.PathMapConfig{
+ ServerPath: "",
+ },
+ }
+ var cfg xsapiv1.FolderConfig
+ /*ServerPath is empty*/
+ assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ Debugf(t, "error while creating folder with empty serverpath \n%v", fPrj)
+
+ fPrj.DataPathMap.ServerPath = logDir + "sameserverpath"
+ fPrj.ClientPath = ""
+ /*ClientPath is Empty*/
+ assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ Debugf(t, "error while creating folder with empty clientpath \n%v", fPrj)
+
+ fPrj.ClientPath = "logDir"
+ fPrj.Type = ""
+ /*Type is empty*/
+ assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ Debugf(t, "error while creating folder with empty type \n%v", fPrj)
+
+ var cfgArray []xsapiv1.FolderConfig
+ assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
+ assert.Equal(t, len(cfgArray), 0)
+}
+
+func TestFoldersPathMapConfig(t *testing.T) {
+ fPrj := xsapiv1.FolderConfig{
+ Label: "testproject",
+ ClientPath: logDir + "clientpathtest",
+ Type: xsapiv1.TypePathMap,
+ ClientData: "clientdatatest",
+ DataPathMap: xsapiv1.PathMapConfig{
+ ServerPath: logDir + "serverpath",
+ CheckFile: "checkfile",
+ },
+ }
+ var cfg xsapiv1.FolderConfig
+ /*file not present*/
+ assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ Debugf(t, "error while creating folder with no checkfile \n%v", fPrj)
+
+ var checkFileClient = fPrj.ClientPath + "/checkfile"
+ var checkFileServer = fPrj.DataPathMap.ServerPath + "/checkfile"
+
+ /*create file*/
+ os.MkdirAll(fPrj.ClientPath, 0755)
+ fPrj.DataPathMap.CheckFile = checkFileClient
+ fPrj.DataPathMap.CheckContent = "CheckContent From Client\n"
+ file, err := os.OpenFile(checkFileClient, os.O_CREATE|os.O_RDWR, 0644)
+ if err != nil {
+ Debug(t, err)
+ }
+ if err := os.Symlink(checkFileClient, checkFileServer); err != nil {
+ Debug(t, err)
+ }
+ /*file content differ*/
+ assert.NotNil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ Debugf(t, "error while creating folder with different checkfiles \n%v", fPrj)
+
+ /*write same message*/
+ if _, err := file.WriteString(fPrj.DataPathMap.CheckContent); err != nil {
+ Debug(t, err)
+ }
+ assert.Nil(t, HTTPCli.Post("/folders", fPrj, &cfg))
+ Debugf(t, "create folder with same checkfiles \n%v", fPrj)
+
+ /*check server msg: ServerUID needed*/
+ Debugf(t, "check server msg")
+ var APIcfg xsapiv1.APIConfig
+ assert.Nil(t, HTTPCli.Get("/config", &APIcfg))
+ msg := "Pathmap checked message written by xds-server ID: " + APIcfg.ServerUID + "\n"
+ data, err := ioutil.ReadAll(file)
+ if err != nil {
+ Debug(t, err)
+ }
+ assert.Equal(t, msg, string(data))
+
+ assert.Nil(t, HTTPCli.Delete("/folders/"+cfg.ID, &cfg))
+ var cfgArray []xsapiv1.FolderConfig
+ assert.Nil(t, HTTPCli.Get("/folders", &cfgArray))
+ assert.Equal(t, len(cfgArray), 0)
+}