From 6b0d0f4337cdc936564b1169f75254627c3b6682 Mon Sep 17 00:00:00 2001 From: hexxa Date: Sun, 17 Oct 2021 21:21:21 +0800 Subject: [PATCH] test(users): add test for checking inited users --- src/client/web/src/components/root_frame.tsx | 2 +- src/db/userstore/user_store.go | 14 ++++- src/handlers/multiusers/handlers.go | 3 ++ src/server/server_users_test.go | 57 ++++++++++++++++++-- 4 files changed, 71 insertions(+), 5 deletions(-) diff --git a/src/client/web/src/components/root_frame.tsx b/src/client/web/src/components/root_frame.tsx index a03a4ce..e02eba5 100644 --- a/src/client/web/src/components/root_frame.tsx +++ b/src/client/web/src/components/root_frame.tsx @@ -26,7 +26,7 @@ export class RootFrame extends React.Component { render() { let bgStyle = undefined; - if (this.props.login.preferences.bg.url !== "") { + if (this.props.login.preferences != null && this.props.login.preferences.bg.url !== "") { bgStyle = { background: `url("${this.props.login.preferences.bg.url}") ${this.props.login.preferences.bg.repeat} ${this.props.login.preferences.bg.position} ${this.props.login.preferences.bg.align}`, }; diff --git a/src/db/userstore/user_store.go b/src/db/userstore/user_store.go index de01a54..5ebe871 100644 --- a/src/db/userstore/user_store.go +++ b/src/db/userstore/user_store.go @@ -31,7 +31,17 @@ const ( ) var ( - ErrReachedLimit = errors.New("reached space limit") + ErrReachedLimit = errors.New("reached space limit") + DefaultPreferences = Preferences{ + Bg: &sitestore.BgConfig{ + Url: "", + Repeat: "no-repeat", + Position: "center", + Align: "fixed", + }, + CSSURL: "", + LanPackURL: "", + } ) func IsReachedLimitErr(err error) bool { @@ -123,6 +133,7 @@ func (us *KVUserStore) Init(rootName, rootPwd string) error { UploadSpeedLimit: defaultUploadSpeedLimit, DownloadSpeedLimit: defaultDownloadSpeedLimit, }, + Preferences: &DefaultPreferences, } visitor := &User{ ID: VisitorID, @@ -134,6 +145,7 @@ func (us *KVUserStore) Init(rootName, rootPwd string) error { UploadSpeedLimit: visitorUploadSpeedLimit, DownloadSpeedLimit: visitorDownloadSpeedLimit, }, + Preferences: &DefaultPreferences, } for _, user := range []*User{admin, visitor} { diff --git a/src/handlers/multiusers/handlers.go b/src/handlers/multiusers/handlers.go index 86a3682..4a58cc0 100644 --- a/src/handlers/multiusers/handlers.go +++ b/src/handlers/multiusers/handlers.go @@ -181,6 +181,7 @@ func (h *MultiUsersSvc) Init(adminName, adminPwd string) (string, error) { UploadSpeedLimit: uploadSpeedLimit, DownloadSpeedLimit: downloadSpeedLimit, }, + Preferences: &userstore.DefaultPreferences, } err = h.deps.Users().AddUser(user) @@ -434,6 +435,7 @@ func (h *MultiUsersSvc) AddUser(c *gin.Context) { UploadSpeedLimit: h.cfg.IntOr("Users.UploadSpeedLimit", 100*1024), DownloadSpeedLimit: h.cfg.IntOr("Users.DownloadSpeedLimit", 100*1024), }, + Preferences: &userstore.DefaultPreferences, }) if err != nil { c.JSON(q.ErrResp(c, 500, err)) @@ -642,6 +644,7 @@ func (h *MultiUsersSvc) Self(c *gin.Context) { c.JSON(q.ErrResp(c, 500, err)) return } + fmt.Println(user.Preferences) c.JSON(200, &SelfResp{ ID: claims[q.UserIDParam], diff --git a/src/server/server_users_test.go b/src/server/server_users_test.go index e8b8060..fc1e625 100644 --- a/src/server/server_users_test.go +++ b/src/server/server_users_test.go @@ -62,6 +62,60 @@ func TestUsersHandlers(t *testing.T) { var err error + t.Run("test inited users", func(t *testing.T) { + usersCl := client.NewSingleUserClient(addr) + resp, _, errs := usersCl.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, lsResp, errs := usersCl.ListUsers(token) + if len(errs) > 0 { + t.Fatal(errs) + } else if resp.StatusCode != 200 { + t.Fatal(resp.StatusCode) + } + + if len(lsResp.Users) != 3 { + t.Fatal(fmt.Errorf("incorrect users size (%d)", len(lsResp.Users))) + } + + for _, user := range lsResp.Users { + if user.Name == adminName { + if user.ID != 0 || + user.Role != userstore.AdminRole || + user.UsedSpace != 0 || + user.Quota.SpaceLimit != 1024*1024*1024 || // TODO: export these + user.Quota.UploadSpeedLimit != 50*1024*1024 || + user.Quota.DownloadSpeedLimit != 50*1024*1024 || + !reflect.DeepEqual(user.Preferences, &userstore.DefaultPreferences) { + t.Fatal(fmt.Errorf("incorrect user info (%v)", user)) + } + } + if user.Name == "visitor" { + if user.Role != userstore.VisitorRole || + user.Quota.SpaceLimit != 0 || // TODO: export these + user.Quota.UploadSpeedLimit != 10*1024*1024 || + user.Quota.DownloadSpeedLimit != 10*1024*1024 || + !reflect.DeepEqual(user.Preferences, &userstore.DefaultPreferences) { + t.Fatal(fmt.Errorf("incorrect user info (%v)", user)) + } + } + if user.Name == "demo" { + if user.Role != userstore.UserRole || + user.Quota.SpaceLimit != 1024 || + user.Quota.UploadSpeedLimit != 409600 || + user.Quota.DownloadSpeedLimit != 409600 || + !reflect.DeepEqual(user.Preferences, &userstore.DefaultPreferences) { + t.Fatal(fmt.Errorf("incorrect user info (%v)", user)) + } + } + } + }) + t.Run("test users APIs: Login-Self-SetPwd-Logout-Login", func(t *testing.T) { users := []*userstore.User{ { @@ -92,14 +146,12 @@ func TestUsersHandlers(t *testing.T) { for _, user := range users { usersCl := client.NewSingleUserClient(addr) - resp, _, errs := usersCl.Login(user.Name, user.Pwd) if len(errs) > 0 { t.Fatal(errs) } else if resp.StatusCode != 200 { t.Fatal(resp.StatusCode) } - token := client.GetCookie(resp.Cookies(), su.TokenCookie) resp, selfResp, errs := usersCl.Self(token) @@ -152,7 +204,6 @@ func TestUsersHandlers(t *testing.T) { } else if resp.StatusCode != 200 { t.Fatal(resp.StatusCode) } - token := client.GetCookie(resp.Cookies(), su.TokenCookie) userName, userPwd := "user_login", "1234"