[MM-10754] Remove unnecessary command_test route (#9050)
* remove unnecessary command_test route * replaced localhost with ts.URL
Этот коммит содержится в:
коммит произвёл
Joram Wilander
родитель
a92f5addcc
Коммит
9e5ec7d09d
@@ -4,7 +4,6 @@
|
|||||||
package api4
|
package api4
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -22,9 +21,6 @@ func (api *API) InitCommand() {
|
|||||||
|
|
||||||
api.BaseRoutes.Team.Handle("/commands/autocomplete", api.ApiSessionRequired(listAutocompleteCommands)).Methods("GET")
|
api.BaseRoutes.Team.Handle("/commands/autocomplete", api.ApiSessionRequired(listAutocompleteCommands)).Methods("GET")
|
||||||
api.BaseRoutes.Command.Handle("/regen_token", api.ApiSessionRequired(regenCommandToken)).Methods("PUT")
|
api.BaseRoutes.Command.Handle("/regen_token", api.ApiSessionRequired(regenCommandToken)).Methods("PUT")
|
||||||
|
|
||||||
api.BaseRoutes.Teams.Handle("/command_test", api.ApiHandler(testCommand)).Methods("POST")
|
|
||||||
api.BaseRoutes.Teams.Handle("/command_test", api.ApiHandler(testCommand)).Methods("GET")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func createCommand(c *Context, w http.ResponseWriter, r *http.Request) {
|
func createCommand(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -291,25 +287,3 @@ func regenCommandToken(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
w.Write([]byte(model.MapToJson(resp)))
|
w.Write([]byte(model.MapToJson(resp)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func testCommand(c *Context, w http.ResponseWriter, r *http.Request) {
|
|
||||||
r.ParseForm()
|
|
||||||
|
|
||||||
msg := ""
|
|
||||||
if r.Method == "POST" {
|
|
||||||
msg = msg + "\ntoken=" + r.FormValue("token")
|
|
||||||
msg = msg + "\nteam_domain=" + r.FormValue("team_domain")
|
|
||||||
} else {
|
|
||||||
body, _ := ioutil.ReadAll(r.Body)
|
|
||||||
msg = string(body)
|
|
||||||
}
|
|
||||||
|
|
||||||
rc := &model.CommandResponse{
|
|
||||||
Text: "test command response " + msg,
|
|
||||||
ResponseType: model.COMMAND_RESPONSE_TYPE_IN_CHANNEL,
|
|
||||||
Type: "custom_test",
|
|
||||||
Props: map[string]interface{}{"someprop": "somevalue"},
|
|
||||||
}
|
|
||||||
|
|
||||||
w.Write([]byte(rc.ToJson()))
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
package api4
|
package api4
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"net/url"
|
"net/url"
|
||||||
@@ -423,7 +422,7 @@ func TestExecuteInvalidCommand(t *testing.T) {
|
|||||||
getCmd := &model.Command{
|
getCmd := &model.Command{
|
||||||
CreatorId: th.BasicUser.Id,
|
CreatorId: th.BasicUser.Id,
|
||||||
TeamId: th.BasicTeam.Id,
|
TeamId: th.BasicTeam.Id,
|
||||||
URL: fmt.Sprintf("%s/%s/teams/command_test", ts.URL, model.API_URL_SUFFIX_V4),
|
URL: ts.URL,
|
||||||
Method: model.COMMAND_METHOD_GET,
|
Method: model.COMMAND_METHOD_GET,
|
||||||
Trigger: "getcommand",
|
Trigger: "getcommand",
|
||||||
}
|
}
|
||||||
@@ -501,7 +500,7 @@ func TestExecuteGetCommand(t *testing.T) {
|
|||||||
getCmd := &model.Command{
|
getCmd := &model.Command{
|
||||||
CreatorId: th.BasicUser.Id,
|
CreatorId: th.BasicUser.Id,
|
||||||
TeamId: th.BasicTeam.Id,
|
TeamId: th.BasicTeam.Id,
|
||||||
URL: fmt.Sprintf("%s/%s/teams/command_test", ts.URL, model.API_URL_SUFFIX_V4),
|
URL: ts.URL,
|
||||||
Method: model.COMMAND_METHOD_GET,
|
Method: model.COMMAND_METHOD_GET,
|
||||||
Trigger: "getcommand",
|
Trigger: "getcommand",
|
||||||
Token: token,
|
Token: token,
|
||||||
@@ -556,16 +555,16 @@ func TestExecutePostCommand(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
defer ts.Close()
|
defer ts.Close()
|
||||||
|
|
||||||
getCmd := &model.Command{
|
postCmd := &model.Command{
|
||||||
CreatorId: th.BasicUser.Id,
|
CreatorId: th.BasicUser.Id,
|
||||||
TeamId: th.BasicTeam.Id,
|
TeamId: th.BasicTeam.Id,
|
||||||
URL: fmt.Sprintf("%s/%s/teams/command_test", ts.URL, model.API_URL_SUFFIX_V4),
|
URL: ts.URL,
|
||||||
Method: model.COMMAND_METHOD_POST,
|
Method: model.COMMAND_METHOD_POST,
|
||||||
Trigger: "postcommand",
|
Trigger: "postcommand",
|
||||||
Token: token,
|
Token: token,
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := th.App.CreateCommand(getCmd); err != nil {
|
if _, err := th.App.CreateCommand(postCmd); err != nil {
|
||||||
t.Fatal("failed to create get command")
|
t.Fatal("failed to create get command")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -592,14 +591,29 @@ func TestExecuteCommandAgainstChannelOnAnotherTeam(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true })
|
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true })
|
||||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" })
|
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
*cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost 127.0.0.1"
|
||||||
|
})
|
||||||
|
|
||||||
|
expectedCommandResponse := &model.CommandResponse{
|
||||||
|
Text: "test post command response",
|
||||||
|
ResponseType: model.COMMAND_RESPONSE_TYPE_IN_CHANNEL,
|
||||||
|
Type: "custom_test",
|
||||||
|
Props: map[string]interface{}{"someprop": "somevalue"},
|
||||||
|
}
|
||||||
|
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
w.Write([]byte(expectedCommandResponse.ToJson()))
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
// create a slash command on some other team where we have permission to do so
|
// create a slash command on some other team where we have permission to do so
|
||||||
team2 := th.CreateTeam()
|
team2 := th.CreateTeam()
|
||||||
postCmd := &model.Command{
|
postCmd := &model.Command{
|
||||||
CreatorId: th.BasicUser.Id,
|
CreatorId: th.BasicUser.Id,
|
||||||
TeamId: team2.Id,
|
TeamId: team2.Id,
|
||||||
URL: fmt.Sprintf("http://localhost:%v", th.App.Srv.ListenAddr.Port) + model.API_URL_SUFFIX_V4 + "/teams/command_test",
|
URL: ts.URL,
|
||||||
Method: model.COMMAND_METHOD_POST,
|
Method: model.COMMAND_METHOD_POST,
|
||||||
Trigger: "postcommand",
|
Trigger: "postcommand",
|
||||||
}
|
}
|
||||||
@@ -627,14 +641,29 @@ func TestExecuteCommandAgainstChannelUserIsNotIn(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true })
|
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true })
|
||||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" })
|
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
*cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost 127.0.0.1"
|
||||||
|
})
|
||||||
|
|
||||||
|
expectedCommandResponse := &model.CommandResponse{
|
||||||
|
Text: "test post command response",
|
||||||
|
ResponseType: model.COMMAND_RESPONSE_TYPE_IN_CHANNEL,
|
||||||
|
Type: "custom_test",
|
||||||
|
Props: map[string]interface{}{"someprop": "somevalue"},
|
||||||
|
}
|
||||||
|
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
w.Write([]byte(expectedCommandResponse.ToJson()))
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
// create a slash command on some other team where we have permission to do so
|
// create a slash command on some other team where we have permission to do so
|
||||||
team2 := th.CreateTeam()
|
team2 := th.CreateTeam()
|
||||||
postCmd := &model.Command{
|
postCmd := &model.Command{
|
||||||
CreatorId: th.BasicUser.Id,
|
CreatorId: th.BasicUser.Id,
|
||||||
TeamId: team2.Id,
|
TeamId: team2.Id,
|
||||||
URL: fmt.Sprintf("http://localhost:%v", th.App.Srv.ListenAddr.Port) + model.API_URL_SUFFIX_V4 + "/teams/command_test",
|
URL: ts.URL,
|
||||||
Method: model.COMMAND_METHOD_POST,
|
Method: model.COMMAND_METHOD_POST,
|
||||||
Trigger: "postcommand",
|
Trigger: "postcommand",
|
||||||
}
|
}
|
||||||
@@ -667,14 +696,32 @@ func TestExecuteCommandInDirectMessageChannel(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true })
|
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true })
|
||||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" })
|
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
*cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost 127.0.0.1"
|
||||||
|
})
|
||||||
|
|
||||||
|
// create a team that the user isn't a part of
|
||||||
|
team2 := th.CreateTeam()
|
||||||
|
|
||||||
|
expectedCommandResponse := &model.CommandResponse{
|
||||||
|
Text: "test post command response",
|
||||||
|
ResponseType: model.COMMAND_RESPONSE_TYPE_IN_CHANNEL,
|
||||||
|
Type: "custom_test",
|
||||||
|
Props: map[string]interface{}{"someprop": "somevalue"},
|
||||||
|
}
|
||||||
|
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
require.Equal(t, http.MethodPost, r.Method)
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
w.Write([]byte(expectedCommandResponse.ToJson()))
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
// create a slash command on some other team where we have permission to do so
|
// create a slash command on some other team where we have permission to do so
|
||||||
team2 := th.CreateTeam()
|
|
||||||
postCmd := &model.Command{
|
postCmd := &model.Command{
|
||||||
CreatorId: th.BasicUser.Id,
|
CreatorId: th.BasicUser.Id,
|
||||||
TeamId: team2.Id,
|
TeamId: team2.Id,
|
||||||
URL: fmt.Sprintf("http://localhost:%v", th.App.Srv.ListenAddr.Port) + model.API_URL_SUFFIX_V4 + "/teams/command_test",
|
URL: ts.URL,
|
||||||
Method: model.COMMAND_METHOD_POST,
|
Method: model.COMMAND_METHOD_POST,
|
||||||
Trigger: "postcommand",
|
Trigger: "postcommand",
|
||||||
}
|
}
|
||||||
@@ -709,16 +756,35 @@ func TestExecuteCommandInTeamUserIsNotOn(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}()
|
}()
|
||||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true })
|
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = true })
|
||||||
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost" })
|
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
*cfg.ServiceSettings.AllowedUntrustedInternalConnections = "localhost 127.0.0.1"
|
||||||
|
})
|
||||||
|
|
||||||
// create a team that the user isn't a part of
|
// create a team that the user isn't a part of
|
||||||
team2 := th.CreateTeam()
|
team2 := th.CreateTeam()
|
||||||
|
|
||||||
|
expectedCommandResponse := &model.CommandResponse{
|
||||||
|
Text: "test post command response",
|
||||||
|
ResponseType: model.COMMAND_RESPONSE_TYPE_IN_CHANNEL,
|
||||||
|
Type: "custom_test",
|
||||||
|
Props: map[string]interface{}{"someprop": "somevalue"},
|
||||||
|
}
|
||||||
|
|
||||||
|
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
require.Equal(t, http.MethodPost, r.Method)
|
||||||
|
r.ParseForm()
|
||||||
|
require.Equal(t, team2.Name, r.FormValue("team_domain"))
|
||||||
|
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
w.Write([]byte(expectedCommandResponse.ToJson()))
|
||||||
|
}))
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
// create a slash command on that team
|
// create a slash command on that team
|
||||||
postCmd := &model.Command{
|
postCmd := &model.Command{
|
||||||
CreatorId: th.BasicUser.Id,
|
CreatorId: th.BasicUser.Id,
|
||||||
TeamId: team2.Id,
|
TeamId: team2.Id,
|
||||||
URL: fmt.Sprintf("http://localhost:%v", th.App.Srv.ListenAddr.Port) + model.API_URL_SUFFIX_V4 + "/teams/command_test",
|
URL: ts.URL,
|
||||||
Method: model.COMMAND_METHOD_POST,
|
Method: model.COMMAND_METHOD_POST,
|
||||||
Trigger: "postcommand",
|
Trigger: "postcommand",
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user