test(singleuser): add tests for singleuser apis

This commit is contained in:
hexxa 2020-12-06 14:32:45 +08:00
parent 2bcb337b4c
commit 24adbcbe63
11 changed files with 265 additions and 82 deletions

View file

@ -9,11 +9,12 @@ type FSConfig struct {
}
type UsersCfg struct {
EnableAuth bool `json:"enableAuth"`
DefaultAdmin string `json:"defaultAdmin" cfg:"env"`
CookieTTL int `json:"cookieTTL"`
CookieSecure bool `json:"cookieSecure"`
CookieHttpOnly bool `json:"cookieHttpOnly"`
EnableAuth bool `json:"enableAuth"`
DefaultAdmin string `json:"defaultAdmin" cfg:"env"`
DefaultAdminPwd string `json:"defaultAdminPwd" cfg:"env"`
CookieTTL int `json:"cookieTTL"`
CookieSecure bool `json:"cookieSecure"`
CookieHttpOnly bool `json:"cookieHttpOnly"`
}
type Secrets struct {
@ -48,11 +49,12 @@ func DefaultConfig() (string, error) {
OpenTTL: 60, // 1 min
},
Users: &UsersCfg{
EnableAuth: true,
DefaultAdmin: "",
CookieTTL: 3600 * 24 * 7, // 1 week
CookieSecure: false,
CookieHttpOnly: true,
EnableAuth: true,
DefaultAdmin: "",
DefaultAdminPwd: "",
CookieTTL: 3600 * 24 * 7, // 1 week
CookieSecure: false,
CookieHttpOnly: true,
},
Secrets: &Secrets{
TokenSecret: "",

View file

@ -70,7 +70,7 @@ func initDeps(cfg gocfg.ICfg) *depidx.Deps {
filesystem := local.NewLocalFS(rootPath, 0660, opensLimit, openTTL)
jwtEncDec := jwt.NewJWTEncDec(secret)
logger := simplelog.NewSimpleLogger()
kv := boltdbpvd.New(".", 1024)
kv := boltdbpvd.New(rootPath, 1024)
deps := depidx.NewDeps(cfg)
deps.SetFS(filesystem)
@ -101,11 +101,13 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.E
fmt.Scanf("%s", &adminName)
}
adminTmpPwd, err := userHdrs.Init(adminName)
adminPwd, _ := cfg.String("ENV.DEFAULTADMINPWD")
adminPwd, err := userHdrs.Init(adminName, adminPwd)
if err != nil {
return nil, err
}
fmt.Printf("%s is created, its password is %s, please update it after login\n", adminName, adminTmpPwd)
fmt.Printf("%s is created, its password is %s, please update it after login\n", adminName, adminPwd)
}
fileHdrs, err := fileshdr.NewFileHandlers(cfg, deps)
@ -122,6 +124,7 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.E
users := v1.Group("/users")
users.POST("/login", userHdrs.Login)
users.POST("/logout", userHdrs.Logout)
users.PATCH("/pwd", userHdrs.SetPwd)
filesSvc := v1.Group("/fs")
filesSvc.POST("/files", fileHdrs.Create)

View file

@ -9,39 +9,13 @@ import (
"testing"
"time"
"github.com/ihexxa/gocfg"
"github.com/ihexxa/quickshare/src/client"
"github.com/ihexxa/quickshare/src/handlers/fileshdr"
)
func startTestServer(config string) *Server {
defaultCfg, err := DefaultConfig()
if err != nil {
panic(err)
}
cfg, err := gocfg.New(NewConfig()).
Load(
gocfg.JSONStr(defaultCfg),
gocfg.JSONStr(config),
)
if err != nil {
panic(err)
}
srv, err := NewServer(cfg)
if err != nil {
panic(err)
}
go srv.Start()
return srv
}
func TestFileHandlers(t *testing.T) {
addr := "http://127.0.0.1:8888"
root := "./testData"
root := "testData"
chunkSize := 2
config := `{
"users": {
@ -51,16 +25,21 @@ func TestFileHandlers(t *testing.T) {
"debug": true
},
"fs": {
"root": "./testData"
"root": "testData"
}
}`
err := os.MkdirAll(root, 0700)
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(root)
srv := startTestServer(config)
defer srv.Shutdown()
// kv := srv.depsKVStore()
fs := srv.depsFS()
defer os.RemoveAll(root)
cl := client.NewQSClient(addr)
cl := client.NewFilesClient(addr)
// TODO: remove this
time.Sleep(500)

View file

@ -0,0 +1,78 @@
package server
import (
"os"
"testing"
"time"
"github.com/ihexxa/quickshare/src/client"
su "github.com/ihexxa/quickshare/src/handlers/singleuserhdr"
)
func TestSingleUserHandlers(t *testing.T) {
addr := "http://127.0.0.1:8888"
root := "testData"
config := `{
"users": {
"enableAuth": true
},
"server": {
"debug": true
},
"fs": {
"root": "testData"
}
}`
adminName := "qs"
adminPwd := "quicksh@re"
adminNewPwd := "quicksh@re2"
os.Setenv("DEFAULTADMIN", adminName)
os.Setenv("DEFAULTADMINPWD", adminPwd)
err := os.MkdirAll(root, 0700)
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(root)
srv := startTestServer(config)
defer srv.Shutdown()
suCl := client.NewSingleUserClient(addr)
// fCl := client.NewFilesClient(addr)
// TODO: remove this
time.Sleep(1000)
t.Run("test single user APIs: Login-SetPwd-Logout-Login", func(t *testing.T) {
resp, _, errs := suCl.Login(adminName, adminPwd)
if len(errs) > 0 {
t.Fatal(errs)
} else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode)
}
token := client.GetCookie(resp.Cookies(), su.TokenCookie)
resp, _, errs = suCl.SetPwd(adminName, adminPwd, adminNewPwd, token)
if len(errs) > 0 {
t.Fatal(errs)
} else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode)
}
resp, _, errs = suCl.Logout(adminName, token)
if len(errs) > 0 {
t.Fatal(errs)
} else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode)
}
resp, _, errs = suCl.Login(adminName, adminNewPwd)
if len(errs) > 0 {
t.Fatal(errs)
} else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode)
}
})
}

View file

@ -0,0 +1,27 @@
package server
import "github.com/ihexxa/gocfg"
func startTestServer(config string) *Server {
defaultCfg, err := DefaultConfig()
if err != nil {
panic(err)
}
cfg, err := gocfg.New(NewConfig()).
Load(
gocfg.JSONStr(defaultCfg),
gocfg.JSONStr(config),
)
if err != nil {
panic(err)
}
srv, err := NewServer(cfg)
if err != nil {
panic(err)
}
go srv.Start()
return srv
}