diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-02-21 19:42:34 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-21 19:42:34 -0500 |
commit | 69cac604e09c139845d2f63ac95fb702fb5a9fe1 (patch) | |
tree | 611920333a5d55f5db0cca43bd3cb5cf1bee30e8 /api4/webhook_test.go | |
parent | b61115df55ea6eba9976e561a8b39bf5a297fcc9 (diff) | |
download | chat-69cac604e09c139845d2f63ac95fb702fb5a9fe1.tar.gz chat-69cac604e09c139845d2f63ac95fb702fb5a9fe1.tar.bz2 chat-69cac604e09c139845d2f63ac95fb702fb5a9fe1.zip |
Implement create and get incoming webhook endpoints for APIv4 (#5407)
* Implement POST /hooks/incoming endpoint for APIv4
* Implement GET /hooks/incoming endpoint for APIv4
* Updates per feedback
Diffstat (limited to 'api4/webhook_test.go')
-rw-r--r-- | api4/webhook_test.go | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/api4/webhook_test.go b/api4/webhook_test.go new file mode 100644 index 000000000..a6705f6e1 --- /dev/null +++ b/api4/webhook_test.go @@ -0,0 +1,150 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package api4 + +import ( + "testing" + + "github.com/mattermost/platform/model" + "github.com/mattermost/platform/utils" +) + +func TestCreateIncomingWebhook(t *testing.T) { + th := Setup().InitBasic().InitSystemAdmin() + defer TearDown() + Client := th.Client + + enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks + enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + defer func() { + utils.Cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks + utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + utils.SetDefaultRolesBasedOnConfig() + }() + utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true + *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + utils.SetDefaultRolesBasedOnConfig() + + hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} + + rhook, resp := th.SystemAdminClient.CreateIncomingWebhook(hook) + CheckNoError(t, resp) + + if rhook.ChannelId != hook.ChannelId { + t.Fatal("channel ids didn't match") + } + + if rhook.UserId != th.SystemAdminUser.Id { + t.Fatal("user ids didn't match") + } + + if rhook.TeamId != th.BasicTeam.Id { + t.Fatal("team ids didn't match") + } + + hook.ChannelId = "junk" + _, resp = th.SystemAdminClient.CreateIncomingWebhook(hook) + CheckNotFoundStatus(t, resp) + + hook.ChannelId = th.BasicChannel.Id + th.LoginTeamAdmin() + _, resp = Client.CreateIncomingWebhook(hook) + CheckNoError(t, resp) + + th.LoginBasic() + _, resp = Client.CreateIncomingWebhook(hook) + CheckForbiddenStatus(t, resp) + + *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + utils.SetDefaultRolesBasedOnConfig() + + _, resp = Client.CreateIncomingWebhook(hook) + CheckNoError(t, resp) + + utils.Cfg.ServiceSettings.EnableIncomingWebhooks = false + _, resp = Client.CreateIncomingWebhook(hook) + CheckNotImplementedStatus(t, resp) +} + +func TestGetIncomingWebhooks(t *testing.T) { + th := Setup().InitBasic().InitSystemAdmin() + defer TearDown() + Client := th.Client + + enableIncomingHooks := utils.Cfg.ServiceSettings.EnableIncomingWebhooks + enableAdminOnlyHooks := utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations + defer func() { + utils.Cfg.ServiceSettings.EnableIncomingWebhooks = enableIncomingHooks + utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = enableAdminOnlyHooks + utils.SetDefaultRolesBasedOnConfig() + }() + utils.Cfg.ServiceSettings.EnableIncomingWebhooks = true + *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = true + utils.SetDefaultRolesBasedOnConfig() + + hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} + rhook, resp := th.SystemAdminClient.CreateIncomingWebhook(hook) + CheckNoError(t, resp) + + hooks, resp := th.SystemAdminClient.GetIncomingWebhooks(0, 1000, "") + CheckNoError(t, resp) + + found := false + for _, h := range hooks { + if rhook.Id == h.Id { + found = true + } + } + + if !found { + t.Fatal("missing hook") + } + + hooks, resp = th.SystemAdminClient.GetIncomingWebhooks(0, 1, "") + CheckNoError(t, resp) + + if len(hooks) != 1 { + t.Fatal("should only be 1") + } + + hooks, resp = th.SystemAdminClient.GetIncomingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + CheckNoError(t, resp) + + found = false + for _, h := range hooks { + if rhook.Id == h.Id { + found = true + } + } + + if !found { + t.Fatal("missing hook") + } + + hooks, resp = th.SystemAdminClient.GetIncomingWebhooksForTeam(model.NewId(), 0, 1000, "") + CheckNoError(t, resp) + + if len(hooks) != 0 { + t.Fatal("no hooks should be returned") + } + + _, resp = Client.GetIncomingWebhooks(0, 1000, "") + CheckForbiddenStatus(t, resp) + + *utils.Cfg.ServiceSettings.EnableOnlyAdminIntegrations = false + utils.SetDefaultRolesBasedOnConfig() + + _, resp = Client.GetIncomingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + CheckNoError(t, resp) + + _, resp = Client.GetIncomingWebhooksForTeam(model.NewId(), 0, 1000, "") + CheckForbiddenStatus(t, resp) + + _, resp = Client.GetIncomingWebhooks(0, 1000, "") + CheckForbiddenStatus(t, resp) + + Client.Logout() + _, resp = Client.GetIncomingWebhooks(0, 1000, "") + CheckUnauthorizedStatus(t, resp) +} |