package fstests import ( "fmt" "os" "path/filepath" "runtime" "strings" "testing" "github.com/474420502/requests" ) func GetEtcYamlPathAuto() string { var currentFilePath string var ok bool for i := 1; i < 4; i++ { _, currentFilePath, _, ok = runtime.Caller(i) if !ok { panic("Error: Unable to get the current file path.") } dirs := strings.Split(currentFilePath, "/") if dirs[len(dirs)-2] != "fstests" { break } } curdir, err := filepath.Abs(currentFilePath) if err != nil { panic(err) } curdir = filepath.Dir(curdir) var limitCount = 10 finfo, err := os.Stat(curdir + "/etc") for err != nil || !finfo.IsDir() { curdir = filepath.Dir(curdir) finfo, err = os.Stat(curdir + "/etc") limitCount-- if limitCount <= 0 { panic("out limit") } } lidx := strings.LastIndex(curdir, "/") return fmt.Sprintf("%s/etc/%s.yaml", curdir, curdir[lidx+1:]) } func GetCurrentServiceName() string { _, currentFilePath, _, ok := runtime.Caller(1) if !ok { panic("Error: Unable to get the current file path.") } curdir, err := filepath.Abs(currentFilePath) if err != nil { panic(err) } curdir = filepath.Dir(curdir) var limitCount = 10 finfo, err := os.Stat(curdir + "/etc") for err != nil || !finfo.IsDir() { curdir = filepath.Dir(curdir) finfo, err = os.Stat(curdir + "/etc") limitCount-- if limitCount <= 0 { panic("out limit") } } lidx := strings.LastIndex(curdir, "/") // log.Println(curdir[lidx+1:]) return curdir[lidx+1:] } func GetSesssion() *requests.Session { ses := requests.NewSession() return ses } func GetSessionWithUserToken(t *testing.T, server requests.ITestServer, Host string, Port int) *requests.Session { ses := requests.NewSession() tp := ses.Post(fmt.Sprintf("http://%s:%d/user/login", Host, Port)) tp.SetBodyJson(map[string]interface{}{ "name": "9107058@qq.com", "pwd": "$2y$13$2y4O4OIz/zcK5C0vlSc9LuSpjWySjInLBSe49yDkE.iURb.R1hDsy", }) resp, err := tp.TestExecute(server) if err != nil { t.Error(err) } result := resp.Json() code := result.Get("code").Int() if code != 200 { t.Error("code is not 200") } token := result.Get("data.token") if !token.Exists() { t.Error("data.token is not exists") } ses.Header.Add("Authorization", token.String()) return ses } func GetBackendSessionWithUserToken(t *testing.T, server requests.ITestServer, Host string, Port int) *requests.Session { ses := requests.NewSession() tp := ses.Post(fmt.Sprintf("http://%s:%d/backend-user/login", Host, Port)) tp.SetBodyJson(map[string]interface{}{ "name": "admin@admin.com", "pwd": "ZnVzZW5fYmFja2VuZF8yMDIz47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU=", }) resp, err := tp.TestExecute(server) if err != nil { t.Error(err) } result := resp.Json() code := result.Get("code").Int() if code != 200 { t.Error("code is not 200") } token := result.Get("data.token") if !token.Exists() { t.Error("data.token is not exists") } ses.Header.Add("Authorization", token.String()) return ses } func GetSesssionWithGuestToken(t *testing.T, server requests.ITestServer, Host string, Port int) *requests.Session { ses := requests.NewSession() tp := ses.Post(fmt.Sprintf("http://%s:%d/accept/cookie", Host, Port)) resp, err := tp.TestExecute(server) if err != nil { t.Error(err) } result := resp.Json() token := result.Get("data.token") if !token.Exists() { t.Error("data.token is not exists") } ses.Header.Add("Authorization", token.String()) return ses }