fix(settings): add captchaEnabled switch to client config
This commit is contained in:
parent
99b424ee2a
commit
67da1ea0eb
3 changed files with 40 additions and 17 deletions
|
@ -5,7 +5,7 @@ import (
|
|||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/ihexxa/quickshare/src/db/sitestore"
|
||||
// "github.com/ihexxa/quickshare/src/db/sitestore"
|
||||
"github.com/ihexxa/quickshare/src/handlers/settings"
|
||||
"github.com/parnurzeal/gorequest"
|
||||
)
|
||||
|
@ -46,12 +46,10 @@ func (cl *SettingsClient) GetClientCfg(token *http.Cookie) (*http.Response, *set
|
|||
return resp, mResp, nil
|
||||
}
|
||||
|
||||
func (cl *SettingsClient) SetClientCfg(cfg *sitestore.ClientConfig, token *http.Cookie) (*http.Response, string, []error) {
|
||||
func (cl *SettingsClient) SetClientCfg(cfgMsg *settings.ClientCfgMsg, token *http.Cookie) (*http.Response, string, []error) {
|
||||
return cl.r.Patch(cl.url("/v1/settings/client")).
|
||||
AddCookie(token).
|
||||
Send(&settings.ClientCfgMsg{
|
||||
ClientCfg: cfg,
|
||||
}).
|
||||
Send(cfgMsg).
|
||||
End()
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,10 @@ func (h *SettingsSvc) Health(c *gin.Context) {
|
|||
}
|
||||
|
||||
type ClientCfgMsg struct {
|
||||
ClientCfg *sitestore.ClientConfig `json:"clientCfg"`
|
||||
SiteName string `json:"siteName"`
|
||||
SiteDesc string `json:"siteDesc"`
|
||||
Bg *sitestore.BgConfig `json:"bg"`
|
||||
CaptchaEnabled bool `json:"captchaEnabled"`
|
||||
}
|
||||
|
||||
func (h *SettingsSvc) GetClientCfg(c *gin.Context) {
|
||||
|
@ -41,7 +44,12 @@ func (h *SettingsSvc) GetClientCfg(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
c.JSON(200, &ClientCfgMsg{ClientCfg: siteCfg.ClientCfg})
|
||||
c.JSON(200, &ClientCfgMsg{
|
||||
SiteName: siteCfg.ClientCfg.SiteName,
|
||||
SiteDesc: siteCfg.ClientCfg.SiteDesc,
|
||||
Bg: siteCfg.ClientCfg.Bg,
|
||||
CaptchaEnabled: h.cfg.BoolOr("Users.CaptchaEnabled", true),
|
||||
})
|
||||
}
|
||||
|
||||
func (h *SettingsSvc) SetClientCfg(c *gin.Context) {
|
||||
|
@ -52,7 +60,13 @@ func (h *SettingsSvc) SetClientCfg(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
if err = validateClientCfg(req.ClientCfg); err != nil {
|
||||
clientCfg := &sitestore.ClientConfig{
|
||||
SiteName: req.SiteName,
|
||||
SiteDesc: req.SiteDesc,
|
||||
Bg: req.Bg,
|
||||
// TODO: captchaEnabled is not persisted in db
|
||||
}
|
||||
if err = validateClientCfg(clientCfg); err != nil {
|
||||
c.JSON(q.ErrResp(c, 400, err))
|
||||
return
|
||||
}
|
||||
|
@ -63,7 +77,7 @@ func (h *SettingsSvc) SetClientCfg(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
err = h.deps.SiteStore().SetClientCfg(req.ClientCfg)
|
||||
err = h.deps.SiteStore().SetClientCfg(clientCfg)
|
||||
if err != nil {
|
||||
c.JSON(q.ErrResp(c, 500, err))
|
||||
return
|
||||
|
|
|
@ -2,7 +2,6 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/ihexxa/quickshare/src/handlers/settings"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"reflect"
|
||||
|
@ -13,6 +12,7 @@ import (
|
|||
"github.com/ihexxa/quickshare/src/client"
|
||||
"github.com/ihexxa/quickshare/src/db/sitestore"
|
||||
q "github.com/ihexxa/quickshare/src/handlers"
|
||||
"github.com/ihexxa/quickshare/src/handlers/settings"
|
||||
)
|
||||
|
||||
func TestSettingsHandlers(t *testing.T) {
|
||||
|
@ -85,22 +85,33 @@ func TestSettingsHandlers(t *testing.T) {
|
|||
}
|
||||
|
||||
for _, cfg := range cfgs {
|
||||
resp, _, errs := settingsCl.SetClientCfg(cfg, adminToken)
|
||||
clientCfgMsg := &settings.ClientCfgMsg{
|
||||
SiteName: cfg.SiteName,
|
||||
SiteDesc: cfg.SiteDesc,
|
||||
Bg: cfg.Bg,
|
||||
}
|
||||
resp, _, errs := settingsCl.SetClientCfg(clientCfgMsg, adminToken)
|
||||
if len(errs) > 0 {
|
||||
t.Fatal(errs)
|
||||
} else if resp.StatusCode != 200 {
|
||||
t.Fatal(resp.StatusCode)
|
||||
}
|
||||
|
||||
resp, clientCfgMsg, errs := settingsCl.GetClientCfg(adminToken)
|
||||
resp, clientCfgMsgGot, errs := settingsCl.GetClientCfg(adminToken)
|
||||
if len(errs) > 0 {
|
||||
t.Fatal(errs)
|
||||
} else if resp.StatusCode != 200 {
|
||||
t.Fatal(resp.StatusCode)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(cfg, clientCfgMsg.ClientCfg) {
|
||||
t.Fatalf("client cfgs are not equal: got(%v) expected(%v)", clientCfgMsg.ClientCfg, cfg)
|
||||
cfgEqual := func(cfg1, cfg2 *settings.ClientCfgMsg) bool {
|
||||
return cfg1.SiteName == cfg2.SiteName &&
|
||||
cfg1.SiteDesc == cfg2.SiteDesc &&
|
||||
reflect.DeepEqual(cfg1.Bg, cfg2.Bg)
|
||||
}
|
||||
|
||||
if !cfgEqual(clientCfgMsg, clientCfgMsgGot) {
|
||||
t.Fatalf("client cfgs are not equal: got(%v) expected(%v)", clientCfgMsg, clientCfgMsgGot)
|
||||
}
|
||||
|
||||
for userName := range users {
|
||||
|
@ -112,15 +123,15 @@ func TestSettingsHandlers(t *testing.T) {
|
|||
}
|
||||
userToken := client.GetCookie(resp.Cookies(), q.TokenCookie)
|
||||
|
||||
resp, clientCfgMsg, errs := settingsCl.GetClientCfg(userToken)
|
||||
resp, clientCfgMsgGot, errs := settingsCl.GetClientCfg(userToken)
|
||||
if len(errs) > 0 {
|
||||
t.Fatal(errs)
|
||||
} else if resp.StatusCode != 200 {
|
||||
t.Fatal(resp.StatusCode)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(cfg, clientCfgMsg.ClientCfg) {
|
||||
t.Fatalf("client cfgs are not equal for user: got(%v) expected(%v)", clientCfgMsg.ClientCfg, cfg)
|
||||
if !cfgEqual(clientCfgMsg, clientCfgMsgGot) {
|
||||
t.Fatalf("client cfgs are not equal: got(%v) expected(%v)", clientCfgMsg, clientCfgMsgGot)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue