summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Levesy <jlevesy@gmail.com>2018-10-15 16:46:26 +0200
committerGeorge Goldberg <george@gberg.me>2018-10-15 15:46:26 +0100
commit43bdbb0c3a0d93a8bf34ae5e2abbad4586a2581b (patch)
treeaeca7af5d638e22c9e425f352494a1b17d72d83d
parent160d2785927d4729441dfa6ecd0d5536ec640687 (diff)
downloadchat-43bdbb0c3a0d93a8bf34ae5e2abbad4586a2581b.tar.gz
chat-43bdbb0c3a0d93a8bf34ae5e2abbad4586a2581b.tar.bz2
chat-43bdbb0c3a0d93a8bf34ae5e2abbad4586a2581b.zip
Add a delete brand image action on the APIv4 (#9552)
-rw-r--r--api4/brand.go15
-rw-r--r--api4/brand_test.go27
-rw-r--r--app/brand.go16
-rw-r--r--model/client4.go10
4 files changed, 68 insertions, 0 deletions
diff --git a/api4/brand.go b/api4/brand.go
index b6d353a29..54764860c 100644
--- a/api4/brand.go
+++ b/api4/brand.go
@@ -14,6 +14,7 @@ import (
func (api *API) InitBrand() {
api.BaseRoutes.Brand.Handle("/image", api.ApiHandlerTrustRequester(getBrandImage)).Methods("GET")
api.BaseRoutes.Brand.Handle("/image", api.ApiSessionRequired(uploadBrandImage)).Methods("POST")
+ api.BaseRoutes.Brand.Handle("/image", api.ApiSessionRequired(deleteBrandImage)).Methods("DELETE")
}
func getBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -71,3 +72,17 @@ func uploadBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusCreated)
ReturnStatusOK(w)
}
+
+func deleteBrandImage(c *Context, w http.ResponseWriter, r *http.Request) {
+ if !c.App.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
+ c.SetPermissionError(model.PERMISSION_MANAGE_SYSTEM)
+ return
+ }
+
+ if err := c.App.DeleteBrandImage(); err != nil {
+ c.Err = err
+ return
+ }
+
+ ReturnStatusOK(w)
+}
diff --git a/api4/brand_test.go b/api4/brand_test.go
index c1568c5cc..37169d99a 100644
--- a/api4/brand_test.go
+++ b/api4/brand_test.go
@@ -52,3 +52,30 @@ func TestUploadBrandImage(t *testing.T) {
_, resp = th.SystemAdminClient.UploadBrandImage(data)
CheckCreatedStatus(t, resp)
}
+
+func TestDeleteBrandImage(t *testing.T) {
+ th := Setup().InitBasic().InitSystemAdmin()
+ defer th.TearDown()
+
+ data, err := readTestFile("test.png")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ _, resp := th.SystemAdminClient.UploadBrandImage(data)
+ CheckCreatedStatus(t, resp)
+
+ resp = th.Client.DeleteBrandImage()
+ CheckForbiddenStatus(t, resp)
+
+ th.Client.Logout()
+
+ resp = th.Client.DeleteBrandImage()
+ CheckUnauthorizedStatus(t, resp)
+
+ resp = th.SystemAdminClient.DeleteBrandImage()
+ CheckOKStatus(t, resp)
+
+ resp = th.SystemAdminClient.DeleteBrandImage()
+ CheckNotFoundStatus(t, resp)
+}
diff --git a/app/brand.go b/app/brand.go
index a2feac7ec..6c1091fff 100644
--- a/app/brand.go
+++ b/app/brand.go
@@ -77,3 +77,19 @@ func (a *App) GetBrandImage() ([]byte, *model.AppError) {
return img, nil
}
+
+func (a *App) DeleteBrandImage() *model.AppError {
+ filePath := BRAND_FILE_PATH + BRAND_FILE_NAME
+
+ fileExists, err := a.FileExists(filePath)
+
+ if err != nil {
+ return err
+ }
+
+ if !fileExists {
+ return model.NewAppError("DeleteBrandImage", "api.admin.delete_brand_image.storage.not_found", nil, "", http.StatusNotFound)
+ }
+
+ return a.RemoveFile(filePath)
+}
diff --git a/model/client4.go b/model/client4.go
index 6a613b6b3..c35dab904 100644
--- a/model/client4.go
+++ b/model/client4.go
@@ -2997,6 +2997,16 @@ func (c *Client4) GetBrandImage() ([]byte, *Response) {
}
}
+func (c *Client4) DeleteBrandImage() *Response {
+ r, err := c.DoApiDelete(c.GetBrandRoute() + "/image")
+
+ if err != nil {
+ return BuildErrorResponse(r, err)
+ }
+
+ return BuildResponse(r)
+}
+
// UploadBrandImage sets the brand image for the system.
func (c *Client4) UploadBrandImage(data []byte) (bool, *Response) {
body := &bytes.Buffer{}