diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/license.go | 15 | ||||
-rw-r--r-- | api/license_test.go | 29 |
2 files changed, 32 insertions, 12 deletions
diff --git a/api/license.go b/api/license.go index ed0771d17..526f4a4c1 100644 --- a/api/license.go +++ b/api/license.go @@ -153,20 +153,13 @@ func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) { } func getClientLicenceConfig(c *Context, w http.ResponseWriter, r *http.Request) { - config := utils.ClientLicense - - var etag string - if config["IsLicensed"] == "false" { - etag = model.Etag(config["IsLicensed"]) - } else { - etag = model.Etag(config["IsLicensed"], config["IssuedAt"]) - } - + etag := utils.GetClientLicenseEtag() if HandleEtag(etag, w, r) { return } - w.Header().Set(model.HEADER_ETAG_SERVER, etag) + clientLicense := utils.ClientLicense - w.Write([]byte(model.MapToJson(config))) + w.Header().Set(model.HEADER_ETAG_SERVER, etag) + w.Write([]byte(model.MapToJson(clientLicense))) } diff --git a/api/license_test.go b/api/license_test.go index b34aeb7a6..0126d6e54 100644 --- a/api/license_test.go +++ b/api/license_test.go @@ -4,13 +4,14 @@ package api import ( + "github.com/mattermost/platform/utils" "testing" ) func TestGetLicenceConfig(t *testing.T) { Setup() - if result, err := Client.GetClientLicenceConfig(); err != nil { + if result, err := Client.GetClientLicenceConfig(""); err != nil { t.Fatal(err) } else { cfg := result.Data.(map[string]string) @@ -18,5 +19,31 @@ func TestGetLicenceConfig(t *testing.T) { if _, ok := cfg["IsLicensed"]; !ok { t.Fatal(cfg) } + + // test etag caching + if cache_result, err := Client.GetClientLicenceConfig(result.Etag); err != nil { + t.Fatal(err) + } else if len(cache_result.Data.(map[string]string)) != 0 { + t.Log(cache_result.Data) + t.Fatal("cache should be empty") + } + + utils.ClientLicense["IsLicensed"] = "true" + + if cache_result, err := Client.GetClientLicenceConfig(result.Etag); err != nil { + t.Fatal(err) + } else if len(cache_result.Data.(map[string]string)) == 0 { + t.Fatal("result should not be empty") + } + + utils.ClientLicense["SomeFeature"] = "true" + + if cache_result, err := Client.GetClientLicenceConfig(result.Etag); err != nil { + t.Fatal(err) + } else if len(cache_result.Data.(map[string]string)) == 0 { + t.Fatal("result should not be empty") + } + + utils.ClientLicense = map[string]string{"IsLicensed": "false"} } } |