From 1f6c271b3bedd6656ae7155714423b1b39a669c1 Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 16 May 2018 13:43:22 -0400 Subject: MM-8708 Remove api package (#8784) * Remove api package * Remove api dependency from cmd package * Remove EnableAPIv3 setting * Update web tests * Add more websocket tests * Move some ws and oauth tests to api4 package * Move command tests into api4 package * Test fixes * Fix msg command test * Add some app file tests --- web/web_test.go | 5 ++-- web/webhook_test.go | 85 ++++++++++++++++++++++++++++++++--------------------- 2 files changed, 53 insertions(+), 37 deletions(-) (limited to 'web') diff --git a/web/web_test.go b/web/web_test.go index 4497f00cc..9b6230013 100644 --- a/web/web_test.go +++ b/web/web_test.go @@ -17,7 +17,7 @@ import ( "github.com/mattermost/mattermost-server/utils" ) -var ApiClient *model.Client +var ApiClient *model.Client4 var URL string type persistentTestStore struct { @@ -58,7 +58,7 @@ func Setup() *TestHelper { NewWeb(a, a.Srv.Router) URL = fmt.Sprintf("http://localhost:%v", a.Srv.ListenAddr.Port) - ApiClient = model.NewClient(URL) + ApiClient = model.NewAPIv4Client(URL) a.DoAdvancedPermissionsMigration() @@ -66,7 +66,6 @@ func Setup() *TestHelper { a.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = true - *cfg.ServiceSettings.EnableAPIv3 = true }) th := &TestHelper{ diff --git a/web/webhook_test.go b/web/webhook_test.go index e625e55bb..48e0a2744 100644 --- a/web/webhook_test.go +++ b/web/webhook_test.go @@ -7,6 +7,7 @@ import ( "bytes" "fmt" "net/http" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -20,7 +21,7 @@ func TestIncomingWebhook(t *testing.T) { defer th.TearDown() if !th.App.Config().ServiceSettings.EnableIncomingWebhooks { - _, err := ApiClient.PostToWebhook("123", "123") + _, err := http.Post(ApiClient.Url+"/hooks/123", "", strings.NewReader("123")) assert.NotNil(t, err, "should have errored - webhooks turned off") return } @@ -28,7 +29,7 @@ func TestIncomingWebhook(t *testing.T) { hook, err := th.App.CreateIncomingWebhookForChannel(th.BasicUser.Id, th.BasicChannel, &model.IncomingWebhook{ChannelId: th.BasicChannel.Id}) require.Nil(t, err) - url := "/hooks/" + hook.Id + url := ApiClient.Url + "/hooks/" + hook.Id tooLongText := "" for i := 0; i < 8200; i++ { @@ -37,55 +38,68 @@ func TestIncomingWebhook(t *testing.T) { t.Run("WebhookBasics", func(t *testing.T) { payload := "payload={\"text\": \"test text\"}" - _, err := ApiClient.DoPost(url, payload, "application/x-www-form-urlencoded") - assert.Nil(t, err) + resp, err := http.Post(url, "application/x-www-form-urlencoded", strings.NewReader(payload)) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) payload = "payload={\"text\": \"\"}" - _, err = ApiClient.DoPost(url, payload, "application/x-www-form-urlencoded") - assert.NotNil(t, err, "should have errored - no text to post") + resp, err = http.Post(url, "application/x-www-form-urlencoded", strings.NewReader(payload)) + require.Nil(t, err) + assert.True(t, resp.StatusCode != http.StatusOK, "should have errored - no text to post") payload = "payload={\"text\": \"test text\", \"channel\": \"junk\"}" - _, err = ApiClient.DoPost(url, payload, "application/x-www-form-urlencoded") - assert.NotNil(t, err, "should have errored - bad channel") + resp, err = http.Post(url, "application/x-www-form-urlencoded", strings.NewReader(payload)) + require.Nil(t, err) + assert.True(t, resp.StatusCode != http.StatusOK, "should have errored - bad channel") payload = "payload={\"text\": \"test text\"}" - _, err = ApiClient.DoPost("/hooks/abc123", payload, "application/x-www-form-urlencoded") - assert.NotNil(t, err, "should have errored - bad hook") + resp, err = http.Post(ApiClient.Url+"/hooks/abc123", "application/x-www-form-urlencoded", strings.NewReader(payload)) + require.Nil(t, err) + assert.True(t, resp.StatusCode != http.StatusOK, "should have errored - bad hook") - _, err = ApiClient.DoPost(url, "{\"text\":\"this is a test\"}", "application/json") - assert.Nil(t, err) + resp, err = http.Post(url, "application/json", strings.NewReader("{\"text\":\"this is a test\"}")) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) text := `this is a \"test\" that contains a newline and a tab` - _, err = ApiClient.DoPost(url, "{\"text\":\""+text+"\"}", "application/json") - assert.Nil(t, err) + resp, err = http.Post(url, "application/json", strings.NewReader("{\"text\":\""+text+"\"}")) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) - _, err = ApiClient.DoPost(url, fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"%s\"}", th.BasicChannel.Name), "application/json") - assert.Nil(t, err) + resp, err = http.Post(url, "application/json", strings.NewReader(fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"%s\"}", th.BasicChannel.Name))) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) - _, err = ApiClient.DoPost(url, fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"#%s\"}", th.BasicChannel.Name), "application/json") - assert.Nil(t, err) + resp, err = http.Post(url, "application/json", strings.NewReader(fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"#%s\"}", th.BasicChannel.Name))) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) - _, err = ApiClient.DoPost(url, fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"@%s\"}", th.BasicUser.Username), "application/json") - assert.Nil(t, err) + resp, err = http.Post(url, "application/json", strings.NewReader(fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"@%s\"}", th.BasicUser.Username))) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) - _, err = ApiClient.DoPost(url, "payload={\"text\":\"this is a test\"}", "application/x-www-form-urlencoded") - assert.Nil(t, err) + resp, err = http.Post(url, "application/x-www-form-urlencoded", strings.NewReader("payload={\"text\":\"this is a test\"}")) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) - _, err = ApiClient.DoPost(url, "payload={\"text\":\""+text+"\"}", "application/x-www-form-urlencoded") + resp, err = http.Post(url, "application/x-www-form-urlencoded", strings.NewReader("payload={\"text\":\""+text+"\"}")) assert.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) - _, err = ApiClient.DoPost(url, "{\"text\":\""+tooLongText+"\"}", "application/json") - assert.Nil(t, err) + resp, err = http.Post(url, "application/json", strings.NewReader("{\"text\":\""+tooLongText+"\"}")) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) payloadMultiPart := "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"username\"\r\n\r\nwebhook-bot\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\nthis is a test :tada:\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--" - _, err = ApiClient.DoPost("/hooks/"+hook.Id, payloadMultiPart, "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW") - assert.Nil(t, err) + resp, err = http.Post(ApiClient.Url+"/hooks/"+hook.Id, "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", strings.NewReader(payloadMultiPart)) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) }) t.Run("WebhookExperimentReadOnly", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalTownSquareIsReadOnly = false }) - _, err := ApiClient.DoPost(url, fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"%s\"}", model.DEFAULT_CHANNEL), "application/json") + _, err := http.Post(url, "application/json", strings.NewReader(fmt.Sprintf("{\"text\":\"this is a test\", \"channel\":\"%s\"}", model.DEFAULT_CHANNEL))) assert.Nil(t, err, "Not read only") th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalTownSquareIsReadOnly = true }) @@ -126,8 +140,9 @@ func TestIncomingWebhook(t *testing.T) { ] }` - _, err := ApiClient.DoPost(url, attachmentPayload, "application/json") - assert.Nil(t, err) + resp, err := http.Post(url, "application/json", strings.NewReader(attachmentPayload)) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) attachmentPayload = `{ "text": "this is a test", @@ -162,14 +177,16 @@ func TestIncomingWebhook(t *testing.T) { ] }` - _, err = ApiClient.DoPost(url, attachmentPayload, "application/json") - assert.Nil(t, err) + resp, err = http.Post(url, "application/json", strings.NewReader(attachmentPayload)) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusOK) }) t.Run("DisableWebhooks", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.EnableIncomingWebhooks = false }) - _, err := ApiClient.DoPost(url, "{\"text\":\"this is a test\"}", "application/json") - assert.NotNil(t, err) + resp, err := http.Post(url, "application/json", strings.NewReader("{\"text\":\"this is a test\"}")) + require.Nil(t, err) + assert.True(t, resp.StatusCode == http.StatusNotImplemented) }) } -- cgit v1.2.3-1-g7c22