diff options
author | George Goldberg <george@gberg.me> | 2018-04-27 10:53:38 +0100 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2018-04-27 10:53:38 +0100 |
commit | 2386acb3ddabd8827e21b1862c338a8b13a25de6 (patch) | |
tree | d9c5800bf168db532124db3c213c2607402894c6 /api4 | |
parent | 7294644e9d74ca1512a730c597d61a97ccbcf10c (diff) | |
parent | 7abd6176e99d3f82711af51f8d75b3142ab73758 (diff) | |
download | chat-2386acb3ddabd8827e21b1862c338a8b13a25de6.tar.gz chat-2386acb3ddabd8827e21b1862c338a8b13a25de6.tar.bz2 chat-2386acb3ddabd8827e21b1862c338a8b13a25de6.zip |
Merge branch 'master' into advanced-permissions-phase-2
Diffstat (limited to 'api4')
-rw-r--r-- | api4/webhook.go | 12 | ||||
-rw-r--r-- | api4/webhook_test.go | 10 |
2 files changed, 15 insertions, 7 deletions
diff --git a/api4/webhook.go b/api4/webhook.go index 52c4ea331..a0e7b5785 100644 --- a/api4/webhook.go +++ b/api4/webhook.go @@ -509,11 +509,15 @@ func commandWebhook(c *Context, w http.ResponseWriter, r *http.Request) { params := mux.Vars(r) id := params["id"] - response := model.CommandResponseFromHTTPBody(r.Header.Get("Content-Type"), r.Body) - - err := c.App.HandleCommandWebhook(id, response) + response, err := model.CommandResponseFromHTTPBody(r.Header.Get("Content-Type"), r.Body) if err != nil { - c.Err = err + c.Err = model.NewAppError("commandWebhook", "web.command_webhook.parse.app_error", nil, err.Error(), http.StatusBadRequest) + return + } + + appErr := c.App.HandleCommandWebhook(id, response) + if appErr != nil { + c.Err = appErr return } diff --git a/api4/webhook_test.go b/api4/webhook_test.go index 0a295b4b2..e983b6461 100644 --- a/api4/webhook_test.go +++ b/api4/webhook_test.go @@ -917,17 +917,21 @@ func TestCommandWebhooks(t *testing.T) { t.Fatal(err) } - if resp, _ := http.Post(Client.Url+"/hooks/commands/123123123123", "application/json", bytes.NewBufferString("{\"text\":\"this is a test\"}")); resp.StatusCode != http.StatusNotFound { + if resp, _ := http.Post(Client.Url+"/hooks/commands/123123123123", "application/json", bytes.NewBufferString(`{"text":"this is a test"}`)); resp.StatusCode != http.StatusNotFound { t.Fatal("expected not-found for non-existent hook") } + if resp, err := http.Post(Client.Url+"/hooks/commands/"+hook.Id, "application/json", bytes.NewBufferString(`{"text":"invalid`)); err != nil || resp.StatusCode != http.StatusBadRequest { + t.Fatal(err) + } + for i := 0; i < 5; i++ { - if resp, err := http.Post(Client.Url+"/hooks/commands/"+hook.Id, "application/json", bytes.NewBufferString("{\"text\":\"this is a test\"}")); err != nil || resp.StatusCode != http.StatusOK { + if resp, err := http.Post(Client.Url+"/hooks/commands/"+hook.Id, "application/json", bytes.NewBufferString(`{"text":"this is a test"}`)); err != nil || resp.StatusCode != http.StatusOK { t.Fatal(err) } } - if resp, _ := http.Post(Client.Url+"/hooks/commands/"+hook.Id, "application/json", bytes.NewBufferString("{\"text\":\"this is a test\"}")); resp.StatusCode != http.StatusBadRequest { + if resp, _ := http.Post(Client.Url+"/hooks/commands/"+hook.Id, "application/json", bytes.NewBufferString(`{"text":"this is a test"}`)); resp.StatusCode != http.StatusBadRequest { t.Fatal("expected error for sixth usage") } } |