summaryrefslogtreecommitdiffstats
path: root/api4/command_test.go
diff options
context:
space:
mode:
authorSaturnino Abril <saturnino.abril@gmail.com>2017-04-27 22:41:52 +0900
committerJoram Wilander <jwawilander@gmail.com>2017-04-27 09:41:52 -0400
commit0e007e344bf10993529711f14c4168365c3504c3 (patch)
tree82b4178a043166b9ce6d9be36607bab0851a9819 /api4/command_test.go
parentbd665871831a43184ceb928bdeb862b0a46386cf (diff)
downloadchat-0e007e344bf10993529711f14c4168365c3504c3.tar.gz
chat-0e007e344bf10993529711f14c4168365c3504c3.tar.bz2
chat-0e007e344bf10993529711f14c4168365c3504c3.zip
APIv4 POST /commands/execute (#6205)
Diffstat (limited to 'api4/command_test.go')
-rw-r--r--api4/command_test.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/api4/command_test.go b/api4/command_test.go
index 0aaca3c0f..4bbf20084 100644
--- a/api4/command_test.go
+++ b/api4/command_test.go
@@ -379,5 +379,91 @@ func TestRegenToken(t *testing.T) {
if token != "" {
t.Fatal("should not return the token")
}
+}
+
+func TestExecuteCommand(t *testing.T) {
+ th := Setup().InitBasic().InitSystemAdmin()
+ defer TearDown()
+ Client := th.Client
+ channel := th.BasicChannel
+
+ enableCommands := *utils.Cfg.ServiceSettings.EnableCommands
+ defer func() {
+ utils.Cfg.ServiceSettings.EnableCommands = &enableCommands
+ }()
+ *utils.Cfg.ServiceSettings.EnableCommands = true
+ postCmd := &model.Command{
+ CreatorId: th.BasicUser.Id,
+ TeamId: th.BasicTeam.Id,
+ URL: "http://localhost" + utils.Cfg.ServiceSettings.ListenAddress + model.API_URL_SUFFIX_V4 + "/teams/command_test",
+ Method: model.COMMAND_METHOD_POST,
+ Trigger: "postcommand",
+ }
+
+ if _, err := app.CreateCommand(postCmd); err != nil {
+ t.Fatal("failed to create post command")
+ }
+
+ commandResponse, resp := Client.ExecuteCommand(channel.Id, "/postcommand")
+ CheckNoError(t, resp)
+
+ if commandResponse == nil {
+ t.Fatal("command response should have returned")
+ }
+
+ posts, err := app.GetPostsPage(channel.Id, 0, 10)
+ if err != nil || posts == nil || len(posts.Order) != 2 {
+ t.Fatal("Test command failed to send")
+ }
+
+ getCmd := &model.Command{
+ CreatorId: th.BasicUser.Id,
+ TeamId: th.BasicTeam.Id,
+ URL: "http://localhost" + utils.Cfg.ServiceSettings.ListenAddress + model.API_URL_SUFFIX_V4 + "/teams/command_test",
+ Method: model.COMMAND_METHOD_GET,
+ Trigger: "getcommand",
+ }
+
+ if _, err := app.CreateCommand(getCmd); err != nil {
+ t.Fatal("failed to create get command")
+ }
+
+ commandResponse, resp = Client.ExecuteCommand(channel.Id, "/getcommand")
+ CheckNoError(t, resp)
+
+ if commandResponse == nil {
+ t.Fatal("command response should have returned")
+ }
+
+ posts, err = app.GetPostsPage(channel.Id, 0, 10)
+ if err != nil || posts == nil || len(posts.Order) != 3 {
+ t.Fatal("Test command failed to send")
+ }
+
+ _, resp = Client.ExecuteCommand(channel.Id, "")
+ CheckBadRequestStatus(t, resp)
+
+ _, resp = Client.ExecuteCommand(channel.Id, "/")
+ CheckBadRequestStatus(t, resp)
+
+ _, resp = Client.ExecuteCommand(channel.Id, "getcommand")
+ CheckBadRequestStatus(t, resp)
+
+ _, resp = Client.ExecuteCommand(channel.Id, "/junk")
+ CheckNotFoundStatus(t, resp)
+
+ otherUser := th.CreateUser()
+ Client.Login(otherUser.Email, otherUser.Password)
+
+ _, resp = Client.ExecuteCommand(channel.Id, "/getcommand")
+ CheckForbiddenStatus(t, resp)
+
+ Client.Logout()
+
+ _, resp = Client.ExecuteCommand(channel.Id, "/getcommand")
+ CheckUnauthorizedStatus(t, resp)
+
+ _, resp = th.SystemAdminClient.ExecuteCommand(channel.Id, "/getcommand")
+ CheckNoError(t, resp)
}