diff --git a/src/client/settings.go b/src/client/settings.go index d54701f..6c5dbba 100644 --- a/src/client/settings.go +++ b/src/client/settings.go @@ -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() } diff --git a/src/handlers/settings/handlers.go b/src/handlers/settings/handlers.go index 657240f..c590d32 100644 --- a/src/handlers/settings/handlers.go +++ b/src/handlers/settings/handlers.go @@ -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 diff --git a/src/server/server_settings_test.go b/src/server/server_settings_test.go index 5dff066..b4865e6 100644 --- a/src/server/server_settings_test.go +++ b/src/server/server_settings_test.go @@ -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) } } }