fix(client): remove token from client args

This commit is contained in:
hexxa 2022-08-10 13:12:32 +08:00 committed by Hexxa
parent 6cc99312bf
commit 0cce1bd090
10 changed files with 294 additions and 256 deletions

View file

@ -12,16 +12,16 @@ import (
type FilesClient struct { type FilesClient struct {
addr string addr string
r *gorequest.SuperAgent
token *http.Cookie token *http.Cookie
r *gorequest.SuperAgent
} }
func NewFilesClient(addr string, token *http.Cookie) *FilesClient { func NewFilesClient(addr string, token *http.Cookie) *FilesClient {
gr := gorequest.New() gr := gorequest.New()
return &FilesClient{ return &FilesClient{
addr: addr, addr: addr,
r: gr,
token: token, token: token,
r: gr,
} }
} }

View file

@ -5,20 +5,21 @@ import (
"fmt" "fmt"
"net/http" "net/http"
// "github.com/ihexxa/quickshare/src/db/sitestore"
"github.com/ihexxa/quickshare/src/handlers/settings" "github.com/ihexxa/quickshare/src/handlers/settings"
"github.com/parnurzeal/gorequest" "github.com/parnurzeal/gorequest"
) )
type SettingsClient struct { type SettingsClient struct {
addr string addr string
token *http.Cookie
r *gorequest.SuperAgent r *gorequest.SuperAgent
} }
func NewSettingsClient(addr string) *SettingsClient { func NewSettingsClient(addr string, token *http.Cookie) *SettingsClient {
gr := gorequest.New() gr := gorequest.New()
return &SettingsClient{ return &SettingsClient{
addr: addr, addr: addr,
token: token,
r: gr, r: gr,
} }
} }
@ -32,9 +33,9 @@ func (cl *SettingsClient) Health() (*http.Response, string, []error) {
End() End()
} }
func (cl *SettingsClient) GetClientCfg(token *http.Cookie) (*http.Response, *settings.ClientCfgMsg, []error) { func (cl *SettingsClient) GetClientCfg() (*http.Response, *settings.ClientCfgMsg, []error) {
resp, body, errs := cl.r.Get(cl.url("/v1/settings/client")). resp, body, errs := cl.r.Get(cl.url("/v1/settings/client")).
AddCookie(token). AddCookie(cl.token).
End() End()
mResp := &settings.ClientCfgMsg{} mResp := &settings.ClientCfgMsg{}
@ -46,23 +47,23 @@ func (cl *SettingsClient) GetClientCfg(token *http.Cookie) (*http.Response, *set
return resp, mResp, nil return resp, mResp, nil
} }
func (cl *SettingsClient) SetClientCfg(cfgMsg *settings.ClientCfgMsg, token *http.Cookie) (*http.Response, string, []error) { func (cl *SettingsClient) SetClientCfg(cfgMsg *settings.ClientCfgMsg) (*http.Response, string, []error) {
return cl.r.Patch(cl.url("/v1/settings/client")). return cl.r.Patch(cl.url("/v1/settings/client")).
AddCookie(token). AddCookie(cl.token).
Send(cfgMsg). Send(cfgMsg).
End() End()
} }
func (cl *SettingsClient) ReportErrors(reports *settings.ClientErrorReports, token *http.Cookie) (*http.Response, string, []error) { func (cl *SettingsClient) ReportErrors(reports *settings.ClientErrorReports) (*http.Response, string, []error) {
return cl.r.Post(cl.url("/v1/settings/errors")). return cl.r.Post(cl.url("/v1/settings/errors")).
AddCookie(token). AddCookie(cl.token).
Send(reports). Send(reports).
End() End()
} }
func (cl *SettingsClient) WorkerQueueLen(token *http.Cookie) (*http.Response, *settings.WorkerQueueLenResp, []error) { func (cl *SettingsClient) WorkerQueueLen() (*http.Response, *settings.WorkerQueueLenResp, []error) {
resp, body, errs := cl.r.Get(cl.url("/v1/settings/workers/queue-len")). resp, body, errs := cl.r.Get(cl.url("/v1/settings/workers/queue-len")).
AddCookie(token). AddCookie(cl.token).
End() End()
mResp := &settings.WorkerQueueLenResp{} mResp := &settings.WorkerQueueLenResp{}

View file

@ -13,6 +13,7 @@ import (
type UsersClient struct { type UsersClient struct {
addr string addr string
token *http.Cookie
r *gorequest.SuperAgent r *gorequest.SuperAgent
} }
@ -28,55 +29,72 @@ func (cl *UsersClient) url(urlpath string) string {
return fmt.Sprintf("%s%s", cl.addr, urlpath) return fmt.Sprintf("%s%s", cl.addr, urlpath)
} }
func (cl *UsersClient) SetToken(token *http.Cookie) {
cl.token = token
}
func (cl *UsersClient) Token() *http.Cookie {
return cl.token
}
func (cl *UsersClient) Login(user, pwd string) (*http.Response, string, []error) { func (cl *UsersClient) Login(user, pwd string) (*http.Response, string, []error) {
return cl.r.Post(cl.url("/v1/users/login")). resp, body, errs := cl.r.Post(cl.url("/v1/users/login")).
Send(multiusers.LoginReq{ Send(multiusers.LoginReq{
User: user, User: user,
Pwd: pwd, Pwd: pwd,
}). }).
End() End()
if len(errs) == 0 && resp.StatusCode == 200 {
// it may overwrite the token
httpResp := (*http.Response)(resp)
cl.token = GetCookie(httpResp.Cookies(), handlers.TokenCookie)
} else {
cl.token = &http.Cookie{}
}
return resp, body, errs
} }
func (cl *UsersClient) Logout(token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) Logout() (*http.Response, string, []error) {
return cl.r.Post(cl.url("/v1/users/logout")). return cl.r.Post(cl.url("/v1/users/logout")).
AddCookie(token). AddCookie(cl.token).
End() End()
} }
func (cl *UsersClient) SetPwd(oldPwd, newPwd string, token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) SetPwd(oldPwd, newPwd string) (*http.Response, string, []error) {
return cl.r.Patch(cl.url("/v1/users/pwd")). return cl.r.Patch(cl.url("/v1/users/pwd")).
Send(multiusers.SetPwdReq{ Send(multiusers.SetPwdReq{
OldPwd: oldPwd, OldPwd: oldPwd,
NewPwd: newPwd, NewPwd: newPwd,
}). }).
AddCookie(token). AddCookie(cl.token).
End() End()
} }
func (cl *UsersClient) ForceSetPwd(userID, newPwd string, token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) ForceSetPwd(userID, newPwd string) (*http.Response, string, []error) {
return cl.r.Patch(cl.url("/v1/users/pwd/force-set")). return cl.r.Patch(cl.url("/v1/users/pwd/force-set")).
Send(multiusers.ForceSetPwdReq{ Send(multiusers.ForceSetPwdReq{
ID: userID, ID: userID,
NewPwd: newPwd, NewPwd: newPwd,
}). }).
AddCookie(token). AddCookie(cl.token).
End() End()
} }
func (cl *UsersClient) SetUser(ID uint64, role string, quota *db.Quota, token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) SetUser(ID uint64, role string, quota *db.Quota) (*http.Response, string, []error) {
return cl.r.Patch(cl.url("/v1/users/")). return cl.r.Patch(cl.url("/v1/users/")).
Send(multiusers.SetUserReq{ Send(multiusers.SetUserReq{
ID: ID, ID: ID,
Role: role, Role: role,
Quota: quota, Quota: quota,
}). }).
AddCookie(token). AddCookie(cl.token).
End() End()
} }
func (cl *UsersClient) AddUser(name, pwd, role string, token *http.Cookie) (*http.Response, *multiusers.AddUserResp, []error) { func (cl *UsersClient) AddUser(name, pwd, role string) (*http.Response, *multiusers.AddUserResp, []error) {
resp, body, errs := cl.r.Post(cl.url("/v1/users/")). resp, body, errs := cl.r.Post(cl.url("/v1/users/")).
AddCookie(token). AddCookie(cl.token).
Send(multiusers.AddUserReq{ Send(multiusers.AddUserReq{
Name: name, Name: name,
Pwd: pwd, Pwd: pwd,
@ -97,16 +115,16 @@ func (cl *UsersClient) AddUser(name, pwd, role string, token *http.Cookie) (*htt
return resp, auResp, errs return resp, auResp, errs
} }
func (cl *UsersClient) DelUser(id string, token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) DelUser(id string) (*http.Response, string, []error) {
return cl.r.Delete(cl.url("/v1/users/")). return cl.r.Delete(cl.url("/v1/users/")).
AddCookie(token). AddCookie(cl.token).
Param(handlers.UserIDParam, id). Param(handlers.UserIDParam, id).
End() End()
} }
func (cl *UsersClient) ListUsers(token *http.Cookie) (*http.Response, *multiusers.ListUsersResp, []error) { func (cl *UsersClient) ListUsers() (*http.Response, *multiusers.ListUsersResp, []error) {
resp, body, errs := cl.r.Get(cl.url("/v1/users/list")). resp, body, errs := cl.r.Get(cl.url("/v1/users/list")).
AddCookie(token). AddCookie(cl.token).
End() End()
if len(errs) > 0 { if len(errs) > 0 {
return nil, nil, errs return nil, nil, errs
@ -121,27 +139,27 @@ func (cl *UsersClient) ListUsers(token *http.Cookie) (*http.Response, *multiuser
return resp, lsResp, errs return resp, lsResp, errs
} }
func (cl *UsersClient) AddRole(role string, token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) AddRole(role string) (*http.Response, string, []error) {
return cl.r.Post(cl.url("/v1/roles/")). return cl.r.Post(cl.url("/v1/roles/")).
AddCookie(token). AddCookie(cl.token).
Send(multiusers.AddRoleReq{ Send(multiusers.AddRoleReq{
Role: role, Role: role,
}). }).
End() End()
} }
func (cl *UsersClient) DelRole(role string, token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) DelRole(role string) (*http.Response, string, []error) {
return cl.r.Delete(cl.url("/v1/roles/")). return cl.r.Delete(cl.url("/v1/roles/")).
AddCookie(token). AddCookie(cl.token).
Send(multiusers.DelRoleReq{ Send(multiusers.DelRoleReq{
Role: role, Role: role,
}). }).
End() End()
} }
func (cl *UsersClient) ListRoles(token *http.Cookie) (*http.Response, *multiusers.ListRolesResp, []error) { func (cl *UsersClient) ListRoles() (*http.Response, *multiusers.ListRolesResp, []error) {
resp, body, errs := cl.r.Get(cl.url("/v1/roles/list")). resp, body, errs := cl.r.Get(cl.url("/v1/roles/list")).
AddCookie(token). AddCookie(cl.token).
End() End()
if len(errs) > 0 { if len(errs) > 0 {
return nil, nil, errs return nil, nil, errs
@ -156,9 +174,9 @@ func (cl *UsersClient) ListRoles(token *http.Cookie) (*http.Response, *multiuser
return resp, lsResp, errs return resp, lsResp, errs
} }
func (cl *UsersClient) Self(token *http.Cookie) (*http.Response, *multiusers.SelfResp, []error) { func (cl *UsersClient) Self() (*http.Response, *multiusers.SelfResp, []error) {
resp, body, errs := cl.r.Get(cl.url("/v1/users/self")). resp, body, errs := cl.r.Get(cl.url("/v1/users/self")).
AddCookie(token). AddCookie(cl.token).
End() End()
if len(errs) > 0 { if len(errs) > 0 {
return nil, nil, errs return nil, nil, errs
@ -173,26 +191,26 @@ func (cl *UsersClient) Self(token *http.Cookie) (*http.Response, *multiusers.Sel
return resp, selfResp, errs return resp, selfResp, errs
} }
func (cl *UsersClient) SetPreferences(prefers *db.Preferences, token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) SetPreferences(prefers *db.Preferences) (*http.Response, string, []error) {
return cl.r.Patch(cl.url("/v1/users/preferences")). return cl.r.Patch(cl.url("/v1/users/preferences")).
Send(multiusers.SetPreferencesReq{ Send(multiusers.SetPreferencesReq{
Preferences: prefers, Preferences: prefers,
}). }).
AddCookie(token). AddCookie(cl.token).
End() End()
} }
func (cl *UsersClient) IsAuthed(token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) IsAuthed() (*http.Response, string, []error) {
return cl.r.Get(cl.url("/v1/users/isauthed")). return cl.r.Get(cl.url("/v1/users/isauthed")).
AddCookie(token). AddCookie(cl.token).
End() End()
} }
func (cl *UsersClient) ResetUsedSpace(userID uint64, token *http.Cookie) (*http.Response, string, []error) { func (cl *UsersClient) ResetUsedSpace(userID uint64) (*http.Response, string, []error) {
return cl.r.Put(cl.url("/v1/users/used-space")). return cl.r.Put(cl.url("/v1/users/used-space")).
Send(multiusers.ResetUsedSpaceReq{ Send(multiusers.ResetUsedSpaceReq{
UserID: userID, UserID: userID,
}). }).
AddCookie(token). AddCookie(cl.token).
End() End()
} }

View file

@ -1,6 +1,7 @@
package server package server
import ( import (
"errors"
"fmt" "fmt"
"os" "os"
"sync" "sync"
@ -48,33 +49,37 @@ func TestConcurrency(t *testing.T) {
t.Fatal("fail to start server") t.Fatal("fail to start server")
} }
usersCl := client.NewUsersClient(addr) adminUsersCli := client.NewUsersClient(addr)
resp, _, errs := usersCl.Login(adminName, adminPwd) resp, _, errs := adminUsersCli.Login(adminName, adminPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), q.TokenCookie) adminToken := client.GetCookie(resp.Cookies(), q.TokenCookie)
userCount := 5 userCount := 5
userPwd := "1234" userPwd := "1234"
users := addUsers(t, addr, userPwd, userCount, token) users := addUsers(t, addr, userPwd, userCount, adminToken)
getFilePath := func(name string, i int) string { getFilePath := func(name string, i int) string {
return fmt.Sprintf("%s/files/home_file_%d", name, i) return fmt.Sprintf("%s/files/home_file_%d", name, i)
} }
filesCount := 10 filesCount := 10
clientErrs := []error{}
mockClient := func(name, pwd string, wg *sync.WaitGroup) { mockClient := func(name, pwd string, wg *sync.WaitGroup) {
usersCl := client.NewUsersClient(addr) defer wg.Done()
resp, _, errs := usersCl.Login(name, pwd)
userUsersCli := client.NewUsersClient(addr)
resp, _, errs := userUsersCli.Login(name, pwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) clientErrs = append(clientErrs, errs...)
return
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal("failed to add user") clientErrs = append(clientErrs, fmt.Errorf("failed to login"))
return
} }
token := client.GetCookie(resp.Cookies(), q.TokenCookie)
files := map[string]string{} files := map[string]string{}
content := "12345678" content := "12345678"
@ -82,53 +87,75 @@ func TestConcurrency(t *testing.T) {
files[getFilePath(name, i)] = content files[getFilePath(name, i)] = content
} }
userToken := userUsersCli.Token()
for filePath, content := range files { for filePath, content := range files {
assertUploadOK(t, filePath, content, addr, token) assertUploadOK(t, filePath, content, addr, userToken)
assertDownloadOK(t, filePath, content, addr, token) assertDownloadOK(t, filePath, content, addr, userToken)
} }
filesCl := client.NewFilesClient(addr, token) filesCl := client.NewFilesClient(addr, userToken)
resp, lsResp, errs := filesCl.ListHome() resp, lsResp, errs := filesCl.ListHome()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) clientErrs = append(clientErrs, errs...)
return
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal("failed to add user") clientErrs = append(clientErrs, errors.New("failed to list home"))
return
} }
if lsResp.Cwd != fmt.Sprintf("%s/files", name) { if lsResp.Cwd != fmt.Sprintf("%s/files", name) {
t.Fatalf("incorrct cwd (%s)", lsResp.Cwd) clientErrs = append(clientErrs, fmt.Errorf("incorrct cwd (%s)", lsResp.Cwd))
return
} else if len(lsResp.Metadatas) != len(files) { } else if len(lsResp.Metadatas) != len(files) {
t.Fatalf("incorrct metadata size (%d)", len(lsResp.Metadatas)) clientErrs = append(clientErrs, fmt.Errorf("incorrct metadata size (%d)", len(lsResp.Metadatas)))
return
} }
resp, selfResp, errs := usersCl.Self(token) resp, selfResp, errs := userUsersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) clientErrs = append(clientErrs, errs...)
return
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal("failed to self") clientErrs = append(clientErrs, errors.New("failed to self"))
return
} }
if selfResp.UsedSpace != int64(filesCount*len(content)) { if selfResp.UsedSpace != int64(filesCount*len(content)) {
t.Fatalf("usedSpace(%d) doesn't match (%d)", selfResp.UsedSpace, filesCount*len(content)) clientErrs = append(
clientErrs,
fmt.Errorf("usedSpace(%d) doesn't match (%d)", selfResp.UsedSpace, filesCount*len(content)),
)
return
} }
resp, _, errs = filesCl.Delete(getFilePath(name, 0)) resp, _, errs = filesCl.Delete(getFilePath(name, 0))
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) clientErrs = append(clientErrs, errs...)
return
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal("failed to add user") clientErrs = append(clientErrs, errors.New("failed to add user"))
return
} }
resp, selfResp, errs = usersCl.Self(token) resp, selfResp, errs = userUsersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) clientErrs = append(clientErrs, errs...)
return
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal("failed to self") clientErrs = append(clientErrs, errors.New("failed to self"))
return
} }
if selfResp.UsedSpace != int64((filesCount-1)*len(content)) { if selfResp.UsedSpace != int64((filesCount-1)*len(content)) {
t.Fatalf("usedSpace(%d) doesn't match (%d)", selfResp.UsedSpace, int64((filesCount-1)*len(content))) clientErrs = append(
clientErrs,
fmt.Errorf(
"usedSpace(%d) doesn't match (%d)",
selfResp.UsedSpace,
int64((filesCount-1)*len(content)),
),
)
return
} }
wg.Done()
} }
var wg sync.WaitGroup var wg sync.WaitGroup
@ -139,12 +166,8 @@ func TestConcurrency(t *testing.T) {
} }
wg.Wait() wg.Wait()
if len(clientErrs) > 0 {
t.Fatal(joinErrs(clientErrs))
}
}) })
resp, _, errs = usersCl.Logout(token)
if len(errs) > 0 {
t.Fatal(errs)
} else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode)
}
} }

View file

@ -70,7 +70,7 @@ func TestFileHandlers(t *testing.T) {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), q.TokenCookie) token := client.GetCookie(resp.Cookies(), q.TokenCookie)
cl := client.NewFilesClient(addr, token) adminFilesClient := client.NewFilesClient(addr, token)
var err error var err error
// TODO: remove all files under home folder before testing // TODO: remove all files under home folder before testing
@ -90,7 +90,7 @@ func TestFileHandlers(t *testing.T) {
} }
} }
resp, lhResp, errs := cl.ListHome() resp, lhResp, errs := adminFilesClient.ListHome()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -140,7 +140,7 @@ func TestFileHandlers(t *testing.T) {
} }
for filePath, content := range files { for filePath, content := range files {
res, _, _ := cl.Create(filePath, int64(len([]byte(content)))) res, _, _ := adminFilesClient.Create(filePath, int64(len([]byte(content))))
if res.StatusCode != 400 { if res.StatusCode != 400 {
t.Fatal(res.StatusCode) t.Fatal(res.StatusCode)
} }
@ -169,7 +169,7 @@ func TestFileHandlers(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
res, _, errs := cl.Delete(filePath) res, _, errs := adminFilesClient.Delete(filePath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -187,7 +187,7 @@ func TestFileHandlers(t *testing.T) {
} { } {
fileSize := int64(len([]byte(content))) fileSize := int64(len([]byte(content)))
// create a file // create a file
res, _, errs := cl.Create(filePath, fileSize) res, _, errs := adminFilesClient.Create(filePath, fileSize)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -217,7 +217,7 @@ func TestFileHandlers(t *testing.T) {
chunk := contentBytes[i:right] chunk := contentBytes[i:right]
chunkBase64 := base64.StdEncoding.EncodeToString(chunk) chunkBase64 := base64.StdEncoding.EncodeToString(chunk)
res, _, errs = cl.UploadChunk(filePath, chunkBase64, int64(i)) res, _, errs = adminFilesClient.UploadChunk(filePath, chunkBase64, int64(i))
i = right i = right
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
@ -226,7 +226,7 @@ func TestFileHandlers(t *testing.T) {
} }
if int64(i) != fileSize { if int64(i) != fileSize {
_, statusResp, errs := cl.UploadStatus(filePath) _, statusResp, errs := adminFilesClient.UploadStatus(filePath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if statusResp.Path != filePath || } else if statusResp.Path != filePath ||
@ -253,7 +253,7 @@ func TestFileHandlers(t *testing.T) {
} }
// metadata // metadata
_, mRes, errs := cl.Metadata(filePath) _, mRes, errs := adminFilesClient.Metadata(filePath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if mRes.Name != info.Name() || } else if mRes.Name != info.Name() ||
@ -264,7 +264,7 @@ func TestFileHandlers(t *testing.T) {
} }
// delete file // delete file
res, _, errs = cl.Delete(filePath) res, _, errs = adminFilesClient.Delete(filePath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -283,7 +283,7 @@ func TestFileHandlers(t *testing.T) {
"f3.md": "3333333", "f3.md": "3333333",
}, },
} { } {
res, _, errs := cl.Mkdir(dirPath) res, _, errs := adminFilesClient.Mkdir(dirPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -300,7 +300,7 @@ func TestFileHandlers(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
_, lResp, errs := cl.List(dirPath) _, lResp, errs := adminFilesClient.List(dirPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} }
@ -320,7 +320,7 @@ func TestFileHandlers(t *testing.T) {
dstDir := "qs/files/move/dst" dstDir := "qs/files/move/dst"
for _, dirPath := range []string{srcDir, dstDir} { for _, dirPath := range []string{srcDir, dstDir} {
res, _, errs := cl.Mkdir(dirPath) res, _, errs := adminFilesClient.Mkdir(dirPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -339,7 +339,7 @@ func TestFileHandlers(t *testing.T) {
// fileSize := int64(len([]byte(content))) // fileSize := int64(len([]byte(content)))
assertUploadOK(t, oldPath, content, addr, token) assertUploadOK(t, oldPath, content, addr, token)
res, _, errs := cl.Move(oldPath, newPath) res, _, errs := adminFilesClient.Move(oldPath, newPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -352,7 +352,7 @@ func TestFileHandlers(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
_, lResp, errs := cl.List(dstDir) _, lResp, errs := adminFilesClient.List(dstDir)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} }
@ -366,7 +366,7 @@ func TestFileHandlers(t *testing.T) {
} }
for _, dirPath := range []string{srcDir, dstDir} { for _, dirPath := range []string{srcDir, dstDir} {
res, _, errs := cl.Delete(dirPath) res, _, errs := adminFilesClient.Delete(dirPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -422,31 +422,31 @@ func TestFileHandlers(t *testing.T) {
dirPath := filepath.Dir(filePath) dirPath := filepath.Dir(filePath)
sharedPaths[dirPath] = true sharedPaths[dirPath] = true
res, _, errs := cl.AddSharing(dirPath) res, _, errs := adminFilesClient.AddSharing(dirPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
t.Fatal(res.StatusCode) t.Fatal(res.StatusCode)
} }
res, _, errs = cl.AddSharing(filePath) res, _, errs = adminFilesClient.AddSharing(filePath)
if res.StatusCode != 400 { if res.StatusCode != 400 {
t.Fatal(res.StatusCode) t.Fatal(res.StatusCode)
} }
res, _, errs = cl.AddSharing(filepath.Join(filePath, "not_exist")) res, _, errs = adminFilesClient.AddSharing(filepath.Join(filePath, "not_exist"))
if res.StatusCode != 500 { if res.StatusCode != 500 {
t.Fatal(res.StatusCode) t.Fatal(res.StatusCode)
} }
} }
res, _, errs := cl.AddSharing("/") res, _, errs := adminFilesClient.AddSharing("/")
if res.StatusCode != 403 { if res.StatusCode != 403 {
t.Fatal(res.StatusCode) t.Fatal(res.StatusCode)
} }
// check listSharings // check listSharings
res, shRes, errs := cl.ListSharingIDs() res, shRes, errs := adminFilesClient.ListSharingIDs()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -510,7 +510,7 @@ func TestFileHandlers(t *testing.T) {
for filePath := range files { for filePath := range files {
dirPath := filepath.Dir(filePath) dirPath := filepath.Dir(filePath)
res, _, errs := cl.DelSharing(dirPath) res, _, errs := adminFilesClient.DelSharing(dirPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -519,7 +519,7 @@ func TestFileHandlers(t *testing.T) {
} }
// check listSharings // check listSharings
res, shRes, errs = cl.ListSharingIDs() res, shRes, errs = adminFilesClient.ListSharingIDs()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -613,7 +613,7 @@ func TestFileHandlers(t *testing.T) {
t.Run("test uploading APIs: ListUploadings, Create, ListUploadings, DelUploading", func(t *testing.T) { t.Run("test uploading APIs: ListUploadings, Create, ListUploadings, DelUploading", func(t *testing.T) {
// it should return no error even no file is uploaded // it should return no error even no file is uploaded
res, lResp, errs := cl.ListUploadings() res, lResp, errs := adminFilesClient.ListUploadings()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -627,7 +627,7 @@ func TestFileHandlers(t *testing.T) {
for filePath, content := range files { for filePath, content := range files {
fileSize := int64(len([]byte(content))) fileSize := int64(len([]byte(content)))
res, _, errs := cl.Create(filePath, fileSize) res, _, errs := adminFilesClient.Create(filePath, fileSize)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -635,7 +635,7 @@ func TestFileHandlers(t *testing.T) {
} }
} }
res, lResp, errs = cl.ListUploadings() res, lResp, errs = adminFilesClient.ListUploadings()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -658,7 +658,7 @@ func TestFileHandlers(t *testing.T) {
} }
for filePath := range files { for filePath := range files {
res, _, errs := cl.DelUploading(filePath) res, _, errs := adminFilesClient.DelUploading(filePath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -666,7 +666,7 @@ func TestFileHandlers(t *testing.T) {
} }
} }
res, lResp, errs = cl.ListUploadings() res, lResp, errs = adminFilesClient.ListUploadings()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -685,7 +685,7 @@ func TestFileHandlers(t *testing.T) {
for filePath, content := range files { for filePath, content := range files {
fileSize := int64(len([]byte(content))) fileSize := int64(len([]byte(content)))
res, _, errs := cl.Create(filePath, fileSize) res, _, errs := adminFilesClient.Create(filePath, fileSize)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -699,7 +699,7 @@ func TestFileHandlers(t *testing.T) {
offset := int64(0) offset := int64(0)
for _, chunk := range chunks { for _, chunk := range chunks {
base64Content := base64.StdEncoding.EncodeToString(chunk) base64Content := base64.StdEncoding.EncodeToString(chunk)
res, bodyStr, errs := cl.UploadChunk(filePath, base64Content, offset) res, bodyStr, errs := adminFilesClient.UploadChunk(filePath, base64Content, offset)
offset += int64(len(chunk)) offset += int64(len(chunk))
if len(errs) > 0 { if len(errs) > 0 {
@ -715,7 +715,7 @@ func TestFileHandlers(t *testing.T) {
} }
// metadata // metadata
_, mRes, errs := cl.Metadata(filePath) _, mRes, errs := adminFilesClient.Metadata(filePath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if mRes.Size != fileSize { } else if mRes.Size != fileSize {
@ -737,7 +737,7 @@ func TestFileHandlers(t *testing.T) {
for filePath, content := range files { for filePath, content := range files {
fileSize := int64(len([]byte(content))) fileSize := int64(len([]byte(content)))
res, _, errs := cl.Create(filePath, fileSize) res, _, errs := adminFilesClient.Create(filePath, fileSize)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -755,7 +755,7 @@ func TestFileHandlers(t *testing.T) {
offset := int64(0) offset := int64(0)
for _, chunk := range chunks { for _, chunk := range chunks {
base64Content := base64.StdEncoding.EncodeToString(chunk) base64Content := base64.StdEncoding.EncodeToString(chunk)
res, _, errs := cl.UploadChunk(filePath, base64Content, offset) res, _, errs := adminFilesClient.UploadChunk(filePath, base64Content, offset)
offset += int64(len(chunk)) offset += int64(len(chunk))
if len(errs) > 0 { if len(errs) > 0 {
@ -771,7 +771,7 @@ func TestFileHandlers(t *testing.T) {
} }
// metadata // metadata
_, mRes, errs := cl.Metadata(filePath) _, mRes, errs := adminFilesClient.Metadata(filePath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if mRes.Size != fileSize { } else if mRes.Size != fileSize {
@ -793,7 +793,7 @@ func TestFileHandlers(t *testing.T) {
srcDir := "qs/files/folder/move/src" srcDir := "qs/files/folder/move/src"
dstDir := "qs/files/folder/move/dst" dstDir := "qs/files/folder/move/dst"
res, _, errs := cl.Mkdir(srcDir) res, _, errs := adminFilesClient.Mkdir(srcDir)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -810,21 +810,21 @@ func TestFileHandlers(t *testing.T) {
assertUploadOK(t, oldPath, content, addr, token) assertUploadOK(t, oldPath, content, addr, token)
} }
res, _, errs = cl.AddSharing(srcDir) res, _, errs = adminFilesClient.AddSharing(srcDir)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
t.Fatal(res.StatusCode) t.Fatal(res.StatusCode)
} }
res, _, errs = cl.Move(srcDir, dstDir) res, _, errs = adminFilesClient.Move(srcDir, dstDir)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
t.Fatal(res.StatusCode) t.Fatal(res.StatusCode)
} }
res, _, errs = cl.IsSharing(dstDir) res, _, errs = adminFilesClient.IsSharing(dstDir)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 404 { // should not be in sharing } else if res.StatusCode != 404 { // should not be in sharing
@ -836,7 +836,7 @@ func TestFileHandlers(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
_, lResp, errs := cl.List(dstDir) _, lResp, errs := adminFilesClient.List(dstDir)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} }
@ -906,7 +906,7 @@ func TestFileHandlers(t *testing.T) {
} }
keywords := []string{"keyword1", "keyword2"} keywords := []string{"keyword1", "keyword2"}
resp, searchItemsResp, errs := cl.SearchItems(keywords) resp, searchItemsResp, errs := adminFilesClient.SearchItems(keywords)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -933,14 +933,14 @@ func TestFileHandlers(t *testing.T) {
// delete paths // delete paths
for pathname := range toDelete { for pathname := range toDelete {
resp, _, errs := cl.Delete(pathname) resp, _, errs := adminFilesClient.Delete(pathname)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
} }
resp, searchItemsResp, errs = cl.SearchItems(keywords) resp, searchItemsResp, errs = adminFilesClient.SearchItems(keywords)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -954,21 +954,21 @@ func TestFileHandlers(t *testing.T) {
// move paths // move paths
for oldPath, newPath := range toMove { for oldPath, newPath := range toMove {
newPathDir := filepath.Dir(newPath) newPathDir := filepath.Dir(newPath)
resp, _, errs := cl.Mkdir(newPathDir) resp, _, errs := adminFilesClient.Mkdir(newPathDir)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, _, errs = cl.Move(oldPath, newPath) resp, _, errs = adminFilesClient.Move(oldPath, newPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
} }
resp, searchItemsResp, errs = cl.SearchItems(keywords) resp, searchItemsResp, errs = adminFilesClient.SearchItems(keywords)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -1000,16 +1000,16 @@ func TestFileHandlers(t *testing.T) {
} }
fs.Sync() fs.Sync()
resp, _, errs := cl.Reindex() resp, _, errs := adminFilesClient.Reindex()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
settingsCl := client.NewSettingsClient(addr) settingsCl := client.NewSettingsClient(addr, token)
for { for {
reportResp, wqResp, errs := settingsCl.WorkerQueueLen(token) reportResp, wqResp, errs := settingsCl.WorkerQueueLen()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if reportResp.StatusCode != 200 { } else if reportResp.StatusCode != 200 {
@ -1027,7 +1027,7 @@ func TestFileHandlers(t *testing.T) {
// still need to wait for worker finishing indexing... // still need to wait for worker finishing indexing...
time.Sleep(3 * time.Second) time.Sleep(3 * time.Second)
resp, searchItemsResp, errs := cl.SearchItems([]string{"reindexkey"}) resp, searchItemsResp, errs := adminFilesClient.SearchItems([]string{"reindexkey"})
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -1039,7 +1039,7 @@ func TestFileHandlers(t *testing.T) {
} }
}) })
resp, _, errs = usersCl.Logout(token) resp, _, errs = usersCl.Logout()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {

View file

@ -115,40 +115,41 @@ func TestPermissions(t *testing.T) {
tmpNewRole := "tmpNewRole" tmpNewRole := "tmpNewRole"
cl := client.NewUsersClient(addr) cl := client.NewUsersClient(addr)
token := &http.Cookie{} // token := &http.Cookie{}
if requireAuth { if requireAuth {
resp, _, errs := cl.Login(user, pwd) resp, _, errs := cl.Login(user, pwd)
assertResp(t, resp, errs, 200, desc) assertResp(t, resp, errs, 200, desc)
token = client.GetCookie(resp.Cookies(), q.TokenCookie) // token = client.GetCookie(resp.Cookies(), q.TokenCookie)
// token = cl.Token()
} else { } else {
resp, _, errs := cl.Login(user, pwd) resp, _, errs := cl.Login(user, pwd)
assertResp(t, resp, errs, 403, desc) assertResp(t, resp, errs, 403, desc)
} }
resp, _, errs := cl.SetPwd(pwd, newPwd, token) resp, _, errs := cl.SetPwd(pwd, newPwd)
assertResp(t, resp, errs, expectedCodes["SetPwd"], fmt.Sprintf("%s-%s", desc, "SetPwd")) assertResp(t, resp, errs, expectedCodes["SetPwd"], fmt.Sprintf("%s-%s", desc, "SetPwd"))
// set back the password // set back the password
resp, _, errs = cl.SetPwd(newPwd, pwd, token) resp, _, errs = cl.SetPwd(newPwd, pwd)
assertResp(t, resp, errs, expectedCodes["SetPwd"], fmt.Sprintf("%s-%s", desc, "SetPwd")) assertResp(t, resp, errs, expectedCodes["SetPwd"], fmt.Sprintf("%s-%s", desc, "SetPwd"))
resp, selfResp, errs := cl.Self(token) resp, selfResp, errs := cl.Self()
assertResp(t, resp, errs, expectedCodes["Self"], fmt.Sprintf("%s-%s", desc, "Self")) assertResp(t, resp, errs, expectedCodes["Self"], fmt.Sprintf("%s-%s", desc, "Self"))
prefer := selfResp.Preferences prefer := selfResp.Preferences
resp, _, errs = cl.SetPreferences(prefer, token) resp, _, errs = cl.SetPreferences(prefer)
assertResp(t, resp, errs, expectedCodes["SetPreferences"], fmt.Sprintf("%s-%s", desc, "SetPreferences")) assertResp(t, resp, errs, expectedCodes["SetPreferences"], fmt.Sprintf("%s-%s", desc, "SetPreferences"))
resp, _, errs = cl.IsAuthed(token) resp, _, errs = cl.IsAuthed()
assertResp(t, resp, errs, expectedCodes["IsAuthed"], fmt.Sprintf("%s-%s", desc, "IsAuthed")) assertResp(t, resp, errs, expectedCodes["IsAuthed"], fmt.Sprintf("%s-%s", desc, "IsAuthed"))
// user management // user management
resp, addUserResp, errs := cl.AddUser(tmpUser, tmpPwd, tmpRole, token) resp, addUserResp, errs := cl.AddUser(tmpUser, tmpPwd, tmpRole)
assertResp(t, resp, errs, expectedCodes["AddUser"], fmt.Sprintf("%s-%s", desc, "AddUser")) assertResp(t, resp, errs, expectedCodes["AddUser"], fmt.Sprintf("%s-%s", desc, "AddUser"))
resp, addAdminResp, errs := cl.AddUser(tmpAdmin, tmpAdminPwd, db.AdminRole, token) resp, addAdminResp, errs := cl.AddUser(tmpAdmin, tmpAdminPwd, db.AdminRole)
assertResp(t, resp, errs, expectedCodes["AddUser"], fmt.Sprintf("%s-%s", desc, "AddUser")) assertResp(t, resp, errs, expectedCodes["AddUser"], fmt.Sprintf("%s-%s", desc, "AddUser"))
resp, _, errs = cl.ListUsers(token) resp, _, errs = cl.ListUsers()
assertResp(t, resp, errs, expectedCodes["ListUsers"], fmt.Sprintf("%s-%s", desc, "ListUsers")) assertResp(t, resp, errs, expectedCodes["ListUsers"], fmt.Sprintf("%s-%s", desc, "ListUsers"))
// TODO: the id here should be uint64 // TODO: the id here should be uint64
@ -175,48 +176,48 @@ func TestPermissions(t *testing.T) {
} }
} }
resp, _, errs = cl.ForceSetPwd(selfResp.ID, newPwd, token) resp, _, errs = cl.ForceSetPwd(selfResp.ID, newPwd)
assertResp(t, resp, errs, expectedCodes["ForceSetPwd"], fmt.Sprintf("%s-%s", desc, "ForceSetPwd")) assertResp(t, resp, errs, expectedCodes["ForceSetPwd"], fmt.Sprintf("%s-%s", desc, "ForceSetPwd"))
resp, _, errs = cl.ForceSetPwd(selfResp.ID, pwd, token) resp, _, errs = cl.ForceSetPwd(selfResp.ID, pwd)
assertResp(t, resp, errs, expectedCodes["ForceSetPwd"], fmt.Sprintf("%s-%s", desc, "ForceSetPwdBack")) assertResp(t, resp, errs, expectedCodes["ForceSetPwd"], fmt.Sprintf("%s-%s", desc, "ForceSetPwdBack"))
resp, _, errs = cl.ForceSetPwd(addUserResp.ID, newPwd, token) resp, _, errs = cl.ForceSetPwd(addUserResp.ID, newPwd)
assertResp(t, resp, errs, expectedCodes["ForceSetPwdOther"], fmt.Sprintf("%s-%s", desc, "ForceSetPwdOther")) assertResp(t, resp, errs, expectedCodes["ForceSetPwdOther"], fmt.Sprintf("%s-%s", desc, "ForceSetPwdOther"))
resp, _, errs = cl.ForceSetPwd(addUserResp.ID, pwd, token) resp, _, errs = cl.ForceSetPwd(addUserResp.ID, pwd)
assertResp(t, resp, errs, expectedCodes["ForceSetPwdOther"], fmt.Sprintf("%s-%s", desc, "ForceSetPwdOtherBack")) assertResp(t, resp, errs, expectedCodes["ForceSetPwdOther"], fmt.Sprintf("%s-%s", desc, "ForceSetPwdOtherBack"))
resp, _, errs = cl.ForceSetPwd(addAdminResp.ID, newPwd, token) resp, _, errs = cl.ForceSetPwd(addAdminResp.ID, newPwd)
assertResp(t, resp, errs, expectedCodes["ForceSetPwdOtherAdmin"], fmt.Sprintf("%s-%s", desc, "ForceSetPwdOtherAdmin")) assertResp(t, resp, errs, expectedCodes["ForceSetPwdOtherAdmin"], fmt.Sprintf("%s-%s", desc, "ForceSetPwdOtherAdmin"))
// update self // update self
resp, _, errs = cl.SetUser(userID, newRole, newQuota, token) resp, _, errs = cl.SetUser(userID, newRole, newQuota)
assertResp(t, resp, errs, expectedCodes["SetUserSelf"], fmt.Sprintf("%s-%s", desc, "SetUserSelf")) assertResp(t, resp, errs, expectedCodes["SetUserSelf"], fmt.Sprintf("%s-%s", desc, "SetUserSelf"))
// update other users // update other users
resp, _, errs = cl.SetUser(tmpUserID, db.AdminRole, newQuota, token) resp, _, errs = cl.SetUser(tmpUserID, db.AdminRole, newQuota)
assertResp(t, resp, errs, expectedCodes["SetUserOthers"], fmt.Sprintf("%s-%s", desc, "SetUserOthers")) assertResp(t, resp, errs, expectedCodes["SetUserOthers"], fmt.Sprintf("%s-%s", desc, "SetUserOthers"))
resp, _, errs = cl.SetUser(tmpAdminID, db.UserRole, newQuota, token) resp, _, errs = cl.SetUser(tmpAdminID, db.UserRole, newQuota)
assertResp(t, resp, errs, expectedCodes["SetUserOthersAdmin"], fmt.Sprintf("%s-%s", desc, "SetUserOthersAdmin")) assertResp(t, resp, errs, expectedCodes["SetUserOthersAdmin"], fmt.Sprintf("%s-%s", desc, "SetUserOthersAdmin"))
resp, _, errs = cl.DelUser(addUserResp.ID, token) resp, _, errs = cl.DelUser(addUserResp.ID)
assertResp(t, resp, errs, expectedCodes["DelUser"], fmt.Sprintf("%s-%s", desc, "DelUser")) assertResp(t, resp, errs, expectedCodes["DelUser"], fmt.Sprintf("%s-%s", desc, "DelUser"))
resp, _, errs = cl.DelUser(addAdminResp.ID, token) resp, _, errs = cl.DelUser(addAdminResp.ID)
assertResp(t, resp, errs, expectedCodes["DelUserAdmin"], fmt.Sprintf("%s-%s", desc, "DelUserAdmin")) assertResp(t, resp, errs, expectedCodes["DelUserAdmin"], fmt.Sprintf("%s-%s", desc, "DelUserAdmin"))
// role management // role management
resp, _, errs = cl.AddRole(tmpNewRole, token) resp, _, errs = cl.AddRole(tmpNewRole)
assertResp(t, resp, errs, expectedCodes["AddRole"], fmt.Sprintf("%s-%s", desc, "AddRole")) assertResp(t, resp, errs, expectedCodes["AddRole"], fmt.Sprintf("%s-%s", desc, "AddRole"))
resp, _, errs = cl.ListRoles(token) resp, _, errs = cl.ListRoles()
assertResp(t, resp, errs, expectedCodes["ListRoles"], fmt.Sprintf("%s-%s", desc, "ListRoles")) assertResp(t, resp, errs, expectedCodes["ListRoles"], fmt.Sprintf("%s-%s", desc, "ListRoles"))
resp, _, errs = cl.DelRole(tmpNewRole, token) resp, _, errs = cl.DelRole(tmpNewRole)
assertResp(t, resp, errs, expectedCodes["DelRole"], fmt.Sprintf("%s-%s", desc, "DelRole")) assertResp(t, resp, errs, expectedCodes["DelRole"], fmt.Sprintf("%s-%s", desc, "DelRole"))
if requireAuth { if requireAuth {
resp, _, errs := cl.Logout(token) resp, _, errs := cl.Logout()
assertResp(t, resp, errs, 200, fmt.Sprintf("%s-%s", desc, "logout")) assertResp(t, resp, errs, 200, fmt.Sprintf("%s-%s", desc, "logout"))
} else { } else {
resp, _, errs := cl.Logout(token) resp, _, errs := cl.Logout()
assertResp(t, resp, errs, 403, fmt.Sprintf("%s-%s", desc, "logout")) assertResp(t, resp, errs, 403, fmt.Sprintf("%s-%s", desc, "logout"))
} }
} }
@ -339,7 +340,7 @@ func TestPermissions(t *testing.T) {
} }
if requireAuth { if requireAuth {
resp, _, errs := cl.Logout(token) resp, _, errs := cl.Logout()
assertResp(t, resp, errs, 200, desc) assertResp(t, resp, errs, 200, desc)
} }
} }
@ -498,7 +499,7 @@ func TestPermissions(t *testing.T) {
assertResp(t, resp, errs, expectedCodes["SearchTarget"], fmt.Sprintf("%s-%s", desc, "SearchTarget")) assertResp(t, resp, errs, expectedCodes["SearchTarget"], fmt.Sprintf("%s-%s", desc, "SearchTarget"))
if requireAuth { if requireAuth {
resp, _, errs := cl.Logout(token) resp, _, errs := cl.Logout()
assertResp(t, resp, errs, 200, desc) assertResp(t, resp, errs, 200, desc)
} }
} }
@ -749,21 +750,21 @@ func TestPermissions(t *testing.T) {
token = client.GetCookie(resp.Cookies(), q.TokenCookie) token = client.GetCookie(resp.Cookies(), q.TokenCookie)
} }
settingsCl := client.NewSettingsClient(addr) settingsCl := client.NewSettingsClient(addr, token)
resp, _, errs := settingsCl.Health() resp, _, errs := settingsCl.Health()
assertResp(t, resp, errs, expectedCodes["Health"], fmt.Sprintf("%s-%s", desc, "Health")) assertResp(t, resp, errs, expectedCodes["Health"], fmt.Sprintf("%s-%s", desc, "Health"))
resp, gccResp, errs := settingsCl.GetClientCfg(token) resp, gccResp, errs := settingsCl.GetClientCfg()
assertResp(t, resp, errs, expectedCodes["GetClientCfg"], fmt.Sprintf("%s-%s", desc, "GetClientCfg")) assertResp(t, resp, errs, expectedCodes["GetClientCfg"], fmt.Sprintf("%s-%s", desc, "GetClientCfg"))
clientCfgMsg := gccResp clientCfgMsg := gccResp
clientCfgMsg.ClientCfg.SiteName = "new name" clientCfgMsg.ClientCfg.SiteName = "new name"
resp, _, errs = settingsCl.SetClientCfg(clientCfgMsg, token) resp, _, errs = settingsCl.SetClientCfg(clientCfgMsg)
assertResp(t, resp, errs, expectedCodes["SetClientCfg"], fmt.Sprintf("%s-%s", desc, "SetClientCfg")) assertResp(t, resp, errs, expectedCodes["SetClientCfg"], fmt.Sprintf("%s-%s", desc, "SetClientCfg"))
resp, _, errs = settingsCl.ReportErrors(errReports, token) resp, _, errs = settingsCl.ReportErrors(errReports)
assertResp(t, resp, errs, expectedCodes["ReportErrors"], fmt.Sprintf("%s-%s", desc, "ReportErrors")) assertResp(t, resp, errs, expectedCodes["ReportErrors"], fmt.Sprintf("%s-%s", desc, "ReportErrors"))
} }

View file

@ -73,7 +73,7 @@ func TestSettingsHandlers(t *testing.T) {
users := addUsers(t, addr, userPwd, 1, adminToken) users := addUsers(t, addr, userPwd, 1, adminToken)
t.Run("get/set client config", func(t *testing.T) { t.Run("get/set client config", func(t *testing.T) {
settingsCl := client.NewSettingsClient(addr) adminSettingsCli := client.NewSettingsClient(addr, adminToken)
cfgs := []*db.ClientConfig{ cfgs := []*db.ClientConfig{
&db.ClientConfig{ &db.ClientConfig{
SiteName: "quickshare", SiteName: "quickshare",
@ -93,14 +93,14 @@ func TestSettingsHandlers(t *testing.T) {
ClientCfg: cfg, ClientCfg: cfg,
CaptchaEnabled: false, CaptchaEnabled: false,
} }
resp, _, errs := settingsCl.SetClientCfg(clientCfgMsg, adminToken) resp, _, errs := adminSettingsCli.SetClientCfg(clientCfgMsg)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, clientCfgMsgGot, errs := settingsCl.GetClientCfg(adminToken) resp, clientCfgMsgGot, errs := adminSettingsCli.GetClientCfg()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -120,7 +120,8 @@ func TestSettingsHandlers(t *testing.T) {
} }
userToken := client.GetCookie(resp.Cookies(), q.TokenCookie) userToken := client.GetCookie(resp.Cookies(), q.TokenCookie)
resp, clientCfgMsgGot, errs := settingsCl.GetClientCfg(userToken) userSettingsCli := client.NewSettingsClient(addr, userToken)
resp, clientCfgMsgGot, errs := userSettingsCli.GetClientCfg()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -135,7 +136,7 @@ func TestSettingsHandlers(t *testing.T) {
}) })
t.Run("ReportErrors", func(t *testing.T) { t.Run("ReportErrors", func(t *testing.T) {
settingsCl := client.NewSettingsClient(addr) adminSettingsCli := client.NewSettingsClient(addr, adminToken)
reports := &settings.ClientErrorReports{ reports := &settings.ClientErrorReports{
Reports: []*settings.ClientErrorReport{ Reports: []*settings.ClientErrorReport{
&settings.ClientErrorReport{ &settings.ClientErrorReport{
@ -149,7 +150,7 @@ func TestSettingsHandlers(t *testing.T) {
}, },
} }
reportResp, _, errs := settingsCl.ReportErrors(reports, adminToken) reportResp, _, errs := adminSettingsCli.ReportErrors(reports)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if reportResp.StatusCode != 200 { } else if reportResp.StatusCode != 200 {
@ -178,9 +179,9 @@ func TestSettingsHandlers(t *testing.T) {
}) })
t.Run("WorkerQueueLen", func(t *testing.T) { t.Run("WorkerQueueLen", func(t *testing.T) {
settingsCl := client.NewSettingsClient(addr) adminSettingsCli := client.NewSettingsClient(addr, adminToken)
reportResp, _, errs := settingsCl.WorkerQueueLen(adminToken) reportResp, _, errs := adminSettingsCli.WorkerQueueLen()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if reportResp.StatusCode != 200 { } else if reportResp.StatusCode != 200 {

View file

@ -63,14 +63,14 @@ func TestSpaceLimit(t *testing.T) {
t.Fatal("fail to start server") t.Fatal("fail to start server")
} }
usersCl := client.NewUsersClient(addr) adminUsersCli := client.NewUsersClient(addr)
resp, _, errs := usersCl.Login(adminName, adminPwd) resp, _, errs := adminUsersCli.Login(adminName, adminPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), q.TokenCookie) adminToken := client.GetCookie(resp.Cookies(), q.TokenCookie)
userCount := 1 userCount := 1
userPwd := "1234" userPwd := "1234"
@ -82,7 +82,7 @@ func TestSpaceLimit(t *testing.T) {
for i := 0; i < userCount; i++ { for i := 0; i < userCount; i++ {
userName := getUserName(i) userName := getUserName(i)
resp, adResp, errs := usersCl.AddUser(userName, userPwd, db.UserRole, token) resp, adResp, errs := adminUsersCli.AddUser(userName, userPwd, db.UserRole)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -92,7 +92,7 @@ func TestSpaceLimit(t *testing.T) {
users[userName] = adResp.ID users[userName] = adResp.ID
} }
resp, _, errs = usersCl.Logout(token) resp, _, errs = adminUsersCli.Logout()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -100,14 +100,14 @@ func TestSpaceLimit(t *testing.T) {
} }
t.Run("test space limiting: Upload", func(t *testing.T) { t.Run("test space limiting: Upload", func(t *testing.T) {
usersCl := client.NewUsersClient(addr) usersCli := client.NewUsersClient(addr)
resp, _, errs := usersCl.Login(getUserName(0), userPwd) resp, _, errs := usersCli.Login(getUserName(0), userPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), q.TokenCookie) userToken := client.GetCookie(resp.Cookies(), q.TokenCookie)
fileContent := "" fileContent := ""
for i := 0; i < fileSize; i++ { for i := 0; i < fileSize; i++ {
@ -115,12 +115,12 @@ func TestSpaceLimit(t *testing.T) {
} }
for i := 0; i < spaceLimit/fileSize; i++ { for i := 0; i < spaceLimit/fileSize; i++ {
ok := assertUploadOK(t, fmt.Sprintf("%s/files/spacelimit/f_%d", getUserName(0), i), fileContent, addr, token) ok := assertUploadOK(t, fmt.Sprintf("%s/files/spacelimit/f_%d", getUserName(0), i), fileContent, addr, userToken)
if !ok { if !ok {
t.Fatalf("space limit failed at %d", i) t.Fatalf("space limit failed at %d", i)
} }
resp, selfResp, errs := usersCl.Self(token) resp, selfResp, errs := usersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -130,9 +130,9 @@ func TestSpaceLimit(t *testing.T) {
} }
} }
cl := client.NewFilesClient(addr, token) userFilesClient := client.NewFilesClient(addr, userToken)
filePath := fmt.Sprintf("%s/files/spacelimit/f_%d", getUserName(0), 11) filePath := fmt.Sprintf("%s/files/spacelimit/f_%d", getUserName(0), 11)
res, _, errs := cl.Create(filePath, 1) res, _, errs := userFilesClient.Create(filePath, 1)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 403 { } else if res.StatusCode != 403 {
@ -140,14 +140,14 @@ func TestSpaceLimit(t *testing.T) {
} }
for i := 0; i < spaceLimit/fileSize; i++ { for i := 0; i < spaceLimit/fileSize; i++ {
resp, _, errs := cl.Delete(fmt.Sprintf("%s/files/spacelimit/f_%d", getUserName(0), i)) resp, _, errs := userFilesClient.Delete(fmt.Sprintf("%s/files/spacelimit/f_%d", getUserName(0), i))
if len(errs) > 0 { if len(errs) > 0 {
t.Fatalf("failed to delete %d", i) t.Fatalf("failed to delete %d", i)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatalf("failed to delete status %d", resp.StatusCode) t.Fatalf("failed to delete status %d", resp.StatusCode)
} }
resp, selfResp, errs := usersCl.Self(token) resp, selfResp, errs := usersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -161,10 +161,10 @@ func TestSpaceLimit(t *testing.T) {
t.Run("usedSpace keeps correct in operations: Mkdir-Create-UploadChunk-AddSharing-Move-IsSharing-List", func(t *testing.T) { t.Run("usedSpace keeps correct in operations: Mkdir-Create-UploadChunk-AddSharing-Move-IsSharing-List", func(t *testing.T) {
srcDir := "qs/files/folder/move/src" srcDir := "qs/files/folder/move/src"
dstDir := "qs/files/folder/move/dst" dstDir := "qs/files/folder/move/dst"
filesCl := client.NewFilesClient(addr, token) adminFilesCli := client.NewFilesClient(addr, adminToken)
getUsedSpace := func() int64 { getUsedSpace := func() int64 {
resp, selfResp, errs := usersCl.Self(token) resp, selfResp, errs := adminUsersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -177,7 +177,7 @@ func TestSpaceLimit(t *testing.T) {
initUsedSpace := getUsedSpace() initUsedSpace := getUsedSpace()
for _, dirPath := range []string{srcDir, dstDir} { for _, dirPath := range []string{srcDir, dstDir} {
res, _, errs := filesCl.Mkdir(dirPath) res, _, errs := adminFilesCli.Mkdir(dirPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -195,7 +195,7 @@ func TestSpaceLimit(t *testing.T) {
} }
for fileName, content := range files { for fileName, content := range files {
oldPath := filepath.Join(srcDir, fileName) oldPath := filepath.Join(srcDir, fileName)
assertUploadOK(t, oldPath, content, addr, token) assertUploadOK(t, oldPath, content, addr, adminToken)
expectedUsedSpace += int64(len(content)) expectedUsedSpace += int64(len(content))
} }
if getUsedSpace() != expectedUsedSpace { if getUsedSpace() != expectedUsedSpace {
@ -205,7 +205,7 @@ func TestSpaceLimit(t *testing.T) {
for fileName := range files { for fileName := range files {
oldPath := filepath.Join(srcDir, fileName) oldPath := filepath.Join(srcDir, fileName)
newPath := filepath.Join(dstDir, fileName) newPath := filepath.Join(dstDir, fileName)
res, _, errs := filesCl.Move(oldPath, newPath) res, _, errs := adminFilesCli.Move(oldPath, newPath)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -217,7 +217,7 @@ func TestSpaceLimit(t *testing.T) {
} }
} }
res, _, errs := filesCl.Delete(dstDir) res, _, errs := adminFilesCli.Delete(dstDir)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if res.StatusCode != 200 { } else if res.StatusCode != 200 {
@ -230,21 +230,21 @@ func TestSpaceLimit(t *testing.T) {
}) })
t.Run("ResetUsedSpace", func(t *testing.T) { t.Run("ResetUsedSpace", func(t *testing.T) {
usersCl := client.NewUsersClient(addr) usersCli := client.NewUsersClient(addr)
resp, _, errs := usersCl.Login("test", "test") resp, _, errs := usersCli.Login("test", "test")
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), q.TokenCookie) userToken := client.GetCookie(resp.Cookies(), q.TokenCookie)
ok := assertUploadOK(t, "test/files/spacelimit/byte1", "0", addr, token) ok := assertUploadOK(t, "test/files/spacelimit/byte1", "0", addr, userToken)
if !ok { if !ok {
t.Fatal("upload failed") t.Fatal("upload failed")
} }
resp, selfResp, errs := usersCl.Self(token) resp, selfResp, errs := usersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -256,16 +256,16 @@ func TestSpaceLimit(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
resp, _, errs = usersCl.ResetUsedSpace(uidInt, token) resp, _, errs = usersCli.ResetUsedSpace(uidInt)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
settingsCl := client.NewSettingsClient(addr) settingsCli := client.NewSettingsClient(addr, userToken)
for i := 0; i < 20; i++ { for i := 0; i < 20; i++ {
resp, wqlResp, errs := settingsCl.WorkerQueueLen(token) resp, wqlResp, errs := settingsCli.WorkerQueueLen()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -279,7 +279,7 @@ func TestSpaceLimit(t *testing.T) {
time.Sleep(200) time.Sleep(200)
} }
resp, selfResp, errs = usersCl.Self(token) resp, selfResp, errs = usersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -288,11 +288,4 @@ func TestSpaceLimit(t *testing.T) {
t.Fatalf("used space not equal %d %d", selfResp.UsedSpace, originalUsedSpace) t.Fatalf("used space not equal %d %d", selfResp.UsedSpace, originalUsedSpace)
} }
}) })
resp, _, errs = usersCl.Logout(token)
if len(errs) > 0 {
t.Fatal(errs)
} else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode)
}
} }

View file

@ -11,7 +11,6 @@ import (
"github.com/ihexxa/quickshare/src/db" "github.com/ihexxa/quickshare/src/db"
q "github.com/ihexxa/quickshare/src/handlers" q "github.com/ihexxa/quickshare/src/handlers"
"github.com/ihexxa/quickshare/src/handlers/settings" "github.com/ihexxa/quickshare/src/handlers/settings"
su "github.com/ihexxa/quickshare/src/handlers/singleuserhdr"
) )
func TestUsersHandlers(t *testing.T) { func TestUsersHandlers(t *testing.T) {
@ -72,8 +71,7 @@ func TestUsersHandlers(t *testing.T) {
defer srv.Shutdown() defer srv.Shutdown()
fs := srv.depsFS() fs := srv.depsFS()
usersCl := client.NewUsersClient(addr) // adminUsersCli := client.NewUsersClient(addr)
settingsCl := client.NewSettingsClient(addr)
if !isServerReady(addr) { if !isServerReady(addr) {
t.Fatal("fail to start server") t.Fatal("fail to start server")
@ -82,16 +80,16 @@ func TestUsersHandlers(t *testing.T) {
var err error var err error
t.Run("test inited users", func(t *testing.T) { t.Run("test inited users", func(t *testing.T) {
usersCl := client.NewUsersClient(addr) usersCli := client.NewUsersClient(addr)
resp, _, errs := usersCl.Login(adminName, adminPwd) resp, _, errs := usersCli.Login(adminName, adminPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), su.TokenCookie) // userToken := client.GetCookie(resp.Cookies(), su.TokenCookie)
resp, lsResp, errs := usersCl.ListUsers(token) resp, lsResp, errs := usersCli.ListUsers()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -164,16 +162,15 @@ func TestUsersHandlers(t *testing.T) {
} }
for _, user := range users { for _, user := range users {
usersCl := client.NewUsersClient(addr) userUsersCli := client.NewUsersClient(addr)
resp, _, errs := usersCl.Login(user.Name, user.Pwd) resp, _, errs := userUsersCli.Login(user.Name, user.Pwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), su.TokenCookie)
resp, selfResp, errs := usersCl.Self(token) resp, selfResp, errs := userUsersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -193,21 +190,21 @@ func TestUsersHandlers(t *testing.T) {
} }
} }
resp, _, errs = usersCl.SetPwd(user.Pwd, adminNewPwd, token) resp, _, errs = userUsersCli.SetPwd(user.Pwd, adminNewPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, _, errs = usersCl.Logout(token) resp, _, errs = userUsersCli.Logout()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, _, errs = usersCl.Login(user.Name, adminNewPwd) resp, _, errs = userUsersCli.Login(user.Name, adminNewPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -217,16 +214,17 @@ func TestUsersHandlers(t *testing.T) {
}) })
t.Run("test users APIs: Login-AddUser-Logout-Login-Logout", func(t *testing.T) { t.Run("test users APIs: Login-AddUser-Logout-Login-Logout", func(t *testing.T) {
resp, _, errs := usersCl.Login(adminName, adminNewPwd) adminUsersCli := client.NewUsersClient(addr)
resp, _, errs := adminUsersCli.Login(adminName, adminNewPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), su.TokenCookie) // adminToken := client.GetCookie(resp.Cookies(), su.TokenCookie)
userName, userPwd := "user_login", "1234" userName, userPwd := "user_login", "1234"
resp, auResp, errs := usersCl.AddUser(userName, userPwd, db.UserRole, token) resp, auResp, errs := adminUsersCli.AddUser(userName, userPwd, db.UserRole)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -247,28 +245,28 @@ func TestUsersHandlers(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
resp, _, errs = usersCl.Logout(token) resp, _, errs = adminUsersCli.Logout()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, _, errs = usersCl.Login(userName, userPwd) resp, _, errs = adminUsersCli.Login(adminName, adminNewPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, _, errs = usersCl.DelUser(auResp.ID, token) resp, _, errs = adminUsersCli.DelUser(auResp.ID)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, _, errs = usersCl.Logout(token) resp, _, errs = adminUsersCli.Logout()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -277,17 +275,18 @@ func TestUsersHandlers(t *testing.T) {
}) })
t.Run("test users APIs: Login-AddUser-ListUsers-SetUser-ListUsers-DelUser-ListUsers", func(t *testing.T) { t.Run("test users APIs: Login-AddUser-ListUsers-SetUser-ListUsers-DelUser-ListUsers", func(t *testing.T) {
resp, _, errs := usersCl.Login(adminName, adminNewPwd) adminUsersCli := client.NewUsersClient(addr)
resp, _, errs := adminUsersCli.Login(adminName, adminNewPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), su.TokenCookie) // token := client.GetCookie(resp.Cookies(), su.TokenCookie)
userName, userPwd, userRole := "new_user", "1234", db.UserRole userName, userPwd, userRole := "new_user", "1234", db.UserRole
resp, auResp, errs := usersCl.AddUser(userName, userPwd, userRole, token) resp, auResp, errs := adminUsersCli.AddUser(userName, userPwd, userRole)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -300,7 +299,7 @@ func TestUsersHandlers(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
resp, lsResp, errs := usersCl.ListUsers(token) resp, lsResp, errs := adminUsersCli.ListUsers()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -330,14 +329,14 @@ func TestUsersHandlers(t *testing.T) {
UploadSpeedLimit: 3, UploadSpeedLimit: 3,
DownloadSpeedLimit: 3, DownloadSpeedLimit: 3,
} }
resp, _, errs = usersCl.SetUser(newUserID, newRole, newQuota, token) resp, _, errs = adminUsersCli.SetUser(newUserID, newRole, newQuota)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, lsResp, errs = usersCl.ListUsers(token) resp, lsResp, errs = adminUsersCli.ListUsers()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -360,14 +359,14 @@ func TestUsersHandlers(t *testing.T) {
} }
} }
resp, _, errs = usersCl.DelUser(auResp.ID, token) resp, _, errs = adminUsersCli.DelUser(auResp.ID)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, lsResp, errs = usersCl.ListUsers(token) resp, lsResp, errs = adminUsersCli.ListUsers()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -377,7 +376,7 @@ func TestUsersHandlers(t *testing.T) {
t.Fatal(fmt.Errorf("incorrect users size (%d)", len(lsResp.Users))) t.Fatal(fmt.Errorf("incorrect users size (%d)", len(lsResp.Users)))
} }
resp, _, errs = usersCl.Logout(token) resp, _, errs = adminUsersCli.Logout()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -386,18 +385,19 @@ func TestUsersHandlers(t *testing.T) {
}) })
t.Run("test roles APIs: Login-AddRole-ListRoles-DelRole-ListRoles-Logout", func(t *testing.T) { t.Run("test roles APIs: Login-AddRole-ListRoles-DelRole-ListRoles-Logout", func(t *testing.T) {
resp, _, errs := usersCl.Login(adminName, adminNewPwd) adminUsersCli := client.NewUsersClient(addr)
resp, _, errs := adminUsersCli.Login(adminName, adminNewPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), su.TokenCookie) // token := client.GetCookie(resp.Cookies(), su.TokenCookie)
roles := []string{"role1", "role2"} roles := []string{"role1", "role2"}
for _, role := range roles { for _, role := range roles {
resp, _, errs := usersCl.AddRole(role, token) resp, _, errs := adminUsersCli.AddRole(role)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -405,7 +405,7 @@ func TestUsersHandlers(t *testing.T) {
} }
} }
resp, lsResp, errs := usersCl.ListRoles(token) resp, lsResp, errs := adminUsersCli.ListRoles()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -422,7 +422,7 @@ func TestUsersHandlers(t *testing.T) {
} }
for _, role := range roles { for _, role := range roles {
resp, _, errs := usersCl.DelRole(role, token) resp, _, errs := adminUsersCli.DelRole(role)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -430,7 +430,7 @@ func TestUsersHandlers(t *testing.T) {
} }
} }
resp, lsResp, errs = usersCl.ListRoles(token) resp, lsResp, errs = adminUsersCli.ListRoles()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -442,7 +442,7 @@ func TestUsersHandlers(t *testing.T) {
} }
} }
resp, _, errs = usersCl.Logout(token) resp, _, errs = adminUsersCli.Logout()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -451,15 +451,15 @@ func TestUsersHandlers(t *testing.T) {
}) })
t.Run("Login, SetPreferences, Self, Logout", func(t *testing.T) { t.Run("Login, SetPreferences, Self, Logout", func(t *testing.T) {
usersCl := client.NewUsersClient(addr) adminUsersCli := client.NewUsersClient(addr)
resp, _, errs := usersCl.Login(adminName, adminNewPwd) resp, _, errs := adminUsersCli.Login(adminName, adminNewPwd)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
token := client.GetCookie(resp.Cookies(), su.TokenCookie) // token := client.GetCookie(resp.Cookies(), su.TokenCookie)
prefers := []*db.Preferences{ prefers := []*db.Preferences{
{ {
@ -494,14 +494,14 @@ func TestUsersHandlers(t *testing.T) {
}, },
} }
for _, prefer := range prefers { for _, prefer := range prefers {
resp, _, errs := usersCl.SetPreferences(prefer, token) resp, _, errs := adminUsersCli.SetPreferences(prefer)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, selfResp, errs := usersCl.Self(token) resp, selfResp, errs := adminUsersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -514,6 +514,8 @@ func TestUsersHandlers(t *testing.T) {
} }
// disable setting bg in preferences // disable setting bg in preferences
settingsCl := client.NewSettingsClient(addr, adminUsersCli.Token())
resp, _, errs = settingsCl.SetClientCfg(&settings.ClientCfgMsg{ resp, _, errs = settingsCl.SetClientCfg(&settings.ClientCfgMsg{
ClientCfg: &db.ClientConfig{ ClientCfg: &db.ClientConfig{
SiteName: "Quickshare", SiteName: "Quickshare",
@ -523,9 +525,7 @@ func TestUsersHandlers(t *testing.T) {
AutoTheme: true, AutoTheme: true,
}, },
CaptchaEnabled: false, CaptchaEnabled: false,
}, })
token,
)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -533,14 +533,14 @@ func TestUsersHandlers(t *testing.T) {
} }
for _, prefer := range prefers { for _, prefer := range prefers {
resp, _, errs := usersCl.SetPreferences(prefer, token) resp, _, errs := adminUsersCli.SetPreferences(prefer)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
t.Fatal(resp.StatusCode) t.Fatal(resp.StatusCode)
} }
resp, selfResp, errs := usersCl.Self(token) resp, selfResp, errs := adminUsersCli.Self()
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {

View file

@ -59,12 +59,13 @@ func getUserName(id int) string {
} }
func addUsers(t *testing.T, addr, userPwd string, userCount int, adminToken *http.Cookie) map[string]string { func addUsers(t *testing.T, addr, userPwd string, userCount int, adminToken *http.Cookie) map[string]string {
usersCl := client.NewUsersClient(addr) adminUsersCli := client.NewUsersClient(addr)
adminUsersCli.SetToken(adminToken)
users := map[string]string{} users := map[string]string{}
for i := range make([]int, userCount) { for i := range make([]int, userCount) {
userName := getUserName(i) userName := getUserName(i)
resp, adResp, errs := usersCl.AddUser(userName, userPwd, db.UserRole, adminToken) resp, adResp, errs := adminUsersCli.AddUser(userName, userPwd, db.UserRole)
if len(errs) > 0 { if len(errs) > 0 {
t.Fatal(errs) t.Fatal(errs)
} else if resp.StatusCode != 200 { } else if resp.StatusCode != 200 {
@ -79,7 +80,7 @@ func addUsers(t *testing.T, addr, userPwd string, userCount int, adminToken *htt
func isServerReady(addr string) bool { func isServerReady(addr string) bool {
retry := 20 retry := 20
setCl := client.NewSettingsClient(addr) setCl := client.NewSettingsClient(addr, nil)
for retry > 0 { for retry > 0 {
_, _, errs := setCl.Health() _, _, errs := setCl.Health()