diff options
author | Joram Wilander <jwawilander@gmail.com> | 2018-05-14 10:24:58 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-14 10:24:58 -0400 |
commit | 47250c6629416b628a19e5571ac89f7b4646418c (patch) | |
tree | 0ccfd50e06af7293e0f9e27c2d1c1200efa78a6a /web/web_test.go | |
parent | 7e7c55198719337e7cb39b07c0d5a48c0a6908de (diff) | |
download | chat-47250c6629416b628a19e5571ac89f7b4646418c.tar.gz chat-47250c6629416b628a19e5571ac89f7b4646418c.tar.bz2 chat-47250c6629416b628a19e5571ac89f7b4646418c.zip |
Refactor context out of API packages (#8755)
* Refactor context out of API packages
* Update function names per feedback
* Move webhook handlers to web and fix web tests
* Move more webhook tests out of api package
* Fix static handler
Diffstat (limited to 'web/web_test.go')
-rw-r--r-- | web/web_test.go | 99 |
1 files changed, 33 insertions, 66 deletions
diff --git a/web/web_test.go b/web/web_test.go index 12099709e..4497f00cc 100644 --- a/web/web_test.go +++ b/web/web_test.go @@ -8,8 +8,6 @@ import ( "os" "testing" - "github.com/mattermost/mattermost-server/api" - "github.com/mattermost/mattermost-server/api4" "github.com/mattermost/mattermost-server/app" "github.com/mattermost/mattermost-server/mlog" "github.com/mattermost/mattermost-server/model" @@ -38,7 +36,14 @@ func StopTestStore() { } } -func Setup() *app.App { +type TestHelper struct { + App *app.App + BasicUser *model.User + BasicChannel *model.Channel + BasicTeam *model.Team +} + +func Setup() *TestHelper { a, err := app.New(app.StoreOverride(testStore), app.DisableConfigWatch) if err != nil { panic(err) @@ -50,9 +55,8 @@ func Setup() *app.App { panic(serverErr) } a.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.ListenAddress = prevListenAddress }) - api4.Init(a, a.Srv.Router, false) - api3 := api.Init(a, a.Srv.Router) - Init(api3) + + NewWeb(a, a.Srv.Router) URL = fmt.Sprintf("http://localhost:%v", a.Srv.ListenAddr.Port) ApiClient = model.NewClient(URL) @@ -65,11 +69,31 @@ func Setup() *app.App { *cfg.ServiceSettings.EnableAPIv3 = true }) - return a + th := &TestHelper{ + App: a, + } + + return th +} + +func (th *TestHelper) InitBasic() *TestHelper { + user, _ := th.App.CreateUser(&model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1", EmailVerified: true, Roles: model.SYSTEM_ADMIN_ROLE_ID}) + + team, _ := th.App.CreateTeam(&model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: user.Email, Type: model.TEAM_OPEN}) + + th.App.JoinUserToTeam(team, user, "") + + channel, _ := th.App.CreateChannel(&model.Channel{DisplayName: "Test API Name", Name: "zz" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id, CreatorId: user.Id}, true) + + th.BasicUser = user + th.BasicChannel = channel + th.BasicTeam = team + + return th } -func TearDown(a *app.App) { - a.Shutdown() +func (th *TestHelper) TearDown() { + th.App.Shutdown() if err := recover(); err != nil { StopTestStore() panic(err) @@ -93,63 +117,6 @@ func TestStatic(t *testing.T) { } */ -func TestIncomingWebhook(t *testing.T) { - a := Setup() - defer TearDown(a) - - user := &model.User{Email: model.NewId() + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} - user = ApiClient.Must(ApiClient.CreateUser(user, "")).Data.(*model.User) - store.Must(a.Srv.Store.User().VerifyEmail(user.Id)) - - ApiClient.Login(user.Email, "passwd1") - - team := &model.Team{DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Email: "test@nowhere.com", Type: model.TEAM_OPEN} - team = ApiClient.Must(ApiClient.CreateTeam(team)).Data.(*model.Team) - - a.JoinUserToTeam(team, user, "") - - a.UpdateUserRoles(user.Id, model.SYSTEM_ADMIN_ROLE_ID, false) - ApiClient.SetTeamId(team.Id) - - channel1 := &model.Channel{DisplayName: "Test API Name", Name: "zz" + model.NewId() + "a", Type: model.CHANNEL_OPEN, TeamId: team.Id} - channel1 = ApiClient.Must(ApiClient.CreateChannel(channel1)).Data.(*model.Channel) - - if a.Config().ServiceSettings.EnableIncomingWebhooks { - hook1 := &model.IncomingWebhook{ChannelId: channel1.Id} - hook1 = ApiClient.Must(ApiClient.CreateIncomingWebhook(hook1)).Data.(*model.IncomingWebhook) - - payload := "payload={\"text\": \"test text\"}" - if _, err := ApiClient.PostToWebhook(hook1.Id, payload); err != nil { - t.Fatal(err) - } - - payload = "payload={\"text\": \"\"}" - if _, err := ApiClient.PostToWebhook(hook1.Id, payload); err == nil { - t.Fatal("should have errored - no text to post") - } - - payload = "payload={\"text\": \"test text\", \"channel\": \"junk\"}" - if _, err := ApiClient.PostToWebhook(hook1.Id, payload); err == nil { - t.Fatal("should have errored - bad channel") - } - - payload = "payload={\"text\": \"test text\"}" - if _, err := ApiClient.PostToWebhook("abc123", payload); err == nil { - t.Fatal("should have errored - bad hook") - } - - 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--" - if _, err := ApiClient.DoPost("/hooks/"+hook1.Id, payloadMultiPart, "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"); err != nil { - t.Fatal("should have errored - bad hook") - } - - } else { - if _, err := ApiClient.PostToWebhook("123", "123"); err == nil { - t.Fatal("should have failed - webhooks turned off") - } - } -} - func TestMain(m *testing.M) { // Setup a global logger to catch tests logging outside of app context // The global logger will be stomped by apps initalizing but that's fine for testing. Ideally this won't happen. |