From 2497968b82c14f90b0075925bc58fdc87376387c Mon Sep 17 00:00:00 2001 From: hexxa Date: Sun, 17 Oct 2021 20:11:35 +0800 Subject: [PATCH] test(users): add e2e tests for preferences apis --- src/client/users.go | 11 +++++- src/db/userstore/user_store.go | 1 - src/handlers/multiusers/handlers.go | 2 ++ src/server/server.go | 1 + src/server/server_users_test.go | 56 ++++++++++++++++++++++++++++- 5 files changed, 68 insertions(+), 3 deletions(-) diff --git a/src/client/users.go b/src/client/users.go index f21140d..a8d06a7 100644 --- a/src/client/users.go +++ b/src/client/users.go @@ -5,9 +5,9 @@ import ( "fmt" "net/http" + "github.com/ihexxa/quickshare/src/db/userstore" "github.com/ihexxa/quickshare/src/handlers" "github.com/ihexxa/quickshare/src/handlers/multiusers" - "github.com/ihexxa/quickshare/src/db/userstore" "github.com/parnurzeal/gorequest" ) @@ -162,3 +162,12 @@ func (cl *SingleUserClient) Self(token *http.Cookie) (*http.Response, *multiuser } return resp, selfResp, errs } + +func (cl *SingleUserClient) SetPreferences(prefers *userstore.Preferences, token *http.Cookie) (*http.Response, string, []error) { + return cl.r.Patch(cl.url("/v1/users/preferences")). + Send(multiusers.SetPreferencesReq{ + Preferences: prefers, + }). + AddCookie(token). + End() +} diff --git a/src/db/userstore/user_store.go b/src/db/userstore/user_store.go index ca85595..de01a54 100644 --- a/src/db/userstore/user_store.go +++ b/src/db/userstore/user_store.go @@ -46,7 +46,6 @@ type Quota struct { type Preferences struct { Bg *sitestore.BgConfig `json:"bg"` - BgURL string `json:"bgURL"` CSSURL string `json:"cssURL"` LanPackURL string `json:"lanPackURL"` } diff --git a/src/handlers/multiusers/handlers.go b/src/handlers/multiusers/handlers.go index 903f9fb..86a3682 100644 --- a/src/handlers/multiusers/handlers.go +++ b/src/handlers/multiusers/handlers.go @@ -46,6 +46,7 @@ func NewMultiUsersSvc(cfg gocfg.ICfg, deps *depidx.Deps) (*MultiUsersSvc, error) apiRuleCname(userstore.AdminRole, "DELETE", "/v1/users/"): true, apiRuleCname(userstore.AdminRole, "GET", "/v1/users/list"): true, apiRuleCname(userstore.AdminRole, "GET", "/v1/users/self"): true, + apiRuleCname(userstore.AdminRole, "PATCH", "/v1/users/preferences"): true, apiRuleCname(userstore.AdminRole, "POST", "/v1/roles/"): true, apiRuleCname(userstore.AdminRole, "DELETE", "/v1/roles/"): true, apiRuleCname(userstore.AdminRole, "GET", "/v1/roles/list"): true, @@ -80,6 +81,7 @@ func NewMultiUsersSvc(cfg gocfg.ICfg, deps *depidx.Deps) (*MultiUsersSvc, error) apiRuleCname(userstore.UserRole, "PATCH", "/v1/users/pwd"): true, apiRuleCname(userstore.UserRole, "PATCH", "/v1/users/"): true, apiRuleCname(userstore.UserRole, "GET", "/v1/users/self"): true, + apiRuleCname(userstore.UserRole, "PATCH", "/v1/users/preferences"): true, apiRuleCname(userstore.UserRole, "POST", "/v1/fs/files"): true, apiRuleCname(userstore.UserRole, "DELETE", "/v1/fs/files"): true, apiRuleCname(userstore.UserRole, "GET", "/v1/fs/files"): true, diff --git a/src/server/server.go b/src/server/server.go index 5693354..e2f06a3 100644 --- a/src/server/server.go +++ b/src/server/server.go @@ -242,6 +242,7 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.E usersAPI.GET("/list", userHdrs.ListUsers) usersAPI.GET("/self", userHdrs.Self) usersAPI.PATCH("/", userHdrs.SetUser) + usersAPI.PATCH("/preferences", userHdrs.SetPreferences) rolesAPI := v1.Group("/roles") rolesAPI.POST("/", userHdrs.AddRole) diff --git a/src/server/server_users_test.go b/src/server/server_users_test.go index 422656a..e8b8060 100644 --- a/src/server/server_users_test.go +++ b/src/server/server_users_test.go @@ -3,13 +3,15 @@ package server import ( "fmt" "os" + "reflect" "strconv" "testing" "github.com/ihexxa/quickshare/src/client" + "github.com/ihexxa/quickshare/src/db/sitestore" + "github.com/ihexxa/quickshare/src/db/userstore" q "github.com/ihexxa/quickshare/src/handlers" su "github.com/ihexxa/quickshare/src/handlers/singleuserhdr" - "github.com/ihexxa/quickshare/src/db/userstore" ) func TestUsersHandlers(t *testing.T) { @@ -377,4 +379,56 @@ func TestUsersHandlers(t *testing.T) { t.Fatal(resp.StatusCode) } }) + + t.Run("Login,SetPreferences, Self, Logout", func(t *testing.T) { + usersCl := client.NewSingleUserClient(addr) + resp, _, errs := usersCl.Login(adminName, adminNewPwd) + if len(errs) > 0 { + t.Fatal(errs) + } else if resp.StatusCode != 200 { + t.Fatal(resp.StatusCode) + } + + token := client.GetCookie(resp.Cookies(), su.TokenCookie) + + prefers := []*userstore.Preferences{ + &userstore.Preferences{ + Bg: &sitestore.BgConfig{ + Url: "/bgurl", + Repeat: "no-repeat", + Position: "center", + Align: "fixed", + }, + CSSURL: "/cssurl", + LanPackURL: "/lanpack", + }, + &userstore.Preferences{ + Bg: &sitestore.BgConfig{ + Url: "/bgurl2", + Repeat: "no-repeat2", + Position: "center2", + Align: "fixed2", + }, + CSSURL: "/cssurl2", + LanPackURL: "/lanpack2", + }, + } + for _, prefer := range prefers { + resp, _, errs := usersCl.SetPreferences(prefer, token) + if len(errs) > 0 { + t.Fatal(errs) + } else if resp.StatusCode != 200 { + t.Fatal(resp.StatusCode) + } + + resp, selfResp, errs := usersCl.Self(token) + if len(errs) > 0 { + t.Fatal(errs) + } else if resp.StatusCode != 200 { + t.Fatal(resp.StatusCode) + } else if !reflect.DeepEqual(selfResp.Preferences, prefer) { + t.Fatal("preference not equal") + } + } + }) }