fusenapi/utils/fstests/basic.go
2023-07-24 19:17:02 +08:00

155 lines
3.5 KiB
Go

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/api/auth/login", Host, Port))
tp.SetBodyJson(map[string]interface{}{
"email": "9107058@qq.com",
"password": "t1I0hOs0/AmhZfNk9ZiNnd3YZJpI+LL6COnHAmYEJk4=",
})
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", fmt.Sprintf("Bearer %s", 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/api/backend-user/login", Host, Port))
tp.SetBodyJson(map[string]interface{}{
"email": "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", fmt.Sprintf("Bearer %s", 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/api/auth/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", fmt.Sprintf("Bearer %s", token.String()))
return ses
}