test(singleuser): add tests for singleuser apis
This commit is contained in:
parent
2bcb337b4c
commit
24adbcbe63
11 changed files with 265 additions and 82 deletions
|
@ -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: "",
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
78
src/server/server_singleuser_test.go
Normal file
78
src/server/server_singleuser_test.go
Normal 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)
|
||||
}
|
||||
})
|
||||
}
|
27
src/server/test_helpers.go
Normal file
27
src/server/test_helpers.go
Normal 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
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue