From 6c82605df043b2256d367964fb320a0e5faef8d3 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Tue, 6 Jun 2023 23:29:29 +0200 Subject: [PATCH] [MM-49989] Pass a context.Context to Client4 methods (#22922) * Migrate all method in model/client4.go to accept a context.Context * Fix th.*Client * Fix remaining issues * Empty commit to triger CI * Fix test * Add cancellation test * Test that returned error is context.Canceled * Fix bad merge * Update mmctl code --------- Co-authored-by: Mattermost Build --- server/channels/api4/apitestlib.go | 28 +- server/channels/api4/bleve_test.go | 9 +- server/channels/api4/bot_test.go | 243 +- server/channels/api4/brand_test.go | 29 +- server/channels/api4/channel_category_test.go | 99 +- server/channels/api4/channel_test.go | 1276 +++++----- server/channels/api4/cloud_test.go | 93 +- server/channels/api4/cluster_test.go | 7 +- server/channels/api4/command_help_test.go | 5 +- server/channels/api4/command_test.go | 191 +- server/channels/api4/commands_test.go | 121 +- server/channels/api4/config_test.go | 165 +- server/channels/api4/data_retention_test.go | 3 +- server/channels/api4/drafts_test.go | 31 +- server/channels/api4/elasticsearch_test.go | 15 +- server/channels/api4/emoji_test.go | 165 +- server/channels/api4/export_test.go | 31 +- server/channels/api4/file_test.go | 143 +- server/channels/api4/group_test.go | 380 +-- server/channels/api4/hosted_customer_test.go | 21 +- server/channels/api4/import_test.go | 15 +- server/channels/api4/insights_test.go | 187 +- .../channels/api4/integration_action_test.go | 25 +- server/channels/api4/job_test.go | 63 +- server/channels/api4/ldap_test.go | 57 +- server/channels/api4/license_test.go | 73 +- server/channels/api4/notify_admin_test.go | 23 +- server/channels/api4/oauth_test.go | 183 +- server/channels/api4/openGraph_test.go | 5 +- server/channels/api4/permissions_test.go | 7 +- server/channels/api4/plugin_test.go | 253 +- server/channels/api4/post_test.go | 818 +++---- server/channels/api4/preference_test.go | 167 +- server/channels/api4/reaction_test.go | 101 +- server/channels/api4/resolver_channel_test.go | 7 +- .../api4/resolver_sidebar_categories_test.go | 3 +- .../api4/resolver_team_member_test.go | 3 +- server/channels/api4/resolver_test.go | 7 +- server/channels/api4/resolver_user_test.go | 5 +- server/channels/api4/role_test.go | 50 +- server/channels/api4/saml_test.go | 7 +- server/channels/api4/scheme_test.go | 230 +- server/channels/api4/shared_channel_test.go | 25 +- server/channels/api4/status_test.go | 65 +- server/channels/api4/system_test.go | 197 +- server/channels/api4/team_test.go | 846 +++---- server/channels/api4/terms_of_service_test.go | 9 +- server/channels/api4/upload_test.go | 65 +- server/channels/api4/usage_test.go | 17 +- server/channels/api4/user_test.go | 1563 ++++++------- server/channels/api4/user_viewmembers_test.go | 13 +- server/channels/api4/webhook_test.go | 337 +-- server/channels/api4/websocket_test.go | 11 +- .../app/slashcommands/auto_environment.go | 9 +- .../channels/app/slashcommands/auto_teams.go | 4 +- .../channels/app/slashcommands/auto_users.go | 7 +- .../app/slashcommands/command_loadtest.go | 7 +- .../channels/manualtesting/manual_testing.go | 5 +- .../channels/manualtesting/test_autolink.go | 3 +- server/channels/web/oauth_test.go | 84 +- server/cmd/mmctl/client/client.go | 271 +-- server/cmd/mmctl/commands/auth.go | 17 +- server/cmd/mmctl/commands/bot.go | 19 +- server/cmd/mmctl/commands/bot_test.go | 129 +- server/cmd/mmctl/commands/channel.go | 31 +- server/cmd/mmctl/commands/channel_test.go | 437 ++-- server/cmd/mmctl/commands/channel_users.go | 9 +- .../cmd/mmctl/commands/channel_users_test.go | 81 +- server/cmd/mmctl/commands/channelargs.go | 9 +- server/cmd/mmctl/commands/channelargs_test.go | 15 +- server/cmd/mmctl/commands/command.go | 13 +- server/cmd/mmctl/commands/command_e2e_test.go | 3 +- server/cmd/mmctl/commands/command_test.go | 125 +- server/cmd/mmctl/commands/commandargs.go | 7 +- server/cmd/mmctl/commands/config.go | 25 +- server/cmd/mmctl/commands/config_test.go | 87 +- server/cmd/mmctl/commands/export.go | 15 +- server/cmd/mmctl/commands/export_test.go | 11 +- server/cmd/mmctl/commands/extract.go | 5 +- server/cmd/mmctl/commands/extract_e2e_test.go | 5 +- server/cmd/mmctl/commands/group.go | 21 +- server/cmd/mmctl/commands/group_test.go | 231 +- server/cmd/mmctl/commands/import.go | 27 +- server/cmd/mmctl/commands/import_e2e_test.go | 5 +- server/cmd/mmctl/commands/import_test.go | 19 +- server/cmd/mmctl/commands/init.go | 21 +- server/cmd/mmctl/commands/init_test.go | 3 +- server/cmd/mmctl/commands/integrity.go | 3 +- server/cmd/mmctl/commands/integrity_test.go | 7 +- server/cmd/mmctl/commands/ldap.go | 5 +- server/cmd/mmctl/commands/ldap_test.go | 13 +- server/cmd/mmctl/commands/license.go | 7 +- server/cmd/mmctl/commands/license_test.go | 11 +- server/cmd/mmctl/commands/logs.go | 3 +- server/cmd/mmctl/commands/logs_test.go | 7 +- .../mmctl/commands/permission_role_test.go | 73 +- server/cmd/mmctl/commands/permissions.go | 13 +- server/cmd/mmctl/commands/permissions_role.go | 9 +- server/cmd/mmctl/commands/permissions_test.go | 33 +- server/cmd/mmctl/commands/plugin.go | 15 +- .../cmd/mmctl/commands/plugin_marketplace.go | 6 +- .../mmctl/commands/plugin_marketplace_test.go | 18 +- server/cmd/mmctl/commands/plugin_test.go | 57 +- server/cmd/mmctl/commands/post.go | 11 +- server/cmd/mmctl/commands/post_test.go | 31 +- server/cmd/mmctl/commands/roles.go | 5 +- server/cmd/mmctl/commands/roles_test.go | 33 +- server/cmd/mmctl/commands/saml.go | 3 +- server/cmd/mmctl/commands/saml_test.go | 8 +- server/cmd/mmctl/commands/sampledata.go | 9 +- server/cmd/mmctl/commands/system.go | 11 +- server/cmd/mmctl/commands/system_test.go | 21 +- server/cmd/mmctl/commands/team.go | 17 +- server/cmd/mmctl/commands/team_e2e_test.go | 9 +- server/cmd/mmctl/commands/team_test.go | 97 +- server/cmd/mmctl/commands/team_users.go | 5 +- server/cmd/mmctl/commands/team_users_test.go | 75 +- server/cmd/mmctl/commands/teamargs.go | 9 +- server/cmd/mmctl/commands/teamargs_test.go | 15 +- server/cmd/mmctl/commands/token.go | 7 +- server/cmd/mmctl/commands/token_test.go | 49 +- server/cmd/mmctl/commands/user.go | 47 +- server/cmd/mmctl/commands/user_test.go | 425 ++-- server/cmd/mmctl/commands/userargs.go | 13 +- server/cmd/mmctl/commands/userargs_test.go | 19 +- server/cmd/mmctl/commands/webhook.go | 32 +- server/cmd/mmctl/commands/webhook_test.go | 89 +- server/cmd/mmctl/mocks/client_mock.go | 1081 ++++----- server/playbooks/client/doc_test.go | 2 +- server/playbooks/client/playbook_runs_test.go | 6 +- server/playbooks/client/playbooks_test.go | 6 +- server/playbooks/server/api_actions_test.go | 4 +- server/playbooks/server/api_bot_test.go | 5 +- server/playbooks/server/api_general_test.go | 3 +- .../playbooks/server/api_graphql_runs_test.go | 10 +- server/playbooks/server/api_playbooks_test.go | 6 +- server/playbooks/server/api_runs_test.go | 18 +- server/playbooks/server/main_test.go | 36 +- server/public/model/client4.go | 2049 +++++++++-------- server/public/model/client4_test.go | 51 +- 140 files changed, 7516 insertions(+), 7333 deletions(-) diff --git a/server/channels/api4/apitestlib.go b/server/channels/api4/apitestlib.go index edcdc067d7..5c2679a2cb 100644 --- a/server/channels/api4/apitestlib.go +++ b/server/channels/api4/apitestlib.go @@ -478,7 +478,7 @@ func (th *TestHelper) InitBasic() *TestHelper { th.App.AddUserToChannel(th.Context, th.BasicUser, th.BasicDeletedChannel, false) th.App.AddUserToChannel(th.Context, th.BasicUser2, th.BasicDeletedChannel, false) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId, false) - th.Client.DeleteChannel(th.BasicDeletedChannel.Id) + th.Client.DeleteChannel(context.Background(), th.BasicDeletedChannel.Id) th.LoginBasic() th.Group = th.CreateGroup() @@ -552,7 +552,7 @@ func (th *TestHelper) CreateBotWithClient(client *model.Client4) *model.Bot { Description: "bot", } - rbot, _, err := client.CreateBot(bot) + rbot, _, err := client.CreateBot(context.Background(), bot) if err != nil { panic(err) } @@ -576,7 +576,7 @@ func (th *TestHelper) CreateTeamWithClient(client *model.Client4) *model.Team { Type: model.TeamOpen, } - rteam, _, err := client.CreateTeam(team) + rteam, _, err := client.CreateTeam(context.Background(), team) if err != nil { panic(err) } @@ -595,7 +595,7 @@ func (th *TestHelper) CreateUserWithClient(client *model.Client4) *model.User { Password: "Pa$$word11", } - ruser, _, err := client.CreateUser(user) + ruser, _, err := client.CreateUser(context.Background(), user) if err != nil { panic(err) } @@ -696,7 +696,7 @@ func (th *TestHelper) CreateChannelWithClientAndTeam(client *model.Client4, chan TeamId: teamId, } - rchannel, _, err := client.CreateChannel(channel) + rchannel, _, err := client.CreateChannel(context.Background(), channel) if err != nil { panic(err) } @@ -735,7 +735,7 @@ func (th *TestHelper) CreatePostWithFilesWithClient(client *model.Client4, chann FileIds: fileIds, } - rpost, _, err := client.CreatePost(post) + rpost, _, err := client.CreatePost(context.Background(), post) if err != nil { panic(err) } @@ -750,7 +750,7 @@ func (th *TestHelper) CreatePostWithClient(client *model.Client4, channel *model Message: "message_" + id, } - rpost, _, err := client.CreatePost(post) + rpost, _, err := client.CreatePost(context.Background(), post) if err != nil { panic(err) } @@ -766,7 +766,7 @@ func (th *TestHelper) CreatePinnedPostWithClient(client *model.Client4, channel IsPinned: true, } - rpost, _, err := client.CreatePost(post) + rpost, _, err := client.CreatePost(context.Background(), post) if err != nil { panic(err) } @@ -779,7 +779,7 @@ func (th *TestHelper) CreateMessagePostWithClient(client *model.Client4, channel Message: message, } - rpost, _, err := client.CreatePost(post) + rpost, _, err := client.CreatePost(context.Background(), post) if err != nil { panic(err) } @@ -837,7 +837,7 @@ func (th *TestHelper) LoginSystemManager() { } func (th *TestHelper) LoginBasicWithClient(client *model.Client4) { - _, _, err := client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, _, err := client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) if err != nil { panic(err) } @@ -851,28 +851,28 @@ func (th *TestHelper) LoginBasicWithGraphQL() { } func (th *TestHelper) LoginBasic2WithClient(client *model.Client4) { - _, _, err := client.Login(th.BasicUser2.Email, th.BasicUser2.Password) + _, _, err := client.Login(context.Background(), th.BasicUser2.Email, th.BasicUser2.Password) if err != nil { panic(err) } } func (th *TestHelper) LoginTeamAdminWithClient(client *model.Client4) { - _, _, err := client.Login(th.TeamAdminUser.Email, th.TeamAdminUser.Password) + _, _, err := client.Login(context.Background(), th.TeamAdminUser.Email, th.TeamAdminUser.Password) if err != nil { panic(err) } } func (th *TestHelper) LoginSystemManagerWithClient(client *model.Client4) { - _, _, err := client.Login(th.SystemManagerUser.Email, th.SystemManagerUser.Password) + _, _, err := client.Login(context.Background(), th.SystemManagerUser.Email, th.SystemManagerUser.Password) if err != nil { panic(err) } } func (th *TestHelper) LoginSystemAdminWithClient(client *model.Client4) { - _, _, err := client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + _, _, err := client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) if err != nil { panic(err) } diff --git a/server/channels/api4/bleve_test.go b/server/channels/api4/bleve_test.go index e6a8e24a5d..281d6daf1e 100644 --- a/server/channels/api4/bleve_test.go +++ b/server/channels/api4/bleve_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/require" @@ -16,7 +17,7 @@ func TestBlevePurgeIndexes(t *testing.T) { defer th.TearDown() t.Run("as system user", func(t *testing.T) { - resp, err := th.Client.PurgeBleveIndexes() + resp, err := th.Client.PurgeBleveIndexes(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -24,13 +25,13 @@ func TestBlevePurgeIndexes(t *testing.T) { t.Run("as system user with write experimental permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionPurgeBleveIndexes.Id, model.SystemUserRoleId) defer th.RemovePermissionFromRole(model.PermissionSysconsoleWriteExperimental.Id, model.SystemUserRoleId) - resp, err := th.Client.PurgeBleveIndexes() + resp, err := th.Client.PurgeBleveIndexes(context.Background()) require.NoError(t, err) CheckOKStatus(t, resp) }) t.Run("as system admin", func(t *testing.T) { - resp, err := th.SystemAdminClient.PurgeBleveIndexes() + resp, err := th.SystemAdminClient.PurgeBleveIndexes(context.Background()) require.NoError(t, err) CheckOKStatus(t, resp) }) @@ -38,7 +39,7 @@ func TestBlevePurgeIndexes(t *testing.T) { t.Run("as restricted system admin", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := th.SystemAdminClient.PurgeBleveIndexes() + resp, err := th.SystemAdminClient.PurgeBleveIndexes(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) diff --git a/server/channels/api4/bot_test.go b/server/channels/api4/bot_test.go index aefb12ee78..e0a705aafe 100644 --- a/server/channels/api4/bot_test.go +++ b/server/channels/api4/bot_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "io" "strings" @@ -23,7 +24,7 @@ func TestCreateBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - _, _, err := th.Client.CreateBot(&model.Bot{ + _, _, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -40,7 +41,7 @@ func TestCreateBot(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) th.App.Config().ServiceSettings.EnableBotAccountCreation = model.NewBool(false) - _, _, err := th.Client.CreateBot(&model.Bot{ + _, _, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -66,7 +67,7 @@ func TestCreateBot(t *testing.T) { Description: "bot", } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) @@ -86,7 +87,7 @@ func TestCreateBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - _, _, err := th.Client.CreateBot(&model.Bot{ + _, _, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: "username", DisplayName: "a bot", Description: strings.Repeat("x", 1025), @@ -108,7 +109,7 @@ func TestCreateBot(t *testing.T) { th.AddPermissionToRole(model.PermissionEditOtherUsers.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - bot, resp, err := th.Client.CreateBot(&model.Bot{ + bot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -118,11 +119,11 @@ func TestCreateBot(t *testing.T) { defer th.App.PermanentDeleteBot(bot.UserId) th.App.UpdateUserRoles(th.Context, bot.UserId, model.TeamUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - rtoken, _, err := th.Client.CreateUserAccessToken(bot.UserId, "test token") + rtoken, _, err := th.Client.CreateUserAccessToken(context.Background(), bot.UserId, "test token") require.NoError(t, err) th.Client.AuthToken = rtoken.Token - _, _, err = th.Client.CreateBot(&model.Bot{ + _, _, err = th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), OwnerId: bot.UserId, DisplayName: "a bot2", @@ -140,7 +141,7 @@ func TestPatchBot(t *testing.T) { defer th.RestoreDefaultRolePermissions(th.SaveDefaultRolePermissions()) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.PatchBot(model.NewId(), &model.BotPatch{}) + _, resp, err := client.PatchBot(context.Background(), model.NewId(), &model.BotPatch{}) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -157,7 +158,7 @@ func TestPatchBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot created by a user", @@ -172,7 +173,7 @@ func TestPatchBot(t *testing.T) { DisplayName: sToP("an updated bot"), Description: sToP("updated bot"), } - patchedBot, patchResp, err2 := client.PatchBot(createdBot.UserId, botPatch) + patchedBot, patchResp, err2 := client.PatchBot(context.Background(), createdBot.UserId, botPatch) require.NoError(t, err2) CheckOKStatus(t, patchResp) require.Equal(t, *botPatch.Username, patchedBot.Username) @@ -181,7 +182,7 @@ func TestPatchBot(t *testing.T) { require.Equal(t, th.BasicUser.Id, patchedBot.OwnerId) }, "bot created by user") - createdBotSystemAdmin, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBotSystemAdmin, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "another bot", Description: "bot created by system admin user", @@ -196,7 +197,7 @@ func TestPatchBot(t *testing.T) { DisplayName: sToP("an updated bot"), Description: sToP("updated bot"), } - patchedBot, patchResp, err := client.PatchBot(createdBotSystemAdmin.UserId, botPatch) + patchedBot, patchResp, err := client.PatchBot(context.Background(), createdBotSystemAdmin.UserId, botPatch) require.NoError(t, err) CheckOKStatus(t, patchResp) require.Equal(t, *botPatch.Username, patchedBot.Username) @@ -215,7 +216,7 @@ func TestPatchBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -224,7 +225,7 @@ func TestPatchBot(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - _, _, err = th.Client.PatchBot(createdBot.UserId, &model.BotPatch{}) + _, _, err = th.Client.PatchBot(context.Background(), createdBot.UserId, &model.BotPatch{}) CheckErrorID(t, err, "store.sql_bot.get.missing.app_error") }) @@ -239,7 +240,7 @@ func TestPatchBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -248,7 +249,7 @@ func TestPatchBot(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - _, _, err = th.Client.PatchBot(createdBot.UserId, &model.BotPatch{}) + _, _, err = th.Client.PatchBot(context.Background(), createdBot.UserId, &model.BotPatch{}) CheckErrorID(t, err, "api.context.permissions.app_error") }) @@ -263,7 +264,7 @@ func TestPatchBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -278,7 +279,7 @@ func TestPatchBot(t *testing.T) { Description: sToP("updated bot"), } - patchedBot, resp, err := th.Client.PatchBot(createdBot.UserId, botPatch) + patchedBot, resp, err := th.Client.PatchBot(context.Background(), createdBot.UserId, botPatch) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, *botPatch.Username, patchedBot.Username) @@ -293,11 +294,11 @@ func TestPatchBot(t *testing.T) { th.AddPermissionToRole(model.PermissionManageRoles.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - resp, err = th.Client.UpdateUserRoles(createdBot.UserId, model.SystemUserRoleId) + resp, err = th.Client.UpdateUserRoles(context.Background(), createdBot.UserId, model.SystemUserRoleId) require.NoError(t, err) CheckOKStatus(t, resp) - bot, resp, err := th.Client.GetBot(createdBot.UserId, "") + bot, resp, err := th.Client.GetBot(context.Background(), createdBot.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, patchedBot, bot) @@ -314,7 +315,7 @@ func TestPatchBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -329,7 +330,7 @@ func TestPatchBot(t *testing.T) { Description: sToP("updated bot"), } - _, _, err = th.Client.PatchBot(createdBot.UserId, botPatch) + _, _, err = th.Client.PatchBot(context.Background(), createdBot.UserId, botPatch) CheckErrorID(t, err, "store.sql_bot.get.missing.app_error") }) @@ -345,7 +346,7 @@ func TestPatchBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -360,7 +361,7 @@ func TestPatchBot(t *testing.T) { Description: sToP("updated bot"), } - _, _, err = th.Client.PatchBot(createdBot.UserId, botPatch) + _, _, err = th.Client.PatchBot(context.Background(), createdBot.UserId, botPatch) CheckErrorID(t, err, "api.context.permissions.app_error") }) @@ -376,7 +377,7 @@ func TestPatchBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -391,7 +392,7 @@ func TestPatchBot(t *testing.T) { Description: sToP("updated bot"), } - patchedBot, resp, err := th.Client.PatchBot(createdBot.UserId, botPatch) + patchedBot, resp, err := th.Client.PatchBot(context.Background(), createdBot.UserId, botPatch) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, *botPatch.Username, patchedBot.Username) @@ -418,7 +419,7 @@ func TestPatchBot(t *testing.T) { Description: "bot", } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) @@ -427,7 +428,7 @@ func TestPatchBot(t *testing.T) { Username: sToP(GenerateTestUsername()), } - patchedBot, resp, err := th.Client.PatchBot(createdBot.UserId, botPatch) + patchedBot, resp, err := th.Client.PatchBot(context.Background(), createdBot.UserId, botPatch) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, *botPatch.Username, patchedBot.Username) @@ -448,7 +449,7 @@ func TestPatchBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -457,7 +458,7 @@ func TestPatchBot(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - r, err := th.Client.DoAPIPut("/bots/"+createdBot.UserId, `{"creator_id":"`+th.BasicUser2.Id+`"}`) + r, err := th.Client.DoAPIPut(context.Background(), "/bots/"+createdBot.UserId, `{"creator_id":"`+th.BasicUser2.Id+`"}`) require.NoError(t, err) defer func() { _, _ = io.ReadAll(r.Body) @@ -482,7 +483,7 @@ func TestGetBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - bot1, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot1, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "the first bot", @@ -491,7 +492,7 @@ func TestGetBot(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot1.UserId) - bot2, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot2, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "another bot", Description: "the second bot", @@ -500,14 +501,14 @@ func TestGetBot(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot2.UserId) - deletedBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + deletedBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), Description: "a deleted bot", }) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(deletedBot.UserId) - deletedBot, resp, err = th.SystemAdminClient.DisableBot(deletedBot.UserId) + deletedBot, resp, err = th.SystemAdminClient.DisableBot(context.Background(), deletedBot.UserId) require.NoError(t, err) CheckOKStatus(t, resp) @@ -517,7 +518,7 @@ func TestGetBot(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - myBot, resp, err := th.Client.CreateBot(&model.Bot{ + myBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "my bot", Description: "a bot created by non-admin", @@ -534,7 +535,7 @@ func TestGetBot(t *testing.T) { th.AddPermissionToRole(model.PermissionReadOthersBots.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - _, resp, err := th.Client.GetBot(model.NewId(), "") + _, resp, err := th.Client.GetBot(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -546,12 +547,12 @@ func TestGetBot(t *testing.T) { th.AddPermissionToRole(model.PermissionReadOthersBots.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - bot, resp, err := th.Client.GetBot(bot1.UserId, "") + bot, resp, err := th.Client.GetBot(context.Background(), bot1.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, bot1, bot) - bot, resp, _ = th.Client.GetBot(bot1.UserId, bot.Etag()) + bot, resp, _ = th.Client.GetBot(context.Background(), bot1.UserId, bot.Etag()) CheckEtag(t, bot, resp) }) @@ -562,12 +563,12 @@ func TestGetBot(t *testing.T) { th.AddPermissionToRole(model.PermissionReadOthersBots.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - bot, resp, err := th.Client.GetBot(bot2.UserId, "") + bot, resp, err := th.Client.GetBot(context.Background(), bot2.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, bot2, bot) - bot, resp, _ = th.Client.GetBot(bot2.UserId, bot.Etag()) + bot, resp, _ = th.Client.GetBot(context.Background(), bot2.UserId, bot.Etag()) CheckEtag(t, bot, resp) }) @@ -580,7 +581,7 @@ func TestGetBot(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - _, _, err := th.Client.GetBot(bot1.UserId, "") + _, _, err := th.Client.GetBot(context.Background(), bot1.UserId, "") CheckErrorID(t, err, "store.sql_bot.get.missing.app_error") }) @@ -592,7 +593,7 @@ func TestGetBot(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - _, _, err := th.Client.GetBot(myBot.UserId, "") + _, _, err := th.Client.GetBot(context.Background(), myBot.UserId, "") CheckErrorID(t, err, "store.sql_bot.get.missing.app_error") }) @@ -603,7 +604,7 @@ func TestGetBot(t *testing.T) { th.AddPermissionToRole(model.PermissionReadOthersBots.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - _, resp, err := th.Client.GetBot(deletedBot.UserId, "") + _, resp, err := th.Client.GetBot(context.Background(), deletedBot.UserId, "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -615,7 +616,7 @@ func TestGetBot(t *testing.T) { th.AddPermissionToRole(model.PermissionReadOthersBots.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - bot, resp, err := th.Client.GetBotIncludeDeleted(deletedBot.UserId, "") + bot, resp, err := th.Client.GetBotIncludeDeleted(context.Background(), deletedBot.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.NotEqual(t, 0, bot.DeleteAt) @@ -623,7 +624,7 @@ func TestGetBot(t *testing.T) { deletedBot.DeleteAt = bot.DeleteAt require.Equal(t, deletedBot, bot) - bot, resp, _ = th.Client.GetBotIncludeDeleted(deletedBot.UserId, bot.Etag()) + bot, resp, _ = th.Client.GetBotIncludeDeleted(context.Background(), deletedBot.UserId, bot.Etag()) CheckEtag(t, bot, resp) }) } @@ -636,7 +637,7 @@ func TestGetBots(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - bot1, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot1, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "the first bot", @@ -645,18 +646,18 @@ func TestGetBots(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot1.UserId) - deletedBot1, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + deletedBot1, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), Description: "a deleted bot", }) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(deletedBot1.UserId) - deletedBot1, resp, err = th.SystemAdminClient.DisableBot(deletedBot1.UserId) + deletedBot1, resp, err = th.SystemAdminClient.DisableBot(context.Background(), deletedBot1.UserId) require.NoError(t, err) CheckOKStatus(t, resp) - bot2, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot2, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "another bot", Description: "the second bot", @@ -665,7 +666,7 @@ func TestGetBots(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot2.UserId) - bot3, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot3, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "another bot", Description: "the third bot", @@ -674,21 +675,21 @@ func TestGetBots(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot3.UserId) - deletedBot2, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + deletedBot2, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), Description: "a deleted bot", }) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(deletedBot2.UserId) - deletedBot2, resp, err = th.SystemAdminClient.DisableBot(deletedBot2.UserId) + deletedBot2, resp, err = th.SystemAdminClient.DisableBot(context.Background(), deletedBot2.UserId) require.NoError(t, err) CheckOKStatus(t, resp) th.AddPermissionToRole(model.PermissionCreateBot.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser2.Id, model.TeamUserRoleId, false) th.LoginBasic2() - orphanedBot, resp, err := th.Client.CreateBot(&model.Bot{ + orphanedBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), Description: "an orphaned bot", }) @@ -700,7 +701,7 @@ func TestGetBots(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.DisableBotsWhenOwnerIsDeactivated = false }) - resp, err = th.SystemAdminClient.DeleteUser(th.BasicUser2.Id) + resp, err = th.SystemAdminClient.DeleteUser(context.Background(), th.BasicUser2.Id) require.NoError(t, err) CheckOKStatus(t, resp) @@ -713,14 +714,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{bot1, bot2, bot3, orphanedBot} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBots(0, 10, "") + bots, resp, err := client.GetBots(context.Background(), 0, 10, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBots(0, 10, botList.Etag()) + bots, resp, _ := th.Client.GetBots(context.Background(), 0, 10, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -733,14 +734,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{bot1} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBots(0, 1, "") + bots, resp, err := client.GetBots(context.Background(), 0, 1, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBots(0, 1, botList.Etag()) + bots, resp, _ := th.Client.GetBots(context.Background(), 0, 1, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -753,14 +754,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{bot3, orphanedBot} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBots(1, 2, "") + bots, resp, err := client.GetBots(context.Background(), 1, 2, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBots(1, 2, botList.Etag()) + bots, resp, _ := th.Client.GetBots(context.Background(), 1, 2, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -773,14 +774,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBots(2, 2, "") + bots, resp, err := client.GetBots(context.Background(), 2, 2, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBots(2, 2, botList.Etag()) + bots, resp, _ := th.Client.GetBots(context.Background(), 2, 2, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -793,14 +794,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{bot1, deletedBot1, bot2, bot3, deletedBot2, orphanedBot} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBotsIncludeDeleted(0, 10, "") + bots, resp, err := client.GetBotsIncludeDeleted(context.Background(), 0, 10, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBotsIncludeDeleted(0, 10, botList.Etag()) + bots, resp, _ := th.Client.GetBotsIncludeDeleted(context.Background(), 0, 10, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -813,14 +814,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{bot1} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBotsIncludeDeleted(0, 1, "") + bots, resp, err := client.GetBotsIncludeDeleted(context.Background(), 0, 1, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBotsIncludeDeleted(0, 1, botList.Etag()) + bots, resp, _ := th.Client.GetBotsIncludeDeleted(context.Background(), 0, 1, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -833,14 +834,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{bot2, bot3} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBotsIncludeDeleted(1, 2, "") + bots, resp, err := client.GetBotsIncludeDeleted(context.Background(), 1, 2, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBotsIncludeDeleted(1, 2, botList.Etag()) + bots, resp, _ := th.Client.GetBotsIncludeDeleted(context.Background(), 1, 2, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -853,14 +854,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{deletedBot2, orphanedBot} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBotsIncludeDeleted(2, 2, "") + bots, resp, err := client.GetBotsIncludeDeleted(context.Background(), 2, 2, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBotsIncludeDeleted(2, 2, botList.Etag()) + bots, resp, _ := th.Client.GetBotsIncludeDeleted(context.Background(), 2, 2, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -873,14 +874,14 @@ func TestGetBots(t *testing.T) { expectedBotList := []*model.Bot{orphanedBot} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bots, resp, err := client.GetBotsOrphaned(0, 10, "") + bots, resp, err := client.GetBotsOrphaned(context.Background(), 0, 10, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, expectedBotList, bots) }) botList := model.BotList(expectedBotList) - bots, resp, _ := th.Client.GetBotsOrphaned(0, 10, botList.Etag()) + bots, resp, _ := th.Client.GetBotsOrphaned(context.Background(), 0, 10, botList.Etag()) CheckEtag(t, bots, resp) }) @@ -892,7 +893,7 @@ func TestGetBots(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.TeamUserRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.TeamUserRoleId, false) - _, _, err := th.Client.GetBots(0, 10, "") + _, _, err := th.Client.GetBots(context.Background(), 0, 10, "") CheckErrorID(t, err, "api.context.permissions.app_error") }) } @@ -903,7 +904,7 @@ func TestDisableBot(t *testing.T) { defer th.TearDown() th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.DisableBot(model.NewId()) + _, resp, err := client.DisableBot(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -925,12 +926,12 @@ func TestDisableBot(t *testing.T) { Description: "bot", } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - _, _, err = th.Client.DisableBot(createdBot.UserId) + _, _, err = th.Client.DisableBot(context.Background(), createdBot.UserId) CheckErrorID(t, err, "store.sql_bot.get.missing.app_error") }) @@ -951,12 +952,12 @@ func TestDisableBot(t *testing.T) { Description: "bot", } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - _, _, err = th.Client.DisableBot(createdBot.UserId) + _, _, err = th.Client.DisableBot(context.Background(), createdBot.UserId) CheckErrorID(t, err, "api.context.permissions.app_error") }) @@ -973,7 +974,7 @@ func TestDisableBot(t *testing.T) { }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bot, resp, err := th.Client.CreateBot(&model.Bot{ + bot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), Description: "bot", }) @@ -981,7 +982,7 @@ func TestDisableBot(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot.UserId) - disabledBot, resp, err := client.DisableBot(bot.UserId) + disabledBot, resp, err := client.DisableBot(context.Background(), bot.UserId) require.NoError(t, err) CheckOKStatus(t, resp) bot.UpdateAt = disabledBot.UpdateAt @@ -989,13 +990,13 @@ func TestDisableBot(t *testing.T) { require.Equal(t, bot, disabledBot) // Check bot disabled - disab, resp, err := th.SystemAdminClient.GetBotIncludeDeleted(bot.UserId, "") + disab, resp, err := th.SystemAdminClient.GetBotIncludeDeleted(context.Background(), bot.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.NotZero(t, disab.DeleteAt) // Disabling should be idempotent. - disabledBot2, resp, err := client.DisableBot(bot.UserId) + disabledBot2, resp, err := client.DisableBot(context.Background(), bot.UserId) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, bot, disabledBot2) @@ -1008,7 +1009,7 @@ func TestEnableBot(t *testing.T) { defer th.TearDown() th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, resp, err := th.Client.EnableBot(model.NewId()) + _, resp, err := th.Client.EnableBot(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -1030,16 +1031,16 @@ func TestEnableBot(t *testing.T) { Description: "bot", } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - _, resp, err = th.SystemAdminClient.DisableBot(createdBot.UserId) + _, resp, err = th.SystemAdminClient.DisableBot(context.Background(), createdBot.UserId) require.NoError(t, err) CheckOKStatus(t, resp) - _, _, err = th.Client.EnableBot(createdBot.UserId) + _, _, err = th.Client.EnableBot(context.Background(), createdBot.UserId) CheckErrorID(t, err, "store.sql_bot.get.missing.app_error") }) @@ -1060,16 +1061,16 @@ func TestEnableBot(t *testing.T) { Description: "bot", } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - _, resp, err = th.SystemAdminClient.DisableBot(createdBot.UserId) + _, resp, err = th.SystemAdminClient.DisableBot(context.Background(), createdBot.UserId) require.NoError(t, err) CheckOKStatus(t, resp) - _, _, err = th.Client.EnableBot(createdBot.UserId) + _, _, err = th.Client.EnableBot(context.Background(), createdBot.UserId) CheckErrorID(t, err, "api.context.permissions.app_error") }) @@ -1086,7 +1087,7 @@ func TestEnableBot(t *testing.T) { }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - bot, resp, err := th.Client.CreateBot(&model.Bot{ + bot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), Description: "bot", }) @@ -1094,11 +1095,11 @@ func TestEnableBot(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot.UserId) - _, resp, err = th.SystemAdminClient.DisableBot(bot.UserId) + _, resp, err = th.SystemAdminClient.DisableBot(context.Background(), bot.UserId) require.NoError(t, err) CheckOKStatus(t, resp) - enabledBot1, resp, err := client.EnableBot(bot.UserId) + enabledBot1, resp, err := client.EnableBot(context.Background(), bot.UserId) require.NoError(t, err) CheckOKStatus(t, resp) bot.UpdateAt = enabledBot1.UpdateAt @@ -1106,13 +1107,13 @@ func TestEnableBot(t *testing.T) { require.Equal(t, bot, enabledBot1) // Check bot enabled - enab, resp, err := th.SystemAdminClient.GetBotIncludeDeleted(bot.UserId, "") + enab, resp, err := th.SystemAdminClient.GetBotIncludeDeleted(context.Background(), bot.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Zero(t, enab.DeleteAt) // Disabling should be idempotent. - enabledBot2, resp, err := client.EnableBot(bot.UserId) + enabledBot2, resp, err := client.EnableBot(context.Background(), bot.UserId) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, bot, enabledBot2) @@ -1126,7 +1127,7 @@ func TestAssignBot(t *testing.T) { t.Run("claim non-existent bot", func(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.AssignBot(model.NewId(), model.NewId()) + _, resp, err := client.AssignBot(context.Background(), model.NewId(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -1145,37 +1146,37 @@ func TestAssignBot(t *testing.T) { Username: GenerateTestUsername(), Description: "bot", } - bot, resp, err := th.Client.CreateBot(bot) + bot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot.UserId) - before, resp, err := th.Client.GetBot(bot.UserId, "") + before, resp, err := th.Client.GetBot(context.Background(), bot.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, th.BasicUser.Id, before.OwnerId) - _, resp, err = th.SystemAdminClient.AssignBot(bot.UserId, th.SystemAdminUser.Id) + _, resp, err = th.SystemAdminClient.AssignBot(context.Background(), bot.UserId, th.SystemAdminUser.Id) require.NoError(t, err) CheckOKStatus(t, resp) // Original owner doesn't have read others bots permission, therefore can't see bot anymore - _, resp, err = th.Client.GetBot(bot.UserId, "") + _, resp, err = th.Client.GetBot(context.Background(), bot.UserId, "") require.Error(t, err) CheckNotFoundStatus(t, resp) // System admin can see creator ID has changed - after, resp, err := th.SystemAdminClient.GetBot(bot.UserId, "") + after, resp, err := th.SystemAdminClient.GetBot(context.Background(), bot.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, th.SystemAdminUser.Id, after.OwnerId) // Assign back to user without permissions to manage, using local mode - _, resp, err = th.LocalClient.AssignBot(bot.UserId, th.BasicUser.Id) + _, resp, err = th.LocalClient.AssignBot(context.Background(), bot.UserId, th.BasicUser.Id) require.NoError(t, err) CheckOKStatus(t, resp) - after, resp, err = th.SystemAdminClient.GetBot(bot.UserId, "") + after, resp, err = th.SystemAdminClient.GetBot(context.Background(), bot.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, th.BasicUser.Id, after.OwnerId) @@ -1194,7 +1195,7 @@ func TestAssignBot(t *testing.T) { Username: GenerateTestUsername(), Description: "bot", } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) @@ -1202,12 +1203,12 @@ func TestAssignBot(t *testing.T) { th.LoginBasic2() // Without permission to read others bots it doesn't exist - _, _, err = th.Client.AssignBot(createdBot.UserId, th.BasicUser2.Id) + _, _, err = th.Client.AssignBot(context.Background(), createdBot.UserId, th.BasicUser2.Id) CheckErrorID(t, err, "store.sql_bot.get.missing.app_error") // With permissions to read we don't have permissions to modify th.AddPermissionToRole(model.PermissionReadOthersBots.Id, model.SystemUserRoleId) - _, _, err = th.Client.AssignBot(createdBot.UserId, th.BasicUser2.Id) + _, _, err = th.Client.AssignBot(context.Background(), createdBot.UserId, th.BasicUser2.Id) CheckErrorID(t, err, "api.context.permissions.app_error") th.LoginBasic() @@ -1226,7 +1227,7 @@ func TestAssignBot(t *testing.T) { Username: GenerateTestUsername(), Description: "bot", } - bot, resp, err := th.Client.CreateBot(bot) + bot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot.UserId) @@ -1239,11 +1240,11 @@ func TestAssignBot(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.SystemUserRoleId) th.LoginBasic2() - _, resp, err = th.Client.AssignBot(bot.UserId, th.BasicUser2.Id) + _, resp, err = th.Client.AssignBot(context.Background(), bot.UserId, th.BasicUser2.Id) require.NoError(t, err) CheckOKStatus(t, resp) - after, resp, err := th.SystemAdminClient.GetBot(bot.UserId, "") + after, resp, err := th.SystemAdminClient.GetBot(context.Background(), bot.UserId, "") require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, th.BasicUser2.Id, after.OwnerId) @@ -1262,12 +1263,12 @@ func TestAssignBot(t *testing.T) { Username: GenerateTestUsername(), Description: "bot", } - bot, resp, err := th.Client.CreateBot(bot) + bot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot.UserId) - bot2, resp, err := th.Client.CreateBot(&model.Bot{ + bot2, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -1276,7 +1277,7 @@ func TestAssignBot(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot2.UserId) - _, _, err = th.Client.AssignBot(bot.UserId, bot2.UserId) + _, _, err = th.Client.AssignBot(context.Background(), bot.UserId, bot2.UserId) CheckErrorID(t, err, "api.context.permissions.app_error") }) @@ -1296,16 +1297,16 @@ func TestConvertBotToUser(t *testing.T) { Username: GenerateTestUsername(), Description: "bot", } - bot, resp, err := th.Client.CreateBot(bot) + bot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(bot.UserId) - _, resp, err = th.Client.ConvertBotToUser(bot.UserId, &model.UserPatch{}, false) + _, resp, err = th.Client.ConvertBotToUser(context.Background(), bot.UserId, &model.UserPatch{}, false) require.Error(t, err) CheckBadRequestStatus(t, resp) - user, resp, err := th.Client.ConvertBotToUser(bot.UserId, &model.UserPatch{Password: model.NewString("password")}, false) + user, resp, err := th.Client.ConvertBotToUser(context.Background(), bot.UserId, &model.UserPatch{Password: model.NewString("password")}, false) require.Error(t, err) CheckForbiddenStatus(t, resp) require.Nil(t, user) @@ -1315,21 +1316,21 @@ func TestConvertBotToUser(t *testing.T) { Username: GenerateTestUsername(), Description: "bot", } - bot, resp, err := th.SystemAdminClient.CreateBot(bot) + bot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) - user, resp, err := client.ConvertBotToUser(bot.UserId, &model.UserPatch{}, false) + user, resp, err := client.ConvertBotToUser(context.Background(), bot.UserId, &model.UserPatch{}, false) require.Error(t, err) CheckBadRequestStatus(t, resp) require.Nil(t, user) - user, _, err = client.ConvertBotToUser(bot.UserId, &model.UserPatch{Password: model.NewString("password")}, false) + user, _, err = client.ConvertBotToUser(context.Background(), bot.UserId, &model.UserPatch{Password: model.NewString("password")}, false) require.NoError(t, err) require.NotNil(t, user) require.Equal(t, bot.UserId, user.Id) - _, resp, err = client.GetBot(bot.UserId, "") + _, resp, err = client.GetBot(context.Background(), bot.UserId, "") require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -1337,17 +1338,17 @@ func TestConvertBotToUser(t *testing.T) { Username: GenerateTestUsername(), Description: "systemAdminBot", } - bot, resp, err = th.SystemAdminClient.CreateBot(bot) + bot, resp, err = th.SystemAdminClient.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) - user, _, err = client.ConvertBotToUser(bot.UserId, &model.UserPatch{Password: model.NewString("password")}, true) + user, _, err = client.ConvertBotToUser(context.Background(), bot.UserId, &model.UserPatch{Password: model.NewString("password")}, true) require.NoError(t, err) require.NotNil(t, user) require.Equal(t, bot.UserId, user.Id) require.Contains(t, user.GetRoles(), model.SystemAdminRoleId) - _, resp, err = client.GetBot(bot.UserId, "") + _, resp, err = client.GetBot(context.Background(), bot.UserId, "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) diff --git a/server/channels/api4/brand_test.go b/server/channels/api4/brand_test.go index ec2e65ea8e..ad3bd75ba3 100644 --- a/server/channels/api4/brand_test.go +++ b/server/channels/api4/brand_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "net/http" "testing" @@ -17,16 +18,16 @@ func TestGetBrandImage(t *testing.T) { defer th.TearDown() client := th.Client - _, resp, err := client.GetBrandImage() + _, resp, err := client.GetBrandImage(context.Background()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetBrandImage() + client.Logout(context.Background()) + _, resp, err = client.GetBrandImage(context.Background()) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = th.SystemAdminClient.GetBrandImage() + _, resp, err = th.SystemAdminClient.GetBrandImage(context.Background()) require.Error(t, err) CheckNotFoundStatus(t, resp) } @@ -39,14 +40,14 @@ func TestUploadBrandImage(t *testing.T) { data, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - resp, err := client.UploadBrandImage(data) + resp, err := client.UploadBrandImage(context.Background(), data) require.Error(t, err) CheckForbiddenStatus(t, resp) // status code returns either forbidden or unauthorized // note: forbidden is set as default at Client4.SetProfileImage when request is terminated early by server - client.Logout() - resp, err = client.UploadBrandImage(data) + client.Logout(context.Background()) + resp, err = client.UploadBrandImage(context.Background(), data) require.Error(t, err) if resp.StatusCode == http.StatusForbidden { CheckForbiddenStatus(t, resp) @@ -56,7 +57,7 @@ func TestUploadBrandImage(t *testing.T) { require.Fail(t, "Should have failed either forbidden or unauthorized") } - resp, err = th.SystemAdminClient.UploadBrandImage(data) + resp, err = th.SystemAdminClient.UploadBrandImage(context.Background(), data) require.NoError(t, err) CheckCreatedStatus(t, resp) } @@ -68,25 +69,25 @@ func TestDeleteBrandImage(t *testing.T) { data, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - resp, err := th.SystemAdminClient.UploadBrandImage(data) + resp, err := th.SystemAdminClient.UploadBrandImage(context.Background(), data) require.NoError(t, err) CheckCreatedStatus(t, resp) - resp, err = th.Client.DeleteBrandImage() + resp, err = th.Client.DeleteBrandImage(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() + th.Client.Logout(context.Background()) - resp, err = th.Client.DeleteBrandImage() + resp, err = th.Client.DeleteBrandImage(context.Background()) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - resp, err = th.SystemAdminClient.DeleteBrandImage() + resp, err = th.SystemAdminClient.DeleteBrandImage(context.Background()) require.NoError(t, err) CheckOKStatus(t, resp) - resp, err = th.SystemAdminClient.DeleteBrandImage() + resp, err = th.SystemAdminClient.DeleteBrandImage(context.Background()) require.Error(t, err) CheckNotFoundStatus(t, resp) } diff --git a/server/channels/api4/channel_category_test.go b/server/channels/api4/channel_category_test.go index 0acb067570..10f1fadb5b 100644 --- a/server/channels/api4/channel_category_test.go +++ b/server/channels/api4/channel_category_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "fmt" "testing" @@ -22,7 +23,7 @@ func TestCreateCategoryForTeamForUser(t *testing.T) { t.Run("should silently prevent the user from creating a category with an invalid channel ID", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -37,7 +38,7 @@ func TestCreateCategoryForTeamForUser(t *testing.T) { Channels: []string{th.BasicChannel.Id, "notachannel", th.BasicChannel2.Id}, } - received, _, err := client.CreateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, category) + received, _, err := client.CreateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, category) require.NoError(t, err) assert.NotContains(t, received.Channels, "notachannel") assert.Equal(t, []string{th.BasicChannel.Id, th.BasicChannel2.Id}, received.Channels) @@ -46,13 +47,13 @@ func TestCreateCategoryForTeamForUser(t *testing.T) { t.Run("should silently prevent the user from creating a category with a channel that they're not a member of", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) // Have another user create a channel that user isn't a part of - channel, _, err := th.SystemAdminClient.CreateChannel(&model.Channel{ + channel, _, err := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ TeamId: th.BasicTeam.Id, Type: model.ChannelTypeOpen, Name: "testchannel", @@ -69,7 +70,7 @@ func TestCreateCategoryForTeamForUser(t *testing.T) { Channels: []string{th.BasicChannel.Id, channel.Id}, } - received, _, err := client.CreateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, category) + received, _, err := client.CreateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, category) require.NoError(t, err) assert.NotContains(t, received.Channels, channel.Id) assert.Equal(t, []string{th.BasicChannel.Id}, received.Channels) @@ -78,7 +79,7 @@ func TestCreateCategoryForTeamForUser(t *testing.T) { t.Run("should return expected sort order value", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - customCategory, _, err := client.CreateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, &model.SidebarCategoryWithChannels{ + customCategory, _, err := client.CreateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, &model.SidebarCategoryWithChannels{ SidebarCategory: model.SidebarCategory{ UserId: user.Id, TeamId: th.BasicTeam.Id, @@ -96,7 +97,7 @@ func TestCreateCategoryForTeamForUser(t *testing.T) { user, client := setupUserForSubtest(t, th) payload := []byte(`null`) route := fmt.Sprintf("/users/%s/teams/%s/channels/categories", user.Id, th.BasicTeam.Id) - r, err := client.DoAPIPostBytes(route, payload) + r, err := client.DoAPIPostBytes(context.Background(), route, payload) require.Error(t, err) closeBody(r) }) @@ -118,7 +119,7 @@ func TestCreateCategoryForTeamForUser(t *testing.T) { Channels: []string{th.BasicChannel.Id, "notachannel", th.BasicChannel2.Id}, } - received, _, err := th.Client.CreateSidebarCategoryForTeamForUser(th.BasicUser.Id, th.BasicTeam.Id, category) + received, _, err := th.Client.CreateSidebarCategoryForTeamForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, category) require.NoError(t, err) testCategories := []*model.SidebarCategoryWithChannels{ @@ -134,7 +135,7 @@ func TestCreateCategoryForTeamForUser(t *testing.T) { }, } - testCategories, _, err = th.Client.UpdateSidebarCategoriesForTeamForUser(th.BasicUser.Id, th.BasicTeam.Id, testCategories) + testCategories, _, err = th.Client.UpdateSidebarCategoriesForTeamForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, testCategories) require.NoError(t, err) b, err := json.Marshal(testCategories) @@ -171,7 +172,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { t.Run("should update the channel order of the Channels category", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -186,13 +187,13 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { Channels: []string{channelsCategory.Channels[1], channelsCategory.Channels[0], channelsCategory.Channels[4], channelsCategory.Channels[3], channelsCategory.Channels[2]}, } - received, _, err := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) + received, _, err := client.UpdateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) assert.NoError(t, err) assert.Equal(t, channelsCategory.Id, received.Id) assert.Equal(t, updatedCategory.Channels, received.Channels) // And when requesting the category later - received, _, err = client.GetSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, "") + received, _, err = client.GetSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, channelsCategory.Id, "") assert.NoError(t, err) assert.Equal(t, channelsCategory.Id, received.Id) assert.Equal(t, updatedCategory.Channels, received.Channels) @@ -201,7 +202,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { t.Run("should update the sort order of the DM category", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -217,13 +218,13 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { } updatedCategory.Sorting = model.SidebarCategorySortAlphabetical - received, _, err := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, dmsCategory.Id, updatedCategory) + received, _, err := client.UpdateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, dmsCategory.Id, updatedCategory) assert.NoError(t, err) assert.Equal(t, dmsCategory.Id, received.Id) assert.Equal(t, model.SidebarCategorySortAlphabetical, received.Sorting) // And when requesting the category later - received, _, err = client.GetSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, dmsCategory.Id, "") + received, _, err = client.GetSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, dmsCategory.Id, "") assert.NoError(t, err) assert.Equal(t, dmsCategory.Id, received.Id) assert.Equal(t, model.SidebarCategorySortAlphabetical, received.Sorting) @@ -232,7 +233,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { t.Run("should update the display name of a custom category", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - customCategory, _, err := client.CreateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, &model.SidebarCategoryWithChannels{ + customCategory, _, err := client.CreateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, &model.SidebarCategoryWithChannels{ SidebarCategory: model.SidebarCategory{ UserId: user.Id, TeamId: th.BasicTeam.Id, @@ -249,13 +250,13 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { } updatedCategory.DisplayName = "abcCustom" - received, _, err := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, customCategory.Id, updatedCategory) + received, _, err := client.UpdateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, customCategory.Id, updatedCategory) assert.NoError(t, err) assert.Equal(t, customCategory.Id, received.Id) assert.Equal(t, updatedCategory.DisplayName, received.DisplayName) // And when requesting the category later - received, _, err = client.GetSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, customCategory.Id, "") + received, _, err = client.GetSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, customCategory.Id, "") assert.NoError(t, err) assert.Equal(t, customCategory.Id, received.Id) assert.Equal(t, updatedCategory.DisplayName, received.DisplayName) @@ -264,7 +265,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { t.Run("should update the channel order of the category even if it contains archived channels", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -274,7 +275,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { require.Len(t, channelsCategory.Channels, 5) // Town Square, Off Topic, and the 3 channels created by InitBasic // Delete one of the channels - _, err = client.DeleteChannel(th.BasicChannel.Id) + _, err = client.DeleteChannel(context.Background(), th.BasicChannel.Id) require.NoError(t, err) // Should still be able to reorder the channels @@ -283,7 +284,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { Channels: []string{channelsCategory.Channels[1], channelsCategory.Channels[0], channelsCategory.Channels[4], channelsCategory.Channels[3], channelsCategory.Channels[2]}, } - received, _, err := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) + received, _, err := client.UpdateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) require.NoError(t, err) assert.Equal(t, channelsCategory.Id, received.Id) assert.Equal(t, updatedCategory.Channels, received.Channels) @@ -292,7 +293,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { t.Run("should silently prevent the user from adding an invalid channel ID", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -305,7 +306,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { Channels: append(channelsCategory.Channels, "notachannel"), } - received, _, err := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) + received, _, err := client.UpdateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) require.NoError(t, err) assert.Equal(t, channelsCategory.Id, received.Id) assert.NotContains(t, received.Channels, "notachannel") @@ -315,7 +316,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { t.Run("should silently prevent the user from adding a channel that they're not a member of", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -324,7 +325,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { require.Equal(t, model.SidebarCategoryChannels, channelsCategory.Type) // Have another user create a channel that user isn't a part of - channel, _, err := th.SystemAdminClient.CreateChannel(&model.Channel{ + channel, _, err := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ TeamId: th.BasicTeam.Id, Type: model.ChannelTypeOpen, Name: "testchannel", @@ -337,7 +338,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { Channels: append(channelsCategory.Channels, channel.Id), } - received, _, err := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) + received, _, err := client.UpdateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) require.NoError(t, err) assert.Equal(t, channelsCategory.Id, received.Id) assert.NotContains(t, received.Channels, channel.Id) @@ -347,7 +348,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { t.Run("muting a category should mute all of its channels", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -368,19 +369,19 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { Channels: channelsCategory.Channels, } - received, _, err := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) + received, _, err := client.UpdateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, channelsCategory.Id, updatedCategory) require.NoError(t, err) assert.Equal(t, channelsCategory.Id, received.Id) assert.True(t, received.Muted) // Check that the muted category was saved in the database - received, _, err = client.GetSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, channelsCategory.Id, "") + received, _, err = client.GetSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, channelsCategory.Id, "") require.NoError(t, err) assert.Equal(t, channelsCategory.Id, received.Id) assert.True(t, received.Muted) // Confirm that the channels in the category were muted - member, _, err := client.GetChannelMember(channelsCategory.Channels[0], user.Id, "") + member, _, err := client.GetChannelMember(context.Background(), channelsCategory.Channels[0], user.Id, "") require.NoError(t, err) assert.True(t, member.IsChannelMuted()) }) @@ -388,7 +389,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { t.Run("should not be able to mute DM category", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -398,7 +399,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { require.Len(t, dmsCategory.Channels, 0) // Ensure a DM channel exists - dmChannel, _, err := client.CreateDirectChannel(user.Id, th.BasicUser.Id) + dmChannel, _, err := client.CreateDirectChannel(context.Background(), user.Id, th.BasicUser.Id) require.NoError(t, err) // Attempt to mute the category @@ -413,19 +414,19 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { Channels: []string{dmChannel.Id}, } - received, _, err := client.UpdateSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, dmsCategory.Id, updatedCategory) + received, _, err := client.UpdateSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, dmsCategory.Id, updatedCategory) require.NoError(t, err) assert.Equal(t, dmsCategory.Id, received.Id) assert.False(t, received.Muted) // Check that the muted category was not saved in the database - received, _, err = client.GetSidebarCategoryForTeamForUser(user.Id, th.BasicTeam.Id, dmsCategory.Id, "") + received, _, err = client.GetSidebarCategoryForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, dmsCategory.Id, "") require.NoError(t, err) assert.Equal(t, dmsCategory.Id, received.Id) assert.False(t, received.Muted) // Confirm that the channels in the category were not muted - member, _, err := client.GetChannelMember(dmChannel.Id, user.Id, "") + member, _, err := client.GetChannelMember(context.Background(), dmChannel.Id, user.Id, "") require.NoError(t, err) assert.False(t, member.IsChannelMuted()) }) @@ -434,7 +435,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { require.NotPanics(t, func() { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -443,7 +444,7 @@ func TestUpdateCategoryForTeamForUser(t *testing.T) { payload := []byte(`null`) route := fmt.Sprintf("/users/%s/teams/%s/channels/categories/%s", user.Id, th.BasicTeam.Id, dmsCategory.Id) - r, err := client.DoAPIPutBytes(route, payload) + r, err := client.DoAPIPutBytes(context.Background(), route, payload) require.Error(t, err) closeBody(r) }) @@ -457,7 +458,7 @@ func TestUpdateCategoriesForTeamForUser(t *testing.T) { t.Run("should silently prevent the user from adding an invalid channel ID", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -470,7 +471,7 @@ func TestUpdateCategoriesForTeamForUser(t *testing.T) { Channels: append(channelsCategory.Channels, "notachannel"), } - received, _, err := client.UpdateSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, []*model.SidebarCategoryWithChannels{updatedCategory}) + received, _, err := client.UpdateSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, []*model.SidebarCategoryWithChannels{updatedCategory}) require.NoError(t, err) assert.Equal(t, channelsCategory.Id, received[0].Id) assert.NotContains(t, received[0].Channels, "notachannel") @@ -480,7 +481,7 @@ func TestUpdateCategoriesForTeamForUser(t *testing.T) { t.Run("should silently prevent the user from adding a channel that they're not a member of", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -489,7 +490,7 @@ func TestUpdateCategoriesForTeamForUser(t *testing.T) { require.Equal(t, model.SidebarCategoryChannels, channelsCategory.Type) // Have another user create a channel that user isn't a part of - channel, _, err := th.SystemAdminClient.CreateChannel(&model.Channel{ + channel, _, err := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ TeamId: th.BasicTeam.Id, Type: model.ChannelTypeOpen, Name: "testchannel", @@ -502,7 +503,7 @@ func TestUpdateCategoriesForTeamForUser(t *testing.T) { Channels: append(channelsCategory.Channels, channel.Id), } - received, _, err := client.UpdateSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, []*model.SidebarCategoryWithChannels{updatedCategory}) + received, _, err := client.UpdateSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, []*model.SidebarCategoryWithChannels{updatedCategory}) require.NoError(t, err) assert.Equal(t, channelsCategory.Id, received[0].Id) assert.NotContains(t, received[0].Channels, channel.Id) @@ -512,7 +513,7 @@ func TestUpdateCategoriesForTeamForUser(t *testing.T) { t.Run("should update order", func(t *testing.T) { user, client := setupUserForSubtest(t, th) - categories, _, err := client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err := client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -520,10 +521,10 @@ func TestUpdateCategoriesForTeamForUser(t *testing.T) { channelsCategory := categories.Categories[1] require.Equal(t, model.SidebarCategoryChannels, channelsCategory.Type) - _, _, err = client.UpdateSidebarCategoryOrderForTeamForUser(user.Id, th.BasicTeam.Id, []string{categories.Order[1], categories.Order[0], categories.Order[2]}) + _, _, err = client.UpdateSidebarCategoryOrderForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, []string{categories.Order[1], categories.Order[0], categories.Order[2]}) require.NoError(t, err) - categories, _, err = client.GetSidebarCategoriesForTeamForUser(user.Id, th.BasicTeam.Id, "") + categories, _, err = client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, categories.Categories, 3) require.Len(t, categories.Order, 3) @@ -532,16 +533,16 @@ func TestUpdateCategoriesForTeamForUser(t *testing.T) { require.Equal(t, model.SidebarCategoryChannels, channelsCategory.Type) // validate order - newOrder, _, err := client.GetSidebarCategoryOrderForTeamForUser(user.Id, th.BasicTeam.Id, "") + newOrder, _, err := client.GetSidebarCategoryOrderForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.EqualValues(t, newOrder, categories.Order) // try to update with missing category - _, _, err = client.UpdateSidebarCategoryOrderForTeamForUser(user.Id, th.BasicTeam.Id, []string{categories.Order[1], categories.Order[0]}) + _, _, err = client.UpdateSidebarCategoryOrderForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, []string{categories.Order[1], categories.Order[0]}) require.Error(t, err) // try to update with invalid category - _, _, err = client.UpdateSidebarCategoryOrderForTeamForUser(user.Id, th.BasicTeam.Id, []string{categories.Order[1], categories.Order[0], "asd"}) + _, _, err = client.UpdateSidebarCategoryOrderForTeamForUser(context.Background(), user.Id, th.BasicTeam.Id, []string{categories.Order[1], categories.Order[0], "asd"}) require.Error(t, err) }) } @@ -561,7 +562,7 @@ func setupUserForSubtest(t *testing.T, th *TestHelper) (*model.User, *model.Clie th.AddUserToChannel(user, th.BasicPrivateChannel) client := th.CreateClient() - user, _, err := client.Login(user.Email, password) + user, _, err := client.Login(context.Background(), user.Email, password) require.NoError(t, err) return user, client diff --git a/server/channels/api4/channel_test.go b/server/channels/api4/channel_test.go index 2cc29da0ab..136319b40e 100644 --- a/server/channels/api4/channel_test.go +++ b/server/channels/api4/channel_test.go @@ -33,7 +33,7 @@ func TestCreateChannel(t *testing.T) { channel := &model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypeOpen, TeamId: team.Id} private := &model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypePrivate, TeamId: team.Id} - rchannel, resp, err := client.CreateChannel(channel) + rchannel, resp, err := client.CreateChannel(context.Background(), channel) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -41,35 +41,35 @@ func TestCreateChannel(t *testing.T) { require.Equal(t, channel.DisplayName, rchannel.DisplayName, "display names did not match") require.Equal(t, channel.TeamId, rchannel.TeamId, "team ids did not match") - rprivate, _, err := client.CreateChannel(private) + rprivate, _, err := client.CreateChannel(context.Background(), private) require.NoError(t, err) require.Equal(t, private.Name, rprivate.Name, "names did not match") require.Equal(t, model.ChannelTypePrivate, rprivate.Type, "wrong channel type") require.Equal(t, th.BasicUser.Id, rprivate.CreatorId, "wrong creator id") - _, resp, err = client.CreateChannel(channel) + _, resp, err = client.CreateChannel(context.Background(), channel) CheckErrorID(t, err, "store.sql_channel.save_channel.exists.app_error") CheckBadRequestStatus(t, resp) direct := &model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypeDirect, TeamId: team.Id} - _, resp, err = client.CreateChannel(direct) + _, resp, err = client.CreateChannel(context.Background(), direct) CheckErrorID(t, err, "api.channel.create_channel.direct_channel.app_error") CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.CreateChannel(channel) + client.Logout(context.Background()) + _, resp, err = client.CreateChannel(context.Background(), channel) require.Error(t, err) CheckUnauthorizedStatus(t, resp) userNotOnTeam := th.CreateUser() - client.Login(userNotOnTeam.Email, userNotOnTeam.Password) + client.Login(context.Background(), userNotOnTeam.Email, userNotOnTeam.Password) - _, resp, err = client.CreateChannel(channel) + _, resp, err = client.CreateChannel(context.Background(), channel) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.CreateChannel(private) + _, resp, err = client.CreateChannel(context.Background(), private) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -85,11 +85,11 @@ func TestCreateChannel(t *testing.T) { th.LoginBasic() channel.Name = GenerateTestChannelName() - _, _, err = client.CreateChannel(channel) + _, _, err = client.CreateChannel(context.Background(), channel) require.NoError(t, err) private.Name = GenerateTestChannelName() - _, _, err = client.CreateChannel(private) + _, _, err = client.CreateChannel(context.Background(), private) require.NoError(t, err) th.AddPermissionToRole(model.PermissionCreatePublicChannel.Id, model.TeamAdminRoleId) @@ -97,42 +97,42 @@ func TestCreateChannel(t *testing.T) { th.RemovePermissionFromRole(model.PermissionCreatePublicChannel.Id, model.TeamUserRoleId) th.RemovePermissionFromRole(model.PermissionCreatePrivateChannel.Id, model.TeamUserRoleId) - _, resp, err = client.CreateChannel(channel) + _, resp, err = client.CreateChannel(context.Background(), channel) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.CreateChannel(private) + _, resp, err = client.CreateChannel(context.Background(), private) require.Error(t, err) CheckForbiddenStatus(t, resp) th.LoginTeamAdmin() channel.Name = GenerateTestChannelName() - _, _, err = client.CreateChannel(channel) + _, _, err = client.CreateChannel(context.Background(), channel) require.NoError(t, err) private.Name = GenerateTestChannelName() - _, _, err = client.CreateChannel(private) + _, _, err = client.CreateChannel(context.Background(), private) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { channel.Name = GenerateTestChannelName() - _, _, err = client.CreateChannel(channel) + _, _, err = client.CreateChannel(context.Background(), channel) require.NoError(t, err) private.Name = GenerateTestChannelName() - _, _, err = client.CreateChannel(private) + _, _, err = client.CreateChannel(context.Background(), private) require.NoError(t, err) }) // Test posting Garbage - r, err := client.DoAPIPost("/channels", "garbage") + r, err := client.DoAPIPost(context.Background(), "/channels", "garbage") require.Error(t, err, "expected error") require.Equal(t, http.StatusBadRequest, r.StatusCode, "Expected 400 Bad Request") // Test GroupConstrained flag groupConstrainedChannel := &model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypeOpen, TeamId: team.Id, GroupConstrained: model.NewBool(true)} - rchannel, _, err = client.CreateChannel(groupConstrainedChannel) + rchannel, _, err = client.CreateChannel(context.Background(), groupConstrainedChannel) require.NoError(t, err) require.Equal(t, *groupConstrainedChannel.GroupConstrained, *rchannel.GroupConstrained, "GroupConstrained flags do not match") @@ -147,15 +147,15 @@ func TestUpdateChannel(t *testing.T) { channel := &model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypeOpen, TeamId: team.Id} private := &model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypePrivate, TeamId: team.Id} - channel, _, _ = client.CreateChannel(channel) - private, _, _ = client.CreateChannel(private) + channel, _, _ = client.CreateChannel(context.Background(), channel) + private, _, _ = client.CreateChannel(context.Background(), private) //Update a open channel channel.DisplayName = "My new display name" channel.Header = "My fancy header" channel.Purpose = "Mattermost ftw!" - newChannel, _, err := client.UpdateChannel(channel) + newChannel, _, err := client.UpdateChannel(context.Background(), channel) require.NoError(t, err) require.Equal(t, channel.DisplayName, newChannel.DisplayName, "Update failed for DisplayName") @@ -164,7 +164,7 @@ func TestUpdateChannel(t *testing.T) { // Test GroupConstrained flag channel.GroupConstrained = model.NewBool(true) - rchannel, resp, err := client.UpdateChannel(channel) + rchannel, resp, err := client.UpdateChannel(context.Background(), channel) require.NoError(t, err) CheckOKStatus(t, resp) @@ -175,7 +175,7 @@ func TestUpdateChannel(t *testing.T) { private.Header = "My fancy private header" private.Purpose = "Mattermost ftw! in private mode" - newPrivateChannel, _, err := client.UpdateChannel(private) + newPrivateChannel, _, err := client.UpdateChannel(context.Background(), private) require.NoError(t, err) require.Equal(t, private.DisplayName, newPrivateChannel.DisplayName, "Update failed for DisplayName in private channel") @@ -185,40 +185,40 @@ func TestUpdateChannel(t *testing.T) { //Test updating default channel's name and returns error defaultChannel, _ := th.App.GetChannelByName(th.Context, model.DefaultChannelName, team.Id, false) defaultChannel.Name = "testing" - _, resp, err = client.UpdateChannel(defaultChannel) + _, resp, err = client.UpdateChannel(context.Background(), defaultChannel) require.Error(t, err) CheckBadRequestStatus(t, resp) // Test that changing the type fails and returns error private.Type = model.ChannelTypeOpen - _, resp, err = client.UpdateChannel(private) + _, resp, err = client.UpdateChannel(context.Background(), private) require.Error(t, err) CheckBadRequestStatus(t, resp) // Test that keeping the same type succeeds private.Type = model.ChannelTypePrivate - _, _, err = client.UpdateChannel(private) + _, _, err = client.UpdateChannel(context.Background(), private) require.NoError(t, err) //Non existing channel channel1 := &model.Channel{DisplayName: "Test API Name for apiv4", Name: GenerateTestChannelName(), Type: model.ChannelTypeOpen, TeamId: team.Id} - _, resp, err = client.UpdateChannel(channel1) + _, resp, err = client.UpdateChannel(context.Background(), channel1) require.Error(t, err) CheckNotFoundStatus(t, resp) //Try to update with not logged user - client.Logout() - _, resp, err = client.UpdateChannel(channel) + client.Logout(context.Background()) + _, resp, err = client.UpdateChannel(context.Background(), channel) require.Error(t, err) CheckUnauthorizedStatus(t, resp) //Try to update using another user user := th.CreateUser() - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) channel.DisplayName = "Should not update" - _, resp, err = client.UpdateChannel(channel) + _, resp, err = client.UpdateChannel(context.Background(), channel) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -227,32 +227,32 @@ func TestUpdateChannel(t *testing.T) { user2 := th.CreateUser() user3 := th.CreateUser() - groupChannel, _, err := client.CreateGroupChannel([]string{user1.Id, user2.Id}) + groupChannel, _, err := client.CreateGroupChannel(context.Background(), []string{user1.Id, user2.Id}) require.NoError(t, err) groupChannel.Header = "lolololol" - client.Logout() - client.Login(user3.Email, user3.Password) - _, resp, err = client.UpdateChannel(groupChannel) + client.Logout(context.Background()) + client.Login(context.Background(), user3.Email, user3.Password) + _, resp, err = client.UpdateChannel(context.Background(), groupChannel) require.Error(t, err) CheckForbiddenStatus(t, resp) // Test updating the header of someone else's GM channel. - client.Logout() - client.Login(user.Email, user.Password) + client.Logout(context.Background()) + client.Login(context.Background(), user.Email, user.Password) - directChannel, _, err := client.CreateDirectChannel(user.Id, user1.Id) + directChannel, _, err := client.CreateDirectChannel(context.Background(), user.Id, user1.Id) require.NoError(t, err) directChannel.Header = "lolololol" - client.Logout() - client.Login(user3.Email, user3.Password) - _, resp, err = client.UpdateChannel(directChannel) + client.Logout(context.Background()) + client.Login(context.Background(), user3.Email, user3.Password) + _, resp, err = client.UpdateChannel(context.Background(), directChannel) require.Error(t, err) CheckForbiddenStatus(t, resp) t.Run("null value", func(t *testing.T) { - r, err := client.DoAPIPut(fmt.Sprintf("/channels"+"/%v", channel.Id), "null") + r, err := client.DoAPIPut(context.Background(), fmt.Sprintf("/channels"+"/%v", channel.Id), "null") resp := model.BuildResponse(r) defer closeBody(r) @@ -278,7 +278,7 @@ func TestPatchChannel(t *testing.T) { *patch.Header = model.NewId() *patch.Purpose = model.NewId() - channel, _, err := client.PatchChannel(th.BasicChannel.Id, patch) + channel, _, err := client.PatchChannel(context.Background(), th.BasicChannel.Id, patch) require.NoError(t, err) require.Equal(t, *patch.Name, channel.Name, "do not match") @@ -288,7 +288,7 @@ func TestPatchChannel(t *testing.T) { patch.Name = nil oldName := channel.Name - channel, _, err = client.PatchChannel(th.BasicChannel.Id, patch) + channel, _, err = client.PatchChannel(context.Background(), th.BasicChannel.Id, patch) require.NoError(t, err) require.Equal(t, oldName, channel.Name, "should not have updated") @@ -299,38 +299,38 @@ func TestPatchChannel(t *testing.T) { Name: new(string), } *defaultChannelPatch.Name = "testing" - _, resp, err := client.PatchChannel(defaultChannel.Id, defaultChannelPatch) + _, resp, err := client.PatchChannel(context.Background(), defaultChannel.Id, defaultChannelPatch) require.Error(t, err) CheckBadRequestStatus(t, resp) // Test GroupConstrained flag patch.GroupConstrained = model.NewBool(true) - rchannel, resp, err := client.PatchChannel(th.BasicChannel.Id, patch) + rchannel, resp, err := client.PatchChannel(context.Background(), th.BasicChannel.Id, patch) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, *rchannel.GroupConstrained, *patch.GroupConstrained, "GroupConstrained flags do not match") patch.GroupConstrained = nil - _, resp, err = client.PatchChannel("junk", patch) + _, resp, err = client.PatchChannel(context.Background(), "junk", patch) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.PatchChannel(model.NewId(), patch) + _, resp, err = client.PatchChannel(context.Background(), model.NewId(), patch) require.Error(t, err) CheckNotFoundStatus(t, resp) user := th.CreateUser() - client.Login(user.Email, user.Password) - _, resp, err = client.PatchChannel(th.BasicChannel.Id, patch) + client.Login(context.Background(), user.Email, user.Password) + _, resp, err = client.PatchChannel(context.Background(), th.BasicChannel.Id, patch) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.PatchChannel(th.BasicChannel.Id, patch) + _, _, err = client.PatchChannel(context.Background(), th.BasicChannel.Id, patch) require.NoError(t, err) - _, _, err = client.PatchChannel(th.BasicPrivateChannel.Id, patch) + _, _, err = client.PatchChannel(context.Background(), th.BasicPrivateChannel.Id, patch) require.NoError(t, err) }) @@ -339,30 +339,30 @@ func TestPatchChannel(t *testing.T) { user2 := th.CreateUser() user3 := th.CreateUser() - groupChannel, _, err := client.CreateGroupChannel([]string{user1.Id, user2.Id}) + groupChannel, _, err := client.CreateGroupChannel(context.Background(), []string{user1.Id, user2.Id}) require.NoError(t, err) - client.Logout() - client.Login(user3.Email, user3.Password) + client.Logout(context.Background()) + client.Login(context.Background(), user3.Email, user3.Password) channelPatch := &model.ChannelPatch{} channelPatch.Header = new(string) *channelPatch.Header = "lolololol" - _, resp, err = client.PatchChannel(groupChannel.Id, channelPatch) + _, resp, err = client.PatchChannel(context.Background(), groupChannel.Id, channelPatch) require.Error(t, err) CheckForbiddenStatus(t, resp) // Test updating the header of someone else's GM channel. - client.Logout() - client.Login(user.Email, user.Password) + client.Logout(context.Background()) + client.Login(context.Background(), user.Email, user.Password) - directChannel, _, err := client.CreateDirectChannel(user.Id, user1.Id) + directChannel, _, err := client.CreateDirectChannel(context.Background(), user.Id, user1.Id) require.NoError(t, err) - client.Logout() - client.Login(user3.Email, user3.Password) - _, resp, err = client.PatchChannel(directChannel.Id, channelPatch) + client.Logout(context.Background()) + client.Login(context.Background(), user3.Email, user3.Password) + _, resp, err = client.PatchChannel(context.Background(), directChannel.Id, channelPatch) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -380,7 +380,7 @@ func TestChannelUnicodeNames(t *testing.T) { Type: model.ChannelTypeOpen, TeamId: team.Id} - rchannel, resp, err := client.CreateChannel(channel) + rchannel, resp, err := client.CreateChannel(context.Background(), channel) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -395,12 +395,12 @@ func TestChannelUnicodeNames(t *testing.T) { Type: model.ChannelTypeOpen, TeamId: team.Id, } - channel, _, _ = client.CreateChannel(channel) + channel, _, _ = client.CreateChannel(context.Background(), channel) channel.Name = "\u206ahistorychannel" channel.DisplayName = "UFO's and \ufff9stuff\ufffb." - newChannel, _, err := client.UpdateChannel(channel) + newChannel, _, err := client.UpdateChannel(context.Background(), channel) require.NoError(t, err) require.Equal(t, "historychannel", newChannel.Name, "bad unicode should be filtered from name") @@ -417,7 +417,7 @@ func TestChannelUnicodeNames(t *testing.T) { *patch.Name = "\u206ecommunitychannel\u206f" *patch.DisplayName = "Natalie Tran's \ufffcAwesome Channel" - channel, _, err := client.PatchChannel(th.BasicChannel.Id, patch) + channel, _, err := client.PatchChannel(context.Background(), th.BasicChannel.Id, patch) require.NoError(t, err) require.Equal(t, "communitychannel", channel.Name, "bad unicode should be filtered from name") @@ -433,7 +433,7 @@ func TestCreateDirectChannel(t *testing.T) { user2 := th.BasicUser2 user3 := th.CreateUser() - dm, _, err := client.CreateDirectChannel(user1.Id, user2.Id) + dm, _, err := client.CreateDirectChannel(context.Background(), user1.Id, user2.Id) require.NoError(t, err) channelName := "" @@ -445,27 +445,27 @@ func TestCreateDirectChannel(t *testing.T) { require.Equal(t, channelName, dm.Name, "dm name didn't match") - _, resp, err := client.CreateDirectChannel("junk", user2.Id) + _, resp, err := client.CreateDirectChannel(context.Background(), "junk", user2.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.CreateDirectChannel(user1.Id, model.NewId()) + _, resp, err = client.CreateDirectChannel(context.Background(), user1.Id, model.NewId()) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.CreateDirectChannel(model.NewId(), user1.Id) + _, resp, err = client.CreateDirectChannel(context.Background(), model.NewId(), user1.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.CreateDirectChannel(model.NewId(), user2.Id) + _, resp, err = client.CreateDirectChannel(context.Background(), model.NewId(), user2.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - r, err := client.DoAPIPost("/channels/direct", "garbage") + r, err := client.DoAPIPost(context.Background(), "/channels/direct", "garbage") require.Error(t, err) require.Equal(t, http.StatusBadRequest, r.StatusCode) - _, _, err = th.SystemAdminClient.CreateDirectChannel(user3.Id, user2.Id) + _, _, err = th.SystemAdminClient.CreateDirectChannel(context.Background(), user3.Id, user2.Id) require.NoError(t, err) // Normal client should not be allowed to create a direct channel if users are @@ -474,15 +474,15 @@ func TestCreateDirectChannel(t *testing.T) { *cfg.TeamSettings.RestrictDirectMessage = model.DirectMessageTeam }) user4 := th.CreateUser() - _, resp, err = th.Client.CreateDirectChannel(user1.Id, user4.Id) + _, resp, err = th.Client.CreateDirectChannel(context.Background(), user1.Id, user4.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.LinkUserToTeam(user4, th.BasicTeam) - _, _, err = th.Client.CreateDirectChannel(user1.Id, user4.Id) + _, _, err = th.Client.CreateDirectChannel(context.Background(), user1.Id, user4.Id) require.NoError(t, err) - client.Logout() - _, resp, err = client.CreateDirectChannel(model.NewId(), user2.Id) + client.Logout(context.Background()) + _, resp, err = client.CreateDirectChannel(context.Background(), model.NewId(), user2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -512,16 +512,16 @@ func TestCreateDirectChannelAsGuest(t *testing.T) { guest, appErr := th.App.CreateGuest(th.Context, guest) require.Nil(t, appErr) - _, _, err := client.Login(guest.Username, "Password1") + _, _, err := client.Login(context.Background(), guest.Username, "Password1") require.NoError(t, err) t.Run("Try to created DM with not visible user", func(t *testing.T) { var resp *model.Response - _, resp, err = client.CreateDirectChannel(guest.Id, user1.Id) + _, resp, err = client.CreateDirectChannel(context.Background(), guest.Id, user1.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.CreateDirectChannel(user1.Id, guest.Id) + _, resp, err = client.CreateDirectChannel(context.Background(), user1.Id, guest.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -530,7 +530,7 @@ func TestCreateDirectChannelAsGuest(t *testing.T) { th.LinkUserToTeam(guest, th.BasicTeam) th.AddUserToChannel(guest, th.BasicChannel) - _, _, err = client.CreateDirectChannel(guest.Id, user1.Id) + _, _, err = client.CreateDirectChannel(context.Background(), guest.Id, user1.Id) require.NoError(t, err) }) } @@ -542,12 +542,12 @@ func TestDeleteDirectChannel(t *testing.T) { user := th.BasicUser user2 := th.BasicUser2 - rgc, resp, err := client.CreateDirectChannel(user.Id, user2.Id) + rgc, resp, err := client.CreateDirectChannel(context.Background(), user.Id, user2.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) require.NotNil(t, rgc, "should have created a direct channel") - _, err = client.DeleteChannel(rgc.Id) + _, err = client.DeleteChannel(context.Background(), rgc.Id) CheckErrorID(t, err, "api.channel.delete_channel.type.invalid") } @@ -561,7 +561,7 @@ func TestCreateGroupChannel(t *testing.T) { userIds := []string{user.Id, user2.Id, user3.Id} - rgc, resp, err := client.CreateGroupChannel(userIds) + rgc, resp, err := client.CreateGroupChannel(context.Background(), userIds) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -572,14 +572,14 @@ func TestCreateGroupChannel(t *testing.T) { require.Len(t, m, 3, "should have 3 channel members") // saving duplicate group channel - rgc2, _, err := client.CreateGroupChannel([]string{user3.Id, user2.Id}) + rgc2, _, err := client.CreateGroupChannel(context.Background(), []string{user3.Id, user2.Id}) require.NoError(t, err) require.Equal(t, rgc.Id, rgc2.Id, "should have returned existing channel") m2, _ := th.App.GetChannelMembersPage(th.Context, rgc2.Id, 0, 10) require.ElementsMatch(t, m, m2) - _, resp, err = client.CreateGroupChannel([]string{user2.Id}) + _, resp, err = client.CreateGroupChannel(context.Background(), []string{user2.Id}) require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -590,26 +590,26 @@ func TestCreateGroupChannel(t *testing.T) { user8 := th.CreateUser() user9 := th.CreateUser() - rgc, resp, err = client.CreateGroupChannel([]string{user.Id, user2.Id, user3.Id, user4.Id, user5.Id, user6.Id, user7.Id, user8.Id, user9.Id}) + rgc, resp, err = client.CreateGroupChannel(context.Background(), []string{user.Id, user2.Id, user3.Id, user4.Id, user5.Id, user6.Id, user7.Id, user8.Id, user9.Id}) require.Error(t, err) CheckBadRequestStatus(t, resp) require.Nil(t, rgc) - _, resp, err = client.CreateGroupChannel([]string{user.Id, user2.Id, user3.Id, GenerateTestId()}) + _, resp, err = client.CreateGroupChannel(context.Background(), []string{user.Id, user2.Id, user3.Id, GenerateTestId()}) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.CreateGroupChannel([]string{user.Id, user2.Id, user3.Id, "junk"}) + _, resp, err = client.CreateGroupChannel(context.Background(), []string{user.Id, user2.Id, user3.Id, "junk"}) require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() + client.Logout(context.Background()) - _, resp, err = client.CreateGroupChannel(userIds) + _, resp, err = client.CreateGroupChannel(context.Background(), userIds) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.CreateGroupChannel(userIds) + _, _, err = th.SystemAdminClient.CreateGroupChannel(context.Background(), userIds) require.NoError(t, err) } @@ -646,17 +646,17 @@ func TestCreateGroupChannelAsGuest(t *testing.T) { guest, appErr := th.App.CreateGuest(th.Context, guest) require.Nil(t, appErr) - _, _, err := client.Login(guest.Username, "Password1") + _, _, err := client.Login(context.Background(), guest.Username, "Password1") require.NoError(t, err) var resp *model.Response t.Run("Try to created GM with not visible users", func(t *testing.T) { - _, resp, err = client.CreateGroupChannel([]string{guest.Id, user1.Id, user2.Id, user3.Id}) + _, resp, err = client.CreateGroupChannel(context.Background(), []string{guest.Id, user1.Id, user2.Id, user3.Id}) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.CreateGroupChannel([]string{user1.Id, user2.Id, guest.Id, user3.Id}) + _, resp, err = client.CreateGroupChannel(context.Background(), []string{user1.Id, user2.Id, guest.Id, user3.Id}) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -665,17 +665,17 @@ func TestCreateGroupChannelAsGuest(t *testing.T) { th.LinkUserToTeam(guest, th.BasicTeam) th.AddUserToChannel(guest, th.BasicChannel) - _, resp, err = client.CreateGroupChannel([]string{guest.Id, user1.Id, user3.Id, user4.Id, user5.Id}) + _, resp, err = client.CreateGroupChannel(context.Background(), []string{guest.Id, user1.Id, user3.Id, user4.Id, user5.Id}) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.CreateGroupChannel([]string{user1.Id, user2.Id, guest.Id, user4.Id, user5.Id}) + _, resp, err = client.CreateGroupChannel(context.Background(), []string{user1.Id, user2.Id, guest.Id, user4.Id, user5.Id}) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("Creating GM with visible users", func(t *testing.T) { - _, _, err = client.CreateGroupChannel([]string{guest.Id, user1.Id, user2.Id, user3.Id}) + _, _, err = client.CreateGroupChannel(context.Background(), []string{guest.Id, user1.Id, user2.Id, user3.Id}) require.NoError(t, err) }) } @@ -690,11 +690,11 @@ func TestDeleteGroupChannel(t *testing.T) { userIds := []string{user.Id, user2.Id, user3.Id} th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - rgc, resp, err := th.Client.CreateGroupChannel(userIds) + rgc, resp, err := th.Client.CreateGroupChannel(context.Background(), userIds) require.NoError(t, err) CheckCreatedStatus(t, resp) require.NotNil(t, rgc, "should have created a group channel") - _, err = client.DeleteChannel(rgc.Id) + _, err = client.DeleteChannel(context.Background(), rgc.Id) CheckErrorID(t, err, "api.channel.delete_channel.type.invalid") }) @@ -705,46 +705,46 @@ func TestGetChannel(t *testing.T) { defer th.TearDown() client := th.Client - channel, _, err := client.GetChannel(th.BasicChannel.Id, "") + channel, _, err := client.GetChannel(context.Background(), th.BasicChannel.Id, "") require.NoError(t, err) require.Equal(t, th.BasicChannel.Id, channel.Id, "ids did not match") - client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) - _, _, err = client.GetChannel(th.BasicChannel.Id, "") + client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser.Id) + _, _, err = client.GetChannel(context.Background(), th.BasicChannel.Id, "") require.NoError(t, err) - channel, _, err = client.GetChannel(th.BasicPrivateChannel.Id, "") + channel, _, err = client.GetChannel(context.Background(), th.BasicPrivateChannel.Id, "") require.NoError(t, err) require.Equal(t, th.BasicPrivateChannel.Id, channel.Id, "ids did not match") - client.RemoveUserFromChannel(th.BasicPrivateChannel.Id, th.BasicUser.Id) - _, resp, err := client.GetChannel(th.BasicPrivateChannel.Id, "") + client.RemoveUserFromChannel(context.Background(), th.BasicPrivateChannel.Id, th.BasicUser.Id) + _, resp, err := client.GetChannel(context.Background(), th.BasicPrivateChannel.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetChannel(model.NewId(), "") + _, resp, err = client.GetChannel(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetChannel(th.BasicChannel.Id, "") + client.Logout(context.Background()) + _, resp, err = client.GetChannel(context.Background(), th.BasicChannel.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - client.Login(user.Email, user.Password) - _, resp, err = client.GetChannel(th.BasicChannel.Id, "") + client.Login(context.Background(), user.Email, user.Password) + _, resp, err = client.GetChannel(context.Background(), th.BasicChannel.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.GetChannel(th.BasicChannel.Id, "") + _, _, err = client.GetChannel(context.Background(), th.BasicChannel.Id, "") require.NoError(t, err) - _, _, err = client.GetChannel(th.BasicPrivateChannel.Id, "") + _, _, err = client.GetChannel(context.Background(), th.BasicPrivateChannel.Id, "") require.NoError(t, err) - _, resp, err = client.GetChannel(th.BasicUser.Id, "") + _, resp, err = client.GetChannel(context.Background(), th.BasicUser.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -759,25 +759,25 @@ func TestGetDeletedChannelsForTeam(t *testing.T) { th.LoginTeamAdmin() - channels, _, err := client.GetDeletedChannelsForTeam(team.Id, 0, 100, "") + channels, _, err := client.GetDeletedChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) numInitialChannelsForTeam := len(channels) // create and delete public channel publicChannel1 := th.CreatePublicChannel() - client.DeleteChannel(publicChannel1.Id) + client.DeleteChannel(context.Background(), publicChannel1.Id) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - channels, _, err = client.GetDeletedChannelsForTeam(team.Id, 0, 100, "") + channels, _, err = client.GetDeletedChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) require.Len(t, channels, numInitialChannelsForTeam+1, "should be 1 deleted channel") }) publicChannel2 := th.CreatePublicChannel() - client.DeleteChannel(publicChannel2.Id) + client.DeleteChannel(context.Background(), publicChannel2.Id) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - channels, _, err = client.GetDeletedChannelsForTeam(team.Id, 0, 100, "") + channels, _, err = client.GetDeletedChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) require.Len(t, channels, numInitialChannelsForTeam+2, "should be 2 deleted channels") }) @@ -785,35 +785,35 @@ func TestGetDeletedChannelsForTeam(t *testing.T) { th.LoginBasic() privateChannel1 := th.CreatePrivateChannel() - client.DeleteChannel(privateChannel1.Id) + client.DeleteChannel(context.Background(), privateChannel1.Id) - channels, _, err = client.GetDeletedChannelsForTeam(team.Id, 0, 100, "") + channels, _, err = client.GetDeletedChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) require.Len(t, channels, numInitialChannelsForTeam+3) // Login as different user and create private channel th.LoginBasic2() privateChannel2 := th.CreatePrivateChannel() - client.DeleteChannel(privateChannel2.Id) + client.DeleteChannel(context.Background(), privateChannel2.Id) // Log back in as first user th.LoginBasic() - channels, _, err = client.GetDeletedChannelsForTeam(team.Id, 0, 100, "") + channels, _, err = client.GetDeletedChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) require.Len(t, channels, numInitialChannelsForTeam+3) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - channels, _, err = client.GetDeletedChannelsForTeam(team.Id, 0, 100, "") + channels, _, err = client.GetDeletedChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) require.Len(t, channels, numInitialChannelsForTeam+2) }) - channels, _, err = client.GetDeletedChannelsForTeam(team.Id, 0, 1, "") + channels, _, err = client.GetDeletedChannelsForTeam(context.Background(), team.Id, 0, 1, "") require.NoError(t, err) require.Len(t, channels, 1, "should be one channel per page") - channels, _, err = client.GetDeletedChannelsForTeam(team.Id, 1, 1, "") + channels, _, err = client.GetDeletedChannelsForTeam(context.Background(), team.Id, 1, 1, "") require.NoError(t, err) require.Len(t, channels, 1, "should be one channel per page") } @@ -824,12 +824,12 @@ func TestGetPrivateChannelsForTeam(t *testing.T) { team := th.BasicTeam // normal user - _, resp, err := th.Client.GetPrivateChannelsForTeam(team.Id, 0, 100, "") + _, resp, err := th.Client.GetPrivateChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - channels, _, err := c.GetPrivateChannelsForTeam(team.Id, 0, 100, "") + channels, _, err := c.GetPrivateChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) // th.BasicPrivateChannel and th.BasicPrivateChannel2 require.Len(t, channels, 2, "wrong number of private channels") @@ -838,19 +838,19 @@ func TestGetPrivateChannelsForTeam(t *testing.T) { require.Equal(t, model.ChannelTypePrivate, c.Type, "should include private channels only") } - channels, _, err = c.GetPrivateChannelsForTeam(team.Id, 0, 1, "") + channels, _, err = c.GetPrivateChannelsForTeam(context.Background(), team.Id, 0, 1, "") require.NoError(t, err) require.Len(t, channels, 1, "should be one channel per page") - channels, _, err = c.GetPrivateChannelsForTeam(team.Id, 1, 1, "") + channels, _, err = c.GetPrivateChannelsForTeam(context.Background(), team.Id, 1, 1, "") require.NoError(t, err) require.Len(t, channels, 1, "should be one channel per page") - channels, _, err = c.GetPrivateChannelsForTeam(team.Id, 10000, 100, "") + channels, _, err = c.GetPrivateChannelsForTeam(context.Background(), team.Id, 10000, 100, "") require.NoError(t, err) require.Empty(t, channels, "should be no channel") - _, resp, err = c.GetPrivateChannelsForTeam("junk", 0, 100, "") + _, resp, err = c.GetPrivateChannelsForTeam(context.Background(), "junk", 0, 100, "") require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -864,7 +864,7 @@ func TestGetPublicChannelsForTeam(t *testing.T) { publicChannel1 := th.BasicChannel publicChannel2 := th.BasicChannel2 - channels, _, err := client.GetPublicChannelsForTeam(team.Id, 0, 100, "") + channels, _, err := client.GetPublicChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) require.Len(t, channels, 4, "wrong path") @@ -886,7 +886,7 @@ func TestGetPublicChannelsForTeam(t *testing.T) { require.True(t, foundPublicChannel2, "failed to find publicChannel2") privateChannel := th.CreatePrivateChannel() - channels, _, err = client.GetPublicChannelsForTeam(team.Id, 0, 100, "") + channels, _, err = client.GetPublicChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) require.Len(t, channels, 4, "incorrect length of team public channels") @@ -895,39 +895,39 @@ func TestGetPublicChannelsForTeam(t *testing.T) { require.NotEqual(t, privateChannel.DisplayName, c.DisplayName, "should not match private channel display name") } - channels, _, err = client.GetPublicChannelsForTeam(team.Id, 0, 1, "") + channels, _, err = client.GetPublicChannelsForTeam(context.Background(), team.Id, 0, 1, "") require.NoError(t, err) require.Len(t, channels, 1, "should be one channel per page") - channels, _, err = client.GetPublicChannelsForTeam(team.Id, 1, 1, "") + channels, _, err = client.GetPublicChannelsForTeam(context.Background(), team.Id, 1, 1, "") require.NoError(t, err) require.Len(t, channels, 1, "should be one channel per page") - channels, _, err = client.GetPublicChannelsForTeam(team.Id, 10000, 100, "") + channels, _, err = client.GetPublicChannelsForTeam(context.Background(), team.Id, 10000, 100, "") require.NoError(t, err) require.Empty(t, channels, "should be no channel") - _, resp, err := client.GetPublicChannelsForTeam("junk", 0, 100, "") + _, resp, err := client.GetPublicChannelsForTeam(context.Background(), "junk", 0, 100, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetPublicChannelsForTeam(model.NewId(), 0, 100, "") + _, resp, err = client.GetPublicChannelsForTeam(context.Background(), model.NewId(), 0, 100, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetPublicChannelsForTeam(team.Id, 0, 100, "") + client.Logout(context.Background()) + _, resp, err = client.GetPublicChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - client.Login(user.Email, user.Password) - _, resp, err = client.GetPublicChannelsForTeam(team.Id, 0, 100, "") + client.Login(context.Background(), user.Email, user.Password) + _, resp, err = client.GetPublicChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.GetPublicChannelsForTeam(team.Id, 0, 100, "") + _, _, err = client.GetPublicChannelsForTeam(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) }) } @@ -940,7 +940,7 @@ func TestGetPublicChannelsByIdsForTeam(t *testing.T) { input := []string{th.BasicChannel.Id} output := []string{th.BasicChannel.DisplayName} - channels, _, err := client.GetPublicChannelsByIdsForTeam(teamId, input) + channels, _, err := client.GetPublicChannelsByIdsForTeam(context.Background(), teamId, input) require.NoError(t, err) require.Len(t, channels, 1, "should return 1 channel") require.Equal(t, output[0], channels[0].DisplayName, "missing channel") @@ -951,7 +951,7 @@ func TestGetPublicChannelsByIdsForTeam(t *testing.T) { output = append(output, th.BasicChannel2.DisplayName) sort.Strings(output) - channels, _, err = client.GetPublicChannelsByIdsForTeam(teamId, input) + channels, _, err = client.GetPublicChannelsByIdsForTeam(context.Background(), teamId, input) require.NoError(t, err) require.Len(t, channels, 2, "should return 2 channels") @@ -959,33 +959,33 @@ func TestGetPublicChannelsByIdsForTeam(t *testing.T) { require.Equal(t, output[i], c.DisplayName, "missing channel") } - _, resp, err := client.GetPublicChannelsByIdsForTeam(GenerateTestId(), input) + _, resp, err := client.GetPublicChannelsByIdsForTeam(context.Background(), GenerateTestId(), input) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetPublicChannelsByIdsForTeam(teamId, []string{}) + _, resp, err = client.GetPublicChannelsByIdsForTeam(context.Background(), teamId, []string{}) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetPublicChannelsByIdsForTeam(teamId, []string{"junk"}) + _, resp, err = client.GetPublicChannelsByIdsForTeam(context.Background(), teamId, []string{"junk"}) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetPublicChannelsByIdsForTeam(teamId, []string{GenerateTestId()}) + _, resp, err = client.GetPublicChannelsByIdsForTeam(context.Background(), teamId, []string{GenerateTestId()}) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetPublicChannelsByIdsForTeam(teamId, []string{th.BasicPrivateChannel.Id}) + _, resp, err = client.GetPublicChannelsByIdsForTeam(context.Background(), teamId, []string{th.BasicPrivateChannel.Id}) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() + client.Logout(context.Background()) - _, resp, err = client.GetPublicChannelsByIdsForTeam(teamId, input) + _, resp, err = client.GetPublicChannelsByIdsForTeam(context.Background(), teamId, input) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetPublicChannelsByIdsForTeam(teamId, input) + _, _, err = th.SystemAdminClient.GetPublicChannelsByIdsForTeam(context.Background(), teamId, input) require.NoError(t, err) } @@ -995,7 +995,7 @@ func TestGetChannelsForTeamForUser(t *testing.T) { client := th.Client t.Run("get channels for the team for user", func(t *testing.T) { - channels, resp, err := client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, false, "") + channels, resp, err := client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, false, "") require.NoError(t, err) found := make([]bool, 3) @@ -1015,26 +1015,26 @@ func TestGetChannelsForTeamForUser(t *testing.T) { require.True(t, f, "missing a channel") } - channels, resp, _ = client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, false, resp.Etag) + channels, resp, _ = client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, false, resp.Etag) CheckEtag(t, channels, resp) - _, resp, err = client.GetChannelsForTeamForUser(th.BasicTeam.Id, "junk", false, "") + _, resp, err = client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, "junk", false, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelsForTeamForUser("junk", th.BasicUser.Id, false, "") + _, resp, err = client.GetChannelsForTeamForUser(context.Background(), "junk", th.BasicUser.Id, false, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser2.Id, false, "") + _, resp, err = client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser2.Id, false, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetChannelsForTeamForUser(model.NewId(), th.BasicUser.Id, false, "") + _, resp, err = client.GetChannelsForTeamForUser(context.Background(), model.NewId(), th.BasicUser.Id, false, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, false, "") + _, _, err = th.SystemAdminClient.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, false, "") require.NoError(t, err) }) @@ -1048,22 +1048,22 @@ func TestGetChannelsForTeamForUser(t *testing.T) { } th.App.CreateChannel(th.Context, testChannel, true) defer th.App.PermanentDeleteChannel(th.Context, testChannel) - channels, _, err := client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, false, "") + channels, _, err := client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, false, "") require.NoError(t, err) assert.Equal(t, 6, len(channels)) th.App.DeleteChannel(th.Context, testChannel, th.BasicUser.Id) - channels, _, err = client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, false, "") + channels, _, err = client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, false, "") require.NoError(t, err) assert.Equal(t, 5, len(channels)) // Should return all channels including basicDeleted. - channels, _, err = client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, true, "") + channels, _, err = client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, true, "") require.NoError(t, err) assert.Equal(t, 7, len(channels)) // Should stil return all channels including basicDeleted. now := time.Now().Add(-time.Minute).Unix() * 1000 - client.GetChannelsForTeamAndUserWithLastDeleteAt(th.BasicTeam.Id, th.BasicUser.Id, + client.GetChannelsForTeamAndUserWithLastDeleteAt(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, true, int(now), "") assert.Equal(t, 7, len(channels)) }) @@ -1083,7 +1083,7 @@ func TestGetChannelsForUser(t *testing.T) { th.App.AddUserToChannel(th.Context, th.BasicUser, ch1, false) th.App.AddUserToChannel(th.Context, th.BasicUser, ch2, false) - channels, _, err := client.GetChannelsForUserWithLastDeleteAt(th.BasicUser.Id, 0) + channels, _, err := client.GetChannelsForUserWithLastDeleteAt(context.Background(), th.BasicUser.Id, 0) require.NoError(t, err) numPrivate := 0 @@ -1116,7 +1116,7 @@ func TestGetChannelsForUser(t *testing.T) { th.App.AddUserToChannel(th.Context, th.BasicUser, ch1, false) } - channels, _, err = client.GetChannelsForUserWithLastDeleteAt(th.BasicUser.Id, 0) + channels, _, err = client.GetChannelsForUserWithLastDeleteAt(context.Background(), th.BasicUser.Id, 0) require.NoError(t, err) assert.Len(t, channels, 100) } @@ -1128,7 +1128,7 @@ func TestGetAllChannels(t *testing.T) { client := th.Client th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - channels, _, err := client.GetAllChannels(0, 20, "") + channels, _, err := client.GetAllChannels(context.Background(), 0, 20, "") require.NoError(t, err) // At least, all the not-deleted channels created during the InitBasic @@ -1137,19 +1137,19 @@ func TestGetAllChannels(t *testing.T) { require.NotEqual(t, c.TeamId, "") } - channels, _, err = client.GetAllChannels(0, 10, "") + channels, _, err = client.GetAllChannels(context.Background(), 0, 10, "") require.NoError(t, err) require.True(t, len(channels) >= 3) - channels, _, err = client.GetAllChannels(1, 1, "") + channels, _, err = client.GetAllChannels(context.Background(), 1, 1, "") require.NoError(t, err) require.Len(t, channels, 1) - channels, _, err = client.GetAllChannels(10000, 10000, "") + channels, _, err = client.GetAllChannels(context.Background(), 10000, 10000, "") require.NoError(t, err) require.Empty(t, channels) - channels, _, err = client.GetAllChannels(0, 10000, "") + channels, _, err = client.GetAllChannels(context.Background(), 0, 10000, "") require.NoError(t, err) beforeCount := len(channels) @@ -1160,10 +1160,10 @@ func TestGetAllChannels(t *testing.T) { deletedChannel = channels[1].Channel } - _, err = client.DeleteChannel(deletedChannel.Id) + _, err = client.DeleteChannel(context.Background(), deletedChannel.Id) require.NoError(t, err) - channels, _, err = client.GetAllChannels(0, 10000, "") + channels, _, err = client.GetAllChannels(context.Background(), 0, 10000, "") var ids []string for _, item := range channels { ids = append(ids, item.Channel.Id) @@ -1172,7 +1172,7 @@ func TestGetAllChannels(t *testing.T) { require.Len(t, channels, beforeCount-1) require.NotContains(t, ids, deletedChannel.Id) - channels, _, err = client.GetAllChannelsIncludeDeleted(0, 10000, "") + channels, _, err = client.GetAllChannelsIncludeDeleted(context.Background(), 0, 10000, "") ids = []string{} for _, item := range channels { ids = append(ids, item.Channel.Id) @@ -1182,11 +1182,11 @@ func TestGetAllChannels(t *testing.T) { require.Contains(t, ids, deletedChannel.Id) }) - _, resp, err := client.GetAllChannels(0, 20, "") + _, resp, err := client.GetAllChannels(context.Background(), 0, 20, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - sysManagerChannels, resp, err := th.SystemManagerClient.GetAllChannels(0, 10000, "") + sysManagerChannels, resp, err := th.SystemManagerClient.GetAllChannels(context.Background(), 0, 10000, "") require.NoError(t, err) CheckOKStatus(t, resp) policyChannel := (sysManagerChannels)[0] @@ -1200,11 +1200,11 @@ func TestGetAllChannels(t *testing.T) { require.NoError(t, err) t.Run("exclude policy constrained", func(t *testing.T) { - _, resp, err := th.SystemManagerClient.GetAllChannelsExcludePolicyConstrained(0, 10000, "") + _, resp, err := th.SystemManagerClient.GetAllChannelsExcludePolicyConstrained(context.Background(), 0, 10000, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - channels, resp, err := th.SystemAdminClient.GetAllChannelsExcludePolicyConstrained(0, 10000, "") + channels, resp, err := th.SystemAdminClient.GetAllChannelsExcludePolicyConstrained(context.Background(), 0, 10000, "") require.NoError(t, err) CheckOKStatus(t, resp) found := false @@ -1218,7 +1218,7 @@ func TestGetAllChannels(t *testing.T) { }) t.Run("does not return policy ID", func(t *testing.T) { - channels, resp, err := th.SystemManagerClient.GetAllChannels(0, 10000, "") + channels, resp, err := th.SystemManagerClient.GetAllChannels(context.Background(), 0, 10000, "") require.NoError(t, err) CheckOKStatus(t, resp) found := false @@ -1233,7 +1233,7 @@ func TestGetAllChannels(t *testing.T) { }) t.Run("returns policy ID", func(t *testing.T) { - channels, resp, err := th.SystemAdminClient.GetAllChannels(0, 10000, "") + channels, resp, err := th.SystemAdminClient.GetAllChannels(context.Background(), 0, 10000, "") require.NoError(t, err) CheckOKStatus(t, resp) found := false @@ -1253,7 +1253,7 @@ func TestGetAllChannelsWithCount(t *testing.T) { defer th.TearDown() client := th.Client - channels, total, _, err := th.SystemAdminClient.GetAllChannelsWithCount(0, 20, "") + channels, total, _, err := th.SystemAdminClient.GetAllChannelsWithCount(context.Background(), 0, 20, "") require.NoError(t, err) // At least, all the not-deleted channels created during the InitBasic @@ -1263,19 +1263,19 @@ func TestGetAllChannelsWithCount(t *testing.T) { } require.Equal(t, int64(6), total) - channels, _, _, err = th.SystemAdminClient.GetAllChannelsWithCount(0, 10, "") + channels, _, _, err = th.SystemAdminClient.GetAllChannelsWithCount(context.Background(), 0, 10, "") require.NoError(t, err) require.True(t, len(channels) >= 3) - channels, _, _, err = th.SystemAdminClient.GetAllChannelsWithCount(1, 1, "") + channels, _, _, err = th.SystemAdminClient.GetAllChannelsWithCount(context.Background(), 1, 1, "") require.NoError(t, err) require.Len(t, channels, 1) - channels, _, _, err = th.SystemAdminClient.GetAllChannelsWithCount(10000, 10000, "") + channels, _, _, err = th.SystemAdminClient.GetAllChannelsWithCount(context.Background(), 10000, 10000, "") require.NoError(t, err) require.Empty(t, channels) - _, _, resp, err := client.GetAllChannelsWithCount(0, 20, "") + _, _, resp, err := client.GetAllChannelsWithCount(context.Background(), 0, 20, "") require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -1287,7 +1287,7 @@ func TestSearchChannels(t *testing.T) { search := &model.ChannelSearch{Term: th.BasicChannel.Name} - channels, _, err := client.SearchChannels(th.BasicTeam.Id, search) + channels, _, err := client.SearchChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) found := false @@ -1301,7 +1301,7 @@ func TestSearchChannels(t *testing.T) { require.True(t, found, "didn't find channel") search.Term = th.BasicPrivateChannel.Name - channels, _, err = client.SearchChannels(th.BasicTeam.Id, search) + channels, _, err = client.SearchChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) found = false @@ -1313,19 +1313,19 @@ func TestSearchChannels(t *testing.T) { require.False(t, found, "shouldn't find private channel") search.Term = "" - _, _, err = client.SearchChannels(th.BasicTeam.Id, search) + _, _, err = client.SearchChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) search.Term = th.BasicChannel.Name - _, resp, err := client.SearchChannels(model.NewId(), search) + _, resp, err := client.SearchChannels(context.Background(), model.NewId(), search) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.SearchChannels("junk", search) + _, resp, err = client.SearchChannels(context.Background(), "junk", search) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, _, err = th.SystemAdminClient.SearchChannels(th.BasicTeam.Id, search) + _, _, err = th.SystemAdminClient.SearchChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) // Check the appropriate permissions are enforced. @@ -1339,7 +1339,7 @@ func TestSearchChannels(t *testing.T) { t.Run("Search for a BasicChannel, which the user is a member of", func(t *testing.T) { search.Term = th.BasicChannel.Name - channelList, _, err := client.SearchChannels(th.BasicTeam.Id, search) + channelList, _, err := client.SearchChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) channelNames := []string{} @@ -1353,7 +1353,7 @@ func TestSearchChannels(t *testing.T) { th.App.RemoveUserFromChannel(th.Context, th.BasicUser.Id, th.BasicUser.Id, th.BasicChannel) search.Term = th.BasicChannel.Name - channelList, _, err := client.SearchChannels(th.BasicTeam.Id, search) + channelList, _, err := client.SearchChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) channelNames := []string{} @@ -1374,29 +1374,29 @@ func TestSearchChannels(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.GuestAccountsSettings.Enable = true }) guest := th.CreateUser() - _, appErr := th.SystemAdminClient.DemoteUserToGuest(guest.Id) + _, appErr := th.SystemAdminClient.DemoteUserToGuest(context.Background(), guest.Id) require.NoError(t, appErr) - _, resp, err := th.SystemAdminClient.AddTeamMember(th.BasicTeam.Id, guest.Id) + _, resp, err := th.SystemAdminClient.AddTeamMember(context.Background(), th.BasicTeam.Id, guest.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = client.Login(guest.Username, guest.Password) + _, resp, err = client.Login(context.Background(), guest.Username, guest.Password) require.NoError(t, err) CheckOKStatus(t, resp) search.Term = th.BasicChannel2.Name - channelList, _, err := client.SearchChannels(th.BasicTeam.Id, search) + channelList, _, err := client.SearchChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) require.Empty(t, channelList) - _, resp, err = th.SystemAdminClient.AddChannelMember(th.BasicChannel2.Id, guest.Id) + _, resp, err = th.SystemAdminClient.AddChannelMember(context.Background(), th.BasicChannel2.Id, guest.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) search.Term = th.BasicChannel2.Name - channelList, _, err = client.SearchChannels(th.BasicTeam.Id, search) + channelList, _, err = client.SearchChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) require.NotEmpty(t, channelList) @@ -1411,9 +1411,9 @@ func TestSearchArchivedChannels(t *testing.T) { search := &model.ChannelSearch{Term: th.BasicChannel.Name} - client.DeleteChannel(th.BasicChannel.Id) + client.DeleteChannel(context.Background(), th.BasicChannel.Id) - channels, _, err := client.SearchArchivedChannels(th.BasicTeam.Id, search) + channels, _, err := client.SearchArchivedChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) found := false @@ -1428,9 +1428,9 @@ func TestSearchArchivedChannels(t *testing.T) { require.True(t, found) search.Term = th.BasicPrivateChannel.Name - client.DeleteChannel(th.BasicPrivateChannel.Id) + client.DeleteChannel(context.Background(), th.BasicPrivateChannel.Id) - channels, _, err = client.SearchArchivedChannels(th.BasicTeam.Id, search) + channels, _, err = client.SearchArchivedChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) found = false @@ -1443,19 +1443,19 @@ func TestSearchArchivedChannels(t *testing.T) { require.True(t, found) search.Term = "" - _, _, err = client.SearchArchivedChannels(th.BasicTeam.Id, search) + _, _, err = client.SearchArchivedChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) search.Term = th.BasicDeletedChannel.Name - _, resp, err := client.SearchArchivedChannels(model.NewId(), search) + _, resp, err := client.SearchArchivedChannels(context.Background(), model.NewId(), search) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.SearchArchivedChannels("junk", search) + _, resp, err = client.SearchArchivedChannels(context.Background(), "junk", search) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, _, err = th.SystemAdminClient.SearchArchivedChannels(th.BasicTeam.Id, search) + _, _, err = th.SystemAdminClient.SearchArchivedChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) // Check the appropriate permissions are enforced. @@ -1469,7 +1469,7 @@ func TestSearchArchivedChannels(t *testing.T) { t.Run("Search for a BasicDeletedChannel, which the user is a member of", func(t *testing.T) { search.Term = th.BasicDeletedChannel.Name - channelList, _, err := client.SearchArchivedChannels(th.BasicTeam.Id, search) + channelList, _, err := client.SearchArchivedChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) channelNames := []string{} @@ -1483,7 +1483,7 @@ func TestSearchArchivedChannels(t *testing.T) { th.App.RemoveUserFromChannel(th.Context, th.BasicUser.Id, th.BasicUser.Id, th.BasicDeletedChannel) search.Term = th.BasicDeletedChannel.Name - channelList, _, err := client.SearchArchivedChannels(th.BasicTeam.Id, search) + channelList, _, err := client.SearchArchivedChannels(context.Background(), th.BasicTeam.Id, search) require.NoError(t, err) channelNames := []string{} @@ -1500,7 +1500,7 @@ func TestSearchAllChannels(t *testing.T) { defer th.TearDown() client := th.Client - openChannel, _, err := th.SystemAdminClient.CreateChannel(&model.Channel{ + openChannel, _, err := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "SearchAllChannels-FOOBARDISPLAYNAME", Name: "whatever", Type: model.ChannelTypeOpen, @@ -1508,7 +1508,7 @@ func TestSearchAllChannels(t *testing.T) { }) require.NoError(t, err) - privateChannel, _, err := th.SystemAdminClient.CreateChannel(&model.Channel{ + privateChannel, _, err := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "SearchAllChannels-private1", Name: "private1", Type: model.ChannelTypePrivate, @@ -1517,7 +1517,7 @@ func TestSearchAllChannels(t *testing.T) { require.NoError(t, err) team := th.CreateTeam() - privateChannel2, _, err := th.SystemAdminClient.CreateChannel(&model.Channel{ + privateChannel2, _, err := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "dn_private2", Name: "private2", Type: model.ChannelTypePrivate, @@ -1527,7 +1527,7 @@ func TestSearchAllChannels(t *testing.T) { th.LinkUserToTeam(th.SystemAdminUser, team) th.LinkUserToTeam(th.SystemAdminUser, th.BasicTeam) - groupConstrainedChannel, _, err := th.SystemAdminClient.CreateChannel(&model.Channel{ + groupConstrainedChannel, _, err := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "SearchAllChannels-groupConstrained-1", Name: "groupconstrained1", Type: model.ChannelTypePrivate, @@ -1650,7 +1650,7 @@ func TestSearchAllChannels(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.Description, func(t *testing.T) { var channels model.ChannelListWithTeamData - channels, _, err = th.SystemAdminClient.SearchAllChannels(testCase.Search) + channels, _, err = th.SystemAdminClient.SearchAllChannels(context.Background(), testCase.Search) require.NoError(t, err) assert.Equal(t, len(testCase.ExpectedChannelIds), len(channels)) actualChannelIds := []string{} @@ -1661,25 +1661,25 @@ func TestSearchAllChannels(t *testing.T) { }) } - userChannels, _, err := th.SystemAdminClient.SearchAllChannelsForUser("private") + userChannels, _, err := th.SystemAdminClient.SearchAllChannelsForUser(context.Background(), "private") require.NoError(t, err) assert.Len(t, userChannels, 2) - userChannels, _, err = th.SystemAdminClient.SearchAllChannelsForUser("FOOBARDISPLAYNAME") + userChannels, _, err = th.SystemAdminClient.SearchAllChannelsForUser(context.Background(), "FOOBARDISPLAYNAME") require.NoError(t, err) assert.Len(t, userChannels, 1) // Searching with no terms returns all default channels - allChannels, _, err := th.SystemAdminClient.SearchAllChannels(&model.ChannelSearch{Term: ""}) + allChannels, _, err := th.SystemAdminClient.SearchAllChannels(context.Background(), &model.ChannelSearch{Term: ""}) require.NoError(t, err) assert.True(t, len(allChannels) >= 3) - _, resp, err := client.SearchAllChannels(&model.ChannelSearch{Term: ""}) + _, resp, err := client.SearchAllChannels(context.Background(), &model.ChannelSearch{Term: ""}) require.Error(t, err) CheckForbiddenStatus(t, resp) // Choose a policy which the system manager can read - sysManagerChannels, resp, err := th.SystemManagerClient.GetAllChannels(0, 10000, "") + sysManagerChannels, resp, err := th.SystemManagerClient.GetAllChannels(context.Background(), 0, 10000, "") require.NoError(t, err) CheckOKStatus(t, resp) policyChannel := sysManagerChannels[0] @@ -1693,7 +1693,7 @@ func TestSearchAllChannels(t *testing.T) { require.NoError(t, savePolicyErr) t.Run("does not return policy ID", func(t *testing.T) { - channels, resp, err := th.SystemManagerClient.SearchAllChannels(&model.ChannelSearch{Term: policyChannel.Name}) + channels, resp, err := th.SystemManagerClient.SearchAllChannels(context.Background(), &model.ChannelSearch{Term: policyChannel.Name}) require.NoError(t, err) CheckOKStatus(t, resp) found := false @@ -1707,7 +1707,7 @@ func TestSearchAllChannels(t *testing.T) { require.True(t, found) }) t.Run("returns policy ID", func(t *testing.T) { - channels, resp, err := th.SystemAdminClient.SearchAllChannels(&model.ChannelSearch{Term: policyChannel.Name}) + channels, resp, err := th.SystemAdminClient.SearchAllChannels(context.Background(), &model.ChannelSearch{Term: policyChannel.Name}) require.NoError(t, err) CheckOKStatus(t, resp) found := false @@ -1731,12 +1731,12 @@ func TestSearchAllChannelsPaged(t *testing.T) { search.Term = "" search.Page = model.NewInt(0) search.PerPage = model.NewInt(2) - channelsWithCount, _, err := th.SystemAdminClient.SearchAllChannelsPaged(search) + channelsWithCount, _, err := th.SystemAdminClient.SearchAllChannelsPaged(context.Background(), search) require.NoError(t, err) require.Len(t, channelsWithCount.Channels, 2) search.Term = th.BasicChannel.Name - _, resp, err := client.SearchAllChannels(search) + _, resp, err := client.SearchAllChannels(context.Background(), search) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -1749,26 +1749,26 @@ func TestSearchGroupChannels(t *testing.T) { u1 := th.CreateUserWithClient(th.SystemAdminClient) // Create a group channel in which base user belongs but not sysadmin - gc1, _, err := th.Client.CreateGroupChannel([]string{th.BasicUser.Id, th.BasicUser2.Id, u1.Id}) + gc1, _, err := th.Client.CreateGroupChannel(context.Background(), []string{th.BasicUser.Id, th.BasicUser2.Id, u1.Id}) require.NoError(t, err) - defer th.Client.DeleteChannel(gc1.Id) + defer th.Client.DeleteChannel(context.Background(), gc1.Id) - gc2, _, err := th.Client.CreateGroupChannel([]string{th.BasicUser.Id, th.BasicUser2.Id, th.SystemAdminUser.Id}) + gc2, _, err := th.Client.CreateGroupChannel(context.Background(), []string{th.BasicUser.Id, th.BasicUser2.Id, th.SystemAdminUser.Id}) require.NoError(t, err) - defer th.Client.DeleteChannel(gc2.Id) + defer th.Client.DeleteChannel(context.Background(), gc2.Id) search := &model.ChannelSearch{Term: th.BasicUser2.Username} // sysadmin should only find gc2 as he doesn't belong to gc1 - channels, _, err := th.SystemAdminClient.SearchGroupChannels(search) + channels, _, err := th.SystemAdminClient.SearchGroupChannels(context.Background(), search) require.NoError(t, err) assert.Len(t, channels, 1) assert.Equal(t, channels[0].Id, gc2.Id) // basic user should find both - client.Login(th.BasicUser.Username, th.BasicUser.Password) - channels, _, err = client.SearchGroupChannels(search) + client.Login(context.Background(), th.BasicUser.Username, th.BasicUser.Password) + channels, _, err = client.SearchGroupChannels(context.Background(), search) require.NoError(t, err) assert.Len(t, channels, 2) @@ -1780,7 +1780,7 @@ func TestSearchGroupChannels(t *testing.T) { // searching for sysadmin, it should only find gc1 search = &model.ChannelSearch{Term: th.SystemAdminUser.Username} - channels, _, err = client.SearchGroupChannels(search) + channels, _, err = client.SearchGroupChannels(context.Background(), search) require.NoError(t, err) assert.Len(t, channels, 1) @@ -1788,14 +1788,14 @@ func TestSearchGroupChannels(t *testing.T) { // with an empty search, response should be empty search = &model.ChannelSearch{Term: ""} - channels, _, err = client.SearchGroupChannels(search) + channels, _, err = client.SearchGroupChannels(context.Background(), search) require.NoError(t, err) assert.Empty(t, channels) // search unprivileged, forbidden - th.Client.Logout() - _, resp, err := client.SearchAllChannels(search) + th.Client.Logout(context.Background()) + _, resp, err := client.SearchAllChannels(context.Background(), search) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -1811,7 +1811,7 @@ func TestDeleteChannel(t *testing.T) { // successful delete of public channel th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { publicChannel1 := th.CreatePublicChannel() - _, err := client.DeleteChannel(publicChannel1.Id) + _, err := client.DeleteChannel(context.Background(), publicChannel1.Id) require.NoError(t, err) ch, appErr := th.App.GetChannel(th.Context, publicChannel1.Id) @@ -1819,24 +1819,24 @@ func TestDeleteChannel(t *testing.T) { require.True(t, ch.DeleteAt != 0, "should have returned one with a populated DeleteAt.") post1 := &model.Post{ChannelId: publicChannel1.Id, Message: "a" + GenerateTestId() + "a"} - _, resp, _ := client.CreatePost(post1) + _, resp, _ := client.CreatePost(context.Background(), post1) require.NotNil(t, resp, "expected response to not be nil") // successful delete of private channel privateChannel2 := th.CreatePrivateChannel() - _, err = client.DeleteChannel(privateChannel2.Id) + _, err = client.DeleteChannel(context.Background(), privateChannel2.Id) require.NoError(t, err) // successful delete of channel with multiple members publicChannel3 := th.CreatePublicChannel() th.App.AddUserToChannel(th.Context, user, publicChannel3, false) th.App.AddUserToChannel(th.Context, user2, publicChannel3, false) - _, err = client.DeleteChannel(publicChannel3.Id) + _, err = client.DeleteChannel(context.Background(), publicChannel3.Id) require.NoError(t, err) // default channel cannot be deleted. defaultChannel, _ := th.App.GetChannelByName(th.Context, model.DefaultChannelName, team.Id, false) - resp, err = client.DeleteChannel(defaultChannel.Id) + resp, err = client.DeleteChannel(context.Background(), defaultChannel.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -1848,9 +1848,9 @@ func TestDeleteChannel(t *testing.T) { Type: model.ChannelTypeOpen, TeamId: sdTeam.Id, } - sdPublicChannel, _, err = c.CreateChannel(sdPublicChannel) + sdPublicChannel, _, err = c.CreateChannel(context.Background(), sdPublicChannel) require.NoError(t, err) - _, err = client.DeleteChannel(sdPublicChannel.Id) + _, err = client.DeleteChannel(context.Background(), sdPublicChannel.Id) require.NoError(t, err) sdPrivateChannel := &model.Channel{ @@ -1859,32 +1859,32 @@ func TestDeleteChannel(t *testing.T) { Type: model.ChannelTypePrivate, TeamId: sdTeam.Id, } - sdPrivateChannel, _, err = c.CreateChannel(sdPrivateChannel) + sdPrivateChannel, _, err = c.CreateChannel(context.Background(), sdPrivateChannel) require.NoError(t, err) - _, err = client.DeleteChannel(sdPrivateChannel.Id) + _, err = client.DeleteChannel(context.Background(), sdPrivateChannel.Id) require.NoError(t, err) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { th.LoginBasic() publicChannel5 := th.CreatePublicChannel() - c.Logout() + c.Logout(context.Background()) - c.Login(user.Id, user.Password) - resp, err := c.DeleteChannel(publicChannel5.Id) + c.Login(context.Background(), user.Id, user.Password) + resp, err := c.DeleteChannel(context.Background(), publicChannel5.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - resp, err = c.DeleteChannel("junk") + resp, err = c.DeleteChannel(context.Background(), "junk") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - c.Logout() - resp, err = c.DeleteChannel(GenerateTestId()) + c.Logout(context.Background()) + resp, err = c.DeleteChannel(context.Background(), GenerateTestId()) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, err = client.DeleteChannel(publicChannel5.Id) + _, err = client.DeleteChannel(context.Background(), publicChannel5.Id) require.NoError(t, err) }) @@ -1914,10 +1914,10 @@ func TestDeleteChannel2(t *testing.T) { th.App.AddUserToChannel(th.Context, user, privateChannel7, false) // successful delete by user - _, err := client.DeleteChannel(publicChannel6.Id) + _, err := client.DeleteChannel(context.Background(), publicChannel6.Id) require.NoError(t, err) - _, err = client.DeleteChannel(privateChannel7.Id) + _, err = client.DeleteChannel(context.Background(), privateChannel7.Id) require.NoError(t, err) // Restrict permissions to Channel Admins @@ -1934,11 +1934,11 @@ func TestDeleteChannel2(t *testing.T) { th.App.AddUserToChannel(th.Context, user, privateChannel7, false) // cannot delete by user - resp, err := client.DeleteChannel(publicChannel6.Id) + resp, err := client.DeleteChannel(context.Background(), publicChannel6.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = client.DeleteChannel(privateChannel7.Id) + resp, err = client.DeleteChannel(context.Background(), privateChannel7.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -1947,10 +1947,10 @@ func TestDeleteChannel2(t *testing.T) { th.MakeUserChannelAdmin(user, privateChannel7) th.App.Srv().Store().Channel().ClearCaches() - _, err = client.DeleteChannel(publicChannel6.Id) + _, err = client.DeleteChannel(context.Background(), publicChannel6.Id) require.NoError(t, err) - _, err = client.DeleteChannel(privateChannel7.Id) + _, err = client.DeleteChannel(context.Background(), privateChannel7.Id) require.NoError(t, err) // Make sure team admins don't have permission to delete channels. @@ -1959,13 +1959,13 @@ func TestDeleteChannel2(t *testing.T) { // last member of a public channel should have required permission to delete publicChannel6 = th.CreateChannelWithClient(th.Client, model.ChannelTypeOpen) - resp, err = client.DeleteChannel(publicChannel6.Id) + resp, err = client.DeleteChannel(context.Background(), publicChannel6.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) // last member of a private channel should not be able to delete it if they don't have required permissions privateChannel7 = th.CreateChannelWithClient(th.Client, model.ChannelTypePrivate) - resp, err = client.DeleteChannel(privateChannel7.Id) + resp, err = client.DeleteChannel(context.Background(), privateChannel7.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -1983,26 +1983,26 @@ func TestPermanentDeleteChannel(t *testing.T) { publicChannel1 := th.CreatePublicChannel() t.Run("Permanent deletion not available through API if EnableAPIChannelDeletion is not set", func(t *testing.T) { - resp, err := th.SystemAdminClient.PermanentDeleteChannel(publicChannel1.Id) + resp, err := th.SystemAdminClient.PermanentDeleteChannel(context.Background(), publicChannel1.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("Permanent deletion available through local mode even if EnableAPIChannelDeletion is not set", func(t *testing.T) { - _, err := th.LocalClient.PermanentDeleteChannel(publicChannel1.Id) + _, err := th.LocalClient.PermanentDeleteChannel(context.Background(), publicChannel1.Id) require.NoError(t, err) }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableAPIChannelDeletion = true }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { publicChannel := th.CreatePublicChannel() - _, err := c.PermanentDeleteChannel(publicChannel.Id) + _, err := c.PermanentDeleteChannel(context.Background(), publicChannel.Id) require.NoError(t, err) _, appErr := th.App.GetChannel(th.Context, publicChannel.Id) assert.NotNil(t, appErr) - resp, err := c.PermanentDeleteChannel("junk") + resp, err := c.PermanentDeleteChannel(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) }, "Permanent deletion with EnableAPIChannelDeletion set") @@ -2032,7 +2032,7 @@ func TestUpdateChannelPrivacy(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { - _, resp, err := th.Client.UpdateChannelPrivacy(tc.channel.Id, tc.expectedPrivacy) + _, resp, err := th.Client.UpdateChannelPrivacy(context.Background(), tc.channel.Id, tc.expectedPrivacy) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -2050,7 +2050,7 @@ func TestUpdateChannelPrivacy(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { - _, resp, err := client.UpdateChannelPrivacy(tc.channel.Id, tc.expectedPrivacy) + _, resp, err := client.UpdateChannelPrivacy(context.Background(), tc.channel.Id, tc.expectedPrivacy) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -2066,7 +2066,7 @@ func TestUpdateChannelPrivacy(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { - updatedChannel, _, err := client.UpdateChannelPrivacy(tc.channel.Id, tc.expectedPrivacy) + updatedChannel, _, err := client.UpdateChannelPrivacy(context.Background(), tc.channel.Id, tc.expectedPrivacy) require.NoError(t, err) assert.Equal(t, tc.expectedPrivacy, updatedChannel.Type) updatedChannel, appErr := th.App.GetChannel(th.Context, tc.channel.Id) @@ -2085,19 +2085,19 @@ func TestUpdateChannelPrivacy(t *testing.T) { th.RemovePermissionFromRole(model.PermissionConvertPublicChannelToPrivate.Id, model.TeamAdminRoleId) th.RemovePermissionFromRole(model.PermissionConvertPrivateChannelToPublic.Id, model.TeamAdminRoleId) - _, resp, err := th.Client.UpdateChannelPrivacy(publicChannel.Id, model.ChannelTypePrivate) + _, resp, err := th.Client.UpdateChannelPrivacy(context.Background(), publicChannel.Id, model.ChannelTypePrivate) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.Client.UpdateChannelPrivacy(privateChannel.Id, model.ChannelTypeOpen) + _, resp, err = th.Client.UpdateChannelPrivacy(context.Background(), privateChannel.Id, model.ChannelTypeOpen) require.Error(t, err) CheckForbiddenStatus(t, resp) th.AddPermissionToRole(model.PermissionConvertPublicChannelToPrivate.Id, model.TeamAdminRoleId) th.AddPermissionToRole(model.PermissionConvertPrivateChannelToPublic.Id, model.TeamAdminRoleId) - _, _, err = th.Client.UpdateChannelPrivacy(privateChannel.Id, model.ChannelTypeOpen) + _, _, err = th.Client.UpdateChannelPrivacy(context.Background(), privateChannel.Id, model.ChannelTypeOpen) require.NoError(t, err) - _, _, err = th.Client.UpdateChannelPrivacy(publicChannel.Id, model.ChannelTypePrivate) + _, _, err = th.Client.UpdateChannelPrivacy(context.Background(), publicChannel.Id, model.ChannelTypePrivate) require.NoError(t, err) }) } @@ -2107,30 +2107,30 @@ func TestRestoreChannel(t *testing.T) { defer th.TearDown() publicChannel1 := th.CreatePublicChannel() - th.Client.DeleteChannel(publicChannel1.Id) + th.Client.DeleteChannel(context.Background(), publicChannel1.Id) privateChannel1 := th.CreatePrivateChannel() - th.Client.DeleteChannel(privateChannel1.Id) + th.Client.DeleteChannel(context.Background(), privateChannel1.Id) - _, resp, err := th.Client.RestoreChannel(publicChannel1.Id) + _, resp, err := th.Client.RestoreChannel(context.Background(), publicChannel1.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.Client.RestoreChannel(privateChannel1.Id) + _, resp, err = th.Client.RestoreChannel(context.Background(), privateChannel1.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { defer func() { - client.DeleteChannel(publicChannel1.Id) - client.DeleteChannel(privateChannel1.Id) + client.DeleteChannel(context.Background(), publicChannel1.Id) + client.DeleteChannel(context.Background(), privateChannel1.Id) }() - _, resp, err = client.RestoreChannel(publicChannel1.Id) + _, resp, err = client.RestoreChannel(context.Background(), publicChannel1.Id) require.NoError(t, err) CheckOKStatus(t, resp) - _, resp, err = client.RestoreChannel(privateChannel1.Id) + _, resp, err = client.RestoreChannel(context.Background(), privateChannel1.Id) require.NoError(t, err) CheckOKStatus(t, resp) }) @@ -2141,55 +2141,55 @@ func TestGetChannelByName(t *testing.T) { defer th.TearDown() client := th.Client - channel, _, err := client.GetChannelByName(th.BasicChannel.Name, th.BasicTeam.Id, "") + channel, _, err := client.GetChannelByName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Id, "") require.NoError(t, err) require.Equal(t, th.BasicChannel.Name, channel.Name, "names did not match") - channel, _, err = client.GetChannelByName(th.BasicPrivateChannel.Name, th.BasicTeam.Id, "") + channel, _, err = client.GetChannelByName(context.Background(), th.BasicPrivateChannel.Name, th.BasicTeam.Id, "") require.NoError(t, err) require.Equal(t, th.BasicPrivateChannel.Name, channel.Name, "names did not match") - _, _, err = client.GetChannelByName(strings.ToUpper(th.BasicPrivateChannel.Name), th.BasicTeam.Id, "") + _, _, err = client.GetChannelByName(context.Background(), strings.ToUpper(th.BasicPrivateChannel.Name), th.BasicTeam.Id, "") require.NoError(t, err) - _, resp, err := client.GetChannelByName(th.BasicDeletedChannel.Name, th.BasicTeam.Id, "") + _, resp, err := client.GetChannelByName(context.Background(), th.BasicDeletedChannel.Name, th.BasicTeam.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - channel, _, err = client.GetChannelByNameIncludeDeleted(th.BasicDeletedChannel.Name, th.BasicTeam.Id, "") + channel, _, err = client.GetChannelByNameIncludeDeleted(context.Background(), th.BasicDeletedChannel.Name, th.BasicTeam.Id, "") require.NoError(t, err) require.Equal(t, th.BasicDeletedChannel.Name, channel.Name, "names did not match") - client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) - _, _, err = client.GetChannelByName(th.BasicChannel.Name, th.BasicTeam.Id, "") + client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser.Id) + _, _, err = client.GetChannelByName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Id, "") require.NoError(t, err) - client.RemoveUserFromChannel(th.BasicPrivateChannel.Id, th.BasicUser.Id) - _, resp, err = client.GetChannelByName(th.BasicPrivateChannel.Name, th.BasicTeam.Id, "") + client.RemoveUserFromChannel(context.Background(), th.BasicPrivateChannel.Id, th.BasicUser.Id) + _, resp, err = client.GetChannelByName(context.Background(), th.BasicPrivateChannel.Name, th.BasicTeam.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetChannelByName(GenerateTestChannelName(), th.BasicTeam.Id, "") + _, resp, err = client.GetChannelByName(context.Background(), GenerateTestChannelName(), th.BasicTeam.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetChannelByName(GenerateTestChannelName(), "junk", "") + _, resp, err = client.GetChannelByName(context.Background(), GenerateTestChannelName(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.GetChannelByName(th.BasicChannel.Name, th.BasicTeam.Id, "") + client.Logout(context.Background()) + _, resp, err = client.GetChannelByName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - client.Login(user.Email, user.Password) - _, resp, err = client.GetChannelByName(th.BasicChannel.Name, th.BasicTeam.Id, "") + client.Login(context.Background(), user.Email, user.Password) + _, resp, err = client.GetChannelByName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.GetChannelByName(th.BasicChannel.Name, th.BasicTeam.Id, "") + _, _, err = client.GetChannelByName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Id, "") require.NoError(t, err) }) } @@ -2199,51 +2199,51 @@ func TestGetChannelByNameForTeamName(t *testing.T) { defer th.TearDown() client := th.Client - channel, _, err := th.SystemAdminClient.GetChannelByNameForTeamName(th.BasicChannel.Name, th.BasicTeam.Name, "") + channel, _, err := th.SystemAdminClient.GetChannelByNameForTeamName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Name, "") require.NoError(t, err) require.Equal(t, th.BasicChannel.Name, channel.Name, "names did not match") - _, _, err = client.GetChannelByNameForTeamName(th.BasicChannel.Name, th.BasicTeam.Name, "") + _, _, err = client.GetChannelByNameForTeamName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Name, "") require.NoError(t, err) require.Equal(t, th.BasicChannel.Name, channel.Name, "names did not match") - channel, _, err = client.GetChannelByNameForTeamName(th.BasicPrivateChannel.Name, th.BasicTeam.Name, "") + channel, _, err = client.GetChannelByNameForTeamName(context.Background(), th.BasicPrivateChannel.Name, th.BasicTeam.Name, "") require.NoError(t, err) require.Equal(t, th.BasicPrivateChannel.Name, channel.Name, "names did not match") - _, resp, err := client.GetChannelByNameForTeamName(th.BasicDeletedChannel.Name, th.BasicTeam.Name, "") + _, resp, err := client.GetChannelByNameForTeamName(context.Background(), th.BasicDeletedChannel.Name, th.BasicTeam.Name, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - channel, _, err = client.GetChannelByNameForTeamNameIncludeDeleted(th.BasicDeletedChannel.Name, th.BasicTeam.Name, "") + channel, _, err = client.GetChannelByNameForTeamNameIncludeDeleted(context.Background(), th.BasicDeletedChannel.Name, th.BasicTeam.Name, "") require.NoError(t, err) require.Equal(t, th.BasicDeletedChannel.Name, channel.Name, "names did not match") - client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) - _, _, err = client.GetChannelByNameForTeamName(th.BasicChannel.Name, th.BasicTeam.Name, "") + client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser.Id) + _, _, err = client.GetChannelByNameForTeamName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Name, "") require.NoError(t, err) - client.RemoveUserFromChannel(th.BasicPrivateChannel.Id, th.BasicUser.Id) - _, resp, err = client.GetChannelByNameForTeamName(th.BasicPrivateChannel.Name, th.BasicTeam.Name, "") + client.RemoveUserFromChannel(context.Background(), th.BasicPrivateChannel.Id, th.BasicUser.Id) + _, resp, err = client.GetChannelByNameForTeamName(context.Background(), th.BasicPrivateChannel.Name, th.BasicTeam.Name, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetChannelByNameForTeamName(th.BasicChannel.Name, model.NewRandomString(15), "") + _, resp, err = client.GetChannelByNameForTeamName(context.Background(), th.BasicChannel.Name, model.NewRandomString(15), "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetChannelByNameForTeamName(GenerateTestChannelName(), th.BasicTeam.Name, "") + _, resp, err = client.GetChannelByNameForTeamName(context.Background(), GenerateTestChannelName(), th.BasicTeam.Name, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetChannelByNameForTeamName(th.BasicChannel.Name, th.BasicTeam.Name, "") + client.Logout(context.Background()) + _, resp, err = client.GetChannelByNameForTeamName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Name, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - client.Login(user.Email, user.Password) - _, resp, err = client.GetChannelByNameForTeamName(th.BasicChannel.Name, th.BasicTeam.Name, "") + client.Login(context.Background(), user.Email, user.Password) + _, resp, err = client.GetChannelByNameForTeamName(context.Background(), th.BasicChannel.Name, th.BasicTeam.Name, "") require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -2252,46 +2252,46 @@ func TestGetChannelMembers(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - members, _, err := client.GetChannelMembers(th.BasicChannel.Id, 0, 60, "") + members, _, err := client.GetChannelMembers(context.Background(), th.BasicChannel.Id, 0, 60, "") require.NoError(t, err) require.Len(t, members, 3, "should only be 3 users in channel") - members, _, err = client.GetChannelMembers(th.BasicChannel.Id, 0, 2, "") + members, _, err = client.GetChannelMembers(context.Background(), th.BasicChannel.Id, 0, 2, "") require.NoError(t, err) require.Len(t, members, 2, "should only be 2 users") - members, _, err = client.GetChannelMembers(th.BasicChannel.Id, 1, 1, "") + members, _, err = client.GetChannelMembers(context.Background(), th.BasicChannel.Id, 1, 1, "") require.NoError(t, err) require.Len(t, members, 1, "should only be 1 user") - members, _, err = client.GetChannelMembers(th.BasicChannel.Id, 1000, 100000, "") + members, _, err = client.GetChannelMembers(context.Background(), th.BasicChannel.Id, 1000, 100000, "") require.NoError(t, err) require.Empty(t, members, "should be 0 users") - _, resp, err := client.GetChannelMembers("junk", 0, 60, "") + _, resp, err := client.GetChannelMembers(context.Background(), "junk", 0, 60, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelMembers("", 0, 60, "") + _, resp, err = client.GetChannelMembers(context.Background(), "", 0, 60, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, _, err = client.GetChannelMembers(th.BasicChannel.Id, 0, 60, "") + _, _, err = client.GetChannelMembers(context.Background(), th.BasicChannel.Id, 0, 60, "") require.NoError(t, err) }) - _, resp, err := th.Client.GetChannelMembers(model.NewId(), 0, 60, "") + _, resp, err := th.Client.GetChannelMembers(context.Background(), model.NewId(), 0, 60, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - _, resp, err = th.Client.GetChannelMembers(th.BasicChannel.Id, 0, 60, "") + th.Client.Logout(context.Background()) + _, resp, err = th.Client.GetChannelMembers(context.Background(), th.BasicChannel.Id, 0, 60, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - th.Client.Login(user.Email, user.Password) - _, resp, err = th.Client.GetChannelMembers(th.BasicChannel.Id, 0, 60, "") + th.Client.Login(context.Background(), user.Email, user.Password) + _, resp, err = th.Client.GetChannelMembers(context.Background(), th.BasicChannel.Id, 0, 60, "") require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -2301,40 +2301,40 @@ func TestGetChannelMembersByIds(t *testing.T) { defer th.TearDown() client := th.Client - cm, _, err := client.GetChannelMembersByIds(th.BasicChannel.Id, []string{th.BasicUser.Id}) + cm, _, err := client.GetChannelMembersByIds(context.Background(), th.BasicChannel.Id, []string{th.BasicUser.Id}) require.NoError(t, err) require.Equal(t, th.BasicUser.Id, cm[0].UserId, "returned wrong user") - _, resp, err := client.GetChannelMembersByIds(th.BasicChannel.Id, []string{}) + _, resp, err := client.GetChannelMembersByIds(context.Background(), th.BasicChannel.Id, []string{}) require.Error(t, err) CheckBadRequestStatus(t, resp) - cm1, _, err := client.GetChannelMembersByIds(th.BasicChannel.Id, []string{"junk"}) + cm1, _, err := client.GetChannelMembersByIds(context.Background(), th.BasicChannel.Id, []string{"junk"}) require.NoError(t, err) require.Empty(t, cm1, "no users should be returned") - cm1, _, err = client.GetChannelMembersByIds(th.BasicChannel.Id, []string{"junk", th.BasicUser.Id}) + cm1, _, err = client.GetChannelMembersByIds(context.Background(), th.BasicChannel.Id, []string{"junk", th.BasicUser.Id}) require.NoError(t, err) require.Len(t, cm1, 1, "1 member should be returned") - cm1, _, err = client.GetChannelMembersByIds(th.BasicChannel.Id, []string{th.BasicUser2.Id, th.BasicUser.Id}) + cm1, _, err = client.GetChannelMembersByIds(context.Background(), th.BasicChannel.Id, []string{th.BasicUser2.Id, th.BasicUser.Id}) require.NoError(t, err) require.Len(t, cm1, 2, "2 members should be returned") - _, resp, err = client.GetChannelMembersByIds("junk", []string{th.BasicUser.Id}) + _, resp, err = client.GetChannelMembersByIds(context.Background(), "junk", []string{th.BasicUser.Id}) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelMembersByIds(model.NewId(), []string{th.BasicUser.Id}) + _, resp, err = client.GetChannelMembersByIds(context.Background(), model.NewId(), []string{th.BasicUser.Id}) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetChannelMembersByIds(th.BasicChannel.Id, []string{th.BasicUser.Id}) + client.Logout(context.Background()) + _, resp, err = client.GetChannelMembersByIds(context.Background(), th.BasicChannel.Id, []string{th.BasicUser.Id}) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetChannelMembersByIds(th.BasicChannel.Id, []string{th.BasicUser2.Id, th.BasicUser.Id}) + _, _, err = th.SystemAdminClient.GetChannelMembersByIds(context.Background(), th.BasicChannel.Id, []string{th.BasicUser2.Id, th.BasicUser.Id}) require.NoError(t, err) } @@ -2343,46 +2343,46 @@ func TestGetChannelMember(t *testing.T) { defer th.TearDown() c := th.Client th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - member, _, err := client.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + member, _, err := client.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) require.Equal(t, th.BasicChannel.Id, member.ChannelId, "wrong channel id") require.Equal(t, th.BasicUser.Id, member.UserId, "wrong user id") - _, resp, err := client.GetChannelMember("", th.BasicUser.Id, "") + _, resp, err := client.GetChannelMember(context.Background(), "", th.BasicUser.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetChannelMember("junk", th.BasicUser.Id, "") + _, resp, err = client.GetChannelMember(context.Background(), "junk", th.BasicUser.Id, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelMember(th.BasicChannel.Id, "", "") + _, resp, err = client.GetChannelMember(context.Background(), th.BasicChannel.Id, "", "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetChannelMember(th.BasicChannel.Id, "junk", "") + _, resp, err = client.GetChannelMember(context.Background(), th.BasicChannel.Id, "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelMember(th.BasicChannel.Id, model.NewId(), "") + _, resp, err = client.GetChannelMember(context.Background(), th.BasicChannel.Id, model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, _, err = client.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + _, _, err = client.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) }) - _, resp, err := c.GetChannelMember(model.NewId(), th.BasicUser.Id, "") + _, resp, err := c.GetChannelMember(context.Background(), model.NewId(), th.BasicUser.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - c.Logout() - _, resp, err = c.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + c.Logout(context.Background()) + _, resp, err = c.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - c.Login(user.Email, user.Password) - _, resp, err = c.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + c.Login(context.Background(), user.Email, user.Password) + _, resp, err = c.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -2392,46 +2392,46 @@ func TestGetChannelMembersForUser(t *testing.T) { defer th.TearDown() client := th.Client - members, _, err := client.GetChannelMembersForUser(th.BasicUser.Id, th.BasicTeam.Id, "") + members, _, err := client.GetChannelMembersForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, "") require.NoError(t, err) require.Len(t, members, 6, "should have 6 members on team") - _, resp, err := client.GetChannelMembersForUser("", th.BasicTeam.Id, "") + _, resp, err := client.GetChannelMembersForUser(context.Background(), "", th.BasicTeam.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetChannelMembersForUser("junk", th.BasicTeam.Id, "") + _, resp, err = client.GetChannelMembersForUser(context.Background(), "junk", th.BasicTeam.Id, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelMembersForUser(model.NewId(), th.BasicTeam.Id, "") + _, resp, err = client.GetChannelMembersForUser(context.Background(), model.NewId(), th.BasicTeam.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetChannelMembersForUser(th.BasicUser.Id, "", "") + _, resp, err = client.GetChannelMembersForUser(context.Background(), th.BasicUser.Id, "", "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetChannelMembersForUser(th.BasicUser.Id, "junk", "") + _, resp, err = client.GetChannelMembersForUser(context.Background(), th.BasicUser.Id, "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelMembersForUser(th.BasicUser.Id, model.NewId(), "") + _, resp, err = client.GetChannelMembersForUser(context.Background(), th.BasicUser.Id, model.NewId(), "") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetChannelMembersForUser(th.BasicUser.Id, th.BasicTeam.Id, "") + client.Logout(context.Background()) + _, resp, err = client.GetChannelMembersForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - client.Login(user.Email, user.Password) - _, resp, err = client.GetChannelMembersForUser(th.BasicUser.Id, th.BasicTeam.Id, "") + client.Login(context.Background(), user.Email, user.Password) + _, resp, err = client.GetChannelMembersForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetChannelMembersForUser(th.BasicUser.Id, th.BasicTeam.Id, "") + _, _, err = th.SystemAdminClient.GetChannelMembersForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, "") require.NoError(t, err) } @@ -2444,7 +2444,7 @@ func TestViewChannel(t *testing.T) { ChannelId: th.BasicChannel.Id, } - viewResp, _, err := client.ViewChannel(th.BasicUser.Id, view) + viewResp, _, err := client.ViewChannel(context.Background(), th.BasicUser.Id, view) require.NoError(t, err) require.Equal(t, "OK", viewResp.Status, "should have passed") @@ -2453,62 +2453,62 @@ func TestViewChannel(t *testing.T) { require.Equal(t, channel.LastPostAt, viewResp.LastViewedAtTimes[channel.Id], "LastPostAt does not match returned LastViewedAt time") view.PrevChannelId = th.BasicChannel.Id - _, _, err = client.ViewChannel(th.BasicUser.Id, view) + _, _, err = client.ViewChannel(context.Background(), th.BasicUser.Id, view) require.NoError(t, err) view.PrevChannelId = "" - _, _, err = client.ViewChannel(th.BasicUser.Id, view) + _, _, err = client.ViewChannel(context.Background(), th.BasicUser.Id, view) require.NoError(t, err) view.PrevChannelId = "junk" - _, resp, err := client.ViewChannel(th.BasicUser.Id, view) + _, resp, err := client.ViewChannel(context.Background(), th.BasicUser.Id, view) require.Error(t, err) CheckBadRequestStatus(t, resp) // All blank is OK we use it for clicking off of the browser. view.PrevChannelId = "" view.ChannelId = "" - _, _, err = client.ViewChannel(th.BasicUser.Id, view) + _, _, err = client.ViewChannel(context.Background(), th.BasicUser.Id, view) require.NoError(t, err) view.PrevChannelId = "" view.ChannelId = "junk" - _, resp, err = client.ViewChannel(th.BasicUser.Id, view) + _, resp, err = client.ViewChannel(context.Background(), th.BasicUser.Id, view) require.Error(t, err) CheckBadRequestStatus(t, resp) view.ChannelId = "correctlysizedjunkdddfdfdf" - _, resp, err = client.ViewChannel(th.BasicUser.Id, view) + _, resp, err = client.ViewChannel(context.Background(), th.BasicUser.Id, view) require.Error(t, err) CheckBadRequestStatus(t, resp) view.ChannelId = th.BasicChannel.Id - member, _, err := client.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + member, _, err := client.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) - channel, _, err = client.GetChannel(th.BasicChannel.Id, "") + channel, _, err = client.GetChannel(context.Background(), th.BasicChannel.Id, "") require.NoError(t, err) require.Equal(t, channel.TotalMsgCount, member.MsgCount, "should match message counts") require.Equal(t, int64(0), member.MentionCount, "should have no mentions") require.Equal(t, int64(0), member.MentionCountRoot, "should have no mentions") - _, resp, err = client.ViewChannel("junk", view) + _, resp, err = client.ViewChannel(context.Background(), "junk", view) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.ViewChannel(th.BasicUser2.Id, view) + _, resp, err = client.ViewChannel(context.Background(), th.BasicUser2.Id, view) require.Error(t, err) CheckForbiddenStatus(t, resp) - r, err := client.DoAPIPost(fmt.Sprintf("/channels/members/%v/view", th.BasicUser.Id), "garbage") + r, err := client.DoAPIPost(context.Background(), fmt.Sprintf("/channels/members/%v/view", th.BasicUser.Id), "garbage") require.Error(t, err) require.Equal(t, http.StatusBadRequest, r.StatusCode) - client.Logout() - _, resp, err = client.ViewChannel(th.BasicUser.Id, view) + client.Logout(context.Background()) + _, resp, err = client.ViewChannel(context.Background(), th.BasicUser.Id, view) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.ViewChannel(th.BasicUser.Id, view) + _, _, err = th.SystemAdminClient.ViewChannel(context.Background(), th.BasicUser.Id, view) require.NoError(t, err) } @@ -2519,43 +2519,43 @@ func TestGetChannelUnread(t *testing.T) { user := th.BasicUser channel := th.BasicChannel - channelUnread, _, err := client.GetChannelUnread(channel.Id, user.Id) + channelUnread, _, err := client.GetChannelUnread(context.Background(), channel.Id, user.Id) require.NoError(t, err) require.Equal(t, th.BasicTeam.Id, channelUnread.TeamId, "wrong team id returned for a regular user call") require.Equal(t, channel.Id, channelUnread.ChannelId, "wrong team id returned for a regular user call") - _, resp, err := client.GetChannelUnread("junk", user.Id) + _, resp, err := client.GetChannelUnread(context.Background(), "junk", user.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelUnread(channel.Id, "junk") + _, resp, err = client.GetChannelUnread(context.Background(), channel.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelUnread(channel.Id, model.NewId()) + _, resp, err = client.GetChannelUnread(context.Background(), channel.Id, model.NewId()) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetChannelUnread(model.NewId(), user.Id) + _, resp, err = client.GetChannelUnread(context.Background(), model.NewId(), user.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) newUser := th.CreateUser() - client.Login(newUser.Email, newUser.Password) - _, resp, err = client.GetChannelUnread(th.BasicChannel.Id, user.Id) + client.Login(context.Background(), newUser.Email, newUser.Password) + _, resp, err = client.GetChannelUnread(context.Background(), th.BasicChannel.Id, user.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) - _, _, err = th.SystemAdminClient.GetChannelUnread(channel.Id, user.Id) + _, _, err = th.SystemAdminClient.GetChannelUnread(context.Background(), channel.Id, user.Id) require.NoError(t, err) - _, resp, err = th.SystemAdminClient.GetChannelUnread(model.NewId(), user.Id) + _, resp, err = th.SystemAdminClient.GetChannelUnread(context.Background(), model.NewId(), user.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.SystemAdminClient.GetChannelUnread(channel.Id, model.NewId()) + _, resp, err = th.SystemAdminClient.GetChannelUnread(context.Background(), channel.Id, model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) } @@ -2566,7 +2566,7 @@ func TestGetChannelStats(t *testing.T) { client := th.Client channel := th.CreatePrivateChannel() - stats, _, err := client.GetChannelStats(channel.Id, "", false) + stats, _, err := client.GetChannelStats(context.Background(), channel.Id, "", false) require.NoError(t, err) require.Equal(t, channel.Id, stats.ChannelId, "couldn't get extra info") @@ -2575,46 +2575,46 @@ func TestGetChannelStats(t *testing.T) { require.Equal(t, int64(0), stats.FilesCount, "got incorrect file count") th.CreatePinnedPostWithClient(th.Client, channel) - stats, _, err = client.GetChannelStats(channel.Id, "", false) + stats, _, err = client.GetChannelStats(context.Background(), channel.Id, "", false) require.NoError(t, err) require.Equal(t, int64(1), stats.PinnedPostCount, "should have returned 1 pinned post count") // create a post with a file sent, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - fileResp, _, err := client.UploadFile(sent, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), sent, channel.Id, "test.png") require.NoError(t, err) th.CreatePostInChannelWithFiles(channel, fileResp.FileInfos...) // make sure the file count channel stats is updated - stats, _, err = client.GetChannelStats(channel.Id, "", false) + stats, _, err = client.GetChannelStats(context.Background(), channel.Id, "", false) require.NoError(t, err) require.Equal(t, int64(1), stats.FilesCount, "should have returned 1 file count") // exclude file counts - stats, _, err = client.GetChannelStats(channel.Id, "", true) + stats, _, err = client.GetChannelStats(context.Background(), channel.Id, "", true) require.NoError(t, err) require.Equal(t, int64(-1), stats.FilesCount, "should have returned -1 file count for exclude_files_count=true") - _, resp, err := client.GetChannelStats("junk", "", false) + _, resp, err := client.GetChannelStats(context.Background(), "junk", "", false) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetChannelStats(model.NewId(), "", false) + _, resp, err = client.GetChannelStats(context.Background(), model.NewId(), "", false) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetChannelStats(channel.Id, "", false) + client.Logout(context.Background()) + _, resp, err = client.GetChannelStats(context.Background(), channel.Id, "", false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic2() - _, resp, err = client.GetChannelStats(channel.Id, "", false) + _, resp, err = client.GetChannelStats(context.Background(), channel.Id, "", false) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetChannelStats(channel.Id, "", false) + _, _, err = th.SystemAdminClient.GetChannelStats(context.Background(), channel.Id, "", false) require.NoError(t, err) } @@ -2624,33 +2624,33 @@ func TestGetPinnedPosts(t *testing.T) { client := th.Client channel := th.BasicChannel - posts, _, err := client.GetPinnedPosts(channel.Id, "") + posts, _, err := client.GetPinnedPosts(context.Background(), channel.Id, "") require.NoError(t, err) require.Empty(t, posts.Posts, "should not have gotten a pinned post") pinnedPost := th.CreatePinnedPost() - posts, resp, err := client.GetPinnedPosts(channel.Id, "") + posts, resp, err := client.GetPinnedPosts(context.Background(), channel.Id, "") require.NoError(t, err) require.Len(t, posts.Posts, 1, "should have returned 1 pinned post") require.Contains(t, posts.Posts, pinnedPost.Id, "missing pinned post") - posts, resp, _ = client.GetPinnedPosts(channel.Id, resp.Etag) + posts, resp, _ = client.GetPinnedPosts(context.Background(), channel.Id, resp.Etag) CheckEtag(t, posts, resp) - _, resp, err = client.GetPinnedPosts(GenerateTestId(), "") + _, resp, err = client.GetPinnedPosts(context.Background(), GenerateTestId(), "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetPinnedPosts("junk", "") + _, resp, err = client.GetPinnedPosts(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.GetPinnedPosts(channel.Id, "") + client.Logout(context.Background()) + _, resp, err = client.GetPinnedPosts(context.Background(), channel.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetPinnedPosts(channel.Id, "") + _, _, err = th.SystemAdminClient.GetPinnedPosts(context.Background(), channel.Id, "") require.NoError(t, err) } @@ -2669,66 +2669,66 @@ func TestUpdateChannelRoles(t *testing.T) { th.App.AddUserToChannel(th.Context, th.BasicUser2, channel, false) // User 1 promotes User 2 - _, err := client.UpdateChannelRoles(channel.Id, th.BasicUser2.Id, ChannelAdmin) + _, err := client.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser2.Id, ChannelAdmin) require.NoError(t, err) - member, _, err := client.GetChannelMember(channel.Id, th.BasicUser2.Id, "") + member, _, err := client.GetChannelMember(context.Background(), channel.Id, th.BasicUser2.Id, "") require.NoError(t, err) require.Equal(t, ChannelAdmin, member.Roles, "roles don't match") // User 1 demotes User 2 - _, err = client.UpdateChannelRoles(channel.Id, th.BasicUser2.Id, ChannelMember) + _, err = client.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser2.Id, ChannelMember) require.NoError(t, err) th.LoginBasic2() // User 2 cannot demote User 1 - resp, err := client.UpdateChannelRoles(channel.Id, th.BasicUser.Id, ChannelMember) + resp, err := client.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser.Id, ChannelMember) require.Error(t, err) CheckForbiddenStatus(t, resp) // User 2 cannot promote self - resp, err = client.UpdateChannelRoles(channel.Id, th.BasicUser2.Id, ChannelAdmin) + resp, err = client.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser2.Id, ChannelAdmin) require.Error(t, err) CheckForbiddenStatus(t, resp) th.LoginBasic() // User 1 demotes self - _, err = client.UpdateChannelRoles(channel.Id, th.BasicUser.Id, ChannelMember) + _, err = client.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser.Id, ChannelMember) require.NoError(t, err) // System Admin promotes User 1 - _, err = th.SystemAdminClient.UpdateChannelRoles(channel.Id, th.BasicUser.Id, ChannelAdmin) + _, err = th.SystemAdminClient.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser.Id, ChannelAdmin) require.NoError(t, err) // System Admin demotes User 1 - _, err = th.SystemAdminClient.UpdateChannelRoles(channel.Id, th.BasicUser.Id, ChannelMember) + _, err = th.SystemAdminClient.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser.Id, ChannelMember) require.NoError(t, err) // System Admin promotes User 1 - _, err = th.SystemAdminClient.UpdateChannelRoles(channel.Id, th.BasicUser.Id, ChannelAdmin) + _, err = th.SystemAdminClient.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser.Id, ChannelAdmin) require.NoError(t, err) th.LoginBasic() - resp, err = client.UpdateChannelRoles(channel.Id, th.BasicUser.Id, "junk") + resp, err = client.UpdateChannelRoles(context.Background(), channel.Id, th.BasicUser.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UpdateChannelRoles(channel.Id, "junk", ChannelMember) + resp, err = client.UpdateChannelRoles(context.Background(), channel.Id, "junk", ChannelMember) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UpdateChannelRoles("junk", th.BasicUser.Id, ChannelMember) + resp, err = client.UpdateChannelRoles(context.Background(), "junk", th.BasicUser.Id, ChannelMember) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UpdateChannelRoles(channel.Id, model.NewId(), ChannelMember) + resp, err = client.UpdateChannelRoles(context.Background(), channel.Id, model.NewId(), ChannelMember) require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = client.UpdateChannelRoles(model.NewId(), th.BasicUser.Id, ChannelMember) + resp, err = client.UpdateChannelRoles(context.Background(), model.NewId(), th.BasicUser.Id, ChannelMember) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -2748,7 +2748,7 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { SchemeUser: false, SchemeGuest: false, } - _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s1) + _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s1) require.NoError(t, err) timeout := time.After(600 * time.Millisecond) @@ -2766,7 +2766,7 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { } } - tm1, _, err := SystemAdminClient.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + tm1, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, false, tm1.SchemeGuest) assert.Equal(t, false, tm1.SchemeUser) @@ -2777,10 +2777,10 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { SchemeUser: true, SchemeGuest: false, } - _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s2) + _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s2) require.NoError(t, err) - tm2, _, err := SystemAdminClient.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + tm2, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, false, tm2.SchemeGuest) assert.Equal(t, true, tm2.SchemeUser) @@ -2791,10 +2791,10 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { SchemeUser: false, SchemeGuest: false, } - _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s3) + _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s3) require.NoError(t, err) - tm3, _, err := SystemAdminClient.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + tm3, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, false, tm3.SchemeGuest) assert.Equal(t, false, tm3.SchemeUser) @@ -2805,10 +2805,10 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { SchemeUser: true, SchemeGuest: false, } - _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s4) + _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s4) require.NoError(t, err) - tm4, _, err := SystemAdminClient.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + tm4, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, false, tm4.SchemeGuest) assert.Equal(t, true, tm4.SchemeUser) @@ -2819,10 +2819,10 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { SchemeUser: false, SchemeGuest: true, } - _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s5) + _, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s5) require.NoError(t, err) - tm5, _, err := SystemAdminClient.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") + tm5, _, err := SystemAdminClient.GetChannelMember(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, true, tm5.SchemeGuest) assert.Equal(t, false, tm5.SchemeUser) @@ -2833,33 +2833,33 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { SchemeUser: true, SchemeGuest: true, } - resp, err := SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s6) + resp, err := SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s6) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(model.NewId(), th.BasicUser.Id, s4) + resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), model.NewId(), th.BasicUser.Id, s4) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, model.NewId(), s4) + resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, model.NewId(), s4) require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles("ASDF", th.BasicUser.Id, s4) + resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), "ASDF", th.BasicUser.Id, s4) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, "ASDF", s4) + resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, "ASDF", s4) require.Error(t, err) CheckBadRequestStatus(t, resp) th.LoginBasic2() - resp, err = th.Client.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s4) + resp, err = th.Client.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, s4) require.Error(t, err) CheckForbiddenStatus(t, resp) - SystemAdminClient.Logout() - resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.SystemAdminUser.Id, s4) + SystemAdminClient.Logout(context.Background()) + resp, err = SystemAdminClient.UpdateChannelMemberSchemeRoles(context.Background(), th.BasicChannel.Id, th.SystemAdminUser.Id, s4) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2873,7 +2873,7 @@ func TestUpdateChannelNotifyProps(t *testing.T) { props[model.DesktopNotifyProp] = model.ChannelNotifyMention props[model.MarkUnreadNotifyProp] = model.ChannelMarkUnreadMention - _, err := client.UpdateChannelNotifyProps(th.BasicChannel.Id, th.BasicUser.Id, props) + _, err := client.UpdateChannelNotifyProps(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, props) require.NoError(t, err) member, appErr := th.App.GetChannelMember(th.Context, th.BasicChannel.Id, th.BasicUser.Id) @@ -2881,31 +2881,31 @@ func TestUpdateChannelNotifyProps(t *testing.T) { require.Equal(t, model.ChannelNotifyMention, member.NotifyProps[model.DesktopNotifyProp], "bad update") require.Equal(t, model.ChannelMarkUnreadMention, member.NotifyProps[model.MarkUnreadNotifyProp], "bad update") - resp, err := client.UpdateChannelNotifyProps("junk", th.BasicUser.Id, props) + resp, err := client.UpdateChannelNotifyProps(context.Background(), "junk", th.BasicUser.Id, props) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UpdateChannelNotifyProps(th.BasicChannel.Id, "junk", props) + resp, err = client.UpdateChannelNotifyProps(context.Background(), th.BasicChannel.Id, "junk", props) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UpdateChannelNotifyProps(model.NewId(), th.BasicUser.Id, props) + resp, err = client.UpdateChannelNotifyProps(context.Background(), model.NewId(), th.BasicUser.Id, props) require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = client.UpdateChannelNotifyProps(th.BasicChannel.Id, model.NewId(), props) + resp, err = client.UpdateChannelNotifyProps(context.Background(), th.BasicChannel.Id, model.NewId(), props) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, err = client.UpdateChannelNotifyProps(th.BasicChannel.Id, th.BasicUser.Id, map[string]string{}) + _, err = client.UpdateChannelNotifyProps(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, map[string]string{}) require.NoError(t, err) - client.Logout() - resp, err = client.UpdateChannelNotifyProps(th.BasicChannel.Id, th.BasicUser.Id, props) + client.Logout(context.Background()) + resp, err = client.UpdateChannelNotifyProps(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, props) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, err = th.SystemAdminClient.UpdateChannelNotifyProps(th.BasicChannel.Id, th.BasicUser.Id, props) + _, err = th.SystemAdminClient.UpdateChannelNotifyProps(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, props) require.NoError(t, err) } @@ -2920,105 +2920,105 @@ func TestAddChannelMember(t *testing.T) { privateChannel := th.CreatePrivateChannel() user3 := th.CreateUserWithClient(th.SystemAdminClient) - _, _, err := th.SystemAdminClient.AddTeamMember(team.Id, user3.Id) + _, _, err := th.SystemAdminClient.AddTeamMember(context.Background(), team.Id, user3.Id) require.NoError(t, err) - cm, resp, err := client.AddChannelMember(publicChannel.Id, user2.Id) + cm, resp, err := client.AddChannelMember(context.Background(), publicChannel.Id, user2.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) require.Equal(t, publicChannel.Id, cm.ChannelId, "should have returned exact channel") require.Equal(t, user2.Id, cm.UserId, "should have returned exact user added to public channel") - cm, _, err = client.AddChannelMember(privateChannel.Id, user2.Id) + cm, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user2.Id) require.NoError(t, err) require.Equal(t, privateChannel.Id, cm.ChannelId, "should have returned exact channel") require.Equal(t, user2.Id, cm.UserId, "should have returned exact user added to private channel") post := &model.Post{ChannelId: publicChannel.Id, Message: "a" + GenerateTestId() + "a"} - rpost, _, err := client.CreatePost(post) + rpost, _, err := client.CreatePost(context.Background(), post) require.NoError(t, err) - client.RemoveUserFromChannel(publicChannel.Id, user.Id) - _, resp, err = client.AddChannelMemberWithRootId(publicChannel.Id, user.Id, rpost.Id) + client.RemoveUserFromChannel(context.Background(), publicChannel.Id, user.Id) + _, resp, err = client.AddChannelMemberWithRootId(context.Background(), publicChannel.Id, user.Id, rpost.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) - client.RemoveUserFromChannel(publicChannel.Id, user.Id) - _, resp, err = client.AddChannelMemberWithRootId(publicChannel.Id, user.Id, "junk") + client.RemoveUserFromChannel(context.Background(), publicChannel.Id, user.Id) + _, resp, err = client.AddChannelMemberWithRootId(context.Background(), publicChannel.Id, user.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.AddChannelMemberWithRootId(publicChannel.Id, user.Id, GenerateTestId()) + _, resp, err = client.AddChannelMemberWithRootId(context.Background(), publicChannel.Id, user.Id, GenerateTestId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.RemoveUserFromChannel(publicChannel.Id, user.Id) - _, _, err = client.AddChannelMember(publicChannel.Id, user.Id) + client.RemoveUserFromChannel(context.Background(), publicChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), publicChannel.Id, user.Id) require.NoError(t, err) - cm, resp, err = client.AddChannelMember(publicChannel.Id, "junk") + cm, resp, err = client.AddChannelMember(context.Background(), publicChannel.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) require.Nil(t, cm, "should return nothing") - _, resp, err = client.AddChannelMember(publicChannel.Id, GenerateTestId()) + _, resp, err = client.AddChannelMember(context.Background(), publicChannel.Id, GenerateTestId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.AddChannelMember("junk", user2.Id) + _, resp, err = client.AddChannelMember(context.Background(), "junk", user2.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.AddChannelMember(GenerateTestId(), user2.Id) + _, resp, err = client.AddChannelMember(context.Background(), GenerateTestId(), user2.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) otherUser := th.CreateUser() otherChannel := th.CreatePublicChannel() - client.Logout() - client.Login(user2.Id, user2.Password) + client.Logout(context.Background()) + client.Login(context.Background(), user2.Id, user2.Password) - _, resp, err = client.AddChannelMember(publicChannel.Id, otherUser.Id) + _, resp, err = client.AddChannelMember(context.Background(), publicChannel.Id, otherUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = client.AddChannelMember(privateChannel.Id, otherUser.Id) + _, resp, err = client.AddChannelMember(context.Background(), privateChannel.Id, otherUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = client.AddChannelMember(otherChannel.Id, otherUser.Id) + _, resp, err = client.AddChannelMember(context.Background(), otherChannel.Id, otherUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - client.Logout() - client.Login(user.Id, user.Password) + client.Logout(context.Background()) + client.Login(context.Background(), user.Id, user.Password) // should fail adding user who is not a member of the team - _, resp, err = client.AddChannelMember(otherChannel.Id, otherUser.Id) + _, resp, err = client.AddChannelMember(context.Background(), otherChannel.Id, otherUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - client.DeleteChannel(otherChannel.Id) + client.DeleteChannel(context.Background(), otherChannel.Id) // should fail adding user to a deleted channel - _, resp, err = client.AddChannelMember(otherChannel.Id, user2.Id) + _, resp, err = client.AddChannelMember(context.Background(), otherChannel.Id, user2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - client.Logout() - _, resp, err = client.AddChannelMember(publicChannel.Id, user2.Id) + client.Logout(context.Background()) + _, resp, err = client.AddChannelMember(context.Background(), publicChannel.Id, user2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = client.AddChannelMember(privateChannel.Id, user2.Id) + _, resp, err = client.AddChannelMember(context.Background(), privateChannel.Id, user2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.AddChannelMember(publicChannel.Id, user2.Id) + _, _, err = client.AddChannelMember(context.Background(), publicChannel.Id, user2.Id) require.NoError(t, err) - _, _, err = client.AddChannelMember(privateChannel.Id, user2.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user2.Id) require.NoError(t, err) }) @@ -3031,40 +3031,40 @@ func TestAddChannelMember(t *testing.T) { th.AddPermissionToRole(model.PermissionManagePrivateChannelMembers.Id, model.ChannelUserRoleId) // Check that a regular channel user can add other users. - client.Login(user2.Username, user2.Password) + client.Login(context.Background(), user2.Username, user2.Password) privateChannel = th.CreatePrivateChannel() - _, _, err = client.AddChannelMember(privateChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user.Id) require.NoError(t, err) - client.Logout() + client.Logout(context.Background()) - client.Login(user.Username, user.Password) - _, _, err = client.AddChannelMember(privateChannel.Id, user3.Id) + client.Login(context.Background(), user.Username, user.Password) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user3.Id) require.NoError(t, err) - client.Logout() + client.Logout(context.Background()) // Restrict the permission for adding users to Channel Admins th.AddPermissionToRole(model.PermissionManagePrivateChannelMembers.Id, model.ChannelAdminRoleId) th.RemovePermissionFromRole(model.PermissionManagePrivateChannelMembers.Id, model.ChannelUserRoleId) - client.Login(user2.Username, user2.Password) + client.Login(context.Background(), user2.Username, user2.Password) privateChannel = th.CreatePrivateChannel() - _, _, err = client.AddChannelMember(privateChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user.Id) require.NoError(t, err) - client.Logout() + client.Logout(context.Background()) - client.Login(user.Username, user.Password) - _, resp, err = client.AddChannelMember(privateChannel.Id, user3.Id) + client.Login(context.Background(), user.Username, user.Password) + _, resp, err = client.AddChannelMember(context.Background(), privateChannel.Id, user3.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) th.MakeUserChannelAdmin(user, privateChannel) th.App.Srv().InvalidateAllCaches() - client.Login(user.Username, user.Password) - _, _, err = client.AddChannelMember(privateChannel.Id, user3.Id) + client.Login(context.Background(), user.Username, user.Password) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user3.Id) require.NoError(t, err) - client.Logout() + client.Logout(context.Background()) // Set a channel to group-constrained privateChannel.GroupConstrained = model.NewBool(true) @@ -3073,7 +3073,7 @@ func TestAddChannelMember(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { // User is not in associated groups so shouldn't be allowed - _, _, err = client.AddChannelMember(privateChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user.Id) CheckErrorID(t, err, "api.channel.add_members.user_denied") }) @@ -3090,7 +3090,7 @@ func TestAddChannelMember(t *testing.T) { require.Nil(t, appErr) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.AddChannelMember(privateChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user.Id) require.NoError(t, err) }) } @@ -3103,7 +3103,7 @@ func TestAddChannelMemberFromThread(t *testing.T) { user := th.BasicUser user2 := th.BasicUser2 user3 := th.CreateUserWithClient(th.SystemAdminClient) - _, _, err := th.SystemAdminClient.AddTeamMember(team.Id, user3.Id) + _, _, err := th.SystemAdminClient.AddTeamMember(context.Background(), team.Id, user3.Id) require.NoError(t, err) wsClient, err2 := th.CreateWebSocketClient() @@ -3113,10 +3113,10 @@ func TestAddChannelMemberFromThread(t *testing.T) { publicChannel := th.CreatePublicChannel() - _, resp, err := th.Client.AddChannelMember(publicChannel.Id, user3.Id) + _, resp, err := th.Client.AddChannelMember(context.Background(), publicChannel.Id, user3.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = th.Client.AddChannelMember(publicChannel.Id, user2.Id) + _, resp, err = th.Client.AddChannelMember(context.Background(), publicChannel.Id, user2.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -3125,10 +3125,10 @@ func TestAddChannelMemberFromThread(t *testing.T) { Message: "A root post", UserId: user3.Id, } - rpost, _, err := th.SystemAdminClient.CreatePost(post) + rpost, _, err := th.SystemAdminClient.CreatePost(context.Background(), post) require.NoError(t, err) - _, _, err = th.SystemAdminClient.CreatePost( + _, _, err = th.SystemAdminClient.CreatePost(context.Background(), &model.Post{ ChannelId: publicChannel.Id, Message: "A reply post with mention @" + user.Username, @@ -3137,7 +3137,7 @@ func TestAddChannelMemberFromThread(t *testing.T) { }) require.NoError(t, err) - _, _, err = th.SystemAdminClient.CreatePost( + _, _, err = th.SystemAdminClient.CreatePost(context.Background(), &model.Post{ ChannelId: publicChannel.Id, Message: "Another reply post with mention @" + user.Username, @@ -3147,11 +3147,11 @@ func TestAddChannelMemberFromThread(t *testing.T) { require.NoError(t, err) // Simulate adding a user to a channel from a thread - _, _, err = th.SystemAdminClient.AddChannelMemberWithRootId(publicChannel.Id, user.Id, rpost.Id) + _, _, err = th.SystemAdminClient.AddChannelMemberWithRootId(context.Background(), publicChannel.Id, user.Id, rpost.Id) require.NoError(t, err) // Threadmembership should exist for added user - ut, _, err := th.Client.GetUserThread(user.Id, team.Id, rpost.Id, false) + ut, _, err := th.Client.GetUserThread(context.Background(), user.Id, team.Id, rpost.Id, false) require.NoError(t, err) // Should have two mentions. There might be a race condition // here between the "added user to the channel" message and the GetUserThread call @@ -3234,7 +3234,7 @@ func TestAddChannelMemberAddMyself(t *testing.T) { "", }, } - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) for _, tc := range testCases { t.Run(tc.Name, func(t *testing.T) { @@ -3248,7 +3248,7 @@ func TestAddChannelMemberAddMyself(t *testing.T) { th.RemovePermissionFromRole(model.PermissionJoinPublicChannels.Id, model.TeamUserRoleId) } - _, _, err := client.AddChannelMember(tc.Channel.Id, user.Id) + _, _, err := client.AddChannelMember(context.Background(), tc.Channel.Id, user.Id) if tc.ExpectedError == "" { require.NoError(t, err) } else { @@ -3272,23 +3272,23 @@ func TestRemoveChannelMember(t *testing.T) { bot := th.CreateBotWithSystemAdminClient() th.App.AddUserToTeam(th.Context, team.Id, bot.UserId, "") - _, err := client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser2.Id) + _, err := client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser2.Id) require.NoError(t, err) - resp, err := client.RemoveUserFromChannel(th.BasicChannel.Id, "junk") + resp, err := client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.RemoveUserFromChannel(th.BasicChannel.Id, model.NewId()) + resp, err = client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = client.RemoveUserFromChannel(model.NewId(), th.BasicUser2.Id) + resp, err = client.RemoveUserFromChannel(context.Background(), model.NewId(), th.BasicUser2.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) th.LoginBasic2() - resp, err = client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) + resp, err = client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -3301,9 +3301,9 @@ func TestRemoveChannelMember(t *testing.T) { require.Nil(t, appErr) props := map[string]string{} props[model.DesktopNotifyProp] = model.ChannelNotifyAll - _, err = th.SystemAdminClient.UpdateChannelNotifyProps(th.BasicChannel.Id, th.SystemAdminUser.Id, props) + _, err = th.SystemAdminClient.UpdateChannelNotifyProps(context.Background(), th.BasicChannel.Id, th.SystemAdminUser.Id, props) require.NoError(t, err) - _, err = th.SystemAdminClient.UpdateChannelNotifyProps(th.BasicChannel2.Id, th.SystemAdminUser.Id, props) + _, err = th.SystemAdminClient.UpdateChannelNotifyProps(context.Background(), th.BasicChannel2.Id, th.SystemAdminUser.Id, props) require.NoError(t, err) wsClient, err2 := th.CreateWebSocketSystemAdminClient() @@ -3342,7 +3342,7 @@ func TestRemoveChannelMember(t *testing.T) { } th.App.AddUserToChannel(th.Context, th.BasicUser2, th.BasicChannel, false) - _, err2 = client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser2.Id) + _, err2 = client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser2.Id) require.NoError(t, err2) requirePost(&model.Post{ @@ -3350,14 +3350,14 @@ func TestRemoveChannelMember(t *testing.T) { ChannelId: th.BasicChannel.Id, }) - _, err2 = client.RemoveUserFromChannel(th.BasicChannel2.Id, th.BasicUser.Id) + _, err2 = client.RemoveUserFromChannel(context.Background(), th.BasicChannel2.Id, th.BasicUser.Id) require.NoError(t, err2) requirePost(&model.Post{ Message: fmt.Sprintf("@%s removed from the channel.", th.BasicUser.Username), ChannelId: th.BasicChannel2.Id, }) - _, err2 = th.SystemAdminClient.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) + _, err2 = th.SystemAdminClient.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser.Id) require.NoError(t, err2) requirePost(&model.Post{ Message: fmt.Sprintf("@%s removed from the channel.", th.BasicUser.Username), @@ -3378,24 +3378,24 @@ func TestRemoveChannelMember(t *testing.T) { deletedChannel.DeleteAt = 1 th.App.UpdateChannel(th.Context, deletedChannel) - _, err = client.RemoveUserFromChannel(deletedChannel.Id, th.BasicUser.Id) + _, err = client.RemoveUserFromChannel(context.Background(), deletedChannel.Id, th.BasicUser.Id) require.NoError(t, err) th.LoginBasic() private := th.CreatePrivateChannel() th.App.AddUserToChannel(th.Context, th.BasicUser2, private, false) - _, err = client.RemoveUserFromChannel(private.Id, th.BasicUser2.Id) + _, err = client.RemoveUserFromChannel(context.Background(), private.Id, th.BasicUser2.Id) require.NoError(t, err) th.LoginBasic2() - resp, err = client.RemoveUserFromChannel(private.Id, th.BasicUser.Id) + resp, err = client.RemoveUserFromChannel(context.Background(), private.Id, th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { th.App.AddUserToChannel(th.Context, th.BasicUser, private, false) - _, err = client.RemoveUserFromChannel(private.Id, th.BasicUser.Id) + _, err = client.RemoveUserFromChannel(context.Background(), private.Id, th.BasicUser.Id) require.NoError(t, err) }) @@ -3414,12 +3414,12 @@ func TestRemoveChannelMember(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { // Check that a regular channel user can remove other users. privateChannel := th.CreateChannelWithClient(client, model.ChannelTypePrivate) - _, _, err = client.AddChannelMember(privateChannel.Id, user1.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user1.Id) require.NoError(t, err) - _, _, err = client.AddChannelMember(privateChannel.Id, user2.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user2.Id) require.NoError(t, err) - _, err = client.RemoveUserFromChannel(privateChannel.Id, user2.Id) + _, err = client.RemoveUserFromChannel(context.Background(), privateChannel.Id, user2.Id) require.NoError(t, err) }) @@ -3428,64 +3428,64 @@ func TestRemoveChannelMember(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManagePrivateChannelMembers.Id, model.ChannelUserRoleId) privateChannel := th.CreateChannelWithClient(th.SystemAdminClient, model.ChannelTypePrivate) - _, _, err = th.SystemAdminClient.AddChannelMember(privateChannel.Id, user1.Id) + _, _, err = th.SystemAdminClient.AddChannelMember(context.Background(), privateChannel.Id, user1.Id) require.NoError(t, err) - _, _, err = th.SystemAdminClient.AddChannelMember(privateChannel.Id, user2.Id) + _, _, err = th.SystemAdminClient.AddChannelMember(context.Background(), privateChannel.Id, user2.Id) require.NoError(t, err) - _, _, err = th.SystemAdminClient.AddChannelMember(privateChannel.Id, bot.UserId) + _, _, err = th.SystemAdminClient.AddChannelMember(context.Background(), privateChannel.Id, bot.UserId) require.NoError(t, err) - resp, err = client.RemoveUserFromChannel(privateChannel.Id, user2.Id) + resp, err = client.RemoveUserFromChannel(context.Background(), privateChannel.Id, user2.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.MakeUserChannelAdmin(user1, privateChannel) th.App.Srv().InvalidateAllCaches() - _, err = client.RemoveUserFromChannel(privateChannel.Id, user2.Id) + _, err = client.RemoveUserFromChannel(context.Background(), privateChannel.Id, user2.Id) require.NoError(t, err) - _, _, err = th.SystemAdminClient.AddChannelMember(privateChannel.Id, th.SystemAdminUser.Id) + _, _, err = th.SystemAdminClient.AddChannelMember(context.Background(), privateChannel.Id, th.SystemAdminUser.Id) require.NoError(t, err) // If the channel is group-constrained the user cannot be removed privateChannel.GroupConstrained = model.NewBool(true) _, appErr := th.App.UpdateChannel(th.Context, privateChannel) require.Nil(t, appErr) - _, err = client.RemoveUserFromChannel(privateChannel.Id, user2.Id) + _, err = client.RemoveUserFromChannel(context.Background(), privateChannel.Id, user2.Id) CheckErrorID(t, err, "api.channel.remove_member.group_constrained.app_error") // If the channel is group-constrained user can remove self - _, err = th.SystemAdminClient.RemoveUserFromChannel(privateChannel.Id, th.SystemAdminUser.Id) + _, err = th.SystemAdminClient.RemoveUserFromChannel(context.Background(), privateChannel.Id, th.SystemAdminUser.Id) require.NoError(t, err) // Test on preventing removal of user from a direct channel - directChannel, _, err := client.CreateDirectChannel(user1.Id, user2.Id) + directChannel, _, err := client.CreateDirectChannel(context.Background(), user1.Id, user2.Id) require.NoError(t, err) // If the channel is group-constrained a user can remove a bot - _, err = client.RemoveUserFromChannel(privateChannel.Id, bot.UserId) + _, err = client.RemoveUserFromChannel(context.Background(), privateChannel.Id, bot.UserId) require.NoError(t, err) - resp, err = client.RemoveUserFromChannel(directChannel.Id, user1.Id) + resp, err = client.RemoveUserFromChannel(context.Background(), directChannel.Id, user1.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.RemoveUserFromChannel(directChannel.Id, user2.Id) + resp, err = client.RemoveUserFromChannel(context.Background(), directChannel.Id, user2.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.SystemAdminClient.RemoveUserFromChannel(directChannel.Id, user1.Id) + resp, err = th.SystemAdminClient.RemoveUserFromChannel(context.Background(), directChannel.Id, user1.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) // Test on preventing removal of user from a group channel user3 := th.CreateUser() - groupChannel, _, err := client.CreateGroupChannel([]string{user1.Id, user2.Id, user3.Id}) + groupChannel, _, err := client.CreateGroupChannel(context.Background(), []string{user1.Id, user2.Id, user3.Id}) require.NoError(t, err) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - resp, err = client.RemoveUserFromChannel(groupChannel.Id, user1.Id) + resp, err = client.RemoveUserFromChannel(context.Background(), groupChannel.Id, user1.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -3496,21 +3496,21 @@ func TestAutocompleteChannels(t *testing.T) { defer th.TearDown() // A private channel to make sure private channels are used. - ptown, _, _ := th.Client.CreateChannel(&model.Channel{ + ptown, _, _ := th.Client.CreateChannel(context.Background(), &model.Channel{ DisplayName: "Town", Name: "town", Type: model.ChannelTypePrivate, TeamId: th.BasicTeam.Id, }) - tower, _, _ := th.Client.CreateChannel(&model.Channel{ + tower, _, _ := th.Client.CreateChannel(context.Background(), &model.Channel{ DisplayName: "Tower", Name: "tower", Type: model.ChannelTypeOpen, TeamId: th.BasicTeam.Id, }) defer func() { - th.Client.DeleteChannel(ptown.Id) - th.Client.DeleteChannel(tower.Id) + th.Client.DeleteChannel(context.Background(), ptown.Id) + th.Client.DeleteChannel(context.Background(), tower.Id) }() for _, tc := range []struct { @@ -3543,7 +3543,7 @@ func TestAutocompleteChannels(t *testing.T) { }, } { t.Run(tc.description, func(t *testing.T) { - channels, _, err := th.Client.AutocompleteChannelsForTeam(tc.teamId, tc.fragment) + channels, _, err := th.Client.AutocompleteChannelsForTeam(context.Background(), tc.teamId, tc.fragment) require.NoError(t, err) names := make([]string, len(channels)) for i, c := range channels { @@ -3576,47 +3576,47 @@ func TestAutocompleteChannelsForSearch(t *testing.T) { defer th.App.PermanentDeleteUser(th.Context, u4) // A private channel to make sure private channels are not used - ptown, _, _ := th.SystemAdminClient.CreateChannel(&model.Channel{ + ptown, _, _ := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "Town", Name: "town", Type: model.ChannelTypePrivate, TeamId: th.BasicTeam.Id, }) defer func() { - th.Client.DeleteChannel(ptown.Id) + th.Client.DeleteChannel(context.Background(), ptown.Id) }() - mypriv, _, _ := th.Client.CreateChannel(&model.Channel{ + mypriv, _, _ := th.Client.CreateChannel(context.Background(), &model.Channel{ DisplayName: "My private town", Name: "townpriv", Type: model.ChannelTypePrivate, TeamId: th.BasicTeam.Id, }) defer func() { - th.Client.DeleteChannel(mypriv.Id) + th.Client.DeleteChannel(context.Background(), mypriv.Id) }() - dc1, _, err := th.Client.CreateDirectChannel(th.BasicUser.Id, u1.Id) + dc1, _, err := th.Client.CreateDirectChannel(context.Background(), th.BasicUser.Id, u1.Id) require.NoError(t, err) defer func() { - th.Client.DeleteChannel(dc1.Id) + th.Client.DeleteChannel(context.Background(), dc1.Id) }() - dc2, _, err := th.SystemAdminClient.CreateDirectChannel(u2.Id, u3.Id) + dc2, _, err := th.SystemAdminClient.CreateDirectChannel(context.Background(), u2.Id, u3.Id) require.NoError(t, err) defer func() { - th.SystemAdminClient.DeleteChannel(dc2.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), dc2.Id) }() - gc1, _, err := th.Client.CreateGroupChannel([]string{th.BasicUser.Id, u2.Id, u3.Id}) + gc1, _, err := th.Client.CreateGroupChannel(context.Background(), []string{th.BasicUser.Id, u2.Id, u3.Id}) require.NoError(t, err) defer func() { - th.Client.DeleteChannel(gc1.Id) + th.Client.DeleteChannel(context.Background(), gc1.Id) }() - gc2, _, err := th.SystemAdminClient.CreateGroupChannel([]string{u2.Id, u3.Id, u4.Id}) + gc2, _, err := th.SystemAdminClient.CreateGroupChannel(context.Background(), []string{u2.Id, u3.Id, u4.Id}) require.NoError(t, err) defer func() { - th.SystemAdminClient.DeleteChannel(gc2.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), gc2.Id) }() for _, tc := range []struct { @@ -3656,7 +3656,7 @@ func TestAutocompleteChannelsForSearch(t *testing.T) { }, } { t.Run(tc.description, func(t *testing.T) { - channels, _, err := th.Client.AutocompleteChannelsForTeamForSearch(tc.teamID, tc.fragment) + channels, _, err := th.Client.AutocompleteChannelsForTeamForSearch(context.Background(), tc.teamID, tc.fragment) require.NoError(t, err) names := make([]string, len(channels)) for i, c := range channels { @@ -3700,59 +3700,59 @@ func TestAutocompleteChannelsForSearchGuestUsers(t *testing.T) { th.LoginSystemAdminWithClient(th.SystemAdminClient) - _, _, err := th.SystemAdminClient.AddTeamMember(th.BasicTeam.Id, guest.Id) + _, _, err := th.SystemAdminClient.AddTeamMember(context.Background(), th.BasicTeam.Id, guest.Id) require.NoError(t, err) // A private channel to make sure private channels are not used - town, _, _ := th.SystemAdminClient.CreateChannel(&model.Channel{ + town, _, _ := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "Town", Name: "town", Type: model.ChannelTypeOpen, TeamId: th.BasicTeam.Id, }) defer func() { - th.SystemAdminClient.DeleteChannel(town.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), town.Id) }() - _, _, err = th.SystemAdminClient.AddChannelMember(town.Id, guest.Id) + _, _, err = th.SystemAdminClient.AddChannelMember(context.Background(), town.Id, guest.Id) require.NoError(t, err) - mypriv, _, _ := th.SystemAdminClient.CreateChannel(&model.Channel{ + mypriv, _, _ := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "My private town", Name: "townpriv", Type: model.ChannelTypePrivate, TeamId: th.BasicTeam.Id, }) defer func() { - th.SystemAdminClient.DeleteChannel(mypriv.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), mypriv.Id) }() - _, _, err = th.SystemAdminClient.AddChannelMember(mypriv.Id, guest.Id) + _, _, err = th.SystemAdminClient.AddChannelMember(context.Background(), mypriv.Id, guest.Id) require.NoError(t, err) - dc1, _, err := th.SystemAdminClient.CreateDirectChannel(th.BasicUser.Id, guest.Id) + dc1, _, err := th.SystemAdminClient.CreateDirectChannel(context.Background(), th.BasicUser.Id, guest.Id) require.NoError(t, err) defer func() { - th.SystemAdminClient.DeleteChannel(dc1.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), dc1.Id) }() - dc2, _, err := th.SystemAdminClient.CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id) + dc2, _, err := th.SystemAdminClient.CreateDirectChannel(context.Background(), th.BasicUser.Id, th.BasicUser2.Id) require.NoError(t, err) defer func() { - th.SystemAdminClient.DeleteChannel(dc2.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), dc2.Id) }() - gc1, _, err := th.SystemAdminClient.CreateGroupChannel([]string{th.BasicUser.Id, th.BasicUser2.Id, guest.Id}) + gc1, _, err := th.SystemAdminClient.CreateGroupChannel(context.Background(), []string{th.BasicUser.Id, th.BasicUser2.Id, guest.Id}) require.NoError(t, err) defer func() { - th.SystemAdminClient.DeleteChannel(gc1.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), gc1.Id) }() - gc2, _, err := th.SystemAdminClient.CreateGroupChannel([]string{th.BasicUser.Id, th.BasicUser2.Id, u1.Id}) + gc2, _, err := th.SystemAdminClient.CreateGroupChannel(context.Background(), []string{th.BasicUser.Id, th.BasicUser2.Id, u1.Id}) require.NoError(t, err) defer func() { - th.SystemAdminClient.DeleteChannel(gc2.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), gc2.Id) }() - _, _, err = th.Client.Login(guest.Username, "Password1") + _, _, err = th.Client.Login(context.Background(), guest.Username, "Password1") require.NoError(t, err) for _, tc := range []struct { @@ -3785,7 +3785,7 @@ func TestAutocompleteChannelsForSearchGuestUsers(t *testing.T) { }, } { t.Run(tc.description, func(t *testing.T) { - channels, _, err := th.Client.AutocompleteChannelsForTeamForSearch(tc.teamID, tc.fragment) + channels, _, err := th.Client.AutocompleteChannelsForTeamForSearch(context.Background(), tc.teamID, tc.fragment) require.NoError(t, err) names := make([]string, len(channels)) for i, c := range channels { @@ -3809,7 +3809,7 @@ func TestUpdateChannelScheme(t *testing.T) { th.App.SetPhase2PermissionsMigrationStatus(true) - team, _, err := th.SystemAdminClient.CreateTeam(&model.Team{ + team, _, err := th.SystemAdminClient.CreateTeam(context.Background(), &model.Team{ DisplayName: "Name", Description: "Some description", CompanyName: "Some company name", @@ -3821,7 +3821,7 @@ func TestUpdateChannelScheme(t *testing.T) { }) require.NoError(t, err) - channel, _, err := th.SystemAdminClient.CreateChannel(&model.Channel{ + channel, _, err := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "Name", Name: "z-z-" + model.NewId() + "a", Type: model.ChannelTypeOpen, @@ -3829,7 +3829,7 @@ func TestUpdateChannelScheme(t *testing.T) { }) require.NoError(t, err) - channelScheme, _, err := th.SystemAdminClient.CreateScheme(&model.Scheme{ + channelScheme, _, err := th.SystemAdminClient.CreateScheme(context.Background(), &model.Scheme{ DisplayName: "DisplayName", Name: model.NewId(), Description: "Some description", @@ -3837,7 +3837,7 @@ func TestUpdateChannelScheme(t *testing.T) { }) require.NoError(t, err) - teamScheme, _, err := th.SystemAdminClient.CreateScheme(&model.Scheme{ + teamScheme, _, err := th.SystemAdminClient.CreateScheme(context.Background(), &model.Scheme{ DisplayName: "DisplayName", Name: model.NewId(), Description: "Some description", @@ -3846,40 +3846,40 @@ func TestUpdateChannelScheme(t *testing.T) { require.NoError(t, err) // Test the setup/base case. - _, err = th.SystemAdminClient.UpdateChannelScheme(channel.Id, channelScheme.Id) + _, err = th.SystemAdminClient.UpdateChannelScheme(context.Background(), channel.Id, channelScheme.Id) require.NoError(t, err) // Test various invalid channel and scheme id combinations. - resp, err := th.SystemAdminClient.UpdateChannelScheme(channel.Id, "x") + resp, err := th.SystemAdminClient.UpdateChannelScheme(context.Background(), channel.Id, "x") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.SystemAdminClient.UpdateChannelScheme("x", channelScheme.Id) + resp, err = th.SystemAdminClient.UpdateChannelScheme(context.Background(), "x", channelScheme.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.SystemAdminClient.UpdateChannelScheme("x", "x") + resp, err = th.SystemAdminClient.UpdateChannelScheme(context.Background(), "x", "x") require.Error(t, err) CheckBadRequestStatus(t, resp) // Test that permissions are required. - resp, err = th.Client.UpdateChannelScheme(channel.Id, channelScheme.Id) + resp, err = th.Client.UpdateChannelScheme(context.Background(), channel.Id, channelScheme.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) // Test that a license is required. th.App.Srv().SetLicense(nil) - resp, err = th.SystemAdminClient.UpdateChannelScheme(channel.Id, channelScheme.Id) + resp, err = th.SystemAdminClient.UpdateChannelScheme(context.Background(), channel.Id, channelScheme.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.App.Srv().SetLicense(model.NewTestLicense("")) // Test an invalid scheme scope. - resp, err = th.SystemAdminClient.UpdateChannelScheme(channel.Id, teamScheme.Id) + resp, err = th.SystemAdminClient.UpdateChannelScheme(context.Background(), channel.Id, teamScheme.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) // Test that an unauthenticated user gets rejected. - th.SystemAdminClient.Logout() - resp, err = th.SystemAdminClient.UpdateChannelScheme(channel.Id, channelScheme.Id) + th.SystemAdminClient.Logout(context.Background()) + resp, err = th.SystemAdminClient.UpdateChannelScheme(context.Background(), channel.Id, channelScheme.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -3892,37 +3892,37 @@ func TestGetChannelMembersTimezones(t *testing.T) { user := th.BasicUser user.Timezone["useAutomaticTimezone"] = "false" user.Timezone["manualTimezone"] = "XOXO/BLABLA" - _, _, err := client.UpdateUser(user) + _, _, err := client.UpdateUser(context.Background(), user) require.NoError(t, err) user2 := th.BasicUser2 user2.Timezone["automaticTimezone"] = "NoWhere/Island" - _, _, err = th.SystemAdminClient.UpdateUser(user2) + _, _, err = th.SystemAdminClient.UpdateUser(context.Background(), user2) require.NoError(t, err) - timezone, _, err := client.GetChannelMembersTimezones(th.BasicChannel.Id) + timezone, _, err := client.GetChannelMembersTimezones(context.Background(), th.BasicChannel.Id) require.NoError(t, err) require.Len(t, timezone, 2, "should return 2 timezones") //both users have same timezone user2.Timezone["automaticTimezone"] = "XOXO/BLABLA" - _, _, err = th.SystemAdminClient.UpdateUser(user2) + _, _, err = th.SystemAdminClient.UpdateUser(context.Background(), user2) require.NoError(t, err) - timezone, _, err = client.GetChannelMembersTimezones(th.BasicChannel.Id) + timezone, _, err = client.GetChannelMembersTimezones(context.Background(), th.BasicChannel.Id) require.NoError(t, err) require.Len(t, timezone, 1, "should return 1 timezone") //no timezone set should return empty user2.Timezone["automaticTimezone"] = "" - _, _, err = th.SystemAdminClient.UpdateUser(user2) + _, _, err = th.SystemAdminClient.UpdateUser(context.Background(), user2) require.NoError(t, err) user.Timezone["manualTimezone"] = "" - _, _, err = client.UpdateUser(user) + _, _, err = client.UpdateUser(context.Background(), user) require.NoError(t, err) - timezone, _, err = client.GetChannelMembersTimezones(th.BasicChannel.Id) + timezone, _, err = client.GetChannelMembersTimezones(context.Background(), th.BasicChannel.Id) require.NoError(t, err) require.Empty(t, timezone, "should return 0 timezone") } @@ -3954,7 +3954,7 @@ func TestChannelMembersMinusGroupMembers(t *testing.T) { require.Nil(t, appErr) // No permissions - _, _, _, err := th.Client.ChannelMembersMinusGroupMembers(channel.Id, []string{group1.Id, group2.Id}, 0, 100, "") + _, _, _, err := th.Client.ChannelMembersMinusGroupMembers(context.Background(), channel.Id, []string{group1.Id, group2.Id}, 0, 100, "") CheckErrorID(t, err, "api.context.permissions.app_error") testCases := map[string]struct { @@ -4010,7 +4010,7 @@ func TestChannelMembersMinusGroupMembers(t *testing.T) { for name, tc := range testCases { t.Run(name, func(t *testing.T) { - uwg, count, _, err := th.SystemAdminClient.ChannelMembersMinusGroupMembers(channel.Id, tc.groupIDs, tc.page, tc.perPage, "") + uwg, count, _, err := th.SystemAdminClient.ChannelMembersMinusGroupMembers(context.Background(), channel.Id, tc.groupIDs, tc.page, tc.perPage, "") require.NoError(t, err) require.Len(t, uwg, tc.length) require.Equal(t, tc.count, int(count)) @@ -4031,21 +4031,21 @@ func TestGetChannelModerations(t *testing.T) { th.App.SetPhase2PermissionsMigrationStatus(true) t.Run("Errors without a license", func(t *testing.T) { - _, _, err := th.SystemAdminClient.GetChannelModerations(channel.Id, "") + _, _, err := th.SystemAdminClient.GetChannelModerations(context.Background(), channel.Id, "") CheckErrorID(t, err, "api.channel.get_channel_moderations.license.error") }) th.App.Srv().SetLicense(model.NewTestLicense()) t.Run("Errors as a non sysadmin", func(t *testing.T) { - _, _, err := th.Client.GetChannelModerations(channel.Id, "") + _, _, err := th.Client.GetChannelModerations(context.Background(), channel.Id, "") CheckErrorID(t, err, "api.context.permissions.app_error") }) th.App.Srv().SetLicense(model.NewTestLicense()) t.Run("Returns default moderations with default roles", func(t *testing.T) { - moderations, _, err := th.SystemAdminClient.GetChannelModerations(channel.Id, "") + moderations, _, err := th.SystemAdminClient.GetChannelModerations(context.Background(), channel.Id, "") require.NoError(t, err) require.Equal(t, len(moderations), 4) for _, moderation := range moderations { @@ -4070,7 +4070,7 @@ func TestGetChannelModerations(t *testing.T) { th.RemovePermissionFromRole(model.PermissionCreatePost.Id, scheme.DefaultChannelGuestRole) defer th.AddPermissionToRole(model.PermissionCreatePost.Id, scheme.DefaultChannelGuestRole) - moderations, _, err := th.SystemAdminClient.GetChannelModerations(channel.Id, "") + moderations, _, err := th.SystemAdminClient.GetChannelModerations(context.Background(), channel.Id, "") require.NoError(t, err) for _, moderation := range moderations { if moderation.Name == model.PermissionCreatePost.Id { @@ -4091,7 +4091,7 @@ func TestGetChannelModerations(t *testing.T) { th.RemovePermissionFromRole(model.PermissionCreatePost.Id, scheme.DefaultChannelGuestRole) defer th.AddPermissionToRole(model.PermissionCreatePost.Id, scheme.DefaultChannelGuestRole) - moderations, _, err := th.SystemAdminClient.GetChannelModerations(channel.Id, "") + moderations, _, err := th.SystemAdminClient.GetChannelModerations(context.Background(), channel.Id, "") require.NoError(t, err) for _, moderation := range moderations { if moderation.Name == model.PermissionCreatePost.Id { @@ -4118,7 +4118,7 @@ func TestGetChannelModerations(t *testing.T) { defer th.AddPermissionToRole(model.PermissionCreatePost.Id, scheme.DefaultChannelGuestRole) defer th.AddPermissionToRole(model.PermissionCreatePost.Id, teamScheme.DefaultChannelGuestRole) - moderations, _, err := th.SystemAdminClient.GetChannelModerations(channel.Id, "") + moderations, _, err := th.SystemAdminClient.GetChannelModerations(context.Background(), channel.Id, "") require.NoError(t, err) for _, moderation := range moderations { if moderation.Name == model.PermissionCreatePost.Id { @@ -4140,7 +4140,7 @@ func TestGetChannelModerations(t *testing.T) { defer th.AddPermissionToRole(model.PermissionCreatePost.Id, scheme.DefaultChannelUserRole) // public channel does not have the permission - moderations, _, err := th.SystemAdminClient.GetChannelModerations(channel.Id, "") + moderations, _, err := th.SystemAdminClient.GetChannelModerations(context.Background(), channel.Id, "") require.NoError(t, err) for _, moderation := range moderations { if moderation.Name == "manage_members" { @@ -4149,7 +4149,7 @@ func TestGetChannelModerations(t *testing.T) { } // private channel does have the permission - moderations, _, err = th.SystemAdminClient.GetChannelModerations(th.BasicPrivateChannel.Id, "") + moderations, _, err = th.SystemAdminClient.GetChannelModerations(context.Background(), th.BasicPrivateChannel.Id, "") require.NoError(t, err) for _, moderation := range moderations { if moderation.Name == "manage_members" { @@ -4188,7 +4188,7 @@ func TestGetChannelModerations(t *testing.T) { _, appErr := th.App.UpdateTeamScheme(team) require.Nil(t, appErr) - _, _, err := th.SystemAdminClient.GetChannelModerations(channel.Id, "") + _, _, err := th.SystemAdminClient.GetChannelModerations(context.Background(), channel.Id, "") require.NoError(t, err) }) } @@ -4206,21 +4206,21 @@ func TestPatchChannelModerations(t *testing.T) { th.App.SetPhase2PermissionsMigrationStatus(true) t.Run("Errors without a license", func(t *testing.T) { - _, _, err := th.SystemAdminClient.PatchChannelModerations(channel.Id, emptyPatch) + _, _, err := th.SystemAdminClient.PatchChannelModerations(context.Background(), channel.Id, emptyPatch) CheckErrorID(t, err, "api.channel.patch_channel_moderations.license.error") }) th.App.Srv().SetLicense(model.NewTestLicense()) t.Run("Errors as a non sysadmin", func(t *testing.T) { - _, _, err := th.Client.PatchChannelModerations(channel.Id, emptyPatch) + _, _, err := th.Client.PatchChannelModerations(context.Background(), channel.Id, emptyPatch) CheckErrorID(t, err, "api.context.permissions.app_error") }) th.App.Srv().SetLicense(model.NewTestLicense()) t.Run("Returns default moderations with empty patch", func(t *testing.T) { - moderations, _, err := th.SystemAdminClient.PatchChannelModerations(channel.Id, emptyPatch) + moderations, _, err := th.SystemAdminClient.PatchChannelModerations(context.Background(), channel.Id, emptyPatch) require.NoError(t, err) require.Equal(t, len(moderations), 4) for _, moderation := range moderations { @@ -4246,7 +4246,7 @@ func TestPatchChannelModerations(t *testing.T) { }, } - moderations, _, err := th.SystemAdminClient.PatchChannelModerations(channel.Id, patch) + moderations, _, err := th.SystemAdminClient.PatchChannelModerations(context.Background(), channel.Id, patch) require.NoError(t, err) require.Equal(t, len(moderations), 4) for _, moderation := range moderations { @@ -4283,7 +4283,7 @@ func TestPatchChannelModerations(t *testing.T) { }, } - moderations, _, err := th.SystemAdminClient.PatchChannelModerations(channel.Id, patch) + moderations, _, err := th.SystemAdminClient.PatchChannelModerations(context.Background(), channel.Id, patch) require.NoError(t, err) require.Equal(t, len(moderations), 4) for _, moderation := range moderations { @@ -4338,7 +4338,7 @@ func TestPatchChannelModerations(t *testing.T) { _, appErr := th.App.UpdateTeamScheme(team) require.Nil(t, appErr) - moderations, _, err := th.SystemAdminClient.PatchChannelModerations(channel.Id, emptyPatch) + moderations, _, err := th.SystemAdminClient.PatchChannelModerations(context.Background(), channel.Id, emptyPatch) require.NoError(t, err) require.Equal(t, len(moderations), 4) for _, moderation := range moderations { @@ -4360,7 +4360,7 @@ func TestPatchChannelModerations(t *testing.T) { }, } - moderations, _, err = th.SystemAdminClient.PatchChannelModerations(channel.Id, patch) + moderations, _, err = th.SystemAdminClient.PatchChannelModerations(context.Background(), channel.Id, patch) require.NoError(t, err) require.Equal(t, len(moderations), 4) for _, moderation := range moderations { @@ -4383,19 +4383,19 @@ func TestGetChannelMemberCountsByGroup(t *testing.T) { channel := th.BasicChannel t.Run("Errors without a license", func(t *testing.T) { - _, _, err := th.SystemAdminClient.GetChannelMemberCountsByGroup(channel.Id, false, "") + _, _, err := th.SystemAdminClient.GetChannelMemberCountsByGroup(context.Background(), channel.Id, false, "") CheckErrorID(t, err, "api.channel.channel_member_counts_by_group.license.error") }) th.App.Srv().SetLicense(model.NewTestLicense()) t.Run("Errors without read permission to the channel", func(t *testing.T) { - _, _, err := th.Client.GetChannelMemberCountsByGroup(model.NewId(), false, "") + _, _, err := th.Client.GetChannelMemberCountsByGroup(context.Background(), model.NewId(), false, "") CheckErrorID(t, err, "api.context.permissions.app_error") }) t.Run("Returns empty for a channel with no members or groups", func(t *testing.T) { - memberCounts, _, _ := th.SystemAdminClient.GetChannelMemberCountsByGroup(channel.Id, false, "") + memberCounts, _, _ := th.SystemAdminClient.GetChannelMemberCountsByGroup(context.Background(), channel.Id, false, "") require.Equal(t, []*model.ChannelMemberCountByGroup{}, memberCounts) }) @@ -4404,18 +4404,18 @@ func TestGetChannelMemberCountsByGroup(t *testing.T) { user.Timezone["manualTimezone"] = "XOXO/BLABLA" _, appErr := th.App.UpsertGroupMember(th.Group.Id, user.Id) require.Nil(t, appErr) - _, _, err := th.SystemAdminClient.UpdateUser(user) + _, _, err := th.SystemAdminClient.UpdateUser(context.Background(), user) require.NoError(t, err) user2 := th.BasicUser2 user2.Timezone["automaticTimezone"] = "NoWhere/Island" _, appErr = th.App.UpsertGroupMember(th.Group.Id, user2.Id) require.Nil(t, appErr) - _, _, err = th.SystemAdminClient.UpdateUser(user2) + _, _, err = th.SystemAdminClient.UpdateUser(context.Background(), user2) require.NoError(t, err) t.Run("Returns users in group without timezones", func(t *testing.T) { - memberCounts, _, _ := th.SystemAdminClient.GetChannelMemberCountsByGroup(channel.Id, false, "") + memberCounts, _, _ := th.SystemAdminClient.GetChannelMemberCountsByGroup(context.Background(), channel.Id, false, "") expectedMemberCounts := []*model.ChannelMemberCountByGroup{ { GroupId: th.Group.Id, @@ -4427,7 +4427,7 @@ func TestGetChannelMemberCountsByGroup(t *testing.T) { }) t.Run("Returns users in group with timezones", func(t *testing.T) { - memberCounts, _, _ := th.SystemAdminClient.GetChannelMemberCountsByGroup(channel.Id, true, "") + memberCounts, _, _ := th.SystemAdminClient.GetChannelMemberCountsByGroup(context.Background(), channel.Id, true, "") expectedMemberCounts := []*model.ChannelMemberCountByGroup{ { GroupId: th.Group.Id, @@ -4452,7 +4452,7 @@ func TestGetChannelMemberCountsByGroup(t *testing.T) { require.Nil(t, appErr) t.Run("Returns multiple groups with users in group with timezones", func(t *testing.T) { - memberCounts, _, _ := th.SystemAdminClient.GetChannelMemberCountsByGroup(channel.Id, true, "") + memberCounts, _, _ := th.SystemAdminClient.GetChannelMemberCountsByGroup(context.Background(), channel.Id, true, "") expectedMemberCounts := []*model.ChannelMemberCountByGroup{ { GroupId: group.Id, @@ -4479,14 +4479,14 @@ func TestMoveChannel(t *testing.T) { t.Run("Should move channel", func(t *testing.T) { publicChannel := th.CreatePublicChannel() - ch, _, err := th.SystemAdminClient.MoveChannel(publicChannel.Id, team2.Id, false) + ch, _, err := th.SystemAdminClient.MoveChannel(context.Background(), publicChannel.Id, team2.Id, false) require.NoError(t, err) require.Equal(t, team2.Id, ch.TeamId) }) t.Run("Should move private channel", func(t *testing.T) { channel := th.CreatePrivateChannel() - ch, _, err := th.SystemAdminClient.MoveChannel(channel.Id, team1.Id, false) + ch, _, err := th.SystemAdminClient.MoveChannel(context.Background(), channel.Id, team1.Id, false) require.NoError(t, err) require.Equal(t, team1.Id, ch.TeamId) }) @@ -4494,7 +4494,7 @@ func TestMoveChannel(t *testing.T) { t.Run("Should fail when trying to move a DM channel", func(t *testing.T) { user := th.CreateUser() dmChannel := th.CreateDmChannel(user) - _, _, err := client.MoveChannel(dmChannel.Id, team1.Id, false) + _, _, err := client.MoveChannel(context.Background(), dmChannel.Id, team1.Id, false) require.Error(t, err) CheckErrorID(t, err, "api.channel.move_channel.type.invalid") }) @@ -4504,14 +4504,14 @@ func TestMoveChannel(t *testing.T) { gmChannel, appErr := th.App.CreateGroupChannel(th.Context, []string{th.BasicUser.Id, th.SystemAdminUser.Id, th.TeamAdminUser.Id}, user.Id) require.Nil(t, appErr) - _, _, err := client.MoveChannel(gmChannel.Id, team1.Id, false) + _, _, err := client.MoveChannel(context.Background(), gmChannel.Id, team1.Id, false) require.Error(t, err) CheckErrorID(t, err, "api.channel.move_channel.type.invalid") }) t.Run("Should fail due to permissions", func(t *testing.T) { publicChannel := th.CreatePublicChannel() - _, _, err := client.MoveChannel(publicChannel.Id, team1.Id, false) + _, _, err := client.MoveChannel(context.Background(), publicChannel.Id, team1.Id, false) require.Error(t, err) CheckErrorID(t, err, "api.context.permissions.app_error") }) @@ -4520,13 +4520,13 @@ func TestMoveChannel(t *testing.T) { publicChannel := th.CreatePublicChannel() user := th.BasicUser - _, err := client.RemoveTeamMember(team2.Id, user.Id) + _, err := client.RemoveTeamMember(context.Background(), team2.Id, user.Id) require.NoError(t, err) - _, _, err = client.AddChannelMember(publicChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), publicChannel.Id, user.Id) require.NoError(t, err) - _, _, err = client.MoveChannel(publicChannel.Id, team2.Id, false) + _, _, err = client.MoveChannel(context.Background(), publicChannel.Id, team2.Id, false) require.Error(t, err) CheckErrorID(t, err, "app.channel.move_channel.members_do_not_match.error") }, "Should fail to move public channel due to a member not member of target team") @@ -4535,13 +4535,13 @@ func TestMoveChannel(t *testing.T) { privateChannel := th.CreatePrivateChannel() user := th.BasicUser - _, err := client.RemoveTeamMember(team2.Id, user.Id) + _, err := client.RemoveTeamMember(context.Background(), team2.Id, user.Id) require.NoError(t, err) - _, _, err = client.AddChannelMember(privateChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user.Id) require.NoError(t, err) - _, _, err = client.MoveChannel(privateChannel.Id, team2.Id, false) + _, _, err = client.MoveChannel(context.Background(), privateChannel.Id, team2.Id, false) require.Error(t, err) CheckErrorID(t, err, "app.channel.move_channel.members_do_not_match.error") }, "Should fail to move private channel due to a member not member of target team") @@ -4550,13 +4550,13 @@ func TestMoveChannel(t *testing.T) { publicChannel := th.CreatePublicChannel() user := th.BasicUser - _, err := client.RemoveTeamMember(team2.Id, user.Id) + _, err := client.RemoveTeamMember(context.Background(), team2.Id, user.Id) require.NoError(t, err) - _, _, err = client.AddChannelMember(publicChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), publicChannel.Id, user.Id) require.NoError(t, err) - newChannel, _, err := client.MoveChannel(publicChannel.Id, team2.Id, true) + newChannel, _, err := client.MoveChannel(context.Background(), publicChannel.Id, team2.Id, true) require.NoError(t, err) require.Equal(t, team2.Id, newChannel.TeamId) }, "Should be able to (force) move public channel by a member that is not member of target team") @@ -4565,13 +4565,13 @@ func TestMoveChannel(t *testing.T) { privateChannel := th.CreatePrivateChannel() user := th.BasicUser - _, err := client.RemoveTeamMember(team2.Id, user.Id) + _, err := client.RemoveTeamMember(context.Background(), team2.Id, user.Id) require.NoError(t, err) - _, _, err = client.AddChannelMember(privateChannel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), privateChannel.Id, user.Id) require.NoError(t, err) - newChannel, _, err := client.MoveChannel(privateChannel.Id, team2.Id, true) + newChannel, _, err := client.MoveChannel(context.Background(), privateChannel.Id, team2.Id, true) require.NoError(t, err) require.Equal(t, team2.Id, newChannel.TeamId) }, "Should be able to (force) move private channel by a member that is not member of target team") @@ -4592,15 +4592,15 @@ func TestRootMentionsCount(t *testing.T) { require.Equal(t, int64(0), channelMember.MentionCount) // mention the user in a root post - post1, _, err := th.SystemAdminClient.CreatePost(&model.Post{ChannelId: channel.Id, Message: "hey @" + user.Username}) + post1, _, err := th.SystemAdminClient.CreatePost(context.Background(), &model.Post{ChannelId: channel.Id, Message: "hey @" + user.Username}) require.NoError(t, err) // mention the user in a reply post post2 := &model.Post{ChannelId: channel.Id, Message: "reply at @" + user.Username, RootId: post1.Id} - _, _, err = th.SystemAdminClient.CreatePost(post2) + _, _, err = th.SystemAdminClient.CreatePost(context.Background(), post2) require.NoError(t, err) // this should perform lazy migration and populate the field - channelUnread, _, err := client.GetChannelUnread(channel.Id, user.Id) + channelUnread, _, err := client.GetChannelUnread(context.Background(), channel.Id, user.Id) require.NoError(t, err) // reply post is not counted, so we should have one root mention require.EqualValues(t, int64(1), channelUnread.MentionCountRoot) @@ -4633,26 +4633,26 @@ func TestViewChannelWithoutCollapsedThreads(t *testing.T) { channel := th.BasicChannel // mention the user in a root post - post1, _, err := th.SystemAdminClient.CreatePost(&model.Post{ChannelId: channel.Id, Message: "hey @" + user.Username}) + post1, _, err := th.SystemAdminClient.CreatePost(context.Background(), &model.Post{ChannelId: channel.Id, Message: "hey @" + user.Username}) require.NoError(t, err) // mention the user in a reply post post2 := &model.Post{ChannelId: channel.Id, Message: "reply at @" + user.Username, RootId: post1.Id} - _, _, err = th.SystemAdminClient.CreatePost(post2) + _, _, err = th.SystemAdminClient.CreatePost(context.Background(), post2) require.NoError(t, err) - threads, _, err := client.GetUserThreads(user.Id, team.Id, model.GetUserThreadsOpts{}) + threads, _, err := client.GetUserThreads(context.Background(), user.Id, team.Id, model.GetUserThreadsOpts{}) require.NoError(t, err) require.EqualValues(t, int64(1), threads.TotalUnreadMentions) // simulate opening the channel from an old client - _, _, err = client.ViewChannel(user.Id, &model.ChannelView{ + _, _, err = client.ViewChannel(context.Background(), user.Id, &model.ChannelView{ ChannelId: channel.Id, PrevChannelId: "", CollapsedThreadsSupported: false, }) require.NoError(t, err) - threads, _, err = client.GetUserThreads(user.Id, team.Id, model.GetUserThreadsOpts{}) + threads, _, err = client.GetUserThreads(context.Background(), user.Id, team.Id, model.GetUserThreadsOpts{}) require.NoError(t, err) require.Zero(t, threads.TotalUnreadMentions) } diff --git a/server/channels/api4/cloud_test.go b/server/channels/api4/cloud_test.go index b9728a8b52..5ec50c69a7 100644 --- a/server/channels/api4/cloud_test.go +++ b/server/channels/api4/cloud_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "errors" "net/http" "testing" @@ -31,9 +32,9 @@ func Test_getCloudLimits(t *testing.T) { th.App.Srv().RemoveLicense() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) - limits, r, err := th.Client.GetProductLimits() + limits, r, err := th.Client.GetProductLimits(context.Background()) require.Error(t, err) require.Nil(t, limits) require.Equal(t, http.StatusForbidden, r.StatusCode, "Expected 403 forbidden") @@ -54,9 +55,9 @@ func Test_getCloudLimits(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense()) - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) - limits, r, err := th.Client.GetProductLimits() + limits, r, err := th.Client.GetProductLimits(context.Background()) require.Error(t, err) require.Nil(t, limits) require.Equal(t, http.StatusForbidden, r.StatusCode, "Expected 403 forbidden") @@ -77,9 +78,9 @@ func Test_getCloudLimits(t *testing.T) { }() th.App.Srv().Cloud = cloud - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) - limits, r, err := th.Client.GetProductLimits() + limits, r, err := th.Client.GetProductLimits(context.Background()) require.Error(t, err) require.Nil(t, limits) require.Equal(t, http.StatusInternalServerError, r.StatusCode, "Expected 500 Internal Server Error") @@ -89,9 +90,9 @@ func Test_getCloudLimits(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Logout() + th.Client.Logout(context.Background()) - limits, r, err := th.Client.GetProductLimits() + limits, r, err := th.Client.GetProductLimits(context.Background()) require.Error(t, err) require.Nil(t, limits) require.Equal(t, http.StatusUnauthorized, r.StatusCode, "Expected 401 Unauthorized") @@ -118,9 +119,9 @@ func Test_getCloudLimits(t *testing.T) { }() th.App.Srv().Cloud = cloud - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) - limits, r, err := th.Client.GetProductLimits() + limits, r, err := th.Client.GetProductLimits(context.Background()) require.NoError(t, err) require.Equal(t, http.StatusOK, r.StatusCode, "Expected 200 OK") require.Equal(t, mockLimits, limits) @@ -167,7 +168,7 @@ func Test_GetSubscription(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -181,7 +182,7 @@ func Test_GetSubscription(t *testing.T) { }() th.App.Srv().Cloud = &cloud - subscriptionReturned, r, err := th.Client.GetSubscription() + subscriptionReturned, r, err := th.Client.GetSubscription(context.Background()) require.NoError(t, err) require.Equal(t, subscriptionReturned, userFacingSubscription) @@ -192,7 +193,7 @@ func Test_GetSubscription(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -206,7 +207,7 @@ func Test_GetSubscription(t *testing.T) { }() th.App.Srv().Cloud = &cloud - subscriptionReturned, r, err := th.SystemAdminClient.GetSubscription() + subscriptionReturned, r, err := th.SystemAdminClient.GetSubscription(context.Background()) require.NoError(t, err) require.Equal(t, subscriptionReturned, subscription) @@ -233,7 +234,7 @@ func Test_requestTrial(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -249,7 +250,7 @@ func Test_requestTrial(t *testing.T) { }() th.App.Srv().Cloud = &cloud - subscriptionChanged, r, err := th.Client.RequestCloudTrial(&newValidBusinessEmail) + subscriptionChanged, r, err := th.Client.RequestCloudTrial(context.Background(), &newValidBusinessEmail) require.Error(t, err) require.Nil(t, subscriptionChanged) require.Equal(t, http.StatusForbidden, r.StatusCode, "403 Forbidden") @@ -259,7 +260,7 @@ func Test_requestTrial(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -275,7 +276,7 @@ func Test_requestTrial(t *testing.T) { }() th.App.Srv().Cloud = &cloud - subscriptionChanged, r, err := th.SystemAdminClient.RequestCloudTrial(&newValidBusinessEmail) + subscriptionChanged, r, err := th.SystemAdminClient.RequestCloudTrial(context.Background(), &newValidBusinessEmail) require.NoError(t, err) require.Equal(t, subscriptionChanged, subscription) @@ -289,7 +290,7 @@ func Test_requestTrial(t *testing.T) { // patch the customer with the additional contact updated with the valid business email newValidBusinessEmail.Email = *model.NewString("valid.email@mattermost.com") - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -305,7 +306,7 @@ func Test_requestTrial(t *testing.T) { }() th.App.Srv().Cloud = &cloud - subscriptionChanged, r, err := th.SystemAdminClient.RequestCloudTrial(&newValidBusinessEmail) + subscriptionChanged, r, err := th.SystemAdminClient.RequestCloudTrial(context.Background(), &newValidBusinessEmail) require.NoError(t, err) require.Equal(t, subscriptionChanged, subscription) @@ -316,11 +317,11 @@ func Test_requestTrial(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) - r, err := th.SystemAdminClient.DoAPIPutBytes("/cloud/request-trial", nil) + r, err := th.SystemAdminClient.DoAPIPutBytes(context.Background(), "/cloud/request-trial", nil) require.Error(t, err) closeBody(r) require.Equal(t, http.StatusBadRequest, r.StatusCode, "Status Bad Request") @@ -333,7 +334,7 @@ func Test_validateBusinessEmail(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) validBusinessEmail := model.ValidateBusinessEmailRequest{Email: "invalid@slacker.com"} @@ -349,7 +350,7 @@ func Test_validateBusinessEmail(t *testing.T) { }() th.App.Srv().Cloud = &cloud - res, err := th.SystemAdminClient.ValidateBusinessEmail(&validBusinessEmail) + res, err := th.SystemAdminClient.ValidateBusinessEmail(context.Background(), &validBusinessEmail) require.Error(t, err) require.Equal(t, http.StatusForbidden, res.StatusCode, "403") }) @@ -358,7 +359,7 @@ func Test_validateBusinessEmail(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) validBusinessEmail := model.ValidateBusinessEmailRequest{Email: "valid@mattermost.com"} @@ -374,7 +375,7 @@ func Test_validateBusinessEmail(t *testing.T) { }() th.App.Srv().Cloud = &cloud - res, err := th.SystemAdminClient.ValidateBusinessEmail(&validBusinessEmail) + res, err := th.SystemAdminClient.ValidateBusinessEmail(context.Background(), &validBusinessEmail) require.NoError(t, err) require.Equal(t, http.StatusOK, res.StatusCode, "200") }) @@ -383,11 +384,11 @@ func Test_validateBusinessEmail(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) - r, err := th.SystemAdminClient.DoAPIPostBytes("/cloud/validate-business-email", nil) + r, err := th.SystemAdminClient.DoAPIPostBytes(context.Background(), "/cloud/validate-business-email", nil) require.Error(t, err) closeBody(r) require.Equal(t, http.StatusBadRequest, r.StatusCode, "Status Bad Request") @@ -399,7 +400,7 @@ func Test_validateWorkspaceBusinessEmail(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -422,7 +423,7 @@ func Test_validateWorkspaceBusinessEmail(t *testing.T) { }() th.App.Srv().Cloud = &cloud - _, err := th.SystemAdminClient.ValidateWorkspaceBusinessEmail() + _, err := th.SystemAdminClient.ValidateWorkspaceBusinessEmail(context.Background()) require.NoError(t, err) }) @@ -430,7 +431,7 @@ func Test_validateWorkspaceBusinessEmail(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -458,7 +459,7 @@ func Test_validateWorkspaceBusinessEmail(t *testing.T) { }() th.App.Srv().Cloud = &cloud - _, err := th.SystemAdminClient.ValidateWorkspaceBusinessEmail() + _, err := th.SystemAdminClient.ValidateWorkspaceBusinessEmail(context.Background()) require.NoError(t, err) }) @@ -466,7 +467,7 @@ func Test_validateWorkspaceBusinessEmail(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -489,7 +490,7 @@ func Test_validateWorkspaceBusinessEmail(t *testing.T) { }() th.App.Srv().Cloud = &cloud - r, err := th.SystemAdminClient.DoAPIPostBytes("/cloud/validate-workspace-business-email", nil) + r, err := th.SystemAdminClient.DoAPIPostBytes(context.Background(), "/cloud/validate-workspace-business-email", nil) require.Error(t, err) closeBody(r) require.Equal(t, http.StatusBadRequest, r.StatusCode, "Status Bad Request") @@ -566,7 +567,7 @@ func TestGetCloudProducts(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -578,7 +579,7 @@ func TestGetCloudProducts(t *testing.T) { }() th.App.Srv().Cloud = &cloud - returnedProducts, r, err := th.Client.GetCloudProducts() + returnedProducts, r, err := th.Client.GetCloudProducts(context.Background()) require.NoError(t, err) require.Equal(t, http.StatusOK, r.StatusCode, "Status OK") require.Equal(t, returnedProducts, cloudProducts) @@ -588,7 +589,7 @@ func TestGetCloudProducts(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) @@ -602,7 +603,7 @@ func TestGetCloudProducts(t *testing.T) { }() th.App.Srv().Cloud = &cloud - returnedProducts, r, err := th.Client.GetCloudProducts() + returnedProducts, r, err := th.Client.GetCloudProducts(context.Background()) require.NoError(t, err) require.Equal(t, http.StatusOK, r.StatusCode, "Status OK") require.Equal(t, returnedProducts, sanitizedProducts) @@ -654,7 +655,7 @@ func Test_GetExpandStatsForSubscription(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) cloud := mocks.CloudInterface{} @@ -666,7 +667,7 @@ func Test_GetExpandStatsForSubscription(t *testing.T) { }() th.App.Srv().Cloud = &cloud - checksMade, r, err := th.Client.GetSubscriptionStatus(licenseId) + checksMade, r, err := th.Client.GetSubscriptionStatus(context.Background(), licenseId) require.Error(t, err) require.Nil(t, checksMade) require.Equal(t, http.StatusForbidden, r.StatusCode, "403 Forbidden") @@ -676,7 +677,7 @@ func Test_GetExpandStatsForSubscription(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) cloud := mocks.CloudInterface{} @@ -688,7 +689,7 @@ func Test_GetExpandStatsForSubscription(t *testing.T) { }() th.App.Srv().Cloud = &cloud - checks, r, err := th.Client.GetSubscriptionStatus("") + checks, r, err := th.Client.GetSubscriptionStatus(context.Background(), "") require.Error(t, err) require.Nil(t, checks) require.Equal(t, http.StatusBadRequest, r.StatusCode, "400 Bad Request") @@ -740,7 +741,7 @@ func TestGetSelfHostedProducts(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) cloud := mocks.CloudInterface{} cloud.Mock.On("GetSelfHostedProducts", mock.Anything, mock.Anything).Return(products, nil) @@ -750,7 +751,7 @@ func TestGetSelfHostedProducts(t *testing.T) { }() th.App.Srv().Cloud = &cloud - returnedProducts, r, err := th.Client.GetSelfHostedProducts() + returnedProducts, r, err := th.Client.GetSelfHostedProducts(context.Background()) require.NoError(t, err) require.Equal(t, http.StatusOK, r.StatusCode, "Status OK") require.Equal(t, returnedProducts, products) @@ -760,7 +761,7 @@ func TestGetSelfHostedProducts(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) cloud := mocks.CloudInterface{} @@ -772,7 +773,7 @@ func TestGetSelfHostedProducts(t *testing.T) { }() th.App.Srv().Cloud = &cloud - returnedProducts, r, err := th.Client.GetSelfHostedProducts() + returnedProducts, r, err := th.Client.GetSelfHostedProducts(context.Background()) require.NoError(t, err) require.Equal(t, http.StatusOK, r.StatusCode, "Status OK") require.Equal(t, returnedProducts, sanitizedProducts) diff --git a/server/channels/api4/cluster_test.go b/server/channels/api4/cluster_test.go index ae6a209e92..d19a99cea5 100644 --- a/server/channels/api4/cluster_test.go +++ b/server/channels/api4/cluster_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/require" @@ -16,13 +17,13 @@ func TestGetClusterStatus(t *testing.T) { defer th.TearDown() t.Run("as system user", func(t *testing.T) { - _, resp, err := th.Client.GetClusterStatus() + _, resp, err := th.Client.GetClusterStatus(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("as system admin", func(t *testing.T) { - infos, _, err := th.SystemAdminClient.GetClusterStatus() + infos, _, err := th.SystemAdminClient.GetClusterStatus(context.Background()) require.NoError(t, err) require.NotNil(t, infos, "cluster status should not be nil") @@ -31,7 +32,7 @@ func TestGetClusterStatus(t *testing.T) { t.Run("as restricted system admin", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - _, resp, err := th.SystemAdminClient.GetClusterStatus() + _, resp, err := th.SystemAdminClient.GetClusterStatus(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) diff --git a/server/channels/api4/command_help_test.go b/server/channels/api4/command_help_test.go index 9b0aca90cd..1add2fa6f8 100644 --- a/server/channels/api4/command_help_test.go +++ b/server/channels/api4/command_help_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/assert" @@ -25,14 +26,14 @@ func TestHelpCommand(t *testing.T) { }() th.App.UpdateConfig(func(cfg *model.Config) { *cfg.SupportSettings.HelpLink = "" }) - rs1, _, err := client.ExecuteCommand(channel.Id, "/help ") + rs1, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/help ") require.NoError(t, err) assert.Contains(t, rs1.Text, model.SupportSettingsDefaultHelpLink, "failed to default help link") th.App.UpdateConfig(func(cfg *model.Config) { *cfg.SupportSettings.HelpLink = "https://docs.mattermost.com/guides/user.html" }) - rs2, _, err := client.ExecuteCommand(channel.Id, "/help ") + rs2, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/help ") require.NoError(t, err) assert.Contains(t, rs2.Text, "https://docs.mattermost.com/guides/user.html", "failed to help link") } diff --git a/server/channels/api4/command_test.go b/server/channels/api4/command_test.go index 83fcff20b3..6614a868e9 100644 --- a/server/channels/api4/command_test.go +++ b/server/channels/api4/command_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "net/http" "net/http/httptest" @@ -38,23 +39,23 @@ func TestCreateCommand(t *testing.T) { Method: model.CommandMethodPost, Trigger: "trigger"} - _, resp, err := client.CreateCommand(newCmd) + _, resp, err := client.CreateCommand(context.Background(), newCmd) require.Error(t, err) CheckForbiddenStatus(t, resp) - createdCmd, resp, err := th.SystemAdminClient.CreateCommand(newCmd) + createdCmd, resp, err := th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.NoError(t, err) CheckCreatedStatus(t, resp) require.Equal(t, th.SystemAdminUser.Id, createdCmd.CreatorId, "user ids didn't match") require.Equal(t, th.BasicTeam.Id, createdCmd.TeamId, "team ids didn't match") - _, resp, err = th.SystemAdminClient.CreateCommand(newCmd) + _, resp, err = th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.Error(t, err) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "api.command.duplicate_trigger.app_error") newCmd.Trigger = "Local" - localCreatedCmd, resp, err := LocalClient.CreateCommand(newCmd) + localCreatedCmd, resp, err := LocalClient.CreateCommand(context.Background(), newCmd) require.NoError(t, err) CheckCreatedStatus(t, resp) require.Equal(t, th.BasicUser.Id, localCreatedCmd.CreatorId, "local client: user ids didn't match") @@ -62,7 +63,7 @@ func TestCreateCommand(t *testing.T) { newCmd.Method = "Wrong" newCmd.Trigger = "testcommand" - _, resp, err = th.SystemAdminClient.CreateCommand(newCmd) + _, resp, err = th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.Error(t, err) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "model.command.is_valid.method.app_error") @@ -70,14 +71,14 @@ func TestCreateCommand(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCommands = false }) newCmd.Method = "P" newCmd.Trigger = "testcommand" - _, resp, err = th.SystemAdminClient.CreateCommand(newCmd) + _, resp, err = th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.Error(t, err) CheckNotImplementedStatus(t, resp) CheckErrorID(t, err, "api.command.disabled.app_error") // Confirm that local clients can't override disable command setting newCmd.Trigger = "LocalOverride" - _, _, err = LocalClient.CreateCommand(newCmd) + _, _, err = LocalClient.CreateCommand(context.Background(), newCmd) CheckErrorID(t, err, "api.command.disabled.app_error") } @@ -114,7 +115,7 @@ func TestUpdateCommand(t *testing.T) { } th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - rcmd, _, err := client.UpdateCommand(cmd2) + rcmd, _, err := client.UpdateCommand(context.Background(), cmd2) require.NoError(t, err) require.Equal(t, cmd2.Trigger, rcmd.Trigger, "Trigger should have updated") @@ -129,7 +130,7 @@ func TestUpdateCommand(t *testing.T) { cmd2.Id = GenerateTestId() - rcmd, resp, err := client.UpdateCommand(cmd2) + rcmd, resp, err := client.UpdateCommand(context.Background(), cmd2) require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -137,25 +138,25 @@ func TestUpdateCommand(t *testing.T) { cmd2.Id = "junk" - _, resp, err = client.UpdateCommand(cmd2) + _, resp, err = client.UpdateCommand(context.Background(), cmd2) require.Error(t, err) CheckBadRequestStatus(t, resp) cmd2.Id = cmd1.Id cmd2.TeamId = GenerateTestId() - _, resp, err = client.UpdateCommand(cmd2) + _, resp, err = client.UpdateCommand(context.Background(), cmd2) require.Error(t, err) CheckBadRequestStatus(t, resp) cmd2.TeamId = team.Id - _, resp, err = th.Client.UpdateCommand(cmd2) + _, resp, err = th.Client.UpdateCommand(context.Background(), cmd2) require.Error(t, err) CheckNotFoundStatus(t, resp) }) - th.SystemAdminClient.Logout() - _, resp, err := th.SystemAdminClient.UpdateCommand(cmd2) + th.SystemAdminClient.Logout(context.Background()) + _, resp, err := th.SystemAdminClient.UpdateCommand(context.Background(), cmd2) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -183,18 +184,18 @@ func TestMoveCommand(t *testing.T) { rcmd1, _ := th.App.CreateCommand(cmd1) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err := client.MoveCommand(newTeam.Id, rcmd1.Id) + _, err := client.MoveCommand(context.Background(), newTeam.Id, rcmd1.Id) require.NoError(t, err) rcmd1, _ = th.App.GetCommand(rcmd1.Id) require.NotNil(t, rcmd1) require.Equal(t, newTeam.Id, rcmd1.TeamId) - resp, err := client.MoveCommand(newTeam.Id, "bogus") + resp, err := client.MoveCommand(context.Background(), newTeam.Id, "bogus") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.MoveCommand(GenerateTestId(), rcmd1.Id) + resp, err = client.MoveCommand(context.Background(), GenerateTestId(), rcmd1.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -208,12 +209,12 @@ func TestMoveCommand(t *testing.T) { rcmd2, _ := th.App.CreateCommand(cmd2) - resp, err := th.Client.MoveCommand(newTeam.Id, rcmd2.Id) + resp, err := th.Client.MoveCommand(context.Background(), newTeam.Id, rcmd2.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) - th.SystemAdminClient.Logout() - resp, err = th.SystemAdminClient.MoveCommand(newTeam.Id, rcmd2.Id) + th.SystemAdminClient.Logout(context.Background()) + resp, err = th.SystemAdminClient.MoveCommand(context.Background(), newTeam.Id, rcmd2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -242,17 +243,17 @@ func TestDeleteCommand(t *testing.T) { cmd1.Id = "" rcmd1, appErr := th.App.CreateCommand(cmd1) require.Nil(t, appErr) - _, err := client.DeleteCommand(rcmd1.Id) + _, err := client.DeleteCommand(context.Background(), rcmd1.Id) require.NoError(t, err) rcmd1, _ = th.App.GetCommand(rcmd1.Id) require.Nil(t, rcmd1) - resp, err := client.DeleteCommand("junk") + resp, err := client.DeleteCommand(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.DeleteCommand(GenerateTestId()) + resp, err = client.DeleteCommand(context.Background(), GenerateTestId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -266,12 +267,12 @@ func TestDeleteCommand(t *testing.T) { rcmd2, _ := th.App.CreateCommand(cmd2) - resp, err := th.Client.DeleteCommand(rcmd2.Id) + resp, err := th.Client.DeleteCommand(context.Background(), rcmd2.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) - th.SystemAdminClient.Logout() - resp, err = th.SystemAdminClient.DeleteCommand(rcmd2.Id) + th.SystemAdminClient.Logout(context.Background()) + resp, err = th.SystemAdminClient.DeleteCommand(context.Background(), rcmd2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -294,11 +295,11 @@ func TestListCommands(t *testing.T) { Method: model.CommandMethodPost, Trigger: "custom_command"} - _, _, err := th.SystemAdminClient.CreateCommand(newCmd) + _, _, err := th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - listCommands, _, err := c.ListCommands(th.BasicTeam.Id, false) + listCommands, _, err := c.ListCommands(context.Background(), th.BasicTeam.Id, false) require.NoError(t, err) foundEcho := false @@ -316,7 +317,7 @@ func TestListCommands(t *testing.T) { }, "ListSystemAndCustomCommands") th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - listCommands, _, err := c.ListCommands(th.BasicTeam.Id, true) + listCommands, _, err := c.ListCommands(context.Background(), th.BasicTeam.Id, true) require.NoError(t, err) require.Len(t, listCommands, 1, "Should list just one custom command") @@ -324,13 +325,13 @@ func TestListCommands(t *testing.T) { }, "ListCustomOnlyCommands") t.Run("UserWithNoPermissionForCustomCommands", func(t *testing.T) { - _, resp, err := client.ListCommands(th.BasicTeam.Id, true) + _, resp, err := client.ListCommands(context.Background(), th.BasicTeam.Id, true) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("RegularUserCanListOnlySystemCommands", func(t *testing.T) { - listCommands, _, err := client.ListCommands(th.BasicTeam.Id, false) + listCommands, _, err := client.ListCommands(context.Background(), th.BasicTeam.Id, false) require.NoError(t, err) foundEcho := false @@ -348,24 +349,24 @@ func TestListCommands(t *testing.T) { }) t.Run("NoMember", func(t *testing.T) { - client.Logout() + client.Logout(context.Background()) user := th.CreateUser() - th.SystemAdminClient.RemoveTeamMember(th.BasicTeam.Id, user.Id) - client.Login(user.Email, user.Password) - _, resp, err := client.ListCommands(th.BasicTeam.Id, false) + th.SystemAdminClient.RemoveTeamMember(context.Background(), th.BasicTeam.Id, user.Id) + client.Login(context.Background(), user.Email, user.Password) + _, resp, err := client.ListCommands(context.Background(), th.BasicTeam.Id, false) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.ListCommands(th.BasicTeam.Id, true) + _, resp, err = client.ListCommands(context.Background(), th.BasicTeam.Id, true) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("NotLoggedIn", func(t *testing.T) { - client.Logout() - _, resp, err := client.ListCommands(th.BasicTeam.Id, false) + client.Logout(context.Background()) + _, resp, err := client.ListCommands(context.Background(), th.BasicTeam.Id, false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = client.ListCommands(th.BasicTeam.Id, true) + _, resp, err = client.ListCommands(context.Background(), th.BasicTeam.Id, true) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -383,11 +384,11 @@ func TestListAutocompleteCommands(t *testing.T) { Method: model.CommandMethodPost, Trigger: "custom_command"} - _, _, err := th.SystemAdminClient.CreateCommand(newCmd) + _, _, err := th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.NoError(t, err) t.Run("ListAutocompleteCommandsOnly", func(t *testing.T) { - listCommands, _, err := th.SystemAdminClient.ListAutocompleteCommands(th.BasicTeam.Id) + listCommands, _, err := th.SystemAdminClient.ListAutocompleteCommands(context.Background(), th.BasicTeam.Id) require.NoError(t, err) foundEcho := false @@ -405,7 +406,7 @@ func TestListAutocompleteCommands(t *testing.T) { }) t.Run("RegularUserCanListOnlySystemCommands", func(t *testing.T) { - listCommands, _, err := client.ListAutocompleteCommands(th.BasicTeam.Id) + listCommands, _, err := client.ListAutocompleteCommands(context.Background(), th.BasicTeam.Id) require.NoError(t, err) foundEcho := false @@ -423,18 +424,18 @@ func TestListAutocompleteCommands(t *testing.T) { }) t.Run("NoMember", func(t *testing.T) { - client.Logout() + client.Logout(context.Background()) user := th.CreateUser() - th.SystemAdminClient.RemoveTeamMember(th.BasicTeam.Id, user.Id) - client.Login(user.Email, user.Password) - _, resp, err := client.ListAutocompleteCommands(th.BasicTeam.Id) + th.SystemAdminClient.RemoveTeamMember(context.Background(), th.BasicTeam.Id, user.Id) + client.Login(context.Background(), user.Email, user.Password) + _, resp, err := client.ListAutocompleteCommands(context.Background(), th.BasicTeam.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("NotLoggedIn", func(t *testing.T) { - client.Logout() - _, resp, err := client.ListAutocompleteCommands(th.BasicTeam.Id) + client.Logout(context.Background()) + _, resp, err := client.ListAutocompleteCommands(context.Background(), th.BasicTeam.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -452,11 +453,11 @@ func TestListCommandAutocompleteSuggestions(t *testing.T) { Method: model.CommandMethodPost, Trigger: "custom_command"} - _, _, err := th.SystemAdminClient.CreateCommand(newCmd) + _, _, err := th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.NoError(t, err) t.Run("ListAutocompleteSuggestionsOnly", func(t *testing.T) { - suggestions, _, err := th.SystemAdminClient.ListCommandAutocompleteSuggestions("/", th.BasicTeam.Id) + suggestions, _, err := th.SystemAdminClient.ListCommandAutocompleteSuggestions(context.Background(), "/", th.BasicTeam.Id) require.NoError(t, err) foundEcho := false @@ -479,7 +480,7 @@ func TestListCommandAutocompleteSuggestions(t *testing.T) { }) t.Run("ListAutocompleteSuggestionsOnlyWithInput", func(t *testing.T) { - suggestions, _, err := th.SystemAdminClient.ListCommandAutocompleteSuggestions("/e", th.BasicTeam.Id) + suggestions, _, err := th.SystemAdminClient.ListCommandAutocompleteSuggestions(context.Background(), "/e", th.BasicTeam.Id) require.NoError(t, err) foundEcho := false @@ -497,7 +498,7 @@ func TestListCommandAutocompleteSuggestions(t *testing.T) { }) t.Run("RegularUserCanListOnlySystemCommands", func(t *testing.T) { - suggestions, _, err := client.ListCommandAutocompleteSuggestions("/", th.BasicTeam.Id) + suggestions, _, err := client.ListCommandAutocompleteSuggestions(context.Background(), "/", th.BasicTeam.Id) require.NoError(t, err) foundEcho := false @@ -515,18 +516,18 @@ func TestListCommandAutocompleteSuggestions(t *testing.T) { }) t.Run("NoMember", func(t *testing.T) { - client.Logout() + client.Logout(context.Background()) user := th.CreateUser() - th.SystemAdminClient.RemoveTeamMember(th.BasicTeam.Id, user.Id) - client.Login(user.Email, user.Password) - _, resp, err := client.ListCommandAutocompleteSuggestions("/", th.BasicTeam.Id) + th.SystemAdminClient.RemoveTeamMember(context.Background(), th.BasicTeam.Id, user.Id) + client.Login(context.Background(), user.Email, user.Password) + _, resp, err := client.ListCommandAutocompleteSuggestions(context.Background(), "/", th.BasicTeam.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("NotLoggedIn", func(t *testing.T) { - client.Logout() - _, resp, err := client.ListCommandAutocompleteSuggestions("/", th.BasicTeam.Id) + client.Logout(context.Background()) + _, resp, err := client.ListCommandAutocompleteSuggestions(context.Background(), "/", th.BasicTeam.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -549,12 +550,12 @@ func TestGetCommand(t *testing.T) { Method: model.CommandMethodPost, Trigger: "roger"} - newCmd, _, err := th.SystemAdminClient.CreateCommand(newCmd) + newCmd, _, err := th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { t.Run("ValidId", func(t *testing.T) { - cmd, _, err := client.GetCommandById(newCmd.Id) + cmd, _, err := client.GetCommandById(context.Background(), newCmd.Id) require.NoError(t, err) require.Equal(t, newCmd.Id, cmd.Id) @@ -566,29 +567,29 @@ func TestGetCommand(t *testing.T) { }) t.Run("InvalidId", func(t *testing.T) { - _, _, err := client.GetCommandById(strings.Repeat("z", len(newCmd.Id))) + _, _, err := client.GetCommandById(context.Background(), strings.Repeat("z", len(newCmd.Id))) require.Error(t, err) }) }) t.Run("UserWithNoPermissionForCustomCommands", func(t *testing.T) { - _, resp, err := th.Client.GetCommandById(newCmd.Id) + _, resp, err := th.Client.GetCommandById(context.Background(), newCmd.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) }) t.Run("NoMember", func(t *testing.T) { - th.Client.Logout() + th.Client.Logout(context.Background()) user := th.CreateUser() - th.SystemAdminClient.RemoveTeamMember(th.BasicTeam.Id, user.Id) - th.Client.Login(user.Email, user.Password) - _, resp, err := th.Client.GetCommandById(newCmd.Id) + th.SystemAdminClient.RemoveTeamMember(context.Background(), th.BasicTeam.Id, user.Id) + th.Client.Login(context.Background(), user.Email, user.Password) + _, resp, err := th.Client.GetCommandById(context.Background(), newCmd.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) }) t.Run("NotLoggedIn", func(t *testing.T) { - th.Client.Logout() - _, resp, err := th.Client.GetCommandById(newCmd.Id) + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetCommandById(context.Background(), newCmd.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -612,15 +613,15 @@ func TestRegenToken(t *testing.T) { Method: model.CommandMethodPost, Trigger: "trigger"} - createdCmd, resp, err := th.SystemAdminClient.CreateCommand(newCmd) + createdCmd, resp, err := th.SystemAdminClient.CreateCommand(context.Background(), newCmd) require.NoError(t, err) CheckCreatedStatus(t, resp) - token, _, err := th.SystemAdminClient.RegenCommandToken(createdCmd.Id) + token, _, err := th.SystemAdminClient.RegenCommandToken(context.Background(), createdCmd.Id) require.NoError(t, err) require.NotEqual(t, createdCmd.Token, token, "should update the token") - token, resp, err = client.RegenCommandToken(createdCmd.Id) + token, resp, err = client.RegenCommandToken(context.Background(), createdCmd.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) require.Empty(t, token, "should not return the token") @@ -663,36 +664,36 @@ func TestExecuteInvalidCommand(t *testing.T) { _, appErr := th.App.CreateCommand(getCmd) require.Nil(t, appErr, "failed to create get command") - _, resp, err := client.ExecuteCommand(channel.Id, "") + _, resp, err := client.ExecuteCommand(context.Background(), channel.Id, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.ExecuteCommand(channel.Id, "/") + _, resp, err = client.ExecuteCommand(context.Background(), channel.Id, "/") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.ExecuteCommand(channel.Id, "getcommand") + _, resp, err = client.ExecuteCommand(context.Background(), channel.Id, "getcommand") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.ExecuteCommand(channel.Id, "/junk") + _, resp, err = client.ExecuteCommand(context.Background(), channel.Id, "/junk") require.Error(t, err) CheckNotFoundStatus(t, resp) otherUser := th.CreateUser() - client.Login(otherUser.Email, otherUser.Password) + client.Login(context.Background(), otherUser.Email, otherUser.Password) - _, resp, err = client.ExecuteCommand(channel.Id, "/getcommand") + _, resp, err = client.ExecuteCommand(context.Background(), channel.Id, "/getcommand") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) - _, resp, err = client.ExecuteCommand(channel.Id, "/getcommand") + _, resp, err = client.ExecuteCommand(context.Background(), channel.Id, "/getcommand") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.ExecuteCommand(channel.Id, "/getcommand") + _, _, err = th.SystemAdminClient.ExecuteCommand(context.Background(), channel.Id, "/getcommand") require.NoError(t, err) } @@ -750,7 +751,7 @@ func TestExecuteGetCommand(t *testing.T) { _, appErr := th.App.CreateCommand(getCmd) require.Nil(t, appErr, "failed to create get command") - commandResponse, _, err := client.ExecuteCommand(channel.Id, "/getcommand") + commandResponse, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/getcommand") require.NoError(t, err) assert.True(t, len(commandResponse.TriggerId) == 26) @@ -810,7 +811,7 @@ func TestExecutePostCommand(t *testing.T) { _, appErr := th.App.CreateCommand(postCmd) require.Nil(t, appErr, "failed to create get command") - commandResponse, _, err := client.ExecuteCommand(channel.Id, "/postcommand") + commandResponse, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/postcommand") require.NoError(t, err) assert.True(t, len(commandResponse.TriggerId) == 26) @@ -866,7 +867,7 @@ func TestExecuteCommandAgainstChannelOnAnotherTeam(t *testing.T) { // the execute command endpoint will always search for the command by trigger and team id, inferring team id from the // channel id, so there is no way to use that slash command on a channel that belongs to some other team - _, resp, err := client.ExecuteCommand(channel.Id, "/postcommand") + _, resp, err := client.ExecuteCommand(context.Background(), channel.Id, "/postcommand") require.Error(t, err) CheckNotFoundStatus(t, resp) } @@ -918,11 +919,11 @@ func TestExecuteCommandAgainstChannelUserIsNotIn(t *testing.T) { // make a channel on that team, ensuring that our test user isn't in it channel2 := th.CreateChannelWithClientAndTeam(client, model.ChannelTypeOpen, team2.Id) - _, err := th.Client.RemoveUserFromChannel(channel2.Id, th.BasicUser.Id) + _, err := th.Client.RemoveUserFromChannel(context.Background(), channel2.Id, th.BasicUser.Id) require.NoError(t, err, "Failed to remove user from channel") // we should not be able to run the slash command in channel2, because we aren't in it - _, resp, err := client.ExecuteCommandWithTeam(channel2.Id, team2.Id, "/postcommand") + _, resp, err := client.ExecuteCommandWithTeam(context.Background(), channel2.Id, team2.Id, "/postcommand") require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -976,17 +977,17 @@ func TestExecuteCommandInDirectMessageChannel(t *testing.T) { require.Nil(t, appErr, "failed to create post command") // make a direct message channel - dmChannel, response, err := client.CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id) + dmChannel, response, err := client.CreateDirectChannel(context.Background(), th.BasicUser.Id, th.BasicUser2.Id) require.NoError(t, err) CheckCreatedStatus(t, response) // we should be able to run the slash command in the DM channel - _, resp, err := client.ExecuteCommandWithTeam(dmChannel.Id, team2.Id, "/postcommand") + _, resp, err := client.ExecuteCommandWithTeam(context.Background(), dmChannel.Id, team2.Id, "/postcommand") require.NoError(t, err) CheckOKStatus(t, resp) // but we can't run the slash command in the DM channel if we sub in some other team's id - _, resp, err = client.ExecuteCommandWithTeam(dmChannel.Id, th.BasicTeam.Id, "/postcommand") + _, resp, err = client.ExecuteCommandWithTeam(context.Background(), dmChannel.Id, th.BasicTeam.Id, "/postcommand") require.Error(t, err) CheckNotFoundStatus(t, resp) } @@ -1043,26 +1044,26 @@ func TestExecuteCommandInTeamUserIsNotOn(t *testing.T) { require.Nil(t, appErr, "failed to create post command") // make a direct message channel - dmChannel, response, err := client.CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id) + dmChannel, response, err := client.CreateDirectChannel(context.Background(), th.BasicUser.Id, th.BasicUser2.Id) require.NoError(t, err) CheckCreatedStatus(t, response) // we should be able to run the slash command in the DM channel - _, resp, err := client.ExecuteCommandWithTeam(dmChannel.Id, team2.Id, "/postcommand") + _, resp, err := client.ExecuteCommandWithTeam(context.Background(), dmChannel.Id, team2.Id, "/postcommand") require.NoError(t, err) CheckOKStatus(t, resp) // if the user is removed from the team, they should NOT be able to run the slash command in the DM channel - _, err = th.Client.RemoveTeamMember(team2.Id, th.BasicUser.Id) + _, err = th.Client.RemoveTeamMember(context.Background(), team2.Id, th.BasicUser.Id) require.NoError(t, err, "Failed to remove user from team") - _, resp, err = client.ExecuteCommandWithTeam(dmChannel.Id, team2.Id, "/postcommand") + _, resp, err = client.ExecuteCommandWithTeam(context.Background(), dmChannel.Id, team2.Id, "/postcommand") require.Error(t, err) CheckForbiddenStatus(t, resp) // if we omit the team id from the request, the slash command will fail because this is a DM channel, and the // team id can't be inherited from the channel - _, resp, err = client.ExecuteCommand(dmChannel.Id, "/postcommand") + _, resp, err = client.ExecuteCommand(context.Background(), dmChannel.Id, "/postcommand") require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -1117,7 +1118,7 @@ func TestExecuteCommandReadOnly(t *testing.T) { require.Nil(t, appErr, "failed to create post command") // Confirm that the command works when the channel is not read only - _, resp, err := client.ExecuteCommandWithTeam(th.BasicChannel.Id, th.BasicChannel.TeamId, "/postcommand") + _, resp, err := client.ExecuteCommandWithTeam(context.Background(), th.BasicChannel.Id, th.BasicChannel.TeamId, "/postcommand") require.NoError(t, err) CheckOKStatus(t, resp) @@ -1139,7 +1140,7 @@ func TestExecuteCommandReadOnly(t *testing.T) { require.Nil(t, appErr) // Confirm that the command fails when the channel is read only - _, resp, err = client.ExecuteCommandWithTeam(th.BasicChannel.Id, th.BasicChannel.TeamId, "/postcommand") + _, resp, err = client.ExecuteCommandWithTeam(context.Background(), th.BasicChannel.Id, th.BasicChannel.TeamId, "/postcommand") require.Error(t, err) CheckForbiddenStatus(t, resp) } diff --git a/server/channels/api4/commands_test.go b/server/channels/api4/commands_test.go index 1c05816dea..934e227418 100644 --- a/server/channels/api4/commands_test.go +++ b/server/channels/api4/commands_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "strings" "testing" "time" @@ -24,17 +25,17 @@ func TestEchoCommand(t *testing.T) { echoTestString := "/echo test" - r1, _, err := client.ExecuteCommand(channel1.Id, echoTestString) + r1, _, err := client.ExecuteCommand(context.Background(), channel1.Id, echoTestString) require.NoError(t, err) require.NotNil(t, r1, "Echo command failed to execute") - r1, _, err = client.ExecuteCommand(channel1.Id, "/echo ") + r1, _, err = client.ExecuteCommand(context.Background(), channel1.Id, "/echo ") require.NoError(t, err) require.NotNil(t, r1, "Echo command failed to execute") time.Sleep(100 * time.Millisecond) - p1, _, err := client.GetPostsForChannel(channel1.Id, 0, 2, "", false, false) + p1, _, err := client.GetPostsForChannel(context.Background(), channel1.Id, 0, 2, "", false, false) require.NoError(t, err) require.Len(t, p1.Order, 2, "Echo command failed to send") } @@ -57,33 +58,33 @@ func TestGroupmsgCommands(t *testing.T) { th.LinkUserToTeam(user3, team) th.LinkUserToTeam(user4, team) - rs1, _, err := client.ExecuteCommand(th.BasicChannel.Id, "/groupmsg "+user2.Username+","+user3.Username) + rs1, _, err := client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/groupmsg "+user2.Username+","+user3.Username) require.NoError(t, err) group1 := model.GetGroupNameFromUserIds([]string{user1.Id, user2.Id, user3.Id}) require.True(t, strings.HasSuffix(rs1.GotoLocation, "/"+team.Name+"/channels/"+group1), "failed to create group channel") - rs2, _, err := client.ExecuteCommand(th.BasicChannel.Id, "/groupmsg "+user3.Username+","+user4.Username+" foobar") + rs2, _, err := client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/groupmsg "+user3.Username+","+user4.Username+" foobar") require.NoError(t, err) group2 := model.GetGroupNameFromUserIds([]string{user1.Id, user3.Id, user4.Id}) require.True(t, strings.HasSuffix(rs2.GotoLocation, "/"+team.Name+"/channels/"+group2), "failed to create second direct channel") - result, _, err := client.SearchPosts(team.Id, "foobar", false) + result, _, err := client.SearchPosts(context.Background(), team.Id, "foobar", false) require.NoError(t, err) require.NotEqual(t, 0, len(result.Order), "post did not get sent to direct message") - rs3, _, err := client.ExecuteCommand(th.BasicChannel.Id, "/groupmsg "+user2.Username+","+user3.Username) + rs3, _, err := client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/groupmsg "+user2.Username+","+user3.Username) require.NoError(t, err) require.True(t, strings.HasSuffix(rs3.GotoLocation, "/"+team.Name+"/channels/"+group1), "failed to go back to existing group channel") - _, _, err = client.ExecuteCommand(th.BasicChannel.Id, "/groupmsg "+user2.Username+" foobar") + _, _, err = client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/groupmsg "+user2.Username+" foobar") require.NoError(t, err) - _, _, err = client.ExecuteCommand(th.BasicChannel.Id, "/groupmsg "+user2.Username+","+user3.Username+","+user4.Username+","+user5.Username+","+user6.Username+","+user7.Username+","+user8.Username+","+user9.Username+" foobar") + _, _, err = client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/groupmsg "+user2.Username+","+user3.Username+","+user4.Username+","+user5.Username+","+user6.Username+","+user7.Username+","+user8.Username+","+user9.Username+" foobar") require.NoError(t, err) - _, _, err = client.ExecuteCommand(th.BasicChannel.Id, "/groupmsg junk foobar") + _, _, err = client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/groupmsg junk foobar") require.NoError(t, err) - _, _, err = client.ExecuteCommand(th.BasicChannel.Id, "/groupmsg junk,junk2 foobar") + _, _, err = client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/groupmsg junk,junk2 foobar") require.NoError(t, err) } @@ -94,15 +95,15 @@ func TestInvitePeopleCommand(t *testing.T) { client := th.Client channel := th.BasicChannel - r1, _, err := client.ExecuteCommand(channel.Id, "/invite_people test@example.com") + r1, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/invite_people test@example.com") require.NoError(t, err) require.NotNil(t, r1, "Command failed to execute") - r2, _, err := client.ExecuteCommand(channel.Id, "/invite_people test1@example.com test2@example.com") + r2, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/invite_people test1@example.com test2@example.com") require.NoError(t, err) require.NotNil(t, r2, "Command failed to execute") - r3, _, err := client.ExecuteCommand(channel.Id, "/invite_people") + r3, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/invite_people") require.NoError(t, err) require.NotNil(t, r3, "Command failed to execute") } @@ -117,33 +118,33 @@ func testJoinCommands(t *testing.T, alias string) { user2 := th.BasicUser2 channel0 := &model.Channel{DisplayName: "00", Name: "00" + model.NewId() + "a", Type: model.ChannelTypeOpen, TeamId: team.Id} - channel0, _, err := client.CreateChannel(channel0) + channel0, _, err := client.CreateChannel(context.Background(), channel0) require.NoError(t, err) channel1 := &model.Channel{DisplayName: "AA", Name: "aa" + model.NewId() + "a", Type: model.ChannelTypeOpen, TeamId: team.Id} - channel1, _, err = client.CreateChannel(channel1) + channel1, _, err = client.CreateChannel(context.Background(), channel1) require.NoError(t, err) - _, err = client.RemoveUserFromChannel(channel1.Id, th.BasicUser.Id) + _, err = client.RemoveUserFromChannel(context.Background(), channel1.Id, th.BasicUser.Id) require.NoError(t, err) channel2 := &model.Channel{DisplayName: "BB", Name: "bb" + model.NewId() + "a", Type: model.ChannelTypeOpen, TeamId: team.Id} - channel2, _, err = client.CreateChannel(channel2) + channel2, _, err = client.CreateChannel(context.Background(), channel2) require.NoError(t, err) - _, err = client.RemoveUserFromChannel(channel2.Id, th.BasicUser.Id) + _, err = client.RemoveUserFromChannel(context.Background(), channel2.Id, th.BasicUser.Id) require.NoError(t, err) - channel3, _, err := client.CreateDirectChannel(th.BasicUser.Id, user2.Id) + channel3, _, err := client.CreateDirectChannel(context.Background(), th.BasicUser.Id, user2.Id) require.NoError(t, err) - rs5, _, err := client.ExecuteCommand(channel0.Id, "/"+alias+" "+channel2.Name) + rs5, _, err := client.ExecuteCommand(context.Background(), channel0.Id, "/"+alias+" "+channel2.Name) require.NoError(t, err) require.True(t, strings.HasSuffix(rs5.GotoLocation, "/"+team.Name+"/channels/"+channel2.Name), "failed to join channel") - rs6, _, err := client.ExecuteCommand(channel0.Id, "/"+alias+" "+channel3.Name) + rs6, _, err := client.ExecuteCommand(context.Background(), channel0.Id, "/"+alias+" "+channel3.Name) require.NoError(t, err) require.False(t, strings.HasSuffix(rs6.GotoLocation, "/"+team.Name+"/channels/"+channel3.Name), "should not have joined direct message channel") - c1, _, err := client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, false, "") + c1, _, err := client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, false, "") require.NoError(t, err) found := false @@ -156,11 +157,11 @@ func testJoinCommands(t *testing.T, alias string) { // test case insensitively channel4 := &model.Channel{DisplayName: "BB", Name: "bb" + model.NewId() + "a", Type: model.ChannelTypeOpen, TeamId: team.Id} - channel4, _, err = client.CreateChannel(channel4) + channel4, _, err = client.CreateChannel(context.Background(), channel4) require.NoError(t, err) - _, err = client.RemoveUserFromChannel(channel4.Id, th.BasicUser.Id) + _, err = client.RemoveUserFromChannel(context.Background(), channel4.Id, th.BasicUser.Id) require.NoError(t, err) - rs7, _, err := client.ExecuteCommand(channel0.Id, "/"+alias+" "+strings.ToUpper(channel4.Name)) + rs7, _, err := client.ExecuteCommand(context.Background(), channel0.Id, "/"+alias+" "+strings.ToUpper(channel4.Name)) require.NoError(t, err) require.True(t, strings.HasSuffix(rs7.GotoLocation, "/"+team.Name+"/channels/"+channel4.Name), "failed to join channel") } @@ -183,7 +184,7 @@ func TestLoadTestHelpCommands(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableTesting = true }) - rs, _, err := client.ExecuteCommand(channel.Id, "/test help") + rs, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/test help") require.NoError(t, err) require.True(t, strings.Contains(rs.Text, "Mattermost testing commands to help"), rs.Text) @@ -204,7 +205,7 @@ func TestLoadTestSetupCommands(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableTesting = true }) - rs, _, err := client.ExecuteCommand(channel.Id, "/test setup fuzz 1 1 1") + rs, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/test setup fuzz 1 1 1") require.NoError(t, err) require.Equal(t, "Created environment", rs.Text, rs.Text) @@ -225,7 +226,7 @@ func TestLoadTestUsersCommands(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableTesting = true }) - rs, _, err := client.ExecuteCommand(channel.Id, "/test users fuzz 1 2") + rs, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/test users fuzz 1 2") require.NoError(t, err) require.Equal(t, "Added users", rs.Text, rs.Text) @@ -246,7 +247,7 @@ func TestLoadTestChannelsCommands(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableTesting = true }) - rs, _, err := client.ExecuteCommand(channel.Id, "/test channels fuzz 1 2") + rs, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/test channels fuzz 1 2") require.NoError(t, err) require.Equal(t, "Added channels", rs.Text, rs.Text) @@ -267,7 +268,7 @@ func TestLoadTestPostsCommands(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableTesting = true }) - rs, _, err := client.ExecuteCommand(channel.Id, "/test posts fuzz 2 3 2") + rs, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/test posts fuzz 2 3 2") require.NoError(t, err) require.Equal(t, "Added posts", rs.Text, rs.Text) @@ -283,34 +284,34 @@ func TestLeaveCommands(t *testing.T) { user2 := th.BasicUser2 channel1 := &model.Channel{DisplayName: "AA", Name: "aa" + model.NewId() + "a", Type: model.ChannelTypeOpen, TeamId: team.Id} - channel1, _, err := client.CreateChannel(channel1) + channel1, _, err := client.CreateChannel(context.Background(), channel1) require.NoError(t, err) - _, _, err = client.AddChannelMember(channel1.Id, th.BasicUser.Id) + _, _, err = client.AddChannelMember(context.Background(), channel1.Id, th.BasicUser.Id) require.NoError(t, err) channel2 := &model.Channel{DisplayName: "BB", Name: "bb" + model.NewId() + "a", Type: model.ChannelTypePrivate, TeamId: team.Id} - channel2, _, err = client.CreateChannel(channel2) + channel2, _, err = client.CreateChannel(context.Background(), channel2) require.NoError(t, err) - _, _, err = client.AddChannelMember(channel2.Id, th.BasicUser.Id) + _, _, err = client.AddChannelMember(context.Background(), channel2.Id, th.BasicUser.Id) require.NoError(t, err) - _, _, err = client.AddChannelMember(channel2.Id, user2.Id) + _, _, err = client.AddChannelMember(context.Background(), channel2.Id, user2.Id) require.NoError(t, err) - channel3, _, err := client.CreateDirectChannel(th.BasicUser.Id, user2.Id) + channel3, _, err := client.CreateDirectChannel(context.Background(), th.BasicUser.Id, user2.Id) require.NoError(t, err) - rs1, _, err := client.ExecuteCommand(channel1.Id, "/leave") + rs1, _, err := client.ExecuteCommand(context.Background(), channel1.Id, "/leave") require.NoError(t, err) require.True(t, strings.HasSuffix(rs1.GotoLocation, "/"+team.Name+"/channels/"+model.DefaultChannelName), "failed to leave open channel 1") - rs2, _, err := client.ExecuteCommand(channel2.Id, "/leave") + rs2, _, err := client.ExecuteCommand(context.Background(), channel2.Id, "/leave") require.NoError(t, err) require.True(t, strings.HasSuffix(rs2.GotoLocation, "/"+team.Name+"/channels/"+model.DefaultChannelName), "failed to leave private channel 1") - _, _, err = client.ExecuteCommand(channel3.Id, "/leave") + _, _, err = client.ExecuteCommand(context.Background(), channel3.Id, "/leave") require.Error(t, err) - cdata, _, err := client.GetChannelsForTeamForUser(th.BasicTeam.Id, th.BasicUser.Id, false, "") + cdata, _, err := client.GetChannelsForTeamForUser(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, false, "") require.NoError(t, err) found := false @@ -323,7 +324,7 @@ func TestLeaveCommands(t *testing.T) { for _, c := range cdata { if c.Name == model.DefaultChannelName { - _, err := client.RemoveUserFromChannel(c.Id, th.BasicUser.Id) + _, err := client.RemoveUserFromChannel(context.Background(), c.Id, th.BasicUser.Id) require.Error(t, err, "should have errored on leaving default channel") break } @@ -334,7 +335,7 @@ func TestLogoutTestCommand(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, _, err := th.Client.ExecuteCommand(th.BasicChannel.Id, "/logout") + _, _, err := th.Client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/logout") require.NoError(t, err) } @@ -347,13 +348,13 @@ func TestMeCommand(t *testing.T) { testString := "/me hello" - r1, _, err := client.ExecuteCommand(channel.Id, testString) + r1, _, err := client.ExecuteCommand(context.Background(), channel.Id, testString) require.NoError(t, err) require.NotNil(t, r1, "Command failed to execute") time.Sleep(100 * time.Millisecond) - p1, _, err := client.GetPostsForChannel(channel.Id, 0, 2, "", false, false) + p1, _, err := client.GetPostsForChannel(context.Background(), channel.Id, 0, 2, "", false, false) require.NoError(t, err) require.Len(t, p1.Order, 2, "Command failed to send") @@ -376,39 +377,39 @@ func TestMsgCommands(t *testing.T) { user3 := th.CreateUser() th.LinkUserToTeam(user3, team) - _, _, err := client.CreateDirectChannel(th.BasicUser.Id, user2.Id) + _, _, err := client.CreateDirectChannel(context.Background(), th.BasicUser.Id, user2.Id) require.NoError(t, err) - _, _, err = client.CreateDirectChannel(th.BasicUser.Id, user3.Id) + _, _, err = client.CreateDirectChannel(context.Background(), th.BasicUser.Id, user3.Id) require.NoError(t, err) - rs1, _, err := client.ExecuteCommand(th.BasicChannel.Id, "/msg "+user2.Username) + rs1, _, err := client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/msg "+user2.Username) require.NoError(t, err) require.Condition(t, func() bool { return strings.HasSuffix(rs1.GotoLocation, "/"+team.Name+"/channels/"+user1.Id+"__"+user2.Id) || strings.HasSuffix(rs1.GotoLocation, "/"+team.Name+"/channels/"+user2.Id+"__"+user1.Id) }, "failed to create direct channel") - rs2, _, err := client.ExecuteCommand(th.BasicChannel.Id, "/msg "+user3.Username+" foobar") + rs2, _, err := client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/msg "+user3.Username+" foobar") require.NoError(t, err) require.Condition(t, func() bool { return strings.HasSuffix(rs2.GotoLocation, "/"+team.Name+"/channels/"+user1.Id+"__"+user3.Id) || strings.HasSuffix(rs2.GotoLocation, "/"+team.Name+"/channels/"+user3.Id+"__"+user1.Id) }, "failed to create second direct channel") - result, _, err := client.SearchPosts(th.BasicTeam.Id, "foobar", false) + result, _, err := client.SearchPosts(context.Background(), th.BasicTeam.Id, "foobar", false) require.NoError(t, err) require.NotEqual(t, 0, len(result.Order), "post did not get sent to direct message") - rs3, _, err := client.ExecuteCommand(th.BasicChannel.Id, "/msg "+user2.Username) + rs3, _, err := client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/msg "+user2.Username) require.NoError(t, err) require.Condition(t, func() bool { return strings.HasSuffix(rs3.GotoLocation, "/"+team.Name+"/channels/"+user1.Id+"__"+user2.Id) || strings.HasSuffix(rs3.GotoLocation, "/"+team.Name+"/channels/"+user2.Id+"__"+user1.Id) }, "failed to go back to existing direct channel") - _, _, err = client.ExecuteCommand(th.BasicChannel.Id, "/msg "+th.BasicUser.Username+" foobar") + _, _, err = client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/msg "+th.BasicUser.Username+" foobar") require.NoError(t, err) - _, _, err = client.ExecuteCommand(th.BasicChannel.Id, "/msg junk foobar") + _, _, err = client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/msg junk foobar") require.NoError(t, err) } @@ -420,7 +421,7 @@ func TestSearchCommand(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, _, err := th.Client.ExecuteCommand(th.BasicChannel.Id, "/search") + _, _, err := th.Client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/search") require.NoError(t, err) } @@ -428,7 +429,7 @@ func TestSettingsCommand(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, _, err := th.Client.ExecuteCommand(th.BasicChannel.Id, "/settings") + _, _, err := th.Client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/settings") require.NoError(t, err) } @@ -436,7 +437,7 @@ func TestShortcutsCommand(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, _, err := th.Client.ExecuteCommand(th.BasicChannel.Id, "/shortcuts") + _, _, err := th.Client.ExecuteCommand(context.Background(), th.BasicChannel.Id, "/shortcuts") require.NoError(t, err) } @@ -449,13 +450,13 @@ func TestShrugCommand(t *testing.T) { testString := "/shrug" - r1, _, err := client.ExecuteCommand(channel.Id, testString) + r1, _, err := client.ExecuteCommand(context.Background(), channel.Id, testString) require.NoError(t, err) require.NotNil(t, r1, "Command failed to execute") time.Sleep(100 * time.Millisecond) - p1, _, err := client.GetPostsForChannel(channel.Id, 0, 2, "", false, false) + p1, _, err := client.GetPostsForChannel(context.Background(), channel.Id, 0, 2, "", false, false) require.NoError(t, err) require.Len(t, p1.Order, 2, "Command failed to send") require.Equal(t, `¯\\\_(ツ)\_/¯`, p1.Posts[p1.Order[0]].Message, "invalid shrug response") @@ -475,13 +476,13 @@ func commandAndTest(t *testing.T, th *TestHelper, status string) { channel := th.BasicChannel user := th.BasicUser - r1, _, err := client.ExecuteCommand(channel.Id, "/"+status) + r1, _, err := client.ExecuteCommand(context.Background(), channel.Id, "/"+status) require.NoError(t, err) require.NotEqual(t, "Command failed to execute", r1) time.Sleep(1000 * time.Millisecond) - rstatus, _, err := client.GetUserStatus(user.Id, "") + rstatus, _, err := client.GetUserStatus(context.Background(), user.Id, "") require.NoError(t, err) require.Equal(t, status, rstatus.Status, "Error setting status") } diff --git a/server/channels/api4/config_test.go b/server/channels/api4/config_test.go index 1b4ae12132..3beacd286a 100644 --- a/server/channels/api4/config_test.go +++ b/server/channels/api4/config_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "fmt" "io" @@ -25,12 +26,12 @@ func TestGetConfig(t *testing.T) { defer th.TearDown() client := th.Client - _, resp, err := client.GetConfig() + _, resp, err := client.GetConfig(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - cfg, _, err := client.GetConfig() + cfg, _, err := client.GetConfig(context.Background()) require.NoError(t, err) require.NotEqual(t, "", cfg.TeamSettings.SiteName) @@ -72,13 +73,13 @@ func TestGetConfigWithAccessTag(t *testing.T) { cfg.SupportSettings.SupportEmail = &mockSupportEmail }) - th.Client.Login(th.BasicUser.Username, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Username, th.BasicUser.Password) // add read sysconsole environment config th.AddPermissionToRole(model.PermissionSysconsoleReadEnvironmentRateLimiting.Id, model.SystemUserRoleId) defer th.RemovePermissionFromRole(model.PermissionSysconsoleReadEnvironmentRateLimiting.Id, model.SystemUserRoleId) - cfg, _, err := th.Client.GetConfig() + cfg, _, err := th.Client.GetConfig(context.Background()) require.NoError(t, err) t.Run("Cannot read value without permission", func(t *testing.T) { @@ -98,8 +99,8 @@ func TestGetConfigAnyFlagsAccess(t *testing.T) { th := Setup(t) defer th.TearDown() - th.Client.Login(th.BasicUser.Username, th.BasicUser.Password) - _, resp, _ := th.Client.GetConfig() + th.Client.Login(context.Background(), th.BasicUser.Username, th.BasicUser.Password) + _, resp, _ := th.Client.GetConfig(context.Background()) t.Run("Check permissions error with no sysconsole read permission", func(t *testing.T) { CheckForbiddenStatus(t, resp) @@ -109,7 +110,7 @@ func TestGetConfigAnyFlagsAccess(t *testing.T) { th.AddPermissionToRole(model.PermissionSysconsoleReadEnvironmentRateLimiting.Id, model.SystemUserRoleId) defer th.RemovePermissionFromRole(model.PermissionSysconsoleReadEnvironmentRateLimiting.Id, model.SystemUserRoleId) - cfg, _, err := th.Client.GetConfig() + cfg, _, err := th.Client.GetConfig(context.Background()) require.NoError(t, err) t.Run("Can read value with permission", func(t *testing.T) { assert.NotNil(t, cfg.FeatureFlags) @@ -122,20 +123,20 @@ func TestReloadConfig(t *testing.T) { client := th.Client t.Run("as system user", func(t *testing.T) { - resp, err := client.ReloadConfig() + resp, err := client.ReloadConfig(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err := client.ReloadConfig() + _, err := client.ReloadConfig(context.Background()) require.NoError(t, err) }, "as system admin and local mode") t.Run("as restricted system admin", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := client.ReloadConfig() + resp, err := client.ReloadConfig(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -146,10 +147,10 @@ func TestUpdateConfig(t *testing.T) { defer th.TearDown() client := th.Client - cfg, _, err := th.SystemAdminClient.GetConfig() + cfg, _, err := th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) - _, resp, err := client.UpdateConfig(cfg) + _, resp, err := client.UpdateConfig(context.Background(), cfg) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -157,20 +158,20 @@ func TestUpdateConfig(t *testing.T) { SiteName := th.App.Config().TeamSettings.SiteName *cfg.TeamSettings.SiteName = "MyFancyName" - cfg, _, err = client.UpdateConfig(cfg) + cfg, _, err = client.UpdateConfig(context.Background(), cfg) require.NoError(t, err) require.Equal(t, "MyFancyName", *cfg.TeamSettings.SiteName, "It should update the SiteName") //Revert the change cfg.TeamSettings.SiteName = SiteName - cfg, _, err = client.UpdateConfig(cfg) + cfg, _, err = client.UpdateConfig(context.Background(), cfg) require.NoError(t, err) require.Equal(t, SiteName, cfg.TeamSettings.SiteName, "It should update the SiteName") t.Run("Should set defaults for missing fields", func(t *testing.T) { - _, err = th.SystemAdminClient.DoAPIPut("/config", "{}") + _, err = th.SystemAdminClient.DoAPIPut(context.Background(), "/config", "{}") require.NoError(t, err) }) @@ -179,7 +180,7 @@ func TestUpdateConfig(t *testing.T) { badcfg := cfg.Clone() badcfg.PasswordSettings.MinimumLength = model.NewInt(4) badcfg.PasswordSettings.MinimumLength = model.NewInt(4) - _, resp, err = client.UpdateConfig(badcfg) + _, resp, err = client.UpdateConfig(context.Background(), badcfg) require.Error(t, err) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "model.config.is_valid.password_length.app_error") @@ -189,13 +190,13 @@ func TestUpdateConfig(t *testing.T) { oldEnableUploads := *th.App.Config().PluginSettings.EnableUploads *cfg.PluginSettings.EnableUploads = !oldEnableUploads - cfg, _, err = client.UpdateConfig(cfg) + cfg, _, err = client.UpdateConfig(context.Background(), cfg) require.NoError(t, err) assert.Equal(t, oldEnableUploads, *cfg.PluginSettings.EnableUploads) assert.Equal(t, oldEnableUploads, *th.App.Config().PluginSettings.EnableUploads) cfg.PluginSettings.EnableUploads = nil - cfg, _, err = client.UpdateConfig(cfg) + cfg, _, err = client.UpdateConfig(context.Background(), cfg) require.NoError(t, err) assert.Equal(t, oldEnableUploads, *cfg.PluginSettings.EnableUploads) assert.Equal(t, oldEnableUploads, *th.App.Config().PluginSettings.EnableUploads) @@ -205,13 +206,13 @@ func TestUpdateConfig(t *testing.T) { oldPublicKeys := th.App.Config().PluginSettings.SignaturePublicKeyFiles cfg.PluginSettings.SignaturePublicKeyFiles = append(cfg.PluginSettings.SignaturePublicKeyFiles, "new_signature") - cfg, _, err = client.UpdateConfig(cfg) + cfg, _, err = client.UpdateConfig(context.Background(), cfg) require.NoError(t, err) assert.Equal(t, oldPublicKeys, cfg.PluginSettings.SignaturePublicKeyFiles) assert.Equal(t, oldPublicKeys, th.App.Config().PluginSettings.SignaturePublicKeyFiles) cfg.PluginSettings.SignaturePublicKeyFiles = nil - cfg, _, err = client.UpdateConfig(cfg) + cfg, _, err = client.UpdateConfig(context.Background(), cfg) require.NoError(t, err) assert.Equal(t, oldPublicKeys, cfg.PluginSettings.SignaturePublicKeyFiles) assert.Equal(t, oldPublicKeys, th.App.Config().PluginSettings.SignaturePublicKeyFiles) @@ -229,7 +230,7 @@ func TestUpdateConfig(t *testing.T) { cfg2 := th.App.Config().Clone() *cfg2.PluginSettings.MarketplaceURL = newURL - cfg2, _, err = th.SystemAdminClient.UpdateConfig(cfg2) + cfg2, _, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg2) require.NoError(t, err) assert.Equal(t, oldURL, *cfg2.PluginSettings.MarketplaceURL) @@ -242,7 +243,7 @@ func TestUpdateConfig(t *testing.T) { cfg2 = th.App.Config().Clone() *cfg2.PluginSettings.MarketplaceURL = newURL - cfg2, _, err = th.SystemAdminClient.UpdateConfig(cfg2) + cfg2, _, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg2) require.NoError(t, err) assert.Equal(t, newURL, *cfg2.PluginSettings.MarketplaceURL) }) @@ -254,7 +255,7 @@ func TestUpdateConfig(t *testing.T) { cfg2 := th.App.Config().Clone() *cfg2.ComplianceSettings.Directory = "hellodir" - _, resp, err = th.SystemAdminClient.UpdateConfig(cfg2) + _, resp, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg2) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -267,18 +268,18 @@ func TestUpdateConfig(t *testing.T) { cfg.ServiceSettings.SiteURL = &nonEmptyURL // Set the SiteURL - cfg, _, err = th.SystemAdminClient.UpdateConfig(cfg) + cfg, _, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) require.Equal(t, nonEmptyURL, *cfg.ServiceSettings.SiteURL) // Check that the Site URL can't be cleared cfg.ServiceSettings.SiteURL = sToP("") - cfg, resp, err = th.SystemAdminClient.UpdateConfig(cfg) + cfg, resp, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg) require.Error(t, err) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "api.config.update_config.clear_siteurl.app_error") // Check that the Site URL wasn't cleared - cfg, _, err = th.SystemAdminClient.GetConfig() + cfg, _, err = th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) require.Equal(t, nonEmptyURL, *cfg.ServiceSettings.SiteURL) }) @@ -287,17 +288,17 @@ func TestUpdateConfig(t *testing.T) { func TestGetConfigWithoutManageSystemPermission(t *testing.T) { th := Setup(t) defer th.TearDown() - th.Client.Login(th.BasicUser.Username, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Username, th.BasicUser.Password) t.Run("any sysconsole read permission provides config read access", func(t *testing.T) { // forbidden by default - _, resp, err := th.Client.GetConfig() + _, resp, err := th.Client.GetConfig(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) // add any sysconsole read permission th.AddPermissionToRole(model.SysconsoleReadPermissions[0].Id, model.SystemUserRoleId) - _, _, err = th.Client.GetConfig() + _, _, err = th.Client.GetConfig(context.Background()) // should be readable now require.NoError(t, err) }) @@ -306,7 +307,7 @@ func TestGetConfigWithoutManageSystemPermission(t *testing.T) { func TestUpdateConfigWithoutManageSystemPermission(t *testing.T) { th := Setup(t) defer th.TearDown() - th.Client.Login(th.BasicUser.Username, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Username, th.BasicUser.Password) // add read sysconsole integrations config th.AddPermissionToRole(model.PermissionSysconsoleReadIntegrationsIntegrationManagement.Id, model.SystemUserRoleId) @@ -314,17 +315,17 @@ func TestUpdateConfigWithoutManageSystemPermission(t *testing.T) { t.Run("sysconsole read permission does not provides config write access", func(t *testing.T) { // should be readable because has a sysconsole read permission - cfg, _, err := th.Client.GetConfig() + cfg, _, err := th.Client.GetConfig(context.Background()) require.NoError(t, err) - _, resp, err := th.Client.UpdateConfig(cfg) + _, resp, err := th.Client.UpdateConfig(context.Background(), cfg) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("the wrong write permission does not grant access", func(t *testing.T) { // should be readable because has a sysconsole read permission - cfg, _, err := th.SystemAdminClient.GetConfig() + cfg, _, err := th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) originalValue := *cfg.ServiceSettings.AllowCorsFrom @@ -336,18 +337,18 @@ func TestUpdateConfigWithoutManageSystemPermission(t *testing.T) { // try update a config value allowed by sysconsole WRITE integrations mockVal := model.NewId() cfg.ServiceSettings.AllowCorsFrom = &mockVal - _, _, err = th.Client.UpdateConfig(cfg) + _, _, err = th.Client.UpdateConfig(context.Background(), cfg) require.NoError(t, err) // ensure the config setting was not updated - cfg, _, err = th.SystemAdminClient.GetConfig() + cfg, _, err = th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) assert.Equal(t, *cfg.ServiceSettings.AllowCorsFrom, originalValue) }) t.Run("config value is writeable by specific system console permission", func(t *testing.T) { // should be readable because has a sysconsole read permission - cfg, _, err := th.SystemAdminClient.GetConfig() + cfg, _, err := th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) th.AddPermissionToRole(model.PermissionSysconsoleWriteIntegrationsCors.Id, model.SystemUserRoleId) @@ -358,11 +359,11 @@ func TestUpdateConfigWithoutManageSystemPermission(t *testing.T) { // try update a config value allowed by sysconsole WRITE integrations mockVal := model.NewId() cfg.ServiceSettings.AllowCorsFrom = &mockVal - _, _, err = th.Client.UpdateConfig(cfg) + _, _, err = th.Client.UpdateConfig(context.Background(), cfg) require.NoError(t, err) // ensure the config setting was updated - cfg, _, err = th.Client.GetConfig() + cfg, _, err = th.Client.GetConfig(context.Background()) require.NoError(t, err) assert.Equal(t, *cfg.ServiceSettings.AllowCorsFrom, mockVal) }) @@ -386,22 +387,22 @@ func TestUpdateConfigMessageExportSpecialHandling(t *testing.T) { }) // Turn it on, timestamp should be updated. - cfg, _, err := th.SystemAdminClient.GetConfig() + cfg, _, err := th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) *cfg.MessageExportSettings.EnableExport = true - _, _, err = th.SystemAdminClient.UpdateConfig(cfg) + _, _, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) assert.True(t, *th.App.Config().MessageExportSettings.EnableExport) assert.NotEqual(t, int64(0), *th.App.Config().MessageExportSettings.ExportFromTimestamp) // Turn it off, timestamp should be cleared. - cfg, _, err = th.SystemAdminClient.GetConfig() + cfg, _, err = th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) *cfg.MessageExportSettings.EnableExport = false - _, _, err = th.SystemAdminClient.UpdateConfig(cfg) + _, _, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) assert.False(t, *th.App.Config().MessageExportSettings.EnableExport) @@ -414,22 +415,22 @@ func TestUpdateConfigMessageExportSpecialHandling(t *testing.T) { }) // Turn it on, timestamp should *not* be updated. - cfg, _, err = th.SystemAdminClient.GetConfig() + cfg, _, err = th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) *cfg.MessageExportSettings.EnableExport = true - _, _, err = th.SystemAdminClient.UpdateConfig(cfg) + _, _, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) assert.True(t, *th.App.Config().MessageExportSettings.EnableExport) assert.Equal(t, int64(12345), *th.App.Config().MessageExportSettings.ExportFromTimestamp) // Turn it off, timestamp should be cleared. - cfg, _, err = th.SystemAdminClient.GetConfig() + cfg, _, err = th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) *cfg.MessageExportSettings.EnableExport = false - _, _, err = th.SystemAdminClient.UpdateConfig(cfg) + _, _, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) assert.False(t, *th.App.Config().MessageExportSettings.EnableExport) @@ -442,34 +443,34 @@ func TestUpdateConfigRestrictSystemAdmin(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) t.Run("Restrict flag should be honored for sysadmin", func(t *testing.T) { - originalCfg, _, err := th.SystemAdminClient.GetConfig() + originalCfg, _, err := th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) cfg := originalCfg.Clone() *cfg.TeamSettings.SiteName = "MyFancyName" // Allowed *cfg.ServiceSettings.SiteURL = "http://example.com" // Ignored - returnedCfg, _, err := th.SystemAdminClient.UpdateConfig(cfg) + returnedCfg, _, err := th.SystemAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) require.Equal(t, "MyFancyName", *returnedCfg.TeamSettings.SiteName) require.Equal(t, *originalCfg.ServiceSettings.SiteURL, *returnedCfg.ServiceSettings.SiteURL) - actualCfg, _, err := th.SystemAdminClient.GetConfig() + actualCfg, _, err := th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) require.Equal(t, returnedCfg, actualCfg) }) t.Run("Restrict flag should be ignored by local mode", func(t *testing.T) { - originalCfg, _, err := th.LocalClient.GetConfig() + originalCfg, _, err := th.LocalClient.GetConfig(context.Background()) require.NoError(t, err) cfg := originalCfg.Clone() *cfg.TeamSettings.SiteName = "MyFancyName" // Allowed *cfg.ServiceSettings.SiteURL = "http://example.com" // Ignored - returnedCfg, _, err := th.LocalClient.UpdateConfig(cfg) + returnedCfg, _, err := th.LocalClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) require.Equal(t, "MyFancyName", *returnedCfg.TeamSettings.SiteName) @@ -491,12 +492,12 @@ func TestUpdateConfigDiffInAuditRecord(t *testing.T) { th := SetupWithServerOptions(t, options) defer th.TearDown() - cfg, _, err := th.SystemAdminClient.GetConfig() + cfg, _, err := th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) timeoutVal := *cfg.ServiceSettings.ReadTimeout cfg.ServiceSettings.ReadTimeout = model.NewInt(timeoutVal + 1) - cfg, _, err = th.SystemAdminClient.UpdateConfig(cfg) + cfg, _, err = th.SystemAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) defer th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.ReadTimeout = model.NewInt(timeoutVal) @@ -530,7 +531,7 @@ func TestGetEnvironmentConfig(t *testing.T) { t.Run("as system admin", func(t *testing.T) { SystemAdminClient := th.SystemAdminClient - envConfig, _, err := SystemAdminClient.GetEnvironmentConfig() + envConfig, _, err := SystemAdminClient.GetEnvironmentConfig(context.Background()) require.NoError(t, err) serviceSettings, ok := envConfig["ServiceSettings"] @@ -561,7 +562,7 @@ func TestGetEnvironmentConfig(t *testing.T) { TeamAdminClient := th.CreateClient() th.LoginTeamAdminWithClient(TeamAdminClient) - envConfig, _, err := TeamAdminClient.GetEnvironmentConfig() + envConfig, _, err := TeamAdminClient.GetEnvironmentConfig(context.Background()) require.NoError(t, err) require.Empty(t, envConfig) }) @@ -569,7 +570,7 @@ func TestGetEnvironmentConfig(t *testing.T) { t.Run("as regular user", func(t *testing.T) { client := th.Client - envConfig, _, err := client.GetEnvironmentConfig() + envConfig, _, err := client.GetEnvironmentConfig(context.Background()) require.NoError(t, err) require.Empty(t, envConfig) }) @@ -577,7 +578,7 @@ func TestGetEnvironmentConfig(t *testing.T) { t.Run("as not-regular user", func(t *testing.T) { client := th.CreateClient() - _, resp, err := client.GetEnvironmentConfig() + _, resp, err := client.GetEnvironmentConfig(context.Background()) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -597,7 +598,7 @@ func TestGetOldClientConfig(t *testing.T) { client := th.Client - config, _, err := client.GetOldClientConfig("") + config, _, err := client.GetOldClientConfig(context.Background(), "") require.NoError(t, err) require.NotEmpty(t, config["Version"], "config not returned correctly") @@ -611,7 +612,7 @@ func TestGetOldClientConfig(t *testing.T) { client := th.CreateClient() - config, _, err := client.GetOldClientConfig("") + config, _, err := client.GetOldClientConfig(context.Background(), "") require.NoError(t, err) require.NotEmpty(t, config["Version"], "config not returned correctly") @@ -621,7 +622,7 @@ func TestGetOldClientConfig(t *testing.T) { t.Run("missing format", func(t *testing.T) { client := th.Client - resp, err := client.DoAPIGet("/config/client", "") + resp, err := client.DoAPIGet(context.Background(), "/config/client", "") require.Error(t, err) require.Equal(t, http.StatusNotImplemented, resp.StatusCode) }) @@ -629,7 +630,7 @@ func TestGetOldClientConfig(t *testing.T) { t.Run("invalid format", func(t *testing.T) { client := th.Client - resp, err := client.DoAPIGet("/config/client?format=junk", "") + resp, err := client.DoAPIGet(context.Background(), "/config/client?format=junk", "") require.Error(t, err) require.Equal(t, http.StatusBadRequest, resp.StatusCode) }) @@ -640,13 +641,13 @@ func TestPatchConfig(t *testing.T) { defer th.TearDown() t.Run("config is missing", func(t *testing.T) { - _, response, err := th.Client.PatchConfig(nil) + _, response, err := th.Client.PatchConfig(context.Background(), nil) require.Error(t, err) CheckBadRequestStatus(t, response) }) t.Run("user is not system admin", func(t *testing.T) { - _, response, err := th.Client.PatchConfig(&model.Config{}) + _, response, err := th.Client.PatchConfig(context.Background(), &model.Config{}) require.Error(t, err) CheckForbiddenStatus(t, response) }) @@ -658,7 +659,7 @@ func TestPatchConfig(t *testing.T) { ConsoleLevel: model.NewString("INFO"), }} - updatedConfig, _, _ := th.SystemAdminClient.PatchConfig(&config) + updatedConfig, _, _ := th.SystemAdminClient.PatchConfig(context.Background(), &config) assert.Equal(t, "DEBUG", *updatedConfig.LogSettings.ConsoleLevel) }) @@ -670,12 +671,12 @@ func TestPatchConfig(t *testing.T) { ConsoleLevel: model.NewString("INFO"), }} - oldConfig, _, _ := th.LocalClient.GetConfig() - updatedConfig, _, _ := th.LocalClient.PatchConfig(&config) + oldConfig, _, _ := th.LocalClient.GetConfig(context.Background()) + updatedConfig, _, _ := th.LocalClient.PatchConfig(context.Background(), &config) assert.Equal(t, "INFO", *updatedConfig.LogSettings.ConsoleLevel) // reset the config - _, _, err := th.LocalClient.UpdateConfig(oldConfig) + _, _, err := th.LocalClient.UpdateConfig(context.Background(), oldConfig) require.NoError(t, err) }) @@ -685,7 +686,7 @@ func TestPatchConfig(t *testing.T) { MinimumLength: model.NewInt(4), }} - _, response, err := client.PatchConfig(&config) + _, response, err := client.PatchConfig(context.Background(), &config) assert.Equal(t, http.StatusBadRequest, response.StatusCode) assert.Error(t, err) @@ -696,7 +697,7 @@ func TestPatchConfig(t *testing.T) { *th.App.Config().ExperimentalSettings.RestrictSystemAdmin = false th.App.UpdateConfig(func(cfg *model.Config) { cfg.TeamSettings.ExperimentalDefaultChannels = []string{"some-channel"} }) - oldConfig, _, err := client.GetConfig() + oldConfig, _, err := client.GetConfig(context.Background()) require.NoError(t, err) assert.False(t, *oldConfig.PasswordSettings.Lowercase) @@ -720,10 +721,10 @@ func TestPatchConfig(t *testing.T) { }, } - _, response, err := client.PatchConfig(&config) + _, response, err := client.PatchConfig(context.Background(), &config) require.NoError(t, err) - updatedConfig, _, err := client.GetConfig() + updatedConfig, _, err := client.GetConfig(context.Background()) require.NoError(t, err) assert.True(t, *updatedConfig.PasswordSettings.Lowercase) assert.Equal(t, "INFO", *updatedConfig.LogSettings.ConsoleLevel) @@ -732,7 +733,7 @@ func TestPatchConfig(t *testing.T) { assert.Equal(t, "no-cache, no-store, must-revalidate", response.Header.Get("Cache-Control")) // reset the config - _, _, err = client.UpdateConfig(oldConfig) + _, _, err = client.UpdateConfig(context.Background(), oldConfig) require.NoError(t, err) }) @@ -741,7 +742,7 @@ func TestPatchConfig(t *testing.T) { Symbol: model.NewBool(true), }} - updatedConfig, _, err := client.PatchConfig(&config) + updatedConfig, _, err := client.PatchConfig(context.Background(), &config) require.NoError(t, err) assert.Equal(t, model.FakeSetting, *updatedConfig.SqlSettings.DataSource) @@ -752,7 +753,7 @@ func TestPatchConfig(t *testing.T) { EnableUploads: model.NewBool(true), }} - updatedConfig, resp, err := client.PatchConfig(&config) + updatedConfig, resp, err := client.PatchConfig(context.Background(), &config) if client == th.LocalClient { require.NoError(t, err) CheckOKStatus(t, resp) @@ -775,7 +776,7 @@ func TestPatchConfig(t *testing.T) { cfg := th.App.Config().Clone() *cfg.PluginSettings.MarketplaceURL = newURL - _, _, err := th.SystemAdminClient.PatchConfig(cfg) + _, _, err := th.SystemAdminClient.PatchConfig(context.Background(), cfg) require.Error(t, err) // Allowing uploads @@ -787,13 +788,13 @@ func TestPatchConfig(t *testing.T) { cfg = th.App.Config().Clone() *cfg.PluginSettings.MarketplaceURL = newURL - cfg, _, err = th.SystemAdminClient.PatchConfig(cfg) + cfg, _, err = th.SystemAdminClient.PatchConfig(context.Background(), cfg) require.NoError(t, err) assert.Equal(t, newURL, *cfg.PluginSettings.MarketplaceURL) }) t.Run("System Admin should not be able to clear Site URL", func(t *testing.T) { - cfg, _, err := th.SystemAdminClient.GetConfig() + cfg, _, err := th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) siteURL := cfg.ServiceSettings.SiteURL defer th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.SiteURL = siteURL }) @@ -805,7 +806,7 @@ func TestPatchConfig(t *testing.T) { SiteURL: model.NewString(nonEmptyURL), }, } - updatedConfig, _, err := th.SystemAdminClient.PatchConfig(&config) + updatedConfig, _, err := th.SystemAdminClient.PatchConfig(context.Background(), &config) require.NoError(t, err) require.Equal(t, nonEmptyURL, *updatedConfig.ServiceSettings.SiteURL) @@ -815,18 +816,18 @@ func TestPatchConfig(t *testing.T) { SiteURL: model.NewString(""), }, } - _, resp, err := th.SystemAdminClient.PatchConfig(&config) + _, resp, err := th.SystemAdminClient.PatchConfig(context.Background(), &config) require.Error(t, err) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "api.config.update_config.clear_siteurl.app_error") // Check that the Site URL wasn't cleared - cfg, _, err = th.SystemAdminClient.GetConfig() + cfg, _, err = th.SystemAdminClient.GetConfig(context.Background()) require.NoError(t, err) require.Equal(t, nonEmptyURL, *cfg.ServiceSettings.SiteURL) // Check that sending an empty config returns no error. - _, _, err = th.SystemAdminClient.PatchConfig(&model.Config{}) + _, _, err = th.SystemAdminClient.PatchConfig(context.Background(), &model.Config{}) require.NoError(t, err) }) } @@ -855,7 +856,7 @@ func TestMigrateConfig(t *testing.T) { require.NoError(t, err) defer f.RemoveFile("to.json") - _, err = th.LocalClient.MigrateConfig("from.json", "to.json") + _, err = th.LocalClient.MigrateConfig(context.Background(), "from.json", "to.json") require.NoError(t, err) }) } diff --git a/server/channels/api4/data_retention_test.go b/server/channels/api4/data_retention_test.go index 043b2bf8cd..64be1740ce 100644 --- a/server/channels/api4/data_retention_test.go +++ b/server/channels/api4/data_retention_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/require" @@ -13,7 +14,7 @@ func TestDataRetentionGetPolicy(t *testing.T) { th := Setup(t) defer th.TearDown() - _, resp, err := th.Client.GetDataRetentionPolicy() + _, resp, err := th.Client.GetDataRetentionPolicy(context.Background()) require.Error(t, err) CheckNotImplementedStatus(t, resp) } diff --git a/server/channels/api4/drafts_test.go b/server/channels/api4/drafts_test.go index da11f22029..6102dc2edd 100644 --- a/server/channels/api4/drafts_test.go +++ b/server/channels/api4/drafts_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "os" "testing" @@ -40,7 +41,7 @@ func TestUpsertDraft(t *testing.T) { } // try to upsert draft - draftResp, _, err := client.UpsertDraft(draft) + draftResp, _, err := client.UpsertDraft(context.Background(), draft) require.NoError(t, err) assert.Equal(t, draft.UserId, draftResp.UserId) @@ -51,14 +52,14 @@ func TestUpsertDraft(t *testing.T) { sent, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - fileResp, _, err := client.UploadFile(sent, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), sent, channel.Id, "test.png") require.NoError(t, err) draftWithFiles := draft draftWithFiles.FileIds = []string{fileResp.FileInfos[0].Id} // try to upsert draft with file - draftResp, _, err = client.UpsertDraft(draftWithFiles) + draftResp, _, err = client.UpsertDraft(context.Background(), draftWithFiles) require.NoError(t, err) assert.Equal(t, draftWithFiles.UserId, draftResp.UserId) @@ -70,7 +71,7 @@ func TestUpsertDraft(t *testing.T) { draftInvalidChannel := draft draftInvalidChannel.ChannelId = "12345" - _, resp, err := client.UpsertDraft(draft) + _, resp, err := client.UpsertDraft(context.Background(), draft) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -79,7 +80,7 @@ func TestUpsertDraft(t *testing.T) { defer os.Unsetenv("MM_SERVICESETTINGS_ALLOWSYNCEDDRAFTS") th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowSyncedDrafts = false }) - _, resp, err = client.UpsertDraft(draft) + _, resp, err = client.UpsertDraft(context.Background(), draft) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -122,15 +123,15 @@ func TestGetDrafts(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowSyncedDrafts = true }) // upsert draft1 - _, _, err := client.UpsertDraft(draft1) + _, _, err := client.UpsertDraft(context.Background(), draft1) require.NoError(t, err) // upsert draft2 - _, _, err = client.UpsertDraft(draft2) + _, _, err = client.UpsertDraft(context.Background(), draft2) require.NoError(t, err) // try to get drafts - draftResp, _, err := client.GetDrafts(user.Id, team.Id) + draftResp, _, err := client.GetDrafts(context.Background(), user.Id, team.Id) require.NoError(t, err) assert.Equal(t, draft2.UserId, draftResp[0].UserId) @@ -144,7 +145,7 @@ func TestGetDrafts(t *testing.T) { assert.Len(t, draftResp, 2) // try to get drafts on invalid team - _, resp, err := client.GetDrafts(user.Id, "12345") + _, resp, err := client.GetDrafts(context.Background(), user.Id, "12345") require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -152,7 +153,7 @@ func TestGetDrafts(t *testing.T) { os.Setenv("MM_SERVICESETTINGS_ALLOWSYNCEDDRAFTS", "false") defer os.Unsetenv("MM_SERVICESETTINGS_ALLOWSYNCEDDRAFTS") th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.AllowSyncedDrafts = false }) - _, resp, err = client.GetDrafts(user.Id, team.Id) + _, resp, err = client.GetDrafts(context.Background(), user.Id, team.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -194,15 +195,15 @@ func TestDeleteDraft(t *testing.T) { } // upsert draft1 - _, _, err := client.UpsertDraft(draft1) + _, _, err := client.UpsertDraft(context.Background(), draft1) require.NoError(t, err) // upsert draft2 - _, _, err = client.UpsertDraft(draft2) + _, _, err = client.UpsertDraft(context.Background(), draft2) require.NoError(t, err) //get drafts - draftResp, _, err := client.GetDrafts(user.Id, team.Id) + draftResp, _, err := client.GetDrafts(context.Background(), user.Id, team.Id) require.NoError(t, err) assert.Equal(t, draft2.UserId, draftResp[0].UserId) @@ -214,11 +215,11 @@ func TestDeleteDraft(t *testing.T) { assert.Equal(t, draft1.ChannelId, draftResp[1].ChannelId) // try to delete draft1 - _, _, err = client.DeleteDraft(user.Id, channel1.Id, draft1.RootId) + _, _, err = client.DeleteDraft(context.Background(), user.Id, channel1.Id, draft1.RootId) require.NoError(t, err) //get drafts - draftResp, _, err = client.GetDrafts(user.Id, team.Id) + draftResp, _, err = client.GetDrafts(context.Background(), user.Id, team.Id) require.NoError(t, err) assert.Equal(t, draft2.UserId, draftResp[0].UserId) diff --git a/server/channels/api4/elasticsearch_test.go b/server/channels/api4/elasticsearch_test.go index 21bf316e35..aafb3ad8e4 100644 --- a/server/channels/api4/elasticsearch_test.go +++ b/server/channels/api4/elasticsearch_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "net/http" "testing" @@ -18,13 +19,13 @@ func TestElasticsearchTest(t *testing.T) { defer th.TearDown() t.Run("as system user", func(t *testing.T) { - resp, err := th.Client.TestElasticsearch() + resp, err := th.Client.TestElasticsearch(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("as system admin", func(t *testing.T) { - resp, err := th.SystemAdminClient.TestElasticsearch() + resp, err := th.SystemAdminClient.TestElasticsearch(context.Background()) require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -37,7 +38,7 @@ func TestElasticsearchTest(t *testing.T) { data, err := json.Marshal(cfg) require.NoError(t, err) - resp, err := th.SystemAdminClient.DoAPIPost("/elasticsearch/test", string(data)) + resp, err := th.SystemAdminClient.DoAPIPost(context.Background(), "/elasticsearch/test", string(data)) require.Error(t, err) require.Equal(t, http.StatusBadRequest, resp.StatusCode) }) @@ -48,7 +49,7 @@ func TestElasticsearchTest(t *testing.T) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := th.SystemAdminClient.TestElasticsearch() + resp, err := th.SystemAdminClient.TestElasticsearch(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -59,13 +60,13 @@ func TestElasticsearchPurgeIndexes(t *testing.T) { defer th.TearDown() t.Run("as system user", func(t *testing.T) { - resp, err := th.Client.PurgeElasticsearchIndexes() + resp, err := th.Client.PurgeElasticsearchIndexes(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("as system admin", func(t *testing.T) { - resp, err := th.SystemAdminClient.PurgeElasticsearchIndexes() + resp, err := th.SystemAdminClient.PurgeElasticsearchIndexes(context.Background()) require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -73,7 +74,7 @@ func TestElasticsearchPurgeIndexes(t *testing.T) { t.Run("as restricted system admin", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := th.SystemAdminClient.PurgeElasticsearchIndexes() + resp, err := th.SystemAdminClient.PurgeElasticsearchIndexes(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) diff --git a/server/channels/api4/emoji_test.go b/server/channels/api4/emoji_test.go index ce691eaf17..f1a3e466da 100644 --- a/server/channels/api4/emoji_test.go +++ b/server/channels/api4/emoji_test.go @@ -5,6 +5,7 @@ package api4 import ( "bytes" + "context" "image" _ "image/gif" "os" @@ -58,7 +59,7 @@ func TestCreateEmoji(t *testing.T) { } // try to create an emoji when they're disabled - _, resp, err := client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + _, resp, err := client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.Error(t, err) CheckNotImplementedStatus(t, resp) @@ -66,7 +67,7 @@ func TestCreateEmoji(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true }) // try to create a valid gif emoji when they're enabled - newEmoji, _, err := client.CreateEmoji(emoji, utils.CreateTestGif(t, emojiWidth, emojiHeight), "image.gif") + newEmoji, _, err := client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, emojiWidth, emojiHeight), "image.gif") require.NoError(t, err) require.Equal(t, newEmoji.Name, emoji.Name, "create with wrong name") checkEmojiFile(newEmoji.Id, "gif") @@ -76,7 +77,7 @@ func TestCreateEmoji(t *testing.T) { CreatorId: th.BasicUser.Id, Name: newEmoji.Name, } - _, resp, err = client.CreateEmoji(emoji2, utils.CreateTestGif(t, 10, 10), "image.gif") + _, resp, err = client.CreateEmoji(context.Background(), emoji2, utils.CreateTestGif(t, 10, 10), "image.gif") require.Error(t, err) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "api.emoji.create.duplicate.app_error") @@ -87,7 +88,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestAnimatedGif(t, emojiWidth, emojiHeight, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestAnimatedGif(t, emojiWidth, emojiHeight, 10), "image.gif") require.NoError(t, err) require.Equal(t, newEmoji.Name, emoji.Name, "create with wrong name") checkEmojiFile(newEmoji.Id, "gif") @@ -101,7 +102,7 @@ func TestCreateEmoji(t *testing.T) { path, _ := fileutils.FindDir("tests") bytes, err := os.ReadFile(filepath.Join(path, "testwebp.webp")) require.NoError(t, err) - newEmoji, _, err = client.CreateEmoji(emoji, bytes, "image.webp") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, bytes, "image.webp") require.NoError(t, err) require.Equal(t, newEmoji.Name, emoji.Name, "create with wrong name") checkEmojiFile(newEmoji.Id, "png") // emoji must be converted from webp to png @@ -112,7 +113,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestJpeg(t, emojiWidth, emojiHeight), "image.jpeg") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestJpeg(t, emojiWidth, emojiHeight), "image.jpeg") require.NoError(t, err) require.Equal(t, newEmoji.Name, emoji.Name, "create with wrong name") checkEmojiFile(newEmoji.Id, "png") // emoji must be converted from jpeg to png @@ -123,7 +124,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestPng(t, emojiWidth, emojiHeight), "image.png") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestPng(t, emojiWidth, emojiHeight), "image.png") require.NoError(t, err) require.Equal(t, newEmoji.Name, emoji.Name, "create with wrong name") checkEmojiFile(newEmoji.Id, "png") @@ -134,7 +135,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 1000, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 1000, 10), "image.gif") require.NoError(t, err) require.Equal(t, newEmoji.Name, emoji.Name, "create with wrong name") @@ -144,7 +145,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - _, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, app.MaxEmojiOriginalWidth+1), "image.gif") + _, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, app.MaxEmojiOriginalWidth+1), "image.gif") require.Error(t, err, "should fail - emoji is too wide") // try to create an emoji that's too tall @@ -153,7 +154,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - _, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, app.MaxEmojiOriginalHeight+1, 10), "image.gif") + _, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, app.MaxEmojiOriginalHeight+1, 10), "image.gif") require.Error(t, err, "should fail - emoji is too tall") // try to create an emoji that's too large @@ -162,7 +163,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - _, _, err = client.CreateEmoji(emoji, utils.CreateTestAnimatedGif(t, 100, 100, 10000), "image.gif") + _, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestAnimatedGif(t, 100, 100, 10000), "image.gif") require.Error(t, err, "should fail - emoji is too big") // try to create an emoji with data that isn't an image @@ -171,7 +172,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - _, resp, err = client.CreateEmoji(emoji, make([]byte, 100), "image.gif") + _, resp, err = client.CreateEmoji(context.Background(), emoji, make([]byte, 100), "image.gif") require.Error(t, err) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "api.emoji.upload.image.app_error") @@ -182,7 +183,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - _, resp, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + _, resp, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -194,7 +195,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - _, resp, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + _, resp, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -206,7 +207,7 @@ func TestCreateEmoji(t *testing.T) { Name: model.NewId(), } - _, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + _, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) } @@ -237,12 +238,12 @@ func TestGetEmojiList(t *testing.T) { } for idx, emoji := range emojis { - newEmoji, _, err := client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err := client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) emojis[idx] = newEmoji } - listEmoji, _, err := client.GetEmojiList(0, 100) + listEmoji, _, err := client.GetEmojiList(context.Background(), 0, 100) require.NoError(t, err) for _, emoji := range emojis { found := false @@ -255,9 +256,9 @@ func TestGetEmojiList(t *testing.T) { require.Truef(t, found, "failed to get emoji with id %v, %v", emoji.Id, len(listEmoji)) } - _, err = client.DeleteEmoji(emojis[0].Id) + _, err = client.DeleteEmoji(context.Background(), emojis[0].Id) require.NoError(t, err) - listEmoji, _, err = client.GetEmojiList(0, 100) + listEmoji, _, err = client.GetEmojiList(context.Background(), 0, 100) require.NoError(t, err) found := false for _, savedEmoji := range listEmoji { @@ -268,12 +269,12 @@ func TestGetEmojiList(t *testing.T) { } require.Falsef(t, found, "should not get a deleted emoji %v", emojis[0].Id) - listEmoji, _, err = client.GetEmojiList(0, 1) + listEmoji, _, err = client.GetEmojiList(context.Background(), 0, 1) require.NoError(t, err) require.Len(t, listEmoji, 1, "should only return 1") - listEmoji, _, err = client.GetSortedEmojiList(0, 100, model.EmojiSortByName) + listEmoji, _, err = client.GetSortedEmojiList(context.Background(), 0, 100, model.EmojiSortByName) require.NoError(t, err) require.Greater(t, len(listEmoji), 0, "should return more than 0") @@ -300,46 +301,46 @@ func TestDeleteEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err := client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err := client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) - _, err = client.DeleteEmoji(newEmoji.Id) + _, err = client.DeleteEmoji(context.Background(), newEmoji.Id) require.NoError(t, err) - _, _, err = client.GetEmoji(newEmoji.Id) + _, _, err = client.GetEmoji(context.Background(), newEmoji.Id) require.Error(t, err, "expected error fetching deleted emoji") //Admin can delete other users emoji - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) - _, err = th.SystemAdminClient.DeleteEmoji(newEmoji.Id) + _, err = th.SystemAdminClient.DeleteEmoji(context.Background(), newEmoji.Id) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetEmoji(newEmoji.Id) + _, _, err = th.SystemAdminClient.GetEmoji(context.Background(), newEmoji.Id) require.Error(t, err, "expected error fetching deleted emoji") // Try to delete just deleted emoji - resp, err := client.DeleteEmoji(newEmoji.Id) + resp, err := client.DeleteEmoji(context.Background(), newEmoji.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) //Try to delete non-existing emoji - resp, err = client.DeleteEmoji(model.NewId()) + resp, err = client.DeleteEmoji(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) //Try to delete without Id - resp, err = client.DeleteEmoji("") + resp, err = client.DeleteEmoji(context.Background(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) //Try to delete my custom emoji without permissions - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) th.RemovePermissionFromRole(model.PermissionDeleteEmojis.Id, model.SystemUserRoleId) - resp, err = client.DeleteEmoji(newEmoji.Id) + resp, err = client.DeleteEmoji(context.Background(), newEmoji.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.AddPermissionToRole(model.PermissionDeleteEmojis.Id, model.SystemUserRoleId) @@ -350,23 +351,23 @@ func TestDeleteEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) th.RemovePermissionFromRole(model.PermissionDeleteEmojis.Id, model.SystemUserRoleId) th.AddPermissionToRole(model.PermissionDeleteOthersEmojis.Id, model.SystemUserRoleId) - client.Logout() + client.Logout(context.Background()) th.LoginBasic2() - resp, err = client.DeleteEmoji(newEmoji.Id) + resp, err = client.DeleteEmoji(context.Background(), newEmoji.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.RemovePermissionFromRole(model.PermissionDeleteOthersEmojis.Id, model.SystemUserRoleId) th.AddPermissionToRole(model.PermissionDeleteEmojis.Id, model.SystemUserRoleId) - client.Logout() + client.Logout(context.Background()) th.LoginBasic() //Try to delete other user's custom emoji without DELETE_OTHERS_EMOJIS permissions @@ -375,17 +376,17 @@ func TestDeleteEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) - client.Logout() + client.Logout(context.Background()) th.LoginBasic2() - resp, err = client.DeleteEmoji(newEmoji.Id) + resp, err = client.DeleteEmoji(context.Background(), newEmoji.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) th.LoginBasic() //Try to delete other user's custom emoji with permissions @@ -394,28 +395,28 @@ func TestDeleteEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) th.AddPermissionToRole(model.PermissionDeleteEmojis.Id, model.SystemUserRoleId) th.AddPermissionToRole(model.PermissionDeleteOthersEmojis.Id, model.SystemUserRoleId) - client.Logout() + client.Logout(context.Background()) th.LoginBasic2() - _, err = client.DeleteEmoji(newEmoji.Id) + _, err = client.DeleteEmoji(context.Background(), newEmoji.Id) require.NoError(t, err) - client.Logout() + client.Logout(context.Background()) th.LoginBasic() //Try to delete my custom emoji with permissions at team level - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) th.RemovePermissionFromRole(model.PermissionDeleteEmojis.Id, model.SystemUserRoleId) th.AddPermissionToRole(model.PermissionDeleteEmojis.Id, model.TeamUserRoleId) - _, err = client.DeleteEmoji(newEmoji.Id) + _, err = client.DeleteEmoji(context.Background(), newEmoji.Id) require.NoError(t, err) th.AddPermissionToRole(model.PermissionDeleteEmojis.Id, model.SystemUserRoleId) th.RemovePermissionFromRole(model.PermissionDeleteEmojis.Id, model.TeamUserRoleId) @@ -426,7 +427,7 @@ func TestDeleteEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err = client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err = client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) th.RemovePermissionFromRole(model.PermissionDeleteEmojis.Id, model.SystemUserRoleId) @@ -435,10 +436,10 @@ func TestDeleteEmoji(t *testing.T) { th.AddPermissionToRole(model.PermissionDeleteEmojis.Id, model.TeamUserRoleId) th.AddPermissionToRole(model.PermissionDeleteOthersEmojis.Id, model.TeamUserRoleId) - client.Logout() + client.Logout(context.Background()) th.LoginBasic2() - _, err = client.DeleteEmoji(newEmoji.Id) + _, err = client.DeleteEmoji(context.Background(), newEmoji.Id) require.NoError(t, err) } @@ -458,14 +459,14 @@ func TestGetEmoji(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err := client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err := client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) - emoji, _, err = client.GetEmoji(newEmoji.Id) + emoji, _, err = client.GetEmoji(context.Background(), newEmoji.Id) require.NoError(t, err) require.Equal(t, newEmoji.Id, emoji.Id, "wrong emoji was returned") - _, resp, err := client.GetEmoji(model.NewId()) + _, resp, err := client.GetEmoji(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) } @@ -482,19 +483,19 @@ func TestGetEmojiByName(t *testing.T) { Name: model.NewId(), } - newEmoji, _, err := client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err := client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) - emoji, _, err = client.GetEmojiByName(newEmoji.Name) + emoji, _, err = client.GetEmojiByName(context.Background(), newEmoji.Name) require.NoError(t, err) assert.Equal(t, newEmoji.Name, emoji.Name) - _, resp, err := client.GetEmojiByName(model.NewId()) + _, resp, err := client.GetEmojiByName(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetEmojiByName(newEmoji.Name) + client.Logout(context.Background()) + _, resp, err = client.GetEmojiByName(context.Background(), newEmoji.Name) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -511,12 +512,12 @@ func TestGetEmojiImage(t *testing.T) { Name: model.NewId(), } - emoji1, _, err := client.CreateEmoji(emoji1, utils.CreateTestGif(t, 10, 10), "image.gif") + emoji1, _, err := client.CreateEmoji(context.Background(), emoji1, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = false }) - _, resp, err := client.GetEmojiImage(emoji1.Id) + _, resp, err := client.GetEmojiImage(context.Background(), emoji1.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) CheckErrorID(t, err, "api.emoji.disabled.app_error") @@ -524,7 +525,7 @@ func TestGetEmojiImage(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableCustomEmoji = true }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.DriverName = "local" }) - emojiImage, _, err := client.GetEmojiImage(emoji1.Id) + emojiImage, _, err := client.GetEmojiImage(context.Background(), emoji1.Id) require.NoError(t, err) require.Greater(t, len(emojiImage), 0, "should return the image") @@ -537,10 +538,10 @@ func TestGetEmojiImage(t *testing.T) { Name: model.NewId(), } - emoji2, _, err = client.CreateEmoji(emoji2, utils.CreateTestAnimatedGif(t, 10, 10, 10), "image.gif") + emoji2, _, err = client.CreateEmoji(context.Background(), emoji2, utils.CreateTestAnimatedGif(t, 10, 10, 10), "image.gif") require.NoError(t, err) - emojiImage, _, err = client.GetEmojiImage(emoji2.Id) + emojiImage, _, err = client.GetEmojiImage(context.Background(), emoji2.Id) require.NoError(t, err) require.Greater(t, len(emojiImage), 0, "no image returned") @@ -552,10 +553,10 @@ func TestGetEmojiImage(t *testing.T) { CreatorId: th.BasicUser.Id, Name: model.NewId(), } - emoji3, _, err = client.CreateEmoji(emoji3, utils.CreateTestJpeg(t, 10, 10), "image.jpg") + emoji3, _, err = client.CreateEmoji(context.Background(), emoji3, utils.CreateTestJpeg(t, 10, 10), "image.jpg") require.NoError(t, err) - emojiImage, _, err = client.GetEmojiImage(emoji3.Id) + emojiImage, _, err = client.GetEmojiImage(context.Background(), emoji3.Id) require.NoError(t, err) require.Greater(t, len(emojiImage), 0, "no image returned") @@ -567,10 +568,10 @@ func TestGetEmojiImage(t *testing.T) { CreatorId: th.BasicUser.Id, Name: model.NewId(), } - emoji4, _, err = client.CreateEmoji(emoji4, utils.CreateTestPng(t, 10, 10), "image.png") + emoji4, _, err = client.CreateEmoji(context.Background(), emoji4, utils.CreateTestPng(t, 10, 10), "image.png") require.NoError(t, err) - emojiImage, _, err = client.GetEmojiImage(emoji4.Id) + emojiImage, _, err = client.GetEmojiImage(context.Background(), emoji4.Id) require.NoError(t, err) require.Greater(t, len(emojiImage), 0, "no image returned") @@ -578,18 +579,18 @@ func TestGetEmojiImage(t *testing.T) { require.NoError(t, err, "unable to identify received image") require.Equal(t, imageType, "png", "expected png") - _, err = client.DeleteEmoji(emoji4.Id) + _, err = client.DeleteEmoji(context.Background(), emoji4.Id) require.NoError(t, err) - _, resp, err = client.GetEmojiImage(emoji4.Id) + _, resp, err = client.GetEmojiImage(context.Background(), emoji4.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetEmojiImage(model.NewId()) + _, resp, err = client.GetEmojiImage(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetEmojiImage("") + _, resp, err = client.GetEmojiImage(context.Background(), "") require.Error(t, err) CheckBadRequestStatus(t, resp) } @@ -616,13 +617,13 @@ func TestSearchEmoji(t *testing.T) { } for idx, emoji := range emojis { - newEmoji, _, err := client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err := client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) emojis[idx] = newEmoji } search := &model.EmojiSearch{Term: searchTerm1} - remojis, resp, err := client.SearchEmoji(search) + remojis, resp, err := client.SearchEmoji(context.Background(), search) require.NoError(t, err) CheckOKStatus(t, resp) @@ -637,7 +638,7 @@ func TestSearchEmoji(t *testing.T) { search.Term = searchTerm2 search.PrefixOnly = true - remojis, resp, err = client.SearchEmoji(search) + remojis, resp, err = client.SearchEmoji(context.Background(), search) require.NoError(t, err) CheckOKStatus(t, resp) @@ -651,7 +652,7 @@ func TestSearchEmoji(t *testing.T) { assert.False(t, found) search.PrefixOnly = false - remojis, resp, err = client.SearchEmoji(search) + remojis, resp, err = client.SearchEmoji(context.Background(), search) require.NoError(t, err) CheckOKStatus(t, resp) @@ -665,12 +666,12 @@ func TestSearchEmoji(t *testing.T) { assert.True(t, found) search.Term = "" - _, resp, err = client.SearchEmoji(search) + _, resp, err = client.SearchEmoji(context.Background(), search) require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.SearchEmoji(search) + client.Logout(context.Background()) + _, resp, err = client.SearchEmoji(context.Background(), search) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -696,12 +697,12 @@ func TestAutocompleteEmoji(t *testing.T) { } for idx, emoji := range emojis { - newEmoji, _, err := client.CreateEmoji(emoji, utils.CreateTestGif(t, 10, 10), "image.gif") + newEmoji, _, err := client.CreateEmoji(context.Background(), emoji, utils.CreateTestGif(t, 10, 10), "image.gif") require.NoError(t, err) emojis[idx] = newEmoji } - remojis, resp, err := client.AutocompleteEmoji(searchTerm1, "") + remojis, resp, err := client.AutocompleteEmoji(context.Background(), searchTerm1, "") require.NoError(t, err) CheckOKStatus(t, resp) @@ -720,12 +721,12 @@ func TestAutocompleteEmoji(t *testing.T) { assert.True(t, found1) assert.False(t, found2) - _, resp, err = client.AutocompleteEmoji("", "") + _, resp, err = client.AutocompleteEmoji(context.Background(), "", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.AutocompleteEmoji(searchTerm1, "") + client.Logout(context.Background()) + _, resp, err = client.AutocompleteEmoji(context.Background(), searchTerm1, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } diff --git a/server/channels/api4/export_test.go b/server/channels/api4/export_test.go index 78859e2148..d154b69625 100644 --- a/server/channels/api4/export_test.go +++ b/server/channels/api4/export_test.go @@ -5,6 +5,7 @@ package api4 import ( "bytes" + "context" "fmt" "os" "path/filepath" @@ -21,14 +22,14 @@ func TestListExports(t *testing.T) { defer th.TearDown() t.Run("no permissions", func(t *testing.T) { - exports, _, err := th.Client.ListExports() + exports, _, err := th.Client.ListExports(context.Background()) require.Error(t, err) CheckErrorID(t, err, "api.context.permissions.app_error") require.Nil(t, exports) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - exports, _, err := c.ListExports() + exports, _, err := c.ListExports(context.Background()) require.NoError(t, err) require.Empty(t, exports) }, "no exports") @@ -46,7 +47,7 @@ func TestListExports(t *testing.T) { require.NoError(t, err) f.Close() - exports, _, err := c.ListExports() + exports, _, err := c.ListExports(context.Background()) require.NoError(t, err) require.Len(t, exports, 1) require.Equal(t, exports[0], "export.zip") @@ -62,7 +63,7 @@ func TestListExports(t *testing.T) { require.NoError(t, err) defer os.RemoveAll(exportDir) - exports, _, err := c.ListExports() + exports, _, err := c.ListExports(context.Background()) require.NoError(t, err) require.Empty(t, exports) @@ -70,7 +71,7 @@ func TestListExports(t *testing.T) { require.NoError(t, err) f.Close() - exports, _, err = c.ListExports() + exports, _, err = c.ListExports(context.Background()) require.NoError(t, err) require.Len(t, exports, 1) require.Equal(t, "export.zip", exports[0]) @@ -82,7 +83,7 @@ func TestDeleteExport(t *testing.T) { defer th.TearDown() t.Run("no permissions", func(t *testing.T) { - _, err := th.Client.DeleteExport("export.zip") + _, err := th.Client.DeleteExport(context.Background(), "export.zip") require.Error(t, err) CheckErrorID(t, err, "api.context.permissions.app_error") }) @@ -100,20 +101,20 @@ func TestDeleteExport(t *testing.T) { require.NoError(t, err) f.Close() - exports, _, err := c.ListExports() + exports, _, err := c.ListExports(context.Background()) require.NoError(t, err) require.Len(t, exports, 1) require.Equal(t, exports[0], exportName) - _, err = c.DeleteExport(exportName) + _, err = c.DeleteExport(context.Background(), exportName) require.NoError(t, err) - exports, _, err = c.ListExports() + exports, _, err = c.ListExports(context.Background()) require.NoError(t, err) require.Empty(t, exports) // verify idempotence - _, err = c.DeleteExport(exportName) + _, err = c.DeleteExport(context.Background(), exportName) require.NoError(t, err) }, "successfully delete export") } @@ -124,7 +125,7 @@ func TestDownloadExport(t *testing.T) { t.Run("no permissions", func(t *testing.T) { var buf bytes.Buffer - n, _, err := th.Client.DownloadExport("export.zip", &buf, 0) + n, _, err := th.Client.DownloadExport(context.Background(), "export.zip", &buf, 0) require.Error(t, err) CheckErrorID(t, err, "api.context.permissions.app_error") require.Zero(t, n) @@ -136,7 +137,7 @@ func TestDownloadExport(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { var buf bytes.Buffer - n, _, err := c.DownloadExport("export.zip", &buf, 0) + n, _, err := c.DownloadExport(context.Background(), "export.zip", &buf, 0) require.Error(t, err) CheckErrorID(t, err, "api.export.export_not_found.app_error") require.Zero(t, n) @@ -153,7 +154,7 @@ func TestDownloadExport(t *testing.T) { err = os.WriteFile(filepath.Join(exportDir, exportName), data, 0600) require.NoError(t, err) - n, _, err := c.DownloadExport(exportName, &buf, 0) + n, _, err := c.DownloadExport(context.Background(), exportName, &buf, 0) require.NoError(t, err) require.Equal(t, len(data), int(n)) require.Equal(t, data, buf.Bytes()) @@ -171,7 +172,7 @@ func TestDownloadExport(t *testing.T) { require.NoError(t, err) offset := 1024 * 512 - n, _, err := c.DownloadExport(exportName, &buf, int64(offset)) + n, _, err := c.DownloadExport(context.Background(), exportName, &buf, int64(offset)) require.NoError(t, err) require.Equal(t, len(data)-offset, int(n)) require.Equal(t, data[offset:], buf.Bytes()) @@ -202,7 +203,7 @@ func BenchmarkDownloadExport(b *testing.B) { for i := 0; i < b.N; i++ { outFilePath := filepath.Join(dataDir, fmt.Sprintf("export%d.zip", i)) outFile, _ := os.Create(outFilePath) - th.SystemAdminClient.DownloadExport(exportName, outFile, 0) + th.SystemAdminClient.DownloadExport(context.Background(), exportName, outFile, 0) outFile.Close() os.Remove(outFilePath) } diff --git a/server/channels/api4/file_test.go b/server/channels/api4/file_test.go index a99d381506..48b91fec2c 100644 --- a/server/channels/api4/file_test.go +++ b/server/channels/api4/file_test.go @@ -5,6 +5,7 @@ package api4 import ( "bytes" + "context" "crypto/rand" "encoding/json" "fmt" @@ -699,8 +700,8 @@ func TestUploadFiles(t *testing.T) { } if !tc.skipPayloadValidation { - compare := func(get func(string) ([]byte, *model.Response, error), name string) { - data, _, err := get(ri.Id) + compare := func(get func(context.Context, string) ([]byte, *model.Response, error), name string) { + data, _, err := get(context.Background(), ri.Id) require.NoError(t, err) expected, err := os.ReadFile(filepath.Join(testDir, name)) @@ -748,12 +749,12 @@ func TestGetFile(t *testing.T) { sent, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - fileResp, _, err := client.UploadFile(sent, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), sent, channel.Id, "test.png") require.NoError(t, err) fileId := fileResp.FileInfos[0].Id - data, _, err := client.GetFile(fileId) + data, _, err := client.GetFile(context.Background(), fileId) require.NoError(t, err) require.NotEqual(t, 0, len(data), "should not be empty") @@ -761,20 +762,20 @@ func TestGetFile(t *testing.T) { require.Equal(t, sent[i], data[i], "received file didn't match sent one") } - _, resp, err := client.GetFile("junk") + _, resp, err := client.GetFile(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetFile(model.NewId()) + _, resp, err = client.GetFile(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetFile(fileId) + client.Logout(context.Background()) + _, resp, err = client.GetFile(context.Background(), fileId) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetFile(fileId) + _, _, err = th.SystemAdminClient.GetFile(context.Background(), fileId) require.NoError(t, err) } @@ -803,12 +804,12 @@ func TestGetFileHeaders(t *testing.T) { require.NoError(t, err) } - fileResp, _, err := client.UploadFile(data, channel.Id, filename) + fileResp, _, err := client.UploadFile(context.Background(), data, channel.Id, filename) require.NoError(t, err) fileId := fileResp.FileInfos[0].Id - _, resp, err := client.GetFile(fileId) + _, resp, err := client.GetFile(context.Background(), fileId) require.NoError(t, err) CheckStartsWith(t, resp.Header.Get("Content-Type"), expectedContentType, "returned incorrect Content-Type") @@ -819,7 +820,7 @@ func TestGetFileHeaders(t *testing.T) { CheckStartsWith(t, resp.Header.Get("Content-Disposition"), "attachment", "returned incorrect Content-Disposition") } - _, resp, err = client.DownloadFile(fileId, true) + _, resp, err = client.DownloadFile(context.Background(), fileId, true) require.NoError(t, err) CheckStartsWith(t, resp.Header.Get("Content-Type"), expectedContentType, "returned incorrect Content-Type") @@ -859,36 +860,36 @@ func TestGetFileThumbnail(t *testing.T) { sent, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - fileResp, _, err := client.UploadFile(sent, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), sent, channel.Id, "test.png") require.NoError(t, err) fileId := fileResp.FileInfos[0].Id - data, _, err := client.GetFileThumbnail(fileId) + data, _, err := client.GetFileThumbnail(context.Background(), fileId) require.NoError(t, err) require.NotEqual(t, 0, len(data), "should not be empty") - _, resp, err := client.GetFileThumbnail("junk") + _, resp, err := client.GetFileThumbnail(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetFileThumbnail(model.NewId()) + _, resp, err = client.GetFileThumbnail(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetFileThumbnail(fileId) + client.Logout(context.Background()) + _, resp, err = client.GetFileThumbnail(context.Background(), fileId) require.Error(t, err) CheckUnauthorizedStatus(t, resp) otherUser := th.CreateUser() - client.Login(otherUser.Email, otherUser.Password) - _, resp, err = client.GetFileThumbnail(fileId) + client.Login(context.Background(), otherUser.Email, otherUser.Password) + _, resp, err = client.GetFileThumbnail(context.Background(), fileId) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, _, err = th.SystemAdminClient.GetFileThumbnail(fileId) + client.Logout(context.Background()) + _, _, err = th.SystemAdminClient.GetFileThumbnail(context.Background(), fileId) require.NoError(t, err) } @@ -908,12 +909,12 @@ func TestGetFileLink(t *testing.T) { data, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - fileResp, _, err := client.UploadFile(data, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), data, channel.Id, "test.png") require.NoError(t, err) fileId := fileResp.FileInfos[0].Id - _, resp, err := client.GetFileLink(fileId) + _, resp, err := client.GetFileLink(context.Background(), fileId) require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -922,36 +923,36 @@ func TestGetFileLink(t *testing.T) { require.NoError(t, err) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnablePublicLink = false }) - _, resp, err = client.GetFileLink(fileId) + _, resp, err = client.GetFileLink(context.Background(), fileId) require.Error(t, err) CheckForbiddenStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnablePublicLink = true }) - link, _, err := client.GetFileLink(fileId) + link, _, err := client.GetFileLink(context.Background(), fileId) require.NoError(t, err) require.NotEqual(t, "", link, "should've received public link") - _, resp, err = client.GetFileLink("junk") + _, resp, err = client.GetFileLink(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetFileLink(model.NewId()) + _, resp, err = client.GetFileLink(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetFileLink(fileId) + client.Logout(context.Background()) + _, resp, err = client.GetFileLink(context.Background(), fileId) require.Error(t, err) CheckUnauthorizedStatus(t, resp) otherUser := th.CreateUser() - client.Login(otherUser.Email, otherUser.Password) - _, resp, err = client.GetFileLink(fileId) + client.Login(context.Background(), otherUser.Email, otherUser.Password) + _, resp, err = client.GetFileLink(context.Background(), fileId) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, _, err = th.SystemAdminClient.GetFileLink(fileId) + client.Logout(context.Background()) + _, _, err = th.SystemAdminClient.GetFileLink(context.Background(), fileId) require.NoError(t, err) fileInfo, err := th.App.Srv().Store().FileInfo().Get(fileId) @@ -972,35 +973,35 @@ func TestGetFilePreview(t *testing.T) { sent, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - fileResp, _, err := client.UploadFile(sent, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), sent, channel.Id, "test.png") require.NoError(t, err) fileId := fileResp.FileInfos[0].Id - data, _, err := client.GetFilePreview(fileId) + data, _, err := client.GetFilePreview(context.Background(), fileId) require.NoError(t, err) require.NotEqual(t, 0, len(data), "should not be empty") - _, resp, err := client.GetFilePreview("junk") + _, resp, err := client.GetFilePreview(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetFilePreview(model.NewId()) + _, resp, err = client.GetFilePreview(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetFilePreview(fileId) + client.Logout(context.Background()) + _, resp, err = client.GetFilePreview(context.Background(), fileId) require.Error(t, err) CheckUnauthorizedStatus(t, resp) otherUser := th.CreateUser() - client.Login(otherUser.Email, otherUser.Password) - _, resp, err = client.GetFilePreview(fileId) + client.Login(context.Background(), otherUser.Email, otherUser.Password) + _, resp, err = client.GetFilePreview(context.Background(), fileId) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, _, err = th.SystemAdminClient.GetFilePreview(fileId) + client.Logout(context.Background()) + _, _, err = th.SystemAdminClient.GetFilePreview(context.Background(), fileId) require.NoError(t, err) } @@ -1018,11 +1019,11 @@ func TestGetFileInfo(t *testing.T) { sent, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - fileResp, _, err := client.UploadFile(sent, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), sent, channel.Id, "test.png") require.NoError(t, err) fileId := fileResp.FileInfos[0].Id - info, _, err := client.GetFileInfo(fileId) + info, _, err := client.GetFileInfo(context.Background(), fileId) require.NoError(t, err) require.NoError(t, err) @@ -1034,27 +1035,27 @@ func TestGetFileInfo(t *testing.T) { require.Equal(t, "", info.PreviewPath, "file preview path shouldn't have been returned to client") require.Equal(t, "image/png", info.MimeType, "mime type should've been image/png") - _, resp, err := client.GetFileInfo("junk") + _, resp, err := client.GetFileInfo(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetFileInfo(model.NewId()) + _, resp, err = client.GetFileInfo(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() - _, resp, err = client.GetFileInfo(fileId) + client.Logout(context.Background()) + _, resp, err = client.GetFileInfo(context.Background(), fileId) require.Error(t, err) CheckUnauthorizedStatus(t, resp) otherUser := th.CreateUser() - client.Login(otherUser.Email, otherUser.Password) - _, resp, err = client.GetFileInfo(fileId) + client.Login(context.Background(), otherUser.Email, otherUser.Password) + _, resp, err = client.GetFileInfo(context.Background(), fileId) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, _, err = th.SystemAdminClient.GetFileInfo(fileId) + client.Logout(context.Background()) + _, _, err = th.SystemAdminClient.GetFileInfo(context.Background(), fileId) require.NoError(t, err) } @@ -1070,7 +1071,7 @@ func TestGetPublicFile(t *testing.T) { data, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - fileResp, _, err := client.UploadFile(data, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), data, channel.Id, "test.png") require.NoError(t, err) fileId := fileResp.FileInfos[0].Id @@ -1166,11 +1167,11 @@ func TestSearchFiles(t *testing.T) { fileInfo5, appErr := th.App.UploadFile(th.Context, data, archivedChannel.Id, "tagged for fileInfo3") require.Nil(t, appErr) post := &model.Post{ChannelId: archivedChannel.Id, Message: model.NewId() + "a"} - rpost, _, err := client.CreatePost(post) + rpost, _, err := client.CreatePost(context.Background(), post) require.NoError(t, err) err = th.App.Srv().Store().FileInfo().AttachToPost(fileInfo5.Id, rpost.Id, rpost.ChannelId, th.BasicUser.Id) require.NoError(t, err) - th.Client.DeleteChannel(archivedChannel.Id) + th.Client.DeleteChannel(context.Background(), archivedChannel.Id) terms := "search" isOrSearch := false @@ -1180,7 +1181,7 @@ func TestSearchFiles(t *testing.T) { IsOrSearch: &isOrSearch, TimeZoneOffset: &timezoneOffset, } - fileInfos, _, err := client.SearchFilesWithParams(th.BasicTeam.Id, &searchParams) + fileInfos, _, err := client.SearchFilesWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) require.Len(t, fileInfos.Order, 3, "wrong search") @@ -1194,7 +1195,7 @@ func TestSearchFiles(t *testing.T) { Page: &page, PerPage: &perPage, } - fileInfos2, _, err := client.SearchFilesWithParams(th.BasicTeam.Id, &searchParams) + fileInfos2, _, err := client.SearchFilesWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) // We don't support paging for DB search yet, modify this when we do. require.Len(t, fileInfos2.Order, 3, "Wrong number of fileInfos") @@ -1209,16 +1210,16 @@ func TestSearchFiles(t *testing.T) { Page: &page, PerPage: &perPage, } - fileInfos2, _, err = client.SearchFilesWithParams(th.BasicTeam.Id, &searchParams) + fileInfos2, _, err = client.SearchFilesWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) // We don't support paging for DB search yet, modify this when we do. require.Empty(t, fileInfos2.Order, "Wrong number of fileInfos") - fileInfos, _, err = client.SearchFiles(th.BasicTeam.Id, "search", false) + fileInfos, _, err = client.SearchFiles(context.Background(), th.BasicTeam.Id, "search", false) require.NoError(t, err) require.Len(t, fileInfos.Order, 3, "wrong search") - fileInfos, _, err = client.SearchFiles(th.BasicTeam.Id, "fileInfo2", false) + fileInfos, _, err = client.SearchFiles(context.Background(), th.BasicTeam.Id, "fileInfo2", false) require.NoError(t, err) require.Len(t, fileInfos.Order, 1, "wrong number of fileInfos") require.Equal(t, fileInfo2.Id, fileInfos.Order[0], "wrong search") @@ -1231,7 +1232,7 @@ func TestSearchFiles(t *testing.T) { TimeZoneOffset: &timezoneOffset, IncludeDeletedChannels: &includeDeletedChannels, } - fileInfos, _, err = client.SearchFilesWithParams(th.BasicTeam.Id, &searchParams) + fileInfos, _, err = client.SearchFilesWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) require.Len(t, fileInfos.Order, 3, "wrong search") @@ -1239,31 +1240,31 @@ func TestSearchFiles(t *testing.T) { *cfg.TeamSettings.ExperimentalViewArchivedChannels = false }) - fileInfos, _, err = client.SearchFilesWithParams(th.BasicTeam.Id, &searchParams) + fileInfos, _, err = client.SearchFilesWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) require.Len(t, fileInfos.Order, 2, "wrong search") - fileInfos, _, _ = client.SearchFiles(th.BasicTeam.Id, "*", false) + fileInfos, _, _ = client.SearchFiles(context.Background(), th.BasicTeam.Id, "*", false) require.Empty(t, fileInfos.Order, "searching for just * shouldn't return any results") - fileInfos, _, err = client.SearchFiles(th.BasicTeam.Id, "fileInfo1 fileInfo2", true) + fileInfos, _, err = client.SearchFiles(context.Background(), th.BasicTeam.Id, "fileInfo1 fileInfo2", true) require.NoError(t, err) require.Len(t, fileInfos.Order, 2, "wrong search results") - _, resp, err := client.SearchFiles("junk", "#sgtitlereview", false) + _, resp, err := client.SearchFiles(context.Background(), "junk", "#sgtitlereview", false) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.SearchFiles(model.NewId(), "#sgtitlereview", false) + _, resp, err = client.SearchFiles(context.Background(), model.NewId(), "#sgtitlereview", false) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.SearchFiles(th.BasicTeam.Id, "", false) + _, resp, err = client.SearchFiles(context.Background(), th.BasicTeam.Id, "", false) require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.SearchFiles(th.BasicTeam.Id, "#sgtitlereview", false) + client.Logout(context.Background()) + _, resp, err = client.SearchFiles(context.Background(), th.BasicTeam.Id, "#sgtitlereview", false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } diff --git a/server/channels/api4/group_test.go b/server/channels/api4/group_test.go index 8029dd7558..3860409163 100644 --- a/server/channels/api4/group_test.go +++ b/server/channels/api4/group_test.go @@ -30,17 +30,17 @@ func TestGetGroup(t *testing.T) { }) assert.Nil(t, appErr) - _, response, err := th.Client.GetGroup(g.Id, "") + _, response, err := th.Client.GetGroup(context.Background(), g.Id, "") require.Error(t, err) CheckNotImplementedStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroup(g.Id, "") + _, response, err = th.SystemAdminClient.GetGroup(context.Background(), g.Id, "") require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - group, _, err := th.SystemAdminClient.GetGroup(g.Id, "") + group, _, err := th.SystemAdminClient.GetGroup(context.Background(), g.Id, "") require.NoError(t, err) assert.Equal(t, g.DisplayName, group.DisplayName) @@ -52,16 +52,16 @@ func TestGetGroup(t *testing.T) { assert.Equal(t, g.UpdateAt, group.UpdateAt) assert.Equal(t, g.DeleteAt, group.DeleteAt) - _, response, err = th.SystemAdminClient.GetGroup(model.NewId(), "") + _, response, err = th.SystemAdminClient.GetGroup(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroup("12345", "") + _, response, err = th.SystemAdminClient.GetGroup(context.Background(), "12345", "") require.Error(t, err) CheckBadRequestStatus(t, response) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.GetGroup(group.Id, "") + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.GetGroup(context.Background(), group.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -80,7 +80,7 @@ func TestCreateGroup(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional, "ldap")) - group, _, err := th.SystemAdminClient.CreateGroup(g) + group, _, err := th.SystemAdminClient.CreateGroup(context.Background(), g) require.NoError(t, err) assert.Equal(t, g.DisplayName, group.DisplayName) @@ -96,7 +96,7 @@ func TestCreateGroup(t *testing.T) { Description: "description_" + id, } - _, response, err := th.SystemAdminClient.CreateGroup(gbroken) + _, response, err := th.SystemAdminClient.CreateGroup(context.Background(), gbroken) require.Error(t, err) CheckBadRequestStatus(t, response) @@ -110,12 +110,12 @@ func TestCreateGroup(t *testing.T) { th.RemovePermissionFromRole(model.PermissionCreateCustomGroup.Id, model.SystemAdminRoleId) th.RemovePermissionFromRole(model.PermissionCreateCustomGroup.Id, model.SystemUserRoleId) defer th.AddPermissionToRole(model.PermissionCreateCustomGroup.Id, model.SystemUserRoleId) - _, response, err = th.SystemAdminClient.CreateGroup(validGroup) + _, response, err = th.SystemAdminClient.CreateGroup(context.Background(), validGroup) require.Error(t, err) CheckForbiddenStatus(t, response) th.AddPermissionToRole(model.PermissionCreateCustomGroup.Id, model.SystemAdminRoleId) - _, response, err = th.SystemAdminClient.CreateGroup(validGroup) + _, response, err = th.SystemAdminClient.CreateGroup(context.Background(), validGroup) require.NoError(t, err) CheckCreatedStatus(t, response) @@ -125,7 +125,7 @@ func TestCreateGroup(t *testing.T) { Source: model.GroupSourceCustom, AllowReference: true, } - _, response, err = th.SystemAdminClient.CreateGroup(usernameGroup) + _, response, err = th.SystemAdminClient.CreateGroup(context.Background(), usernameGroup) require.Error(t, err) CheckBadRequestStatus(t, response) @@ -135,11 +135,11 @@ func TestCreateGroup(t *testing.T) { Source: model.GroupSourceCustom, AllowReference: false, } - _, response, err = th.SystemAdminClient.CreateGroup(unReferenceableCustomGroup) + _, response, err = th.SystemAdminClient.CreateGroup(context.Background(), unReferenceableCustomGroup) require.Error(t, err) CheckBadRequestStatus(t, response) unReferenceableCustomGroup.AllowReference = true - _, response, err = th.SystemAdminClient.CreateGroup(unReferenceableCustomGroup) + _, response, err = th.SystemAdminClient.CreateGroup(context.Background(), unReferenceableCustomGroup) require.NoError(t, err) CheckCreatedStatus(t, response) @@ -150,7 +150,7 @@ func TestCreateGroup(t *testing.T) { AllowReference: true, RemoteId: model.NewString(model.NewId()), } - _, response, err = th.SystemAdminClient.CreateGroup(customGroupWithRemoteID) + _, response, err = th.SystemAdminClient.CreateGroup(context.Background(), customGroupWithRemoteID) require.Error(t, err) CheckBadRequestStatus(t, response) @@ -160,12 +160,12 @@ func TestCreateGroup(t *testing.T) { Source: model.GroupSourceCustom, AllowReference: true, } - _, response, err = th.SystemAdminClient.CreateGroup(reservedNameGroup) + _, response, err = th.SystemAdminClient.CreateGroup(context.Background(), reservedNameGroup) require.Error(t, err) CheckBadRequestStatus(t, response) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.CreateGroup(g) + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.CreateGroup(context.Background(), g) require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -186,20 +186,20 @@ func TestDeleteGroup(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) - _, response, err := th.Client.DeleteGroup(g.Id) + _, response, err := th.Client.DeleteGroup(context.Background(), g.Id) require.Error(t, err) CheckBadRequestStatus(t, response) th.AddPermissionToRole(model.PermissionDeleteCustomGroup.Id, model.SystemUserRoleId) - _, response, err = th.Client.DeleteGroup(g.Id) + _, response, err = th.Client.DeleteGroup(context.Background(), g.Id) require.Error(t, err) CheckBadRequestStatus(t, response) - _, response, err = th.Client.DeleteGroup(g.Id) + _, response, err = th.Client.DeleteGroup(context.Background(), g.Id) require.Error(t, err) CheckBadRequestStatus(t, response) - _, response, err = th.Client.DeleteGroup("wertyuijhbgvfcde") + _, response, err = th.Client.DeleteGroup(context.Background(), "wertyuijhbgvfcde") require.Error(t, err) CheckBadRequestStatus(t, response) @@ -210,7 +210,7 @@ func TestDeleteGroup(t *testing.T) { }) assert.Nil(t, appErr) - _, response, err = th.Client.DeleteGroup(validGroup.Id) + _, response, err = th.Client.DeleteGroup(context.Background(), validGroup.Id) require.NoError(t, err) CheckOKStatus(t, response) } @@ -228,21 +228,21 @@ func TestUndeleteGroup(t *testing.T) { }) assert.Nil(t, appErr) - _, response, err := th.Client.DeleteGroup(validGroup.Id) + _, response, err := th.Client.DeleteGroup(context.Background(), validGroup.Id) require.NoError(t, err) CheckOKStatus(t, response) th.RemovePermissionFromRole(model.PermissionRestoreCustomGroup.Id, model.SystemUserRoleId) // shouldn't allow restoring unless user has required permission - _, response, err = th.Client.RestoreGroup(validGroup.Id, "") + _, response, err = th.Client.RestoreGroup(context.Background(), validGroup.Id, "") require.Error(t, err) CheckForbiddenStatus(t, response) th.AddPermissionToRole(model.PermissionRestoreCustomGroup.Id, model.SystemUserRoleId) - _, response, err = th.Client.RestoreGroup(validGroup.Id, "") + _, response, err = th.Client.RestoreGroup(context.Background(), validGroup.Id, "") require.NoError(t, err) CheckOKStatus(t, response) - _, response, err = th.Client.RestoreGroup(validGroup.Id, "") + _, response, err = th.Client.RestoreGroup(context.Background(), validGroup.Id, "") require.Error(t, err) CheckNotFoundStatus(t, response) } @@ -281,21 +281,21 @@ func TestPatchGroup(t *testing.T) { Description: &newDescription, } - _, response, err := th.Client.PatchGroup(g.Id, gp) + _, response, err := th.Client.PatchGroup(context.Background(), g.Id, gp) require.Error(t, err) CheckNotImplementedStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroup(g.Id, gp) + _, response, err = th.SystemAdminClient.PatchGroup(context.Background(), g.Id, gp) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional, "ldap")) - group2, response, err := th.SystemAdminClient.PatchGroup(g.Id, gp) + group2, response, err := th.SystemAdminClient.PatchGroup(context.Background(), g.Id, gp) require.NoError(t, err) CheckOKStatus(t, response) - group, _, err := th.SystemAdminClient.GetGroup(g.Id, "") + group, _, err := th.SystemAdminClient.GetGroup(context.Background(), g.Id, "") require.NoError(t, err) assert.Equal(t, *gp.DisplayName, group.DisplayName) @@ -316,11 +316,11 @@ func TestPatchGroup(t *testing.T) { assert.Equal(t, g.DeleteAt, group.DeleteAt) assert.Equal(t, g.DeleteAt, group2.DeleteAt) - _, response, err = th.SystemAdminClient.PatchGroup(model.NewId(), gp) + _, response, err = th.SystemAdminClient.PatchGroup(context.Background(), model.NewId(), gp) require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroup(g2.Id, &model.GroupPatch{ + _, response, err = th.SystemAdminClient.PatchGroup(context.Background(), g2.Id, &model.GroupPatch{ Name: model.NewString(model.NewId()), DisplayName: model.NewString("foo"), AllowReference: model.NewBool(false), @@ -329,7 +329,7 @@ func TestPatchGroup(t *testing.T) { CheckBadRequestStatus(t, response) // ensure that omitting the AllowReference field from the patch doesn't patch it to false - patchedG2, response, err := th.SystemAdminClient.PatchGroup(g2.Id, &model.GroupPatch{ + patchedG2, response, err := th.SystemAdminClient.PatchGroup(context.Background(), g2.Id, &model.GroupPatch{ Name: model.NewString(model.NewId()), DisplayName: model.NewString("foo"), }) @@ -337,14 +337,14 @@ func TestPatchGroup(t *testing.T) { CheckOKStatus(t, response) require.Equal(t, true, patchedG2.AllowReference) - _, response, err = th.SystemAdminClient.PatchGroup(g2.Id, &model.GroupPatch{ + _, response, err = th.SystemAdminClient.PatchGroup(context.Background(), g2.Id, &model.GroupPatch{ Name: model.NewString("here"), }) require.Error(t, err) CheckBadRequestStatus(t, response) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.PatchGroup(group.Id, gp) + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.PatchGroup(context.Background(), group.Id, gp) require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -367,24 +367,24 @@ func TestLinkGroupTeam(t *testing.T) { AutoAdd: model.NewBool(true), } - _, response, err := th.Client.LinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, err := th.Client.LinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckNotImplementedStatus(t, response) - _, response, err = th.SystemAdminClient.LinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, err = th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, _, err = th.Client.LinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, _, err = th.Client.LinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) assert.Error(t, err) th.UpdateUserToTeamAdmin(th.BasicUser, th.BasicTeam) - th.Client.Logout() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Logout(context.Background()) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) - groupTeam, response, _ := th.Client.LinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + groupTeam, response, _ := th.Client.LinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) assert.NotNil(t, groupTeam) @@ -398,7 +398,7 @@ func TestLinkGroupTeam(t *testing.T) { }) assert.Nil(t, app2Err) - _, response, err = th.Client.LinkGroupSyncable(g2.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, err = th.Client.LinkGroupSyncable(context.Background(), g2.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckBadRequestStatus(t, response) } @@ -421,27 +421,27 @@ func TestLinkGroupChannel(t *testing.T) { AutoAdd: model.NewBool(true), } - _, response, err := th.Client.LinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, err := th.Client.LinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckNotImplementedStatus(t, response) - _, response, err = th.SystemAdminClient.LinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, err = th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - groupTeam, response, _ := th.Client.LinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + groupTeam, response, _ := th.Client.LinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) assert.Equal(t, th.BasicChannel.TeamId, groupTeam.TeamID) assert.NotNil(t, groupTeam) - _, err = th.SystemAdminClient.UpdateChannelRoles(th.BasicChannel.Id, th.BasicUser.Id, "") + _, err = th.SystemAdminClient.UpdateChannelRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) - th.Client.Logout() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Logout(context.Background()) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) - _, _, err = th.Client.LinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, _, err = th.Client.LinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) assert.Error(t, err) gid := model.NewId() @@ -454,7 +454,7 @@ func TestLinkGroupChannel(t *testing.T) { }) assert.Nil(t, app2Err) - _, response, err = th.Client.LinkGroupSyncable(g2.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, err = th.Client.LinkGroupSyncable(context.Background(), g2.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckBadRequestStatus(t, response) } @@ -479,33 +479,33 @@ func TestUnlinkGroupTeam(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, response, _ := th.SystemAdminClient.LinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, _ := th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) th.App.Srv().SetLicense(nil) - response, err := th.Client.UnlinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam) + response, err := th.Client.UnlinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam) require.Error(t, err) CheckNotImplementedStatus(t, response) - response, err = th.SystemAdminClient.UnlinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam) + response, err = th.SystemAdminClient.UnlinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, err = th.Client.UnlinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam) + _, err = th.Client.UnlinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam) assert.Error(t, err) time.Sleep(2 * time.Second) // A hack to let "go c.App.SyncRolesAndMembership" finish before moving on. th.UpdateUserToTeamAdmin(th.BasicUser, th.BasicTeam) - response, err = th.Client.Logout() + response, err = th.Client.Logout(context.Background()) require.NoError(t, err) CheckOKStatus(t, response) - _, response, err = th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, response, err = th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.NoError(t, err) CheckOKStatus(t, response) - response, err = th.Client.UnlinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam) + response, err = th.Client.UnlinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam) require.NoError(t, err) CheckOKStatus(t, response) } @@ -530,35 +530,35 @@ func TestUnlinkGroupChannel(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, response, _ := th.SystemAdminClient.LinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, _ := th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) th.App.Srv().SetLicense(nil) - response, err := th.Client.UnlinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel) + response, err := th.Client.UnlinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel) require.Error(t, err) CheckNotImplementedStatus(t, response) - response, err = th.SystemAdminClient.UnlinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel) + response, err = th.SystemAdminClient.UnlinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, err = th.SystemAdminClient.UpdateChannelRoles(th.BasicChannel.Id, th.BasicUser.Id, "") + _, err = th.SystemAdminClient.UpdateChannelRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) - th.Client.Logout() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Logout(context.Background()) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) - _, err = th.Client.UnlinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel) + _, err = th.Client.UnlinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel) assert.Error(t, err) - _, err = th.SystemAdminClient.UpdateChannelRoles(th.BasicChannel.Id, th.BasicUser.Id, "channel_admin channel_user") + _, err = th.SystemAdminClient.UpdateChannelRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "channel_admin channel_user") require.NoError(t, err) - th.Client.Logout() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Logout(context.Background()) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) - _, err = th.Client.UnlinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel) + _, err = th.Client.UnlinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel) assert.NoError(t, err) } @@ -576,11 +576,11 @@ func TestGetGroupTeam(t *testing.T) { }) assert.Nil(t, appErr) - _, response, err := th.Client.GetGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") + _, response, err := th.Client.GetGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckNotImplementedStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckNotImplementedStatus(t, response) @@ -590,10 +590,10 @@ func TestGetGroupTeam(t *testing.T) { AutoAdd: model.NewBool(true), } - _, response, _ = th.SystemAdminClient.LinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, _ = th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) - groupSyncable, response, err := th.SystemAdminClient.GetGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") + groupSyncable, response, err := th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") require.NoError(t, err) CheckOKStatus(t, response) assert.NotNil(t, groupSyncable) @@ -602,24 +602,24 @@ func TestGetGroupTeam(t *testing.T) { assert.Equal(t, th.BasicTeam.Id, groupSyncable.SyncableId) assert.Equal(t, *patch.AutoAdd, groupSyncable.AutoAdd) - _, response, err = th.SystemAdminClient.GetGroupSyncable(model.NewId(), th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), model.NewId(), th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncable(g.Id, model.NewId(), model.GroupSyncableTypeTeam, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, model.NewId(), model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncable("asdfasdfe3", th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), "asdfasdfe3", th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckBadRequestStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncable(g.Id, "asdfasdfe3", model.GroupSyncableTypeTeam, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, "asdfasdfe3", model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckBadRequestStatus(t, response) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.GetGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -638,11 +638,11 @@ func TestGetGroupChannel(t *testing.T) { }) assert.Nil(t, appErr) - _, response, err := th.Client.GetGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") + _, response, err := th.Client.GetGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckNotImplementedStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckNotImplementedStatus(t, response) @@ -652,10 +652,10 @@ func TestGetGroupChannel(t *testing.T) { AutoAdd: model.NewBool(true), } - _, response, _ = th.SystemAdminClient.LinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, _ = th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) - groupSyncable, response, err := th.SystemAdminClient.GetGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") + groupSyncable, response, err := th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") require.NoError(t, err) CheckOKStatus(t, response) assert.NotNil(t, groupSyncable) @@ -664,24 +664,24 @@ func TestGetGroupChannel(t *testing.T) { assert.Equal(t, th.BasicChannel.Id, groupSyncable.SyncableId) assert.Equal(t, *patch.AutoAdd, groupSyncable.AutoAdd) - _, response, err = th.SystemAdminClient.GetGroupSyncable(model.NewId(), th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), model.NewId(), th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncable(g.Id, model.NewId(), model.GroupSyncableTypeChannel, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, model.NewId(), model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncable("asdfasdfe3", th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), "asdfasdfe3", th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckBadRequestStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncable(g.Id, "asdfasdfe3", model.GroupSyncableTypeChannel, "") + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, "asdfasdfe3", model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckBadRequestStatus(t, response) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.GetGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.GetGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -708,33 +708,33 @@ func TestGetGroupTeams(t *testing.T) { for i := 0; i < 10; i++ { team := th.CreateTeam() - _, response, _ := th.SystemAdminClient.LinkGroupSyncable(g.Id, team.Id, model.GroupSyncableTypeTeam, patch) + _, response, _ := th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, team.Id, model.GroupSyncableTypeTeam, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) } th.App.Srv().SetLicense(nil) - _, response, err := th.Client.GetGroupSyncables(g.Id, model.GroupSyncableTypeTeam, "") + _, response, err := th.Client.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckNotImplementedStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncables(g.Id, model.GroupSyncableTypeTeam, "") + _, response, err = th.SystemAdminClient.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, response, _ = th.Client.GetGroupSyncables(g.Id, model.GroupSyncableTypeTeam, "") + _, response, _ = th.Client.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeTeam, "") assert.Equal(t, http.StatusForbidden, response.StatusCode) - groupSyncables, response, err := th.SystemAdminClient.GetGroupSyncables(g.Id, model.GroupSyncableTypeTeam, "") + groupSyncables, response, err := th.SystemAdminClient.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeTeam, "") require.NoError(t, err) CheckOKStatus(t, response) assert.Len(t, groupSyncables, 10) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.GetGroupSyncables(g.Id, model.GroupSyncableTypeTeam, "") + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeTeam, "") require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -761,32 +761,32 @@ func TestGetGroupChannels(t *testing.T) { for i := 0; i < 10; i++ { channel := th.CreatePublicChannel() - _, response, _ := th.SystemAdminClient.LinkGroupSyncable(g.Id, channel.Id, model.GroupSyncableTypeChannel, patch) + _, response, _ := th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, channel.Id, model.GroupSyncableTypeChannel, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) } th.App.Srv().SetLicense(nil) - _, response, err := th.Client.GetGroupSyncables(g.Id, model.GroupSyncableTypeChannel, "") + _, response, err := th.Client.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckNotImplementedStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupSyncables(g.Id, model.GroupSyncableTypeChannel, "") + _, response, err = th.SystemAdminClient.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, response, _ = th.Client.GetGroupSyncables(g.Id, model.GroupSyncableTypeChannel, "") + _, response, _ = th.Client.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeChannel, "") assert.Equal(t, http.StatusForbidden, response.StatusCode) - groupSyncables, response, _ := th.SystemAdminClient.GetGroupSyncables(g.Id, model.GroupSyncableTypeChannel, "") + groupSyncables, response, _ := th.SystemAdminClient.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeChannel, "") CheckOKStatus(t, response) assert.Len(t, groupSyncables, 10) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.GetGroupSyncables(g.Id, model.GroupSyncableTypeChannel, "") + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.GetGroupSyncables(context.Background(), g.Id, model.GroupSyncableTypeChannel, "") require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -811,24 +811,24 @@ func TestPatchGroupTeam(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - groupSyncable, response, _ := th.SystemAdminClient.LinkGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + groupSyncable, response, _ := th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) assert.NotNil(t, groupSyncable) assert.True(t, groupSyncable.AutoAdd) - _, response, _ = th.Client.PatchGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, _ = th.Client.PatchGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) assert.Equal(t, http.StatusForbidden, response.StatusCode) th.App.Srv().SetLicense(nil) - _, response, err := th.SystemAdminClient.PatchGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, err := th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) patch.AutoAdd = model.NewBool(false) - groupSyncable, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + groupSyncable, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) require.NoError(t, err) CheckOKStatus(t, response) assert.False(t, groupSyncable.AutoAdd) @@ -838,27 +838,27 @@ func TestPatchGroupTeam(t *testing.T) { assert.Equal(t, model.GroupSyncableTypeTeam, groupSyncable.Type) patch.AutoAdd = model.NewBool(true) - _, response, _ = th.SystemAdminClient.PatchGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, _ = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) CheckOKStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroupSyncable(model.NewId(), th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), model.NewId(), th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, model.NewId(), model.GroupSyncableTypeTeam, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, model.NewId(), model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroupSyncable("abc", th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), "abc", th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckBadRequestStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, "abc", model.GroupSyncableTypeTeam, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, "abc", model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckBadRequestStatus(t, response) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, th.BasicTeam.Id, model.GroupSyncableTypeTeam, patch) require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -883,7 +883,7 @@ func TestPatchGroupChannel(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - groupSyncable, response, _ := th.SystemAdminClient.LinkGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + groupSyncable, response, _ := th.SystemAdminClient.LinkGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) assert.Equal(t, http.StatusCreated, response.StatusCode) assert.NotNil(t, groupSyncable) assert.True(t, groupSyncable.AutoAdd) @@ -894,7 +894,7 @@ func TestPatchGroupChannel(t *testing.T) { _, appErr = th.App.PatchRole(role, &model.RolePatch{Permissions: &[]string{}}) require.Nil(t, appErr) - _, response, _ = th.Client.PatchGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, _ = th.Client.PatchGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) assert.Equal(t, http.StatusForbidden, response.StatusCode) _, appErr = th.App.PatchRole(role, &model.RolePatch{Permissions: &originalPermissions}) @@ -902,14 +902,14 @@ func TestPatchGroupChannel(t *testing.T) { th.App.Srv().SetLicense(nil) - _, response, err := th.SystemAdminClient.PatchGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, err := th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) patch.AutoAdd = model.NewBool(false) - groupSyncable, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + groupSyncable, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.NoError(t, err) CheckOKStatus(t, response) assert.False(t, groupSyncable.AutoAdd) @@ -920,28 +920,28 @@ func TestPatchGroupChannel(t *testing.T) { assert.Equal(t, model.GroupSyncableTypeChannel, groupSyncable.Type) patch.AutoAdd = model.NewBool(true) - _, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.NoError(t, err) CheckOKStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroupSyncable(model.NewId(), th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), model.NewId(), th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, model.NewId(), model.GroupSyncableTypeChannel, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, model.NewId(), model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckNotFoundStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroupSyncable("abc", th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), "abc", th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckBadRequestStatus(t, response) - _, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, "abc", model.GroupSyncableTypeChannel, patch) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, "abc", model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckBadRequestStatus(t, response) - th.SystemAdminClient.Logout() - _, response, err = th.SystemAdminClient.PatchGroupSyncable(g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) + th.SystemAdminClient.Logout(context.Background()) + _, response, err = th.SystemAdminClient.PatchGroupSyncable(context.Background(), g.Id, th.BasicChannel.Id, model.GroupSyncableTypeChannel, patch) require.Error(t, err) CheckUnauthorizedStatus(t, response) } @@ -978,7 +978,7 @@ func TestGetGroupsByChannel(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, response, err := client.GetGroupsByChannel("asdfasdf", opts) + _, _, response, err := client.GetGroupsByChannel(context.Background(), "asdfasdf", opts) require.Error(t, err) CheckBadRequestStatus(t, response) }) @@ -986,7 +986,7 @@ func TestGetGroupsByChannel(t *testing.T) { th.App.Srv().SetLicense(nil) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, response, err := client.GetGroupsByChannel(th.BasicChannel.Id, opts) + _, _, response, err := client.GetGroupsByChannel(context.Background(), th.BasicChannel.Id, opts) require.Error(t, err) if client == th.SystemAdminClient { CheckNotImplementedStatus(t, response) @@ -999,13 +999,13 @@ func TestGetGroupsByChannel(t *testing.T) { privateChannel := th.CreateChannelWithClient(th.SystemAdminClient, model.ChannelTypePrivate) - _, _, response, err := th.Client.GetGroupsByChannel(privateChannel.Id, opts) + _, _, response, err := th.Client.GetGroupsByChannel(context.Background(), privateChannel.Id, opts) require.Error(t, err) CheckForbiddenStatus(t, response) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { var groups []*model.GroupWithSchemeAdmin - groups, _, _, err = client.GetGroupsByChannel(th.BasicChannel.Id, opts) + groups, _, _, err = client.GetGroupsByChannel(context.Background(), th.BasicChannel.Id, opts) assert.NoError(t, err) assert.ElementsMatch(t, []*model.GroupWithSchemeAdmin{{Group: *group, SchemeAdmin: model.NewBool(false)}}, groups) require.NotNil(t, groups[0].SchemeAdmin) @@ -1018,14 +1018,14 @@ func TestGetGroupsByChannel(t *testing.T) { require.Nil(t, appErr) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - groups, _, _, err := client.GetGroupsByChannel(th.BasicChannel.Id, opts) + groups, _, _, err := client.GetGroupsByChannel(context.Background(), th.BasicChannel.Id, opts) assert.NoError(t, err) // ensure that SchemeAdmin field is updated assert.ElementsMatch(t, []*model.GroupWithSchemeAdmin{{Group: *group, SchemeAdmin: model.NewBool(true)}}, groups) require.NotNil(t, groups[0].SchemeAdmin) require.True(t, *groups[0].SchemeAdmin) - groups, _, _, err = client.GetGroupsByChannel(model.NewId(), opts) + groups, _, _, err = client.GetGroupsByChannel(context.Background(), model.NewId(), opts) CheckErrorID(t, err, "app.channel.get.existing.app_error") assert.Empty(t, groups) }) @@ -1062,19 +1062,19 @@ func TestGetGroupsAssociatedToChannelsByTeam(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, response, err := th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam("asdfasdf", opts) + _, response, err := th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(context.Background(), "asdfasdf", opts) require.Error(t, err) CheckBadRequestStatus(t, response) th.App.Srv().SetLicense(nil) - _, response, err = th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(th.BasicTeam.Id, opts) + _, response, err = th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(context.Background(), th.BasicTeam.Id, opts) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - groups, _, err := th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(th.BasicTeam.Id, opts) + groups, _, err := th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(context.Background(), th.BasicTeam.Id, opts) assert.NoError(t, err) assert.Equal(t, map[string][]*model.GroupWithSchemeAdmin{ @@ -1092,7 +1092,7 @@ func TestGetGroupsAssociatedToChannelsByTeam(t *testing.T) { require.Nil(t, appErr) // ensure that SchemeAdmin field is updated - groups, _, err = th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(th.BasicTeam.Id, opts) + groups, _, err = th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(context.Background(), th.BasicTeam.Id, opts) assert.NoError(t, err) assert.Equal(t, map[string][]*model.GroupWithSchemeAdmin{ @@ -1104,7 +1104,7 @@ func TestGetGroupsAssociatedToChannelsByTeam(t *testing.T) { require.NotNil(t, groups[th.BasicChannel.Id][0].SchemeAdmin) require.True(t, *groups[th.BasicChannel.Id][0].SchemeAdmin) - groups, _, err = th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(model.NewId(), opts) + groups, _, err = th.SystemAdminClient.GetGroupsAssociatedToChannelsByTeam(context.Background(), model.NewId(), opts) assert.NoError(t, err) assert.Empty(t, groups) } @@ -1141,7 +1141,7 @@ func TestGetGroupsByTeam(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, response, err := client.GetGroupsByTeam("asdfasdf", opts) + _, _, response, err := client.GetGroupsByTeam(context.Background(), "asdfasdf", opts) require.Error(t, err) CheckBadRequestStatus(t, response) }) @@ -1149,7 +1149,7 @@ func TestGetGroupsByTeam(t *testing.T) { th.App.Srv().RemoveLicense() th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, response, err := client.GetGroupsByTeam(th.BasicTeam.Id, opts) + _, _, response, err := client.GetGroupsByTeam(context.Background(), th.BasicTeam.Id, opts) require.Error(t, err) if client == th.SystemAdminClient { CheckNotImplementedStatus(t, response) @@ -1161,7 +1161,7 @@ func TestGetGroupsByTeam(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - groups, _, _, err := client.GetGroupsByTeam(th.BasicTeam.Id, opts) + groups, _, _, err := client.GetGroupsByTeam(context.Background(), th.BasicTeam.Id, opts) assert.NoError(t, err) assert.ElementsMatch(t, []*model.GroupWithSchemeAdmin{{Group: *group, SchemeAdmin: model.NewBool(false)}}, groups) require.NotNil(t, groups[0].SchemeAdmin) @@ -1174,14 +1174,14 @@ func TestGetGroupsByTeam(t *testing.T) { require.Nil(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - groups, _, _, err := client.GetGroupsByTeam(th.BasicTeam.Id, opts) + groups, _, _, err := client.GetGroupsByTeam(context.Background(), th.BasicTeam.Id, opts) assert.NoError(t, err) // ensure that SchemeAdmin field is updated assert.ElementsMatch(t, []*model.GroupWithSchemeAdmin{{Group: *group, SchemeAdmin: model.NewBool(true)}}, groups) require.NotNil(t, groups[0].SchemeAdmin) require.True(t, *groups[0].SchemeAdmin) - groups, _, _, err = client.GetGroupsByTeam(model.NewId(), opts) + groups, _, _, err = client.GetGroupsByTeam(context.Background(), model.NewId(), opts) assert.NoError(t, err) assert.Empty(t, groups) }) @@ -1224,46 +1224,46 @@ func TestGetGroups(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) - _, _, err := th.SystemAdminClient.GetGroups(opts) + _, _, err := th.SystemAdminClient.GetGroups(context.Background(), opts) require.NoError(t, err) - _, err = th.SystemAdminClient.UpdateChannelRoles(th.BasicChannel.Id, th.BasicUser.Id, "") + _, err = th.SystemAdminClient.UpdateChannelRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "") require.NoError(t, err) opts.NotAssociatedToChannel = th.BasicChannel.Id - _, err = th.SystemAdminClient.UpdateChannelRoles(th.BasicChannel.Id, th.BasicUser.Id, "channel_user channel_admin") + _, err = th.SystemAdminClient.UpdateChannelRoles(context.Background(), th.BasicChannel.Id, th.BasicUser.Id, "channel_user channel_admin") require.NoError(t, err) - groups, _, err := th.SystemAdminClient.GetGroups(opts) + groups, _, err := th.SystemAdminClient.GetGroups(context.Background(), opts) assert.NoError(t, err) assert.ElementsMatch(t, []*model.Group{group, th.Group}, groups) assert.Nil(t, groups[0].MemberCount) opts.IncludeMemberCount = true - groups, _, _ = th.SystemAdminClient.GetGroups(opts) + groups, _, _ = th.SystemAdminClient.GetGroups(context.Background(), opts) assert.NotNil(t, groups[0].MemberCount) opts.IncludeMemberCount = false opts.Q = "-fOo" - groups, _, _ = th.SystemAdminClient.GetGroups(opts) + groups, _, _ = th.SystemAdminClient.GetGroups(context.Background(), opts) assert.Len(t, groups, 1) opts.Q = "" - _, err = th.SystemAdminClient.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser.Id, "") + _, err = th.SystemAdminClient.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "") require.NoError(t, err) opts.NotAssociatedToTeam = th.BasicTeam.Id - _, err = th.SystemAdminClient.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser.Id, "team_user team_admin") + _, err = th.SystemAdminClient.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "team_user team_admin") require.NoError(t, err) - _, _, err = th.Client.GetGroups(opts) + _, _, err = th.Client.GetGroups(context.Background(), opts) assert.NoError(t, err) // test "since", should only return group created in this test, not th.Group opts.Since = start - groups, _, err = th.Client.GetGroups(opts) + groups, _, err = th.Client.GetGroups(context.Background(), opts) assert.NoError(t, err) assert.Len(t, groups, 1) // test correct group returned @@ -1271,20 +1271,20 @@ func TestGetGroups(t *testing.T) { // delete group, should still return th.App.DeleteGroup(group.Id) - groups, _, err = th.Client.GetGroups(opts) + groups, _, err = th.Client.GetGroups(context.Background(), opts) assert.NoError(t, err) assert.Len(t, groups, 1) assert.Equal(t, groups[0].Id, group.Id) // test with current since value, return none opts.Since = model.GetMillis() - groups, _, err = th.Client.GetGroups(opts) + groups, _, err = th.Client.GetGroups(context.Background(), opts) assert.NoError(t, err) assert.Empty(t, groups) // make sure delete group is not returned without Since opts.Since = 0 - groups, _, err = th.Client.GetGroups(opts) + groups, _, err = th.Client.GetGroups(context.Background(), opts) assert.NoError(t, err) //'Normal getGroups should not return delete groups assert.Len(t, groups, 1) @@ -1292,7 +1292,7 @@ func TestGetGroups(t *testing.T) { assert.Equal(t, groups[0].Id, th.Group.Id) opts.Source = model.GroupSourceCustom - groups, _, err = th.Client.GetGroups(opts) + groups, _, err = th.Client.GetGroups(context.Background(), opts) assert.NoError(t, err) assert.Len(t, groups, 1) assert.Equal(t, groups[0].Id, group2.Id) @@ -1303,14 +1303,14 @@ func TestGetGroups(t *testing.T) { opts.Q = "-fOo" opts.IncludeMemberCount = true - groups, _, _ = th.SystemAdminClient.GetGroups(opts) + groups, _, _ = th.SystemAdminClient.GetGroups(context.Background(), opts) assert.Equal(t, *groups[0].MemberCount, int(0)) assert.Equal(t, *groups[0].ChannelMemberCount, int(0)) _, appErr = th.App.UpsertGroupMember(group2.Id, th.BasicUser.Id) assert.Nil(t, appErr) - groups, _, _ = th.SystemAdminClient.GetGroups(opts) + groups, _, _ = th.SystemAdminClient.GetGroups(context.Background(), opts) assert.NotNil(t, groups[0].MemberCount) assert.Equal(t, *groups[0].ChannelMemberCount, int(1)) @@ -1325,20 +1325,20 @@ func TestGetGroups(t *testing.T) { // Specify custom groups source when feature is disabled opts.Source = model.GroupSourceCustom - _, response, err := th.Client.GetGroups(opts) + _, response, err := th.Client.GetGroups(context.Background(), opts) require.Error(t, err) CheckBadRequestStatus(t, response) // Specify ldap groups source when custom groups feature is disabled opts.Source = model.GroupSourceLdap - groups, _, err = th.Client.GetGroups(opts) + groups, _, err = th.Client.GetGroups(context.Background(), opts) assert.NoError(t, err) assert.Len(t, groups, 1) assert.Equal(t, groups[0].Source, model.GroupSourceLdap) // don't include source and should only get ldap groups in response opts.Source = "" - groups, _, err = th.Client.GetGroups(opts) + groups, _, err = th.Client.GetGroups(context.Background(), opts) assert.NoError(t, err) assert.Len(t, groups, 1) assert.Equal(t, groups[0].Source, model.GroupSourceLdap) @@ -1378,33 +1378,33 @@ func TestGetGroupsByUserId(t *testing.T) { assert.Nil(t, appErr) th.App.Srv().SetLicense(nil) - _, response, err := th.SystemAdminClient.GetGroupsByUserId(user1.Id) + _, response, err := th.SystemAdminClient.GetGroupsByUserId(context.Background(), user1.Id) require.Error(t, err) CheckNotImplementedStatus(t, response) th.App.Srv().SetLicense(model.NewTestLicense("ldap")) - _, response, err = th.SystemAdminClient.GetGroupsByUserId("") + _, response, err = th.SystemAdminClient.GetGroupsByUserId(context.Background(), "") require.Error(t, err) CheckBadRequestStatus(t, response) - _, response, err = th.SystemAdminClient.GetGroupsByUserId("notvaliduserid") + _, response, err = th.SystemAdminClient.GetGroupsByUserId(context.Background(), "notvaliduserid") require.Error(t, err) CheckBadRequestStatus(t, response) - groups, _, err := th.SystemAdminClient.GetGroupsByUserId(user1.Id) + groups, _, err := th.SystemAdminClient.GetGroupsByUserId(context.Background(), user1.Id) require.NoError(t, err) assert.ElementsMatch(t, []*model.Group{group1, group2}, groups) // test permissions - th.Client.Logout() - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) - _, response, err = th.Client.GetGroupsByUserId(user1.Id) + th.Client.Logout(context.Background()) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) + _, response, err = th.Client.GetGroupsByUserId(context.Background(), user1.Id) require.Error(t, err) CheckForbiddenStatus(t, response) - th.Client.Logout() - th.Client.Login(user1.Email, user1.Password) - groups, _, err = th.Client.GetGroupsByUserId(user1.Id) + th.Client.Logout(context.Background()) + th.Client.Login(context.Background(), user1.Email, user1.Password) + groups, _, err = th.Client.GetGroupsByUserId(context.Background(), user1.Id) require.NoError(t, err) assert.ElementsMatch(t, []*model.Group{group1, group2}, groups) @@ -1425,7 +1425,7 @@ func TestGetGroupStats(t *testing.T) { assert.Nil(t, appErr) t.Run("Requires ldap license", func(t *testing.T) { - _, response, err := th.SystemAdminClient.GetGroupStats(group.Id) + _, response, err := th.SystemAdminClient.GetGroupStats(context.Background(), group.Id) require.Error(t, err) CheckNotImplementedStatus(t, response) }) @@ -1433,14 +1433,14 @@ func TestGetGroupStats(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) t.Run("Requires manage system permission to access group stats", func(t *testing.T) { - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) - _, response, err := th.Client.GetGroupStats(group.Id) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) + _, response, err := th.Client.GetGroupStats(context.Background(), group.Id) require.Error(t, err) CheckForbiddenStatus(t, response) }) t.Run("Returns stats for a group with no members", func(t *testing.T) { - stats, _, err := th.SystemAdminClient.GetGroupStats(group.Id) + stats, _, err := th.SystemAdminClient.GetGroupStats(context.Background(), group.Id) require.NoError(t, err) assert.Equal(t, stats.GroupID, group.Id) assert.Equal(t, stats.TotalMemberCount, int64(0)) @@ -1452,7 +1452,7 @@ func TestGetGroupStats(t *testing.T) { assert.Nil(t, appErr) t.Run("Returns stats for a group with members", func(t *testing.T) { - stats, _, _ := th.SystemAdminClient.GetGroupStats(group.Id) + stats, _, _ := th.SystemAdminClient.GetGroupStats(context.Background(), group.Id) assert.Equal(t, stats.GroupID, group.Id) assert.Equal(t, stats.TotalMemberCount, int64(1)) }) @@ -1492,7 +1492,7 @@ func TestGetGroupsGroupConstrainedParentTeam(t *testing.T) { require.Nil(t, appErr) // normal result of groups are returned if the team is not group-constrained - apiGroups, _, err := th.SystemAdminClient.GetGroups(model.GroupSearchOpts{NotAssociatedToChannel: channel.Id}) + apiGroups, _, err := th.SystemAdminClient.GetGroups(context.Background(), model.GroupSearchOpts{NotAssociatedToChannel: channel.Id}) require.NoError(t, err) require.Contains(t, apiGroups, groups[0]) require.Contains(t, apiGroups, groups[1]) @@ -1503,7 +1503,7 @@ func TestGetGroupsGroupConstrainedParentTeam(t *testing.T) { require.Nil(t, appErr) // team is group-constrained but has no associated groups - apiGroups, _, err = th.SystemAdminClient.GetGroups(model.GroupSearchOpts{NotAssociatedToChannel: channel.Id, FilterParentTeamPermitted: true}) + apiGroups, _, err = th.SystemAdminClient.GetGroups(context.Background(), model.GroupSearchOpts{NotAssociatedToChannel: channel.Id, FilterParentTeamPermitted: true}) require.NoError(t, err) require.Len(t, apiGroups, 0) @@ -1513,20 +1513,20 @@ func TestGetGroupsGroupConstrainedParentTeam(t *testing.T) { } // set of the teams groups are returned - apiGroups, _, err = th.SystemAdminClient.GetGroups(model.GroupSearchOpts{NotAssociatedToChannel: channel.Id, FilterParentTeamPermitted: true}) + apiGroups, _, err = th.SystemAdminClient.GetGroups(context.Background(), model.GroupSearchOpts{NotAssociatedToChannel: channel.Id, FilterParentTeamPermitted: true}) require.NoError(t, err) require.Contains(t, apiGroups, groups[0]) require.NotContains(t, apiGroups, groups[1]) require.Contains(t, apiGroups, groups[2]) // paged results function as expected - apiGroups, _, err = th.SystemAdminClient.GetGroups(model.GroupSearchOpts{NotAssociatedToChannel: channel.Id, FilterParentTeamPermitted: true, PageOpts: &model.PageOpts{PerPage: 2, Page: 0}}) + apiGroups, _, err = th.SystemAdminClient.GetGroups(context.Background(), model.GroupSearchOpts{NotAssociatedToChannel: channel.Id, FilterParentTeamPermitted: true, PageOpts: &model.PageOpts{PerPage: 2, Page: 0}}) require.NoError(t, err) require.Len(t, apiGroups, 2) require.Equal(t, apiGroups[0].Id, groups[0].Id) require.Equal(t, apiGroups[1].Id, groups[2].Id) - apiGroups, _, err = th.SystemAdminClient.GetGroups(model.GroupSearchOpts{NotAssociatedToChannel: channel.Id, FilterParentTeamPermitted: true, PageOpts: &model.PageOpts{PerPage: 2, Page: 1}}) + apiGroups, _, err = th.SystemAdminClient.GetGroups(context.Background(), model.GroupSearchOpts{NotAssociatedToChannel: channel.Id, FilterParentTeamPermitted: true, PageOpts: &model.PageOpts{PerPage: 2, Page: 1}}) require.NoError(t, err) require.Len(t, apiGroups, 1) require.Equal(t, apiGroups[0].Id, groups[3].Id) @@ -1535,7 +1535,7 @@ func TestGetGroupsGroupConstrainedParentTeam(t *testing.T) { require.Nil(t, appErr) // as usual it doesn't return groups already associated to the channel - apiGroups, _, err = th.SystemAdminClient.GetGroups(model.GroupSearchOpts{NotAssociatedToChannel: channel.Id}) + apiGroups, _, err = th.SystemAdminClient.GetGroups(context.Background(), model.GroupSearchOpts{NotAssociatedToChannel: channel.Id}) require.NoError(t, err) require.NotContains(t, apiGroups, groups[0]) require.Contains(t, apiGroups, groups[2]) @@ -1567,7 +1567,7 @@ func TestAddMembersToGroup(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) - groupMembers, response, upsertErr := th.SystemAdminClient.UpsertGroupMembers(group.Id, members) + groupMembers, response, upsertErr := th.SystemAdminClient.UpsertGroupMembers(context.Background(), group.Id, members) require.NoError(t, upsertErr) CheckOKStatus(t, response) @@ -1579,7 +1579,7 @@ func TestAddMembersToGroup(t *testing.T) { assert.Equal(t, count, int64(2)) // 2. Test invalid group ID - _, response, upsertErr = th.Client.UpsertGroupMembers("abc123", members) + _, response, upsertErr = th.Client.UpsertGroupMembers(context.Background(), "abc123", members) require.Error(t, upsertErr) CheckBadRequestStatus(t, response) @@ -1588,7 +1588,7 @@ func TestAddMembersToGroup(t *testing.T) { UserIds: []string{"abc123"}, } - _, response, upsertErr = th.SystemAdminClient.UpsertGroupMembers(group.Id, invalidMembers) + _, response, upsertErr = th.SystemAdminClient.UpsertGroupMembers(context.Background(), group.Id, invalidMembers) require.Error(t, upsertErr) CheckInternalErrorStatus(t, response) @@ -1603,7 +1603,7 @@ func TestAddMembersToGroup(t *testing.T) { }) assert.Nil(t, err) - _, response, upsertErr = th.SystemAdminClient.UpsertGroupMembers(ldapGroup.Id, members) + _, response, upsertErr = th.SystemAdminClient.UpsertGroupMembers(context.Background(), ldapGroup.Id, members) require.Error(t, upsertErr) CheckBadRequestStatus(t, response) @@ -1639,7 +1639,7 @@ func TestDeleteMembersFromGroup(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) - groupMembers, response, deleteErr := th.SystemAdminClient.DeleteGroupMembers(group.Id, members) + groupMembers, response, deleteErr := th.SystemAdminClient.DeleteGroupMembers(context.Background(), group.Id, members) require.NoError(t, deleteErr) CheckOKStatus(t, response) @@ -1653,7 +1653,7 @@ func TestDeleteMembersFromGroup(t *testing.T) { assert.Equal(t, users[0].Id, user2.Id) // 2. Test invalid group ID - _, response, deleteErr = th.Client.DeleteGroupMembers("abc123", members) + _, response, deleteErr = th.Client.DeleteGroupMembers(context.Background(), "abc123", members) require.Error(t, deleteErr) CheckBadRequestStatus(t, response) @@ -1662,7 +1662,7 @@ func TestDeleteMembersFromGroup(t *testing.T) { UserIds: []string{"abc123"}, } - _, response, deleteErr = th.SystemAdminClient.DeleteGroupMembers(group.Id, invalidMembers) + _, response, deleteErr = th.SystemAdminClient.DeleteGroupMembers(context.Background(), group.Id, invalidMembers) require.Error(t, deleteErr) CheckInternalErrorStatus(t, response) @@ -1681,7 +1681,7 @@ func TestDeleteMembersFromGroup(t *testing.T) { }) assert.Nil(t, err) - _, response, deleteErr = th.SystemAdminClient.DeleteGroupMembers(ldapGroup.Id, members) + _, response, deleteErr = th.SystemAdminClient.DeleteGroupMembers(context.Background(), ldapGroup.Id, members) require.Error(t, deleteErr) CheckBadRequestStatus(t, response) diff --git a/server/channels/api4/hosted_customer_test.go b/server/channels/api4/hosted_customer_test.go index 65a4e4b1c3..7a5ed9d3aa 100644 --- a/server/channels/api4/hosted_customer_test.go +++ b/server/channels/api4/hosted_customer_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "net/http" "os" "testing" @@ -30,14 +31,14 @@ func TestSelfHostedBootstrap(t *testing.T) { }() th.App.Srv().Cloud = &cloud - th.Client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) os.Setenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE", "false") defer os.Unsetenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE") th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.SelfHostedPurchase = &valFalse }) th.App.ReloadConfig() - _, r, err := th.Client.BootstrapSelfHostedSignup(model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) + _, r, err := th.Client.BootstrapSelfHostedSignup(context.Background(), model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) require.Equal(t, http.StatusNotImplemented, r.StatusCode) require.Error(t, err) @@ -54,7 +55,7 @@ func TestSelfHostedBootstrap(t *testing.T) { }() th.App.Srv().Cloud = &cloud - th.Client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) th.App.Srv().SetLicense(model.NewTestLicense("cloud")) os.Setenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE", "true") @@ -62,7 +63,7 @@ func TestSelfHostedBootstrap(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.SelfHostedPurchase = &valTrue }) th.App.ReloadConfig() - _, r, err := th.Client.BootstrapSelfHostedSignup(model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) + _, r, err := th.Client.BootstrapSelfHostedSignup(context.Background(), model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) require.Equal(t, http.StatusBadRequest, r.StatusCode) require.Error(t, err) @@ -79,14 +80,14 @@ func TestSelfHostedBootstrap(t *testing.T) { }() th.App.Srv().Cloud = &cloud - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) os.Setenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE", "true") defer os.Unsetenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE") th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.SelfHostedPurchase = &valTrue }) th.App.ReloadConfig() - _, r, err := th.Client.BootstrapSelfHostedSignup(model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) + _, r, err := th.Client.BootstrapSelfHostedSignup(context.Background(), model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) require.Equal(t, http.StatusForbidden, r.StatusCode) require.Error(t, err) @@ -96,7 +97,7 @@ func TestSelfHostedBootstrap(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) os.Setenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE", "true") defer os.Unsetenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE") @@ -112,7 +113,7 @@ func TestSelfHostedBootstrap(t *testing.T) { }() th.App.Srv().Cloud = &cloud - response, r, err := th.Client.BootstrapSelfHostedSignup(model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) + response, r, err := th.Client.BootstrapSelfHostedSignup(context.Background(), model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) require.Equal(t, http.StatusOK, r.StatusCode) require.NoError(t, err) @@ -129,14 +130,14 @@ func TestSelfHostedBootstrap(t *testing.T) { }() th.App.Srv().Cloud = nil - th.Client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) os.Setenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE", "true") defer os.Unsetenv("MM_SERVICESETTINGS_SELFHOSTEDFIRSTTIMEPURCHASE") th.App.UpdateConfig(func(cfg *model.Config) { cfg.ServiceSettings.SelfHostedPurchase = &valTrue }) th.App.ReloadConfig() - _, r, err := th.Client.BootstrapSelfHostedSignup(model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) + _, r, err := th.Client.BootstrapSelfHostedSignup(context.Background(), model.BootstrapSelfHostedSignupRequest{Email: th.SystemAdminUser.Email}) require.Equal(t, http.StatusBadRequest, r.StatusCode) require.Error(t, err) diff --git a/server/channels/api4/import_test.go b/server/channels/api4/import_test.go index a89fd2b0f3..4b9403ea5a 100644 --- a/server/channels/api4/import_test.go +++ b/server/channels/api4/import_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "os" "path/filepath" "testing" @@ -38,11 +39,11 @@ func TestListImports(t *testing.T) { us.UserId = model.UploadNoUserID } - u, _, err := c.CreateUpload(us) + u, _, err := c.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotNil(t, u) - finfo, _, err := c.UploadData(u.Id, file) + finfo, _, err := c.UploadData(context.Background(), u.Id, file) require.NoError(t, err) require.NotNil(t, finfo) @@ -50,7 +51,7 @@ func TestListImports(t *testing.T) { } t.Run("no permissions", func(t *testing.T) { - imports, _, err := th.Client.ListImports() + imports, _, err := th.Client.ListImports(context.Background()) require.Error(t, err) CheckErrorID(t, err, "api.context.permissions.app_error") require.Nil(t, imports) @@ -60,7 +61,7 @@ func TestListImports(t *testing.T) { require.True(t, found) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - imports, _, err := c.ListImports() + imports, _, err := c.ListImports(context.Background()) require.NoError(t, err) require.Empty(t, imports) }, "no imports") @@ -74,7 +75,7 @@ func TestListImports(t *testing.T) { require.NoError(t, err) f.Close() - imports, _, err := c.ListImports() + imports, _, err := c.ListImports(context.Background()) require.NoError(t, err) require.NotEmpty(t, imports) require.Len(t, imports, 2) @@ -90,12 +91,12 @@ func TestListImports(t *testing.T) { importDir := filepath.Join(dataDir, "import_new") - imports, _, err := c.ListImports() + imports, _, err := c.ListImports(context.Background()) require.NoError(t, err) require.Empty(t, imports) id := uploadNewImport(c, t) - imports, _, err = c.ListImports() + imports, _, err = c.ListImports(context.Background()) require.NoError(t, err) require.NotEmpty(t, imports) require.Len(t, imports, 1) diff --git a/server/channels/api4/insights_test.go b/server/channels/api4/insights_test.go index 5dbd067bdc..fa5f1bef9e 100644 --- a/server/channels/api4/insights_test.go +++ b/server/channels/api4/insights_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "time" @@ -34,11 +35,11 @@ func TestGetTopReactionsForTeamSince(t *testing.T) { post4 := &model.Post{UserId: user2Id, ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a"} post5 := &model.Post{UserId: user2Id, ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a"} - post1, _, _ = client.CreatePost(post1) - post2, _, _ = client.CreatePost(post2) - post3, _, _ = client.CreatePost(post3) - post4, _, _ = client.CreatePost(post4) - post5, _, _ = client.CreatePost(post5) + post1, _, _ = client.CreatePost(context.Background(), post1) + post2, _, _ = client.CreatePost(context.Background(), post2) + post3, _, _ = client.CreatePost(context.Background(), post3) + post4, _, _ = client.CreatePost(context.Background(), post4) + post5, _, _ = client.CreatePost(context.Background(), post5) userReactions := []*model.Reaction{ { @@ -169,7 +170,7 @@ func TestGetTopReactionsForTeamSince(t *testing.T) { expectedTopReactions[4] = &model.TopReaction{EmojiName: "happy", Count: int64(2)} t.Run("get-top-reactions-for-team-since", func(t *testing.T) { - topReactions, _, err := client.GetTopReactionsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + topReactions, _, err := client.GetTopReactionsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) require.NoError(t, err) reactions := topReactions.Items @@ -178,7 +179,7 @@ func TestGetTopReactionsForTeamSince(t *testing.T) { assert.Equal(t, expectedTopReactions[i].Count, reaction.Count) } - topReactions, _, err = client.GetTopReactionsForTeamSince(teamId, model.TimeRangeToday, 1, 5) + topReactions, _, err = client.GetTopReactionsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 1, 5) require.NoError(t, err) reactions = topReactions.Items @@ -190,7 +191,7 @@ func TestGetTopReactionsForTeamSince(t *testing.T) { excludedChannel := th.CreatePrivateChannel() for i := 0; i < 10; i++ { - post, _, err := client.CreatePost(&model.Post{UserId: userId, ChannelId: excludedChannel.Id, Message: "zz" + model.NewId() + "a"}) + post, _, err := client.CreatePost(context.Background(), &model.Post{UserId: userId, ChannelId: excludedChannel.Id, Message: "zz" + model.NewId() + "a"}) require.NoError(t, err) reaction := &model.Reaction{ @@ -205,7 +206,7 @@ func TestGetTopReactionsForTeamSince(t *testing.T) { th.RemoveUserFromChannel(th.BasicUser, excludedChannel) - topReactions, _, err := client.GetTopReactionsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + topReactions, _, err := client.GetTopReactionsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) require.NoError(t, err) reactions := topReactions.Items @@ -214,7 +215,7 @@ func TestGetTopReactionsForTeamSince(t *testing.T) { assert.Equal(t, expectedTopReactions[i].Count, reaction.Count) } - topReactions, _, err = client.GetTopReactionsForTeamSince(teamId, model.TimeRangeToday, 1, 5) + topReactions, _, err = client.GetTopReactionsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 1, 5) require.NoError(t, err) reactions = topReactions.Items @@ -223,24 +224,24 @@ func TestGetTopReactionsForTeamSince(t *testing.T) { }) t.Run("get-top-reactions-for-team-since invalid team id", func(t *testing.T) { - _, resp, err := client.GetTopReactionsForTeamSince("12345", model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopReactionsForTeamSince(context.Background(), "12345", model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTopReactionsForTeamSince(model.NewId(), model.TimeRangeToday, 0, 5) + _, resp, err = client.GetTopReactionsForTeamSince(context.Background(), model.NewId(), model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckNotFoundStatus(t, resp) }) t.Run("get-top-reactions-for-team-since invalid time range", func(t *testing.T) { - _, resp, err := client.GetTopReactionsForTeamSince(teamId, "7_days", 0, 5) + _, resp, err := client.GetTopReactionsForTeamSince(context.Background(), teamId, "7_days", 0, 5) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("get-top-reactions-for-team-since not a member of team", func(t *testing.T) { th.UnlinkUserFromTeam(th.BasicUser, th.BasicTeam) - _, resp, err := client.GetTopReactionsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopReactionsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -248,7 +249,7 @@ func TestGetTopReactionsForTeamSince(t *testing.T) { t.Run("get-top-reactions-for-team-since invalid license", func(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("")) - _, resp, err := client.GetTopReactionsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopReactionsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -269,12 +270,12 @@ func TestGetTopReactionsForUserSince(t *testing.T) { post5 := &model.Post{UserId: userId, ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a"} post6 := &model.Post{UserId: userId, ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a"} - post1, _, _ = client.CreatePost(post1) - post2, _, _ = client.CreatePost(post2) - post3, _, _ = client.CreatePost(post3) - post4, _, _ = client.CreatePost(post4) - post5, _, _ = client.CreatePost(post5) - post6, _, _ = client.CreatePost(post6) + post1, _, _ = client.CreatePost(context.Background(), post1) + post2, _, _ = client.CreatePost(context.Background(), post2) + post3, _, _ = client.CreatePost(context.Background(), post3) + post4, _, _ = client.CreatePost(context.Background(), post4) + post5, _, _ = client.CreatePost(context.Background(), post5) + post6, _, _ = client.CreatePost(context.Background(), post6) userReactions := []*model.Reaction{ { @@ -405,7 +406,7 @@ func TestGetTopReactionsForUserSince(t *testing.T) { expectedTopReactions[4] = &model.TopReaction{EmojiName: "blush", Count: int64(2)} t.Run("get-top-reactions-for-user-since", func(t *testing.T) { - topReactions, _, err := client.GetTopReactionsForUserSince(teamId, model.TimeRangeToday, 0, 5) + topReactions, _, err := client.GetTopReactionsForUserSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) require.NoError(t, err) reactions := topReactions.Items @@ -414,7 +415,7 @@ func TestGetTopReactionsForUserSince(t *testing.T) { assert.Equal(t, expectedTopReactions[i].Count, reaction.Count) } - topReactions, _, err = client.GetTopReactionsForUserSince(teamId, model.TimeRangeToday, 1, 5) + topReactions, _, err = client.GetTopReactionsForUserSince(context.Background(), teamId, model.TimeRangeToday, 1, 5) require.NoError(t, err) reactions = topReactions.Items assert.Equal(t, "100", reactions[0].EmojiName) @@ -422,24 +423,24 @@ func TestGetTopReactionsForUserSince(t *testing.T) { }) t.Run("get-top-reactions-for-user-since invalid team id", func(t *testing.T) { - _, resp, err := client.GetTopReactionsForUserSince("invalid_team_id", model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopReactionsForUserSince(context.Background(), "invalid_team_id", model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTopReactionsForUserSince(model.NewId(), model.TimeRangeToday, 0, 5) + _, resp, err = client.GetTopReactionsForUserSince(context.Background(), model.NewId(), model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckNotFoundStatus(t, resp) }) t.Run("get-top-reactions-for-user-since invalid time range", func(t *testing.T) { - _, resp, err := client.GetTopReactionsForUserSince(teamId, "7_days", 0, 5) + _, resp, err := client.GetTopReactionsForUserSince(context.Background(), teamId, "7_days", 0, 5) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("get-top-reactions-for-user-since not a member of team", func(t *testing.T) { th.UnlinkUserFromTeam(th.BasicUser, th.BasicTeam) - _, resp, err := client.GetTopReactionsForUserSince(teamId, model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopReactionsForUserSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -468,7 +469,7 @@ func TestGetTopChannelsForTeamSince(t *testing.T) { i := len(channelIDs) for _, channelID := range channelIDs { for j := i; j > 0; j-- { - _, _, err := client.CreatePost(&model.Post{UserId: userId, ChannelId: channelID, Message: "zz" + model.NewId() + "a"}) + _, _, err := client.CreatePost(context.Background(), &model.Post{UserId: userId, ChannelId: channelID, Message: "zz" + model.NewId() + "a"}) require.NoError(t, err) } i-- @@ -488,7 +489,7 @@ func TestGetTopChannelsForTeamSince(t *testing.T) { } t.Run("get-top-channels-for-team-since", func(t *testing.T) { - topChannels, _, err := client.GetTopChannelsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + topChannels, _, err := client.GetTopChannelsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) require.NoError(t, err) for i, channel := range topChannels.Items { @@ -496,7 +497,7 @@ func TestGetTopChannelsForTeamSince(t *testing.T) { assert.Equal(t, expectedTopChannels[i].MessageCount, channel.MessageCount) } - topChannels, _, err = client.GetTopChannelsForTeamSince(teamId, model.TimeRangeToday, 1, 5) + topChannels, _, err = client.GetTopChannelsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 1, 5) require.NoError(t, err) assert.Equal(t, channel6.Id, topChannels.Items[0].ID) assert.Equal(t, int64(1), topChannels.Items[0].MessageCount) @@ -510,13 +511,13 @@ func TestGetTopChannelsForTeamSince(t *testing.T) { excludedChannel := th.CreatePrivateChannel() for i := 0; i < 10; i++ { - _, _, err := client.CreatePost(&model.Post{UserId: userId, ChannelId: excludedChannel.Id, Message: "zz" + model.NewId() + "a"}) + _, _, err := client.CreatePost(context.Background(), &model.Post{UserId: userId, ChannelId: excludedChannel.Id, Message: "zz" + model.NewId() + "a"}) require.NoError(t, err) } th.RemoveUserFromChannel(th.BasicUser, excludedChannel) - topChannels, _, err := client.GetTopChannelsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + topChannels, _, err := client.GetTopChannelsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) require.NoError(t, err) for i, channel := range topChannels.Items { @@ -526,24 +527,24 @@ func TestGetTopChannelsForTeamSince(t *testing.T) { }) t.Run("get-top-channels-for-team-since invalid team id", func(t *testing.T) { - _, resp, err := client.GetTopChannelsForTeamSince("12345", model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopChannelsForTeamSince(context.Background(), "12345", model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTopChannelsForTeamSince(model.NewId(), model.TimeRangeToday, 0, 5) + _, resp, err = client.GetTopChannelsForTeamSince(context.Background(), model.NewId(), model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckNotFoundStatus(t, resp) }) t.Run("get-top-channels-for-team-since invalid time range", func(t *testing.T) { - _, resp, err := client.GetTopChannelsForTeamSince(teamId, "7_days", 0, 5) + _, resp, err := client.GetTopChannelsForTeamSince(context.Background(), teamId, "7_days", 0, 5) assert.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("get-top-channels-for-team-since not a member of team", func(t *testing.T) { th.UnlinkUserFromTeam(th.BasicUser, th.BasicTeam) - _, resp, err := client.GetTopChannelsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopChannelsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -551,7 +552,7 @@ func TestGetTopChannelsForTeamSince(t *testing.T) { t.Run("get-top-channels-for-team-since invalid license", func(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("")) - _, resp, err := client.GetTopChannelsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopChannelsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -576,7 +577,7 @@ func TestGetTopChannelsForUserSince(t *testing.T) { i := len(channelIDs) for _, channelID := range channelIDs { for j := i; j > 0; j-- { - _, _, err := client.CreatePost(&model.Post{UserId: userId, ChannelId: channelID, Message: "zz" + model.NewId() + "a"}) + _, _, err := client.CreatePost(context.Background(), &model.Post{UserId: userId, ChannelId: channelID, Message: "zz" + model.NewId() + "a"}) require.NoError(t, err) } i-- @@ -596,7 +597,7 @@ func TestGetTopChannelsForUserSince(t *testing.T) { } t.Run("get-top-channels-for-user-since", func(t *testing.T) { - topChannels, _, err := client.GetTopChannelsForUserSince(teamId, model.TimeRangeToday, 0, 5) + topChannels, _, err := client.GetTopChannelsForUserSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) require.NoError(t, err) for i, channel := range topChannels.Items { @@ -604,7 +605,7 @@ func TestGetTopChannelsForUserSince(t *testing.T) { assert.Equal(t, expectedTopChannels[i].MessageCount, channel.MessageCount) } - topChannels, _, err = client.GetTopChannelsForUserSince("", model.TimeRangeToday, 1, 5) + topChannels, _, err = client.GetTopChannelsForUserSince(context.Background(), "", model.TimeRangeToday, 1, 5) require.NoError(t, err) assert.Equal(t, channel6.Id, topChannels.Items[0].ID) assert.Equal(t, int64(1), topChannels.Items[0].MessageCount) @@ -615,24 +616,24 @@ func TestGetTopChannelsForUserSince(t *testing.T) { }) t.Run("get-top-channels-for-user-since invalid team id", func(t *testing.T) { - _, resp, err := client.GetTopChannelsForUserSince("12345", model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopChannelsForUserSince(context.Background(), "12345", model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTopChannelsForUserSince(model.NewId(), model.TimeRangeToday, 0, 5) + _, resp, err = client.GetTopChannelsForUserSince(context.Background(), model.NewId(), model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckNotFoundStatus(t, resp) }) t.Run("get-top-channels-for-user-since invalid time range", func(t *testing.T) { - _, resp, err := client.GetTopChannelsForUserSince(teamId, "7_days", 0, 5) + _, resp, err := client.GetTopChannelsForUserSince(context.Background(), teamId, "7_days", 0, 5) assert.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("get-top-channels-for-user-since not a member of team", func(t *testing.T) { th.UnlinkUserFromTeam(th.BasicUser, th.BasicTeam) - _, resp, err := client.GetTopChannelsForUserSince(teamId, model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopChannelsForUserSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -700,33 +701,33 @@ func TestGetTopThreadsForTeamSince(t *testing.T) { // get top threads for team, as user 1 and user 2 // user 1, 2 should see both threads - topTeamThreadsByUser1, _, _ := client.GetTopThreadsForTeamSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 10) + topTeamThreadsByUser1, _, _ := client.GetTopThreadsForTeamSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 10) require.Nil(t, appErr) require.Len(t, topTeamThreadsByUser1.Items, 2) require.Equal(t, topTeamThreadsByUser1.Items[0].Post.Id, rootPostPrivateChannel.Id) require.Equal(t, topTeamThreadsByUser1.Items[1].Post.Id, rootPostPublicChannel.Id) - client.Logout() + client.Logout(context.Background()) th.LoginBasic2() client = th.Client - topTeamThreadsByUser2, _, _ := client.GetTopThreadsForTeamSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 10) + topTeamThreadsByUser2, _, _ := client.GetTopThreadsForTeamSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 10) require.Nil(t, appErr) require.Len(t, topTeamThreadsByUser2.Items, 1) require.Equal(t, topTeamThreadsByUser2.Items[0].Post.Id, rootPostPublicChannel.Id) // add user2 to private channel and it can see 2 top threads. th.AddUserToChannel(th.BasicUser2, channelPrivate) - topTeamThreadsByUser2IncludingPrivate, _, _ := client.GetTopThreadsForTeamSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 10) + topTeamThreadsByUser2IncludingPrivate, _, _ := client.GetTopThreadsForTeamSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 10) require.Nil(t, appErr) require.Len(t, topTeamThreadsByUser2IncludingPrivate.Items, 2) t.Run("get-top-threads-for-team-since invalid license", func(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("")) - _, resp, err := client.GetTopThreadsForTeamSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopThreadsForTeamSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -793,7 +794,7 @@ func TestGetTopThreadsForUserSince(t *testing.T) { // user 1 should see both threads, while user 2 should see only thread in public channel // (even if user2 is in the private channel it hasn't interacted with the thread there.) - topUser1Threads, _, _ := client.GetTopThreadsForUserSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 10) + topUser1Threads, _, _ := client.GetTopThreadsForUserSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 10) require.Nil(t, appErr) require.Len(t, topUser1Threads.Items, 2) require.Equal(t, topUser1Threads.Items[0].Post.Id, rootPostPrivateChannel.Id) @@ -802,13 +803,13 @@ func TestGetTopThreadsForUserSince(t *testing.T) { require.Contains(t, topUser1Threads.Items[1].Participants, th.BasicUser2.Id) require.Equal(t, topUser1Threads.Items[1].Post.ReplyCount, int64(1)) - client.Logout() + client.Logout(context.Background()) th.LoginBasic2() client = th.Client - topUser2Threads, _, _ := client.GetTopThreadsForUserSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 10) + topUser2Threads, _, _ := client.GetTopThreadsForUserSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 10) require.Nil(t, appErr) require.Len(t, topUser2Threads.Items, 1) require.Equal(t, topUser2Threads.Items[0].Post.Id, rootPostPublicChannel.Id) @@ -818,17 +819,17 @@ func TestGetTopThreadsForUserSince(t *testing.T) { _, appErr = th.App.DeletePost(th.Context, rootPostPublicChannel.Id, th.BasicUser.Id) require.Nil(t, appErr) - client.Logout() + client.Logout(context.Background()) th.LoginBasic() client = th.Client - topUser1ThreadsAfterPost1Delete, _, _ := client.GetTopThreadsForUserSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 10) + topUser1ThreadsAfterPost1Delete, _, _ := client.GetTopThreadsForUserSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 10) require.Nil(t, appErr) require.Len(t, topUser1ThreadsAfterPost1Delete.Items, 1) - client.Logout() + client.Logout(context.Background()) th.LoginBasic2() @@ -843,7 +844,7 @@ func TestGetTopThreadsForUserSince(t *testing.T) { }, channelPrivate, false, true) require.Nil(t, appErr) - topUser2ThreadsAfterPrivateReply, _, _ := client.GetTopThreadsForUserSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 10) + topUser2ThreadsAfterPrivateReply, _, _ := client.GetTopThreadsForUserSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 10) require.Nil(t, appErr) require.Len(t, topUser2ThreadsAfterPrivateReply.Items, 1) @@ -857,7 +858,7 @@ func TestGetTopThreadsForUserSince(t *testing.T) { }) require.NoError(t, err) - topUser2ThreadsAfterPrivateReplyDelete, _, _ := client.GetTopThreadsForUserSince(th.BasicTeam.Id, model.TimeRangeToday, 0, 10) + topUser2ThreadsAfterPrivateReplyDelete, _, _ := client.GetTopThreadsForUserSince(context.Background(), th.BasicTeam.Id, model.TimeRangeToday, 0, 10) require.Nil(t, appErr) require.Len(t, topUser2ThreadsAfterPrivateReplyDelete.Items, 0) } @@ -900,7 +901,7 @@ func TestGetTopInactiveChannelsForTeamSince(t *testing.T) { TeamId: th.BasicTeam.Id, CreateAt: 1, } - channel4, _, err := client.CreateChannel(channel4Req) + channel4, _, err := client.CreateChannel(context.Background(), channel4Req) require.NoError(t, err) channel5Req := &model.Channel{ @@ -910,7 +911,7 @@ func TestGetTopInactiveChannelsForTeamSince(t *testing.T) { TeamId: th.BasicTeam.Id, CreateAt: 1, } - channel5, _, err := client.CreateChannel(channel5Req) + channel5, _, err := client.CreateChannel(context.Background(), channel5Req) require.NoError(t, err) channel6Req := &model.Channel{ @@ -920,7 +921,7 @@ func TestGetTopInactiveChannelsForTeamSince(t *testing.T) { TeamId: th.BasicTeam.Id, CreateAt: 1, } - channel6, _, err := client.CreateChannel(channel6Req) + channel6, _, err := client.CreateChannel(context.Background(), channel6Req) require.NoError(t, err) th.App.AddUserToChannel(th.Context, th.BasicUser, channel4, false) @@ -932,7 +933,7 @@ func TestGetTopInactiveChannelsForTeamSince(t *testing.T) { i := len(channelIDs) for _, channelID := range channelIDs { for j := i; j > 0; j-- { - _, _, err := client.CreatePost(&model.Post{UserId: userId, ChannelId: channelID, Message: "zz" + model.NewId() + "a"}) + _, _, err := client.CreatePost(context.Background(), &model.Post{UserId: userId, ChannelId: channelID, Message: "zz" + model.NewId() + "a"}) require.NoError(t, err) } i-- @@ -950,14 +951,14 @@ func TestGetTopInactiveChannelsForTeamSince(t *testing.T) { } t.Run("get-top-inactive-channels-for-team-since", func(t *testing.T) { - topInactiveChannels, _, err := client.GetTopInactiveChannelsForTeamSince(teamId, model.TimeRangeToday, 0, 2) + topInactiveChannels, _, err := client.GetTopInactiveChannelsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 2) require.NoError(t, err) for i, channel := range topInactiveChannels.Items { assert.Equal(t, expectedTopChannels[i].ID, channel.ID) } - topInactiveChannels, _, err = client.GetTopInactiveChannelsForTeamSince(teamId, model.TimeRangeToday, 1, 2) + topInactiveChannels, _, err = client.GetTopInactiveChannelsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 1, 2) require.NoError(t, err) assert.Equal(t, channel4.Id, topInactiveChannels.Items[0].ID) }) @@ -966,13 +967,13 @@ func TestGetTopInactiveChannelsForTeamSince(t *testing.T) { excludedChannel := th.CreatePrivateChannel() for i := 0; i < 10; i++ { - _, _, err := client.CreatePost(&model.Post{UserId: userId, ChannelId: excludedChannel.Id, Message: "zz" + model.NewId() + "a"}) + _, _, err := client.CreatePost(context.Background(), &model.Post{UserId: userId, ChannelId: excludedChannel.Id, Message: "zz" + model.NewId() + "a"}) require.NoError(t, err) } th.RemoveUserFromChannel(th.BasicUser, excludedChannel) - topInactiveChannels, _, err := client.GetTopInactiveChannelsForUserSince(teamId, model.TimeRangeToday, 0, 3) + topInactiveChannels, _, err := client.GetTopInactiveChannelsForUserSince(context.Background(), teamId, model.TimeRangeToday, 0, 3) require.NoError(t, err) for i, channel := range topInactiveChannels.Items { @@ -983,7 +984,7 @@ func TestGetTopInactiveChannelsForTeamSince(t *testing.T) { t.Run("get-top-inactive-channels-for-team-since invalid license", func(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("")) - _, resp, err := client.GetTopInactiveChannelsForTeamSince(teamId, model.TimeRangeToday, 0, 5) + _, resp, err := client.GetTopInactiveChannelsForTeamSince(context.Background(), teamId, model.TimeRangeToday, 0, 5) assert.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -1007,14 +1008,14 @@ func TestGetTopDMsForUserSince(t *testing.T) { th.LoginBasic2() client := th.Client - channelBu1Bu1, _, err := client.CreateDirectChannel(basicUser1.Id, basicUser1.Id) + channelBu1Bu1, _, err := client.CreateDirectChannel(context.Background(), basicUser1.Id, basicUser1.Id) require.NoError(t, err) th.LoginBasic() client = th.Client - channelBuBu, _, err := client.CreateDirectChannel(basicUser.Id, basicUser.Id) + channelBuBu, _, err := client.CreateDirectChannel(context.Background(), basicUser.Id, basicUser.Id) require.NoError(t, err) - channelBuBu1, _, err := client.CreateDirectChannel(basicUser.Id, basicUser1.Id) + channelBuBu1, _, err := client.CreateDirectChannel(context.Background(), basicUser.Id, basicUser1.Id) require.NoError(t, err) // bot creation with permission @@ -1027,11 +1028,11 @@ func TestGetTopDMsForUserSince(t *testing.T) { UserId: model.NewId(), } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - channelBuBot, _, err := client.CreateDirectChannel(basicUser.Id, createdBot.UserId) + channelBuBot, _, err := client.CreateDirectChannel(context.Background(), basicUser.Id, createdBot.UserId) require.NoError(t, err) // create 2 posts in channelBu, 1 in channelBu1, 3 in channelBu12 @@ -1062,14 +1063,14 @@ func TestGetTopDMsForUserSince(t *testing.T) { client = th.Client userId := basicUser1.Id post := &model.Post{UserId: userId, ChannelId: postGen["chId"].(string), Message: "zz" + model.NewId() + "a"} - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) } else { th.LoginBasic() client = th.Client userId := basicUser.Id post := &model.Post{UserId: userId, ChannelId: postGen["chId"].(string), Message: "zz" + model.NewId() + "a"} - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) } } @@ -1079,14 +1080,14 @@ func TestGetTopDMsForUserSince(t *testing.T) { t.Run("get top dms for basic user 1", func(t *testing.T) { th.LoginBasic() client = th.Client - topDMs, _, topDmsErr := client.GetTopDMsForUserSince("today", 0, 100) + topDMs, _, topDmsErr := client.GetTopDMsForUserSince(context.Background(), "today", 0, 100) require.NoError(t, topDmsErr) require.Len(t, topDMs.Items, 1) require.Equal(t, topDMs.Items[0].MessageCount, int64(3)) require.Equal(t, topDMs.Items[0].SecondParticipant.Id, basicUser1.Id) // test pagination - topDMsPage0PerPage1, _, topDmsErr := client.GetTopDMsForUserSince("today", 0, 2) + topDMsPage0PerPage1, _, topDmsErr := client.GetTopDMsForUserSince(context.Background(), "today", 0, 2) require.NoError(t, topDmsErr) require.Len(t, topDMsPage0PerPage1.Items, 1) require.Equal(t, topDMsPage0PerPage1.HasNext, false) @@ -1097,19 +1098,19 @@ func TestGetTopDMsForUserSince(t *testing.T) { t.Run("get top dms for basic user 2", func(t *testing.T) { th.LoginBasic2() client = th.Client - topDMs, _, topDmsErr := client.GetTopDMsForUserSince("today", 0, 100) + topDMs, _, topDmsErr := client.GetTopDMsForUserSince(context.Background(), "today", 0, 100) require.NoError(t, topDmsErr) require.Len(t, topDMs.Items, 1) require.Equal(t, topDMs.Items[0].MessageCount, int64(3)) }) // deactivate basicuser1 - _, err = th.Client.DeleteUser(basicUser1.Id) + _, err = th.Client.DeleteUser(context.Background(), basicUser1.Id) require.NoError(t, err) // deactivated users DMs should show in topDMs t.Run("get top dms for basic user 1", func(t *testing.T) { th.LoginBasic() client = th.Client - topDMs, _, topDmsErr := client.GetTopDMsForUserSince("today", 0, 100) + topDMs, _, topDmsErr := client.GetTopDMsForUserSince(context.Background(), "today", 0, 100) require.NoError(t, topDmsErr) require.Len(t, topDMs.Items, 1) require.Equal(t, topDMs.Items[0].MessageCount, int64(3)) @@ -1125,37 +1126,37 @@ func TestNewTeamMembersSince(t *testing.T) { team := th.CreateTeam() t.Run("accepts only starter or professional license skus", func(t *testing.T) { - _, resp, _ := th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + _, resp, _ := th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) CheckNotImplementedStatus(t, resp) th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuE10)) - _, resp, _ = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + _, resp, _ = th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) CheckNotImplementedStatus(t, resp) th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuE20)) - _, resp, _ = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + _, resp, _ = th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) CheckNotImplementedStatus(t, resp) th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) - _, resp, err := th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + _, resp, err := th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) require.NoError(t, err) CheckOKStatus(t, resp) th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuEnterprise)) - _, resp, err = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + _, resp, err = th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) require.NoError(t, err) CheckOKStatus(t, resp) }) t.Run("rejects guests", func(t *testing.T) { - _, resp, err := th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + _, resp, err := th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) require.NoError(t, err) CheckOKStatus(t, resp) th.App.DemoteUserToGuest(th.Context, th.BasicUser) defer th.App.PromoteGuestToUser(th.Context, th.BasicUser, "") - _, resp, _ = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + _, resp, _ = th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) CheckNotImplementedStatus(t, resp) }) @@ -1178,17 +1179,17 @@ func TestNewTeamMembersSince(t *testing.T) { } th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) - list, resp, err := th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + list, resp, err := th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) require.NoError(t, err) CheckOKStatus(t, resp) checkUser(list.Items[0], false) data, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - _, err = th.Client.SetProfileImage(th.BasicUser.Id, data) + _, err = th.Client.SetProfileImage(context.Background(), th.BasicUser.Id, data) require.NoError(t, err) - list, resp, err = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 5) + list, resp, err = th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 5) require.NoError(t, err) CheckOKStatus(t, resp) checkUser(list.Items[0], true) @@ -1196,7 +1197,7 @@ func TestNewTeamMembersSince(t *testing.T) { t.Run("implements pagination", func(t *testing.T) { // check the first page of results - list, resp, err := th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 2) + list, resp, err := th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 2) require.NoError(t, err) CheckOKStatus(t, resp) @@ -1205,7 +1206,7 @@ func TestNewTeamMembersSince(t *testing.T) { require.False(t, list.HasNext) // check the 2nd page - list, resp, err = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 1, 2) + list, resp, err = th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 1, 2) require.NoError(t, err) CheckOKStatus(t, resp) @@ -1218,14 +1219,14 @@ func TestNewTeamMembersSince(t *testing.T) { _, appErr = th.App.AddTeamMember(th.Context, team.Id, user.Id) require.Nil(t, appErr) - list, resp, err = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 2) + list, resp, err = th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 2) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, 3, int(list.TotalCount)) require.Len(t, list.Items, 2) require.True(t, list.HasNext) - list, resp, err = th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 1, 2) + list, resp, err = th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 1, 2) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, int(list.TotalCount), 3) @@ -1236,7 +1237,7 @@ func TestNewTeamMembersSince(t *testing.T) { t.Run("get-new-team-members-since invalid license", func(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("")) - _, resp, err := th.Client.GetNewTeamMembersSince(team.Id, model.TimeRangeToday, 0, 2) + _, resp, err := th.Client.GetNewTeamMembersSince(context.Background(), team.Id, model.TimeRangeToday, 0, 2) assert.Error(t, err) CheckNotImplementedStatus(t, resp) }) diff --git a/server/channels/api4/integration_action_test.go b/server/channels/api4/integration_action_test.go index 422f2eed37..7ba69ebf5c 100644 --- a/server/channels/api4/integration_action_test.go +++ b/server/channels/api4/integration_action_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "io" "net/http" @@ -128,7 +129,7 @@ func TestPostActionCookies(t *testing.T) { assert.Equal(t, 32, len(th.App.PostActionCookieSecret())) post = model.AddPostActionCookies(post, th.App.PostActionCookieSecret()) - resp, err := client.DoPostActionWithCookie(post.Id, test.Action.Id, "", test.Action.Cookie) + resp, err := client.DoPostActionWithCookie(context.Background(), post.Id, test.Action.Id, "", test.Action.Cookie) require.NotNil(t, resp) if test.ExpectedSuccess { assert.NoError(t, err) @@ -174,40 +175,40 @@ func TestOpenDialog(t *testing.T) { }, } - _, err := client.OpenInteractiveDialog(request) + _, err := client.OpenInteractiveDialog(context.Background(), request) require.NoError(t, err) // Should fail on bad trigger ID request.TriggerId = "junk" - resp, err := client.OpenInteractiveDialog(request) + resp, err := client.OpenInteractiveDialog(context.Background(), request) require.Error(t, err) CheckBadRequestStatus(t, resp) // URL is required request.TriggerId = triggerId request.URL = "" - resp, err = client.OpenInteractiveDialog(request) + resp, err = client.OpenInteractiveDialog(context.Background(), request) require.Error(t, err) CheckBadRequestStatus(t, resp) // Should pass with markdown formatted introduction text request.URL = "http://localhost:8065" request.Dialog.IntroductionText = "**Some** _introduction text" - _, err = client.OpenInteractiveDialog(request) + _, err = client.OpenInteractiveDialog(context.Background(), request) require.NoError(t, err) // Should pass with empty introduction text request.Dialog.IntroductionText = "" - _, err = client.OpenInteractiveDialog(request) + _, err = client.OpenInteractiveDialog(context.Background(), request) require.NoError(t, err) // Should pass with no elements request.Dialog.Elements = nil - _, err = client.OpenInteractiveDialog(request) + _, err = client.OpenInteractiveDialog(context.Background(), request) require.NoError(t, err) request.Dialog.Elements = []model.DialogElement{} - _, err = client.OpenInteractiveDialog(request) + _, err = client.OpenInteractiveDialog(context.Background(), request) require.NoError(t, err) } @@ -248,19 +249,19 @@ func TestSubmitDialog(t *testing.T) { submit.URL = ts.URL - submitResp, _, err := client.SubmitInteractiveDialog(submit) + submitResp, _, err := client.SubmitInteractiveDialog(context.Background(), submit) require.NoError(t, err) assert.NotNil(t, submitResp) submit.URL = "" - submitResp, resp, err := client.SubmitInteractiveDialog(submit) + submitResp, resp, err := client.SubmitInteractiveDialog(context.Background(), submit) require.Error(t, err) CheckBadRequestStatus(t, resp) assert.Nil(t, submitResp) submit.URL = ts.URL submit.ChannelId = model.NewId() - submitResp, resp, err = client.SubmitInteractiveDialog(submit) + submitResp, resp, err = client.SubmitInteractiveDialog(context.Background(), submit) require.Error(t, err) CheckForbiddenStatus(t, resp) assert.Nil(t, submitResp) @@ -268,7 +269,7 @@ func TestSubmitDialog(t *testing.T) { submit.URL = ts.URL submit.ChannelId = th.BasicChannel.Id submit.TeamId = model.NewId() - submitResp, resp, err = client.SubmitInteractiveDialog(submit) + submitResp, resp, err = client.SubmitInteractiveDialog(context.Background(), submit) require.Error(t, err) CheckForbiddenStatus(t, resp) assert.Nil(t, submitResp) diff --git a/server/channels/api4/job_test.go b/server/channels/api4/job_test.go index d8da06e86e..ee0ce7ff8b 100644 --- a/server/channels/api4/job_test.go +++ b/server/channels/api4/job_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "os" "path/filepath" "strings" @@ -27,19 +28,19 @@ func TestCreateJob(t *testing.T) { } t.Run("valid job as user without permissions", func(t *testing.T) { - _, resp, err := th.SystemManagerClient.CreateJob(job) + _, resp, err := th.SystemManagerClient.CreateJob(context.Background(), job) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("valid job as user with permissions", func(t *testing.T) { - received, _, err := th.SystemAdminClient.CreateJob(job) + received, _, err := th.SystemAdminClient.CreateJob(context.Background(), job) require.NoError(t, err) defer th.App.Srv().Store().Job().Delete(received.Id) }) t.Run("invalid job type as user without permissions", func(t *testing.T) { - _, resp, err := th.SystemAdminClient.CreateJob(&model.Job{Type: model.NewId()}) + _, resp, err := th.SystemAdminClient.CreateJob(context.Background(), &model.Job{Type: model.NewId()}) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -59,21 +60,21 @@ func TestGetJob(t *testing.T) { defer th.App.Srv().Store().Job().Delete(job.Id) - received, _, err := th.SystemAdminClient.GetJob(job.Id) + received, _, err := th.SystemAdminClient.GetJob(context.Background(), job.Id) require.NoError(t, err) require.Equal(t, job.Id, received.Id, "incorrect job received") require.Equal(t, job.Status, received.Status, "incorrect job received") - _, resp, err := th.SystemAdminClient.GetJob("1234") + _, resp, err := th.SystemAdminClient.GetJob(context.Background(), "1234") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = th.Client.GetJob(job.Id) + _, resp, err = th.Client.GetJob(context.Background(), job.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.SystemAdminClient.GetJob(model.NewId()) + _, resp, err = th.SystemAdminClient.GetJob(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) } @@ -109,19 +110,19 @@ func TestGetJobs(t *testing.T) { defer th.App.Srv().Store().Job().Delete(job.Id) } - received, _, err := th.SystemAdminClient.GetJobs(0, 2) + received, _, err := th.SystemAdminClient.GetJobs(context.Background(), 0, 2) require.NoError(t, err) require.Len(t, received, 2, "received wrong number of jobs") require.Equal(t, jobs[2].Id, received[0].Id, "should've received newest job first") require.Equal(t, jobs[0].Id, received[1].Id, "should've received second newest job second") - received, _, err = th.SystemAdminClient.GetJobs(1, 2) + received, _, err = th.SystemAdminClient.GetJobs(context.Background(), 1, 2) require.NoError(t, err) require.Equal(t, jobs[1].Id, received[0].Id, "should've received oldest job last") - _, resp, err := th.Client.GetJobs(0, 60) + _, resp, err := th.Client.GetJobs(context.Background(), 0, 60) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -162,32 +163,32 @@ func TestGetJobsByType(t *testing.T) { defer th.App.Srv().Store().Job().Delete(job.Id) } - received, _, err := th.SystemAdminClient.GetJobsByType(jobType, 0, 2) + received, _, err := th.SystemAdminClient.GetJobsByType(context.Background(), jobType, 0, 2) require.NoError(t, err) require.Len(t, received, 2, "received wrong number of jobs") require.Equal(t, jobs[2].Id, received[0].Id, "should've received newest job first") require.Equal(t, jobs[0].Id, received[1].Id, "should've received second newest job second") - received, _, err = th.SystemAdminClient.GetJobsByType(jobType, 1, 2) + received, _, err = th.SystemAdminClient.GetJobsByType(context.Background(), jobType, 1, 2) require.NoError(t, err) require.Len(t, received, 1, "received wrong number of jobs") require.Equal(t, jobs[1].Id, received[0].Id, "should've received oldest job last") - _, resp, err := th.SystemAdminClient.GetJobsByType("", 0, 60) + _, resp, err := th.SystemAdminClient.GetJobsByType(context.Background(), "", 0, 60) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = th.SystemAdminClient.GetJobsByType(strings.Repeat("a", 33), 0, 60) + _, resp, err = th.SystemAdminClient.GetJobsByType(context.Background(), strings.Repeat("a", 33), 0, 60) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = th.Client.GetJobsByType(jobType, 0, 60) + _, resp, err = th.Client.GetJobsByType(context.Background(), jobType, 0, 60) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemManagerClient.GetJobsByType(model.JobTypeElasticsearchPostIndexing, 0, 60) + _, _, err = th.SystemManagerClient.GetJobsByType(context.Background(), model.JobTypeElasticsearchPostIndexing, 0, 60) require.NoError(t, err) } @@ -206,7 +207,7 @@ func TestDownloadJob(t *testing.T) { } // DownloadExportResults is not set to true so we should get a not implemented error status - _, resp, err := th.Client.DownloadJob(job.Id) + _, resp, err := th.Client.DownloadJob(context.Background(), job.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) @@ -215,12 +216,12 @@ func TestDownloadJob(t *testing.T) { }) // Normal user cannot download the results of these job (non-existent job) - _, resp, err = th.Client.DownloadJob(job.Id) + _, resp, err = th.Client.DownloadJob(context.Background(), job.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) // System admin trying to download the results of a non-existent job - _, resp, err = th.SystemAdminClient.DownloadJob(job.Id) + _, resp, err = th.SystemAdminClient.DownloadJob(context.Background(), job.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -236,16 +237,16 @@ func TestDownloadJob(t *testing.T) { os.Create(filePath) // Normal user cannot download the results of these job (not the right permission) - _, resp, err = th.Client.DownloadJob(job.Id) + _, resp, err = th.Client.DownloadJob(context.Background(), job.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.SystemManagerClient.DownloadJob(job.Id) + th.SystemManagerClient.DownloadJob(context.Background(), job.Id) // System manager with default permissions cannot download the results of these job (Doesn't have correct permissions) - _, resp, err = th.SystemManagerClient.DownloadJob(job.Id) + _, resp, err = th.SystemManagerClient.DownloadJob(context.Background(), job.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.SystemAdminClient.DownloadJob(job.Id) + _, resp, err = th.SystemAdminClient.DownloadJob(context.Background(), job.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -254,7 +255,7 @@ func TestDownloadJob(t *testing.T) { require.True(t, updateStatus) require.NoError(t, err) - _, resp, err = th.SystemAdminClient.DownloadJob(job.Id) + _, resp, err = th.SystemAdminClient.DownloadJob(context.Background(), job.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -265,7 +266,7 @@ func TestDownloadJob(t *testing.T) { require.NoError(t, mkdirAllErr) os.Create(filePath) - _, _, err = th.SystemAdminClient.DownloadJob(job.Id) + _, _, err = th.SystemAdminClient.DownloadJob(context.Background(), job.Id) require.NoError(t, err) // Here we are creating a new job which doesn't have type of message export @@ -283,7 +284,7 @@ func TestDownloadJob(t *testing.T) { defer th.App.Srv().Store().Job().Delete(job.Id) // System admin shouldn't be able to download since the job type is not message export - _, resp, err = th.SystemAdminClient.DownloadJob(job.Id) + _, resp, err = th.SystemAdminClient.DownloadJob(context.Background(), job.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) } @@ -317,21 +318,21 @@ func TestCancelJob(t *testing.T) { defer th.App.Srv().Store().Job().Delete(job.Id) } - resp, err := th.Client.CancelJob(jobs[0].Id) + resp, err := th.Client.CancelJob(context.Background(), jobs[0].Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, err = th.SystemAdminClient.CancelJob(jobs[0].Id) + _, err = th.SystemAdminClient.CancelJob(context.Background(), jobs[0].Id) require.NoError(t, err) - _, err = th.SystemAdminClient.CancelJob(jobs[1].Id) + _, err = th.SystemAdminClient.CancelJob(context.Background(), jobs[1].Id) require.NoError(t, err) - resp, err = th.SystemAdminClient.CancelJob(jobs[2].Id) + resp, err = th.SystemAdminClient.CancelJob(context.Background(), jobs[2].Id) require.Error(t, err) CheckInternalErrorStatus(t, resp) - resp, err = th.SystemAdminClient.CancelJob(model.NewId()) + resp, err = th.SystemAdminClient.CancelJob(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) } diff --git a/server/channels/api4/ldap_test.go b/server/channels/api4/ldap_test.go index 2118ceac60..696cd6358e 100644 --- a/server/channels/api4/ldap_test.go +++ b/server/channels/api4/ldap_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/require" @@ -104,20 +105,20 @@ func TestTestLdap(t *testing.T) { defer th.TearDown() th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err := client.TestLdap() + resp, err := client.TestLdap(context.Background()) CheckNotImplementedStatus(t, resp) require.Error(t, err) CheckErrorID(t, err, "api.ldap_groups.license_error") }) th.App.Srv().SetLicense(model.NewTestLicense("ldap_groups")) - resp, err := th.Client.TestLdap() + resp, err := th.Client.TestLdap(context.Background()) CheckForbiddenStatus(t, resp) require.Error(t, err) CheckErrorID(t, err, "api.context.permissions.app_error") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err = client.TestLdap() + resp, err = client.TestLdap(context.Background()) require.Error(t, err) CheckNotImplementedStatus(t, resp) require.Error(t, err) @@ -130,7 +131,7 @@ func TestSyncLdap(t *testing.T) { defer th.TearDown() th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err := client.TestLdap() + resp, err := client.TestLdap(context.Background()) CheckNotImplementedStatus(t, resp) require.Error(t, err) CheckErrorID(t, err, "api.ldap_groups.license_error") @@ -156,18 +157,18 @@ func TestSyncLdap(t *testing.T) { th.App.Channels().Ldap = ldapMock th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err := client.SyncLdap(false) + _, err := client.SyncLdap(context.Background(), false) <-ready require.NoError(t, err) require.False(t, includeRemovedMembers) - _, err = client.SyncLdap(true) + _, err = client.SyncLdap(context.Background(), true) <-ready require.NoError(t, err) require.True(t, includeRemovedMembers) }) - resp, err := th.Client.SyncLdap(false) + resp, err := th.Client.SyncLdap(context.Background(), false) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -176,12 +177,12 @@ func TestGetLdapGroups(t *testing.T) { th := Setup(t) defer th.TearDown() - _, resp, err := th.Client.GetLdapGroups() + _, resp, err := th.Client.GetLdapGroups(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.GetLdapGroups() + _, resp, err := client.GetLdapGroups(context.Background()) require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -193,11 +194,11 @@ func TestLinkLdapGroup(t *testing.T) { th := Setup(t) defer th.TearDown() - _, resp, err := th.Client.LinkLdapGroup(entryUUID) + _, resp, err := th.Client.LinkLdapGroup(context.Background(), entryUUID) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.SystemAdminClient.LinkLdapGroup(entryUUID) + _, resp, err = th.SystemAdminClient.LinkLdapGroup(context.Background(), entryUUID) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -208,11 +209,11 @@ func TestUnlinkLdapGroup(t *testing.T) { th := Setup(t) defer th.TearDown() - _, resp, err := th.Client.UnlinkLdapGroup(entryUUID) + _, resp, err := th.Client.UnlinkLdapGroup(context.Background(), entryUUID) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.SystemAdminClient.UnlinkLdapGroup(entryUUID) + _, resp, err = th.SystemAdminClient.UnlinkLdapGroup(context.Background(), entryUUID) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -221,16 +222,16 @@ func TestMigrateIdLdap(t *testing.T) { th := Setup(t) defer th.TearDown() - resp, err := th.Client.MigrateIdLdap("objectGUID") + resp, err := th.Client.MigrateIdLdap(context.Background(), "objectGUID") require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err = client.MigrateIdLdap("") + resp, err = client.MigrateIdLdap(context.Background(), "") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.MigrateIdLdap("objectGUID") + resp, err = client.MigrateIdLdap(context.Background(), "objectGUID") require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -240,19 +241,19 @@ func TestUploadPublicCertificate(t *testing.T) { th := Setup(t) defer th.TearDown() - _, err := th.Client.UploadLdapPublicCertificate([]byte(spPublicCertificate)) + _, err := th.Client.UploadLdapPublicCertificate(context.Background(), []byte(spPublicCertificate)) require.Error(t, err, "Should have failed. No System Admin privileges") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err = client.UploadLdapPublicCertificate([]byte(spPrivateKey)) + _, err = client.UploadLdapPublicCertificate(context.Background(), []byte(spPrivateKey)) require.NoErrorf(t, err, "Should have passed. System Admin privileges %v", err) }) - _, err = th.Client.DeleteLdapPublicCertificate() + _, err = th.Client.DeleteLdapPublicCertificate(context.Background()) require.Error(t, err, "Should have failed. No System Admin privileges") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err := client.DeleteLdapPublicCertificate() + _, err := client.DeleteLdapPublicCertificate(context.Background()) require.NoError(t, err, "Should have passed. System Admin privileges") }) } @@ -261,19 +262,19 @@ func TestUploadPrivateCertificate(t *testing.T) { th := Setup(t) defer th.TearDown() - _, err := th.Client.UploadLdapPrivateCertificate([]byte(spPrivateKey)) + _, err := th.Client.UploadLdapPrivateCertificate(context.Background(), []byte(spPrivateKey)) require.Error(t, err, "Should have failed. No System Admin privileges") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err = client.UploadLdapPrivateCertificate([]byte(spPrivateKey)) + _, err = client.UploadLdapPrivateCertificate(context.Background(), []byte(spPrivateKey)) require.NoErrorf(t, err, "Should have passed. System Admin privileges %v", err) }) - _, err = th.Client.DeleteLdapPrivateCertificate() + _, err = th.Client.DeleteLdapPrivateCertificate(context.Background()) require.Error(t, err, "Should have failed. No System Admin privileges") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err := client.DeleteLdapPrivateCertificate() + _, err := client.DeleteLdapPrivateCertificate(context.Background()) require.NoErrorf(t, err, "Should have passed. System Admin privileges %v", err) }) } @@ -282,15 +283,15 @@ func TestAddUserToGroupSyncables(t *testing.T) { th := Setup(t) defer th.TearDown() - resp, err := th.Client.AddUserToGroupSyncables(th.BasicUser.Id) + resp, err := th.Client.AddUserToGroupSyncables(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = th.SystemAdminClient.AddUserToGroupSyncables("invalid-user-id") + resp, err = th.SystemAdminClient.AddUserToGroupSyncables(context.Background(), "invalid-user-id") require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = th.SystemAdminClient.AddUserToGroupSyncables(th.BasicUser.Id) + resp, err = th.SystemAdminClient.AddUserToGroupSyncables(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -304,7 +305,7 @@ func TestAddUserToGroupSyncables(t *testing.T) { user, err = th.App.Srv().Store().User().Save(user) require.NoError(t, err) - resp, err = th.SystemAdminClient.AddUserToGroupSyncables(user.Id) + resp, err = th.SystemAdminClient.AddUserToGroupSyncables(context.Background(), user.Id) require.NoError(t, err) CheckOKStatus(t, resp) } diff --git a/server/channels/api4/license_test.go b/server/channels/api4/license_test.go index 7a562d3901..374c7c08b0 100644 --- a/server/channels/api4/license_test.go +++ b/server/channels/api4/license_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "net/http" "net/http/httptest" @@ -25,27 +26,27 @@ func TestGetOldClientLicense(t *testing.T) { defer th.TearDown() client := th.Client - license, _, err := client.GetOldClientLicense("") + license, _, err := client.GetOldClientLicense(context.Background(), "") require.NoError(t, err) require.NotEqual(t, license["IsLicensed"], "", "license not returned correctly") - client.Logout() + client.Logout(context.Background()) - _, _, err = client.GetOldClientLicense("") + _, _, err = client.GetOldClientLicense(context.Background(), "") require.NoError(t, err) - resp, err := client.DoAPIGet("/license/client", "") + resp, err := client.DoAPIGet(context.Background(), "/license/client", "") require.Error(t, err, "get /license/client did not return an error") require.Equal(t, http.StatusBadRequest, resp.StatusCode, "expected 400 bad request") - resp, err = client.DoAPIGet("/license/client?format=junk", "") + resp, err = client.DoAPIGet(context.Background(), "/license/client?format=junk", "") require.Error(t, err, "get /license/client?format=junk did not return an error") require.Equal(t, http.StatusBadRequest, resp.StatusCode, "expected 400 Bad Request") - license, _, err = th.SystemAdminClient.GetOldClientLicense("") + license, _, err = th.SystemAdminClient.GetOldClientLicense(context.Background(), "") require.NoError(t, err) require.NotEmpty(t, license["IsLicensed"], "license not returned correctly") @@ -58,13 +59,13 @@ func TestUploadLicenseFile(t *testing.T) { LocalClient := th.LocalClient t.Run("as system user", func(t *testing.T) { - resp, err := client.UploadLicenseFile([]byte{}) + resp, err := client.UploadLicenseFile(context.Background(), []byte{}) require.Error(t, err) CheckForbiddenStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - resp, err := c.UploadLicenseFile([]byte{}) + resp, err := c.UploadLicenseFile(context.Background(), []byte{}) require.Error(t, err) CheckBadRequestStatus(t, resp) }, "as system admin user") @@ -72,14 +73,14 @@ func TestUploadLicenseFile(t *testing.T) { t.Run("as restricted system admin user", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := th.SystemAdminClient.UploadLicenseFile([]byte{}) + resp, err := th.SystemAdminClient.UploadLicenseFile(context.Background(), []byte{}) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("restricted admin setting not honoured through local client", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := LocalClient.UploadLicenseFile([]byte{}) + resp, err := LocalClient.UploadLicenseFile(context.Background(), []byte{}) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -115,7 +116,7 @@ func TestUploadLicenseFile(t *testing.T) { licenseManagerMock.On("CanStartTrial").Return(false, nil).Once() th.App.Srv().Platform().SetLicenseManager(licenseManagerMock) - resp, err := th.SystemAdminClient.UploadLicenseFile([]byte("sadasdasdasdasdasdsa")) + resp, err := th.SystemAdminClient.UploadLicenseFile(context.Background(), []byte("sadasdasdasdasdasdsa")) CheckErrorID(t, err, "api.license.request-trial.can-start-trial.not-allowed") require.Equal(t, http.StatusBadRequest, resp.StatusCode) }) @@ -146,7 +147,7 @@ func TestUploadLicenseFile(t *testing.T) { mockLicenseValidator.On("ValidateLicense", mock.Anything).Return(true, string(licenseBytes)) utils.LicenseValidator = &mockLicenseValidator - resp, err := th.SystemAdminClient.UploadLicenseFile([]byte("")) + resp, err := th.SystemAdminClient.UploadLicenseFile(context.Background(), []byte("")) CheckErrorID(t, err, "api.license.upgrade_needed.app_error") require.Equal(t, http.StatusInternalServerError, resp.StatusCode) }) @@ -184,7 +185,7 @@ func TestUploadLicenseFile(t *testing.T) { licenseManagerMock.On("CanStartTrial").Return(false, nil).Once() th.App.Srv().Platform().SetLicenseManager(licenseManagerMock) - resp, err := th.SystemAdminClient.UploadLicenseFile([]byte("sadasdasdasdasdasdsa")) + resp, err := th.SystemAdminClient.UploadLicenseFile(context.Background(), []byte("sadasdasdasdasdasdsa")) require.NoError(t, err) require.Equal(t, http.StatusOK, resp.StatusCode) }) @@ -197,20 +198,20 @@ func TestRemoveLicenseFile(t *testing.T) { LocalClient := th.LocalClient t.Run("as system user", func(t *testing.T) { - resp, err := client.RemoveLicenseFile() + resp, err := client.RemoveLicenseFile(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - _, err := c.RemoveLicenseFile() + _, err := c.RemoveLicenseFile(context.Background()) require.NoError(t, err) }, "as system admin user") t.Run("as restricted system admin user", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := th.SystemAdminClient.RemoveLicenseFile() + resp, err := th.SystemAdminClient.RemoveLicenseFile(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -218,7 +219,7 @@ func TestRemoveLicenseFile(t *testing.T) { t.Run("restricted admin setting not honoured through local client", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - _, err := LocalClient.RemoveLicenseFile() + _, err := LocalClient.RemoveLicenseFile(context.Background()) require.NoError(t, err) }) } @@ -251,7 +252,7 @@ func TestRequestTrialLicenseWithExtraFields(t *testing.T) { } t.Run("permission denied", func(t *testing.T) { - resp, err := th.Client.RequestTrialLicenseWithExtraFields(&model.TrialLicenseRequest{}) + resp, err := th.Client.RequestTrialLicenseWithExtraFields(context.Background(), &model.TrialLicenseRequest{}) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -287,7 +288,7 @@ func TestRequestTrialLicenseWithExtraFields(t *testing.T) { cloud.On("ValidateBusinessEmail", mock.Anything, mock.Anything).Return(nil) - resp, err := th.SystemAdminClient.RequestTrialLicenseWithExtraFields(validTrialRequest) + resp, err := th.SystemAdminClient.RequestTrialLicenseWithExtraFields(context.Background(), validTrialRequest) CheckErrorID(t, err, "api.license.add_license.unique_users.app_error") CheckBadRequestStatus(t, resp) }) @@ -318,7 +319,7 @@ func TestRequestTrialLicenseWithExtraFields(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.CloudSettings.CWSURL = requestTrialURL }) }(originalCwsUrl) - resp, err := th.SystemAdminClient.RequestTrialLicenseWithExtraFields(validTrialRequest) + resp, err := th.SystemAdminClient.RequestTrialLicenseWithExtraFields(context.Background(), validTrialRequest) require.Error(t, err) require.Equal(t, resp.StatusCode, 451) }) @@ -357,14 +358,14 @@ func TestRequestTrialLicenseWithExtraFields(t *testing.T) { cloud.On("ValidateBusinessEmail", mock.Anything, mock.Anything).Return(nil) - resp, err := th.SystemAdminClient.RequestTrialLicenseWithExtraFields(validTrialRequest) + resp, err := th.SystemAdminClient.RequestTrialLicenseWithExtraFields(context.Background(), validTrialRequest) CheckErrorID(t, err, "api.license.request-trial.bad-request") CheckBadRequestStatus(t, resp) }) th.App.Srv().Platform().SetLicenseManager(nil) t.Run("trial license should fail if LicenseManager is nil", func(t *testing.T) { - resp, err := th.SystemAdminClient.RequestTrialLicenseWithExtraFields(validTrialRequest) + resp, err := th.SystemAdminClient.RequestTrialLicenseWithExtraFields(context.Background(), validTrialRequest) CheckErrorID(t, err, "api.license.upgrade_needed.app_error") CheckForbiddenStatus(t, resp) }) @@ -382,7 +383,7 @@ func TestRequestTrialLicense(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.SiteURL = "http://localhost:8065/" }) t.Run("permission denied", func(t *testing.T) { - resp, err := th.Client.RequestTrialLicense(1000) + resp, err := th.Client.RequestTrialLicense(context.Background(), 1000) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -417,7 +418,7 @@ func TestRequestTrialLicense(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.CloudSettings.CWSURL = requestTrialURL }) }(originalCwsUrl) - resp, err := th.SystemAdminClient.RequestTrialLicense(nUsers) + resp, err := th.SystemAdminClient.RequestTrialLicense(context.Background(), nUsers) CheckErrorID(t, err, "api.license.add_license.unique_users.app_error") CheckBadRequestStatus(t, resp) }) @@ -448,14 +449,14 @@ func TestRequestTrialLicense(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.CloudSettings.CWSURL = requestTrialURL }) }(originalCwsUrl) - resp, err := th.SystemAdminClient.RequestTrialLicense(nUsers) + resp, err := th.SystemAdminClient.RequestTrialLicense(context.Background(), nUsers) require.Error(t, err) require.Equal(t, resp.StatusCode, 451) }) th.App.Srv().Platform().SetLicenseManager(nil) t.Run("trial license should fail if LicenseManager is nil", func(t *testing.T) { - resp, err := th.SystemAdminClient.RequestTrialLicense(1) + resp, err := th.SystemAdminClient.RequestTrialLicense(context.Background(), 1) CheckErrorID(t, err, "api.license.upgrade_needed.app_error") CheckForbiddenStatus(t, resp) }) @@ -471,7 +472,7 @@ func TestRequestRenewalLink(t *testing.T) { th.App.Srv().Cloud = cloudImpl }() th.App.Srv().Cloud = nil - resp, err := th.SystemAdminClient.DoAPIGet("/license/renewal", "") + resp, err := th.SystemAdminClient.DoAPIGet(context.Background(), "/license/renewal", "") CheckErrorID(t, err, "app.license.generate_renewal_token.no_license") require.Equal(t, http.StatusBadRequest, resp.StatusCode) }) @@ -483,7 +484,7 @@ func TestRequestTrueUpReview(t *testing.T) { defer th.TearDown() th.App.Srv().SetLicense(model.NewTestLicense()) - th.Client.Login(th.SystemAdminUser.Email, th.SystemAdminUser.Password) + th.Client.Login(context.Background(), th.SystemAdminUser.Email, th.SystemAdminUser.Password) cloud := mocks.CloudInterface{} cloud.Mock.On("SubmitTrueUpReview", mock.Anything, mock.Anything).Return(nil) @@ -495,7 +496,7 @@ func TestRequestTrueUpReview(t *testing.T) { th.App.Srv().Cloud = &cloud var reviewProfile map[string]any - resp, err := th.Client.SubmitTrueUpReview(reviewProfile) + resp, err := th.Client.SubmitTrueUpReview(context.Background(), reviewProfile) require.NoError(t, err) require.Equal(t, http.StatusOK, resp.StatusCode) }) @@ -507,7 +508,7 @@ func TestRequestTrueUpReview(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("cloud")) - resp, err := th.SystemAdminClient.DoAPIPost("/license/review", "") + resp, err := th.SystemAdminClient.DoAPIPost(context.Background(), "/license/review", "") require.Error(t, err) require.Equal(t, http.StatusNotImplemented, resp.StatusCode) @@ -519,7 +520,7 @@ func TestRequestTrueUpReview(t *testing.T) { defer th.TearDown() th.App.Srv().SetLicense(model.NewTestLicense()) - resp, err := th.Client.DoAPIPost("/license/review", "") + resp, err := th.Client.DoAPIPost(context.Background(), "/license/review", "") require.Error(t, err) require.Equal(t, http.StatusForbidden, resp.StatusCode) }) @@ -530,7 +531,7 @@ func TestRequestTrueUpReview(t *testing.T) { th.App.Srv().SetLicense(nil) - resp, err := th.SystemAdminClient.DoAPIPost("/license/review", "") + resp, err := th.SystemAdminClient.DoAPIPost(context.Background(), "/license/review", "") require.Error(t, err) require.Equal(t, http.StatusNotImplemented, resp.StatusCode) }) @@ -543,7 +544,7 @@ func TestTrueUpReviewStatus(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense()) t.Run("returns 200 when status retrieved", func(t *testing.T) { - resp, err := th.SystemAdminClient.DoAPIGet("/license/review/status", "") + resp, err := th.SystemAdminClient.DoAPIGet(context.Background(), "/license/review/status", "") require.NoError(t, err) require.Equal(t, http.StatusOK, resp.StatusCode) }) @@ -551,7 +552,7 @@ func TestTrueUpReviewStatus(t *testing.T) { t.Run("returns 501 when ran by cloud user", func(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("cloud")) - resp, err := th.SystemAdminClient.DoAPIGet("/license/review/status", "") + resp, err := th.SystemAdminClient.DoAPIGet(context.Background(), "/license/review/status", "") require.Error(t, err) require.Equal(t, http.StatusNotImplemented, resp.StatusCode) @@ -559,7 +560,7 @@ func TestTrueUpReviewStatus(t *testing.T) { }) t.Run("returns 403 when user does not have permissions", func(t *testing.T) { - resp, err := th.Client.DoAPIGet("/license/review/status", "") + resp, err := th.Client.DoAPIGet(context.Background(), "/license/review/status", "") require.Error(t, err) require.Equal(t, http.StatusForbidden, resp.StatusCode) }) @@ -567,7 +568,7 @@ func TestTrueUpReviewStatus(t *testing.T) { t.Run("returns 400 when license is nil", func(t *testing.T) { th.App.Srv().SetLicense(nil) - resp, err := th.SystemAdminClient.DoAPIGet("/license/review/status", "") + resp, err := th.SystemAdminClient.DoAPIGet(context.Background(), "/license/review/status", "") require.Error(t, err) require.Equal(t, http.StatusNotImplemented, resp.StatusCode) }) diff --git a/server/channels/api4/notify_admin_test.go b/server/channels/api4/notify_admin_test.go index 442489cc2d..46baac67aa 100644 --- a/server/channels/api4/notify_admin_test.go +++ b/server/channels/api4/notify_admin_test.go @@ -3,6 +3,7 @@ package api4 import ( + "context" "net/http" "testing" @@ -16,7 +17,7 @@ func TestNotifyAdmin(t *testing.T) { th := Setup(t).InitBasic().InitLogin() defer th.TearDown() - statusCode, err := th.Client.NotifyAdmin(&model.NotifyAdminToUpgradeRequest{ + statusCode, err := th.Client.NotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{ RequiredPlan: "Unknown plan", RequiredFeature: model.PaidFeatureAllProfessionalfeatures, }) @@ -31,7 +32,7 @@ func TestNotifyAdmin(t *testing.T) { th := Setup(t).InitBasic().InitLogin() defer th.TearDown() - statusCode, err := th.Client.NotifyAdmin(&model.NotifyAdminToUpgradeRequest{ + statusCode, err := th.Client.NotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{ RequiredPlan: "Unknown plan", RequiredFeature: model.PaidFeatureAllProfessionalfeatures, TrialNotification: true, @@ -47,7 +48,7 @@ func TestNotifyAdmin(t *testing.T) { th := Setup(t).InitBasic().InitLogin() defer th.TearDown() - statusCode, err := th.Client.NotifyAdmin(&model.NotifyAdminToUpgradeRequest{ + statusCode, err := th.Client.NotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{ RequiredPlan: model.LicenseShortSkuProfessional, RequiredFeature: "Unknown feature", }) @@ -61,7 +62,7 @@ func TestNotifyAdmin(t *testing.T) { th := Setup(t).InitBasic().InitLogin() defer th.TearDown() - statusCode, err := th.Client.NotifyAdmin(&model.NotifyAdminToUpgradeRequest{ + statusCode, err := th.Client.NotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{ RequiredPlan: model.LicenseShortSkuProfessional, RequiredFeature: "Unknown feature", TrialNotification: true, @@ -76,7 +77,7 @@ func TestNotifyAdmin(t *testing.T) { th := Setup(t).InitBasic().InitLogin() defer th.TearDown() - statusCode, err := th.Client.NotifyAdmin(&model.NotifyAdminToUpgradeRequest{ + statusCode, err := th.Client.NotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{ RequiredPlan: model.LicenseShortSkuProfessional, RequiredFeature: model.PaidFeatureAllProfessionalfeatures, }) @@ -84,7 +85,7 @@ func TestNotifyAdmin(t *testing.T) { require.Equal(t, http.StatusOK, statusCode) // second attempt to notify for all professional features - statusCode, err = th.Client.NotifyAdmin(&model.NotifyAdminToUpgradeRequest{ + statusCode, err = th.Client.NotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{ RequiredPlan: model.LicenseShortSkuProfessional, RequiredFeature: model.PaidFeatureAllProfessionalfeatures, }) @@ -98,7 +99,7 @@ func TestNotifyAdmin(t *testing.T) { th := Setup(t).InitBasic().InitLogin() defer th.TearDown() - statusCode, err := th.Client.NotifyAdmin(&model.NotifyAdminToUpgradeRequest{ + statusCode, err := th.Client.NotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{ RequiredPlan: model.LicenseShortSkuProfessional, RequiredFeature: model.PaidFeatureAllProfessionalfeatures, }) @@ -115,7 +116,7 @@ func TestTriggerNotifyAdmin(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableAPITriggerAdminNotifications = false }) - statusCode, err := th.SystemAdminClient.TriggerNotifyAdmin(&model.NotifyAdminToUpgradeRequest{}) + statusCode, err := th.SystemAdminClient.TriggerNotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{}) require.Error(t, err) require.Equal(t, ": Internal error during cloud api request.", err.Error()) @@ -129,7 +130,7 @@ func TestTriggerNotifyAdmin(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableAPITriggerAdminNotifications = true }) - statusCode, err := th.Client.TriggerNotifyAdmin(&model.NotifyAdminToUpgradeRequest{}) + statusCode, err := th.Client.TriggerNotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{}) require.Error(t, err) require.Equal(t, ": You do not have the appropriate permissions.", err.Error()) @@ -142,14 +143,14 @@ func TestTriggerNotifyAdmin(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableAPITriggerAdminNotifications = true }) - statusCode, err := th.Client.NotifyAdmin(&model.NotifyAdminToUpgradeRequest{ + statusCode, err := th.Client.NotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{ RequiredPlan: model.LicenseShortSkuProfessional, RequiredFeature: model.PaidFeatureAllProfessionalfeatures, }) require.NoError(t, err) require.Equal(t, http.StatusOK, statusCode) - statusCode, err = th.SystemAdminClient.TriggerNotifyAdmin(&model.NotifyAdminToUpgradeRequest{}) + statusCode, err = th.SystemAdminClient.TriggerNotifyAdmin(context.Background(), &model.NotifyAdminToUpgradeRequest{}) require.NoError(t, err) require.Equal(t, http.StatusOK, statusCode) }) diff --git a/server/channels/api4/oauth_test.go b/server/channels/api4/oauth_test.go index 7d3b2ff5db..d56df686a7 100644 --- a/server/channels/api4/oauth_test.go +++ b/server/channels/api4/oauth_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "net/http" "testing" @@ -33,7 +34,7 @@ func TestCreateOAuthApp(t *testing.T) { oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}, IsTrusted: true} - rapp, resp, err := adminClient.CreateOAuthApp(oapp) + rapp, resp, err := adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) CheckCreatedStatus(t, resp) assert.Equal(t, oapp.Name, rapp.Name, "names did not match") @@ -42,35 +43,35 @@ func TestCreateOAuthApp(t *testing.T) { // Revoke permission from regular users. th.RemovePermissionFromRole(model.PermissionManageOAuth.Id, model.SystemUserRoleId) - _, resp, err = client.CreateOAuthApp(oapp) + _, resp, err = client.CreateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckForbiddenStatus(t, resp) // Grant permission to regular users. th.AddPermissionToRole(model.PermissionManageOAuth.Id, model.SystemUserRoleId) - rapp, resp, err = client.CreateOAuthApp(oapp) + rapp, resp, err = client.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) CheckCreatedStatus(t, resp) assert.False(t, rapp.IsTrusted, "trusted should be false - created by non admin") oapp.Name = "" - _, resp, err = adminClient.CreateOAuthApp(oapp) + _, resp, err = adminClient.CreateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckBadRequestStatus(t, resp) - r, err := client.DoAPIPost("/oauth/apps", "garbage") + r, err := client.DoAPIPost(context.Background(), "/oauth/apps", "garbage") require.Error(t, err, "expected error from garbage post") assert.Equal(t, http.StatusBadRequest, r.StatusCode) - client.Logout() - _, resp, err = client.CreateOAuthApp(oapp) + client.Logout(context.Background()) + _, resp, err = client.CreateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = false }) oapp.Name = GenerateTestAppName() - _, resp, err = adminClient.CreateOAuthApp(oapp) + _, resp, err = adminClient.CreateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -101,7 +102,7 @@ func TestUpdateOAuthApp(t *testing.T) { CallbackUrls: []string{"https://callback.com"}, } - oapp, _, _ = adminClient.CreateOAuthApp(oapp) + oapp, _, _ = adminClient.CreateOAuthApp(context.Background(), oapp) oapp.Name = "oapp_update" oapp.IsTrusted = true @@ -110,7 +111,7 @@ func TestUpdateOAuthApp(t *testing.T) { oapp.Description = "test_update" oapp.CallbackUrls = []string{"https://callback_update.com", "https://another_callback.com"} - updatedApp, _, err := adminClient.UpdateOAuthApp(oapp) + updatedApp, _, err := adminClient.UpdateOAuthApp(context.Background(), oapp) require.NoError(t, err) assert.Equal(t, oapp.Id, updatedApp.Id, "Id should have not updated") assert.Equal(t, oapp.CreatorId, updatedApp.CreatorId, "CreatorId should have not updated") @@ -131,7 +132,7 @@ func TestUpdateOAuthApp(t *testing.T) { th.LoginBasic2() updatedApp.CreatorId = th.BasicUser2.Id - _, resp, err := client.UpdateOAuthApp(oapp) + _, resp, err := client.UpdateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -140,28 +141,28 @@ func TestUpdateOAuthApp(t *testing.T) { // Revoke permission from regular users. th.RemovePermissionFromRole(model.PermissionManageOAuth.Id, model.SystemUserRoleId) - _, resp, err = client.UpdateOAuthApp(oapp) + _, resp, err = client.UpdateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckForbiddenStatus(t, resp) oapp.Id = "zhk9d1ggatrqz236c7h87im7bc" - _, resp, err = adminClient.UpdateOAuthApp(oapp) + _, resp, err = adminClient.UpdateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckNotFoundStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = false }) - _, resp, err = adminClient.UpdateOAuthApp(oapp) + _, resp, err = adminClient.UpdateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckNotImplementedStatus(t, resp) - client.Logout() - _, resp, err = client.UpdateOAuthApp(oapp) + client.Logout(context.Background()) + _, resp, err = client.UpdateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckUnauthorizedStatus(t, resp) oapp.Id = "junk" - _, resp, err = adminClient.UpdateOAuthApp(oapp) + _, resp, err = adminClient.UpdateOAuthApp(context.Background(), oapp) require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -178,21 +179,21 @@ func TestUpdateOAuthApp(t *testing.T) { CallbackUrls: []string{"https://callback.com"}, } - userOapp, _, err = client.CreateOAuthApp(userOapp) + userOapp, _, err = client.CreateOAuthApp(context.Background(), userOapp) require.NoError(t, err) userOapp.IsTrusted = true - userOapp, _, err = client.UpdateOAuthApp(userOapp) + userOapp, _, err = client.UpdateOAuthApp(context.Background(), userOapp) require.NoError(t, err) assert.False(t, userOapp.IsTrusted) userOapp.IsTrusted = true - userOapp, _, err = adminClient.UpdateOAuthApp(userOapp) + userOapp, _, err = adminClient.UpdateOAuthApp(context.Background(), userOapp) require.NoError(t, err) assert.True(t, userOapp.IsTrusted) userOapp.IsTrusted = false - userOapp, _, err = client.UpdateOAuthApp(userOapp) + userOapp, _, err = client.UpdateOAuthApp(context.Background(), userOapp) require.NoError(t, err) assert.True(t, userOapp.IsTrusted) } @@ -216,14 +217,14 @@ func TestGetOAuthApps(t *testing.T) { oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} - rapp, _, err := adminClient.CreateOAuthApp(oapp) + rapp, _, err := adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) oapp.Name = GenerateTestAppName() - rapp2, _, err := client.CreateOAuthApp(oapp) + rapp2, _, err := client.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) - apps, _, err := adminClient.GetOAuthApps(0, 1000) + apps, _, err := adminClient.GetOAuthApps(context.Background(), 0, 1000) require.NoError(t, err) found1 := false @@ -239,29 +240,29 @@ func TestGetOAuthApps(t *testing.T) { assert.Truef(t, found1, "missing oauth app %v", rapp.Id) assert.Truef(t, found2, "missing oauth app %v", rapp2.Id) - apps, _, err = adminClient.GetOAuthApps(1, 1) + apps, _, err = adminClient.GetOAuthApps(context.Background(), 1, 1) require.NoError(t, err) require.Equal(t, 1, len(apps), "paging failed") - apps, _, err = client.GetOAuthApps(0, 1000) + apps, _, err = client.GetOAuthApps(context.Background(), 0, 1000) require.NoError(t, err) require.True(t, len(apps) == 1 || apps[0].Id == rapp2.Id, "wrong apps returned") // Revoke permission from regular users. th.RemovePermissionFromRole(model.PermissionManageOAuth.Id, model.SystemUserRoleId) - _, resp, err := client.GetOAuthApps(0, 1000) + _, resp, err := client.GetOAuthApps(context.Background(), 0, 1000) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) - _, resp, err = client.GetOAuthApps(0, 1000) + _, resp, err = client.GetOAuthApps(context.Background(), 0, 1000) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = false }) - _, resp, err = adminClient.GetOAuthApps(0, 1000) + _, resp, err = adminClient.GetOAuthApps(context.Background(), 0, 1000) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -285,53 +286,53 @@ func TestGetOAuthApp(t *testing.T) { oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} - rapp, _, err := adminClient.CreateOAuthApp(oapp) + rapp, _, err := adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) oapp.Name = GenerateTestAppName() - rapp2, _, err := client.CreateOAuthApp(oapp) + rapp2, _, err := client.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) - rrapp, _, err := adminClient.GetOAuthApp(rapp.Id) + rrapp, _, err := adminClient.GetOAuthApp(context.Background(), rapp.Id) require.NoError(t, err) assert.Equal(t, rapp.Id, rrapp.Id, "wrong app") assert.NotEqual(t, "", rrapp.ClientSecret, "should not be sanitized") - rrapp2, _, err := adminClient.GetOAuthApp(rapp2.Id) + rrapp2, _, err := adminClient.GetOAuthApp(context.Background(), rapp2.Id) require.NoError(t, err) assert.Equal(t, rapp2.Id, rrapp2.Id, "wrong app") assert.NotEqual(t, "", rrapp2.ClientSecret, "should not be sanitized") - _, _, err = client.GetOAuthApp(rapp2.Id) + _, _, err = client.GetOAuthApp(context.Background(), rapp2.Id) require.NoError(t, err) - _, resp, err := client.GetOAuthApp(rapp.Id) + _, resp, err := client.GetOAuthApp(context.Background(), rapp.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) // Revoke permission from regular users. th.RemovePermissionFromRole(model.PermissionManageOAuth.Id, model.SystemUserRoleId) - _, resp, err = client.GetOAuthApp(rapp2.Id) + _, resp, err = client.GetOAuthApp(context.Background(), rapp2.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) - _, resp, err = client.GetOAuthApp(rapp2.Id) + _, resp, err = client.GetOAuthApp(context.Background(), rapp2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = adminClient.GetOAuthApp("junk") + _, resp, err = adminClient.GetOAuthApp(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = adminClient.GetOAuthApp(model.NewId()) + _, resp, err = adminClient.GetOAuthApp(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = false }) - _, resp, err = adminClient.GetOAuthApp(rapp.Id) + _, resp, err = adminClient.GetOAuthApp(context.Background(), rapp.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -355,51 +356,51 @@ func TestGetOAuthAppInfo(t *testing.T) { oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} - rapp, _, err := adminClient.CreateOAuthApp(oapp) + rapp, _, err := adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) oapp.Name = GenerateTestAppName() - rapp2, _, err := client.CreateOAuthApp(oapp) + rapp2, _, err := client.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) - rrapp, _, err := adminClient.GetOAuthAppInfo(rapp.Id) + rrapp, _, err := adminClient.GetOAuthAppInfo(context.Background(), rapp.Id) require.NoError(t, err) assert.Equal(t, rapp.Id, rrapp.Id, "wrong app") assert.Equal(t, "", rrapp.ClientSecret, "should be sanitized") - rrapp2, _, err := adminClient.GetOAuthAppInfo(rapp2.Id) + rrapp2, _, err := adminClient.GetOAuthAppInfo(context.Background(), rapp2.Id) require.NoError(t, err) assert.Equal(t, rapp2.Id, rrapp2.Id, "wrong app") assert.Equal(t, "", rrapp2.ClientSecret, "should be sanitized") - _, _, err = client.GetOAuthAppInfo(rapp2.Id) + _, _, err = client.GetOAuthAppInfo(context.Background(), rapp2.Id) require.NoError(t, err) - _, _, err = client.GetOAuthAppInfo(rapp.Id) + _, _, err = client.GetOAuthAppInfo(context.Background(), rapp.Id) require.NoError(t, err) // Revoke permission from regular users. th.RemovePermissionFromRole(model.PermissionManageOAuth.Id, model.SystemUserRoleId) - _, _, err = client.GetOAuthAppInfo(rapp2.Id) + _, _, err = client.GetOAuthAppInfo(context.Background(), rapp2.Id) require.NoError(t, err) - client.Logout() + client.Logout(context.Background()) - _, resp, err := client.GetOAuthAppInfo(rapp2.Id) + _, resp, err := client.GetOAuthAppInfo(context.Background(), rapp2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = adminClient.GetOAuthAppInfo("junk") + _, resp, err = adminClient.GetOAuthAppInfo(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = adminClient.GetOAuthAppInfo(model.NewId()) + _, resp, err = adminClient.GetOAuthAppInfo(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = false }) - _, resp, err = adminClient.GetOAuthAppInfo(rapp.Id) + _, resp, err = adminClient.GetOAuthAppInfo(context.Background(), rapp.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -423,55 +424,55 @@ func TestDeleteOAuthApp(t *testing.T) { oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} - rapp, _, err := adminClient.CreateOAuthApp(oapp) + rapp, _, err := adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) oapp.Name = GenerateTestAppName() - rapp2, _, err := client.CreateOAuthApp(oapp) + rapp2, _, err := client.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) - _, err = adminClient.DeleteOAuthApp(rapp.Id) + _, err = adminClient.DeleteOAuthApp(context.Background(), rapp.Id) require.NoError(t, err) - _, err = adminClient.DeleteOAuthApp(rapp2.Id) + _, err = adminClient.DeleteOAuthApp(context.Background(), rapp2.Id) require.NoError(t, err) - rapp, _, err = adminClient.CreateOAuthApp(oapp) + rapp, _, err = adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) oapp.Name = GenerateTestAppName() - rapp2, _, err = client.CreateOAuthApp(oapp) + rapp2, _, err = client.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) - resp, err := client.DeleteOAuthApp(rapp.Id) + resp, err := client.DeleteOAuthApp(context.Background(), rapp.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, err = client.DeleteOAuthApp(rapp2.Id) + _, err = client.DeleteOAuthApp(context.Background(), rapp2.Id) require.NoError(t, err) // Revoke permission from regular users. th.RemovePermissionFromRole(model.PermissionManageOAuth.Id, model.SystemUserRoleId) - resp, err = client.DeleteOAuthApp(rapp.Id) + resp, err = client.DeleteOAuthApp(context.Background(), rapp.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - resp, err = client.DeleteOAuthApp(rapp.Id) + client.Logout(context.Background()) + resp, err = client.DeleteOAuthApp(context.Background(), rapp.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - resp, err = adminClient.DeleteOAuthApp("junk") + resp, err = adminClient.DeleteOAuthApp(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = adminClient.DeleteOAuthApp(model.NewId()) + resp, err = adminClient.DeleteOAuthApp(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = false }) - resp, err = adminClient.DeleteOAuthApp(rapp.Id) + resp, err = adminClient.DeleteOAuthApp(context.Background(), rapp.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -495,57 +496,57 @@ func TestRegenerateOAuthAppSecret(t *testing.T) { oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} - rapp, _, err := adminClient.CreateOAuthApp(oapp) + rapp, _, err := adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) oapp.Name = GenerateTestAppName() - rapp2, _, err := client.CreateOAuthApp(oapp) + rapp2, _, err := client.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) - rrapp, _, err := adminClient.RegenerateOAuthAppSecret(rapp.Id) + rrapp, _, err := adminClient.RegenerateOAuthAppSecret(context.Background(), rapp.Id) require.NoError(t, err) assert.Equal(t, rrapp.Id, rapp.Id, "wrong app") assert.NotEqual(t, rapp.ClientSecret, rrapp.ClientSecret, "secret didn't change") - _, _, err = adminClient.RegenerateOAuthAppSecret(rapp2.Id) + _, _, err = adminClient.RegenerateOAuthAppSecret(context.Background(), rapp2.Id) require.NoError(t, err) - rapp, _, err = adminClient.CreateOAuthApp(oapp) + rapp, _, err = adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) oapp.Name = GenerateTestAppName() - rapp2, _, err = client.CreateOAuthApp(oapp) + rapp2, _, err = client.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) - _, resp, err := client.RegenerateOAuthAppSecret(rapp.Id) + _, resp, err := client.RegenerateOAuthAppSecret(context.Background(), rapp.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = client.RegenerateOAuthAppSecret(rapp2.Id) + _, _, err = client.RegenerateOAuthAppSecret(context.Background(), rapp2.Id) require.NoError(t, err) // Revoke permission from regular users. th.RemovePermissionFromRole(model.PermissionManageOAuth.Id, model.SystemUserRoleId) - _, resp, err = client.RegenerateOAuthAppSecret(rapp.Id) + _, resp, err = client.RegenerateOAuthAppSecret(context.Background(), rapp.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.RegenerateOAuthAppSecret(rapp.Id) + client.Logout(context.Background()) + _, resp, err = client.RegenerateOAuthAppSecret(context.Background(), rapp.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = adminClient.RegenerateOAuthAppSecret("junk") + _, resp, err = adminClient.RegenerateOAuthAppSecret(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = adminClient.RegenerateOAuthAppSecret(model.NewId()) + _, resp, err = adminClient.RegenerateOAuthAppSecret(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = false }) - _, resp, err = adminClient.RegenerateOAuthAppSecret(rapp.Id) + _, resp, err = adminClient.RegenerateOAuthAppSecret(context.Background(), rapp.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -564,7 +565,7 @@ func TestGetAuthorizedOAuthAppsForUser(t *testing.T) { oapp := &model.OAuthApp{Name: GenerateTestAppName(), Homepage: "https://nowhere.com", Description: "test", CallbackUrls: []string{"https://nowhere.com"}} - rapp, _, err := adminClient.CreateOAuthApp(oapp) + rapp, _, err := adminClient.CreateOAuthApp(context.Background(), oapp) require.NoError(t, err) authRequest := &model.AuthorizeRequest{ @@ -575,10 +576,10 @@ func TestGetAuthorizedOAuthAppsForUser(t *testing.T) { State: "123", } - _, _, err = client.AuthorizeOAuthApp(authRequest) + _, _, err = client.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) - apps, _, err := client.GetAuthorizedOAuthAppsForUser(th.BasicUser.Id, 0, 1000) + apps, _, err := client.GetAuthorizedOAuthAppsForUser(context.Background(), th.BasicUser.Id, 0, 1000) require.NoError(t, err) found := false @@ -590,20 +591,20 @@ func TestGetAuthorizedOAuthAppsForUser(t *testing.T) { } require.True(t, found, "missing app") - _, resp, err := client.GetAuthorizedOAuthAppsForUser(th.BasicUser2.Id, 0, 1000) + _, resp, err := client.GetAuthorizedOAuthAppsForUser(context.Background(), th.BasicUser2.Id, 0, 1000) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetAuthorizedOAuthAppsForUser("junk", 0, 1000) + _, resp, err = client.GetAuthorizedOAuthAppsForUser(context.Background(), "junk", 0, 1000) require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.GetAuthorizedOAuthAppsForUser(th.BasicUser.Id, 0, 1000) + client.Logout(context.Background()) + _, resp, err = client.GetAuthorizedOAuthAppsForUser(context.Background(), th.BasicUser.Id, 0, 1000) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = adminClient.GetAuthorizedOAuthAppsForUser(th.BasicUser.Id, 0, 1000) + _, _, err = adminClient.GetAuthorizedOAuthAppsForUser(context.Background(), th.BasicUser.Id, 0, 1000) require.NoError(t, err) } @@ -612,7 +613,7 @@ func TestNilAuthorizeOAuthApp(t *testing.T) { defer th.TearDown() client := th.Client - _, _, err := client.AuthorizeOAuthApp(nil) + _, _, err := client.AuthorizeOAuthApp(context.Background(), nil) require.Error(t, err) CheckErrorID(t, err, "api.context.invalid_body_param.app_error") } diff --git a/server/channels/api4/openGraph_test.go b/server/channels/api4/openGraph_test.go index cad83d2924..0cf2ae67db 100644 --- a/server/channels/api4/openGraph_test.go +++ b/server/channels/api4/openGraph_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "fmt" "net/http" "net/http/httptest" @@ -59,7 +60,7 @@ func TestGetOpenGraphMetadata(t *testing.T) { {"path": "/no-og-data/", "title": "", "cacheMissCount": 2}, } { - openGraph, _, err := client.OpenGraph(ts.URL + data["path"].(string)) + openGraph, _, err := client.OpenGraph(context.Background(), ts.URL+data["path"].(string)) require.NoError(t, err) require.Equalf(t, openGraph["title"], data["title"].(string), @@ -70,7 +71,7 @@ func TestGetOpenGraphMetadata(t *testing.T) { } th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableLinkPreviews = false }) - _, resp, err := client.OpenGraph(ts.URL + "/og-data/") + _, resp, err := client.OpenGraph(context.Background(), ts.URL+"/og-data/") require.Error(t, err) CheckNotImplementedStatus(t, resp) } diff --git a/server/channels/api4/permissions_test.go b/server/channels/api4/permissions_test.go index 4d5d9e35f5..00bc9816c7 100644 --- a/server/channels/api4/permissions_test.go +++ b/server/channels/api4/permissions_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/assert" @@ -21,7 +22,7 @@ func TestGetAncillaryPermissions(t *testing.T) { t.Run("Valid Case, Passing in SubSection Permissions", func(t *testing.T) { subsectionPermissions = []string{model.PermissionSysconsoleReadReportingSiteStatistics.Id} expectedAncillaryPermissions = []string{model.PermissionGetAnalytics.Id} - actualAncillaryPermissions, _, err := th.Client.GetAncillaryPermissions(subsectionPermissions) + actualAncillaryPermissions, _, err := th.Client.GetAncillaryPermissions(context.Background(), subsectionPermissions) require.NoError(t, err) assert.Equal(t, append(subsectionPermissions, expectedAncillaryPermissions...), actualAncillaryPermissions) }) @@ -29,7 +30,7 @@ func TestGetAncillaryPermissions(t *testing.T) { t.Run("Invalid Case, Passing in SubSection Permissions That Don't Exist", func(t *testing.T) { subsectionPermissions = []string{"All", "The", "Things", "She", "Said", "Running", "Through", "My", "Head"} expectedAncillaryPermissions = []string{} - actualAncillaryPermissions, _, err := th.Client.GetAncillaryPermissions(subsectionPermissions) + actualAncillaryPermissions, _, err := th.Client.GetAncillaryPermissions(context.Background(), subsectionPermissions) require.NoError(t, err) assert.Equal(t, append(subsectionPermissions, expectedAncillaryPermissions...), actualAncillaryPermissions) }) @@ -37,7 +38,7 @@ func TestGetAncillaryPermissions(t *testing.T) { t.Run("Invalid Case, Passing in nothing", func(t *testing.T) { subsectionPermissions = []string{} expectedAncillaryPermissions = []string{} - _, resp, err := th.Client.GetAncillaryPermissions(subsectionPermissions) + _, resp, err := th.Client.GetAncillaryPermissions(context.Background(), subsectionPermissions) require.Error(t, err) CheckBadRequestStatus(t, resp) }) diff --git a/server/channels/api4/plugin_test.go b/server/channels/api4/plugin_test.go index fb9ed20a57..ae12f0d152 100644 --- a/server/channels/api4/plugin_test.go +++ b/server/channels/api4/plugin_test.go @@ -5,6 +5,7 @@ package api4 import ( "bytes" + "context" "encoding/base64" "encoding/json" "fmt" @@ -56,15 +57,15 @@ func TestPlugin(t *testing.T) { url := testServer.URL - manifest, _, err := client.InstallPluginFromURL(url, false) + manifest, _, err := client.InstallPluginFromURL(context.Background(), url, false) require.NoError(t, err) assert.Equal(t, "testplugin", manifest.Id) - _, resp, err := client.InstallPluginFromURL(url, false) + _, resp, err := client.InstallPluginFromURL(context.Background(), url, false) require.Error(t, err) CheckBadRequestStatus(t, resp) - manifest, _, err = client.InstallPluginFromURL(url, true) + manifest, _, err = client.InstallPluginFromURL(context.Background(), url, true) require.NoError(t, err) assert.Equal(t, "testplugin", manifest.Id) @@ -73,41 +74,41 @@ func TestPlugin(t *testing.T) { assert.Nil(t, appErr) assert.True(t, pluginStored) - _, err = client.RemovePlugin(manifest.Id) + _, err = client.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) th.App.Channels().RemovePlugin(manifest.Id) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = false }) - _, resp, err = client.InstallPluginFromURL(url, false) + _, resp, err = client.InstallPluginFromURL(context.Background(), url, false) require.Error(t, err) CheckNotImplementedStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) - _, resp, err = th.Client.InstallPluginFromURL(url, false) + _, resp, err = th.Client.InstallPluginFromURL(context.Background(), url, false) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.InstallPluginFromURL("http://nodata", false) + _, resp, err = client.InstallPluginFromURL(context.Background(), "http://nodata", false) require.Error(t, err) CheckBadRequestStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.AllowInsecureDownloadURL = false }) - _, resp, err = client.InstallPluginFromURL(url, false) + _, resp, err = client.InstallPluginFromURL(context.Background(), url, false) require.Error(t, err) CheckBadRequestStatus(t, resp) // Successful upload - manifest, _, err = client.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err = client.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) assert.Equal(t, "testplugin", manifest.Id) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.EnableUploads = true }) - manifest, _, err = client.UploadPluginForced(bytes.NewReader(tarData)) + manifest, _, err = client.UploadPluginForced(context.Background(), bytes.NewReader(tarData)) defer os.RemoveAll("plugins/testplugin") require.NoError(t, err) @@ -119,12 +120,12 @@ func TestPlugin(t *testing.T) { assert.True(t, pluginStored) // Upload error cases - _, resp, err = client.UploadPlugin(bytes.NewReader([]byte("badfile"))) + _, resp, err = client.UploadPlugin(context.Background(), bytes.NewReader([]byte("badfile"))) require.Error(t, err) CheckBadRequestStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = false }) - _, resp, err = client.UploadPlugin(bytes.NewReader(tarData)) + _, resp, err = client.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.Error(t, err) CheckNotImplementedStatus(t, resp) @@ -132,21 +133,21 @@ func TestPlugin(t *testing.T) { *cfg.PluginSettings.Enable = true *cfg.PluginSettings.EnableUploads = false }) - _, resp, err = client.UploadPlugin(bytes.NewReader(tarData)) + _, resp, err = client.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.Error(t, err) CheckNotImplementedStatus(t, resp) - _, resp, err = client.InstallPluginFromURL(url, false) + _, resp, err = client.InstallPluginFromURL(context.Background(), url, false) require.Error(t, err) CheckNotImplementedStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.EnableUploads = true }) - _, resp, err = th.Client.UploadPlugin(bytes.NewReader(tarData)) + _, resp, err = th.Client.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.Error(t, err) CheckForbiddenStatus(t, resp) // Successful gets - pluginsResp, _, err := client.GetPlugins() + pluginsResp, _, err := client.GetPlugins(context.Background()) require.NoError(t, err) found := false @@ -168,10 +169,10 @@ func TestPlugin(t *testing.T) { assert.False(t, found) // Successful activate - _, err = client.EnablePlugin(manifest.Id) + _, err = client.EnablePlugin(context.Background(), manifest.Id) require.NoError(t, err) - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) found = false @@ -184,19 +185,19 @@ func TestPlugin(t *testing.T) { assert.True(t, found) // Activate error case - resp, err = client.EnablePlugin("junk") + resp, err = client.EnablePlugin(context.Background(), "junk") require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = client.EnablePlugin("JUNK") + resp, err = client.EnablePlugin(context.Background(), "JUNK") require.Error(t, err) CheckNotFoundStatus(t, resp) // Successful deactivate - _, err = client.DisablePlugin(manifest.Id) + _, err = client.DisablePlugin(context.Background(), manifest.Id) require.NoError(t, err) - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) found = false @@ -209,26 +210,26 @@ func TestPlugin(t *testing.T) { assert.True(t, found) // Deactivate error case - resp, err = client.DisablePlugin("junk") + resp, err = client.DisablePlugin(context.Background(), "junk") require.Error(t, err) CheckNotFoundStatus(t, resp) // Get error cases th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = false }) - _, resp, err = client.GetPlugins() + _, resp, err = client.GetPlugins(context.Background()) require.Error(t, err) CheckNotImplementedStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) - _, resp, err = th.Client.GetPlugins() + _, resp, err = th.Client.GetPlugins(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) // Successful webapp get - _, err = client.EnablePlugin(manifest.Id) + _, err = client.EnablePlugin(context.Background(), manifest.Id) require.NoError(t, err) - manifests, _, err := th.Client.GetWebappPlugins() + manifests, _, err := th.Client.GetWebappPlugins(context.Background()) require.NoError(t, err) found = false @@ -241,25 +242,25 @@ func TestPlugin(t *testing.T) { assert.True(t, found) // Successful remove - _, err = client.RemovePlugin(manifest.Id) + _, err = client.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) // Remove error cases - resp, err = client.RemovePlugin(manifest.Id) + resp, err = client.RemovePlugin(context.Background(), manifest.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = false }) - resp, err = client.RemovePlugin(manifest.Id) + resp, err = client.RemovePlugin(context.Background(), manifest.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PluginSettings.Enable = true }) - resp, err = th.Client.RemovePlugin(manifest.Id) + resp, err = th.Client.RemovePlugin(context.Background(), manifest.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = client.RemovePlugin("bad.id") + resp, err = client.RemovePlugin(context.Background(), "bad.id") require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -284,7 +285,7 @@ func TestNotifyClusterPluginEvent(t *testing.T) { testCluster.ClearMessages() // Successful upload - manifest, _, err := th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) require.Equal(t, "testplugin", manifest.Id) @@ -311,7 +312,7 @@ func TestNotifyClusterPluginEvent(t *testing.T) { // Upgrade testCluster.ClearMessages() - manifest, _, err = th.SystemAdminClient.UploadPluginForced(bytes.NewReader(tarData)) + manifest, _, err = th.SystemAdminClient.UploadPluginForced(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) require.Equal(t, "testplugin", manifest.Id) @@ -337,7 +338,7 @@ func TestNotifyClusterPluginEvent(t *testing.T) { }() testCluster.ClearMessages() - _, err = th.SystemAdminClient.RemovePlugin(manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) result := <-done @@ -390,12 +391,12 @@ func TestDisableOnRemove(t *testing.T) { }) // Upload - manifest, _, err := client.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := client.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) require.Equal(t, "testplugin", manifest.Id) // Check initial status - pluginsResp, _, err := client.GetPlugins() + pluginsResp, _, err := client.GetPlugins(context.Background()) require.NoError(t, err) require.Empty(t, pluginsResp.Active) require.Equal(t, pluginsResp.Inactive, []*model.PluginInfo{{ @@ -403,11 +404,11 @@ func TestDisableOnRemove(t *testing.T) { }}) // Enable plugin - _, err = client.EnablePlugin(manifest.Id) + _, err = client.EnablePlugin(context.Background(), manifest.Id) require.NoError(t, err) // Confirm enabled status - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Empty(t, pluginsResp.Inactive) require.Equal(t, pluginsResp.Active, []*model.PluginInfo{{ @@ -416,12 +417,12 @@ func TestDisableOnRemove(t *testing.T) { if tc.Upgrade { // Upgrade - manifest, _, err = client.UploadPluginForced(bytes.NewReader(tarData)) + manifest, _, err = client.UploadPluginForced(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) require.Equal(t, "testplugin", manifest.Id) // Plugin should remain active - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Empty(t, pluginsResp.Inactive) require.Equal(t, pluginsResp.Active, []*model.PluginInfo{{ @@ -430,22 +431,22 @@ func TestDisableOnRemove(t *testing.T) { } // Remove plugin - _, err = client.RemovePlugin(manifest.Id) + _, err = client.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) // Plugin should have no status - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Empty(t, pluginsResp.Inactive) require.Empty(t, pluginsResp.Active) // Upload same plugin - manifest, _, err = client.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err = client.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) require.Equal(t, "testplugin", manifest.Id) // Plugin should be inactive - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Empty(t, pluginsResp.Active) require.Equal(t, pluginsResp.Inactive, []*model.PluginInfo{{ @@ -453,7 +454,7 @@ func TestDisableOnRemove(t *testing.T) { }}) // Clean up - _, err = client.RemovePlugin(manifest.Id) + _, err = client.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) }) }) @@ -476,7 +477,7 @@ func TestGetMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = "invalid.com" }) - plugins, resp, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, resp, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.Error(t, err) CheckNotImplementedStatus(t, resp) require.Nil(t, plugins) @@ -488,7 +489,7 @@ func TestGetMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = "invalid.com" }) - plugins, resp, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, resp, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, plugins) @@ -500,7 +501,7 @@ func TestGetMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = "invalid.com" }) - plugins, resp, err := th.Client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, resp, err := th.Client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.Error(t, err) CheckForbiddenStatus(t, resp) require.Nil(t, plugins) @@ -520,7 +521,7 @@ func TestGetMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = testServer.URL }) - plugins, _, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Empty(t, plugins) }, "empty response from server") @@ -545,7 +546,7 @@ func TestGetMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = testServer.URL }) - plugins, _, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Empty(t, plugins) }, "verify server version is passed through") @@ -569,7 +570,7 @@ func TestGetMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = testServer.URL }) - plugins, _, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Empty(t, plugins) }, "verify EnterprisePlugins is false for TE") @@ -598,7 +599,7 @@ func TestGetMarketplacePlugins(t *testing.T) { *l.Features.EnterprisePlugins = false th.App.Srv().SetLicense(l) - plugins, _, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Empty(t, plugins) }, "verify EnterprisePlugins is false for E10") @@ -624,7 +625,7 @@ func TestGetMarketplacePlugins(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("enterprise_plugins")) - plugins, _, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Empty(t, plugins) }, "verify EnterprisePlugins is true for E20") @@ -648,7 +649,7 @@ func TestGetMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = testServer.URL }) - plugins, _, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Empty(t, plugins) }, "verify EnterprisePlugins is false if there is no license") @@ -674,7 +675,7 @@ func TestGetMarketplacePlugins(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("cloud")) - plugins, _, err := client.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := client.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Empty(t, plugins) }, "verify Cloud is true for cloud license") @@ -728,11 +729,11 @@ func TestGetInstalledMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = testServer.URL }) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Equal(t, samplePlugins, plugins) - manifest, _, err := th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) testIcon, err := os.ReadFile(filepath.Join(path, "test.svg")) @@ -758,14 +759,14 @@ func TestGetInstalledMarketplacePlugins(t *testing.T) { return strings.ToLower(expectedPlugins[i].Manifest.Name) < strings.ToLower(expectedPlugins[j].Manifest.Name) }) - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Equal(t, expectedPlugins, plugins) - _, err = th.SystemAdminClient.RemovePlugin(manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Equal(t, samplePlugins, plugins) }) @@ -780,7 +781,7 @@ func TestGetInstalledMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.EnableMarketplace = true }) - manifest, _, err := th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) newPlugin := &model.MarketplacePlugin{ @@ -809,14 +810,14 @@ func TestGetInstalledMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = testServer.URL }) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Equal(t, expectedPlugins, plugins) - _, err = th.SystemAdminClient.RemovePlugin(manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) newPlugin.InstalledVersion = "" require.Equal(t, expectedPlugins, plugins) @@ -873,11 +874,11 @@ func TestSearchGetMarketplacePlugins(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = testServer.URL }) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Equal(t, samplePlugins, plugins) - manifest, _, err := th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) plugin1 := &model.MarketplacePlugin{ @@ -896,7 +897,7 @@ func TestSearchGetMarketplacePlugins(t *testing.T) { } expectedPlugins := append(samplePlugins, plugin1) - manifest, _, err = th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarDataV2)) + manifest, _, err = th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarDataV2)) require.NoError(t, err) plugin2 := &model.MarketplacePlugin{ @@ -918,32 +919,32 @@ func TestSearchGetMarketplacePlugins(t *testing.T) { return strings.ToLower(expectedPlugins[i].Manifest.Name) < strings.ToLower(expectedPlugins[j].Manifest.Name) }) - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Equal(t, expectedPlugins, plugins) // Search for plugins from the server - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{Filter: "testplugin2"}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{Filter: "testplugin2"}) require.NoError(t, err) require.Equal(t, []*model.MarketplacePlugin{plugin2}, plugins) - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{Filter: "a second plugin"}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{Filter: "a second plugin"}) require.NoError(t, err) require.Equal(t, []*model.MarketplacePlugin{plugin2}, plugins) - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{Filter: "User Satisfaction Surveys"}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{Filter: "User Satisfaction Surveys"}) require.NoError(t, err) require.Equal(t, samplePlugins, plugins) - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{Filter: "NOFILTER"}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{Filter: "NOFILTER"}) require.NoError(t, err) require.Nil(t, plugins) // cleanup - _, err = th.SystemAdminClient.RemovePlugin(plugin1.Manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), plugin1.Manifest.Id) require.NoError(t, err) - _, err = th.SystemAdminClient.RemovePlugin(plugin2.Manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), plugin2.Manifest.Id) require.NoError(t, err) }) } @@ -989,7 +990,7 @@ func TestGetLocalPluginInMarketplace(t *testing.T) { *cfg.PluginSettings.EnableRemoteMarketplace = true }) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Len(t, plugins, len(samplePlugins)) @@ -1007,15 +1008,15 @@ func TestGetLocalPluginInMarketplace(t *testing.T) { tarData, err := os.ReadFile(filepath.Join(path, "testplugin.tar.gz")) require.NoError(t, err) - manifest, _, err := th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Len(t, plugins, 2) - _, err = th.SystemAdminClient.RemovePlugin(manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) }) @@ -1026,7 +1027,7 @@ func TestGetLocalPluginInMarketplace(t *testing.T) { }) // No marketplace plugins returned - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Len(t, plugins, 0) @@ -1036,7 +1037,7 @@ func TestGetLocalPluginInMarketplace(t *testing.T) { tarData, err := os.ReadFile(filepath.Join(path, "testplugin.tar.gz")) require.NoError(t, err) - manifest, _, err := th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) testIcon, err := os.ReadFile(filepath.Join(path, "test.svg")) @@ -1054,14 +1055,14 @@ func TestGetLocalPluginInMarketplace(t *testing.T) { InstalledVersion: manifest.Version, } - plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err = th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) // Only get the local plugins require.Len(t, plugins, 1) require.Equal(t, newPlugin, plugins[0]) - _, err = th.SystemAdminClient.RemovePlugin(manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) }) @@ -1076,7 +1077,7 @@ func TestGetLocalPluginInMarketplace(t *testing.T) { tarData, err := os.ReadFile(filepath.Join(path, "testplugin.tar.gz")) require.NoError(t, err) - manifest, _, err := th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) testIcon, err := os.ReadFile(filepath.Join(path, "test.svg")) @@ -1098,13 +1099,13 @@ func TestGetLocalPluginInMarketplace(t *testing.T) { InstalledVersion: manifest.Version, } - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{LocalOnly: true}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{LocalOnly: true}) require.NoError(t, err) require.Len(t, plugins, 1) require.Equal(t, newPlugin, plugins[0]) - _, err = th.SystemAdminClient.RemovePlugin(manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) }) } @@ -1152,16 +1153,16 @@ func TestGetRemotePluginInMarketplace(t *testing.T) { tarData, err := os.ReadFile(filepath.Join(path, "testplugin.tar.gz")) require.NoError(t, err) - manifest, _, err := th.SystemAdminClient.UploadPlugin(bytes.NewReader(tarData)) + manifest, _, err := th.SystemAdminClient.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.NoError(t, err) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{RemoteOnly: true}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{RemoteOnly: true}) require.NoError(t, err) require.Len(t, plugins, 1) require.Equal(t, samplePlugins[0], plugins[0]) - _, err = th.SystemAdminClient.RemovePlugin(manifest.Id) + _, err = th.SystemAdminClient.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) } @@ -1217,7 +1218,7 @@ func TestGetPrepackagedPluginInMarketplace(t *testing.T) { *cfg.PluginSettings.EnableUploads = true }) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) expectedPlugins := marketplacePlugins @@ -1238,7 +1239,7 @@ func TestGetPrepackagedPluginInMarketplace(t *testing.T) { }) // No marketplace plugins returned - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) // Only returns the prepackaged plugins @@ -1264,7 +1265,7 @@ func TestGetPrepackagedPluginInMarketplace(t *testing.T) { env := th.App.GetPluginsEnvironment() env.SetPrepackagedPlugins([]*plugin.PrepackagedPlugin{newerPrepackagePlugin}) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.Len(t, plugins, 1) @@ -1279,7 +1280,7 @@ func TestGetPrepackagedPluginInMarketplace(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("cloud")) - plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(&model.MarketplacePluginFilter{}) + plugins, _, err := th.SystemAdminClient.GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{}) require.NoError(t, err) require.ElementsMatch(t, marketplacePlugins, plugins) @@ -1354,7 +1355,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { *cfg.PluginSettings.EnableMarketplace = false *cfg.PluginSettings.MarketplaceURL = "invalid.com" }) - plugin, resp, err := client.InstallMarketplacePlugin(request) + plugin, resp, err := client.InstallMarketplacePlugin(context.Background(), request) require.Error(t, err) CheckNotImplementedStatus(t, resp) require.Nil(t, plugin) @@ -1365,12 +1366,12 @@ func TestInstallMarketplacePlugin(t *testing.T) { *cfg.PluginSettings.Enable = true *cfg.PluginSettings.RequirePluginSignature = true }) - manifest, resp, err := client.UploadPlugin(bytes.NewReader(tarData)) + manifest, resp, err := client.UploadPlugin(context.Background(), bytes.NewReader(tarData)) require.Error(t, err) CheckNotImplementedStatus(t, resp) require.Nil(t, manifest) - manifest, resp, err = client.InstallPluginFromURL("some_url", true) + manifest, resp, err = client.InstallPluginFromURL(context.Background(), "some_url", true) require.Error(t, err) CheckNotImplementedStatus(t, resp) require.Nil(t, manifest) @@ -1382,7 +1383,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = "invalid.com" }) - plugin, resp, err := client.InstallMarketplacePlugin(request) + plugin, resp, err := client.InstallMarketplacePlugin(context.Background(), request) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, plugin) @@ -1394,7 +1395,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = "invalid.com" }) - plugin, resp, err := th.Client.InstallMarketplacePlugin(request) + plugin, resp, err := th.Client.InstallMarketplacePlugin(context.Background(), request) require.Error(t, err) CheckForbiddenStatus(t, resp) require.Nil(t, plugin) @@ -1414,7 +1415,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { *cfg.PluginSettings.MarketplaceURL = testServer.URL }) pRequest := &model.InstallMarketplacePluginRequest{Id: "some_plugin_id"} - plugin, resp, err := client.InstallMarketplacePlugin(pRequest) + plugin, resp, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, plugin) @@ -1435,7 +1436,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { *cfg.PluginSettings.AllowInsecureDownloadURL = true }) pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin2"} - plugin, resp, err := client.InstallMarketplacePlugin(pRequest) + plugin, resp, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, plugin) @@ -1465,7 +1466,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { require.Nil(t, appErr) pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin2"} - manifest, _, err := client.InstallMarketplacePlugin(pRequest) + manifest, _, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.NoError(t, err) require.NotNil(t, manifest) require.Equal(t, "testplugin2", manifest.Id) @@ -1476,7 +1477,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { require.Nil(t, appErr) require.EqualValues(t, sigFile, savedSigFile) - _, err = client.RemovePlugin(manifest.Id) + _, err = client.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) exists, appErr := th.App.FileExists(filePath) require.Nil(t, appErr) @@ -1510,7 +1511,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { require.Nil(t, appErr) pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin2", Version: "9.9.9"} - manifest, _, err := client.InstallMarketplacePlugin(pRequest) + manifest, _, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.NoError(t, err) require.NotNil(t, manifest) require.Equal(t, "testplugin2", manifest.Id) @@ -1521,7 +1522,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { require.Nil(t, appErr) require.EqualValues(t, sigFile, savedSigFile) - _, err = client.RemovePlugin(manifest.Id) + _, err = client.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) exists, appErr := th.App.FileExists(filePath) require.Nil(t, appErr) @@ -1557,7 +1558,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { }) pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin"} - manifest, resp, err := client.InstallMarketplacePlugin(pRequest) + manifest, resp, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, manifest) @@ -1595,7 +1596,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { th.App.Srv().SetLicense(l) pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin"} - manifest, resp, err := client.InstallMarketplacePlugin(pRequest) + manifest, resp, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, manifest) @@ -1629,7 +1630,7 @@ func TestInstallMarketplacePlugin(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("enterprise_plugins")) pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin"} - manifest, resp, err := client.InstallMarketplacePlugin(pRequest) + manifest, resp, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, manifest) @@ -1755,14 +1756,14 @@ func TestInstallMarketplacePluginPrepackagedDisabled(t *testing.T) { env := th.App.GetPluginsEnvironment() - pluginsResp, _, err := client.GetPlugins() + pluginsResp, _, err := client.GetPlugins(context.Background()) require.NoError(t, err) require.Len(t, pluginsResp.Active, 0) require.Len(t, pluginsResp.Inactive, 0) t.Run("Should fail to install unknown prepackaged plugin", func(t *testing.T) { pRequest := &model.InstallMarketplacePluginRequest{Id: "testpluginXX"} - manifest, resp, err := client.InstallMarketplacePlugin(pRequest) + manifest, resp, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, manifest) @@ -1772,7 +1773,7 @@ func TestInstallMarketplacePluginPrepackagedDisabled(t *testing.T) { require.Equal(t, "testplugin", plugins[0].Manifest.Id) require.Equal(t, pluginSignatureData, plugins[0].Signature) - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Len(t, pluginsResp.Active, 0) require.Len(t, pluginsResp.Inactive, 0) @@ -1780,18 +1781,18 @@ func TestInstallMarketplacePluginPrepackagedDisabled(t *testing.T) { t.Run("Install prepackaged plugin with Marketplace disabled", func(t *testing.T) { pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin"} - manifest, _, err := client.InstallMarketplacePlugin(pRequest) + manifest, _, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.NoError(t, err) require.NotNil(t, manifest) require.Equal(t, "testplugin", manifest.Id) require.Equal(t, "0.0.1", manifest.Version) t.Cleanup(func() { - _, err = client.RemovePlugin(manifest.Id) + _, err = client.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) }) - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Len(t, pluginsResp.Active, 0) require.Equal(t, pluginsResp.Inactive, []*model.PluginInfo{{ @@ -1801,7 +1802,7 @@ func TestInstallMarketplacePluginPrepackagedDisabled(t *testing.T) { t.Run("Try to install remote marketplace plugin while Marketplace is disabled", func(t *testing.T) { pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin2"} - manifest, resp, err := client.InstallMarketplacePlugin(pRequest) + manifest, resp, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, manifest) @@ -1817,11 +1818,11 @@ func TestInstallMarketplacePluginPrepackagedDisabled(t *testing.T) { t.Run("Install prepackaged, not listed plugin with Marketplace enabled", func(t *testing.T) { pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin"} - manifest, _, err := client.InstallMarketplacePlugin(pRequest) + manifest, _, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.NoError(t, err) t.Cleanup(func() { - _, err = client.RemovePlugin(manifest.Id) + _, err = client.RemovePlugin(context.Background(), manifest.Id) require.NoError(t, err) }) @@ -1832,30 +1833,30 @@ func TestInstallMarketplacePluginPrepackagedDisabled(t *testing.T) { t.Run("Install both a prepacked and a Marketplace plugin", func(t *testing.T) { pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin"} - manifest1, _, err := client.InstallMarketplacePlugin(pRequest) + manifest1, _, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.NoError(t, err) require.NotNil(t, manifest1) assert.Equal(t, "testplugin", manifest1.Id) assert.Equal(t, "0.0.1", manifest1.Version) t.Cleanup(func() { - _, err = client.RemovePlugin(manifest1.Id) + _, err = client.RemovePlugin(context.Background(), manifest1.Id) require.NoError(t, err) }) pRequest = &model.InstallMarketplacePluginRequest{Id: "testplugin2"} - manifest2, _, err := client.InstallMarketplacePlugin(pRequest) + manifest2, _, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.NoError(t, err) require.NotNil(t, manifest2) require.Equal(t, "testplugin2", manifest2.Id) require.Equal(t, "1.2.3", manifest2.Version) t.Cleanup(func() { - _, err = client.RemovePlugin(manifest2.Id) + _, err = client.RemovePlugin(context.Background(), manifest2.Id) require.NoError(t, err) }) - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Len(t, pluginsResp.Active, 0) require.ElementsMatch(t, pluginsResp.Inactive, []*model.PluginInfo{ @@ -1927,29 +1928,29 @@ func TestInstallMarketplacePluginPrepackagedDisabled(t *testing.T) { require.Equal(t, "testplugin", plugins[0].Manifest.Id) require.Empty(t, plugins[0].Signature) - pluginsResp, _, err := client.GetPlugins() + pluginsResp, _, err := client.GetPlugins(context.Background()) require.NoError(t, err) require.Len(t, pluginsResp.Active, 0) require.Len(t, pluginsResp.Inactive, 0) pRequest := &model.InstallMarketplacePluginRequest{Id: "testplugin"} - manifest, resp, err := client.InstallMarketplacePlugin(pRequest) + manifest, resp, err := client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, manifest) - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Len(t, pluginsResp.Active, 0) require.Len(t, pluginsResp.Inactive, 0) pRequest = &model.InstallMarketplacePluginRequest{Id: "testplugin2"} - manifest, resp, err = client.InstallMarketplacePlugin(pRequest) + manifest, resp, err = client.InstallMarketplacePlugin(context.Background(), pRequest) require.Error(t, err) CheckInternalErrorStatus(t, resp) require.Nil(t, manifest) - pluginsResp, _, err = client.GetPlugins() + pluginsResp, _, err = client.GetPlugins(context.Background()) require.NoError(t, err) require.Len(t, pluginsResp.Active, 0) require.Len(t, pluginsResp.Inactive, 0) diff --git a/server/channels/api4/post_test.go b/server/channels/api4/post_test.go index 32e3f2a7bb..b217c373dc 100644 --- a/server/channels/api4/post_test.go +++ b/server/channels/api4/post_test.go @@ -38,7 +38,7 @@ func TestCreatePost(t *testing.T) { post := &model.Post{ChannelId: th.BasicChannel.Id, Message: "#hashtag a" + model.NewId() + "a", Props: model.StringInterface{model.PropsAddChannelMember: "no good"}, DeleteAt: 101} - rpost, resp, err2 := client.CreatePost(post) + rpost, resp, err2 := client.CreatePost(context.Background(), post) require.NoError(t, err2) CheckCreatedStatus(t, resp) @@ -50,24 +50,24 @@ func TestCreatePost(t *testing.T) { require.Equal(t, 0, int(rpost.DeleteAt), "newly created post shouldn't have DeleteAt set") post.RootId = rpost.Id - _, _, err2 = client.CreatePost(post) + _, _, err2 = client.CreatePost(context.Background(), post) require.NoError(t, err2) post.RootId = "junk" - _, resp, err2 = client.CreatePost(post) + _, resp, err2 = client.CreatePost(context.Background(), post) require.Error(t, err2) CheckBadRequestStatus(t, resp) post2 := &model.Post{ChannelId: th.BasicChannel2.Id, Message: "zz" + model.NewId() + "a", CreateAt: 123} - rpost2, _, _ := client.CreatePost(post2) + rpost2, _, _ := client.CreatePost(context.Background(), post2) require.NotEqual(t, post2.CreateAt, rpost2.CreateAt, "create at should not match") t.Run("with file uploaded by same user", func(t *testing.T) { - fileResp, _, err := client.UploadFile([]byte("data"), th.BasicChannel.Id, "test") + fileResp, _, err := client.UploadFile(context.Background(), []byte("data"), th.BasicChannel.Id, "test") require.NoError(t, err) fileId := fileResp.FileInfos[0].Id - postWithFiles, _, err := client.CreatePost(&model.Post{ + postWithFiles, _, err := client.CreatePost(context.Background(), &model.Post{ ChannelId: th.BasicChannel.Id, Message: "with files", FileIds: model.StringArray{fileId}, @@ -75,17 +75,17 @@ func TestCreatePost(t *testing.T) { require.NoError(t, err) assert.Equal(t, model.StringArray{fileId}, postWithFiles.FileIds) - actualPostWithFiles, _, err := client.GetPost(postWithFiles.Id, "") + actualPostWithFiles, _, err := client.GetPost(context.Background(), postWithFiles.Id, "") require.NoError(t, err) assert.Equal(t, model.StringArray{fileId}, actualPostWithFiles.FileIds) }) t.Run("with file uploaded by different user", func(t *testing.T) { - fileResp, _, err := th.SystemAdminClient.UploadFile([]byte("data"), th.BasicChannel.Id, "test") + fileResp, _, err := th.SystemAdminClient.UploadFile(context.Background(), []byte("data"), th.BasicChannel.Id, "test") require.NoError(t, err) fileId := fileResp.FileInfos[0].Id - postWithFiles, _, err := client.CreatePost(&model.Post{ + postWithFiles, _, err := client.CreatePost(context.Background(), &model.Post{ ChannelId: th.BasicChannel.Id, Message: "with files", FileIds: model.StringArray{fileId}, @@ -93,7 +93,7 @@ func TestCreatePost(t *testing.T) { require.NoError(t, err) assert.Empty(t, postWithFiles.FileIds) - actualPostWithFiles, _, err := client.GetPost(postWithFiles.Id, "") + actualPostWithFiles, _, err := client.GetPost(context.Background(), postWithFiles.Id, "") require.NoError(t, err) assert.Empty(t, actualPostWithFiles.FileIds) }) @@ -103,7 +103,7 @@ func TestCreatePost(t *testing.T) { require.Nil(t, appErr) fileId := fileInfo.Id - postWithFiles, _, err := client.CreatePost(&model.Post{ + postWithFiles, _, err := client.CreatePost(context.Background(), &model.Post{ ChannelId: th.BasicChannel.Id, Message: "with files", FileIds: model.StringArray{fileId}, @@ -111,7 +111,7 @@ func TestCreatePost(t *testing.T) { require.NoError(t, err) assert.Equal(t, model.StringArray{fileId}, postWithFiles.FileIds) - actualPostWithFiles, _, err := client.GetPost(postWithFiles.Id, "") + actualPostWithFiles, _, err := client.GetPost(context.Background(), postWithFiles.Id, "") require.NoError(t, err) assert.Equal(t, model.StringArray{fileId}, actualPostWithFiles.FileIds) }) @@ -127,7 +127,7 @@ func TestCreatePost(t *testing.T) { post.RootId = rpost.Id post.Message = "a post with no channel mentions" - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) // Message with no channel mentions should result in no ephemeral message @@ -144,17 +144,17 @@ func TestCreatePost(t *testing.T) { post.RootId = rpost.Id post.Message = "a post with @channel" - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) post.RootId = rpost.Id post.Message = "a post with @all" - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) post.RootId = rpost.Id post.Message = "a post with @here" - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) timeout = time.After(2 * time.Second) @@ -175,39 +175,39 @@ func TestCreatePost(t *testing.T) { post.RootId = "" post.Type = model.PostTypeSystemGeneric - _, resp, err := client.CreatePost(post) + _, resp, err := client.CreatePost(context.Background(), post) require.Error(t, err) CheckBadRequestStatus(t, resp) post.Type = "" post.RootId = rpost2.Id - _, resp, err = client.CreatePost(post) + _, resp, err = client.CreatePost(context.Background(), post) require.Error(t, err) CheckBadRequestStatus(t, resp) post.RootId = "" post.ChannelId = "junk" - _, resp, err = client.CreatePost(post) + _, resp, err = client.CreatePost(context.Background(), post) require.Error(t, err) CheckForbiddenStatus(t, resp) post.ChannelId = model.NewId() - _, resp, err = client.CreatePost(post) + _, resp, err = client.CreatePost(context.Background(), post) require.Error(t, err) CheckForbiddenStatus(t, resp) - r, err := client.DoAPIPost("/posts", "garbage") + r, err := client.DoAPIPost(context.Background(), "/posts", "garbage") require.Error(t, err) require.Equal(t, http.StatusBadRequest, r.StatusCode) - client.Logout() - _, resp, err = client.CreatePost(post) + client.Logout(context.Background()) + _, resp, err = client.CreatePost(context.Background(), post) require.Error(t, err) CheckUnauthorizedStatus(t, resp) post.ChannelId = th.BasicChannel.Id post.CreateAt = 123 - rpost, _, err = th.SystemAdminClient.CreatePost(post) + rpost, _, err = th.SystemAdminClient.CreatePost(context.Background(), post) require.NoError(t, err) require.Equal(t, post.CreateAt, rpost.CreateAt, "create at should match") } @@ -242,7 +242,7 @@ func TestCreatePostForPriority(t *testing.T) { }, }} - _, resp, err := client.CreatePost(post) + _, resp, err := client.CreatePost(context.Background(), post) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -250,7 +250,7 @@ func TestCreatePostForPriority(t *testing.T) { t.Run("should return badRequest when priority is set for reply post", func(t *testing.T) { rootPost := &model.Post{ChannelId: th.BasicChannel.Id, Message: "root"} - post, resp, err := client.CreatePost(rootPost) + post, resp, err := client.CreatePost(context.Background(), rootPost) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -259,7 +259,7 @@ func TestCreatePostForPriority(t *testing.T) { Priority: model.NewString("urgent"), }, }} - _, resp, err = client.CreatePost(replyPost) + _, resp, err = client.CreatePost(context.Background(), replyPost) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -274,7 +274,7 @@ func TestCreatePostForPriority(t *testing.T) { RequestedAck: model.NewBool(true), }, }} - _, resp, err := client.CreatePost(p1) + _, resp, err := client.CreatePost(context.Background(), p1) require.Error(t, err) CheckNotImplementedStatus(t, resp) @@ -285,7 +285,7 @@ func TestCreatePostForPriority(t *testing.T) { PersistentNotifications: model.NewBool(true), }, }} - _, resp, err = client.CreatePost(p2) + _, resp, err = client.CreatePost(context.Background(), p2) require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -306,7 +306,7 @@ func TestCreatePostForPriority(t *testing.T) { PersistentNotifications: model.NewBool(true), }, }} - _, resp, err := client.CreatePost(p1) + _, resp, err := client.CreatePost(context.Background(), p1) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -318,7 +318,7 @@ func TestCreatePostForPriority(t *testing.T) { PersistentNotifications: model.NewBool(true), }, }} - _, resp, err := client.CreatePost(p1) + _, resp, err := client.CreatePost(context.Background(), p1) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -342,7 +342,7 @@ func TestCreatePostForPriority(t *testing.T) { PersistentNotifications: model.NewBool(true), }, }} - _, resp, err := client.CreatePost(p1) + _, resp, err := client.CreatePost(context.Background(), p1) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -353,7 +353,7 @@ func TestCreatePostForPriority(t *testing.T) { Priority: model.NewString("important"), }, }} - _, resp, err := client.CreatePost(p1) + _, resp, err := client.CreatePost(context.Background(), p1) require.NoError(t, err) CheckCreatedStatus(t, resp) }) @@ -365,7 +365,7 @@ func TestCreatePostForPriority(t *testing.T) { RequestedAck: model.NewBool(true), }, }} - _, resp, err := client.CreatePost(p1) + _, resp, err := client.CreatePost(context.Background(), p1) require.NoError(t, err) CheckCreatedStatus(t, resp) }) @@ -378,7 +378,7 @@ func TestCreatePostForPriority(t *testing.T) { PersistentNotifications: model.NewBool(true), }, }} - _, resp, err := client.CreatePost(p1) + _, resp, err := client.CreatePost(context.Background(), p1) require.NoError(t, err) CheckCreatedStatus(t, resp) }) @@ -413,7 +413,7 @@ func TestCreatePostWithOAuthClient(t *testing.T) { }) require.Nil(t, appErr, "should create a session") - post, _, err := th.Client.CreatePost(&model.Post{ + post, _, err := th.Client.CreatePost(context.Background(), &model.Post{ ChannelId: th.BasicPost.ChannelId, Message: "test message", }) @@ -422,7 +422,7 @@ func TestCreatePostWithOAuthClient(t *testing.T) { client := th.CreateClient() client.SetOAuthToken(session.Token) - post, _, err = client.CreatePost(&model.Post{ + post, _, err = client.CreatePost(context.Background(), &model.Post{ ChannelId: th.BasicPost.ChannelId, Message: "test message", }) @@ -441,23 +441,23 @@ func TestCreatePostEphemeral(t *testing.T) { Post: &model.Post{ChannelId: th.BasicChannel.Id, Message: "a" + model.NewId() + "a", Props: model.StringInterface{model.PropsAddChannelMember: "no good"}}, } - rpost, resp, err := client.CreatePostEphemeral(ephemeralPost) + rpost, resp, err := client.CreatePostEphemeral(context.Background(), ephemeralPost) require.NoError(t, err) CheckCreatedStatus(t, resp) require.Equal(t, ephemeralPost.Post.Message, rpost.Message, "message didn't match") require.Equal(t, 0, int(rpost.EditAt), "newly created ephemeral post shouldn't have EditAt set") - r, err := client.DoAPIPost("/posts/ephemeral", "garbage") + r, err := client.DoAPIPost(context.Background(), "/posts/ephemeral", "garbage") require.Error(t, err) require.Equal(t, http.StatusBadRequest, r.StatusCode) - client.Logout() - _, resp, err = client.CreatePostEphemeral(ephemeralPost) + client.Logout(context.Background()) + _, resp, err = client.CreatePostEphemeral(context.Background(), ephemeralPost) require.Error(t, err) CheckUnauthorizedStatus(t, resp) client = th.Client - _, resp, err = client.CreatePostEphemeral(ephemeralPost) + _, resp, err = client.CreatePostEphemeral(context.Background(), ephemeralPost) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -588,7 +588,7 @@ func testCreatePostWithOutgoingHook( CallbackURLs: []string{ts.URL}, } - hook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(hook) + hook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) // create a post to trigger the webhook @@ -598,7 +598,7 @@ func testCreatePostWithOutgoingHook( FileIds: fileIds, } - post, _, err = th.SystemAdminClient.CreatePost(post) + post, _, err = th.SystemAdminClient.CreatePost(context.Background(), post) require.NoError(t, err) wait <- true @@ -614,7 +614,7 @@ func testCreatePostWithOutgoingHook( if commentPostType { time.Sleep(time.Millisecond * 100) - postList, _, err := th.SystemAdminClient.GetPostThread(post.Id, "", false) + postList, _, err := th.SystemAdminClient.GetPostThread(context.Background(), post.Id, "", false) require.NoError(t, err) require.Equal(t, post.Id, postList.Order[0], "wrong order") @@ -698,25 +698,25 @@ func TestCreatePostPublic(t *testing.T) { user := model.User{Email: th.GenerateTestEmail(), Nickname: "Joram Wilander", Password: "hello1", Username: GenerateTestUsername(), Roles: model.SystemUserRoleId} - ruser, _, err := client.CreateUser(&user) + ruser, _, err := client.CreateUser(context.Background(), &user) require.NoError(t, err) - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) - _, resp, err := client.CreatePost(post) + _, resp, err := client.CreatePost(context.Background(), post) require.Error(t, err) CheckForbiddenStatus(t, resp) th.App.UpdateUserRoles(th.Context, ruser.Id, model.SystemUserRoleId+" "+model.SystemPostAllPublicRoleId, false) th.App.Srv().InvalidateAllCaches() - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) post.ChannelId = th.BasicPrivateChannel.Id - _, resp, err = client.CreatePost(post) + _, resp, err = client.CreatePost(context.Background(), post) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -725,15 +725,15 @@ func TestCreatePostPublic(t *testing.T) { th.App.UpdateTeamMemberRoles(th.BasicTeam.Id, ruser.Id, model.TeamUserRoleId+" "+model.TeamPostAllPublicRoleId) th.App.Srv().InvalidateAllCaches() - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) post.ChannelId = th.BasicPrivateChannel.Id - _, resp, err = client.CreatePost(post) + _, resp, err = client.CreatePost(context.Background(), post) require.Error(t, err) CheckForbiddenStatus(t, resp) post.ChannelId = th.BasicChannel.Id - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) } @@ -748,29 +748,29 @@ func TestCreatePostAll(t *testing.T) { directChannel, _ := th.App.GetOrCreateDirectChannel(th.Context, th.BasicUser.Id, th.BasicUser2.Id) - ruser, _, err := client.CreateUser(&user) + ruser, _, err := client.CreateUser(context.Background(), &user) require.NoError(t, err) - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) - _, resp, err := client.CreatePost(post) + _, resp, err := client.CreatePost(context.Background(), post) require.Error(t, err) CheckForbiddenStatus(t, resp) th.App.UpdateUserRoles(th.Context, ruser.Id, model.SystemUserRoleId+" "+model.SystemPostAllRoleId, false) th.App.Srv().InvalidateAllCaches() - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) post.ChannelId = th.BasicPrivateChannel.Id - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) post.ChannelId = directChannel.Id - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) th.App.UpdateUserRoles(th.Context, ruser.Id, model.SystemUserRoleId, false) @@ -778,18 +778,18 @@ func TestCreatePostAll(t *testing.T) { th.App.UpdateTeamMemberRoles(th.BasicTeam.Id, ruser.Id, model.TeamUserRoleId+" "+model.TeamPostAllRoleId) th.App.Srv().InvalidateAllCaches() - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) post.ChannelId = th.BasicPrivateChannel.Id - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) post.ChannelId = th.BasicChannel.Id - _, _, err = client.CreatePost(post) + _, _, err = client.CreatePost(context.Background(), post) require.NoError(t, err) post.ChannelId = directChannel.Id - _, resp, err = client.CreatePost(post) + _, resp, err = client.CreatePost(context.Background(), post) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -808,7 +808,7 @@ func TestCreatePostSendOutOfChannelMentions(t *testing.T) { th.App.AddUserToChannel(th.Context, inChannelUser, th.BasicChannel, false) post1 := &model.Post{ChannelId: th.BasicChannel.Id, Message: "@" + inChannelUser.Username} - _, resp, err := client.CreatePost(post1) + _, resp, err := client.CreatePost(context.Background(), post1) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -827,7 +827,7 @@ func TestCreatePostSendOutOfChannelMentions(t *testing.T) { th.LinkUserToTeam(outOfChannelUser, th.BasicTeam) post2 := &model.Post{ChannelId: th.BasicChannel.Id, Message: "@" + outOfChannelUser.Username} - _, resp, err = client.CreatePost(post2) + _, resp, err = client.CreatePost(context.Background(), post2) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -866,7 +866,7 @@ func TestCreatePostCheckOnlineStatus(t *testing.T) { session, _ := th.App.GetSession(th.Client.AuthToken) cli := th.CreateClient() - _, _, err = cli.Login(th.BasicUser2.Username, th.BasicUser2.Password) + _, _, err = cli.Login(context.Background(), th.BasicUser2.Username, th.BasicUser2.Password) require.NoError(t, err) wsClient, err := th.CreateWebSocketClientWithClient(cli) @@ -939,7 +939,7 @@ func TestUpdatePost(t *testing.T) { data, err2 := testutils.ReadTestFile("test.png") require.NoError(t, err2) for i := 0; i < len(fileIds); i++ { - fileResp, _, err := client.UploadFile(data, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), data, channel.Id, "test.png") require.NoError(t, err) fileIds[i] = fileResp.FileInfos[0].Id } @@ -961,7 +961,7 @@ func TestUpdatePost(t *testing.T) { rpost.Message = msg rpost.UserId = "" - rupost, _, err := client.UpdatePost(rpost.Id, &model.Post{ + rupost, _, err := client.UpdatePost(context.Background(), rpost.Id, &model.Post{ Id: rpost.Id, Message: rpost.Message, FileIds: fileIds[0:2], // one fewer file id @@ -972,7 +972,7 @@ func TestUpdatePost(t *testing.T) { assert.NotEqual(t, 0, rupost.EditAt, "EditAt not updated for post") assert.Equal(t, model.StringArray(fileIds), rupost.FileIds, "FileIds should have not have been updated") - actual, _, err := client.GetPost(rpost.Id, "") + actual, _, err := client.GetPost(context.Background(), rpost.Id, "") require.NoError(t, err) assert.Equal(t, actual.Message, msg, "failed to updates") @@ -984,14 +984,14 @@ func TestUpdatePost(t *testing.T) { msg1 := "#hashtag a" + model.NewId() + " update post again" rpost.Message = msg1 rpost.AddProp(model.PropsAddChannelMember, "no good") - rrupost, _, err := client.UpdatePost(rpost.Id, rpost) + rrupost, _, err := client.UpdatePost(context.Background(), rpost.Id, rpost) require.NoError(t, err) assert.Equal(t, msg1, rrupost.Message, "failed to update message") assert.Equal(t, "#hashtag", rrupost.Hashtags, "failed to update hashtags") assert.Nil(t, rrupost.GetProp(model.PropsAddChannelMember), "failed to sanitize Props['add_channel_member'], should be nil") - actual, _, err := client.GetPost(rpost.Id, "") + actual, _, err := client.GetPost(context.Background(), rpost.Id, "") require.NoError(t, err) assert.Equal(t, msg1, actual.Message, "failed to update message") @@ -1014,7 +1014,7 @@ func TestUpdatePost(t *testing.T) { ChannelId: channel.Id, Message: "zz" + model.NewId() + " update post 2", } - _, resp, err := client.UpdatePost(rpost2.Id, up2) + _, resp, err := client.UpdatePost(context.Background(), rpost2.Id, up2) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -1033,11 +1033,11 @@ func TestUpdatePost(t *testing.T) { Message: "zz" + model.NewId() + " update post 3", FileIds: fileIds[0:2], } - rrupost3, _, err := client.UpdatePost(rpost3.Id, up3) + rrupost3, _, err := client.UpdatePost(context.Background(), rpost3.Id, up3) require.NoError(t, err) assert.Empty(t, rrupost3.FileIds) - actual, _, err := client.GetPost(rpost.Id, "") + actual, _, err := client.GetPost(context.Background(), rpost.Id, "") require.NoError(t, err) assert.Equal(t, model.StringArray(fileIds), actual.FileIds) }) @@ -1053,7 +1053,7 @@ func TestUpdatePost(t *testing.T) { Text: "Hello World", }, }) - rrupost3, _, err := client.UpdatePost(rpost3.Id, up4) + rrupost3, _, err := client.UpdatePost(context.Background(), rpost3.Id, up4) require.NoError(t, err) assert.NotEqual(t, rpost3.EditAt, rrupost3.EditAt) assert.NotEqual(t, rpost3.Attachments(), rrupost3.Attachments()) @@ -1080,38 +1080,38 @@ func TestUpdatePost(t *testing.T) { ChannelId: channel.Id, Message: "zz" + model.NewId() + " update post 4", } - _, resp, err := client.UpdatePost(rpost4.Id, up4) + _, resp, err := client.UpdatePost(context.Background(), rpost4.Id, up4) require.Error(t, err, "should fail on update old post") CheckBadRequestStatus(t, resp) }) t.Run("logged out", func(t *testing.T) { - client.Logout() - _, resp, err := client.UpdatePost(rpost.Id, rpost) + client.Logout(context.Background()) + _, resp, err := client.UpdatePost(context.Background(), rpost.Id, rpost) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("different user", func(t *testing.T) { th.LoginBasic2() - _, resp, err := client.UpdatePost(rpost.Id, rpost) + _, resp, err := client.UpdatePost(context.Background(), rpost.Id, rpost) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) }) t.Run("different user, but team admin", func(t *testing.T) { th.LoginTeamAdmin() - _, resp, err := client.UpdatePost(rpost.Id, rpost) + _, resp, err := client.UpdatePost(context.Background(), rpost.Id, rpost) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) }) t.Run("different user, but system admin", func(t *testing.T) { - _, _, err := th.SystemAdminClient.UpdatePost(rpost.Id, rpost) + _, _, err := th.SystemAdminClient.UpdatePost(context.Background(), rpost.Id, rpost) require.NoError(t, err) }) } @@ -1133,11 +1133,11 @@ func TestUpdateOthersPostInDirectMessageChannel(t *testing.T) { CreateAt: 0, } - post, _, err := th.Client.CreatePost(post) + post, _, err := th.Client.CreatePost(context.Background(), post) require.NoError(t, err) post.Message = "changed" - _, _, err = th.SystemAdminClient.UpdatePost(post.Id, post) + _, _, err = th.SystemAdminClient.UpdatePost(context.Background(), post.Id, post) require.NoError(t, err) } @@ -1153,7 +1153,7 @@ func TestPatchPost(t *testing.T) { data, err2 := testutils.ReadTestFile("test.png") require.NoError(t, err2) for i := 0; i < len(fileIDs); i++ { - fileResp, _, err := client.UploadFile(data, channel.Id, "test.png") + fileResp, _, err := client.UploadFile(context.Background(), data, channel.Id, "test.png") require.NoError(t, err) fileIDs[i] = fileResp.FileInfos[0].Id } @@ -1167,7 +1167,7 @@ func TestPatchPost(t *testing.T) { FileIds: fileIDs[0:2], HasReactions: true, } - post, _, err := client.CreatePost(post) + post, _, err := client.CreatePost(context.Background(), post) require.NoError(t, err) var rpost *model.Post @@ -1181,7 +1181,7 @@ func TestPatchPost(t *testing.T) { patch.FileIds = &patchFileIds patch.HasReactions = model.NewBool(false) - rpost, _, err = client.PatchPost(post.Id, patch) + rpost, _, err = client.PatchPost(context.Background(), post.Id, patch) require.NoError(t, err) assert.False(t, rpost.IsPinned, "IsPinned did not update properly") @@ -1201,34 +1201,34 @@ func TestPatchPost(t *testing.T) { } patch2.Props = &model.StringInterface{"attachments": attachments} - rpost2, _, err := client.PatchPost(post.Id, patch2) + rpost2, _, err := client.PatchPost(context.Background(), post.Id, patch2) require.NoError(t, err) assert.NotEmpty(t, rpost2.GetProp("attachments")) assert.NotEqual(t, rpost.EditAt, rpost2.EditAt) }) t.Run("invalid requests", func(t *testing.T) { - r, err := client.DoAPIPut("/posts/"+post.Id+"/patch", "garbage") + r, err := client.DoAPIPut(context.Background(), "/posts/"+post.Id+"/patch", "garbage") require.EqualError(t, err, ": Invalid or missing post in request body., invalid character 'g' looking for beginning of value") require.Equal(t, http.StatusBadRequest, r.StatusCode, "wrong status code") patch := &model.PostPatch{} - _, resp, err := client.PatchPost("junk", patch) + _, resp, err := client.PatchPost(context.Background(), "junk", patch) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("unknown post", func(t *testing.T) { patch := &model.PostPatch{} - _, resp, err := client.PatchPost(GenerateTestId(), patch) + _, resp, err := client.PatchPost(context.Background(), GenerateTestId(), patch) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("logged out", func(t *testing.T) { - client.Logout() + client.Logout(context.Background()) patch := &model.PostPatch{} - _, resp, err := client.PatchPost(post.Id, patch) + _, resp, err := client.PatchPost(context.Background(), post.Id, patch) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -1236,7 +1236,7 @@ func TestPatchPost(t *testing.T) { t.Run("different user", func(t *testing.T) { th.LoginBasic2() patch := &model.PostPatch{} - _, resp, err := client.PatchPost(post.Id, patch) + _, resp, err := client.PatchPost(context.Background(), post.Id, patch) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -1244,21 +1244,21 @@ func TestPatchPost(t *testing.T) { t.Run("different user, but team admin", func(t *testing.T) { th.LoginTeamAdmin() patch := &model.PostPatch{} - _, resp, err := client.PatchPost(post.Id, patch) + _, resp, err := client.PatchPost(context.Background(), post.Id, patch) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("different user, but system admin", func(t *testing.T) { patch := &model.PostPatch{} - _, _, err := th.SystemAdminClient.PatchPost(post.Id, patch) + _, _, err := th.SystemAdminClient.PatchPost(context.Background(), post.Id, patch) require.NoError(t, err) }) t.Run("edit others posts permission can function independently of edit own post", func(t *testing.T) { th.LoginBasic2() patch := &model.PostPatch{} - _, resp, err := client.PatchPost(post.Id, patch) + _, resp, err := client.PatchPost(context.Background(), post.Id, patch) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -1267,7 +1267,7 @@ func TestPatchPost(t *testing.T) { th.RemovePermissionFromRole(model.PermissionEditPost.Id, model.ChannelUserRoleId) th.AddPermissionToRole(model.PermissionEditOthersPosts.Id, model.ChannelUserRoleId) - _, _, err = client.PatchPost(post.Id, patch) + _, _, err = client.PatchPost(context.Background(), post.Id, patch) require.NoError(t, err) }) @@ -1284,13 +1284,13 @@ func TestPatchPost(t *testing.T) { Message: "#hashtag a message", CreateAt: model.GetMillis() - 2000, } - post2, _, err := th.SystemAdminClient.CreatePost(post2) + post2, _, err := th.SystemAdminClient.CreatePost(context.Background(), post2) require.NoError(t, err) patch2 := &model.PostPatch{ Message: model.NewString("new message"), } - _, resp, err := th.SystemAdminClient.PatchPost(post2.Id, patch2) + _, resp, err := th.SystemAdminClient.PatchPost(context.Background(), post2.Id, patch2) require.Error(t, err) CheckBadRequestStatus(t, resp) require.Equal(t, "api.post.update_post.permissions_time_limit.app_error", err.(*model.AppError).Id, "should be time limit error") @@ -1303,27 +1303,27 @@ func TestPinPost(t *testing.T) { client := th.Client post := th.BasicPost - _, err := client.PinPost(post.Id) + _, err := client.PinPost(context.Background(), post.Id) require.NoError(t, err) rpost, appErr := th.App.GetSinglePost(post.Id, false) require.Nil(t, appErr) require.True(t, rpost.IsPinned, "failed to pin post") - resp, err := client.PinPost("junk") + resp, err := client.PinPost(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.PinPost(GenerateTestId()) + resp, err = client.PinPost(context.Background(), GenerateTestId()) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - resp, err = client.PinPost(post.Id) + client.Logout(context.Background()) + resp, err = client.PinPost(context.Background(), post.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, err = th.SystemAdminClient.PinPost(post.Id) + _, err = th.SystemAdminClient.PinPost(context.Background(), post.Id) require.NoError(t, err) } @@ -1333,27 +1333,27 @@ func TestUnpinPost(t *testing.T) { client := th.Client pinnedPost := th.CreatePinnedPost() - _, err := client.UnpinPost(pinnedPost.Id) + _, err := client.UnpinPost(context.Background(), pinnedPost.Id) require.NoError(t, err) rpost, appErr := th.App.GetSinglePost(pinnedPost.Id, false) require.Nil(t, appErr) require.False(t, rpost.IsPinned) - resp, err := client.UnpinPost("junk") + resp, err := client.UnpinPost(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UnpinPost(GenerateTestId()) + resp, err = client.UnpinPost(context.Background(), GenerateTestId()) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - resp, err = client.UnpinPost(pinnedPost.Id) + client.Logout(context.Background()) + resp, err = client.UnpinPost(context.Background(), pinnedPost.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, err = th.SystemAdminClient.UnpinPost(pinnedPost.Id) + _, err = th.SystemAdminClient.UnpinPost(context.Background(), pinnedPost.Id) require.NoError(t, err) } @@ -1365,7 +1365,7 @@ func TestGetPostsForChannel(t *testing.T) { post1 := th.CreatePost() post2 := th.CreatePost() post3 := &model.Post{ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a", RootId: post1.Id} - post3, _, _ = client.CreatePost(post3) + post3, _, _ = client.CreatePost(context.Background(), post3) time.Sleep(300 * time.Millisecond) since := model.GetMillis() @@ -1374,17 +1374,17 @@ func TestGetPostsForChannel(t *testing.T) { post4 := th.CreatePost() th.TestForAllClients(t, func(t *testing.T, c *model.Client4) { - posts, resp, err := c.GetPostsForChannel(th.BasicChannel.Id, 0, 60, "", false, false) + posts, resp, err := c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 0, 60, "", false, false) require.NoError(t, err) require.Equal(t, post4.Id, posts.Order[0], "wrong order") require.Equal(t, post3.Id, posts.Order[1], "wrong order") require.Equal(t, post2.Id, posts.Order[2], "wrong order") require.Equal(t, post1.Id, posts.Order[3], "wrong order") - posts, resp, _ = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, resp.Etag, false, false) + posts, resp, _ = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 0, 3, resp.Etag, false, false) CheckEtag(t, posts, resp) - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 0, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "wrong number returned") @@ -1393,11 +1393,11 @@ func TestGetPostsForChannel(t *testing.T) { _, ok = posts.Posts[post1.Id] require.True(t, ok, "missing root post") - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 1, 1, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 1, 1, "", false, false) require.NoError(t, err) require.Equal(t, post3.Id, posts.Order[0], "wrong order") - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 10000, 10000, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 10000, 10000, "", false, false) require.NoError(t, err) require.Empty(t, posts.Order, "should be no posts") }) @@ -1405,7 +1405,7 @@ func TestGetPostsForChannel(t *testing.T) { post5 := th.CreatePost() th.TestForAllClients(t, func(t *testing.T, c *model.Client4) { - posts, _, err := c.GetPostsSince(th.BasicChannel.Id, since, false) + posts, _, err := c.GetPostsSince(context.Background(), th.BasicChannel.Id, since, false) require.NoError(t, err) require.Len(t, posts.Posts, 2, "should return 2 posts") @@ -1427,27 +1427,27 @@ func TestGetPostsForChannel(t *testing.T) { require.True(t, f, "missing post") } - _, resp, err := c.GetPostsForChannel("", 0, 60, "", false, false) + _, resp, err := c.GetPostsForChannel(context.Background(), "", 0, 60, "", false, false) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = c.GetPostsForChannel("junk", 0, 60, "", false, false) + _, resp, err = c.GetPostsForChannel(context.Background(), "junk", 0, 60, "", false, false) require.Error(t, err) CheckBadRequestStatus(t, resp) }) - _, resp, err := client.GetPostsForChannel(model.NewId(), 0, 60, "", false, false) + _, resp, err := client.GetPostsForChannel(context.Background(), model.NewId(), 0, 60, "", false, false) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetPostsForChannel(model.NewId(), 0, 60, "", false, false) + client.Logout(context.Background()) + _, resp, err = client.GetPostsForChannel(context.Background(), model.NewId(), 0, 60, "", false, false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) // more tests for next_post_id, prev_post_id, and order // There are 12 posts composed of first 2 system messages and 10 created posts - client.Login(th.BasicUser.Email, th.BasicUser.Password) + client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.CreatePost() // post6 post7 := th.CreatePost() post8 := th.CreatePost() @@ -1457,12 +1457,12 @@ func TestGetPostsForChannel(t *testing.T) { var posts *model.PostList th.TestForAllClients(t, func(t *testing.T, c *model.Client4) { // get the system post IDs posted before the created posts above - posts, _, err = c.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false, false) + posts, _, err = c.GetPostsBefore(context.Background(), th.BasicChannel.Id, post1.Id, 0, 2, "", false, false) require.NoError(t, err) systemPostId1 := posts.Order[1] // similar to '/posts' - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 60, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 0, 60, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 12, "expected 12 posts") require.Equal(t, post10.Id, posts.Order[0], "posts not in order") @@ -1471,7 +1471,7 @@ func TestGetPostsForChannel(t *testing.T) { require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId") // similar to '/posts?per_page=3' - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 3, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 0, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post10.Id, posts.Order[0], "posts not in order") @@ -1480,7 +1480,7 @@ func TestGetPostsForChannel(t *testing.T) { require.Equal(t, post7.Id, posts.PrevPostId, "should return post7.Id as PrevPostId") // similar to '/posts?per_page=3&page=1' - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 1, 3, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 1, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post7.Id, posts.Order[0], "posts not in order") @@ -1489,7 +1489,7 @@ func TestGetPostsForChannel(t *testing.T) { require.Equal(t, post4.Id, posts.PrevPostId, "should return post4.Id as PrevPostId") // similar to '/posts?per_page=3&page=2' - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 2, 3, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 2, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post4.Id, posts.Order[0], "posts not in order") @@ -1498,7 +1498,7 @@ func TestGetPostsForChannel(t *testing.T) { require.Equal(t, post1.Id, posts.PrevPostId, "should return post1.Id as PrevPostId") // similar to '/posts?per_page=3&page=3' - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 3, 3, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 3, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post1.Id, posts.Order[0], "posts not in order") @@ -1507,7 +1507,7 @@ func TestGetPostsForChannel(t *testing.T) { require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId") // similar to '/posts?per_page=3&page=4' - posts, _, err = c.GetPostsForChannel(th.BasicChannel.Id, 4, 3, "", false, false) + posts, _, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 4, 3, "", false, false) require.NoError(t, err) require.Empty(t, posts.Order, "should return 0 post") require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId") @@ -1517,7 +1517,7 @@ func TestGetPostsForChannel(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, c *model.Client4) { channel := th.CreatePublicChannel() th.CreatePostWithClient(th.SystemAdminClient, channel) - th.SystemAdminClient.DeleteChannel(channel.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), channel.Id) experimentalViewArchivedChannels := *th.App.Config().TeamSettings.ExperimentalViewArchivedChannels th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalViewArchivedChannels = true }) @@ -1526,33 +1526,33 @@ func TestGetPostsForChannel(t *testing.T) { }) // the endpoint should work fine when viewing archived channels is enabled - _, _, err = c.GetPostsForChannel(channel.Id, 0, 10, "", false, false) + _, _, err = c.GetPostsForChannel(context.Background(), channel.Id, 0, 10, "", false, false) require.NoError(t, err) // the endpoint should return forbidden if viewing archived channels is disabled th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalViewArchivedChannels = false }) - _, resp, err = c.GetPostsForChannel(channel.Id, 0, 10, "", false, false) + _, resp, err = c.GetPostsForChannel(context.Background(), channel.Id, 0, 10, "", false, false) require.Error(t, err) CheckForbiddenStatus(t, resp) }, "Should forbid to retrieve posts if the channel is archived and users are not allowed to view archived messages") - client.DeletePost(post10.Id) - client.DeletePost(post8.Id) + client.DeletePost(context.Background(), post10.Id) + client.DeletePost(context.Background(), post8.Id) // include deleted posts for non-admin users. - _, resp, err = client.GetPostsForChannel(th.BasicChannel.Id, 0, 100, "", false, true) + _, resp, err = client.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 0, 100, "", false, true) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { // include deleted posts for admin users. - posts, resp, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 100, "", false, true) + posts, resp, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 0, 100, "", false, true) require.NoError(t, err) CheckOKStatus(t, resp) require.Len(t, posts.Order, 12, "expected 12 posts") // not include deleted posts for admin users. - posts, resp, err = c.GetPostsForChannel(th.BasicChannel.Id, 0, 100, "", false, false) + posts, resp, err = c.GetPostsForChannel(context.Background(), th.BasicChannel.Id, 0, 100, "", false, false) require.NoError(t, err) CheckOKStatus(t, resp) require.Len(t, posts.Order, 10, "expected 10 posts") @@ -1576,63 +1576,63 @@ func TestGetFlaggedPostsForUser(t *testing.T) { Name: post1.Id, Value: "true", } - _, err := client.UpdatePreferences(user.Id, model.Preferences{preference}) + _, err := client.UpdatePreferences(context.Background(), user.Id, model.Preferences{preference}) require.NoError(t, err) preference.Name = post2.Id - _, err = client.UpdatePreferences(user.Id, model.Preferences{preference}) + _, err = client.UpdatePreferences(context.Background(), user.Id, model.Preferences{preference}) require.NoError(t, err) opl := model.NewPostList() opl.AddPost(post1) opl.AddOrder(post1.Id) - rpl, _, err := client.GetFlaggedPostsForUserInChannel(user.Id, channel1.Id, 0, 10) + rpl, _, err := client.GetFlaggedPostsForUserInChannel(context.Background(), user.Id, channel1.Id, 0, 10) require.NoError(t, err) require.Len(t, rpl.Posts, 1, "should have returned 1 post") require.Equal(t, opl.Posts, rpl.Posts, "posts should have matched") - rpl, _, err = client.GetFlaggedPostsForUserInChannel(user.Id, channel1.Id, 0, 1) + rpl, _, err = client.GetFlaggedPostsForUserInChannel(context.Background(), user.Id, channel1.Id, 0, 1) require.NoError(t, err) require.Len(t, rpl.Posts, 1, "should have returned 1 post") - rpl, _, err = client.GetFlaggedPostsForUserInChannel(user.Id, channel1.Id, 1, 1) + rpl, _, err = client.GetFlaggedPostsForUserInChannel(context.Background(), user.Id, channel1.Id, 1, 1) require.NoError(t, err) require.Empty(t, rpl.Posts) - rpl, _, err = client.GetFlaggedPostsForUserInChannel(user.Id, GenerateTestId(), 0, 10) + rpl, _, err = client.GetFlaggedPostsForUserInChannel(context.Background(), user.Id, GenerateTestId(), 0, 10) require.NoError(t, err) require.Empty(t, rpl.Posts) - rpl, _, err = client.GetFlaggedPostsForUserInChannel(user.Id, "junk", 0, 10) + rpl, _, err = client.GetFlaggedPostsForUserInChannel(context.Background(), user.Id, "junk", 0, 10) require.Error(t, err) require.Nil(t, rpl) opl.AddPost(post2) opl.AddOrder(post2.Id) - rpl, _, err = client.GetFlaggedPostsForUserInTeam(user.Id, team1.Id, 0, 10) + rpl, _, err = client.GetFlaggedPostsForUserInTeam(context.Background(), user.Id, team1.Id, 0, 10) require.NoError(t, err) require.Len(t, rpl.Posts, 2, "should have returned 2 posts") require.Equal(t, opl.Posts, rpl.Posts, "posts should have matched") - rpl, _, err = client.GetFlaggedPostsForUserInTeam(user.Id, team1.Id, 0, 1) + rpl, _, err = client.GetFlaggedPostsForUserInTeam(context.Background(), user.Id, team1.Id, 0, 1) require.NoError(t, err) require.Len(t, rpl.Posts, 1, "should have returned 1 post") - rpl, _, err = client.GetFlaggedPostsForUserInTeam(user.Id, team1.Id, 1, 1) + rpl, _, err = client.GetFlaggedPostsForUserInTeam(context.Background(), user.Id, team1.Id, 1, 1) require.NoError(t, err) require.Len(t, rpl.Posts, 1, "should have returned 1 post") - rpl, _, err = client.GetFlaggedPostsForUserInTeam(user.Id, team1.Id, 1000, 10) + rpl, _, err = client.GetFlaggedPostsForUserInTeam(context.Background(), user.Id, team1.Id, 1000, 10) require.NoError(t, err) require.Empty(t, rpl.Posts) - rpl, _, err = client.GetFlaggedPostsForUserInTeam(user.Id, GenerateTestId(), 0, 10) + rpl, _, err = client.GetFlaggedPostsForUserInTeam(context.Background(), user.Id, GenerateTestId(), 0, 10) require.NoError(t, err) require.Empty(t, rpl.Posts) - rpl, _, err = client.GetFlaggedPostsForUserInTeam(user.Id, "junk", 0, 10) + rpl, _, err = client.GetFlaggedPostsForUserInTeam(context.Background(), user.Id, "junk", 0, 10) require.Error(t, err) require.Nil(t, rpl) @@ -1640,25 +1640,25 @@ func TestGetFlaggedPostsForUser(t *testing.T) { post4 := th.CreatePostWithClient(client, channel3) preference.Name = post4.Id - client.UpdatePreferences(user.Id, model.Preferences{preference}) + client.UpdatePreferences(context.Background(), user.Id, model.Preferences{preference}) opl.AddPost(post4) opl.AddOrder(post4.Id) - rpl, _, err = client.GetFlaggedPostsForUser(user.Id, 0, 10) + rpl, _, err = client.GetFlaggedPostsForUser(context.Background(), user.Id, 0, 10) require.NoError(t, err) require.Len(t, rpl.Posts, 3, "should have returned 3 posts") require.Equal(t, opl.Posts, rpl.Posts, "posts should have matched") - rpl, _, err = client.GetFlaggedPostsForUser(user.Id, 0, 2) + rpl, _, err = client.GetFlaggedPostsForUser(context.Background(), user.Id, 0, 2) require.NoError(t, err) require.Len(t, rpl.Posts, 2, "should have returned 2 posts") - rpl, _, err = client.GetFlaggedPostsForUser(user.Id, 2, 2) + rpl, _, err = client.GetFlaggedPostsForUser(context.Background(), user.Id, 2, 2) require.NoError(t, err) require.Len(t, rpl.Posts, 1, "should have returned 1 post") - rpl, _, err = client.GetFlaggedPostsForUser(user.Id, 1000, 10) + rpl, _, err = client.GetFlaggedPostsForUser(context.Background(), user.Id, 1000, 10) require.NoError(t, err) require.Empty(t, rpl.Posts) @@ -1666,20 +1666,20 @@ func TestGetFlaggedPostsForUser(t *testing.T) { post5 := th.CreatePostWithClient(th.SystemAdminClient, channel4) preference.Name = post5.Id - resp, err := client.UpdatePreferences(user.Id, model.Preferences{preference}) + resp, err := client.UpdatePreferences(context.Background(), user.Id, model.Preferences{preference}) require.Error(t, err) CheckForbiddenStatus(t, resp) - rpl, _, err = client.GetFlaggedPostsForUser(user.Id, 0, 10) + rpl, _, err = client.GetFlaggedPostsForUser(context.Background(), user.Id, 0, 10) require.NoError(t, err) require.Len(t, rpl.Posts, 3, "should have returned 3 posts") require.Equal(t, opl.Posts, rpl.Posts, "posts should have matched") th.AddUserToChannel(user, channel4) - _, err = client.UpdatePreferences(user.Id, model.Preferences{preference}) + _, err = client.UpdatePreferences(context.Background(), user.Id, model.Preferences{preference}) require.NoError(t, err) - rpl, _, err = client.GetFlaggedPostsForUser(user.Id, 0, 10) + rpl, _, err = client.GetFlaggedPostsForUser(context.Background(), user.Id, 0, 10) require.NoError(t, err) opl.AddPost(post5) @@ -1690,7 +1690,7 @@ func TestGetFlaggedPostsForUser(t *testing.T) { appErr := th.App.RemoveUserFromChannel(th.Context, user.Id, "", channel4) assert.Nil(t, appErr, "unable to remove user from channel") - rpl, _, err = client.GetFlaggedPostsForUser(user.Id, 0, 10) + rpl, _, err = client.GetFlaggedPostsForUser(context.Background(), user.Id, 0, 10) require.NoError(t, err) opl2 := model.NewPostList() @@ -1704,35 +1704,35 @@ func TestGetFlaggedPostsForUser(t *testing.T) { require.Len(t, rpl.Posts, 3, "should have returned 3 posts") require.Equal(t, opl2.Posts, rpl.Posts, "posts should have matched") - _, resp, err = client.GetFlaggedPostsForUser("junk", 0, 10) + _, resp, err = client.GetFlaggedPostsForUser(context.Background(), "junk", 0, 10) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetFlaggedPostsForUser(GenerateTestId(), 0, 10) + _, resp, err = client.GetFlaggedPostsForUser(context.Background(), GenerateTestId(), 0, 10) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) - _, resp, err = client.GetFlaggedPostsForUserInChannel(user.Id, channel1.Id, 0, 10) + _, resp, err = client.GetFlaggedPostsForUserInChannel(context.Background(), user.Id, channel1.Id, 0, 10) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = client.GetFlaggedPostsForUserInTeam(user.Id, team1.Id, 0, 10) + _, resp, err = client.GetFlaggedPostsForUserInTeam(context.Background(), user.Id, team1.Id, 0, 10) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = client.GetFlaggedPostsForUser(user.Id, 0, 10) + _, resp, err = client.GetFlaggedPostsForUser(context.Background(), user.Id, 0, 10) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetFlaggedPostsForUserInChannel(user.Id, channel1.Id, 0, 10) + _, _, err = th.SystemAdminClient.GetFlaggedPostsForUserInChannel(context.Background(), user.Id, channel1.Id, 0, 10) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetFlaggedPostsForUserInTeam(user.Id, team1.Id, 0, 10) + _, _, err = th.SystemAdminClient.GetFlaggedPostsForUserInTeam(context.Background(), user.Id, team1.Id, 0, 10) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetFlaggedPostsForUser(user.Id, 0, 10) + _, _, err = th.SystemAdminClient.GetFlaggedPostsForUser(context.Background(), user.Id, 0, 10) require.NoError(t, err) mockStore := mocks.Store{} @@ -1758,7 +1758,7 @@ func TestGetFlaggedPostsForUser(t *testing.T) { th.App.Srv().SetStore(&mockStore) - _, resp, err = th.SystemAdminClient.GetFlaggedPostsForUser(user.Id, 0, 10) + _, resp, err = th.SystemAdminClient.GetFlaggedPostsForUser(context.Background(), user.Id, 0, 10) require.Error(t, err) CheckInternalErrorStatus(t, resp) } @@ -1774,7 +1774,7 @@ func TestGetPostsBefore(t *testing.T) { post4 := th.CreatePost() post5 := th.CreatePost() - posts, _, err := client.GetPostsBefore(th.BasicChannel.Id, post3.Id, 0, 100, "", false, false) + posts, _, err := client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post3.Id, 0, 100, "", false, false) require.NoError(t, err) found := make([]bool, 2) @@ -1796,18 +1796,18 @@ func TestGetPostsBefore(t *testing.T) { require.Equal(t, post3.Id, posts.NextPostId, "should match NextPostId") require.Equal(t, "", posts.PrevPostId, "should match empty PrevPostId") - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post4.Id, 1, 1, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post4.Id, 1, 1, "", false, false) require.NoError(t, err) require.Len(t, posts.Posts, 1, "too many posts returned") require.Equal(t, post2.Id, posts.Order[0], "should match returned post") require.Equal(t, post3.Id, posts.NextPostId, "should match NextPostId") require.Equal(t, post1.Id, posts.PrevPostId, "should match PrevPostId") - _, resp, err := client.GetPostsBefore(th.BasicChannel.Id, "junk", 1, 1, "", false, false) + _, resp, err := client.GetPostsBefore(context.Background(), th.BasicChannel.Id, "junk", 1, 1, "", false, false) require.Error(t, err) CheckBadRequestStatus(t, resp) - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post5.Id, 0, 3, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post5.Id, 0, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Posts, 3, "should match length of posts returned") require.Equal(t, post4.Id, posts.Order[0], "should match returned post") @@ -1816,12 +1816,12 @@ func TestGetPostsBefore(t *testing.T) { require.Equal(t, post1.Id, posts.PrevPostId, "should match PrevPostId") // get the system post IDs posted before the created posts above - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post1.Id, 0, 2, "", false, false) require.NoError(t, err) systemPostId2 := posts.Order[0] systemPostId1 := posts.Order[1] - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post5.Id, 1, 3, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post5.Id, 1, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Posts, 3, "should match length of posts returned") require.Equal(t, post1.Id, posts.Order[0], "should match returned post") @@ -1839,7 +1839,7 @@ func TestGetPostsBefore(t *testing.T) { post10 := th.CreatePost() // post10 // similar to '/posts?before=post9' - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 0, 60, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post9.Id, 0, 60, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 10, "expected 10 posts") require.Equal(t, post8.Id, posts.Order[0], "posts not in order") @@ -1848,7 +1848,7 @@ func TestGetPostsBefore(t *testing.T) { require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId") // similar to '/posts?before=post9&per_page=3' - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 0, 3, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post9.Id, 0, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post8.Id, posts.Order[0], "posts not in order") @@ -1857,7 +1857,7 @@ func TestGetPostsBefore(t *testing.T) { require.Equal(t, post5.Id, posts.PrevPostId, "should return post5.Id as PrevPostId") // similar to '/posts?before=post9&per_page=3&page=1' - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 1, 3, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post9.Id, 1, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post5.Id, posts.Order[0], "posts not in order") @@ -1866,7 +1866,7 @@ func TestGetPostsBefore(t *testing.T) { require.Equal(t, post2.Id, posts.PrevPostId, "should return post2.Id as PrevPostId") // similar to '/posts?before=post9&per_page=3&page=2' - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 2, 3, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post9.Id, 2, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post2.Id, posts.Order[0], "posts not in order") @@ -1875,7 +1875,7 @@ func TestGetPostsBefore(t *testing.T) { require.Equal(t, systemPostId1, posts.PrevPostId, "should return systemPostId1 as PrevPostId") // similar to '/posts?before=post1&per_page=3' - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 3, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post1.Id, 0, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 2, "expected 2 posts") require.Equal(t, systemPostId2, posts.Order[0], "posts not in order") @@ -1884,14 +1884,14 @@ func TestGetPostsBefore(t *testing.T) { require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId") // similar to '/posts?before=systemPostId1' - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, systemPostId1, 0, 60, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, systemPostId1, 0, 60, "", false, false) require.NoError(t, err) require.Empty(t, posts.Order, "should return 0 post") require.Equal(t, systemPostId1, posts.NextPostId, "should return systemPostId1 as NextPostId") require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId") // similar to '/posts?before=systemPostId1&per_page=60&page=1' - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, systemPostId1, 1, 60, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, systemPostId1, 1, 60, "", false, false) require.NoError(t, err) require.Empty(t, posts.Order, "should return 0 posts") require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId") @@ -1899,29 +1899,29 @@ func TestGetPostsBefore(t *testing.T) { // similar to '/posts?before=non-existent-post' nonExistentPostId := model.NewId() - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, nonExistentPostId, 0, 60, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, nonExistentPostId, 0, 60, "", false, false) require.NoError(t, err) require.Empty(t, posts.Order, "should return 0 post") require.Equal(t, nonExistentPostId, posts.NextPostId, "should return nonExistentPostId as NextPostId") require.Equal(t, "", posts.PrevPostId, "should return an empty PrevPostId") - client.DeletePost(post9.Id) - client.DeletePost(post8.Id) + client.DeletePost(context.Background(), post9.Id) + client.DeletePost(context.Background(), post8.Id) // include deleted posts for non-admin users. - _, resp, err = client.GetPostsBefore(th.BasicChannel.Id, post9.Id, 0, 60, "", false, true) + _, resp, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post9.Id, 0, 60, "", false, true) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { // include deleted posts for admin users. - posts, resp, err = c.GetPostsBefore(th.BasicChannel.Id, post10.Id, 0, 60, "", false, true) + posts, resp, err = c.GetPostsBefore(context.Background(), th.BasicChannel.Id, post10.Id, 0, 60, "", false, true) require.NoError(t, err) CheckOKStatus(t, resp) require.Len(t, posts.Order, 11, "expected 11 posts") // not include deleted posts for admin users. - posts, resp, err = c.GetPostsBefore(th.BasicChannel.Id, post10.Id, 0, 60, "", false, false) + posts, resp, err = c.GetPostsBefore(context.Background(), th.BasicChannel.Id, post10.Id, 0, 60, "", false, false) require.NoError(t, err) CheckOKStatus(t, resp) require.Len(t, posts.Order, 9, "expected 9 posts") @@ -1939,7 +1939,7 @@ func TestGetPostsAfter(t *testing.T) { post4 := th.CreatePost() post5 := th.CreatePost() - posts, _, err := client.GetPostsAfter(th.BasicChannel.Id, post3.Id, 0, 100, "", false, false) + posts, _, err := client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post3.Id, 0, 100, "", false, false) require.NoError(t, err) found := make([]bool, 2) @@ -1959,18 +1959,18 @@ func TestGetPostsAfter(t *testing.T) { require.Equal(t, "", posts.NextPostId, "should match empty NextPostId") require.Equal(t, post3.Id, posts.PrevPostId, "should match PrevPostId") - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 1, 1, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post2.Id, 1, 1, "", false, false) require.NoError(t, err) require.Len(t, posts.Posts, 1, "too many posts returned") require.Equal(t, post4.Id, posts.Order[0], "should match returned post") require.Equal(t, post5.Id, posts.NextPostId, "should match NextPostId") require.Equal(t, post3.Id, posts.PrevPostId, "should match PrevPostId") - _, resp, err := client.GetPostsAfter(th.BasicChannel.Id, "junk", 1, 1, "", false, false) + _, resp, err := client.GetPostsAfter(context.Background(), th.BasicChannel.Id, "junk", 1, 1, "", false, false) require.Error(t, err) CheckBadRequestStatus(t, resp) - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 3, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post1.Id, 0, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Posts, 3, "should match length of posts returned") require.Equal(t, post4.Id, posts.Order[0], "should match returned post") @@ -1978,7 +1978,7 @@ func TestGetPostsAfter(t *testing.T) { require.Equal(t, post5.Id, posts.NextPostId, "should match NextPostId") require.Equal(t, post1.Id, posts.PrevPostId, "should match PrevPostId") - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post1.Id, 1, 3, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post1.Id, 1, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Posts, 1, "should match length of posts returned") require.Equal(t, post5.Id, posts.Order[0], "should match returned post") @@ -1994,7 +1994,7 @@ func TestGetPostsAfter(t *testing.T) { post10 := th.CreatePost() // similar to '/posts?after=post2' - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 0, 60, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post2.Id, 0, 60, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 8, "expected 8 posts") require.Equal(t, post10.Id, posts.Order[0], "should match order") @@ -2003,7 +2003,7 @@ func TestGetPostsAfter(t *testing.T) { require.Equal(t, post2.Id, posts.PrevPostId, "should return post2.Id as PrevPostId") // similar to '/posts?after=post2&per_page=3' - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 0, 3, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post2.Id, 0, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post5.Id, posts.Order[0], "should match order") @@ -2012,7 +2012,7 @@ func TestGetPostsAfter(t *testing.T) { require.Equal(t, post2.Id, posts.PrevPostId, "should return post2.Id as PrevPostId") // similar to '/posts?after=post2&per_page=3&page=1' - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 1, 3, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post2.Id, 1, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 3, "expected 3 posts") require.Equal(t, post8.Id, posts.Order[0], "should match order") @@ -2021,7 +2021,7 @@ func TestGetPostsAfter(t *testing.T) { require.Equal(t, post5.Id, posts.PrevPostId, "should return post5.Id as PrevPostId") // similar to '/posts?after=post2&per_page=3&page=2' - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post2.Id, 2, 3, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post2.Id, 2, 3, "", false, false) require.NoError(t, err) require.Len(t, posts.Order, 2, "expected 2 posts") require.Equal(t, post10.Id, posts.Order[0], "should match order") @@ -2030,14 +2030,14 @@ func TestGetPostsAfter(t *testing.T) { require.Equal(t, post8.Id, posts.PrevPostId, "should return post8.Id as PrevPostId") // similar to '/posts?after=post10' - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post10.Id, 0, 60, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post10.Id, 0, 60, "", false, false) require.NoError(t, err) require.Empty(t, posts.Order, "should return 0 post") require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId") require.Equal(t, post10.Id, posts.PrevPostId, "should return post10.Id as PrevPostId") // similar to '/posts?after=post10&page=1' - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, post10.Id, 1, 60, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post10.Id, 1, 60, "", false, false) require.NoError(t, err) require.Empty(t, posts.Order, "should return 0 post") require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId") @@ -2045,29 +2045,29 @@ func TestGetPostsAfter(t *testing.T) { // similar to '/posts?after=non-existent-post' nonExistentPostId := model.NewId() - posts, _, err = client.GetPostsAfter(th.BasicChannel.Id, nonExistentPostId, 0, 60, "", false, false) + posts, _, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, nonExistentPostId, 0, 60, "", false, false) require.NoError(t, err) require.Empty(t, posts.Order, "should return 0 post") require.Equal(t, "", posts.NextPostId, "should return an empty NextPostId") require.Equal(t, nonExistentPostId, posts.PrevPostId, "should return nonExistentPostId as PrevPostId") - client.DeletePost(post10.Id) - client.DeletePost(post9.Id) + client.DeletePost(context.Background(), post10.Id) + client.DeletePost(context.Background(), post9.Id) // include deleted posts for non-admin users. - _, resp, err = client.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 60, "", false, true) + _, resp, err = client.GetPostsAfter(context.Background(), th.BasicChannel.Id, post1.Id, 0, 60, "", false, true) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { // include deleted posts for admin users. - posts, resp, err = c.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 60, "", false, true) + posts, resp, err = c.GetPostsAfter(context.Background(), th.BasicChannel.Id, post1.Id, 0, 60, "", false, true) require.NoError(t, err) CheckOKStatus(t, resp) require.Len(t, posts.Order, 9, "expected 9 posts") // not include deleted posts for admin users. - posts, resp, err = c.GetPostsAfter(th.BasicChannel.Id, post1.Id, 0, 60, "", false, false) + posts, resp, err = c.GetPostsAfter(context.Background(), th.BasicChannel.Id, post1.Id, 0, 60, "", false, false) require.NoError(t, err) CheckOKStatus(t, resp) require.Len(t, posts.Order, 7, "expected 7 posts") @@ -2088,15 +2088,15 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { post4 := th.CreatePost() post5 := th.CreatePost() replyPost := &model.Post{ChannelId: channelId, Message: model.NewId(), RootId: post4.Id} - post6, _, err := client.CreatePost(replyPost) + post6, _, err := client.CreatePost(context.Background(), replyPost) require.NoError(t, err) - post7, _, err := client.CreatePost(replyPost) + post7, _, err := client.CreatePost(context.Background(), replyPost) require.NoError(t, err) - post8, _, err := client.CreatePost(replyPost) + post8, _, err := client.CreatePost(context.Background(), replyPost) require.NoError(t, err) - post9, _, err := client.CreatePost(replyPost) + post9, _, err := client.CreatePost(context.Background(), replyPost) require.NoError(t, err) - post10, _, err := client.CreatePost(replyPost) + post10, _, err := client.CreatePost(context.Background(), replyPost) require.NoError(t, err) postIdNames := map[string]string{ @@ -2150,14 +2150,14 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { } // Setting limit_after to zero should fail with a 400 BadRequest. - posts, resp, err := client.GetPostsAroundLastUnread(userId, channelId, 20, 0, false) + posts, resp, err := client.GetPostsAroundLastUnread(context.Background(), userId, channelId, 20, 0, false) require.Error(t, err) CheckErrorID(t, err, "api.context.invalid_url_param.app_error") require.Equal(t, http.StatusBadRequest, resp.StatusCode) require.Nil(t, posts) // All returned posts are all read by the user, since it's created by the user itself. - posts, _, err = client.GetPostsAroundLastUnread(userId, channelId, 20, 20, false) + posts, _, err = client.GetPostsAroundLastUnread(context.Background(), userId, channelId, 20, 20, false) require.NoError(t, err) require.Len(t, posts.Order, 12, "Should return 12 posts only since there's no unread post") @@ -2170,13 +2170,13 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { require.NoError(t, err) th.App.Srv().Store().Post().InvalidateLastPostTimeCache(channelId) - posts, _, err = client.GetPostsAroundLastUnread(userId, channelId, 20, 20, false) + posts, _, err = client.GetPostsAroundLastUnread(context.Background(), userId, channelId, 20, 20, false) require.NoError(t, err) require.Len(t, posts.Order, 12, "Should return 12 posts only since there's no unread post") // get the first system post generated before the created posts above - posts, _, err = client.GetPostsBefore(th.BasicChannel.Id, post1.Id, 0, 2, "", false, false) + posts, _, err = client.GetPostsBefore(context.Background(), th.BasicChannel.Id, post1.Id, 0, 2, "", false, false) require.NoError(t, err) systemPost0 := posts.Posts[posts.Order[0]] postIdNames[systemPost0.Id] = "system post 0" @@ -2191,7 +2191,7 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { require.NoError(t, err) th.App.Srv().Store().Post().InvalidateLastPostTimeCache(channelId) - posts, _, err = client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false) + posts, _, err = client.GetPostsAroundLastUnread(context.Background(), userId, channelId, 3, 3, false) require.NoError(t, err) assertPostList(t, &model.PostList{ @@ -2215,7 +2215,7 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { require.NoError(t, err) th.App.Srv().Store().Post().InvalidateLastPostTimeCache(channelId) - posts, _, err = client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false) + posts, _, err = client.GetPostsAroundLastUnread(context.Background(), userId, channelId, 3, 3, false) require.NoError(t, err) assertPostList(t, &model.PostList{ @@ -2242,7 +2242,7 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { require.NoError(t, err) th.App.Srv().Store().Post().InvalidateLastPostTimeCache(channelId) - posts, _, err = client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false) + posts, _, err = client.GetPostsAroundLastUnread(context.Background(), userId, channelId, 3, 3, false) require.NoError(t, err) assertPostList(t, &model.PostList{ @@ -2267,7 +2267,7 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { require.NoError(t, err) th.App.Srv().Store().Post().InvalidateLastPostTimeCache(channelId) - posts, _, err = client.GetPostsAroundLastUnread(userId, channelId, 3, 3, false) + posts, _, err = client.GetPostsAroundLastUnread(context.Background(), userId, channelId, 3, 3, false) require.NoError(t, err) assertPostList(t, &model.PostList{ @@ -2287,7 +2287,7 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { // Set channel member's last viewed to just before a new reply to a previous thread, not // otherwise in the requested window. post11 := th.CreatePost() - post12, _, err := client.CreatePost(&model.Post{ + post12, _, err := client.CreatePost(context.Background(), &model.Post{ ChannelId: channelId, Message: model.NewId(), RootId: post4.Id, @@ -2306,7 +2306,7 @@ func TestGetPostsForChannelAroundLastUnread(t *testing.T) { require.NoError(t, err) th.App.Srv().Store().Post().InvalidateLastPostTimeCache(channelId) - posts, _, err = client.GetPostsAroundLastUnread(userId, channelId, 1, 2, false) + posts, _, err = client.GetPostsAroundLastUnread(context.Background(), userId, channelId, 1, 2, false) require.NoError(t, err) assertPostList(t, &model.PostList{ @@ -2338,81 +2338,81 @@ func TestGetPost(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, c *model.Client4) { t.Helper() - post, resp, err := c.GetPost(th.BasicPost.Id, "") + post, resp, err := c.GetPost(context.Background(), th.BasicPost.Id, "") require.NoError(t, err) require.Equal(t, th.BasicPost.Id, post.Id, "post ids don't match") - post, resp, err = c.GetPost(th.BasicPost.Id, resp.Etag) + post, resp, err = c.GetPost(context.Background(), th.BasicPost.Id, resp.Etag) require.NoError(t, err) CheckEtag(t, post, resp) - _, resp, err = c.GetPost("", "") + _, resp, err = c.GetPost(context.Background(), "", "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = c.GetPost("junk", "") + _, resp, err = c.GetPost(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = c.GetPost(model.NewId(), "") + _, resp, err = c.GetPost(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) - client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) + client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser.Id) // Channel is public, should be able to read post - _, _, err = c.GetPost(th.BasicPost.Id, "") + _, _, err = c.GetPost(context.Background(), th.BasicPost.Id, "") require.NoError(t, err) privatePost = th.CreatePostWithClient(client, th.BasicPrivateChannel) - _, _, err = c.GetPost(privatePost.Id, "") + _, _, err = c.GetPost(context.Background(), privatePost.Id, "") require.NoError(t, err) }) - client.RemoveUserFromChannel(th.BasicPrivateChannel.Id, th.BasicUser.Id) + client.RemoveUserFromChannel(context.Background(), th.BasicPrivateChannel.Id, th.BasicUser.Id) // Channel is private, should not be able to read post - _, resp, err := client.GetPost(privatePost.Id, "") + _, resp, err := client.GetPost(context.Background(), privatePost.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) // But local client should. - _, _, err = th.LocalClient.GetPost(privatePost.Id, "") + _, _, err = th.LocalClient.GetPost(context.Background(), privatePost.Id, "") require.NoError(t, err) // Delete post - th.SystemAdminClient.DeletePost(th.BasicPost.Id) + th.SystemAdminClient.DeletePost(context.Background(), th.BasicPost.Id) // Normal client should get 404 when trying to access deleted post normally - _, resp, err = client.GetPost(th.BasicPost.Id, "") + _, resp, err = client.GetPost(context.Background(), th.BasicPost.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) // Normal client should get unauthorized when trying to access deleted post - _, resp, err = client.GetPostIncludeDeleted(th.BasicPost.Id, "") + _, resp, err = client.GetPostIncludeDeleted(context.Background(), th.BasicPost.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) // System client should get 404 when trying to access deleted post normally - _, resp, err = th.SystemAdminClient.GetPost(th.BasicPost.Id, "") + _, resp, err = th.SystemAdminClient.GetPost(context.Background(), th.BasicPost.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) // System client should be able to access deleted post with include_deleted param - post, _, err := th.SystemAdminClient.GetPostIncludeDeleted(th.BasicPost.Id, "") + post, _, err := th.SystemAdminClient.GetPostIncludeDeleted(context.Background(), th.BasicPost.Id, "") require.NoError(t, err) require.Equal(t, th.BasicPost.Id, post.Id) - client.Logout() + client.Logout(context.Background()) // Normal client should get unauthorized, but local client should get 404. - _, resp, err = client.GetPost(model.NewId(), "") + _, resp, err = client.GetPost(context.Background(), model.NewId(), "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = th.LocalClient.GetPost(model.NewId(), "") + _, resp, err = th.LocalClient.GetPost(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) } @@ -2422,38 +2422,38 @@ func TestDeletePost(t *testing.T) { defer th.TearDown() client := th.Client - resp, err := client.DeletePost("") + resp, err := client.DeletePost(context.Background(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = client.DeletePost("junk") + resp, err = client.DeletePost(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.DeletePost(th.BasicPost.Id) + resp, err = client.DeletePost(context.Background(), th.BasicPost.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Login(th.TeamAdminUser.Email, th.TeamAdminUser.Password) - _, err = client.DeletePost(th.BasicPost.Id) + client.Login(context.Background(), th.TeamAdminUser.Email, th.TeamAdminUser.Password) + _, err = client.DeletePost(context.Background(), th.BasicPost.Id) require.NoError(t, err) post := th.CreatePost() user := th.CreateUser() - client.Logout() - client.Login(user.Email, user.Password) + client.Logout(context.Background()) + client.Login(context.Background(), user.Email, user.Password) - resp, err = client.DeletePost(post.Id) + resp, err = client.DeletePost(context.Background(), post.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - resp, err = client.DeletePost(model.NewId()) + client.Logout(context.Background()) + resp, err = client.DeletePost(context.Background(), model.NewId()) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, err = th.SystemAdminClient.DeletePost(post.Id) + _, err = th.SystemAdminClient.DeletePost(context.Background(), post.Id) require.NoError(t, err) } @@ -2466,7 +2466,7 @@ func TestDeletePostEvent(t *testing.T) { WebSocketClient.Listen() defer WebSocketClient.Close() - _, err = th.SystemAdminClient.DeletePost(th.BasicPost.Id) + _, err = th.SystemAdminClient.DeletePost(context.Background(), th.BasicPost.Id) require.NoError(t, err) var received bool @@ -2518,7 +2518,7 @@ func TestDeletePostMessage(t *testing.T) { post := th.CreatePost() - _, err = th.SystemAdminClient.DeletePost(post.Id) + _, err = th.SystemAdminClient.DeletePost(context.Background(), post.Id) require.NoError(t, err) timeout := time.After(5 * time.Second) @@ -2547,13 +2547,13 @@ func TestGetPostThread(t *testing.T) { client := th.Client post := &model.Post{ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a", RootId: th.BasicPost.Id} - post, _, _ = client.CreatePost(post) + post, _, _ = client.CreatePost(context.Background(), post) - list, resp, err := client.GetPostThread(th.BasicPost.Id, "", false) + list, resp, err := client.GetPostThread(context.Background(), th.BasicPost.Id, "", false) require.NoError(t, err) var list2 *model.PostList - list2, resp, _ = client.GetPostThread(th.BasicPost.Id, resp.Etag, false) + list2, resp, _ = client.GetPostThread(context.Background(), th.BasicPost.Id, resp.Etag, false) CheckEtag(t, list2, resp) require.Equal(t, th.BasicPost.Id, list.Order[0], "wrong order") @@ -2563,34 +2563,34 @@ func TestGetPostThread(t *testing.T) { _, ok = list.Posts[post.Id] require.True(t, ok, "should have had post") - _, resp, err = client.GetPostThread("junk", "", false) + _, resp, err = client.GetPostThread(context.Background(), "junk", "", false) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetPostThread(model.NewId(), "", false) + _, resp, err = client.GetPostThread(context.Background(), model.NewId(), "", false) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) + client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser.Id) // Channel is public, should be able to read post - _, _, err = client.GetPostThread(th.BasicPost.Id, "", false) + _, _, err = client.GetPostThread(context.Background(), th.BasicPost.Id, "", false) require.NoError(t, err) privatePost := th.CreatePostWithClient(client, th.BasicPrivateChannel) - _, _, err = client.GetPostThread(privatePost.Id, "", false) + _, _, err = client.GetPostThread(context.Background(), privatePost.Id, "", false) require.NoError(t, err) - client.RemoveUserFromChannel(th.BasicPrivateChannel.Id, th.BasicUser.Id) + client.RemoveUserFromChannel(context.Background(), th.BasicPrivateChannel.Id, th.BasicUser.Id) // Channel is private, should not be able to read post - _, resp, err = client.GetPostThread(privatePost.Id, "", false) + _, resp, err = client.GetPostThread(context.Background(), privatePost.Id, "", false) require.Error(t, err) CheckForbiddenStatus(t, resp) // Sending some bad params - _, resp, err = client.GetPostThreadWithOpts(th.BasicPost.Id, "", model.GetPostsOptions{ + _, resp, err = client.GetPostThreadWithOpts(context.Background(), th.BasicPost.Id, "", model.GetPostsOptions{ CollapsedThreads: true, FromPost: "something", PerPage: 10, @@ -2598,19 +2598,19 @@ func TestGetPostThread(t *testing.T) { require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetPostThreadWithOpts(th.BasicPost.Id, "", model.GetPostsOptions{ + _, resp, err = client.GetPostThreadWithOpts(context.Background(), th.BasicPost.Id, "", model.GetPostsOptions{ CollapsedThreads: true, Direction: "sideways", }) require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.GetPostThread(model.NewId(), "", false) + client.Logout(context.Background()) + _, resp, err = client.GetPostThread(context.Background(), model.NewId(), "", false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetPostThread(th.BasicPost.Id, "", false) + _, _, err = th.SystemAdminClient.GetPostThread(context.Background(), th.BasicPost.Id, "", false) require.NoError(t, err) } @@ -2644,7 +2644,7 @@ func TestSearchPosts(t *testing.T) { archivedChannel := th.CreatePublicChannel() _ = th.CreateMessagePostWithClient(th.Client, archivedChannel, "#hashtag for post3") - th.Client.DeleteChannel(archivedChannel.Id) + th.Client.DeleteChannel(context.Background(), archivedChannel.Id) otherTeam := th.CreateTeam() channelInOtherTeam := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, otherTeam.Id) @@ -2659,7 +2659,7 @@ func TestSearchPosts(t *testing.T) { IsOrSearch: &isOrSearch, TimeZoneOffset: &timezoneOffset, } - allTeamsPosts, _, err := client.SearchPostsWithParams("", &searchParams) + allTeamsPosts, _, err := client.SearchPostsWithParams(context.Background(), "", &searchParams) require.NoError(t, err) require.Len(t, allTeamsPosts.Order, 4, "wrong search along multiple teams") @@ -2671,7 +2671,7 @@ func TestSearchPosts(t *testing.T) { IsOrSearch: &isOrSearch, TimeZoneOffset: &timezoneOffset, } - posts, _, err := client.SearchPostsWithParams(th.BasicTeam.Id, &searchParams) + posts, _, err := client.SearchPostsWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) require.Len(t, posts.Order, 3, "wrong search") @@ -2685,7 +2685,7 @@ func TestSearchPosts(t *testing.T) { Page: &page, PerPage: &perPage, } - posts2, _, err := client.SearchPostsWithParams(th.BasicTeam.Id, &searchParams) + posts2, _, err := client.SearchPostsWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) // We don't support paging for DB search yet, modify this when we do. require.Len(t, posts2.Order, 3, "Wrong number of posts") @@ -2700,21 +2700,21 @@ func TestSearchPosts(t *testing.T) { Page: &page, PerPage: &perPage, } - posts2, _, err = client.SearchPostsWithParams(th.BasicTeam.Id, &searchParams) + posts2, _, err = client.SearchPostsWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) // We don't support paging for DB search yet, modify this when we do. require.Empty(t, posts2.Order, "Wrong number of posts") - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "search", false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "search", false) require.NoError(t, err) require.Len(t, posts.Order, 3, "wrong search") - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "post2", false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "post2", false) require.NoError(t, err) require.Len(t, posts.Order, 1, "wrong number of posts") require.Equal(t, post2.Id, posts.Order[0], "wrong search") - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "#hashtag", false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "#hashtag", false) require.NoError(t, err) require.Len(t, posts.Order, 1, "wrong number of posts") require.Equal(t, post3.Id, posts.Order[0], "wrong search") @@ -2727,7 +2727,7 @@ func TestSearchPosts(t *testing.T) { TimeZoneOffset: &timezoneOffset, IncludeDeletedChannels: &includeDeletedChannels, } - posts, _, err = client.SearchPostsWithParams(th.BasicTeam.Id, &searchParams) + posts, _, err = client.SearchPostsWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) require.Len(t, posts.Order, 2, "wrong search") @@ -2735,31 +2735,31 @@ func TestSearchPosts(t *testing.T) { *cfg.TeamSettings.ExperimentalViewArchivedChannels = false }) - posts, _, err = client.SearchPostsWithParams(th.BasicTeam.Id, &searchParams) + posts, _, err = client.SearchPostsWithParams(context.Background(), th.BasicTeam.Id, &searchParams) require.NoError(t, err) require.Len(t, posts.Order, 1, "wrong search") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "*", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "*", false) require.Empty(t, posts.Order, "searching for just * shouldn't return any results") - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "post1 post2", true) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "post1 post2", true) require.NoError(t, err) require.Len(t, posts.Order, 2, "wrong search results") - _, resp, err := client.SearchPosts("junk", "#sgtitlereview", false) + _, resp, err := client.SearchPosts(context.Background(), "junk", "#sgtitlereview", false) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.SearchPosts(model.NewId(), "#sgtitlereview", false) + _, resp, err = client.SearchPosts(context.Background(), model.NewId(), "#sgtitlereview", false) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.SearchPosts(th.BasicTeam.Id, "", false) + _, resp, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "", false) require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() - _, resp, err = client.SearchPosts(th.BasicTeam.Id, "#sgtitlereview", false) + client.Logout(context.Background()) + _, resp, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "#sgtitlereview", false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2779,12 +2779,12 @@ func TestSearchHashtagPosts(t *testing.T) { message = "no hashtag" assert.NotNil(t, th.CreateMessagePost(message)) - posts, _, err := client.SearchPosts(th.BasicTeam.Id, "#sgtitlereview", false) + posts, _, err := client.SearchPosts(context.Background(), th.BasicTeam.Id, "#sgtitlereview", false) require.NoError(t, err) require.Len(t, posts.Order, 2, "wrong search results") - client.Logout() - _, resp, err := client.SearchPosts(th.BasicTeam.Id, "#sgtitlereview", false) + client.Logout(context.Background()) + _, resp, err := client.SearchPosts(context.Background(), th.BasicTeam.Id, "#sgtitlereview", false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2809,37 +2809,37 @@ func TestSearchPostsInChannel(t *testing.T) { message = "other message with no return" _ = th.CreateMessagePostWithClient(client, channel, message) - posts, _, _ := client.SearchPosts(th.BasicTeam.Id, "channel:", false) + posts, _, _ := client.SearchPosts(context.Background(), th.BasicTeam.Id, "channel:", false) require.Empty(t, posts.Order, "wrong number of posts for search 'channel:'") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "in:", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "in:", false) require.Empty(t, posts.Order, "wrong number of posts for search 'in:'") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "channel:"+th.BasicChannel.Name, false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "channel:"+th.BasicChannel.Name, false) require.Lenf(t, posts.Order, 2, "wrong number of posts returned for search 'channel:%v'", th.BasicChannel.Name) - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "in:"+th.BasicChannel2.Name, false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "in:"+th.BasicChannel2.Name, false) require.Lenf(t, posts.Order, 2, "wrong number of posts returned for search 'in:%v'", th.BasicChannel2.Name) - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "channel:"+th.BasicChannel2.Name, false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "channel:"+th.BasicChannel2.Name, false) require.Lenf(t, posts.Order, 2, "wrong number of posts for search 'channel:%v'", th.BasicChannel2.Name) - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "ChAnNeL:"+th.BasicChannel2.Name, false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "ChAnNeL:"+th.BasicChannel2.Name, false) require.Lenf(t, posts.Order, 2, "wrong number of posts for search 'ChAnNeL:%v'", th.BasicChannel2.Name) - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "sgtitlereview", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "sgtitlereview", false) require.Lenf(t, posts.Order, 2, "wrong number of posts for search 'sgtitlereview'") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "sgtitlereview channel:"+th.BasicChannel.Name, false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "sgtitlereview channel:"+th.BasicChannel.Name, false) require.Lenf(t, posts.Order, 1, "wrong number of posts for search 'sgtitlereview channel:%v'", th.BasicChannel.Name) - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "sgtitlereview in: "+th.BasicChannel2.Name, false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "sgtitlereview in: "+th.BasicChannel2.Name, false) require.Lenf(t, posts.Order, 1, "wrong number of posts for search 'sgtitlereview in: %v'", th.BasicChannel2.Name) - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "sgtitlereview channel: "+th.BasicChannel2.Name, false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "sgtitlereview channel: "+th.BasicChannel2.Name, false) require.Lenf(t, posts.Order, 1, "wrong number of posts for search 'sgtitlereview channel: %v'", th.BasicChannel2.Name) - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "channel: "+th.BasicChannel2.Name+" channel: "+channel.Name, false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "channel: "+th.BasicChannel2.Name+" channel: "+channel.Name, false) require.Lenf(t, posts.Order, 3, "wrong number of posts for 'channel: %v channel: %v'", th.BasicChannel2.Name, channel.Name) } @@ -2857,52 +2857,52 @@ func TestSearchPostsFromUser(t *testing.T) { message := "sgtitlereview with space" _ = th.CreateMessagePost(message) - client.Logout() + client.Logout(context.Background()) th.LoginBasic2() message = "sgtitlereview\n with return" _ = th.CreateMessagePostWithClient(client, th.BasicChannel2, message) - posts, _, err := client.SearchPosts(th.BasicTeam.Id, "from: "+th.TeamAdminUser.Username, false) + posts, _, err := client.SearchPosts(context.Background(), th.BasicTeam.Id, "from: "+th.TeamAdminUser.Username, false) require.NoError(t, err) require.Lenf(t, posts.Order, 2, "wrong number of posts for search 'from: %v'", th.TeamAdminUser.Username) - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "from: "+th.BasicUser2.Username, false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "from: "+th.BasicUser2.Username, false) require.NoError(t, err) require.Lenf(t, posts.Order, 1, "wrong number of posts for search 'from: %v", th.BasicUser2.Username) - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" sgtitlereview", false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" sgtitlereview", false) require.NoError(t, err) require.Lenf(t, posts.Order, 1, "wrong number of posts for search 'from: %v'", th.BasicUser2.Username) message = "hullo" _ = th.CreateMessagePost(message) - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" in:"+th.BasicChannel.Name, false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" in:"+th.BasicChannel.Name, false) require.NoError(t, err) require.Len(t, posts.Order, 1, "wrong number of posts for search 'from: %v in:", th.BasicUser2.Username, th.BasicChannel.Name) - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) // wait for the join/leave messages to be created for user3 since they're done asynchronously time.Sleep(100 * time.Millisecond) - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "from: "+th.BasicUser2.Username, false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "from: "+th.BasicUser2.Username, false) require.NoError(t, err) require.Lenf(t, posts.Order, 2, "wrong number of posts for search 'from: %v'", th.BasicUser2.Username) - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" from: "+user.Username, false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" from: "+user.Username, false) require.NoError(t, err) require.Lenf(t, posts.Order, 2, "wrong number of posts for search 'from: %v from: %v'", th.BasicUser2.Username, user.Username) - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" from: "+user.Username+" in:"+th.BasicChannel2.Name, false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" from: "+user.Username+" in:"+th.BasicChannel2.Name, false) require.NoError(t, err) require.Len(t, posts.Order, 1, "wrong number of posts") message = "coconut" _ = th.CreateMessagePostWithClient(client, th.BasicChannel2, message) - posts, _, err = client.SearchPosts(th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" from: "+user.Username+" in:"+th.BasicChannel2.Name+" coconut", false) + posts, _, err = client.SearchPosts(context.Background(), th.BasicTeam.Id, "from: "+th.BasicUser2.Username+" from: "+user.Username+" in:"+th.BasicChannel2.Name+" coconut", false) require.NoError(t, err) require.Len(t, posts.Order, 1, "wrong number of posts") } @@ -2925,22 +2925,22 @@ func TestSearchPostsWithDateFlags(t *testing.T) { createDate = time.Date(2018, 8, 3, 5, 0, 0, 0, time.UTC) _ = th.CreateMessagePostNoClient(th.BasicChannel, message, utils.MillisFromTime(createDate)) - posts, _, _ := client.SearchPosts(th.BasicTeam.Id, "return", false) + posts, _, _ := client.SearchPosts(context.Background(), th.BasicTeam.Id, "return", false) require.Len(t, posts.Order, 3, "wrong number of posts") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "on:", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "on:", false) require.Empty(t, posts.Order, "wrong number of posts") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "after:", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "after:", false) require.Empty(t, posts.Order, "wrong number of posts") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "before:", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "before:", false) require.Empty(t, posts.Order, "wrong number of posts") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "on:2018-08-01", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "on:2018-08-01", false) require.Len(t, posts.Order, 1, "wrong number of posts") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "after:2018-08-01", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "after:2018-08-01", false) resultCount := 0 for _, post := range posts.Posts { if post.UserId == th.BasicUser.Id { @@ -2949,13 +2949,13 @@ func TestSearchPostsWithDateFlags(t *testing.T) { } require.Equal(t, 2, resultCount, "wrong number of posts") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "before:2018-08-02", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "before:2018-08-02", false) require.Len(t, posts.Order, 1, "wrong number of posts") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "before:2018-08-03 after:2018-08-02", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "before:2018-08-03 after:2018-08-02", false) require.Empty(t, posts.Order, "wrong number of posts") - posts, _, _ = client.SearchPosts(th.BasicTeam.Id, "before:2018-08-03 after:2018-08-01", false) + posts, _, _ = client.SearchPosts(context.Background(), th.BasicTeam.Id, "before:2018-08-03 after:2018-08-01", false) require.Len(t, posts.Order, 1, "wrong number of posts") } @@ -2969,14 +2969,14 @@ func TestGetFileInfosForPost(t *testing.T) { data, err := testutils.ReadTestFile("test.png") require.NoError(t, err) for i := 0; i < 3; i++ { - fileResp, _, _ := client.UploadFile(data, th.BasicChannel.Id, "test.png") + fileResp, _, _ := client.UploadFile(context.Background(), data, th.BasicChannel.Id, "test.png") fileIds[i] = fileResp.FileInfos[0].Id } post := &model.Post{ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a", FileIds: fileIds} - post, _, _ = client.CreatePost(post) + post, _, _ = client.CreatePost(context.Background(), post) - infos, resp, err := client.GetFileInfosForPost(post.Id, "") + infos, resp, err := client.GetFileInfosForPost(context.Background(), post.Id, "") require.NoError(t, err) require.Len(t, infos, 3, "missing file infos") @@ -2990,42 +2990,42 @@ func TestGetFileInfosForPost(t *testing.T) { require.True(t, found, "missing file info") - infos, resp, _ = client.GetFileInfosForPost(post.Id, resp.Etag) + infos, resp, _ = client.GetFileInfosForPost(context.Background(), post.Id, resp.Etag) CheckEtag(t, infos, resp) - infos, _, err = client.GetFileInfosForPost(th.BasicPost.Id, "") + infos, _, err = client.GetFileInfosForPost(context.Background(), th.BasicPost.Id, "") require.NoError(t, err) require.Empty(t, infos, "should have no file infos") - _, resp, err = client.GetFileInfosForPost("junk", "") + _, resp, err = client.GetFileInfosForPost(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetFileInfosForPost(model.NewId(), "") + _, resp, err = client.GetFileInfosForPost(context.Background(), model.NewId(), "") require.Error(t, err) CheckForbiddenStatus(t, resp) // Delete post - th.SystemAdminClient.DeletePost(post.Id) + th.SystemAdminClient.DeletePost(context.Background(), post.Id) // Normal client should get 404 when trying to access deleted post normally - _, resp, err = client.GetFileInfosForPost(post.Id, "") + _, resp, err = client.GetFileInfosForPost(context.Background(), post.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) // Normal client should get unauthorized when trying to access deleted post - _, resp, err = client.GetFileInfosForPostIncludeDeleted(post.Id, "") + _, resp, err = client.GetFileInfosForPostIncludeDeleted(context.Background(), post.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) // System client should get 404 when trying to access deleted post normally - _, resp, err = th.SystemAdminClient.GetFileInfosForPost(post.Id, "") + _, resp, err = th.SystemAdminClient.GetFileInfosForPost(context.Background(), post.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) // System client should be able to access deleted post with include_deleted param - infos, _, err = th.SystemAdminClient.GetFileInfosForPostIncludeDeleted(post.Id, "") + infos, _, err = th.SystemAdminClient.GetFileInfosForPostIncludeDeleted(context.Background(), post.Id, "") require.NoError(t, err) require.Len(t, infos, 3, "missing file infos") @@ -3039,12 +3039,12 @@ func TestGetFileInfosForPost(t *testing.T) { require.True(t, found, "missing file info") - client.Logout() - _, resp, err = client.GetFileInfosForPost(model.NewId(), "") + client.Logout(context.Background()) + _, resp, err = client.GetFileInfosForPost(context.Background(), model.NewId(), "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetFileInfosForPost(th.BasicPost.Id, "") + _, _, err = th.SystemAdminClient.GetFileInfosForPost(context.Background(), th.BasicPost.Id, "") require.NoError(t, err) } @@ -3055,7 +3055,7 @@ func TestSetChannelUnread(t *testing.T) { u1 := th.BasicUser u2 := th.BasicUser2 s2, _ := th.App.GetSession(th.Client.AuthToken) - th.Client.Login(u1.Email, u1.Password) + th.Client.Login(context.Background(), u1.Email, u1.Password) c1 := th.BasicChannel c1toc2 := &model.ChannelView{ChannelId: th.BasicChannel2.Id, PrevChannelId: c1.Id} now := utils.MillisFromTime(time.Now()) @@ -3082,7 +3082,7 @@ func TestSetChannelUnread(t *testing.T) { require.Equal(t, int64(0), unread.MsgCount) t.Run("Unread last one", func(t *testing.T) { - r, err := th.Client.SetPostUnread(u1.Id, p2.Id, true) + r, err := th.Client.SetPostUnread(context.Background(), u1.Id, p2.Id, true) require.NoError(t, err) CheckOKStatus(t, r) unread, appErr := th.App.GetChannelUnread(th.Context, c1.Id, u1.Id) @@ -3110,7 +3110,7 @@ func TestSetChannelUnread(t *testing.T) { require.Nil(t, err) require.Equal(t, int64(0), unread.MsgCount) - r, _ := th.Client.SetPostUnread(u1.Id, p.Id, false) + r, _ := th.Client.SetPostUnread(context.Background(), u1.Id, p.Id, false) assert.Equal(t, 200, r.StatusCode) unread, err = th.App.GetChannelUnread(th.Context, dc.Id, u1.Id) require.Nil(t, err) @@ -3123,7 +3123,7 @@ func TestSetChannelUnread(t *testing.T) { require.Nil(t, err) require.Equal(t, int64(0), unread.MsgCount) - r, _ = th.Client.SetPostUnread(u1.Id, p1.Id, false) + r, _ = th.Client.SetPostUnread(context.Background(), u1.Id, p1.Id, false) assert.Equal(t, 200, r.StatusCode) unread, err = th.App.GetChannelUnread(th.Context, dc.Id, u1.Id) require.Nil(t, err) @@ -3154,7 +3154,7 @@ func TestSetChannelUnread(t *testing.T) { require.Equal(t, int64(0), unread.MsgCount) require.Equal(t, int64(0), unread.MsgCountRoot) - r, _ := th.Client.SetPostUnread(u1.Id, rootPost.Id, false) + r, _ := th.Client.SetPostUnread(context.Background(), u1.Id, rootPost.Id, false) assert.Equal(t, 200, r.StatusCode) unread, err = th.App.GetChannelUnread(th.Context, dc.Id, u1.Id) require.Nil(t, err) @@ -3169,7 +3169,7 @@ func TestSetChannelUnread(t *testing.T) { require.Equal(t, int64(0), unread.MsgCount) require.Equal(t, int64(0), unread.MsgCountRoot) - r, _ = th.Client.SetPostUnread(u1.Id, reply2.Id, false) + r, _ = th.Client.SetPostUnread(context.Background(), u1.Id, reply2.Id, false) assert.Equal(t, 200, r.StatusCode) unread, err = th.App.GetChannelUnread(th.Context, dc.Id, u1.Id) require.Nil(t, err) @@ -3178,12 +3178,12 @@ func TestSetChannelUnread(t *testing.T) { }) t.Run("Unread on a private channel", func(t *testing.T) { - r, _ := th.Client.SetPostUnread(u1.Id, pp2.Id, true) + r, _ := th.Client.SetPostUnread(context.Background(), u1.Id, pp2.Id, true) assert.Equal(t, 200, r.StatusCode) unread, appErr := th.App.GetChannelUnread(th.Context, th.BasicPrivateChannel.Id, u1.Id) require.Nil(t, appErr) assert.Equal(t, int64(1), unread.MsgCount) - r, _ = th.Client.SetPostUnread(u1.Id, pp1.Id, true) + r, _ = th.Client.SetPostUnread(context.Background(), u1.Id, pp1.Id, true) assert.Equal(t, 200, r.StatusCode) unread, appErr = th.App.GetChannelUnread(th.Context, th.BasicPrivateChannel.Id, u1.Id) require.Nil(t, appErr) @@ -3191,28 +3191,28 @@ func TestSetChannelUnread(t *testing.T) { }) t.Run("Can't unread an imaginary post", func(t *testing.T) { - r, _ := th.Client.SetPostUnread(u1.Id, "invalid4ofngungryquinj976y", true) + r, _ := th.Client.SetPostUnread(context.Background(), u1.Id, "invalid4ofngungryquinj976y", true) assert.Equal(t, http.StatusForbidden, r.StatusCode) }) // let's create another user to test permissions u3 := th.CreateUser() c3 := th.CreateClient() - c3.Login(u3.Email, u3.Password) + c3.Login(context.Background(), u3.Email, u3.Password) t.Run("Can't unread channels you don't belong to", func(t *testing.T) { - r, _ := c3.SetPostUnread(u3.Id, pp1.Id, true) + r, _ := c3.SetPostUnread(context.Background(), u3.Id, pp1.Id, true) assert.Equal(t, http.StatusForbidden, r.StatusCode) }) t.Run("Can't unread users you don't have permission to edit", func(t *testing.T) { - r, _ := c3.SetPostUnread(u1.Id, pp1.Id, true) + r, _ := c3.SetPostUnread(context.Background(), u1.Id, pp1.Id, true) assert.Equal(t, http.StatusForbidden, r.StatusCode) }) t.Run("Can't unread if user is not logged in", func(t *testing.T) { - th.Client.Logout() - response, err := th.Client.SetPostUnread(u1.Id, p2.Id, true) + th.Client.Logout(context.Background()) + response, err := th.Client.SetPostUnread(context.Background(), u1.Id, p2.Id, true) require.Error(t, err) CheckUnauthorizedStatus(t, response) }) @@ -3255,7 +3255,7 @@ func TestSetPostUnreadWithoutCollapsedThreads(t *testing.T) { defer userWSClient.Close() userWSClient.Listen() - _, err = th.Client.SetPostUnread(th.BasicUser.Id, replyPost1.Id, false) + _, err = th.Client.SetPostUnread(context.Background(), th.BasicUser.Id, replyPost1.Id, false) require.NoError(t, err) channelUnread, appErr := th.App.GetChannelUnread(th.Context, th.BasicChannel.Id, th.BasicUser.Id) require.Nil(t, appErr) @@ -3303,7 +3303,7 @@ func TestSetPostUnreadWithoutCollapsedThreads(t *testing.T) { }) t.Run("Mark root post as unread", func(t *testing.T) { - _, err := th.Client.SetPostUnread(th.BasicUser.Id, rootPost1.Id, false) + _, err := th.Client.SetPostUnread(context.Background(), th.BasicUser.Id, rootPost1.Id, false) require.NoError(t, err) channelUnread, appErr := th.App.GetChannelUnread(th.Context, th.BasicChannel.Id, th.BasicUser.Id) require.Nil(t, appErr) @@ -3323,18 +3323,18 @@ func TestGetPostsByIds(t *testing.T) { post1 := th.CreatePost() post2 := th.CreatePost() - posts, response, err := client.GetPostsByIds([]string{post1.Id, post2.Id}) + posts, response, err := client.GetPostsByIds(context.Background(), []string{post1.Id, post2.Id}) require.NoError(t, err) CheckOKStatus(t, response) require.Len(t, posts, 2, "wrong number returned") require.Equal(t, posts[0].Id, post2.Id) require.Equal(t, posts[1].Id, post1.Id) - _, response, err = client.GetPostsByIds([]string{}) + _, response, err = client.GetPostsByIds(context.Background(), []string{}) require.Error(t, err) CheckBadRequestStatus(t, response) - _, response, err = client.GetPostsByIds([]string{"abc123"}) + _, response, err = client.GetPostsByIds(context.Background(), []string{"abc123"}) require.Error(t, err) CheckNotFoundStatus(t, response) } @@ -3356,7 +3356,7 @@ func TestGetEditHistoryForPost(t *testing.T) { time.Sleep(1 * time.Millisecond) t.Run("unedited post", func(t *testing.T) { - history, resp, err := client.GetEditHistoryForPost(rpost.Id) + history, resp, err := client.GetEditHistoryForPost(context.Background(), rpost.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) require.Len(t, history, 0) @@ -3368,7 +3368,7 @@ func TestGetEditHistoryForPost(t *testing.T) { } // Patch the post - _, response1, err1 := client.PatchPost(rpost.Id, patch) + _, response1, err1 := client.PatchPost(context.Background(), rpost.Id, patch) require.NoError(t, err1) CheckOKStatus(t, response1) @@ -3377,12 +3377,12 @@ func TestGetEditHistoryForPost(t *testing.T) { Message: model.NewString("new message edited again"), } - _, response2, err2 := client.PatchPost(rpost.Id, patch) + _, response2, err2 := client.PatchPost(context.Background(), rpost.Id, patch) require.NoError(t, err2) CheckOKStatus(t, response2) t.Run("update history correctly", func(t *testing.T) { - history, response3, err3 := client.GetEditHistoryForPost(rpost.Id) + history, response3, err3 := client.GetEditHistoryForPost(context.Background(), rpost.Id) require.NoError(t, err3) CheckOKStatus(t, response3) @@ -3392,15 +3392,15 @@ func TestGetEditHistoryForPost(t *testing.T) { }) t.Run("logged out", func(t *testing.T) { - client.Logout() - _, resp, err := client.GetEditHistoryForPost(rpost.Id) + client.Logout(context.Background()) + _, resp, err := client.GetEditHistoryForPost(context.Background(), rpost.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("different user", func(t *testing.T) { th.LoginBasic2() - _, resp, err := client.GetEditHistoryForPost(rpost.Id) + _, resp, err := client.GetEditHistoryForPost(context.Background(), rpost.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -3522,7 +3522,7 @@ func TestCreatePostNotificationsWithCRT(t *testing.T) { } // update user's notify props - _, _, err = th.Client.PatchUser(th.BasicUser.Id, patch) + _, _, err = th.Client.PatchUser(context.Background(), th.BasicUser.Id, patch) require.NoError(t, err) // post a reply on the thread @@ -3596,11 +3596,11 @@ func TestGetPostStripActionIntegrations(t *testing.T) { }, }) - rpost, resp, err2 := client.CreatePost(post) + rpost, resp, err2 := client.CreatePost(context.Background(), post) require.NoError(t, err2) CheckCreatedStatus(t, resp) - actualPost, _, err := client.GetPost(rpost.Id, "") + actualPost, _, err := client.GetPost(context.Background(), rpost.Id, "") require.NoError(t, err) attachments, _ := actualPost.Props["attachments"].([]any) require.Equal(t, 1, len(attachments)) @@ -3625,7 +3625,7 @@ func TestPostReminder(t *testing.T) { userWSClient.Listen() targetTime := time.Now().UTC().Unix() - resp, err := client.SetPostReminder(&model.PostReminder{ + resp, err := client.SetPostReminder(context.Background(), &model.PostReminder{ TargetTime: targetTime, PostId: th.BasicPost.Id, UserId: th.BasicUser.Id, @@ -3633,10 +3633,10 @@ func TestPostReminder(t *testing.T) { require.NoError(t, err) CheckOKStatus(t, resp) - post, _, err := client.GetPost(th.BasicPost.Id, "") + post, _, err := client.GetPost(context.Background(), th.BasicPost.Id, "") require.NoError(t, err) - user, _, err := client.GetUser(post.UserId, "") + user, _, err := client.GetUser(context.Background(), post.UserId, "") require.NoError(t, err) var caught bool @@ -3679,55 +3679,55 @@ func TestPostGetInfo(t *testing.T) { defer th.TearDown() client := th.Client sysadminClient := th.SystemAdminClient - sysadminClient.AddTeamMember(th.BasicTeam.Id, th.SystemAdminUser.Id) + sysadminClient.AddTeamMember(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id) - openChannel, _, err := client.CreateChannel(&model.Channel{TeamId: th.BasicTeam.Id, Type: model.ChannelTypeOpen, Name: "open-channel", DisplayName: "Open Channel"}) + openChannel, _, err := client.CreateChannel(context.Background(), &model.Channel{TeamId: th.BasicTeam.Id, Type: model.ChannelTypeOpen, Name: "open-channel", DisplayName: "Open Channel"}) require.NoError(t, err) - sysadminClient.AddChannelMember(openChannel.Id, th.SystemAdminUser.Id) - openPost, _, err := client.CreatePost(&model.Post{ChannelId: openChannel.Id}) + sysadminClient.AddChannelMember(context.Background(), openChannel.Id, th.SystemAdminUser.Id) + openPost, _, err := client.CreatePost(context.Background(), &model.Post{ChannelId: openChannel.Id}) require.NoError(t, err) - privateChannel, _, err := sysadminClient.CreateChannel(&model.Channel{TeamId: th.BasicTeam.Id, Type: model.ChannelTypePrivate, Name: "private-channel", DisplayName: "Private Channel"}) + privateChannel, _, err := sysadminClient.CreateChannel(context.Background(), &model.Channel{TeamId: th.BasicTeam.Id, Type: model.ChannelTypePrivate, Name: "private-channel", DisplayName: "Private Channel"}) require.NoError(t, err) - privatePost, _, err := sysadminClient.CreatePost(&model.Post{ChannelId: privateChannel.Id}) + privatePost, _, err := sysadminClient.CreatePost(context.Background(), &model.Post{ChannelId: privateChannel.Id}) require.NoError(t, err) - privateChannelBasicUser, _, err := client.CreateChannel(&model.Channel{TeamId: th.BasicTeam.Id, Type: model.ChannelTypePrivate, Name: "private-channel-basic-user", DisplayName: "Private Channel - Basic User"}) + privateChannelBasicUser, _, err := client.CreateChannel(context.Background(), &model.Channel{TeamId: th.BasicTeam.Id, Type: model.ChannelTypePrivate, Name: "private-channel-basic-user", DisplayName: "Private Channel - Basic User"}) require.NoError(t, err) - privatePostBasicUser, _, err := client.CreatePost(&model.Post{ChannelId: privateChannelBasicUser.Id}) + privatePostBasicUser, _, err := client.CreatePost(context.Background(), &model.Post{ChannelId: privateChannelBasicUser.Id}) require.NoError(t, err) user3 := th.CreateUser() - gmChannel, _, err := client.CreateGroupChannel([]string{th.BasicUser.Id, th.BasicUser2.Id, user3.Id}) + gmChannel, _, err := client.CreateGroupChannel(context.Background(), []string{th.BasicUser.Id, th.BasicUser2.Id, user3.Id}) require.NoError(t, err) - gmPost, _, err := client.CreatePost(&model.Post{ChannelId: gmChannel.Id}) + gmPost, _, err := client.CreatePost(context.Background(), &model.Post{ChannelId: gmChannel.Id}) require.NoError(t, err) - dmChannel, _, err := client.CreateDirectChannel(th.BasicUser.Id, th.BasicUser2.Id) + dmChannel, _, err := client.CreateDirectChannel(context.Background(), th.BasicUser.Id, th.BasicUser2.Id) require.NoError(t, err) - dmPost, _, err := client.CreatePost(&model.Post{ChannelId: dmChannel.Id}) + dmPost, _, err := client.CreatePost(context.Background(), &model.Post{ChannelId: dmChannel.Id}) require.NoError(t, err) - openTeam, _, err := sysadminClient.CreateTeam(&model.Team{Type: model.TeamOpen, Name: "open-team", DisplayName: "Open Team"}) + openTeam, _, err := sysadminClient.CreateTeam(context.Background(), &model.Team{Type: model.TeamOpen, Name: "open-team", DisplayName: "Open Team"}) require.NoError(t, err) - openTeamOpenChannel, _, err := sysadminClient.CreateChannel(&model.Channel{TeamId: openTeam.Id, Type: model.ChannelTypeOpen, Name: "open-team-open-channel", DisplayName: "Open Team - Open Channel"}) + openTeamOpenChannel, _, err := sysadminClient.CreateChannel(context.Background(), &model.Channel{TeamId: openTeam.Id, Type: model.ChannelTypeOpen, Name: "open-team-open-channel", DisplayName: "Open Team - Open Channel"}) require.NoError(t, err) - openTeamOpenPost, _, err := sysadminClient.CreatePost(&model.Post{ChannelId: openTeamOpenChannel.Id}) + openTeamOpenPost, _, err := sysadminClient.CreatePost(context.Background(), &model.Post{ChannelId: openTeamOpenChannel.Id}) require.NoError(t, err) // Alt team is a team without the sysadmin in it. - altOpenTeam, _, err := client.CreateTeam(&model.Team{Type: model.TeamOpen, Name: "alt-open-team", DisplayName: "Alt Open Team"}) + altOpenTeam, _, err := client.CreateTeam(context.Background(), &model.Team{Type: model.TeamOpen, Name: "alt-open-team", DisplayName: "Alt Open Team"}) require.NoError(t, err) - altOpenTeamOpenChannel, _, err := client.CreateChannel(&model.Channel{TeamId: altOpenTeam.Id, Type: model.ChannelTypeOpen, Name: "alt-open-team-open-channel", DisplayName: "Open Team - Open Channel"}) + altOpenTeamOpenChannel, _, err := client.CreateChannel(context.Background(), &model.Channel{TeamId: altOpenTeam.Id, Type: model.ChannelTypeOpen, Name: "alt-open-team-open-channel", DisplayName: "Open Team - Open Channel"}) require.NoError(t, err) - altOpenTeamOpenPost, _, err := client.CreatePost(&model.Post{ChannelId: altOpenTeamOpenChannel.Id}) + altOpenTeamOpenPost, _, err := client.CreatePost(context.Background(), &model.Post{ChannelId: altOpenTeamOpenChannel.Id}) require.NoError(t, err) - inviteTeam, _, err := sysadminClient.CreateTeam(&model.Team{Type: model.TeamInvite, Name: "invite-team", DisplayName: "Invite Team"}) + inviteTeam, _, err := sysadminClient.CreateTeam(context.Background(), &model.Team{Type: model.TeamInvite, Name: "invite-team", DisplayName: "Invite Team"}) require.NoError(t, err) - inviteTeamOpenChannel, _, err := sysadminClient.CreateChannel(&model.Channel{TeamId: inviteTeam.Id, Type: model.ChannelTypeOpen, Name: "invite-team-open-channel", DisplayName: "Invite Team - Open Channel"}) + inviteTeamOpenChannel, _, err := sysadminClient.CreateChannel(context.Background(), &model.Channel{TeamId: inviteTeam.Id, Type: model.ChannelTypeOpen, Name: "invite-team-open-channel", DisplayName: "Invite Team - Open Channel"}) require.NoError(t, err) - inviteTeamOpenPost, _, err := sysadminClient.CreatePost(&model.Post{ChannelId: inviteTeamOpenChannel.Id}) + inviteTeamOpenPost, _, err := sysadminClient.CreatePost(context.Background(), &model.Post{ChannelId: inviteTeamOpenChannel.Id}) require.NoError(t, err) testCases := []struct { @@ -3907,7 +3907,7 @@ func TestPostGetInfo(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - info, resp, err := tc.client.GetPostInfo(tc.post.Id) + info, resp, err := tc.client.GetPostInfo(context.Background(), tc.post.Id) if !tc.hasAccess { require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -3937,7 +3937,7 @@ func TestAcknowledgePost(t *testing.T) { client := th.Client post := th.BasicPost - ack, _, err := client.AcknowledgePost(post.Id, th.BasicUser.Id) + ack, _, err := client.AcknowledgePost(context.Background(), post.Id, th.BasicUser.Id) require.NoError(t, err) acks, appErr := th.App.GetAcknowledgementsForPost(post.Id) @@ -3945,28 +3945,28 @@ func TestAcknowledgePost(t *testing.T) { require.Len(t, acks, 1) require.Equal(t, acks[0], ack) - _, resp, err := client.AcknowledgePost("junk", th.BasicUser.Id) + _, resp, err := client.AcknowledgePost(context.Background(), "junk", th.BasicUser.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.AcknowledgePost(GenerateTestId(), th.BasicUser.Id) + _, resp, err = client.AcknowledgePost(context.Background(), GenerateTestId(), th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.AcknowledgePost(post.Id, "junk") + _, resp, err = client.AcknowledgePost(context.Background(), post.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.AcknowledgePost(post.Id, th.BasicUser2.Id) + _, resp, err = client.AcknowledgePost(context.Background(), post.Id, th.BasicUser2.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.AcknowledgePost(post.Id, th.BasicUser.Id) + client.Logout(context.Background()) + _, resp, err = client.AcknowledgePost(context.Background(), post.Id, th.BasicUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.AcknowledgePost(post.Id, th.SystemAdminUser.Id) + _, _, err = th.SystemAdminClient.AcknowledgePost(context.Background(), post.Id, th.SystemAdminUser.Id) require.NoError(t, err) } @@ -3977,7 +3977,7 @@ func TestUnacknowledgePost(t *testing.T) { client := th.Client post := th.BasicPost - ack, _, err := client.AcknowledgePost(post.Id, th.BasicUser.Id) + ack, _, err := client.AcknowledgePost(context.Background(), post.Id, th.BasicUser.Id) require.NoError(t, err) acks, appErr := th.App.GetAcknowledgementsForPost(post.Id) @@ -3985,31 +3985,31 @@ func TestUnacknowledgePost(t *testing.T) { require.Len(t, acks, 1) require.Equal(t, acks[0], ack) - resp, err := client.UnacknowledgePost("junk", th.BasicUser.Id) + resp, err := client.UnacknowledgePost(context.Background(), "junk", th.BasicUser.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UnacknowledgePost(GenerateTestId(), th.BasicUser.Id) + resp, err = client.UnacknowledgePost(context.Background(), GenerateTestId(), th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = client.UnacknowledgePost(post.Id, "junk") + resp, err = client.UnacknowledgePost(context.Background(), post.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UnacknowledgePost(post.Id, th.BasicUser2.Id) + resp, err = client.UnacknowledgePost(context.Background(), post.Id, th.BasicUser2.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, err = client.UnacknowledgePost(post.Id, th.BasicUser.Id) + _, err = client.UnacknowledgePost(context.Background(), post.Id, th.BasicUser.Id) require.NoError(t, err) acks, appErr = th.App.GetAcknowledgementsForPost(post.Id) require.Nil(t, appErr) require.Len(t, acks, 0) - client.Logout() - resp, err = client.UnacknowledgePost(post.Id, th.BasicUser.Id) + client.Logout(context.Background()) + resp, err = client.UnacknowledgePost(context.Background(), post.Id, th.BasicUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } diff --git a/server/channels/api4/preference_test.go b/server/channels/api4/preference_test.go index 1c660a4f71..e70d755d25 100644 --- a/server/channels/api4/preference_test.go +++ b/server/channels/api4/preference_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "testing" "time" @@ -44,9 +45,9 @@ func TestGetPreferences(t *testing.T) { }, } - client.UpdatePreferences(user1.Id, preferences1) + client.UpdatePreferences(context.Background(), user1.Id, preferences1) - prefs, _, err := client.GetPreferences(user1.Id) + prefs, _, err := client.GetPreferences(context.Background(), user1.Id) require.NoError(t, err) // 6 because we have 3 initial preferences insights, tutorial_step and recommended_next_steps added when creating a new user @@ -60,17 +61,17 @@ func TestGetPreferences(t *testing.T) { th.BasicUser2 = th.CreateUser() th.LoginBasic2() - prefs, _, err = client.GetPreferences(th.BasicUser2.Id) + prefs, _, err = client.GetPreferences(context.Background(), th.BasicUser2.Id) require.NoError(t, err) require.Greater(t, len(prefs), 0, "received the wrong number of preferences") - _, resp, err := client.GetPreferences(th.BasicUser.Id) + _, resp, err := client.GetPreferences(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetPreferences(th.BasicUser2.Id) + client.Logout(context.Background()) + _, resp, err = client.GetPreferences(context.Background(), th.BasicUser2.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -102,35 +103,35 @@ func TestGetPreferencesByCategory(t *testing.T) { }, } - client.UpdatePreferences(user1.Id, preferences1) + client.UpdatePreferences(context.Background(), user1.Id, preferences1) - prefs, _, err := client.GetPreferencesByCategory(user1.Id, category) + prefs, _, err := client.GetPreferencesByCategory(context.Background(), user1.Id, category) require.NoError(t, err) require.Equal(t, len(prefs), 2, "received the wrong number of preferences") - _, resp, err := client.GetPreferencesByCategory(user1.Id, "junk") + _, resp, err := client.GetPreferencesByCategory(context.Background(), user1.Id, "junk") require.Error(t, err) CheckNotFoundStatus(t, resp) th.LoginBasic2() - _, resp, err = client.GetPreferencesByCategory(th.BasicUser2.Id, category) + _, resp, err = client.GetPreferencesByCategory(context.Background(), th.BasicUser2.Id, category) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetPreferencesByCategory(user1.Id, category) + _, resp, err = client.GetPreferencesByCategory(context.Background(), user1.Id, category) require.Error(t, err) CheckForbiddenStatus(t, resp) - prefs, resp, err = client.GetPreferencesByCategory(th.BasicUser2.Id, "junk") + prefs, resp, err = client.GetPreferencesByCategory(context.Background(), th.BasicUser2.Id, "junk") require.Error(t, err) CheckNotFoundStatus(t, resp) require.Equal(t, len(prefs), 0, "received the wrong number of preferences") - client.Logout() - _, resp, err = client.GetPreferencesByCategory(th.BasicUser2.Id, category) + client.Logout(context.Background()) + _, resp, err = client.GetPreferencesByCategory(context.Background(), th.BasicUser2.Id, category) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -160,9 +161,9 @@ func TestGetPreferenceByCategoryAndName(t *testing.T) { }, } - client.UpdatePreferences(user.Id, preferences) + client.UpdatePreferences(context.Background(), user.Id, preferences) - pref, _, err := client.GetPreferenceByCategoryAndName(user.Id, model.PreferenceCategoryDirectChannelShow, name) + pref, _, err := client.GetPreferenceByCategoryAndName(context.Background(), user.Id, model.PreferenceCategoryDirectChannelShow, name) require.NoError(t, err) require.Equal(t, preferences[0].UserId, pref.UserId, "UserId preference not saved") @@ -170,25 +171,25 @@ func TestGetPreferenceByCategoryAndName(t *testing.T) { require.Equal(t, preferences[0].Name, pref.Name, "Name preference not saved") preferences[0].Value = model.NewId() - client.UpdatePreferences(user.Id, preferences) + client.UpdatePreferences(context.Background(), user.Id, preferences) - _, resp, err := client.GetPreferenceByCategoryAndName(user.Id, "junk", preferences[0].Name) + _, resp, err := client.GetPreferenceByCategoryAndName(context.Background(), user.Id, "junk", preferences[0].Name) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, "junk") + _, resp, err = client.GetPreferenceByCategoryAndName(context.Background(), user.Id, preferences[0].Category, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetPreferenceByCategoryAndName(th.BasicUser2.Id, preferences[0].Category, "junk") + _, resp, err = client.GetPreferenceByCategoryAndName(context.Background(), th.BasicUser2.Id, preferences[0].Category, "junk") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, preferences[0].Name) + _, _, err = client.GetPreferenceByCategoryAndName(context.Background(), user.Id, preferences[0].Category, preferences[0].Name) require.NoError(t, err) - client.Logout() - _, resp, err = client.GetPreferenceByCategoryAndName(user.Id, preferences[0].Category, preferences[0].Name) + client.Logout(context.Background()) + _, resp, err = client.GetPreferenceByCategoryAndName(context.Background(), user.Id, preferences[0].Category, preferences[0].Name) require.Error(t, err) CheckUnauthorizedStatus(t, resp) @@ -221,7 +222,7 @@ func TestUpdatePreferences(t *testing.T) { }, } - _, err := client.UpdatePreferences(user1.Id, preferences1) + _, err := client.UpdatePreferences(context.Background(), user1.Id, preferences1) require.NoError(t, err) preferences := model.Preferences{ @@ -232,7 +233,7 @@ func TestUpdatePreferences(t *testing.T) { }, } - resp, err := client.UpdatePreferences(user1.Id, preferences) + resp, err := client.UpdatePreferences(context.Background(), user1.Id, preferences) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -243,16 +244,16 @@ func TestUpdatePreferences(t *testing.T) { }, } - resp, err = client.UpdatePreferences(user1.Id, preferences) + resp, err = client.UpdatePreferences(context.Background(), user1.Id, preferences) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UpdatePreferences(th.BasicUser2.Id, preferences) + resp, err = client.UpdatePreferences(context.Background(), th.BasicUser2.Id, preferences) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - resp, err = client.UpdatePreferences(user1.Id, preferences1) + client.Logout(context.Background()) + resp, err = client.UpdatePreferences(context.Background(), user1.Id, preferences1) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -283,7 +284,7 @@ func TestUpdatePreferencesWebsocket(t *testing.T) { }, } - _, err = th.Client.UpdatePreferences(userId, preferences) + _, err = th.Client.UpdatePreferences(context.Background(), userId, preferences) require.NoError(t, err) timeout := time.After(300 * time.Millisecond) @@ -324,14 +325,14 @@ func TestUpdateSidebarPreferences(t *testing.T) { team1 := th.CreateTeam() th.LinkUserToTeam(user, team1) - _, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + _, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) channel := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, team1.Id) th.AddUserToChannel(user, channel) // Confirm that the sidebar is populated correctly to begin with - categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, channel.Id) @@ -339,7 +340,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.Contains(t, categories.Categories[1].Channels, channel.Id) // Favorite the channel - _, err = th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err = th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -350,7 +351,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.NoError(t, err) // Confirm that the channel was added to the Favorites - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, channel.Id) @@ -358,7 +359,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { assert.NotContains(t, categories.Categories[1].Channels, channel.Id) // And unfavorite the channel - _, err = th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err = th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -369,7 +370,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.NoError(t, err) // The channel should've been removed from the Favorites - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, channel.Id) @@ -392,7 +393,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { dmChannel := th.CreateDmChannel(user2) // Favorite the channel - _, err := th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err := th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -403,14 +404,14 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.NoError(t, err) // Confirm that the channel was added to the Favorites on all teams - categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, dmChannel.Id) require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type) assert.NotContains(t, categories.Categories[2].Channels, dmChannel.Id) - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team2.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, dmChannel.Id) @@ -418,7 +419,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { assert.NotContains(t, categories.Categories[2].Channels, dmChannel.Id) // And unfavorite the channel - _, err = th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err = th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -429,14 +430,14 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.NoError(t, err) // The channel should've been removed from the Favorites on all teams - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, dmChannel.Id) require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type) assert.Contains(t, categories.Categories[2].Channels, dmChannel.Id) - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team2.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, dmChannel.Id) @@ -458,9 +459,9 @@ func TestUpdateSidebarPreferences(t *testing.T) { th.LinkUserToTeam(user, team1) th.LinkUserToTeam(user2, team1) - _, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + _, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) - _, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + _, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) channel := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, team1.Id) @@ -468,14 +469,14 @@ func TestUpdateSidebarPreferences(t *testing.T) { th.AddUserToChannel(user2, channel) // Confirm that the sidebar is populated correctly to begin with - categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, channel.Id) require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type) require.Contains(t, categories.Categories[1].Channels, channel.Id) - categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + categories, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, channel.Id) @@ -483,7 +484,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.Contains(t, categories.Categories[1].Channels, channel.Id) // Favorite the channel - _, err = th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err = th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -494,7 +495,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.NoError(t, err) // Confirm that the channel was not added to Favorites for the second user - categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + categories, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.NotContains(t, categories.Categories[0].Channels, channel.Id) @@ -502,7 +503,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { assert.Contains(t, categories.Categories[1].Channels, channel.Id) // Favorite the channel for the second user - _, err = client2.UpdatePreferences(user2.Id, model.Preferences{ + _, err = client2.UpdatePreferences(context.Background(), user2.Id, model.Preferences{ { UserId: user2.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -513,7 +514,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.NoError(t, err) // Confirm that the channel is now in the Favorites for the second user - categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + categories, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, channel.Id) @@ -521,7 +522,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { assert.NotContains(t, categories.Categories[1].Channels, channel.Id) // And unfavorite the channel - _, err = th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err = th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -532,7 +533,7 @@ func TestUpdateSidebarPreferences(t *testing.T) { require.NoError(t, err) // The channel should still be in the second user's favorites - categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + categories, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, channel.Id) @@ -548,7 +549,7 @@ func TestDeletePreferences(t *testing.T) { th.LoginBasic() - prefs, _, _ := client.GetPreferences(th.BasicUser.Id) + prefs, _, _ := client.GetPreferences(context.Background(), th.BasicUser.Id) originalCount := len(prefs) // save 10 preferences @@ -562,29 +563,29 @@ func TestDeletePreferences(t *testing.T) { preferences = append(preferences, preference) } - client.UpdatePreferences(th.BasicUser.Id, preferences) + client.UpdatePreferences(context.Background(), th.BasicUser.Id, preferences) // delete 10 preferences th.LoginBasic2() - resp, err := client.DeletePreferences(th.BasicUser2.Id, preferences) + resp, err := client.DeletePreferences(context.Background(), th.BasicUser2.Id, preferences) require.Error(t, err) CheckForbiddenStatus(t, resp) th.LoginBasic() - _, err = client.DeletePreferences(th.BasicUser.Id, preferences) + _, err = client.DeletePreferences(context.Background(), th.BasicUser.Id, preferences) require.NoError(t, err) - resp, err = client.DeletePreferences(th.BasicUser2.Id, preferences) + resp, err = client.DeletePreferences(context.Background(), th.BasicUser2.Id, preferences) require.Error(t, err) CheckForbiddenStatus(t, resp) - prefs, _, _ = client.GetPreferences(th.BasicUser.Id) + prefs, _, _ = client.GetPreferences(context.Background(), th.BasicUser.Id) require.Len(t, prefs, originalCount, "should've deleted preferences") - client.Logout() - resp, err = client.DeletePreferences(th.BasicUser.Id, preferences) + client.Logout(context.Background()) + resp, err = client.DeletePreferences(context.Background(), th.BasicUser.Id, preferences) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -606,7 +607,7 @@ func TestDeletePreferencesWebsocket(t *testing.T) { Name: model.NewId(), }, } - _, err := th.Client.UpdatePreferences(userId, preferences) + _, err := th.Client.UpdatePreferences(context.Background(), userId, preferences) require.NoError(t, err) WebSocketClient, err := th.CreateWebSocketClient() @@ -616,7 +617,7 @@ func TestDeletePreferencesWebsocket(t *testing.T) { wsResp := <-WebSocketClient.ResponseChannel require.Equal(t, model.StatusOk, wsResp.Status, "should have responded OK to authentication challenge") - _, err = th.Client.DeletePreferences(userId, preferences) + _, err = th.Client.DeletePreferences(context.Background(), userId, preferences) require.NoError(t, err) timeout := time.After(30000 * time.Millisecond) @@ -657,14 +658,14 @@ func TestDeleteSidebarPreferences(t *testing.T) { team1 := th.CreateTeam() th.LinkUserToTeam(user, team1) - _, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + _, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) channel := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, team1.Id) th.AddUserToChannel(user, channel) // Confirm that the sidebar is populated correctly to begin with - categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, channel.Id) @@ -672,7 +673,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { require.Contains(t, categories.Categories[1].Channels, channel.Id) // Favorite the channel - _, err = th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err = th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -682,7 +683,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { }) require.NoError(t, err) // Confirm that the channel was added to the Favorites - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, channel.Id) @@ -690,7 +691,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { assert.NotContains(t, categories.Categories[1].Channels, channel.Id) // And unfavorite the channel by deleting the preference - _, err = th.Client.DeletePreferences(user.Id, model.Preferences{ + _, err = th.Client.DeletePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -700,7 +701,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { require.NoError(t, err) // The channel should've been removed from the Favorites - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, channel.Id) @@ -723,7 +724,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { dmChannel := th.CreateDmChannel(user2) // Favorite the channel - _, err := th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err := th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -734,14 +735,14 @@ func TestDeleteSidebarPreferences(t *testing.T) { require.NoError(t, err) // Confirm that the channel was added to the Favorites on all teams - categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, dmChannel.Id) require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type) assert.NotContains(t, categories.Categories[2].Channels, dmChannel.Id) - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team2.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, dmChannel.Id) @@ -749,7 +750,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { assert.NotContains(t, categories.Categories[2].Channels, dmChannel.Id) // And unfavorite the channel by deleting the preference - _, err = th.Client.DeletePreferences(user.Id, model.Preferences{ + _, err = th.Client.DeletePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -759,14 +760,14 @@ func TestDeleteSidebarPreferences(t *testing.T) { require.NoError(t, err) // The channel should've been removed from the Favorites on all teams - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, dmChannel.Id) require.Equal(t, model.SidebarCategoryDirectMessages, categories.Categories[2].Type) assert.Contains(t, categories.Categories[2].Channels, dmChannel.Id) - categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team2.Id, "") + categories, _, err = th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team2.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, dmChannel.Id) @@ -788,9 +789,9 @@ func TestDeleteSidebarPreferences(t *testing.T) { th.LinkUserToTeam(user, team1) th.LinkUserToTeam(user2, team1) - _, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + _, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) - _, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + _, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) channel := th.CreateChannelWithClientAndTeam(th.Client, model.ChannelTypeOpen, team1.Id) @@ -798,14 +799,14 @@ func TestDeleteSidebarPreferences(t *testing.T) { th.AddUserToChannel(user2, channel) // Confirm that the sidebar is populated correctly to begin with - categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(user.Id, team1.Id, "") + categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), user.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, channel.Id) require.Equal(t, model.SidebarCategoryChannels, categories.Categories[1].Type) require.Contains(t, categories.Categories[1].Channels, channel.Id) - categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + categories, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) require.NotContains(t, categories.Categories[0].Channels, channel.Id) @@ -813,7 +814,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { require.Contains(t, categories.Categories[1].Channels, channel.Id) // Favorite the channel for both users - _, err = th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err = th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -823,7 +824,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { }) require.NoError(t, err) - _, err = client2.UpdatePreferences(user2.Id, model.Preferences{ + _, err = client2.UpdatePreferences(context.Background(), user2.Id, model.Preferences{ { UserId: user2.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -834,7 +835,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { require.NoError(t, err) // Confirm that the channel is in the Favorites for the second user - categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + categories, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, channel.Id) @@ -842,7 +843,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { assert.NotContains(t, categories.Categories[1].Channels, channel.Id) // And unfavorite the channel for the first user by deleting the preference - _, err = th.Client.UpdatePreferences(user.Id, model.Preferences{ + _, err = th.Client.UpdatePreferences(context.Background(), user.Id, model.Preferences{ { UserId: user.Id, Category: model.PreferenceCategoryFavoriteChannel, @@ -853,7 +854,7 @@ func TestDeleteSidebarPreferences(t *testing.T) { require.NoError(t, err) // The channel should still be in the second user's favorites - categories, _, err = client2.GetSidebarCategoriesForTeamForUser(user2.Id, team1.Id, "") + categories, _, err = client2.GetSidebarCategoriesForTeamForUser(context.Background(), user2.Id, team1.Id, "") require.NoError(t, err) require.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) assert.Contains(t, categories.Categories[0].Channels, channel.Id) diff --git a/server/channels/api4/reaction_test.go b/server/channels/api4/reaction_test.go index 54dde03e8d..0a51fca438 100644 --- a/server/channels/api4/reaction_test.go +++ b/server/channels/api4/reaction_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "strings" "testing" @@ -33,7 +34,7 @@ func TestSaveReaction(t *testing.T) { } t.Run("successful-reaction", func(t *testing.T) { - rr, _, err := client.SaveReaction(reaction) + rr, _, err := client.SaveReaction(context.Background(), reaction) require.NoError(t, err) require.Equal(t, reaction.UserId, rr.UserId, "UserId did not match") require.Equal(t, reaction.PostId, rr.PostId, "PostId did not match") @@ -46,7 +47,7 @@ func TestSaveReaction(t *testing.T) { }) t.Run("duplicated-reaction", func(t *testing.T) { - _, _, err := client.SaveReaction(reaction) + _, _, err := client.SaveReaction(context.Background(), reaction) require.NoError(t, err) reactions, appErr := th.App.GetReactionsForPost(postId) require.Nil(t, appErr) @@ -56,7 +57,7 @@ func TestSaveReaction(t *testing.T) { t.Run("save-second-reaction", func(t *testing.T) { reaction.EmojiName = "sad" - rr, _, err := client.SaveReaction(reaction) + rr, _, err := client.SaveReaction(context.Background(), reaction) require.NoError(t, err) require.Equal(t, rr.EmojiName, reaction.EmojiName, "EmojiName did not match") @@ -68,7 +69,7 @@ func TestSaveReaction(t *testing.T) { t.Run("saving-special-case", func(t *testing.T) { reaction.EmojiName = "+1" - rr, _, err := client.SaveReaction(reaction) + rr, _, err := client.SaveReaction(context.Background(), reaction) require.NoError(t, err) require.Equal(t, reaction.EmojiName, rr.EmojiName, "EmojiName did not match") @@ -80,7 +81,7 @@ func TestSaveReaction(t *testing.T) { t.Run("react-to-not-existing-post-id", func(t *testing.T) { reaction.PostId = GenerateTestId() - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -88,7 +89,7 @@ func TestSaveReaction(t *testing.T) { t.Run("react-to-not-valid-post-id", func(t *testing.T) { reaction.PostId = "junk" - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -97,7 +98,7 @@ func TestSaveReaction(t *testing.T) { reaction.PostId = postId reaction.UserId = GenerateTestId() - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -105,7 +106,7 @@ func TestSaveReaction(t *testing.T) { t.Run("react-as-not-valid-user-id", func(t *testing.T) { reaction.UserId = "junk" - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -114,7 +115,7 @@ func TestSaveReaction(t *testing.T) { reaction.UserId = userId reaction.EmojiName = "" - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -122,7 +123,7 @@ func TestSaveReaction(t *testing.T) { t.Run("react-as-not-valid-emoji-name", func(t *testing.T) { reaction.EmojiName = strings.Repeat("a", 65) - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -130,23 +131,23 @@ func TestSaveReaction(t *testing.T) { t.Run("react-as-other-user", func(t *testing.T) { reaction.EmojiName = "smile" otherUser := th.CreateUser() - client.Logout() - client.Login(otherUser.Email, otherUser.Password) + client.Logout(context.Background()) + client.Login(context.Background(), otherUser.Email, otherUser.Password) - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("react-being-not-logged-in", func(t *testing.T) { - client.Logout() - _, resp, err := client.SaveReaction(reaction) + client.Logout(context.Background()) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("react-as-other-user-being-system-admin", func(t *testing.T) { - _, resp, err := th.SystemAdminClient.SaveReaction(reaction) + _, resp, err := th.SystemAdminClient.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -155,7 +156,7 @@ func TestSaveReaction(t *testing.T) { th.LoginBasic() th.RemovePermissionFromRole(model.PermissionAddReaction.Id, model.ChannelUserRoleId) - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -180,7 +181,7 @@ func TestSaveReaction(t *testing.T) { appErr := th.App.DeleteChannel(th.Context, channel, userId) assert.Nil(t, appErr) - _, resp, err := client.SaveReaction(reaction) + _, resp, err := client.SaveReaction(context.Background(), reaction) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -235,7 +236,7 @@ func TestGetReactions(t *testing.T) { } t.Run("get-reactions", func(t *testing.T) { - rr, _, err := client.GetReactions(postId) + rr, _, err := client.GetReactions(context.Background(), postId) require.NoError(t, err) assert.Len(t, rr, 5) @@ -245,7 +246,7 @@ func TestGetReactions(t *testing.T) { }) t.Run("get-reactions-of-invalid-post-id", func(t *testing.T) { - rr, resp, err := client.GetReactions("junk") + rr, resp, err := client.GetReactions(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -253,21 +254,21 @@ func TestGetReactions(t *testing.T) { }) t.Run("get-reactions-of-not-existing-post-id", func(t *testing.T) { - _, resp, err := client.GetReactions(GenerateTestId()) + _, resp, err := client.GetReactions(context.Background(), GenerateTestId()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("get-reactions-as-anonymous-user", func(t *testing.T) { - client.Logout() + client.Logout(context.Background()) - _, resp, err := client.GetReactions(postId) + _, resp, err := client.GetReactions(context.Background(), postId) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("get-reactions-as-system-admin", func(t *testing.T) { - _, _, err := th.SystemAdminClient.GetReactions(postId) + _, _, err := th.SystemAdminClient.GetReactions(context.Background(), postId) require.NoError(t, err) }) } @@ -316,7 +317,7 @@ func TestDeleteReaction(t *testing.T) { require.Nil(t, appErr) require.Equal(t, 1, len(reactions), "didn't save reaction correctly") - _, err := client.DeleteReaction(r1) + _, err := client.DeleteReaction(context.Background(), r1) require.NoError(t, err) reactions, appErr = th.App.GetReactionsForPost(postId) @@ -331,7 +332,7 @@ func TestDeleteReaction(t *testing.T) { require.Nil(t, appErr) require.Equal(t, len(reactions), 2, "didn't save reactions correctly") - _, err := client.DeleteReaction(r2) + _, err := client.DeleteReaction(context.Background(), r2) require.NoError(t, err) reactions, appErr = th.App.GetReactionsForPost(postId) @@ -346,7 +347,7 @@ func TestDeleteReaction(t *testing.T) { require.Nil(t, appErr) require.Equal(t, 2, len(reactions), "didn't save reactions correctly") - _, err := client.DeleteReaction(r3) + _, err := client.DeleteReaction(context.Background(), r3) require.NoError(t, err) reactions, appErr = th.App.GetReactionsForPost(postId) @@ -364,7 +365,7 @@ func TestDeleteReaction(t *testing.T) { th.LoginBasic() - resp, err := client.DeleteReaction(r4) + resp, err := client.DeleteReaction(context.Background(), r4) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -375,7 +376,7 @@ func TestDeleteReaction(t *testing.T) { t.Run("delete-reaction-from-not-existing-post-id", func(t *testing.T) { r1.PostId = GenerateTestId() - resp, err := client.DeleteReaction(r1) + resp, err := client.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -383,7 +384,7 @@ func TestDeleteReaction(t *testing.T) { t.Run("delete-reaction-from-not-valid-post-id", func(t *testing.T) { r1.PostId = "junk" - resp, err := client.DeleteReaction(r1) + resp, err := client.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -392,7 +393,7 @@ func TestDeleteReaction(t *testing.T) { r1.PostId = postId r1.UserId = GenerateTestId() - resp, err := client.DeleteReaction(r1) + resp, err := client.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -400,7 +401,7 @@ func TestDeleteReaction(t *testing.T) { t.Run("delete-reaction-from-not-valid-user-id", func(t *testing.T) { r1.UserId = "junk" - resp, err := client.DeleteReaction(r1) + resp, err := client.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -409,7 +410,7 @@ func TestDeleteReaction(t *testing.T) { r1.UserId = userId r1.EmojiName = "" - resp, err := client.DeleteReaction(r1) + resp, err := client.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -417,25 +418,25 @@ func TestDeleteReaction(t *testing.T) { t.Run("delete-reaction-with-not-existing-name", func(t *testing.T) { r1.EmojiName = strings.Repeat("a", 65) - resp, err := client.DeleteReaction(r1) + resp, err := client.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("delete-reaction-as-anonymous-user", func(t *testing.T) { - client.Logout() + client.Logout(context.Background()) r1.EmojiName = "smile" - resp, err := client.DeleteReaction(r1) + resp, err := client.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("delete-reaction-as-system-admin", func(t *testing.T) { - _, err := th.SystemAdminClient.DeleteReaction(r1) + _, err := th.SystemAdminClient.DeleteReaction(context.Background(), r1) require.NoError(t, err) - _, err = th.SystemAdminClient.DeleteReaction(r4) + _, err = th.SystemAdminClient.DeleteReaction(context.Background(), r4) require.NoError(t, err) reactions, appErr := th.App.GetReactionsForPost(postId) @@ -449,7 +450,7 @@ func TestDeleteReaction(t *testing.T) { th.RemovePermissionFromRole(model.PermissionRemoveReaction.Id, model.ChannelUserRoleId) th.App.SaveReactionForPost(th.Context, r1) - resp, err := client.DeleteReaction(r1) + resp, err := client.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -463,7 +464,7 @@ func TestDeleteReaction(t *testing.T) { th.RemovePermissionFromRole(model.PermissionRemoveOthersReactions.Id, model.SystemAdminRoleId) th.App.SaveReactionForPost(th.Context, r1) - resp, err := th.SystemAdminClient.DeleteReaction(r1) + resp, err := th.SystemAdminClient.DeleteReaction(context.Background(), r1) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -485,7 +486,7 @@ func TestDeleteReaction(t *testing.T) { EmojiName: "smile", } - r1, _, err := client.SaveReaction(reaction) + r1, _, err := client.SaveReaction(context.Background(), reaction) require.NoError(t, err) reactions, appErr := th.App.GetReactionsForPost(postId) @@ -495,7 +496,7 @@ func TestDeleteReaction(t *testing.T) { appErr = th.App.DeleteChannel(th.Context, channel, userId) assert.Nil(t, appErr) - _, resp, err := client.SaveReaction(r1) + _, resp, err := client.SaveReaction(context.Background(), r1) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -518,11 +519,11 @@ func TestGetBulkReactions(t *testing.T) { post4 := &model.Post{UserId: user2Id, ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a"} post5 := &model.Post{UserId: user2Id, ChannelId: th.BasicChannel.Id, Message: "zz" + model.NewId() + "a"} - post1, _, _ = client.CreatePost(post1) - post2, _, _ = client.CreatePost(post2) - post3, _, _ = client.CreatePost(post3) - post4, _, _ = client.CreatePost(post4) - post5, _, _ = client.CreatePost(post5) + post1, _, _ = client.CreatePost(context.Background(), post1) + post2, _, _ = client.CreatePost(context.Background(), post2) + post3, _, _ = client.CreatePost(context.Background(), post3) + post4, _, _ = client.CreatePost(context.Background(), post4) + post5, _, _ = client.CreatePost(context.Background(), post5) expectedPostIdsReactionsMap := make(map[string][]*model.Reaction) expectedPostIdsReactionsMap[post1.Id] = []*model.Reaction{} @@ -564,7 +565,7 @@ func TestGetBulkReactions(t *testing.T) { postIds := []string{post1.Id, post2.Id, post3.Id, post4.Id, post5.Id} t.Run("get-reactions", func(t *testing.T) { - postIdsReactionsMap, _, err := client.GetBulkReactions(postIds) + postIdsReactionsMap, _, err := client.GetBulkReactions(context.Background(), postIds) require.NoError(t, err) assert.ElementsMatch(t, expectedPostIdsReactionsMap[post1.Id], postIdsReactionsMap[post1.Id]) @@ -577,9 +578,9 @@ func TestGetBulkReactions(t *testing.T) { }) t.Run("get-reactions-as-anonymous-user", func(t *testing.T) { - client.Logout() + client.Logout(context.Background()) - _, resp, err := client.GetBulkReactions(postIds) + _, resp, err := client.GetBulkReactions(context.Background(), postIds) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) diff --git a/server/channels/api4/resolver_channel_test.go b/server/channels/api4/resolver_channel_test.go index 88e78a7f27..8e7aab3756 100644 --- a/server/channels/api4/resolver_channel_test.go +++ b/server/channels/api4/resolver_channel_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "os" "testing" @@ -314,7 +315,7 @@ func TestGraphQLChannels(t *testing.T) { require.Len(t, resp.Errors, 0) // no errors for no channels found th.BasicChannel.Purpose = "newpurpose" - _, _, err = th.Client.UpdateChannel(th.BasicChannel) + _, _, err = th.Client.UpdateChannel(context.Background(), th.BasicChannel) require.NoError(t, err) input = graphQLInput{ @@ -332,10 +333,10 @@ func TestGraphQLChannels(t *testing.T) { require.NoError(t, json.Unmarshal(resp.Data, &q)) assert.Len(t, q.Channels, 1) - _, err = th.Client.DeleteChannel(ch1.Id) + _, err = th.Client.DeleteChannel(context.Background(), ch1.Id) require.NoError(t, err) - _, err = th.Client.DeleteChannel(ch2.Id) + _, err = th.Client.DeleteChannel(context.Background(), ch2.Id) require.NoError(t, err) input = graphQLInput{ diff --git a/server/channels/api4/resolver_sidebar_categories_test.go b/server/channels/api4/resolver_sidebar_categories_test.go index 7967f277ca..dc33a8b788 100644 --- a/server/channels/api4/resolver_sidebar_categories_test.go +++ b/server/channels/api4/resolver_sidebar_categories_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "os" "sort" @@ -57,7 +58,7 @@ func TestGraphQLSidebarCategories(t *testing.T) { require.NoError(t, json.Unmarshal(resp.Data, &q)) assert.Len(t, q.SidebarCategories, 3) - categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(th.BasicUser.Id, th.BasicTeam.Id, "") + categories, _, err := th.Client.GetSidebarCategoriesForTeamForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, "") require.NoError(t, err) sort.Slice(q.SidebarCategories, func(i, j int) bool { diff --git a/server/channels/api4/resolver_team_member_test.go b/server/channels/api4/resolver_team_member_test.go index 660fbc436f..70925fab35 100644 --- a/server/channels/api4/resolver_team_member_test.go +++ b/server/channels/api4/resolver_team_member_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "os" "sort" @@ -307,7 +308,7 @@ func TestGraphQLTeamMembersAsGuest(t *testing.T) { } var err error - team, _, err = th.Client.CreateTeam(team) + team, _, err = th.Client.CreateTeam(context.Background(), team) require.NoError(t, err) th.BasicTeam = team diff --git a/server/channels/api4/resolver_test.go b/server/channels/api4/resolver_test.go index b3df4a09ab..0f783cbafa 100644 --- a/server/channels/api4/resolver_test.go +++ b/server/channels/api4/resolver_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "os" "testing" @@ -35,7 +36,7 @@ func TestGraphQLConfig(t *testing.T) { `, } - cfg, _, err := th.Client.GetOldClientConfig("") + cfg, _, err := th.Client.GetOldClientConfig(context.Background(), "") require.NoError(t, err) resp, err := th.MakeGraphQLRequest(&input) @@ -66,7 +67,7 @@ func TestGraphQLLicense(t *testing.T) { `, } - cfg, _, err := th.Client.GetOldClientLicense("") + cfg, _, err := th.Client.GetOldClientLicense(context.Background(), "") require.NoError(t, err) resp, err := th.MakeGraphQLRequest(&input) @@ -105,7 +106,7 @@ func TestGraphQLChannelsLeft(t *testing.T) { }) t.Run("Left", func(t *testing.T) { - _, err := th.Client.RemoveUserFromChannel(th.BasicChannel.Id, th.BasicUser.Id) + _, err := th.Client.RemoveUserFromChannel(context.Background(), th.BasicChannel.Id, th.BasicUser.Id) require.NoError(t, err) input := graphQLInput{ diff --git a/server/channels/api4/resolver_user_test.go b/server/channels/api4/resolver_user_test.go index d41d27443c..9a4e7d7487 100644 --- a/server/channels/api4/resolver_user_test.go +++ b/server/channels/api4/resolver_user_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "os" "sort" @@ -134,7 +135,7 @@ func TestGraphQLUser(t *testing.T) { assert.Equal(t, th.BasicUser.Props, q.User.Props) assert.Equal(t, th.BasicUser.NotifyProps, q.User.NotifyProps) - roles, _, err := th.Client.GetRolesByNames(th.BasicUser.GetRoles()) + roles, _, err := th.Client.GetRolesByNames(context.Background(), th.BasicUser.GetRoles()) require.NoError(t, err) assert.Len(t, q.User.Roles, 1) @@ -145,7 +146,7 @@ func TestGraphQLUser(t *testing.T) { assert.Equal(t, float64(roles[0].UpdateAt), q.User.Roles[0].UpdateAt) assert.Equal(t, float64(roles[0].DeleteAt), q.User.Roles[0].DeleteAt) - prefs, _, err := th.Client.GetPreferences(th.BasicUser.Id) + prefs, _, err := th.Client.GetPreferences(context.Background(), th.BasicUser.Id) require.NoError(t, err) sort.Slice(prefs, func(i, j int) bool { diff --git a/server/channels/api4/role_test.go b/server/channels/api4/role_test.go index 350a8a03d8..0a6617413f 100644 --- a/server/channels/api4/role_test.go +++ b/server/channels/api4/role_test.go @@ -23,7 +23,7 @@ func TestGetAllRoles(t *testing.T) { require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - received, resp, err := client.GetAllRoles() + received, resp, err := client.GetAllRoles(context.Background()) require.NoError(t, err) CheckOKStatus(t, resp) @@ -31,7 +31,7 @@ func TestGetAllRoles(t *testing.T) { }) t.Run("NormalClient", func(t *testing.T) { - _, resp, err := th.Client.GetAllRoles() + _, resp, err := th.Client.GetAllRoles(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -54,7 +54,7 @@ func TestGetRole(t *testing.T) { defer th.App.Srv().Store().Job().Delete(role.Id) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - received, _, err := client.GetRole(role.Id) + received, _, err := client.GetRole(context.Background(), role.Id) require.NoError(t, err) assert.Equal(t, received.Id, role.Id) @@ -66,11 +66,11 @@ func TestGetRole(t *testing.T) { }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.GetRole("1234") + _, resp, err := client.GetRole(context.Background(), "1234") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetRole(model.NewId()) + _, resp, err = client.GetRole(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -93,7 +93,7 @@ func TestGetRoleByName(t *testing.T) { defer th.App.Srv().Store().Job().Delete(role.Id) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - received, _, err := client.GetRoleByName(role.Name) + received, _, err := client.GetRoleByName(context.Background(), role.Name) require.NoError(t, err) assert.Equal(t, received.Id, role.Id) @@ -105,11 +105,11 @@ func TestGetRoleByName(t *testing.T) { }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.GetRoleByName(strings.Repeat("abcdefghij", 10)) + _, resp, err := client.GetRoleByName(context.Background(), strings.Repeat("abcdefghij", 10)) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetRoleByName(model.NewId()) + _, resp, err = client.GetRoleByName(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -155,7 +155,7 @@ func TestGetRolesByNames(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { // Check all three roles can be found. - received, _, err := client.GetRolesByNames([]string{role1.Name, role2.Name, role3.Name}) + received, _, err := client.GetRolesByNames(context.Background(), []string{role1.Name, role2.Name, role3.Name}) require.NoError(t, err) assert.Contains(t, received, role1) @@ -163,25 +163,25 @@ func TestGetRolesByNames(t *testing.T) { assert.Contains(t, received, role3) // Check a list of non-existent roles. - _, _, err = client.GetRolesByNames([]string{model.NewId(), model.NewId()}) + _, _, err = client.GetRolesByNames(context.Background(), []string{model.NewId(), model.NewId()}) require.NoError(t, err) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { // Empty list should error. - _, resp, err := client.GetRolesByNames([]string{}) + _, resp, err := client.GetRolesByNames(context.Background(), []string{}) require.Error(t, err) CheckBadRequestStatus(t, resp) }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { // Invalid role name should error. - _, resp, err := client.GetRolesByNames([]string{model.NewId(), model.NewId(), "!!!!!!"}) + _, resp, err := client.GetRolesByNames(context.Background(), []string{model.NewId(), model.NewId(), "!!!!!!"}) require.Error(t, err) CheckBadRequestStatus(t, resp) // Empty/whitespace rolenames should be ignored. - _, _, err = client.GetRolesByNames([]string{model.NewId(), model.NewId(), "", " "}) + _, _, err = client.GetRolesByNames(context.Background(), []string{model.NewId(), model.NewId(), "", " "}) require.NoError(t, err) }) @@ -214,7 +214,7 @@ func TestPatchRole(t *testing.T) { assert.NoError(t, err) defer th.App.Srv().Store().Job().Delete(adminRole.Id) - _, resp, err := client.PatchRole(adminRole.Id, patch) + _, resp, err := client.PatchRole(context.Background(), adminRole.Id, patch) require.Error(t, err) CheckNotImplementedStatus(t, resp) @@ -227,7 +227,7 @@ func TestPatchRole(t *testing.T) { Permissions: &[]string{model.PermissionSysconsoleWriteUserManagementSystemRoles.Id}, } - _, resp, err = client.PatchRole(systemManager.Id, patchWriteSystemRoles) + _, resp, err = client.PatchRole(context.Background(), systemManager.Id, patchWriteSystemRoles) require.Error(t, err) CheckNotImplementedStatus(t, resp) @@ -235,7 +235,7 @@ func TestPatchRole(t *testing.T) { Permissions: &[]string{model.PermissionSysconsoleReadUserManagementSystemRoles.Id}, } - _, resp, err = client.PatchRole(systemManager.Id, patchReadSystemRoles) + _, resp, err = client.PatchRole(context.Background(), systemManager.Id, patchReadSystemRoles) require.Error(t, err) CheckNotImplementedStatus(t, resp) @@ -243,13 +243,13 @@ func TestPatchRole(t *testing.T) { Permissions: &[]string{model.PermissionManageRoles.Id}, } - _, resp, err = client.PatchRole(systemManager.Id, patchManageRoles) + _, resp, err = client.PatchRole(context.Background(), systemManager.Id, patchManageRoles) require.Error(t, err) CheckNotImplementedStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - received, _, err := client.PatchRole(role.Id, patch) + received, _, err := client.PatchRole(context.Background(), role.Id, patch) require.NoError(t, err) assert.Equal(t, received.Id, role.Id) @@ -262,19 +262,19 @@ func TestPatchRole(t *testing.T) { assert.Equal(t, received.SchemeManaged, role.SchemeManaged) // Check a no-op patch succeeds. - _, _, err = client.PatchRole(role.Id, patch) + _, _, err = client.PatchRole(context.Background(), role.Id, patch) require.NoError(t, err) - _, resp, err := client.PatchRole("junk", patch) + _, resp, err := client.PatchRole(context.Background(), "junk", patch) require.Error(t, err) CheckBadRequestStatus(t, resp) }) - _, resp, err := th.Client.PatchRole(model.NewId(), patch) + _, resp, err := th.Client.PatchRole(context.Background(), model.NewId(), patch) require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = th.Client.PatchRole(role.Id, patch) + _, resp, err = th.Client.PatchRole(context.Background(), role.Id, patch) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -283,7 +283,7 @@ func TestPatchRole(t *testing.T) { } th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - received, _, err := client.PatchRole(role.Id, patch) + received, _, err := client.PatchRole(context.Background(), role.Id, patch) require.NoError(t, err) assert.Equal(t, received.Id, role.Id) @@ -302,7 +302,7 @@ func TestPatchRole(t *testing.T) { guestRole, err := th.App.Srv().Store().Role().GetByName(context.Background(), "system_guest") require.NoError(t, err) - received, resp, err = client.PatchRole(guestRole.Id, patch) + received, resp, err = client.PatchRole(context.Background(), guestRole.Id, patch) require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -313,7 +313,7 @@ func TestPatchRole(t *testing.T) { th.App.Srv().SetLicense(license) guestRole, err := th.App.Srv().Store().Role().GetByName(context.Background(), "system_guest") require.NoError(t, err) - _, _, err = client.PatchRole(guestRole.Id, patch) + _, _, err = client.PatchRole(context.Background(), guestRole.Id, patch) require.NoError(t, err) }) }) diff --git a/server/channels/api4/saml_test.go b/server/channels/api4/saml_test.go index 3dedd894f5..941439902c 100644 --- a/server/channels/api4/saml_test.go +++ b/server/channels/api4/saml_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "net/http" "testing" @@ -18,7 +19,7 @@ func TestGetSamlMetadata(t *testing.T) { defer th.TearDown() client := th.Client - _, resp, err := client.GetSamlMetadata() + _, resp, err := client.GetSamlMetadata(context.Background()) require.Error(t, err) CheckNotImplementedStatus(t, resp) @@ -65,11 +66,11 @@ func TestSamlResetId(t *testing.T) { }) require.Nil(t, appErr) - _, resp, err := th.Client.ResetSamlAuthDataToEmail(false, false, nil) + _, resp, err := th.Client.ResetSamlAuthDataToEmail(context.Background(), false, false, nil) require.Error(t, err) CheckForbiddenStatus(t, resp) - numAffected, resp, err := th.SystemAdminClient.ResetSamlAuthDataToEmail(false, false, nil) + numAffected, resp, err := th.SystemAdminClient.ResetSamlAuthDataToEmail(context.Background(), false, false, nil) require.NoError(t, err) CheckOKStatus(t, resp) require.Equal(t, int64(1), numAffected) diff --git a/server/channels/api4/scheme_test.go b/server/channels/api4/scheme_test.go index 436c596803..0ae632c278 100644 --- a/server/channels/api4/scheme_test.go +++ b/server/channels/api4/scheme_test.go @@ -30,7 +30,7 @@ func TestCreateScheme(t *testing.T) { Scope: model.SchemeScopeTeam, } - s1, _, err := th.SystemAdminClient.CreateScheme(scheme1) + s1, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) assert.Equal(t, s1.DisplayName, scheme1.DisplayName) @@ -48,20 +48,20 @@ func TestCreateScheme(t *testing.T) { assert.NotZero(t, len(s1.DefaultChannelGuestRole)) // Check the default roles have been created. - _, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultTeamAdminRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamAdminRole) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultTeamUserRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamUserRole) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelAdminRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelAdminRole) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelUserRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelUserRole) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultTeamGuestRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamGuestRole) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultTeamGuestRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamGuestRole) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelGuestRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelGuestRole) require.NoError(t, err) // Basic Test of a Channel scheme. @@ -72,7 +72,7 @@ func TestCreateScheme(t *testing.T) { Scope: model.SchemeScopeChannel, } - s2, _, err := th.SystemAdminClient.CreateScheme(scheme2) + s2, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme2) require.NoError(t, err) assert.Equal(t, s2.DisplayName, scheme2.DisplayName) @@ -90,11 +90,11 @@ func TestCreateScheme(t *testing.T) { assert.NotZero(t, len(s2.DefaultChannelGuestRole)) // Check the default roles have been created. - _, _, err = th.SystemAdminClient.GetRoleByName(s2.DefaultChannelAdminRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s2.DefaultChannelAdminRole) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetRoleByName(s2.DefaultChannelUserRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s2.DefaultChannelUserRole) require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetRoleByName(s2.DefaultChannelGuestRole) + _, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s2.DefaultChannelGuestRole) require.NoError(t, err) // Try and create a scheme with an invalid scope. @@ -105,7 +105,7 @@ func TestCreateScheme(t *testing.T) { Scope: model.NewId(), } - _, r3, _ := th.SystemAdminClient.CreateScheme(scheme3) + _, r3, _ := th.SystemAdminClient.CreateScheme(context.Background(), scheme3) CheckBadRequestStatus(t, r3) // Try and create a scheme with an invalid display name. @@ -115,7 +115,7 @@ func TestCreateScheme(t *testing.T) { Description: model.NewId(), Scope: model.NewId(), } - _, r4, _ := th.SystemAdminClient.CreateScheme(scheme4) + _, r4, _ := th.SystemAdminClient.CreateScheme(context.Background(), scheme4) CheckBadRequestStatus(t, r4) // Try and create a scheme with an invalid name. @@ -125,7 +125,7 @@ func TestCreateScheme(t *testing.T) { Description: model.NewId(), Scope: model.NewId(), } - _, r8, _ := th.SystemAdminClient.CreateScheme(scheme8) + _, r8, _ := th.SystemAdminClient.CreateScheme(context.Background(), scheme8) CheckBadRequestStatus(t, r8) // Try and create a scheme without the appropriate permissions. @@ -135,7 +135,7 @@ func TestCreateScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeTeam, } - _, r5, err := th.Client.CreateScheme(scheme5) + _, r5, err := th.Client.CreateScheme(context.Background(), scheme5) require.Error(t, err) CheckForbiddenStatus(t, r5) @@ -147,7 +147,7 @@ func TestCreateScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeTeam, } - _, r6, _ := th.SystemAdminClient.CreateScheme(scheme6) + _, r6, _ := th.SystemAdminClient.CreateScheme(context.Background(), scheme6) CheckNotImplementedStatus(t, r6) // Create scheme with a Professional SKU license but no explicit 'custom_permissions_schemes' license feature. @@ -171,7 +171,7 @@ func TestCreateScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeTeam, } - _, resp, err := th.SystemAdminClient.CreateScheme(scheme6b) + _, resp, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme6b) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -186,7 +186,7 @@ func TestCreateScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeTeam, } - _, r7, _ := th.SystemAdminClient.CreateScheme(scheme7) + _, r7, _ := th.SystemAdminClient.CreateScheme(context.Background(), scheme7) CheckNotImplementedStatus(t, r7) } @@ -206,7 +206,7 @@ func TestGetScheme(t *testing.T) { th.App.SetPhase2PermissionsMigrationStatus(true) - s1, _, err := th.SystemAdminClient.CreateScheme(scheme1) + s1, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) assert.Equal(t, s1.DisplayName, scheme1.DisplayName) @@ -223,33 +223,33 @@ func TestGetScheme(t *testing.T) { assert.NotZero(t, len(s1.DefaultChannelUserRole)) assert.NotZero(t, len(s1.DefaultChannelGuestRole)) - s2, _, err := th.SystemAdminClient.GetScheme(s1.Id) + s2, _, err := th.SystemAdminClient.GetScheme(context.Background(), s1.Id) require.NoError(t, err) assert.Equal(t, s1, s2) - _, r3, _ := th.SystemAdminClient.GetScheme(model.NewId()) + _, r3, _ := th.SystemAdminClient.GetScheme(context.Background(), model.NewId()) CheckNotFoundStatus(t, r3) - _, r4, _ := th.SystemAdminClient.GetScheme("12345") + _, r4, _ := th.SystemAdminClient.GetScheme(context.Background(), "12345") CheckBadRequestStatus(t, r4) - th.SystemAdminClient.Logout() - _, r5, _ := th.SystemAdminClient.GetScheme(s1.Id) + th.SystemAdminClient.Logout(context.Background()) + _, r5, _ := th.SystemAdminClient.GetScheme(context.Background(), s1.Id) CheckUnauthorizedStatus(t, r5) - th.SystemAdminClient.Login(th.SystemAdminUser.Username, th.SystemAdminUser.Password) + th.SystemAdminClient.Login(context.Background(), th.SystemAdminUser.Username, th.SystemAdminUser.Password) th.App.Srv().SetLicense(nil) - _, _, err = th.SystemAdminClient.GetScheme(s1.Id) + _, _, err = th.SystemAdminClient.GetScheme(context.Background(), s1.Id) require.NoError(t, err) - _, r7, err := th.Client.GetScheme(s1.Id) + _, r7, err := th.Client.GetScheme(context.Background(), s1.Id) require.Error(t, err) CheckForbiddenStatus(t, r7) th.App.SetPhase2PermissionsMigrationStatus(false) - _, r8, _ := th.SystemAdminClient.GetScheme(s1.Id) + _, r8, _ := th.SystemAdminClient.GetScheme(context.Background(), s1.Id) CheckNotImplementedStatus(t, r8) } @@ -275,45 +275,45 @@ func TestGetSchemes(t *testing.T) { th.App.SetPhase2PermissionsMigrationStatus(true) - _, _, err := th.SystemAdminClient.CreateScheme(scheme1) + _, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) - _, _, err = th.SystemAdminClient.CreateScheme(scheme2) + _, _, err = th.SystemAdminClient.CreateScheme(context.Background(), scheme2) require.NoError(t, err) - l3, _, err := th.SystemAdminClient.GetSchemes("", 0, 100) + l3, _, err := th.SystemAdminClient.GetSchemes(context.Background(), "", 0, 100) require.NoError(t, err) assert.NotZero(t, len(l3)) - l4, _, err := th.SystemAdminClient.GetSchemes("team", 0, 100) + l4, _, err := th.SystemAdminClient.GetSchemes(context.Background(), "team", 0, 100) require.NoError(t, err) for _, s := range l4 { assert.Equal(t, "team", s.Scope) } - l5, _, err := th.SystemAdminClient.GetSchemes("channel", 0, 100) + l5, _, err := th.SystemAdminClient.GetSchemes(context.Background(), "channel", 0, 100) require.NoError(t, err) for _, s := range l5 { assert.Equal(t, "channel", s.Scope) } - _, r6, _ := th.SystemAdminClient.GetSchemes("asdf", 0, 100) + _, r6, _ := th.SystemAdminClient.GetSchemes(context.Background(), "asdf", 0, 100) CheckBadRequestStatus(t, r6) - th.Client.Logout() - _, r7, _ := th.Client.GetSchemes("", 0, 100) + th.Client.Logout(context.Background()) + _, r7, _ := th.Client.GetSchemes(context.Background(), "", 0, 100) CheckUnauthorizedStatus(t, r7) - th.Client.Login(th.BasicUser.Username, th.BasicUser.Password) - _, r8, err := th.Client.GetSchemes("", 0, 100) + th.Client.Login(context.Background(), th.BasicUser.Username, th.BasicUser.Password) + _, r8, err := th.Client.GetSchemes(context.Background(), "", 0, 100) require.Error(t, err) CheckForbiddenStatus(t, r8) th.App.SetPhase2PermissionsMigrationStatus(false) - _, r9, _ := th.SystemAdminClient.GetSchemes("", 0, 100) + _, r9, _ := th.SystemAdminClient.GetSchemes(context.Background(), "", 0, 100) CheckNotImplementedStatus(t, r9) } @@ -331,7 +331,7 @@ func TestGetTeamsForScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeTeam, } - scheme1, _, err := th.SystemAdminClient.CreateScheme(scheme1) + scheme1, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) team1 := &model.Team{ @@ -343,7 +343,7 @@ func TestGetTeamsForScheme(t *testing.T) { team1, err = th.App.Srv().Store().Team().Save(team1) require.NoError(t, err) - l2, _, err := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) + l2, _, err := th.SystemAdminClient.GetTeamsForScheme(context.Background(), scheme1.Id, 0, 100) require.NoError(t, err) assert.Zero(t, len(l2)) @@ -351,7 +351,7 @@ func TestGetTeamsForScheme(t *testing.T) { team1, err = th.App.Srv().Store().Team().Update(team1) assert.NoError(t, err) - l3, _, err := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) + l3, _, err := th.SystemAdminClient.GetTeamsForScheme(context.Background(), scheme1.Id, 0, 100) require.NoError(t, err) assert.Len(t, l3, 1) assert.Equal(t, team1.Id, l3[0].Id) @@ -365,30 +365,30 @@ func TestGetTeamsForScheme(t *testing.T) { team2, err = th.App.Srv().Store().Team().Save(team2) require.NoError(t, err) - l4, _, err := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) + l4, _, err := th.SystemAdminClient.GetTeamsForScheme(context.Background(), scheme1.Id, 0, 100) require.NoError(t, err) assert.Len(t, l4, 2) assert.Equal(t, team1.Id, l4[0].Id) assert.Equal(t, team2.Id, l4[1].Id) - l5, _, err := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 1, 1) + l5, _, err := th.SystemAdminClient.GetTeamsForScheme(context.Background(), scheme1.Id, 1, 1) require.NoError(t, err) assert.Len(t, l5, 1) assert.Equal(t, team2.Id, l5[0].Id) // Check various error cases. - _, ri1, _ := th.SystemAdminClient.GetTeamsForScheme(model.NewId(), 0, 100) + _, ri1, _ := th.SystemAdminClient.GetTeamsForScheme(context.Background(), model.NewId(), 0, 100) CheckNotFoundStatus(t, ri1) - _, ri2, _ := th.SystemAdminClient.GetTeamsForScheme("", 0, 100) + _, ri2, _ := th.SystemAdminClient.GetTeamsForScheme(context.Background(), "", 0, 100) CheckBadRequestStatus(t, ri2) - th.Client.Logout() - _, ri3, _ := th.Client.GetTeamsForScheme(model.NewId(), 0, 100) + th.Client.Logout(context.Background()) + _, ri3, _ := th.Client.GetTeamsForScheme(context.Background(), model.NewId(), 0, 100) CheckUnauthorizedStatus(t, ri3) - th.Client.Login(th.BasicUser.Username, th.BasicUser.Password) - _, ri4, err := th.Client.GetTeamsForScheme(model.NewId(), 0, 100) + th.Client.Login(context.Background(), th.BasicUser.Username, th.BasicUser.Password) + _, ri4, err := th.Client.GetTeamsForScheme(context.Background(), model.NewId(), 0, 100) require.Error(t, err) CheckForbiddenStatus(t, ri4) @@ -398,15 +398,15 @@ func TestGetTeamsForScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeChannel, } - scheme2, _, err = th.SystemAdminClient.CreateScheme(scheme2) + scheme2, _, err = th.SystemAdminClient.CreateScheme(context.Background(), scheme2) require.NoError(t, err) - _, ri5, _ := th.SystemAdminClient.GetTeamsForScheme(scheme2.Id, 0, 100) + _, ri5, _ := th.SystemAdminClient.GetTeamsForScheme(context.Background(), scheme2.Id, 0, 100) CheckBadRequestStatus(t, ri5) th.App.SetPhase2PermissionsMigrationStatus(false) - _, ri6, _ := th.SystemAdminClient.GetTeamsForScheme(scheme1.Id, 0, 100) + _, ri6, _ := th.SystemAdminClient.GetTeamsForScheme(context.Background(), scheme1.Id, 0, 100) CheckNotImplementedStatus(t, ri6) } @@ -424,7 +424,7 @@ func TestGetChannelsForScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeChannel, } - scheme1, _, err := th.SystemAdminClient.CreateScheme(scheme1) + scheme1, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) channel1 := &model.Channel{ @@ -437,7 +437,7 @@ func TestGetChannelsForScheme(t *testing.T) { channel1, errCh := th.App.Srv().Store().Channel().Save(channel1, 1000000) assert.NoError(t, errCh) - l2, _, err := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) + l2, _, err := th.SystemAdminClient.GetChannelsForScheme(context.Background(), scheme1.Id, 0, 100) require.NoError(t, err) assert.Zero(t, len(l2)) @@ -445,7 +445,7 @@ func TestGetChannelsForScheme(t *testing.T) { channel1, err = th.App.Srv().Store().Channel().Update(channel1) assert.NoError(t, err) - l3, _, err := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) + l3, _, err := th.SystemAdminClient.GetChannelsForScheme(context.Background(), scheme1.Id, 0, 100) require.NoError(t, err) assert.Len(t, l3, 1) assert.Equal(t, channel1.Id, l3[0].Id) @@ -460,30 +460,30 @@ func TestGetChannelsForScheme(t *testing.T) { channel2, err = th.App.Srv().Store().Channel().Save(channel2, 1000000) assert.NoError(t, err) - l4, _, err := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) + l4, _, err := th.SystemAdminClient.GetChannelsForScheme(context.Background(), scheme1.Id, 0, 100) require.NoError(t, err) assert.Len(t, l4, 2) assert.Equal(t, channel1.Id, l4[0].Id) assert.Equal(t, channel2.Id, l4[1].Id) - l5, _, err := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 1, 1) + l5, _, err := th.SystemAdminClient.GetChannelsForScheme(context.Background(), scheme1.Id, 1, 1) require.NoError(t, err) assert.Len(t, l5, 1) assert.Equal(t, channel2.Id, l5[0].Id) // Check various error cases. - _, ri1, _ := th.SystemAdminClient.GetChannelsForScheme(model.NewId(), 0, 100) + _, ri1, _ := th.SystemAdminClient.GetChannelsForScheme(context.Background(), model.NewId(), 0, 100) CheckNotFoundStatus(t, ri1) - _, ri2, _ := th.SystemAdminClient.GetChannelsForScheme("", 0, 100) + _, ri2, _ := th.SystemAdminClient.GetChannelsForScheme(context.Background(), "", 0, 100) CheckBadRequestStatus(t, ri2) - th.Client.Logout() - _, ri3, _ := th.Client.GetChannelsForScheme(model.NewId(), 0, 100) + th.Client.Logout(context.Background()) + _, ri3, _ := th.Client.GetChannelsForScheme(context.Background(), model.NewId(), 0, 100) CheckUnauthorizedStatus(t, ri3) - th.Client.Login(th.BasicUser.Username, th.BasicUser.Password) - _, ri4, err := th.Client.GetChannelsForScheme(model.NewId(), 0, 100) + th.Client.Login(context.Background(), th.BasicUser.Username, th.BasicUser.Password) + _, ri4, err := th.Client.GetChannelsForScheme(context.Background(), model.NewId(), 0, 100) require.Error(t, err) CheckForbiddenStatus(t, ri4) @@ -493,15 +493,15 @@ func TestGetChannelsForScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeTeam, } - scheme2, _, err = th.SystemAdminClient.CreateScheme(scheme2) + scheme2, _, err = th.SystemAdminClient.CreateScheme(context.Background(), scheme2) require.NoError(t, err) - _, ri5, _ := th.SystemAdminClient.GetChannelsForScheme(scheme2.Id, 0, 100) + _, ri5, _ := th.SystemAdminClient.GetChannelsForScheme(context.Background(), scheme2.Id, 0, 100) CheckBadRequestStatus(t, ri5) th.App.SetPhase2PermissionsMigrationStatus(false) - _, ri6, _ := th.SystemAdminClient.GetChannelsForScheme(scheme1.Id, 0, 100) + _, ri6, _ := th.SystemAdminClient.GetChannelsForScheme(context.Background(), scheme1.Id, 0, 100) CheckNotImplementedStatus(t, ri6) } @@ -521,7 +521,7 @@ func TestPatchScheme(t *testing.T) { Scope: model.SchemeScopeTeam, } - s1, _, err := th.SystemAdminClient.CreateScheme(scheme1) + s1, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) assert.Equal(t, s1.DisplayName, scheme1.DisplayName) @@ -538,7 +538,7 @@ func TestPatchScheme(t *testing.T) { assert.NotZero(t, len(s1.DefaultChannelUserRole)) assert.NotZero(t, len(s1.DefaultChannelGuestRole)) - s2, _, err := th.SystemAdminClient.GetScheme(s1.Id) + s2, _, err := th.SystemAdminClient.GetScheme(context.Background(), s1.Id) require.NoError(t, err) assert.Equal(t, s1, s2) @@ -553,14 +553,14 @@ func TestPatchScheme(t *testing.T) { *schemePatch.Name = model.NewId() *schemePatch.Description = model.NewId() - s3, _, err := th.SystemAdminClient.PatchScheme(s2.Id, schemePatch) + s3, _, err := th.SystemAdminClient.PatchScheme(context.Background(), s2.Id, schemePatch) require.NoError(t, err) assert.Equal(t, s3.Id, s2.Id) assert.Equal(t, s3.DisplayName, *schemePatch.DisplayName) assert.Equal(t, s3.Name, *schemePatch.Name) assert.Equal(t, s3.Description, *schemePatch.Description) - s4, _, err := th.SystemAdminClient.GetScheme(s3.Id) + s4, _, err := th.SystemAdminClient.GetScheme(context.Background(), s3.Id) require.NoError(t, err) assert.Equal(t, s3, s4) @@ -569,39 +569,39 @@ func TestPatchScheme(t *testing.T) { *schemePatch.DisplayName = model.NewId() schemePatch.Description = nil - s5, _, err := th.SystemAdminClient.PatchScheme(s4.Id, schemePatch) + s5, _, err := th.SystemAdminClient.PatchScheme(context.Background(), s4.Id, schemePatch) require.NoError(t, err) assert.Equal(t, s5.Id, s4.Id) assert.Equal(t, s5.DisplayName, *schemePatch.DisplayName) assert.Equal(t, s5.Name, *schemePatch.Name) assert.Equal(t, s5.Description, s4.Description) - s6, _, err := th.SystemAdminClient.GetScheme(s5.Id) + s6, _, err := th.SystemAdminClient.GetScheme(context.Background(), s5.Id) require.NoError(t, err) assert.Equal(t, s5, s6) // Test with invalid patch. *schemePatch.Name = strings.Repeat(model.NewId(), 20) - _, r7, _ := th.SystemAdminClient.PatchScheme(s6.Id, schemePatch) + _, r7, _ := th.SystemAdminClient.PatchScheme(context.Background(), s6.Id, schemePatch) CheckBadRequestStatus(t, r7) // Test with unknown ID. *schemePatch.Name = model.NewId() - _, r8, _ := th.SystemAdminClient.PatchScheme(model.NewId(), schemePatch) + _, r8, _ := th.SystemAdminClient.PatchScheme(context.Background(), model.NewId(), schemePatch) CheckNotFoundStatus(t, r8) // Test with invalid ID. - _, r9, _ := th.SystemAdminClient.PatchScheme("12345", schemePatch) + _, r9, _ := th.SystemAdminClient.PatchScheme(context.Background(), "12345", schemePatch) CheckBadRequestStatus(t, r9) // Test without required permissions. - _, r10, err := th.Client.PatchScheme(s6.Id, schemePatch) + _, r10, err := th.Client.PatchScheme(context.Background(), s6.Id, schemePatch) require.Error(t, err) CheckForbiddenStatus(t, r10) // Test without license. th.App.Srv().SetLicense(nil) - _, r11, _ := th.SystemAdminClient.PatchScheme(s6.Id, schemePatch) + _, r11, _ := th.SystemAdminClient.PatchScheme(context.Background(), s6.Id, schemePatch) CheckNotImplementedStatus(t, r11) // Patch scheme with a Professional SKU license but no explicit 'custom_permissions_schemes' license feature. @@ -619,7 +619,7 @@ func TestPatchScheme(t *testing.T) { ExpiresAt: model.GetMillis() + 100000, } th.App.Srv().SetLicense(lic) - _, _, err = th.SystemAdminClient.PatchScheme(s6.Id, schemePatch) + _, _, err = th.SystemAdminClient.PatchScheme(context.Background(), s6.Id, schemePatch) require.NoError(t, err) th.App.SetPhase2PermissionsMigrationStatus(false) @@ -627,7 +627,7 @@ func TestPatchScheme(t *testing.T) { th.LoginSystemAdmin() th.App.Srv().SetLicense(model.NewTestLicense("custom_permissions_schemes")) - _, r12, _ := th.SystemAdminClient.PatchScheme(s6.Id, schemePatch) + _, r12, _ := th.SystemAdminClient.PatchScheme(context.Background(), s6.Id, schemePatch) CheckNotImplementedStatus(t, r12) } @@ -648,21 +648,21 @@ func TestDeleteScheme(t *testing.T) { Scope: model.SchemeScopeTeam, } - s1, _, err := th.SystemAdminClient.CreateScheme(scheme1) + s1, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) // Retrieve the roles and check they are not deleted. - role1, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultTeamAdminRole) + role1, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamAdminRole) require.NoError(t, err) - role2, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultTeamUserRole) + role2, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamUserRole) require.NoError(t, err) - role3, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultChannelAdminRole) + role3, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelAdminRole) require.NoError(t, err) - role4, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultChannelUserRole) + role4, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelUserRole) require.NoError(t, err) - role5, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultTeamGuestRole) + role5, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamGuestRole) require.NoError(t, err) - role6, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultChannelGuestRole) + role6, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelGuestRole) require.NoError(t, err) assert.Zero(t, role1.DeleteAt) @@ -683,21 +683,21 @@ func TestDeleteScheme(t *testing.T) { require.NoError(t, err) // Delete the Scheme. - _, err = th.SystemAdminClient.DeleteScheme(s1.Id) + _, err = th.SystemAdminClient.DeleteScheme(context.Background(), s1.Id) require.NoError(t, err) // Check the roles were deleted. - role1, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultTeamAdminRole) + role1, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamAdminRole) require.NoError(t, err) - role2, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultTeamUserRole) + role2, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamUserRole) require.NoError(t, err) - role3, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelAdminRole) + role3, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelAdminRole) require.NoError(t, err) - role4, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelUserRole) + role4, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelUserRole) require.NoError(t, err) - role5, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultTeamGuestRole) + role5, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultTeamGuestRole) require.NoError(t, err) - role6, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelGuestRole) + role6, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelGuestRole) require.NoError(t, err) assert.NotZero(t, role1.DeleteAt) @@ -708,7 +708,7 @@ func TestDeleteScheme(t *testing.T) { assert.NotZero(t, role6.DeleteAt) // Check the team now uses the default scheme - c2, _, err := th.SystemAdminClient.GetTeam(team.Id, "") + c2, _, err := th.SystemAdminClient.GetTeam(context.Background(), team.Id, "") require.NoError(t, err) assert.Equal(t, "", *c2.SchemeId) }) @@ -726,15 +726,15 @@ func TestDeleteScheme(t *testing.T) { Scope: model.SchemeScopeChannel, } - s1, _, err := th.SystemAdminClient.CreateScheme(scheme1) + s1, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) // Retrieve the roles and check they are not deleted. - role3, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultChannelAdminRole) + role3, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelAdminRole) require.NoError(t, err) - role4, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultChannelUserRole) + role4, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelUserRole) require.NoError(t, err) - role6, _, err := th.SystemAdminClient.GetRoleByName(s1.DefaultChannelGuestRole) + role6, _, err := th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelGuestRole) require.NoError(t, err) assert.Zero(t, role3.DeleteAt) @@ -752,15 +752,15 @@ func TestDeleteScheme(t *testing.T) { assert.NoError(t, err) // Delete the Scheme. - _, err = th.SystemAdminClient.DeleteScheme(s1.Id) + _, err = th.SystemAdminClient.DeleteScheme(context.Background(), s1.Id) require.NoError(t, err) // Check the roles were deleted. - role3, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelAdminRole) + role3, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelAdminRole) require.NoError(t, err) - role4, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelUserRole) + role4, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelUserRole) require.NoError(t, err) - role6, _, err = th.SystemAdminClient.GetRoleByName(s1.DefaultChannelGuestRole) + role6, _, err = th.SystemAdminClient.GetRoleByName(context.Background(), s1.DefaultChannelGuestRole) require.NoError(t, err) assert.NotZero(t, role3.DeleteAt) @@ -768,7 +768,7 @@ func TestDeleteScheme(t *testing.T) { assert.NotZero(t, role6.DeleteAt) // Check the channel now uses the default scheme - c2, _, err := th.SystemAdminClient.GetChannelByName(channel.Name, channel.TeamId, "") + c2, _, err := th.SystemAdminClient.GetChannelByName(context.Background(), channel.Name, channel.TeamId, "") require.NoError(t, err) assert.Equal(t, "", *c2.SchemeId) }) @@ -785,7 +785,7 @@ func TestDeleteScheme(t *testing.T) { Scope: model.SchemeScopeChannel, } - s1, _, err := th.SystemAdminClient.CreateScheme(scheme1) + s1, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme1) require.NoError(t, err) scheme2 := &model.Scheme{ @@ -794,27 +794,27 @@ func TestDeleteScheme(t *testing.T) { Description: model.NewId(), Scope: model.SchemeScopeChannel, } - s2, _, err := th.SystemAdminClient.CreateScheme(scheme2) + s2, _, err := th.SystemAdminClient.CreateScheme(context.Background(), scheme2) require.NoError(t, err) // Test with unknown ID. - r2, err := th.SystemAdminClient.DeleteScheme(model.NewId()) + r2, err := th.SystemAdminClient.DeleteScheme(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, r2) // Test with invalid ID. - r3, err := th.SystemAdminClient.DeleteScheme("12345") + r3, err := th.SystemAdminClient.DeleteScheme(context.Background(), "12345") require.Error(t, err) CheckBadRequestStatus(t, r3) // Test without required permissions. - r4, err := th.Client.DeleteScheme(s1.Id) + r4, err := th.Client.DeleteScheme(context.Background(), s1.Id) require.Error(t, err) CheckForbiddenStatus(t, r4) // Test without license. th.App.Srv().SetLicense(nil) - r5, err := th.SystemAdminClient.DeleteScheme(s1.Id) + r5, err := th.SystemAdminClient.DeleteScheme(context.Background(), s1.Id) require.Error(t, err) CheckNotImplementedStatus(t, r5) @@ -833,14 +833,14 @@ func TestDeleteScheme(t *testing.T) { ExpiresAt: model.GetMillis() + 100000, } th.App.Srv().SetLicense(lic) - _, err = th.SystemAdminClient.DeleteScheme(s2.Id) + _, err = th.SystemAdminClient.DeleteScheme(context.Background(), s2.Id) require.NoError(t, err) th.App.SetPhase2PermissionsMigrationStatus(false) th.App.Srv().SetLicense(model.NewTestLicense("custom_permissions_schemes")) - r6, err := th.SystemAdminClient.DeleteScheme(s1.Id) + r6, err := th.SystemAdminClient.DeleteScheme(context.Background(), s1.Id) require.Error(t, err) CheckNotImplementedStatus(t, r6) }) @@ -867,14 +867,14 @@ func TestUpdateTeamSchemeWithTeamMembers(t *testing.T) { th.LoginBasic() - _, _, err := th.Client.CreateChannel(&model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypeOpen, TeamId: team.Id}) + _, _, err := th.Client.CreateChannel(context.Background(), &model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypeOpen, TeamId: team.Id}) require.NoError(t, err) team.SchemeId = &teamScheme.Id team, appErr = th.App.UpdateTeamScheme(team) require.Nil(t, appErr) - _, _, err = th.Client.CreateChannel(&model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypeOpen, TeamId: team.Id}) + _, _, err = th.Client.CreateChannel(context.Background(), &model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.ChannelTypeOpen, TeamId: team.Id}) require.Error(t, err) }) } diff --git a/server/channels/api4/shared_channel_test.go b/server/channels/api4/shared_channel_test.go index d7ef5e930a..6c14b383a1 100644 --- a/server/channels/api4/shared_channel_test.go +++ b/server/channels/api4/shared_channel_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "fmt" "math/rand" "sort" @@ -53,7 +54,7 @@ func TestGetAllSharedChannels(t *testing.T) { t.Run("get shared channels paginated", func(t *testing.T) { channelIds := make([]string, 0, 21) for i := 0; i < pages; i++ { - channels, _, err := th.Client.GetAllSharedChannels(th.BasicTeam.Id, i, pageSize) + channels, _, err := th.Client.GetAllSharedChannels(context.Background(), th.BasicTeam.Id, i, pageSize) require.NoError(t, err) channelIds = append(channelIds, getIds(channels)...) } @@ -64,7 +65,7 @@ func TestGetAllSharedChannels(t *testing.T) { }) t.Run("get shared channels for invalid team", func(t *testing.T) { - _, _, err := th.Client.GetAllSharedChannels(model.NewId(), 0, 100) + _, _, err := th.Client.GetAllSharedChannels(context.Background(), model.NewId(), 0, 100) require.Error(t, err) }) @@ -74,10 +75,10 @@ func TestGetAllSharedChannels(t *testing.T) { Name: GenerateTestTeamName(), Type: model.TeamOpen, } - team, _, err := th.SystemAdminClient.CreateTeam(team) + team, _, err := th.SystemAdminClient.CreateTeam(context.Background(), team) require.NoError(t, err) - _, _, err = th.Client.GetAllSharedChannels(team.Id, 0, 100) + _, _, err = th.Client.GetAllSharedChannels(context.Background(), team.Id, 0, 100) require.Error(t, err) }) } @@ -140,13 +141,13 @@ func TestGetRemoteClusterById(t *testing.T) { require.NoError(t, err) t.Run("valid remote, user is member", func(t *testing.T) { - rcInfo, _, err := th.Client.GetRemoteClusterInfo(rc.RemoteId) + rcInfo, _, err := th.Client.GetRemoteClusterInfo(context.Background(), rc.RemoteId) require.NoError(t, err) assert.Equal(t, rc.Name, rcInfo.Name) }) t.Run("invalid remote", func(t *testing.T) { - _, resp, err := th.Client.GetRemoteClusterInfo(model.NewId()) + _, resp, err := th.Client.GetRemoteClusterInfo(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -158,7 +159,7 @@ func TestCreateDirectChannelWithRemoteUser(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() client := th.Client - defer client.Logout() + defer client.Logout(context.Background()) localUser := th.BasicUser remoteUser := th.CreateUser() @@ -166,7 +167,7 @@ func TestCreateDirectChannelWithRemoteUser(t *testing.T) { remoteUser, appErr := th.App.UpdateUser(th.Context, remoteUser, false) require.Nil(t, appErr) - dm, _, err := client.CreateDirectChannel(localUser.Id, remoteUser.Id) + dm, _, err := client.CreateDirectChannel(context.Background(), localUser.Id, remoteUser.Id) require.NoError(t, err) channelName := model.GetDMNameFromIds(localUser.Id, remoteUser.Id) @@ -178,7 +179,7 @@ func TestCreateDirectChannelWithRemoteUser(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() client := th.Client - defer client.Logout() + defer client.Logout(context.Background()) mockService := app.NewMockSharedChannelService(nil, app.MockOptionSharedChannelServiceWithActive(true)) th.App.Srv().SetSharedChannelSyncService(mockService) @@ -197,7 +198,7 @@ func TestCreateDirectChannelWithRemoteUser(t *testing.T) { remoteUser, appErr = th.App.UpdateUser(th.Context, remoteUser, false) require.Nil(t, appErr) - dm, _, err := client.CreateDirectChannel(localUser.Id, remoteUser.Id) + dm, _, err := client.CreateDirectChannel(context.Background(), localUser.Id, remoteUser.Id) require.NoError(t, err) channelName := model.GetDMNameFromIds(localUser.Id, remoteUser.Id) @@ -211,7 +212,7 @@ func TestCreateDirectChannelWithRemoteUser(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() client := th.Client - defer client.Logout() + defer client.Logout(context.Background()) mockService := app.NewMockSharedChannelService(nil, app.MockOptionSharedChannelServiceWithActive(true)) th.App.Srv().SetSharedChannelSyncService(mockService) @@ -230,7 +231,7 @@ func TestCreateDirectChannelWithRemoteUser(t *testing.T) { remoteUser, appErr = th.App.UpdateUser(th.Context, remoteUser, false) require.Nil(t, appErr) - dm, _, err := client.CreateDirectChannel(remoteUser.Id, localUser.Id) + dm, _, err := client.CreateDirectChannel(context.Background(), remoteUser.Id, localUser.Id) require.NoError(t, err) channelName := model.GetDMNameFromIds(localUser.Id, remoteUser.Id) diff --git a/server/channels/api4/status_test.go b/server/channels/api4/status_test.go index 58bc501603..f31b9c3567 100644 --- a/server/channels/api4/status_test.go +++ b/server/channels/api4/status_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "time" @@ -19,35 +20,35 @@ func TestGetUserStatus(t *testing.T) { client := th.Client t.Run("offline status", func(t *testing.T) { - userStatus, _, err := client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "offline", userStatus.Status) }) t.Run("online status", func(t *testing.T) { th.App.SetStatusOnline(th.BasicUser.Id, true) - userStatus, _, err := client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "online", userStatus.Status) }) t.Run("away status", func(t *testing.T) { th.App.SetStatusAwayIfNeeded(th.BasicUser.Id, true) - userStatus, _, err := client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "away", userStatus.Status) }) t.Run("dnd status", func(t *testing.T) { th.App.SetStatusDoNotDisturb(th.BasicUser.Id) - userStatus, _, err := client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "dnd", userStatus.Status) }) t.Run("dnd status timed", func(t *testing.T) { th.App.SetStatusDoNotDisturbTimed(th.BasicUser.Id, time.Now().Add(10*time.Minute).Unix()) - userStatus, _, err := client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "dnd", userStatus.Status) }) @@ -56,43 +57,43 @@ func TestGetUserStatus(t *testing.T) { task := model.CreateRecurringTaskFromNextIntervalTime("Unset DND Statuses From Test", th.App.UpdateDNDStatusOfUsers, 1*time.Second) defer task.Cancel() th.App.SetStatusOnline(th.BasicUser.Id, true) - userStatus, _, err := client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "online", userStatus.Status) th.App.SetStatusDoNotDisturbTimed(th.BasicUser.Id, time.Now().Add(2*time.Second).Unix()) - userStatus, _, err = client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err = client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "dnd", userStatus.Status) time.Sleep(3 * time.Second) - userStatus, _, err = client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err = client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "online", userStatus.Status) }) t.Run("back to offline status", func(t *testing.T) { th.App.SetStatusOffline(th.BasicUser.Id, true) - userStatus, _, err := client.GetUserStatus(th.BasicUser.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, "offline", userStatus.Status) }) t.Run("get other user status", func(t *testing.T) { //Get user2 status logged as user1 - userStatus, _, err := client.GetUserStatus(th.BasicUser2.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser2.Id, "") require.NoError(t, err) assert.Equal(t, "offline", userStatus.Status) }) t.Run("get status from logged out user", func(t *testing.T) { - client.Logout() - _, resp, err := client.GetUserStatus(th.BasicUser2.Id, "") + client.Logout(context.Background()) + _, resp, err := client.GetUserStatus(context.Background(), th.BasicUser2.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("get status from other user", func(t *testing.T) { th.LoginBasic2() - userStatus, _, err := client.GetUserStatus(th.BasicUser2.Id, "") + userStatus, _, err := client.GetUserStatus(context.Background(), th.BasicUser2.Id, "") require.NoError(t, err) assert.Equal(t, "offline", userStatus.Status) }) @@ -106,25 +107,25 @@ func TestGetUsersStatusesByIds(t *testing.T) { usersIds := []string{th.BasicUser.Id, th.BasicUser2.Id} t.Run("empty userIds list", func(t *testing.T) { - _, resp, err := client.GetUsersStatusesByIds([]string{}) + _, resp, err := client.GetUsersStatusesByIds(context.Background(), []string{}) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("completely invalid userIds list", func(t *testing.T) { - _, resp, err := client.GetUsersStatusesByIds([]string{"invalid_user_id", "invalid_user_id"}) + _, resp, err := client.GetUsersStatusesByIds(context.Background(), []string{"invalid_user_id", "invalid_user_id"}) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("partly invalid userIds list", func(t *testing.T) { - _, resp, err := client.GetUsersStatusesByIds([]string{th.BasicUser.Id, "invalid_user_id"}) + _, resp, err := client.GetUsersStatusesByIds(context.Background(), []string{th.BasicUser.Id, "invalid_user_id"}) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("offline status", func(t *testing.T) { - usersStatuses, _, err := client.GetUsersStatusesByIds(usersIds) + usersStatuses, _, err := client.GetUsersStatusesByIds(context.Background(), usersIds) require.NoError(t, err) for _, userStatus := range usersStatuses { assert.Equal(t, "offline", userStatus.Status) @@ -134,7 +135,7 @@ func TestGetUsersStatusesByIds(t *testing.T) { t.Run("online status", func(t *testing.T) { th.App.SetStatusOnline(th.BasicUser.Id, true) th.App.SetStatusOnline(th.BasicUser2.Id, true) - usersStatuses, _, err := client.GetUsersStatusesByIds(usersIds) + usersStatuses, _, err := client.GetUsersStatusesByIds(context.Background(), usersIds) require.NoError(t, err) for _, userStatus := range usersStatuses { assert.Equal(t, "online", userStatus.Status) @@ -144,7 +145,7 @@ func TestGetUsersStatusesByIds(t *testing.T) { t.Run("away status", func(t *testing.T) { th.App.SetStatusAwayIfNeeded(th.BasicUser.Id, true) th.App.SetStatusAwayIfNeeded(th.BasicUser2.Id, true) - usersStatuses, _, err := client.GetUsersStatusesByIds(usersIds) + usersStatuses, _, err := client.GetUsersStatusesByIds(context.Background(), usersIds) require.NoError(t, err) for _, userStatus := range usersStatuses { assert.Equal(t, "away", userStatus.Status) @@ -154,7 +155,7 @@ func TestGetUsersStatusesByIds(t *testing.T) { t.Run("dnd status", func(t *testing.T) { th.App.SetStatusDoNotDisturb(th.BasicUser.Id) th.App.SetStatusDoNotDisturb(th.BasicUser2.Id) - usersStatuses, _, err := client.GetUsersStatusesByIds(usersIds) + usersStatuses, _, err := client.GetUsersStatusesByIds(context.Background(), usersIds) require.NoError(t, err) for _, userStatus := range usersStatuses { assert.Equal(t, "dnd", userStatus.Status) @@ -164,7 +165,7 @@ func TestGetUsersStatusesByIds(t *testing.T) { t.Run("dnd status", func(t *testing.T) { th.App.SetStatusDoNotDisturbTimed(th.BasicUser.Id, time.Now().Add(10*time.Minute).Unix()) th.App.SetStatusDoNotDisturbTimed(th.BasicUser2.Id, time.Now().Add(15*time.Minute).Unix()) - usersStatuses, _, err := client.GetUsersStatusesByIds(usersIds) + usersStatuses, _, err := client.GetUsersStatusesByIds(context.Background(), usersIds) require.NoError(t, err) for _, userStatus := range usersStatuses { assert.Equal(t, "dnd", userStatus.Status) @@ -172,9 +173,9 @@ func TestGetUsersStatusesByIds(t *testing.T) { }) t.Run("get statuses from logged out user", func(t *testing.T) { - client.Logout() + client.Logout(context.Background()) - _, resp, err := client.GetUsersStatusesByIds(usersIds) + _, resp, err := client.GetUsersStatusesByIds(context.Background(), usersIds) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -187,57 +188,57 @@ func TestUpdateUserStatus(t *testing.T) { t.Run("set online status", func(t *testing.T) { toUpdateUserStatus := &model.Status{Status: "online", UserId: th.BasicUser.Id} - updateUserStatus, _, err := client.UpdateUserStatus(th.BasicUser.Id, toUpdateUserStatus) + updateUserStatus, _, err := client.UpdateUserStatus(context.Background(), th.BasicUser.Id, toUpdateUserStatus) require.NoError(t, err) assert.Equal(t, "online", updateUserStatus.Status) }) t.Run("set away status", func(t *testing.T) { toUpdateUserStatus := &model.Status{Status: "away", UserId: th.BasicUser.Id} - updateUserStatus, _, err := client.UpdateUserStatus(th.BasicUser.Id, toUpdateUserStatus) + updateUserStatus, _, err := client.UpdateUserStatus(context.Background(), th.BasicUser.Id, toUpdateUserStatus) require.NoError(t, err) assert.Equal(t, "away", updateUserStatus.Status) }) t.Run("set dnd status timed", func(t *testing.T) { toUpdateUserStatus := &model.Status{Status: "dnd", UserId: th.BasicUser.Id, DNDEndTime: time.Now().Add(10 * time.Minute).Unix()} - updateUserStatus, _, err := client.UpdateUserStatus(th.BasicUser.Id, toUpdateUserStatus) + updateUserStatus, _, err := client.UpdateUserStatus(context.Background(), th.BasicUser.Id, toUpdateUserStatus) require.NoError(t, err) assert.Equal(t, "dnd", updateUserStatus.Status) }) t.Run("set offline status", func(t *testing.T) { toUpdateUserStatus := &model.Status{Status: "offline", UserId: th.BasicUser.Id} - updateUserStatus, _, err := client.UpdateUserStatus(th.BasicUser.Id, toUpdateUserStatus) + updateUserStatus, _, err := client.UpdateUserStatus(context.Background(), th.BasicUser.Id, toUpdateUserStatus) require.NoError(t, err) assert.Equal(t, "offline", updateUserStatus.Status) }) t.Run("set status for other user as regular user", func(t *testing.T) { toUpdateUserStatus := &model.Status{Status: "online", UserId: th.BasicUser2.Id} - _, resp, err := client.UpdateUserStatus(th.BasicUser2.Id, toUpdateUserStatus) + _, resp, err := client.UpdateUserStatus(context.Background(), th.BasicUser2.Id, toUpdateUserStatus) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("set status for other user as admin user", func(t *testing.T) { toUpdateUserStatus := &model.Status{Status: "online", UserId: th.BasicUser2.Id} - updateUserStatus, _, _ := th.SystemAdminClient.UpdateUserStatus(th.BasicUser2.Id, toUpdateUserStatus) + updateUserStatus, _, _ := th.SystemAdminClient.UpdateUserStatus(context.Background(), th.BasicUser2.Id, toUpdateUserStatus) assert.Equal(t, "online", updateUserStatus.Status) }) t.Run("not matching status user id and the user id passed in the function", func(t *testing.T) { toUpdateUserStatus := &model.Status{Status: "online", UserId: th.BasicUser2.Id} - _, resp, err := client.UpdateUserStatus(th.BasicUser.Id, toUpdateUserStatus) + _, resp, err := client.UpdateUserStatus(context.Background(), th.BasicUser.Id, toUpdateUserStatus) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("get statuses from logged out user", func(t *testing.T) { toUpdateUserStatus := &model.Status{Status: "online", UserId: th.BasicUser2.Id} - client.Logout() + client.Logout(context.Background()) - _, resp, err := client.UpdateUserStatus(th.BasicUser2.Id, toUpdateUserStatus) + _, resp, err := client.UpdateUserStatus(context.Background(), th.BasicUser2.Id, toUpdateUserStatus) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) diff --git a/server/channels/api4/system_test.go b/server/channels/api4/system_test.go index 4d30e43b77..6e1ac34e6a 100644 --- a/server/channels/api4/system_test.go +++ b/server/channels/api4/system_test.go @@ -5,6 +5,7 @@ package api4 import ( "bytes" + "context" "encoding/base64" "encoding/json" "fmt" @@ -32,7 +33,7 @@ func TestGetPing(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { t.Run("healthy", func(t *testing.T) { - status, _, err := client.GetPing() + status, _, err := client.GetPing(context.Background()) require.NoError(t, err) assert.Equal(t, model.StatusOk, status) }) @@ -44,7 +45,7 @@ func TestGetPing(t *testing.T) { }() th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.GoroutineHealthThreshold = 10 }) - status, resp, err := client.GetPing() + status, resp, err := client.GetPing(context.Background()) require.Error(t, err) CheckInternalErrorStatus(t, resp) assert.Equal(t, model.StatusUnhealthy, status) @@ -53,7 +54,7 @@ func TestGetPing(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { t.Run("healthy", func(t *testing.T) { - status, _, err := client.GetPingWithServerStatus() + status, _, err := client.GetPingWithServerStatus(context.Background()) require.NoError(t, err) assert.Equal(t, model.StatusOk, status) }) @@ -61,7 +62,7 @@ func TestGetPing(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { th.App.ReloadConfig() - resp, err := client.DoAPIGet("/system/ping", "") + resp, err := client.DoAPIGet(context.Background(), "/system/ping", "") require.NoError(t, err) require.Equal(t, http.StatusOK, resp.StatusCode) respBytes, err := io.ReadAll(resp.Body) @@ -74,7 +75,7 @@ func TestGetPing(t *testing.T) { defer os.Unsetenv("MM_FEATUREFLAGS_TESTFEATURE") th.App.ReloadConfig() - resp, err = client.DoAPIGet("/system/ping", "") + resp, err = client.DoAPIGet(context.Background(), "/system/ping", "") require.NoError(t, err) require.Equal(t, http.StatusOK, resp.StatusCode) respBytes, err = io.ReadAll(resp.Body) @@ -85,7 +86,7 @@ func TestGetPing(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { th.App.ReloadConfig() - resp, err := client.DoAPIGet("/system/ping?device_id=platform:id", "") + resp, err := client.DoAPIGet(context.Background(), "/system/ping?device_id=platform:id", "") require.NoError(t, err) require.Equal(t, http.StatusOK, resp.StatusCode) var respMap map[string]string @@ -100,27 +101,27 @@ func TestGetAudits(t *testing.T) { defer th.TearDown() client := th.Client - audits, _, err := th.SystemAdminClient.GetAudits(0, 100, "") + audits, _, err := th.SystemAdminClient.GetAudits(context.Background(), 0, 100, "") require.NoError(t, err) require.NotEmpty(t, audits, "should not be empty") - audits, _, err = th.SystemAdminClient.GetAudits(0, 1, "") + audits, _, err = th.SystemAdminClient.GetAudits(context.Background(), 0, 1, "") require.NoError(t, err) require.Len(t, audits, 1, "should only be 1") - audits, _, err = th.SystemAdminClient.GetAudits(1, 1, "") + audits, _, err = th.SystemAdminClient.GetAudits(context.Background(), 1, 1, "") require.NoError(t, err) require.Len(t, audits, 1, "should only be 1") - _, _, err = th.SystemAdminClient.GetAudits(-1, -1, "") + _, _, err = th.SystemAdminClient.GetAudits(context.Background(), -1, -1, "") require.NoError(t, err) - _, resp, err := client.GetAudits(0, 100, "") + _, resp, err := client.GetAudits(context.Background(), 0, 100, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetAudits(0, 100, "") + client.Logout(context.Background()) + _, resp, err = client.GetAudits(context.Background(), 0, 100, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -162,13 +163,13 @@ func TestEmailTest(t *testing.T) { } t.Run("as system user", func(t *testing.T) { - resp, err := client.TestEmail(&config) + resp, err := client.TestEmail(context.Background(), &config) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("as system admin", func(t *testing.T) { - resp, err := th.SystemAdminClient.TestEmail(&config) + resp, err := th.SystemAdminClient.TestEmail(context.Background(), &config) CheckErrorID(t, err, "api.admin.test_email.missing_server") CheckBadRequestStatus(t, resp) @@ -184,7 +185,7 @@ func TestEmailTest(t *testing.T) { *config.EmailSettings.SMTPServer = inbucket_host *config.EmailSettings.SMTPPort = inbucket_port - resp, err = th.SystemAdminClient.TestEmail(&config) + resp, err = th.SystemAdminClient.TestEmail(context.Background(), &config) require.NoError(t, err) CheckOKStatus(t, resp) }) @@ -192,14 +193,14 @@ func TestEmailTest(t *testing.T) { t.Run("as restricted system admin", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := th.SystemAdminClient.TestEmail(&config) + resp, err := th.SystemAdminClient.TestEmail(context.Background(), &config) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("empty email settings", func(t *testing.T) { config.EmailSettings = model.EmailSettings{} - resp, err := th.SystemAdminClient.TestEmail(&config) + resp, err := th.SystemAdminClient.TestEmail(context.Background(), &config) require.Error(t, err) CheckErrorID(t, err, "api.file.test_connection_email_settings_nil.app_error") CheckBadRequestStatus(t, resp) @@ -215,7 +216,7 @@ func TestGenerateSupportPacket(t *testing.T) { l := model.NewTestLicense() th.App.Srv().SetLicense(l) - file, _, err := th.SystemAdminClient.GenerateSupportPacket() + file, _, err := th.SystemAdminClient.GenerateSupportPacket(context.Background()) require.NoError(t, err) require.NotZero(t, len(file)) }) @@ -229,28 +230,28 @@ func TestGenerateSupportPacket(t *testing.T) { }) }() - _, resp, err := th.SystemAdminClient.GenerateSupportPacket() + _, resp, err := th.SystemAdminClient.GenerateSupportPacket(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("As a system role, not system admin", func(t *testing.T) { - _, resp, err := th.SystemManagerClient.GenerateSupportPacket() + _, resp, err := th.SystemManagerClient.GenerateSupportPacket(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("As a Regular User", func(t *testing.T) { - _, resp, err := th.Client.GenerateSupportPacket() + _, resp, err := th.Client.GenerateSupportPacket(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("Server with no License", func(t *testing.T) { - _, err := th.SystemAdminClient.RemoveLicenseFile() + _, err := th.SystemAdminClient.RemoveLicenseFile(context.Background()) require.NoError(t, err) - _, resp, err := th.SystemAdminClient.GenerateSupportPacket() + _, resp, err := th.SystemAdminClient.GenerateSupportPacket(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -274,21 +275,21 @@ func TestSiteURLTest(t *testing.T) { invalidSiteURL := ts.URL + "/invalid" t.Run("as system admin", func(t *testing.T) { - resp, err := th.SystemAdminClient.TestSiteURL("") + resp, err := th.SystemAdminClient.TestSiteURL(context.Background(), "") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.SystemAdminClient.TestSiteURL(invalidSiteURL) + resp, err = th.SystemAdminClient.TestSiteURL(context.Background(), invalidSiteURL) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.SystemAdminClient.TestSiteURL(validSiteURL) + resp, err = th.SystemAdminClient.TestSiteURL(context.Background(), validSiteURL) require.NoError(t, err) CheckOKStatus(t, resp) }) t.Run("as system user", func(t *testing.T) { - resp, err := client.TestSiteURL(validSiteURL) + resp, err := client.TestSiteURL(context.Background(), validSiteURL) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -296,7 +297,7 @@ func TestSiteURLTest(t *testing.T) { t.Run("as restricted system admin", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := client.TestSiteURL(validSiteURL) + resp, err := client.TestSiteURL(context.Background(), validSiteURL) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -308,20 +309,20 @@ func TestDatabaseRecycle(t *testing.T) { client := th.Client t.Run("as system user", func(t *testing.T) { - resp, err := client.DatabaseRecycle() + resp, err := client.DatabaseRecycle(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("as system admin", func(t *testing.T) { - _, err := th.SystemAdminClient.DatabaseRecycle() + _, err := th.SystemAdminClient.DatabaseRecycle(context.Background()) require.NoError(t, err) }) t.Run("as restricted system admin", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := th.SystemAdminClient.DatabaseRecycle() + resp, err := th.SystemAdminClient.DatabaseRecycle(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -333,20 +334,20 @@ func TestInvalidateCaches(t *testing.T) { client := th.Client t.Run("as system user", func(t *testing.T) { - resp, err := client.InvalidateCaches() + resp, err := client.InvalidateCaches(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("as system admin", func(t *testing.T) { - _, err := th.SystemAdminClient.InvalidateCaches() + _, err := th.SystemAdminClient.InvalidateCaches(context.Background()) require.NoError(t, err) }) t.Run("as restricted system admin", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - resp, err := th.SystemAdminClient.InvalidateCaches() + resp, err := th.SystemAdminClient.InvalidateCaches(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -364,7 +365,7 @@ func TestGetLogs(t *testing.T) { require.NoError(t, err, "failed to flush log") th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - logs, _, err2 := c.GetLogs(0, 10) + logs, _, err2 := c.GetLogs(context.Background(), 0, 10) require.NoError(t, err2) require.Len(t, logs, 10) @@ -372,28 +373,28 @@ func TestGetLogs(t *testing.T) { assert.Containsf(t, logs[i-10], fmt.Sprintf(`"msg":"%d"`, i), "Log line doesn't contain correct message") } - logs, _, err = c.GetLogs(1, 10) + logs, _, err = c.GetLogs(context.Background(), 1, 10) require.NoError(t, err) require.Len(t, logs, 10) - logs, _, err = c.GetLogs(-1, -1) + logs, _, err = c.GetLogs(context.Background(), -1, -1) require.NoError(t, err) require.NotEmpty(t, logs, "should not be empty") }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) - _, resp, err2 := th.Client.GetLogs(0, 10) + _, resp, err2 := th.Client.GetLogs(context.Background(), 0, 10) require.Error(t, err2) CheckForbiddenStatus(t, resp) }) - _, resp, err := th.Client.GetLogs(0, 10) + _, resp, err := th.Client.GetLogs(context.Background(), 0, 10) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - _, resp, err = th.Client.GetLogs(0, 10) + th.Client.Logout(context.Background()) + _, resp, err = th.Client.GetLogs(context.Background(), 0, 10) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -413,28 +414,28 @@ func TestPostLog(t *testing.T) { message["level"] = "ERROR" message["message"] = "this is a test" - _, _, err := client.PostLog(message) + _, _, err := client.PostLog(context.Background(), message) require.NoError(t, err) *th.App.Config().ServiceSettings.EnableDeveloper = false - _, _, err = client.PostLog(message) + _, _, err = client.PostLog(context.Background(), message) require.NoError(t, err) *th.App.Config().ServiceSettings.EnableDeveloper = true - client.Logout() + client.Logout(context.Background()) - _, _, err = client.PostLog(message) + _, _, err = client.PostLog(context.Background(), message) require.NoError(t, err) *th.App.Config().ServiceSettings.EnableDeveloper = false - _, resp, err := client.PostLog(message) + _, resp, err := client.PostLog(context.Background(), message) require.Error(t, err) CheckForbiddenStatus(t, resp) - logMessage, _, err := th.SystemAdminClient.PostLog(message) + logMessage, _, err := th.SystemAdminClient.PostLog(context.Background(), message) require.NoError(t, err) require.NotEmpty(t, logMessage, "should return the log message") @@ -445,11 +446,11 @@ func TestGetAnalyticsOld(t *testing.T) { defer th.TearDown() client := th.Client - rows, resp, err := client.GetAnalyticsOld("", "") + rows, resp, err := client.GetAnalyticsOld(context.Background(), "", "") require.Error(t, err) CheckForbiddenStatus(t, resp) require.Nil(t, rows, "should be nil") - rows, _, err = th.SystemAdminClient.GetAnalyticsOld("", "") + rows, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "", "") require.NoError(t, err) found := false @@ -466,16 +467,16 @@ func TestGetAnalyticsOld(t *testing.T) { assert.True(t, found, "should return unique user count") assert.True(t, found2, "should return inactive user count") - _, _, err = th.SystemAdminClient.GetAnalyticsOld("post_counts_day", "") + _, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "post_counts_day", "") require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetAnalyticsOld("user_counts_with_posts_day", "") + _, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "user_counts_with_posts_day", "") require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetAnalyticsOld("extra_counts", "") + _, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "extra_counts", "") require.NoError(t, err) - rows, _, err = th.SystemAdminClient.GetAnalyticsOld("", th.BasicTeam.Id) + rows, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "", th.BasicTeam.Id) require.NoError(t, err) for _, row := range rows { @@ -484,7 +485,7 @@ func TestGetAnalyticsOld(t *testing.T) { } } - rows2, _, err := th.SystemAdminClient.GetAnalyticsOld("standard", "") + rows2, _, err := th.SystemAdminClient.GetAnalyticsOld(context.Background(), "standard", "") require.NoError(t, err) assert.Equal(t, "total_websocket_connections", rows2[5].Name) assert.Equal(t, float64(0), rows2[5].Value) @@ -492,20 +493,20 @@ func TestGetAnalyticsOld(t *testing.T) { WebSocketClient, err := th.CreateWebSocketClient() require.NoError(t, err) time.Sleep(100 * time.Millisecond) - rows2, _, err = th.SystemAdminClient.GetAnalyticsOld("standard", "") + rows2, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "standard", "") require.NoError(t, err) assert.Equal(t, "total_websocket_connections", rows2[5].Name) assert.Equal(t, float64(1), rows2[5].Value) WebSocketClient.Close() - rows2, _, err = th.SystemAdminClient.GetAnalyticsOld("standard", "") + rows2, _, err = th.SystemAdminClient.GetAnalyticsOld(context.Background(), "standard", "") require.NoError(t, err) assert.Equal(t, "total_websocket_connections", rows2[5].Name) assert.Equal(t, float64(0), rows2[5].Value) - client.Logout() - _, resp, err = client.GetAnalyticsOld("", th.BasicTeam.Id) + client.Logout(context.Background()) + _, resp, err = client.GetAnalyticsOld(context.Background(), "", th.BasicTeam.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -544,13 +545,13 @@ func TestS3TestConnection(t *testing.T) { } t.Run("as system user", func(t *testing.T) { - resp, err := client.TestS3Connection(&config) + resp, err := client.TestS3Connection(context.Background(), &config) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("as system admin", func(t *testing.T) { - resp, err := th.SystemAdminClient.TestS3Connection(&config) + resp, err := th.SystemAdminClient.TestS3Connection(context.Background(), &config) CheckBadRequestStatus(t, resp) CheckErrorMessage(t, err, "S3 Bucket is required") // If this fails, check the test configuration to ensure minio is setup with the @@ -558,22 +559,22 @@ func TestS3TestConnection(t *testing.T) { *config.FileSettings.AmazonS3Bucket = model.MinioBucket config.FileSettings.AmazonS3PathPrefix = model.NewString("") *config.FileSettings.AmazonS3Region = "us-east-1" - resp, err = th.SystemAdminClient.TestS3Connection(&config) + resp, err = th.SystemAdminClient.TestS3Connection(context.Background(), &config) require.NoError(t, err) CheckOKStatus(t, resp) config.FileSettings.AmazonS3Region = model.NewString("") - resp, err = th.SystemAdminClient.TestS3Connection(&config) + resp, err = th.SystemAdminClient.TestS3Connection(context.Background(), &config) require.NoError(t, err) CheckOKStatus(t, resp) config.FileSettings.AmazonS3Bucket = model.NewString("Wrong_bucket") - resp, err = th.SystemAdminClient.TestS3Connection(&config) + resp, err = th.SystemAdminClient.TestS3Connection(context.Background(), &config) CheckInternalErrorStatus(t, resp) CheckErrorID(t, err, "api.file.test_connection_s3_bucket_does_not_exist.app_error") *config.FileSettings.AmazonS3Bucket = "shouldnotcreatenewbucket" - resp, err = th.SystemAdminClient.TestS3Connection(&config) + resp, err = th.SystemAdminClient.TestS3Connection(context.Background(), &config) CheckInternalErrorStatus(t, resp) CheckErrorID(t, err, "api.file.test_connection_s3_bucket_does_not_exist.app_error") }) @@ -581,7 +582,7 @@ func TestS3TestConnection(t *testing.T) { t.Run("with incorrect credentials", func(t *testing.T) { configCopy := config *configCopy.FileSettings.AmazonS3AccessKeyId = "invalidaccesskey" - resp, err := th.SystemAdminClient.TestS3Connection(&configCopy) + resp, err := th.SystemAdminClient.TestS3Connection(context.Background(), &configCopy) CheckInternalErrorStatus(t, resp) CheckErrorID(t, err, "api.file.test_connection_s3_auth.app_error") }) @@ -590,14 +591,14 @@ func TestS3TestConnection(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = true }) defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ExperimentalSettings.RestrictSystemAdmin = false }) - resp, err := th.SystemAdminClient.TestS3Connection(&config) + resp, err := th.SystemAdminClient.TestS3Connection(context.Background(), &config) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("empty file settings", func(t *testing.T) { config.FileSettings = model.FileSettings{} - resp, err := th.SystemAdminClient.TestS3Connection(&config) + resp, err := th.SystemAdminClient.TestS3Connection(context.Background(), &config) require.Error(t, err) CheckErrorID(t, err, "api.file.test_connection_s3_settings_nil.app_error") CheckBadRequestStatus(t, resp) @@ -610,7 +611,7 @@ func TestSupportedTimezones(t *testing.T) { client := th.Client supportedTimezonesFromConfig := th.App.Timezones().GetSupported() - supportedTimezones, _, err := client.GetSupportedTimezone() + supportedTimezones, _, err := client.GetSupportedTimezone(context.Background()) require.NoError(t, err) assert.Equal(t, supportedTimezonesFromConfig, supportedTimezones) @@ -639,37 +640,37 @@ func TestRedirectLocation(t *testing.T) { *th.App.Config().ServiceSettings.EnableLinkPreviews = true *th.App.Config().ServiceSettings.AllowedUntrustedInternalConnections = "127.0.0.1" - _, _, err := th.SystemAdminClient.GetRedirectLocation("https://mattermost.com/", "") + _, _, err := th.SystemAdminClient.GetRedirectLocation(context.Background(), "https://mattermost.com/", "") require.NoError(t, err) - _, resp, err := th.SystemAdminClient.GetRedirectLocation("", "") + _, resp, err := th.SystemAdminClient.GetRedirectLocation(context.Background(), "", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - actual, _, err := th.SystemAdminClient.GetRedirectLocation(mockBitlyLink, "") + actual, _, err := th.SystemAdminClient.GetRedirectLocation(context.Background(), mockBitlyLink, "") require.NoError(t, err) assert.Equal(t, expected, actual) // Check cached value - actual, _, err = th.SystemAdminClient.GetRedirectLocation(mockBitlyLink, "") + actual, _, err = th.SystemAdminClient.GetRedirectLocation(context.Background(), mockBitlyLink, "") require.NoError(t, err) assert.Equal(t, expected, actual) *th.App.Config().ServiceSettings.EnableLinkPreviews = false - actual, _, err = th.SystemAdminClient.GetRedirectLocation("https://mattermost.com/", "") + actual, _, err = th.SystemAdminClient.GetRedirectLocation(context.Background(), "https://mattermost.com/", "") require.NoError(t, err) assert.Equal(t, actual, "") - actual, _, err = th.SystemAdminClient.GetRedirectLocation("", "") + actual, _, err = th.SystemAdminClient.GetRedirectLocation(context.Background(), "", "") require.NoError(t, err) assert.Equal(t, actual, "") - actual, _, err = th.SystemAdminClient.GetRedirectLocation(mockBitlyLink, "") + actual, _, err = th.SystemAdminClient.GetRedirectLocation(context.Background(), mockBitlyLink, "") require.NoError(t, err) assert.Equal(t, actual, "") - client.Logout() - _, resp, err = client.GetRedirectLocation("", "") + client.Logout(context.Background()) + _, resp, err = client.GetRedirectLocation(context.Background(), "", "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -681,14 +682,14 @@ func TestSetServerBusy(t *testing.T) { const secs = 30 t.Run("as system user", func(t *testing.T) { - resp, err := th.Client.SetServerBusy(secs) + resp, err := th.Client.SetServerBusy(context.Background(), secs) require.Error(t, err) CheckForbiddenStatus(t, resp) require.False(t, th.App.Srv().Platform().Busy.IsBusy(), "server should not be marked busy") }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - _, err := c.SetServerBusy(secs) + _, err := c.SetServerBusy(context.Background(), secs) require.NoError(t, err) require.True(t, th.App.Srv().Platform().Busy.IsBusy(), "server should be marked busy") }, "as system admin") @@ -701,7 +702,7 @@ func TestSetServerBusyInvalidParam(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { params := []int{-1, 0, MaxServerBusySeconds + 1} for _, p := range params { - resp, err := c.SetServerBusy(p) + resp, err := c.SetServerBusy(context.Background(), p) require.Error(t, err) CheckBadRequestStatus(t, resp) require.False(t, th.App.Srv().Platform().Busy.IsBusy(), "server should not be marked busy due to invalid param ", p) @@ -715,7 +716,7 @@ func TestClearServerBusy(t *testing.T) { th.App.Srv().Platform().Busy.Set(time.Second * 30) t.Run("as system user", func(t *testing.T) { - resp, err := th.Client.ClearServerBusy() + resp, err := th.Client.ClearServerBusy(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) require.True(t, th.App.Srv().Platform().Busy.IsBusy(), "server should be marked busy") @@ -723,7 +724,7 @@ func TestClearServerBusy(t *testing.T) { th.App.Srv().Platform().Busy.Set(time.Second * 30) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - _, err := c.ClearServerBusy() + _, err := c.ClearServerBusy(context.Background()) require.NoError(t, err) require.False(t, th.App.Srv().Platform().Busy.IsBusy(), "server should not be marked busy") }, "as system admin") @@ -736,13 +737,13 @@ func TestGetServerBusy(t *testing.T) { th.App.Srv().Platform().Busy.Set(time.Second * 30) t.Run("as system user", func(t *testing.T) { - _, resp, err := th.Client.GetServerBusy() + _, resp, err := th.Client.GetServerBusy(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - sbs, _, err := c.GetServerBusy() + sbs, _, err := c.GetServerBusy(context.Background()) expires := time.Unix(sbs.Expires, 0) require.NoError(t, err) require.Greater(t, expires.Unix(), time.Now().Unix()) @@ -757,28 +758,28 @@ func TestServerBusy503(t *testing.T) { t.Run("search users while busy", func(t *testing.T) { us := &model.UserSearch{Term: "test"} - _, resp, err := th.SystemAdminClient.SearchUsers(us) + _, resp, err := th.SystemAdminClient.SearchUsers(context.Background(), us) require.Error(t, err) CheckServiceUnavailableStatus(t, resp) }) t.Run("search teams while busy", func(t *testing.T) { ts := &model.TeamSearch{} - _, resp, err := th.SystemAdminClient.SearchTeams(ts) + _, resp, err := th.SystemAdminClient.SearchTeams(context.Background(), ts) require.Error(t, err) CheckServiceUnavailableStatus(t, resp) }) t.Run("search channels while busy", func(t *testing.T) { cs := &model.ChannelSearch{} - _, resp, err := th.SystemAdminClient.SearchChannels("foo", cs) + _, resp, err := th.SystemAdminClient.SearchChannels(context.Background(), "foo", cs) require.Error(t, err) CheckServiceUnavailableStatus(t, resp) }) t.Run("search archived channels while busy", func(t *testing.T) { cs := &model.ChannelSearch{} - _, resp, err := th.SystemAdminClient.SearchArchivedChannels("foo", cs) + _, resp, err := th.SystemAdminClient.SearchArchivedChannels(context.Background(), "foo", cs) require.Error(t, err) CheckServiceUnavailableStatus(t, resp) }) @@ -787,7 +788,7 @@ func TestServerBusy503(t *testing.T) { t.Run("search users while not busy", func(t *testing.T) { us := &model.UserSearch{Term: "test"} - _, _, err := th.SystemAdminClient.SearchUsers(us) + _, _, err := th.SystemAdminClient.SearchUsers(context.Background(), us) require.NoError(t, err) }) } @@ -896,18 +897,18 @@ func TestCompleteOnboarding(t *testing.T) { } t.Run("as a regular user", func(t *testing.T) { - resp, err := th.Client.CompleteOnboarding(req) + resp, err := th.Client.CompleteOnboarding(context.Background(), req) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("as a system admin", func(t *testing.T) { - resp, err := th.SystemAdminClient.CompleteOnboarding(req) + resp, err := th.SystemAdminClient.CompleteOnboarding(context.Background(), req) require.NoError(t, err) CheckOKStatus(t, resp) t.Cleanup(func() { - resp, err = th.SystemAdminClient.RemovePlugin("testplugin2") + resp, err = th.SystemAdminClient.RemovePlugin(context.Background(), "testplugin2") require.NoError(t, err) CheckOKStatus(t, resp) }) @@ -916,7 +917,7 @@ func TestCompleteOnboarding(t *testing.T) { go func() { for { - installedPlugins, resp, err := th.SystemAdminClient.GetPlugins() + installedPlugins, resp, err := th.SystemAdminClient.GetPlugins(context.Background()) if err != nil || resp.StatusCode != http.StatusOK { time.Sleep(500 * time.Millisecond) continue @@ -952,7 +953,7 @@ func TestCompleteOnboarding(t *testing.T) { }) }) - resp, err := th.SystemAdminClient.CompleteOnboarding(req) + resp, err := th.SystemAdminClient.CompleteOnboarding(context.Background(), req) require.NoError(t, err) CheckOKStatus(t, resp) }) @@ -963,7 +964,7 @@ func TestGetAppliedSchemaMigrations(t *testing.T) { defer th.TearDown() t.Run("as a regular user", func(t *testing.T) { - _, resp, err := th.Client.GetAppliedSchemaMigrations() + _, resp, err := th.Client.GetAppliedSchemaMigrations(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -973,13 +974,13 @@ func TestGetAppliedSchemaMigrations(t *testing.T) { require.Nil(t, appErr) th.LoginBasic2() - _, resp, err := th.Client.GetAppliedSchemaMigrations() + _, resp, err := th.Client.GetAppliedSchemaMigrations(context.Background()) require.NoError(t, err) CheckOKStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - _, resp, err := c.GetAppliedSchemaMigrations() + _, resp, err := c.GetAppliedSchemaMigrations(context.Background()) require.NoError(t, err) CheckOKStatus(t, resp) }) diff --git a/server/channels/api4/team_test.go b/server/channels/api4/team_test.go index b5c6479716..3caf7908ef 100644 --- a/server/channels/api4/team_test.go +++ b/server/channels/api4/team_test.go @@ -33,7 +33,7 @@ func TestCreateTeam(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { team := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TeamOpen} - rteam, resp, err := client.CreateTeam(team) + rteam, resp, err := client.CreateTeam(context.Background(), team) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -43,28 +43,28 @@ func TestCreateTeam(t *testing.T) { require.Equal(t, rteam.Type, team.Type, "types did not match") - _, resp, err = client.CreateTeam(rteam) + _, resp, err = client.CreateTeam(context.Background(), rteam) require.Error(t, err) CheckBadRequestStatus(t, resp) rteam.Id = "" - _, resp, err = client.CreateTeam(rteam) + _, resp, err = client.CreateTeam(context.Background(), rteam) CheckErrorID(t, err, "app.team.save.existing.app_error") CheckBadRequestStatus(t, resp) rteam.Name = "" - _, resp, err = client.CreateTeam(rteam) + _, resp, err = client.CreateTeam(context.Background(), rteam) CheckErrorID(t, err, "model.team.is_valid.characters.app_error") CheckBadRequestStatus(t, resp) - r, err := client.DoAPIPost("/teams", "garbage") + r, err := client.DoAPIPost(context.Background(), "/teams", "garbage") require.Error(t, err, "should have errored") require.Equalf(t, r.StatusCode, http.StatusBadRequest, "wrong status code, actual: %s, expected: %s", strconv.Itoa(r.StatusCode), strconv.Itoa(http.StatusBadRequest)) // Test GroupConstrained flag groupConstrainedTeam := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TeamOpen, GroupConstrained: model.NewBool(true)} - rteam, resp, err = client.CreateTeam(groupConstrainedTeam) + rteam, resp, err = client.CreateTeam(context.Background(), groupConstrainedTeam) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -72,10 +72,10 @@ func TestCreateTeam(t *testing.T) { }) t.Run("unauthenticated receives 403", func(t *testing.T) { - th.Client.Logout() + th.Client.Logout(context.Background()) team := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TeamOpen} - _, resp, err := th.Client.CreateTeam(team) + _, resp, err := th.Client.CreateTeam(context.Background(), team) require.Error(t, err) CheckUnauthorizedStatus(t, resp) @@ -90,7 +90,7 @@ func TestCreateTeam(t *testing.T) { th.RemovePermissionFromRole(model.PermissionCreateTeam.Id, model.SystemUserRoleId) th.AddPermissionToRole(model.PermissionCreateTeam.Id, model.SystemAdminRoleId) - _, resp, err = th.Client.CreateTeam(team) + _, resp, err = th.Client.CreateTeam(context.Background(), team) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -100,14 +100,14 @@ func TestCreateTeam(t *testing.T) { th.App.SetPhase2PermissionsMigrationStatus(true) sc := th.SystemAdminClient - scheme, _, err := sc.CreateScheme(&model.Scheme{ + scheme, _, err := sc.CreateScheme(context.Background(), &model.Scheme{ DisplayName: "dn_" + model.NewId(), Name: model.NewId(), Scope: model.SchemeScopeTeam, }) require.NoError(t, err) - team, _, err := sc.CreateTeam(&model.Team{ + team, _, err := sc.CreateTeam(context.Background(), &model.Team{ DisplayName: "dn_" + model.NewId(), Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -117,7 +117,7 @@ func TestCreateTeam(t *testing.T) { require.NoError(t, err) require.Equal(t, scheme.Id, *team.SchemeId) - _, r, err := th.Client.CreateTeam(&model.Team{ + _, r, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: "dn_" + model.NewId(), Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -130,17 +130,17 @@ func TestCreateTeam(t *testing.T) { t.Run("should take under consideration the server language when creating a new team", func(t *testing.T) { c := th.SystemAdminClient - cfg, _, err := c.GetConfig() + cfg, _, err := c.GetConfig(context.Background()) require.NoError(t, err) newServerLang := "de" cfg.LocalizationSettings.DefaultServerLocale = &newServerLang translateFunc := i18n.GetUserTranslations(newServerLang) - _, _, err = c.UpdateConfig(cfg) + _, _, err = c.UpdateConfig(context.Background(), cfg) require.NoError(t, err) team := th.CreateTeamWithClient(c) - channels, _, err := c.GetPublicChannelsForTeam(team.Id, 0, 1000, "") + channels, _, err := c.GetPublicChannelsForTeam(context.Background(), team.Id, 0, 1000, "") require.NoError(t, err) for _, ch := range channels { if ch.Name == "off-topic" { @@ -168,7 +168,7 @@ func TestCreateTeam(t *testing.T) { }, }, nil).Once() team := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TeamOpen} - _, resp, err := th.Client.CreateTeam(team) + _, resp, err := th.Client.CreateTeam(context.Background(), team) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -189,7 +189,7 @@ func TestCreateTeam(t *testing.T) { }, }, nil).Once() team := &model.Team{Name: GenerateTestUsername(), DisplayName: "Some Team", Type: model.TeamOpen} - _, resp, err := th.Client.CreateTeam(team) + _, resp, err := th.Client.CreateTeam(context.Background(), team) require.NoError(t, err) CheckCreatedStatus(t, resp) }) @@ -210,7 +210,7 @@ func TestCreateTeamSanitization(t *testing.T) { AllowedDomains: "simulator.amazonses.com,localhost", } - rteam, _, err := th.Client.CreateTeam(team) + rteam, _, err := th.Client.CreateTeam(context.Background(), team) require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email") require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid") @@ -225,7 +225,7 @@ func TestCreateTeamSanitization(t *testing.T) { AllowedDomains: "simulator.amazonses.com,localhost", } - rteam, _, err := client.CreateTeam(team) + rteam, _, err := client.CreateTeam(context.Background(), team) require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email") require.NotEmpty(t, rteam.InviteId, "should not have sanitized inviteid") @@ -239,20 +239,20 @@ func TestGetTeam(t *testing.T) { team := th.BasicTeam th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - rteam, _, err := client.GetTeam(team.Id, "") + rteam, _, err := client.GetTeam(context.Background(), team.Id, "") require.NoError(t, err) require.Equal(t, rteam.Id, team.Id, "wrong team") - _, resp, err := client.GetTeam("junk", "") + _, resp, err := client.GetTeam(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeam("", "") + _, resp, err = client.GetTeam(context.Background(), "", "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetTeam(model.NewId(), "") + _, resp, err = client.GetTeam(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -260,29 +260,29 @@ func TestGetTeam(t *testing.T) { th.LoginTeamAdmin() team2 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen, AllowOpenInvite: false} - rteam2, _, _ := client.CreateTeam(team2) + rteam2, _, _ := client.CreateTeam(context.Background(), team2) team3 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamInvite, AllowOpenInvite: true} - rteam3, _, _ := client.CreateTeam(team3) + rteam3, _, _ := client.CreateTeam(context.Background(), team3) th.LoginBasic() // AllowInviteOpen is false and team is open, and user is not on team - _, resp, err := client.GetTeam(rteam2.Id, "") + _, resp, err := client.GetTeam(context.Background(), rteam2.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) // AllowInviteOpen is true and team is invite, and user is not on team - _, resp, err = client.GetTeam(rteam3.Id, "") + _, resp, err = client.GetTeam(context.Background(), rteam3.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetTeam(team.Id, "") + client.Logout(context.Background()) + _, resp, err = client.GetTeam(context.Background(), team.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.GetTeam(rteam2.Id, "") + _, _, err = client.GetTeam(context.Background(), rteam2.Id, "") require.NoError(t, err) }) } @@ -291,7 +291,7 @@ func TestGetTeamSanitization(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - team, _, err := th.Client.CreateTeam(&model.Team{ + team, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_1", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -306,7 +306,7 @@ func TestGetTeamSanitization(t *testing.T) { client := th.CreateClient() th.LoginBasic2WithClient(client) - rteam, _, err := client.GetTeam(team.Id, "") + rteam, _, err := client.GetTeam(context.Background(), team.Id, "") require.NoError(t, err) require.Empty(t, rteam.Email, "should have sanitized email") @@ -320,7 +320,7 @@ func TestGetTeamSanitization(t *testing.T) { client := th.CreateClient() th.LoginBasic2WithClient(client) - rteam, _, err := client.GetTeam(team.Id, "") + rteam, _, err := client.GetTeam(context.Background(), team.Id, "") require.NoError(t, err) require.Empty(t, rteam.Email, "should have sanitized email") @@ -328,7 +328,7 @@ func TestGetTeamSanitization(t *testing.T) { }) t.Run("team admin", func(t *testing.T) { - rteam, _, err := th.Client.GetTeam(team.Id, "") + rteam, _, err := th.Client.GetTeam(context.Background(), team.Id, "") require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email") @@ -336,7 +336,7 @@ func TestGetTeamSanitization(t *testing.T) { }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - rteam, _, err := client.GetTeam(team.Id, "") + rteam, _, err := client.GetTeam(context.Background(), team.Id, "") require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email") @@ -349,32 +349,32 @@ func TestGetTeamUnread(t *testing.T) { defer th.TearDown() client := th.Client - teamUnread, _, err := client.GetTeamUnread(th.BasicTeam.Id, th.BasicUser.Id) + teamUnread, _, err := client.GetTeamUnread(context.Background(), th.BasicTeam.Id, th.BasicUser.Id) require.NoError(t, err) require.Equal(t, teamUnread.TeamId, th.BasicTeam.Id, "wrong team id returned for regular user call") - _, resp, err := client.GetTeamUnread("junk", th.BasicUser.Id) + _, resp, err := client.GetTeamUnread(context.Background(), "junk", th.BasicUser.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamUnread(th.BasicTeam.Id, "junk") + _, resp, err = client.GetTeamUnread(context.Background(), th.BasicTeam.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamUnread(model.NewId(), th.BasicUser.Id) + _, resp, err = client.GetTeamUnread(context.Background(), model.NewId(), th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetTeamUnread(th.BasicTeam.Id, model.NewId()) + _, resp, err = client.GetTeamUnread(context.Background(), th.BasicTeam.Id, model.NewId()) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetTeamUnread(th.BasicTeam.Id, th.BasicUser.Id) + client.Logout(context.Background()) + _, resp, err = client.GetTeamUnread(context.Background(), th.BasicTeam.Id, th.BasicUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - teamUnread, _, err = th.SystemAdminClient.GetTeamUnread(th.BasicTeam.Id, th.BasicUser.Id) + teamUnread, _, err = th.SystemAdminClient.GetTeamUnread(context.Background(), th.BasicTeam.Id, th.BasicUser.Id) require.NoError(t, err) require.Equal(t, teamUnread.TeamId, th.BasicTeam.Id, "wrong team id returned") } @@ -385,24 +385,24 @@ func TestUpdateTeam(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { team := &model.Team{DisplayName: "Name", Description: "Some description", AllowOpenInvite: false, InviteId: "inviteid0", Name: "z-z-" + model.NewRandomTeamName() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen} - team, _, err := th.Client.CreateTeam(team) + team, _, err := th.Client.CreateTeam(context.Background(), team) require.NoError(t, err) team.Description = "updated description" - uteam, _, err := client.UpdateTeam(team) + uteam, _, err := client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.Equal(t, uteam.Description, "updated description", "Update failed") team.DisplayName = "Updated Name" - uteam, _, err = client.UpdateTeam(team) + uteam, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.Equal(t, uteam.DisplayName, "Updated Name", "Update failed") // Test GroupConstrained flag team.GroupConstrained = model.NewBool(true) - rteam, resp, err := client.UpdateTeam(team) + rteam, resp, err := client.UpdateTeam(context.Background(), team) require.NoError(t, err) CheckOKStatus(t, resp) @@ -411,37 +411,37 @@ func TestUpdateTeam(t *testing.T) { team.GroupConstrained = nil team.AllowOpenInvite = true - uteam, _, err = client.UpdateTeam(team) + uteam, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.True(t, uteam.AllowOpenInvite, "Update failed") team.InviteId = "inviteid1" - uteam, _, err = client.UpdateTeam(team) + uteam, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.NotEqual(t, uteam.InviteId, "inviteid1", "InviteID should not be updated") team.AllowedDomains = "domain" - uteam, _, err = client.UpdateTeam(team) + uteam, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.Equal(t, uteam.AllowedDomains, "domain", "Update failed") team.Name = "Updated name" - uteam, _, err = client.UpdateTeam(team) + uteam, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.NotEqual(t, uteam.Name, "Updated name", "Should not update name") team.Email = "test@domain.com" - uteam, _, err = client.UpdateTeam(team) + uteam, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.NotEqual(t, uteam.Email, "test@domain.com", "Should not update email") team.Type = model.TeamInvite - uteam, _, err = client.UpdateTeam(team) + uteam, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.NotEqual(t, uteam.Type, model.TeamInvite, "Should not update type") @@ -451,19 +451,19 @@ func TestUpdateTeam(t *testing.T) { teamJSON, jsonErr := json.Marshal(team) require.NoError(t, jsonErr) - r, err := th.Client.DoAPIPut("/teams/"+originalTeamId, string(teamJSON)) + r, err := th.Client.DoAPIPut(context.Background(), "/teams/"+originalTeamId, string(teamJSON)) assert.Error(t, err) assert.Equal(t, http.StatusBadRequest, r.StatusCode) require.Equal(t, uteam.Id, originalTeamId, "wrong team id") team.Id = "fake" - _, resp, err = client.UpdateTeam(team) + _, resp, err = client.UpdateTeam(context.Background(), team) require.Error(t, err) CheckBadRequestStatus(t, resp) - th.Client.Logout() // for non-local clients - _, resp, err = th.Client.UpdateTeam(team) + th.Client.Logout(context.Background()) // for non-local clients + _, resp, err = th.Client.UpdateTeam(context.Background(), team) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic() @@ -471,11 +471,11 @@ func TestUpdateTeam(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { team := &model.Team{DisplayName: "New", Description: "Some description", AllowOpenInvite: false, InviteId: "inviteid0", Name: "z-z-" + model.NewRandomTeamName() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen} - team, _, err := client.CreateTeam(team) + team, _, err := client.CreateTeam(context.Background(), team) require.NoError(t, err) team.Name = "new-name" - _, _, err = client.UpdateTeam(team) + _, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) }) } @@ -484,7 +484,7 @@ func TestUpdateTeamSanitization(t *testing.T) { th := Setup(t) defer th.TearDown() - team, _, err := th.Client.CreateTeam(&model.Team{ + team, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_1", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -496,7 +496,7 @@ func TestUpdateTeamSanitization(t *testing.T) { // Non-admin users cannot update the team t.Run("team admin", func(t *testing.T) { - rteam, _, err := th.Client.UpdateTeam(team) + rteam, _, err := th.Client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email for admin") @@ -504,7 +504,7 @@ func TestUpdateTeamSanitization(t *testing.T) { }) t.Run("system admin", func(t *testing.T) { - rteam, _, err := th.SystemAdminClient.UpdateTeam(team) + rteam, _, err := th.SystemAdminClient.UpdateTeam(context.Background(), team) require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email for admin") @@ -517,7 +517,7 @@ func TestPatchTeam(t *testing.T) { defer th.TearDown() team := &model.Team{DisplayName: "Name", Description: "Some description", CompanyName: "Some company name", AllowOpenInvite: false, InviteId: "inviteid0", Name: "z-z-" + model.NewRandomTeamName() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen} - team, _, _ = th.Client.CreateTeam(team) + team, _, _ = th.Client.CreateTeam(context.Background(), team) patch := &model.TeamPatch{} patch.DisplayName = model.NewString("Other name") @@ -525,23 +525,23 @@ func TestPatchTeam(t *testing.T) { patch.CompanyName = model.NewString("Other company name") patch.AllowOpenInvite = model.NewBool(true) - _, resp, err := th.Client.PatchTeam(GenerateTestId(), patch) + _, resp, err := th.Client.PatchTeam(context.Background(), GenerateTestId(), patch) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - _, resp, err = th.Client.PatchTeam(team.Id, patch) + th.Client.Logout(context.Background()) + _, resp, err = th.Client.PatchTeam(context.Background(), team.Id, patch) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic2() - _, resp, err = th.Client.PatchTeam(team.Id, patch) + _, resp, err = th.Client.PatchTeam(context.Background(), team.Id, patch) require.Error(t, err) CheckForbiddenStatus(t, resp) th.LoginBasic() th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - rteam, _, err2 := client.PatchTeam(team.Id, patch) + rteam, _, err2 := client.PatchTeam(context.Background(), team.Id, patch) require.NoError(t, err2) require.Equal(t, rteam.DisplayName, "Other name", "DisplayName did not update properly") @@ -552,13 +552,13 @@ func TestPatchTeam(t *testing.T) { t.Run("Changing AllowOpenInvite to false regenerates InviteID", func(t *testing.T) { team2 := &model.Team{DisplayName: "Name2", Description: "Some description", CompanyName: "Some company name", AllowOpenInvite: true, InviteId: model.NewId(), Name: "z-z-" + model.NewRandomTeamName() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen} - team2, _, _ = client.CreateTeam(team2) + team2, _, _ = client.CreateTeam(context.Background(), team2) patch2 := &model.TeamPatch{ AllowOpenInvite: model.NewBool(false), } - rteam2, _, err3 := client.PatchTeam(team2.Id, patch2) + rteam2, _, err3 := client.PatchTeam(context.Background(), team2.Id, patch2) require.NoError(t, err3) require.Equal(t, team2.Id, rteam2.Id) require.False(t, rteam2.AllowOpenInvite) @@ -567,13 +567,13 @@ func TestPatchTeam(t *testing.T) { t.Run("Changing AllowOpenInvite to true doesn't regenerate InviteID", func(t *testing.T) { team2 := &model.Team{DisplayName: "Name3", Description: "Some description", CompanyName: "Some company name", AllowOpenInvite: false, InviteId: model.NewId(), Name: "z-z-" + model.NewRandomTeamName() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen} - team2, _, _ = client.CreateTeam(team2) + team2, _, _ = client.CreateTeam(context.Background(), team2) patch2 := &model.TeamPatch{ AllowOpenInvite: model.NewBool(true), } - rteam2, _, err3 := client.PatchTeam(team2.Id, patch2) + rteam2, _, err3 := client.PatchTeam(context.Background(), team2.Id, patch2) require.NoError(t, err3) require.Equal(t, team2.Id, rteam2.Id) require.True(t, rteam2.AllowOpenInvite) @@ -582,23 +582,23 @@ func TestPatchTeam(t *testing.T) { // Test GroupConstrained flag patch.GroupConstrained = model.NewBool(true) - rteam, resp, err2 := client.PatchTeam(team.Id, patch) + rteam, resp, err2 := client.PatchTeam(context.Background(), team.Id, patch) require.NoError(t, err2) CheckOKStatus(t, resp) require.Equal(t, *rteam.GroupConstrained, *patch.GroupConstrained, "GroupConstrained flags do not match") patch.GroupConstrained = nil - _, resp, err = client.PatchTeam("junk", patch) + _, resp, err = client.PatchTeam(context.Background(), "junk", patch) require.Error(t, err) CheckBadRequestStatus(t, resp) - r, err2 := client.DoAPIPut("/teams/"+team.Id+"/patch", "garbage") + r, err2 := client.DoAPIPut(context.Background(), "/teams/"+team.Id+"/patch", "garbage") require.Error(t, err2, "should have errored") require.Equalf(t, r.StatusCode, http.StatusBadRequest, "wrong status code, actual: %s, expected: %s", strconv.Itoa(r.StatusCode), strconv.Itoa(http.StatusBadRequest)) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.PatchTeam(th.BasicTeam.Id, patch) + _, _, err = client.PatchTeam(context.Background(), th.BasicTeam.Id, patch) require.NoError(t, err) }) } @@ -620,10 +620,10 @@ func TestRestoreTeam(t *testing.T) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: teamType, } - team, _, _ = client.CreateTeam(team) + team, _, _ = client.CreateTeam(context.Background(), team) require.NotNil(t, team) if deleted { - resp, err := th.SystemAdminClient.SoftDeleteTeam(team.Id) + resp, err := th.SystemAdminClient.SoftDeleteTeam(context.Background(), team.Id) require.NoError(t, err) CheckOKStatus(t, resp) } @@ -632,14 +632,14 @@ func TestRestoreTeam(t *testing.T) { teamPublic := createTeam(t, true, model.TeamOpen) t.Run("invalid team", func(t *testing.T) { - _, resp, err := client.RestoreTeam(model.NewId()) + _, resp, err := client.RestoreTeam(context.Background(), model.NewId()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { team := createTeam(t, true, model.TeamOpen) - team, resp, err := client.RestoreTeam(team.Id) + team, resp, err := client.RestoreTeam(context.Background(), team.Id) require.NoError(t, err) CheckOKStatus(t, resp) require.Zero(t, team.DeleteAt) @@ -648,7 +648,7 @@ func TestRestoreTeam(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { team := createTeam(t, true, model.TeamInvite) - team, resp, err := client.RestoreTeam(team.Id) + team, resp, err := client.RestoreTeam(context.Background(), team.Id) require.NoError(t, err) CheckOKStatus(t, resp) require.Zero(t, team.DeleteAt) @@ -657,7 +657,7 @@ func TestRestoreTeam(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { team := createTeam(t, false, model.TeamOpen) - team, resp, err := client.RestoreTeam(team.Id) + team, resp, err := client.RestoreTeam(context.Background(), team.Id) require.NoError(t, err) CheckOKStatus(t, resp) require.Zero(t, team.DeleteAt) @@ -665,21 +665,21 @@ func TestRestoreTeam(t *testing.T) { }, "restore active public team") t.Run("not logged in", func(t *testing.T) { - client.Logout() - _, resp, err := client.RestoreTeam(teamPublic.Id) + client.Logout(context.Background()) + _, resp, err := client.RestoreTeam(context.Background(), teamPublic.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("no permission to manage team", func(t *testing.T) { th.LoginBasic2() - _, resp, err := client.RestoreTeam(teamPublic.Id) + _, resp, err := client.RestoreTeam(context.Background(), teamPublic.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.RestoreTeam(teamPublic.Id) + _, resp, err := client.RestoreTeam(context.Background(), teamPublic.Id) require.NoError(t, err) CheckOKStatus(t, resp) }) @@ -702,7 +702,7 @@ func TestRestoreTeam(t *testing.T) { }, }, nil).Once() - _, resp, err := client.RestoreTeam(team.Id) + _, resp, err := client.RestoreTeam(context.Background(), team.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -723,7 +723,7 @@ func TestRestoreTeam(t *testing.T) { }, }, nil).Twice() team := createTeam(t, true, model.TeamOpen) - _, resp, err := client.RestoreTeam(team.Id) + _, resp, err := client.RestoreTeam(context.Background(), team.Id) require.NoError(t, err) CheckOKStatus(t, resp) }) @@ -733,7 +733,7 @@ func TestPatchTeamSanitization(t *testing.T) { th := Setup(t) defer th.TearDown() - team, _, err := th.Client.CreateTeam(&model.Team{ + team, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_1", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -745,7 +745,7 @@ func TestPatchTeamSanitization(t *testing.T) { // Non-admin users cannot update the team t.Run("team admin", func(t *testing.T) { - rteam, _, err := th.Client.PatchTeam(team.Id, &model.TeamPatch{}) + rteam, _, err := th.Client.PatchTeam(context.Background(), team.Id, &model.TeamPatch{}) require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email for admin") @@ -753,7 +753,7 @@ func TestPatchTeamSanitization(t *testing.T) { }) t.Run("system admin", func(t *testing.T) { - rteam, _, err := th.SystemAdminClient.PatchTeam(team.Id, &model.TeamPatch{}) + rteam, _, err := th.SystemAdminClient.PatchTeam(context.Background(), team.Id, &model.TeamPatch{}) require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email for admin") @@ -777,7 +777,7 @@ func TestUpdateTeamPrivacy(t *testing.T) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: teamType, } - team, _, _ = client.CreateTeam(team) + team, _, _ = client.CreateTeam(context.Background(), team) return team } @@ -807,7 +807,7 @@ func TestUpdateTeamPrivacy(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - team, resp, err := client.UpdateTeamPrivacy(test.team.Id, test.privacy) + team, resp, err := client.UpdateTeamPrivacy(context.Background(), test.team.Id, test.privacy) if test.errChecker != nil { test.errChecker(t, resp) return @@ -826,27 +826,27 @@ func TestUpdateTeamPrivacy(t *testing.T) { } t.Run("non-existent team", func(t *testing.T) { - _, resp, err := client.UpdateTeamPrivacy(model.NewId(), model.TeamInvite) + _, resp, err := client.UpdateTeamPrivacy(context.Background(), model.NewId(), model.TeamInvite) require.Error(t, err) CheckForbiddenStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.UpdateTeamPrivacy(model.NewId(), model.TeamInvite) + _, resp, err := client.UpdateTeamPrivacy(context.Background(), model.NewId(), model.TeamInvite) require.Error(t, err) CheckNotFoundStatus(t, resp) }, "non-existent team for admins") t.Run("not logged in", func(t *testing.T) { - client.Logout() - _, resp, err := client.UpdateTeamPrivacy(teamPublic.Id, model.TeamInvite) + client.Logout(context.Background()) + _, resp, err := client.UpdateTeamPrivacy(context.Background(), teamPublic.Id, model.TeamInvite) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("no permission to manage team", func(t *testing.T) { th.LoginBasic2() - _, resp, err := client.UpdateTeamPrivacy(teamPublic.Id, model.TeamInvite) + _, resp, err := client.UpdateTeamPrivacy(context.Background(), teamPublic.Id, model.TeamInvite) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -864,7 +864,7 @@ func TestTeamUnicodeNames(t *testing.T) { Description: "A \ufffatest\ufffb channel.", CompanyName: "\ufeffAcme Inc\ufffc", Type: model.TeamOpen} - rteam, resp, err := client.CreateTeam(team) + rteam, resp, err := client.CreateTeam(context.Background(), team) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -881,12 +881,12 @@ func TestTeamUnicodeNames(t *testing.T) { Name: model.NewRandomTeamName(), Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen} - team, _, _ = client.CreateTeam(team) + team, _, _ = client.CreateTeam(context.Background(), team) team.DisplayName = "\u206eThe Team\u206f" team.Description = "A \u17a3great\u17d3 team." team.CompanyName = "\u206aAcme Inc" - uteam, _, err := client.UpdateTeam(team) + uteam, _, err := client.UpdateTeam(context.Background(), team) require.NoError(t, err) require.Equal(t, "The Team", uteam.DisplayName, "bad unicode should be filtered from display name") @@ -902,7 +902,7 @@ func TestTeamUnicodeNames(t *testing.T) { Name: model.NewRandomTeamName(), Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen} - team, _, _ = client.CreateTeam(team) + team, _, _ = client.CreateTeam(context.Background(), team) patch := &model.TeamPatch{} @@ -910,7 +910,7 @@ func TestTeamUnicodeNames(t *testing.T) { patch.Description = model.NewString("\ufffaGreat team.") patch.CompanyName = model.NewString("\u202bAcme Inc\u202c") - rteam, _, err := client.PatchTeam(team.Id, patch) + rteam, _, err := client.PatchTeam(context.Background(), team.Id, patch) require.NoError(t, err) require.Equal(t, "Goat Team", rteam.DisplayName, "bad unicode should be filtered from display name") @@ -925,13 +925,13 @@ func TestRegenerateTeamInviteId(t *testing.T) { client := th.Client team := &model.Team{DisplayName: "Name", Description: "Some description", CompanyName: "Some company name", AllowOpenInvite: false, InviteId: "inviteid0", Name: "z-z-" + model.NewRandomTeamName() + "a", Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen} - team, _, _ = client.CreateTeam(team) + team, _, _ = client.CreateTeam(context.Background(), team) assert.NotEqual(t, team.InviteId, "") assert.NotEqual(t, team.InviteId, "inviteid0") *th.App.Config().PrivacySettings.ShowEmailAddress = true - rteam, _, err := client.RegenerateTeamInviteId(team.Id) + rteam, _, err := client.RegenerateTeamInviteId(context.Background(), team.Id) require.NoError(t, err) assert.NotEqual(t, team.InviteId, rteam.InviteId) @@ -939,7 +939,7 @@ func TestRegenerateTeamInviteId(t *testing.T) { assert.NotEqual(t, rteam.Email, "") *th.App.Config().PrivacySettings.ShowEmailAddress = false - rteam, _, err = client.RegenerateTeamInviteId(team.Id) + rteam, _, err = client.RegenerateTeamInviteId(context.Background(), team.Id) require.NoError(t, err) assert.NotEqual(t, team.InviteId, rteam.InviteId) @@ -951,34 +951,34 @@ func TestSoftDeleteTeam(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - resp, err := th.Client.SoftDeleteTeam(th.BasicTeam.Id) + resp, err := th.Client.SoftDeleteTeam(context.Background(), th.BasicTeam.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - resp, err = th.Client.SoftDeleteTeam(th.BasicTeam.Id) + th.Client.Logout(context.Background()) + resp, err = th.Client.SoftDeleteTeam(context.Background(), th.BasicTeam.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic() team := &model.Team{DisplayName: "DisplayName", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen} - team, _, _ = th.Client.CreateTeam(team) + team, _, _ = th.Client.CreateTeam(context.Background(), team) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, err2 := client.SoftDeleteTeam(team.Id) + _, err2 := client.SoftDeleteTeam(context.Background(), team.Id) require.NoError(t, err2) rteam, appErr := th.App.GetTeam(team.Id) require.Nil(t, appErr, "should have returned archived team") require.NotEqual(t, rteam.DeleteAt, 0, "should have not set to zero") - resp, err2 = client.SoftDeleteTeam("junk") + resp, err2 = client.SoftDeleteTeam(context.Background(), "junk") require.Error(t, err2) CheckBadRequestStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err = client.SoftDeleteTeam(th.BasicTeam.Id) + _, err = client.SoftDeleteTeam(context.Background(), th.BasicTeam.Id) require.NoError(t, err) }) } @@ -995,22 +995,22 @@ func TestPermanentDeleteTeam(t *testing.T) { t.Run("Permanent deletion not available through API if EnableAPITeamDeletion is not set", func(t *testing.T) { team := &model.Team{DisplayName: "DisplayName", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen} - team, _, _ = th.Client.CreateTeam(team) + team, _, _ = th.Client.CreateTeam(context.Background(), team) - resp, err := th.Client.PermanentDeleteTeam(team.Id) + resp, err := th.Client.PermanentDeleteTeam(context.Background(), team.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - resp, err = th.SystemAdminClient.PermanentDeleteTeam(team.Id) + resp, err = th.SystemAdminClient.PermanentDeleteTeam(context.Background(), team.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("Permanent deletion available through local mode even if EnableAPITeamDeletion is not set", func(t *testing.T) { team := &model.Team{DisplayName: "DisplayName", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen} - team, _, _ = th.Client.CreateTeam(team) + team, _, _ = th.Client.CreateTeam(context.Background(), team) - _, err := th.LocalClient.PermanentDeleteTeam(team.Id) + _, err := th.LocalClient.PermanentDeleteTeam(context.Background(), team.Id) require.NoError(t, err) }) @@ -1021,14 +1021,14 @@ func TestPermanentDeleteTeam(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableAPITeamDeletion = true }) team := &model.Team{DisplayName: "DisplayName", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen} - team, _, _ = client.CreateTeam(team) - _, err := client.PermanentDeleteTeam(team.Id) + team, _, _ = client.CreateTeam(context.Background(), team) + _, err := client.PermanentDeleteTeam(context.Background(), team.Id) require.NoError(t, err) _, appErr := th.App.GetTeam(team.Id) assert.NotNil(t, appErr) - resp, err := client.PermanentDeleteTeam("junk") + resp, err := client.PermanentDeleteTeam(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) }, "Permanent deletion with EnableAPITeamDeletion set") @@ -1041,19 +1041,19 @@ func TestGetAllTeams(t *testing.T) { client := th.Client team1 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen, AllowOpenInvite: true} - team1, _, err := client.CreateTeam(team1) + team1, _, err := client.CreateTeam(context.Background(), team1) require.NoError(t, err) team2 := &model.Team{DisplayName: "Name2", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen, AllowOpenInvite: true} - team2, _, err = client.CreateTeam(team2) + team2, _, err = client.CreateTeam(context.Background(), team2) require.NoError(t, err) team3 := &model.Team{DisplayName: "Name3", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen, AllowOpenInvite: false} - team3, _, err = client.CreateTeam(team3) + team3, _, err = client.CreateTeam(context.Background(), team3) require.NoError(t, err) team4 := &model.Team{DisplayName: "Name4", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen, AllowOpenInvite: false} - team4, _, err = client.CreateTeam(team4) + team4, _, err = client.CreateTeam(context.Background(), team4) require.NoError(t, err) testCases := []struct { @@ -1176,9 +1176,9 @@ func TestGetAllTeams(t *testing.T) { var resp *model.Response var err2 error if tc.WithCount { - teams, _, resp, err2 = client.GetAllTeamsWithTotalCount("", tc.Page, tc.PerPage) + teams, _, resp, err2 = client.GetAllTeamsWithTotalCount(context.Background(), "", tc.Page, tc.PerPage) } else { - teams, resp, err2 = client.GetAllTeams("", tc.Page, tc.PerPage) + teams, resp, err2 = client.GetAllTeams(context.Background(), "", tc.Page, tc.PerPage) } if tc.ExpectedError { CheckErrorID(t, err2, tc.ErrorId) @@ -1196,22 +1196,22 @@ func TestGetAllTeams(t *testing.T) { } t.Run("Local mode", func(t *testing.T) { - teams, _, err2 := th.LocalClient.GetAllTeams("", 0, 10) + teams, _, err2 := th.LocalClient.GetAllTeams(context.Background(), "", 0, 10) require.NoError(t, err2) require.Len(t, teams, 5) }) // Choose a team which the system manager can access - sysManagerTeams, resp, err := th.SystemManagerClient.GetAllTeams("", 0, 10000) + sysManagerTeams, resp, err := th.SystemManagerClient.GetAllTeams(context.Background(), "", 0, 10000) require.NoError(t, err) CheckOKStatus(t, resp) policyTeam := sysManagerTeams[0] // If no policies exist, GetAllTeamsExcludePolicyConstrained should return everything t.Run("exclude policy constrained, without policy", func(t *testing.T) { - _, excludeConstrainedResp, err2 := client.GetAllTeamsExcludePolicyConstrained("", 0, 100) + _, excludeConstrainedResp, err2 := client.GetAllTeamsExcludePolicyConstrained(context.Background(), "", 0, 100) require.Error(t, err2) CheckForbiddenStatus(t, excludeConstrainedResp) - teams, excludeConstrainedResp, err2 := th.SystemAdminClient.GetAllTeamsExcludePolicyConstrained("", 0, 100) + teams, excludeConstrainedResp, err2 := th.SystemAdminClient.GetAllTeamsExcludePolicyConstrained(context.Background(), "", 0, 100) require.NoError(t, err2) CheckOKStatus(t, excludeConstrainedResp) found := false @@ -1234,7 +1234,7 @@ func TestGetAllTeams(t *testing.T) { require.NoError(t, savePolicyErr) // This time, the team shouldn't be returned t.Run("exclude policy constrained, with policy", func(t *testing.T) { - teams, excludeConstrainedResp, err2 := th.SystemAdminClient.GetAllTeamsExcludePolicyConstrained("", 0, 100) + teams, excludeConstrainedResp, err2 := th.SystemAdminClient.GetAllTeamsExcludePolicyConstrained(context.Background(), "", 0, 100) require.NoError(t, err2) CheckOKStatus(t, excludeConstrainedResp) found := false @@ -1248,7 +1248,7 @@ func TestGetAllTeams(t *testing.T) { }) t.Run("does not return policy ID", func(t *testing.T) { - teams, sysManagerResp, err2 := th.SystemManagerClient.GetAllTeams("", 0, 100) + teams, sysManagerResp, err2 := th.SystemManagerClient.GetAllTeams(context.Background(), "", 0, 100) require.NoError(t, err2) CheckOKStatus(t, sysManagerResp) found := false @@ -1263,7 +1263,7 @@ func TestGetAllTeams(t *testing.T) { }) t.Run("returns policy ID", func(t *testing.T) { - teams, sysAdminResp, err2 := th.SystemAdminClient.GetAllTeams("", 0, 100) + teams, sysAdminResp, err2 := th.SystemAdminClient.GetAllTeams(context.Background(), "", 0, 100) require.NoError(t, err2) CheckOKStatus(t, sysAdminResp) found := false @@ -1278,16 +1278,16 @@ func TestGetAllTeams(t *testing.T) { }) t.Run("Unauthorized", func(t *testing.T) { - client.Logout() - _, resp, err = client.GetAllTeams("", 1, 10) + client.Logout(context.Background()) + _, resp, err = client.GetAllTeams(context.Background(), "", 1, 10) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("Sanitize the teams in the response with total count", func(t *testing.T) { otherUser := th.CreateUser() - client.Login(otherUser.Email, otherUser.Password) - teams, _, _, err := client.GetAllTeamsWithTotalCount("", 0, 10) + client.Login(context.Background(), otherUser.Email, otherUser.Password) + teams, _, _, err := client.GetAllTeamsWithTotalCount(context.Background(), "", 0, 10) require.NoError(t, err) for _, team := range teams { if team.Email != "" { @@ -1302,7 +1302,7 @@ func TestGetAllTeamsSanitization(t *testing.T) { th := Setup(t) defer th.TearDown() - team, _, err := th.Client.CreateTeam(&model.Team{ + team, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_1", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -1311,7 +1311,7 @@ func TestGetAllTeamsSanitization(t *testing.T) { AllowOpenInvite: true, }) require.NoError(t, err) - team2, _, err := th.SystemAdminClient.CreateTeam(&model.Team{ + team2, _, err := th.SystemAdminClient.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_2", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -1327,7 +1327,7 @@ func TestGetAllTeamsSanitization(t *testing.T) { teamFound := false team2Found := false - rteams, _, err := th.Client.GetAllTeams("", 0, 1000) + rteams, _, err := th.Client.GetAllTeams(context.Background(), "", 0, 1000) require.NoError(t, err) for _, rteam := range rteams { if rteam.Id == team.Id { @@ -1346,7 +1346,7 @@ func TestGetAllTeamsSanitization(t *testing.T) { }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - rteams, _, err := client.GetAllTeams("", 0, 1000) + rteams, _, err := client.GetAllTeams(context.Background(), "", 0, 1000) require.NoError(t, err) for _, rteam := range rteams { if rteam.Id != team.Id && rteam.Id != team2.Id { @@ -1365,50 +1365,50 @@ func TestGetTeamByName(t *testing.T) { team := th.BasicTeam th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - rteam, _, err := client.GetTeamByName(team.Name, "") + rteam, _, err := client.GetTeamByName(context.Background(), team.Name, "") require.NoError(t, err) require.Equal(t, rteam.Name, team.Name, "wrong team") - _, resp, err := client.GetTeamByName("junk", "") + _, resp, err := client.GetTeamByName(context.Background(), "junk", "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetTeamByName("", "") + _, resp, err = client.GetTeamByName(context.Background(), "", "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err := client.GetTeamByName(strings.ToUpper(team.Name), "") + _, _, err := client.GetTeamByName(context.Background(), strings.ToUpper(team.Name), "") require.NoError(t, err) }) - th.Client.Logout() - _, resp, err := th.Client.GetTeamByName(team.Name, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetTeamByName(context.Background(), team.Name, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetTeamByName(team.Name, "") + _, _, err = th.SystemAdminClient.GetTeamByName(context.Background(), team.Name, "") require.NoError(t, err) th.LoginTeamAdmin() team2 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamOpen, AllowOpenInvite: false} - rteam2, _, _ := th.Client.CreateTeam(team2) + rteam2, _, _ := th.Client.CreateTeam(context.Background(), team2) team3 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamInvite, AllowOpenInvite: true} - rteam3, _, _ := th.Client.CreateTeam(team3) + rteam3, _, _ := th.Client.CreateTeam(context.Background(), team3) th.LoginBasic() // AllowInviteOpen is false and team is open, and user is not on team - _, resp, err = th.Client.GetTeamByName(rteam2.Name, "") + _, resp, err = th.Client.GetTeamByName(context.Background(), rteam2.Name, "") require.Error(t, err) CheckForbiddenStatus(t, resp) // AllowInviteOpen is true and team is invite only, and user is not on team - _, resp, err = th.Client.GetTeamByName(rteam3.Name, "") + _, resp, err = th.Client.GetTeamByName(context.Background(), rteam3.Name, "") require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -1417,7 +1417,7 @@ func TestGetTeamByNameSanitization(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - team, _, err := th.Client.CreateTeam(&model.Team{ + team, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_1", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -1432,7 +1432,7 @@ func TestGetTeamByNameSanitization(t *testing.T) { client := th.CreateClient() th.LoginBasic2WithClient(client) - rteam, _, err := client.GetTeamByName(team.Name, "") + rteam, _, err := client.GetTeamByName(context.Background(), team.Name, "") require.NoError(t, err) require.Empty(t, rteam.Email, "should've sanitized email") @@ -1447,7 +1447,7 @@ func TestGetTeamByNameSanitization(t *testing.T) { th.LoginBasic2WithClient(client) - rteam, _, err := client.GetTeam(team.Id, "") + rteam, _, err := client.GetTeam(context.Background(), team.Id, "") require.NoError(t, err) require.Empty(t, rteam.Email, "should have sanitized email") @@ -1455,7 +1455,7 @@ func TestGetTeamByNameSanitization(t *testing.T) { }) t.Run("team admin/non-admin", func(t *testing.T) { - rteam, _, err := th.Client.GetTeamByName(team.Name, "") + rteam, _, err := th.Client.GetTeamByName(context.Background(), team.Name, "") require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email") @@ -1463,7 +1463,7 @@ func TestGetTeamByNameSanitization(t *testing.T) { }) t.Run("system admin", func(t *testing.T) { - rteam, _, err := th.SystemAdminClient.GetTeamByName(team.Name, "") + rteam, _, err := th.SystemAdminClient.GetTeamByName(context.Background(), team.Name, "") require.NoError(t, err) require.NotEmpty(t, rteam.Email, "should not have sanitized email") @@ -1484,56 +1484,56 @@ func TestSearchAllTeams(t *testing.T) { oTeam.UpdateAt = updatedTeam.UpdateAt pTeam := &model.Team{DisplayName: "PName", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamInvite} - th.Client.CreateTeam(pTeam) + th.Client.CreateTeam(context.Background(), pTeam) - rteams, _, err := th.Client.SearchTeams(&model.TeamSearch{Term: pTeam.Name}) + rteams, _, err := th.Client.SearchTeams(context.Background(), &model.TeamSearch{Term: pTeam.Name}) require.NoError(t, err) require.Empty(t, rteams, "should have not returned team") - rteams, _, err = th.Client.SearchTeams(&model.TeamSearch{Term: pTeam.DisplayName}) + rteams, _, err = th.Client.SearchTeams(context.Background(), &model.TeamSearch{Term: pTeam.DisplayName}) require.NoError(t, err) require.Empty(t, rteams, "should have not returned team") - th.Client.Logout() + th.Client.Logout(context.Background()) - _, resp, err := th.Client.SearchTeams(&model.TeamSearch{Term: pTeam.Name}) + _, resp, err := th.Client.SearchTeams(context.Background(), &model.TeamSearch{Term: pTeam.Name}) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, resp, err = th.Client.SearchTeams(&model.TeamSearch{Term: pTeam.DisplayName}) + _, resp, err = th.Client.SearchTeams(context.Background(), &model.TeamSearch{Term: pTeam.DisplayName}) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic() th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - rteams, _, err2 := client.SearchTeams(&model.TeamSearch{Term: oTeam.Name}) + rteams, _, err2 := client.SearchTeams(context.Background(), &model.TeamSearch{Term: oTeam.Name}) require.NoError(t, err2) require.Len(t, rteams, 1, "should have returned 1 team") require.Equal(t, oTeam.Id, rteams[0].Id, "invalid team") - rteams, _, err2 = client.SearchTeams(&model.TeamSearch{Term: oTeam.DisplayName}) + rteams, _, err2 = client.SearchTeams(context.Background(), &model.TeamSearch{Term: oTeam.DisplayName}) require.NoError(t, err2) require.Len(t, rteams, 1, "should have returned 1 team") require.Equal(t, oTeam.Id, rteams[0].Id, "invalid team") - rteams, _, err2 = client.SearchTeams(&model.TeamSearch{Term: "junk"}) + rteams, _, err2 = client.SearchTeams(context.Background(), &model.TeamSearch{Term: "junk"}) require.NoError(t, err2) require.Empty(t, rteams, "should have not returned team") }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - rteams, _, err2 := client.SearchTeams(&model.TeamSearch{Term: oTeam.Name}) + rteams, _, err2 := client.SearchTeams(context.Background(), &model.TeamSearch{Term: oTeam.Name}) require.NoError(t, err2) require.Len(t, rteams, 1, "should have returned 1 team") - rteams, _, err2 = client.SearchTeams(&model.TeamSearch{Term: pTeam.DisplayName}) + rteams, _, err2 = client.SearchTeams(context.Background(), &model.TeamSearch{Term: pTeam.DisplayName}) require.NoError(t, err2) require.Len(t, rteams, 1, "should have returned 1 team") }) // Choose a team which the system manager can access - sysManagerTeams, resp, err := th.SystemManagerClient.GetAllTeams("", 0, 10000) + sysManagerTeams, resp, err := th.SystemManagerClient.GetAllTeams(context.Background(), "", 0, 10000) require.NoError(t, err) CheckOKStatus(t, resp) policyTeam := sysManagerTeams[0] @@ -1547,7 +1547,7 @@ func TestSearchAllTeams(t *testing.T) { }) require.NoError(t, savePolicyErr) t.Run("does not return policy ID", func(t *testing.T) { - teams, sysManagerResp, err := th.SystemManagerClient.SearchTeams(&model.TeamSearch{Term: policyTeam.Name}) + teams, sysManagerResp, err := th.SystemManagerClient.SearchTeams(context.Background(), &model.TeamSearch{Term: policyTeam.Name}) require.NoError(t, err) CheckOKStatus(t, sysManagerResp) found := false @@ -1561,7 +1561,7 @@ func TestSearchAllTeams(t *testing.T) { require.True(t, found) }) t.Run("returns policy ID", func(t *testing.T) { - teams, sysAdminResp, err := th.SystemAdminClient.SearchTeams(&model.TeamSearch{Term: policyTeam.Name}) + teams, sysAdminResp, err := th.SystemAdminClient.SearchTeams(context.Background(), &model.TeamSearch{Term: policyTeam.Name}) require.NoError(t, err) CheckOKStatus(t, sysAdminResp) found := false @@ -1690,7 +1690,7 @@ func TestSearchAllTeamsPaged(t *testing.T) { for _, tc := range testCases { t.Run(tc.Name, func(t *testing.T) { - teams, count, _, err := th.SystemAdminClient.SearchTeamsPaged(tc.Search) + teams, count, _, err := th.SystemAdminClient.SearchTeamsPaged(context.Background(), tc.Search) require.NoError(t, err) require.Equal(t, tc.ExpectedTotalCount, count) require.Equal(t, len(tc.ExpectedTeams), len(teams)) @@ -1700,7 +1700,7 @@ func TestSearchAllTeamsPaged(t *testing.T) { }) } - _, _, resp, err := th.Client.SearchTeamsPaged(&model.TeamSearch{Term: commonRandom, PerPage: model.NewInt(100)}) + _, _, resp, err := th.Client.SearchTeamsPaged(context.Background(), &model.TeamSearch{Term: commonRandom, PerPage: model.NewInt(100)}) CheckErrorID(t, err, "api.team.search_teams.pagination_not_implemented.public_team_search") require.Equal(t, http.StatusNotImplemented, resp.StatusCode) } @@ -1709,7 +1709,7 @@ func TestSearchAllTeamsSanitization(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - team, _, err := th.Client.CreateTeam(&model.Team{ + team, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_1", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -1717,7 +1717,7 @@ func TestSearchAllTeamsSanitization(t *testing.T) { AllowedDomains: "simulator.amazonses.com,localhost", }) require.NoError(t, err) - team2, _, err := th.Client.CreateTeam(&model.Team{ + team2, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_2", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -1730,7 +1730,7 @@ func TestSearchAllTeamsSanitization(t *testing.T) { client := th.CreateClient() th.LoginBasic2WithClient(client) - rteams, _, err := client.SearchTeams(&model.TeamSearch{Term: t.Name()}) + rteams, _, err := client.SearchTeams(context.Background(), &model.TeamSearch{Term: t.Name()}) require.NoError(t, err) for _, rteam := range rteams { require.Empty(t, rteam.Email, "should've sanitized email") @@ -1745,7 +1745,7 @@ func TestSearchAllTeamsSanitization(t *testing.T) { client := th.CreateClient() th.LoginBasic2WithClient(client) - rteams, _, err := client.SearchTeams(&model.TeamSearch{Term: t.Name()}) + rteams, _, err := client.SearchTeams(context.Background(), &model.TeamSearch{Term: t.Name()}) require.NoError(t, err) for _, rteam := range rteams { require.Empty(t, rteam.Email, "should've sanitized email") @@ -1755,7 +1755,7 @@ func TestSearchAllTeamsSanitization(t *testing.T) { }) t.Run("team admin", func(t *testing.T) { - rteams, _, err := th.Client.SearchTeams(&model.TeamSearch{Term: t.Name()}) + rteams, _, err := th.Client.SearchTeams(context.Background(), &model.TeamSearch{Term: t.Name()}) require.NoError(t, err) for _, rteam := range rteams { if rteam.Id == team.Id || rteam.Id == team2.Id || rteam.Id == th.BasicTeam.Id { @@ -1766,7 +1766,7 @@ func TestSearchAllTeamsSanitization(t *testing.T) { }) t.Run("system admin", func(t *testing.T) { - rteams, _, err := th.SystemAdminClient.SearchTeams(&model.TeamSearch{Term: t.Name()}) + rteams, _, err := th.SystemAdminClient.SearchTeams(context.Background(), &model.TeamSearch{Term: t.Name()}) require.NoError(t, err) for _, rteam := range rteams { require.NotEmpty(t, rteam.Email, "should not have sanitized email") @@ -1781,9 +1781,9 @@ func TestGetTeamsForUser(t *testing.T) { client := th.Client team2 := &model.Team{DisplayName: "Name", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), Type: model.TeamInvite} - rteam2, _, _ := client.CreateTeam(team2) + rteam2, _, _ := client.CreateTeam(context.Background(), team2) - teams, _, err := client.GetTeamsForUser(th.BasicUser.Id, "") + teams, _, err := client.GetTeamsForUser(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) require.Len(t, teams, 2, "wrong number of teams") @@ -1801,19 +1801,19 @@ func TestGetTeamsForUser(t *testing.T) { require.True(t, found1, "missing team") require.True(t, found2, "missing team") - _, resp, err := client.GetTeamsForUser("junk", "") + _, resp, err := client.GetTeamsForUser(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamsForUser(model.NewId(), "") + _, resp, err = client.GetTeamsForUser(context.Background(), model.NewId(), "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetTeamsForUser(th.BasicUser2.Id, "") + _, resp, err = client.GetTeamsForUser(context.Background(), th.BasicUser2.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetTeamsForUser(th.BasicUser2.Id, "") + _, _, err = th.SystemAdminClient.GetTeamsForUser(context.Background(), th.BasicUser2.Id, "") require.NoError(t, err) } @@ -1821,7 +1821,7 @@ func TestGetTeamsForUserSanitization(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - team, _, err := th.Client.CreateTeam(&model.Team{ + team, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_1", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -1829,7 +1829,7 @@ func TestGetTeamsForUserSanitization(t *testing.T) { AllowedDomains: "simulator.amazonses.com,localhost", }) require.NoError(t, err) - team2, _, err := th.Client.CreateTeam(&model.Team{ + team2, _, err := th.Client.CreateTeam(context.Background(), &model.Team{ DisplayName: t.Name() + "_2", Name: GenerateTestTeamName(), Email: th.GenerateTestEmail(), @@ -1845,7 +1845,7 @@ func TestGetTeamsForUserSanitization(t *testing.T) { client := th.CreateClient() th.LoginBasic2WithClient(client) - rteams, _, err := client.GetTeamsForUser(th.BasicUser2.Id, "") + rteams, _, err := client.GetTeamsForUser(context.Background(), th.BasicUser2.Id, "") require.NoError(t, err) for _, rteam := range rteams { if rteam.Id != team.Id && rteam.Id != team2.Id { @@ -1865,7 +1865,7 @@ func TestGetTeamsForUserSanitization(t *testing.T) { th.RemovePermissionFromRole(model.PermissionInviteUser.Id, model.TeamUserRoleId) th.LoginBasic2WithClient(client) - rteams, _, err := client.GetTeamsForUser(th.BasicUser2.Id, "") + rteams, _, err := client.GetTeamsForUser(context.Background(), th.BasicUser2.Id, "") require.NoError(t, err) for _, rteam := range rteams { if rteam.Id != team.Id && rteam.Id != team2.Id { @@ -1878,7 +1878,7 @@ func TestGetTeamsForUserSanitization(t *testing.T) { }) t.Run("team admin", func(t *testing.T) { - rteams, _, err := th.Client.GetTeamsForUser(th.BasicUser.Id, "") + rteams, _, err := th.Client.GetTeamsForUser(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) for _, rteam := range rteams { if rteam.Id != team.Id && rteam.Id != team2.Id { @@ -1889,7 +1889,7 @@ func TestGetTeamsForUserSanitization(t *testing.T) { require.NotEmpty(t, rteam.InviteId, "should have not sanitized inviteid") } *th.App.Config().PrivacySettings.ShowEmailAddress = false - rteams, _, err2 := th.Client.GetTeamsForUser(th.BasicUser.Id, "") + rteams, _, err2 := th.Client.GetTeamsForUser(context.Background(), th.BasicUser.Id, "") require.NoError(t, err2) for _, rteam := range rteams { if rteam.Id != team.Id && rteam.Id != team2.Id { @@ -1902,7 +1902,7 @@ func TestGetTeamsForUserSanitization(t *testing.T) { }) t.Run("system admin", func(t *testing.T) { - rteams, _, err := th.SystemAdminClient.GetTeamsForUser(th.BasicUser.Id, "") + rteams, _, err := th.SystemAdminClient.GetTeamsForUser(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) for _, rteam := range rteams { if rteam.Id != team.Id && rteam.Id != team2.Id { @@ -1922,34 +1922,34 @@ func TestGetTeamMember(t *testing.T) { team := th.BasicTeam user := th.BasicUser - rmember, _, err := client.GetTeamMember(team.Id, user.Id, "") + rmember, _, err := client.GetTeamMember(context.Background(), team.Id, user.Id, "") require.NoError(t, err) require.Equal(t, rmember.TeamId, team.Id, "wrong team id") require.Equal(t, rmember.UserId, user.Id, "wrong user id") - _, resp, err := client.GetTeamMember("junk", user.Id, "") + _, resp, err := client.GetTeamMember(context.Background(), "junk", user.Id, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamMember(team.Id, "junk", "") + _, resp, err = client.GetTeamMember(context.Background(), team.Id, "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamMember("junk", "junk", "") + _, resp, err = client.GetTeamMember(context.Background(), "junk", "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamMember(team.Id, model.NewId(), "") + _, resp, err = client.GetTeamMember(context.Background(), team.Id, model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) - _, resp, err = client.GetTeamMember(model.NewId(), user.Id, "") + _, resp, err = client.GetTeamMember(context.Background(), model.NewId(), user.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetTeamMember(team.Id, user.Id, "") + _, _, err = th.SystemAdminClient.GetTeamMember(context.Background(), team.Id, user.Id, "") require.NoError(t, err) } @@ -1960,7 +1960,7 @@ func TestGetTeamMembers(t *testing.T) { team := th.BasicTeam userNotMember := th.CreateUser() - rmembers, _, err := client.GetTeamMembers(team.Id, 0, 100, "") + rmembers, _, err := client.GetTeamMembers(context.Background(), team.Id, 0, 100, "") require.NoError(t, err) t.Logf("rmembers count %v\n", len(rmembers)) @@ -1972,21 +1972,21 @@ func TestGetTeamMembers(t *testing.T) { require.NotEqual(t, rmember.UserId, userNotMember.Id, "user should be a member of team") } - rmembers, _, err = client.GetTeamMembers(team.Id, 0, 1, "") + rmembers, _, err = client.GetTeamMembers(context.Background(), team.Id, 0, 1, "") require.NoError(t, err) require.Len(t, rmembers, 1, "should be 1 per page") - rmembers, _, err = client.GetTeamMembers(team.Id, 1, 1, "") + rmembers, _, err = client.GetTeamMembers(context.Background(), team.Id, 1, 1, "") require.NoError(t, err) require.Len(t, rmembers, 1, "should be 1 per page") - rmembers, _, err = client.GetTeamMembers(team.Id, 10000, 100, "") + rmembers, _, err = client.GetTeamMembers(context.Background(), team.Id, 10000, 100, "") require.NoError(t, err) require.Empty(t, rmembers, "should be no member") - rmembers, _, err = client.GetTeamMembers(team.Id, 0, 2, "") + rmembers, _, err = client.GetTeamMembers(context.Background(), team.Id, 0, 2, "") require.NoError(t, err) - rmembers2, _, err := client.GetTeamMembers(team.Id, 1, 2, "") + rmembers2, _, err := client.GetTeamMembers(context.Background(), team.Id, 1, 2, "") require.NoError(t, err) for _, tm1 := range rmembers { @@ -1995,32 +1995,32 @@ func TestGetTeamMembers(t *testing.T) { } } - _, resp, err := client.GetTeamMembers("junk", 0, 100, "") + _, resp, err := client.GetTeamMembers(context.Background(), "junk", 0, 100, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamMembers(model.NewId(), 0, 100, "") + _, resp, err = client.GetTeamMembers(context.Background(), model.NewId(), 0, 100, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetTeamMembers(team.Id, 0, 1, "") + client.Logout(context.Background()) + _, resp, err = client.GetTeamMembers(context.Background(), team.Id, 0, 1, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(team.Id, 0, 100, "", false, "") + _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(context.Background(), team.Id, 0, 100, "", false, "") require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(team.Id, 0, 100, model.USERNAME, false, "") + _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(context.Background(), team.Id, 0, 100, model.USERNAME, false, "") require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(team.Id, 0, 100, model.USERNAME, true, "") + _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(context.Background(), team.Id, 0, 100, model.USERNAME, true, "") require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(team.Id, 0, 100, "", true, "") + _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(context.Background(), team.Id, 0, 100, "", true, "") require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(team.Id, 0, 100, model.USERNAME, false, "") + _, _, err = th.SystemAdminClient.GetTeamMembersSortAndWithoutDeletedUsers(context.Background(), team.Id, 0, 100, model.USERNAME, false, "") require.NoError(t, err) } @@ -2029,7 +2029,7 @@ func TestGetTeamMembersForUser(t *testing.T) { defer th.TearDown() client := th.Client - members, _, err := client.GetTeamMembersForUser(th.BasicUser.Id, "") + members, _, err := client.GetTeamMembersForUser(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) found := false @@ -2041,26 +2041,26 @@ func TestGetTeamMembersForUser(t *testing.T) { require.True(t, found, "missing team member") - _, resp, err := client.GetTeamMembersForUser("junk", "") + _, resp, err := client.GetTeamMembersForUser(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamMembersForUser(model.NewId(), "") + _, resp, err = client.GetTeamMembersForUser(context.Background(), model.NewId(), "") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetTeamMembersForUser(th.BasicUser.Id, "") + client.Logout(context.Background()) + _, resp, err = client.GetTeamMembersForUser(context.Background(), th.BasicUser.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - client.Login(user.Email, user.Password) - _, resp, err = client.GetTeamMembersForUser(th.BasicUser.Id, "") + client.Login(context.Background(), user.Email, user.Password) + _, resp, err = client.GetTeamMembersForUser(context.Background(), th.BasicUser.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetTeamMembersForUser(th.BasicUser.Id, "") + _, _, err = th.SystemAdminClient.GetTeamMembersForUser(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) } @@ -2069,33 +2069,33 @@ func TestGetTeamMembersByIds(t *testing.T) { defer th.TearDown() client := th.Client - tm, _, err := client.GetTeamMembersByIds(th.BasicTeam.Id, []string{th.BasicUser.Id}) + tm, _, err := client.GetTeamMembersByIds(context.Background(), th.BasicTeam.Id, []string{th.BasicUser.Id}) require.NoError(t, err) require.Equal(t, tm[0].UserId, th.BasicUser.Id, "returned wrong user") - _, resp, err := client.GetTeamMembersByIds(th.BasicTeam.Id, []string{}) + _, resp, err := client.GetTeamMembersByIds(context.Background(), th.BasicTeam.Id, []string{}) require.Error(t, err) CheckBadRequestStatus(t, resp) - tm1, _, err := client.GetTeamMembersByIds(th.BasicTeam.Id, []string{"junk"}) + tm1, _, err := client.GetTeamMembersByIds(context.Background(), th.BasicTeam.Id, []string{"junk"}) require.NoError(t, err) require.False(t, len(tm1) > 0, "no users should be returned") - tm1, _, err = client.GetTeamMembersByIds(th.BasicTeam.Id, []string{"junk", th.BasicUser.Id}) + tm1, _, err = client.GetTeamMembersByIds(context.Background(), th.BasicTeam.Id, []string{"junk", th.BasicUser.Id}) require.NoError(t, err) require.Len(t, tm1, 1, "1 user should be returned") - _, resp, err = client.GetTeamMembersByIds("junk", []string{th.BasicUser.Id}) + _, resp, err = client.GetTeamMembersByIds(context.Background(), "junk", []string{th.BasicUser.Id}) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamMembersByIds(model.NewId(), []string{th.BasicUser.Id}) + _, resp, err = client.GetTeamMembersByIds(context.Background(), model.NewId(), []string{th.BasicUser.Id}) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetTeamMembersByIds(th.BasicTeam.Id, []string{th.BasicUser.Id}) + client.Logout(context.Background()) + _, resp, err = client.GetTeamMembersByIds(context.Background(), th.BasicTeam.Id, []string{th.BasicUser.Id}) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2117,7 +2117,7 @@ func TestAddTeamMember(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.GuestAccountsSettings.Enable = true }) guest := th.CreateUser() - _, err := th.SystemAdminClient.DemoteUserToGuest(guest.Id) + _, err := th.SystemAdminClient.DemoteUserToGuest(context.Background(), guest.Id) require.NoError(t, err) appErr := th.App.RemoveUserFromTeam(th.Context, th.BasicTeam.Id, th.BasicUser2.Id, "") @@ -2125,15 +2125,15 @@ func TestAddTeamMember(t *testing.T) { // Regular user can't add a member to a team they don't belong to. th.LoginBasic2() - _, resp, err := client.AddTeamMember(team.Id, otherUser.Id) + _, resp, err := client.AddTeamMember(context.Background(), team.Id, otherUser.Id) CheckForbiddenStatus(t, resp) require.Error(t, err, "Error is nil") - client.Logout() + client.Logout(context.Background()) // SystemAdmin and mode can add member to a team th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { var tm *model.TeamMember - tm, resp, err = client.AddTeamMember(team.Id, otherUser.Id) + tm, resp, err = client.AddTeamMember(context.Background(), team.Id, otherUser.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) require.Equal(t, tm.UserId, otherUser.Id, "user ids should have matched") @@ -2142,7 +2142,7 @@ func TestAddTeamMember(t *testing.T) { // Regular user can add a member to a team they belong to. th.LoginBasic() - tm, resp, err := client.AddTeamMember(team.Id, otherUser.Id) + tm, resp, err := client.AddTeamMember(context.Background(), team.Id, otherUser.Id) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -2154,25 +2154,25 @@ func TestAddTeamMember(t *testing.T) { require.Equal(t, tm.TeamId, team.Id, "team ids should have matched") // Check with various invalid requests. - tm, resp, err = client.AddTeamMember(team.Id, "junk") + tm, resp, err = client.AddTeamMember(context.Background(), team.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) require.Nil(t, tm, "should have not returned team member") - _, resp, err = client.AddTeamMember("junk", otherUser.Id) + _, resp, err = client.AddTeamMember(context.Background(), "junk", otherUser.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.AddTeamMember(GenerateTestId(), otherUser.Id) + _, resp, err = client.AddTeamMember(context.Background(), GenerateTestId(), otherUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.AddTeamMember(team.Id, GenerateTestId()) + _, resp, err = client.AddTeamMember(context.Background(), team.Id, GenerateTestId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() + client.Logout(context.Background()) // Check the appropriate permissions are enforced. defaultRolePermissions := th.SaveDefaultRolePermissions() @@ -2189,7 +2189,7 @@ func TestAddTeamMember(t *testing.T) { th.LoginBasic() // Check that a regular user can't add someone to the team. - _, resp, err = client.AddTeamMember(team.Id, otherUser.Id) + _, resp, err = client.AddTeamMember(context.Background(), team.Id, otherUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -2199,7 +2199,7 @@ func TestAddTeamMember(t *testing.T) { th.LoginBasic() // Should work as a team admin. - _, _, err = client.AddTeamMember(team.Id, otherUser.Id) + _, _, err = client.AddTeamMember(context.Background(), team.Id, otherUser.Id) require.NoError(t, err) // Change permission level to team user @@ -2213,16 +2213,16 @@ func TestAddTeamMember(t *testing.T) { th.LoginBasic() // Should work as a regular user. - _, _, err = client.AddTeamMember(team.Id, otherUser.Id) + _, _, err = client.AddTeamMember(context.Background(), team.Id, otherUser.Id) require.NoError(t, err) // Should return error with invalid JSON in body. - _, err = client.DoAPIPost("/teams/"+team.Id+"/members", "invalid") + _, err = client.DoAPIPost(context.Background(), "/teams/"+team.Id+"/members", "invalid") require.Error(t, err) CheckErrorID(t, err, "api.team.add_team_member.invalid_body.app_error") // by token - client.Login(otherUser.Email, otherUser.Password) + client.Login(context.Background(), otherUser.Email, otherUser.Password) token := model.NewToken( app.TokenTypeTeamInvitation, @@ -2230,7 +2230,7 @@ func TestAddTeamMember(t *testing.T) { ) require.NoError(t, th.App.Srv().Store().Token().Save(token)) - tm, _, err = client.AddTeamMemberFromInvite(token.Token, "") + tm, _, err = client.AddTeamMemberFromInvite(context.Background(), token.Token, "") require.NoError(t, err) require.NotNil(t, tm, "should have returned team member") @@ -2242,7 +2242,7 @@ func TestAddTeamMember(t *testing.T) { _, err = th.App.Srv().Store().Token().GetByToken(token.Token) require.Error(t, err, "The token must be deleted after be used") - tm, resp, err = client.AddTeamMemberFromInvite("junk", "") + tm, resp, err = client.AddTeamMemberFromInvite(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -2253,7 +2253,7 @@ func TestAddTeamMember(t *testing.T) { token.CreateAt = model.GetMillis() - 1000*60*60*50 require.NoError(t, th.App.Srv().Store().Token().Save(token)) - _, resp, err = client.AddTeamMemberFromInvite(token.Token, "") + _, resp, err = client.AddTeamMemberFromInvite(context.Background(), token.Token, "") require.Error(t, err) CheckBadRequestStatus(t, resp) th.App.DeleteToken(token) @@ -2266,7 +2266,7 @@ func TestAddTeamMember(t *testing.T) { ) require.NoError(t, th.App.Srv().Store().Token().Save(token)) - _, resp, err = client.AddTeamMemberFromInvite(token.Token, "") + _, resp, err = client.AddTeamMemberFromInvite(context.Background(), token.Token, "") require.Error(t, err) CheckNotFoundStatus(t, resp) th.App.DeleteToken(token) @@ -2274,17 +2274,17 @@ func TestAddTeamMember(t *testing.T) { // by invite_id th.App.Srv().SetLicense(model.NewTestLicense("")) defer th.App.Srv().SetLicense(nil) - _, _, err = client.Login(guest.Email, guest.Password) + _, _, err = client.Login(context.Background(), guest.Email, guest.Password) require.NoError(t, err) - _, resp, err = client.AddTeamMemberFromInvite("", team.InviteId) + _, resp, err = client.AddTeamMemberFromInvite(context.Background(), "", team.InviteId) require.Error(t, err) CheckForbiddenStatus(t, resp) // by invite_id - client.Login(otherUser.Email, otherUser.Password) + client.Login(context.Background(), otherUser.Email, otherUser.Password) - tm, _, err = client.AddTeamMemberFromInvite("", team.InviteId) + tm, _, err = client.AddTeamMemberFromInvite(context.Background(), "", team.InviteId) require.NoError(t, err) require.NotNil(t, tm, "should have returned team member") @@ -2293,7 +2293,7 @@ func TestAddTeamMember(t *testing.T) { require.Equal(t, tm.TeamId, team.Id, "team ids should have matched") - tm, resp, err = client.AddTeamMemberFromInvite("", "junk") + tm, resp, err = client.AddTeamMemberFromInvite(context.Background(), "", "junk") require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -2310,16 +2310,16 @@ func TestAddTeamMember(t *testing.T) { model.MapToJSON(map[string]string{"teamId": team.Id}), ) require.NoError(t, th.App.Srv().Store().Token().Save(token)) - _, _, err = client.AddTeamMemberFromInvite(token.Token, "") + _, _, err = client.AddTeamMemberFromInvite(context.Background(), token.Token, "") CheckErrorID(t, err, "app.team.invite_token.group_constrained.error") // Attempt to use an invite id - _, _, err = client.AddTeamMemberFromInvite("", team.InviteId) + _, _, err = client.AddTeamMemberFromInvite(context.Background(), "", team.InviteId) CheckErrorID(t, err, "app.team.invite_id.group_constrained.error") // User is not in associated groups so shouldn't be allowed th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.AddTeamMember(team.Id, otherUser.Id) + _, _, err = client.AddTeamMember(context.Background(), team.Id, otherUser.Id) CheckErrorID(t, err, "api.team.add_members.user_denied") }) @@ -2336,7 +2336,7 @@ func TestAddTeamMember(t *testing.T) { require.Nil(t, appErr) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.AddTeamMember(team.Id, otherUser.Id) + _, _, err = client.AddTeamMember(context.Background(), team.Id, otherUser.Id) require.NoError(t, err) }) } @@ -2420,7 +2420,7 @@ func TestAddTeamMemberMyself(t *testing.T) { } else { th.RemovePermissionFromRole(model.PermissionJoinPrivateTeams.Id, model.SystemUserRoleId) } - _, resp, err := client.AddTeamMember(team.Id, th.BasicUser.Id) + _, resp, err := client.AddTeamMember(context.Background(), team.Id, th.BasicUser.Id) if tc.ExpectedSuccess { require.NoError(t, err) } else { @@ -2437,17 +2437,17 @@ func TestAddTeamMembersDomainConstrained(t *testing.T) { client := th.SystemAdminClient team := th.BasicTeam team.AllowedDomains = "domain1.com, domain2.com" - _, _, err := client.UpdateTeam(team) + _, _, err := client.UpdateTeam(context.Background(), team) require.NoError(t, err) // create two users on allowed domains - user1, _, err := client.CreateUser(&model.User{ + user1, _, err := client.CreateUser(context.Background(), &model.User{ Email: "user@domain1.com", Password: "Pa$$word11", Username: GenerateTestUsername(), }) require.NoError(t, err) - user2, _, err := client.CreateUser(&model.User{ + user2, _, err := client.CreateUser(context.Background(), &model.User{ Email: "user@domain2.com", Password: "Pa$$word11", Username: GenerateTestUsername(), @@ -2460,27 +2460,27 @@ func TestAddTeamMembersDomainConstrained(t *testing.T) { } // validate that they can be added - tm, _, err := client.AddTeamMembers(team.Id, userList) + tm, _, err := client.AddTeamMembers(context.Background(), team.Id, userList) require.NoError(t, err) require.Len(t, tm, 2) // cleanup - _, err = client.RemoveTeamMember(team.Id, user1.Id) + _, err = client.RemoveTeamMember(context.Background(), team.Id, user1.Id) require.NoError(t, err) - _, err = client.RemoveTeamMember(team.Id, user2.Id) + _, err = client.RemoveTeamMember(context.Background(), team.Id, user2.Id) require.NoError(t, err) // disable one of the allowed domains team.AllowedDomains = "domain1.com" - _, _, err = client.UpdateTeam(team) + _, _, err = client.UpdateTeam(context.Background(), team) require.NoError(t, err) // validate that they cannot be added - _, _, err = client.AddTeamMembers(team.Id, userList) + _, _, err = client.AddTeamMembers(context.Background(), team.Id, userList) require.Error(t, err) // validate that one user can be added gracefully - members, _, err := client.AddTeamMembersGracefully(team.Id, userList) + members, _, err := client.AddTeamMembersGracefully(context.Background(), team.Id, userList) require.NoError(t, err) require.Len(t, members, 2) require.NotNil(t, members[0].Member) @@ -2511,14 +2511,14 @@ func TestAddTeamMembers(t *testing.T) { // Regular user can't add a member to a team they don't belong to. th.LoginBasic2() - _, resp, err := client.AddTeamMembers(team.Id, userList) + _, resp, err := client.AddTeamMembers(context.Background(), team.Id, userList) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() + client.Logout(context.Background()) // Regular user can add a member to a team they belong to. th.LoginBasic() - tm, resp, err := client.AddTeamMembers(team.Id, userList) + tm, resp, err := client.AddTeamMembers(context.Background(), team.Id, userList) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -2530,16 +2530,16 @@ func TestAddTeamMembers(t *testing.T) { require.Equal(t, tm[0].TeamId, team.Id, "team ids should have matched") // Check with various invalid requests. - _, resp, err = client.AddTeamMembers("junk", userList) + _, resp, err = client.AddTeamMembers(context.Background(), "junk", userList) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.AddTeamMembers(GenerateTestId(), userList) + _, resp, err = client.AddTeamMembers(context.Background(), GenerateTestId(), userList) require.Error(t, err) CheckNotFoundStatus(t, resp) testUserList := append(userList, GenerateTestId()) - _, resp, err = client.AddTeamMembers(team.Id, testUserList) + _, resp, err = client.AddTeamMembers(context.Background(), team.Id, testUserList) require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -2547,11 +2547,11 @@ func TestAddTeamMembers(t *testing.T) { for i := 0; i < 260; i++ { testUserList = append(testUserList, GenerateTestId()) } - _, resp, err = client.AddTeamMembers(team.Id, testUserList) + _, resp, err = client.AddTeamMembers(context.Background(), team.Id, testUserList) require.Error(t, err) CheckBadRequestStatus(t, resp) - client.Logout() + client.Logout(context.Background()) // Check the appropriate permissions are enforced. defaultRolePermissions := th.SaveDefaultRolePermissions() @@ -2568,7 +2568,7 @@ func TestAddTeamMembers(t *testing.T) { th.LoginBasic() // Check that a regular user can't add someone to the team. - _, resp, err = client.AddTeamMembers(team.Id, userList) + _, resp, err = client.AddTeamMembers(context.Background(), team.Id, userList) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -2578,7 +2578,7 @@ func TestAddTeamMembers(t *testing.T) { th.LoginBasic() // Should work as a team admin. - _, _, err = client.AddTeamMembers(team.Id, userList) + _, _, err = client.AddTeamMembers(context.Background(), team.Id, userList) require.NoError(t, err) // Change permission level to team user @@ -2592,7 +2592,7 @@ func TestAddTeamMembers(t *testing.T) { th.LoginBasic() // Should work as a regular user. - _, _, err = client.AddTeamMembers(team.Id, userList) + _, _, err = client.AddTeamMembers(context.Background(), team.Id, userList) require.NoError(t, err) // Set a team to group-constrained @@ -2601,11 +2601,11 @@ func TestAddTeamMembers(t *testing.T) { require.Nil(t, appErr) // User is not in associated groups so shouldn't be allowed - _, _, err = client.AddTeamMembers(team.Id, userList) + _, _, err = client.AddTeamMembers(context.Background(), team.Id, userList) CheckErrorID(t, err, "api.team.add_members.user_denied") // Ensure that a group synced team can still add bots - _, _, err = client.AddTeamMembers(team.Id, []string{bot.UserId}) + _, _, err = client.AddTeamMembers(context.Background(), team.Id, []string{bot.UserId}) require.NoError(t, err) // Associate group to team @@ -2620,7 +2620,7 @@ func TestAddTeamMembers(t *testing.T) { _, appErr = th.App.UpsertGroupMember(th.Group.Id, userList[0]) require.Nil(t, appErr) - _, _, err = client.AddTeamMembers(team.Id, userList) + _, _, err = client.AddTeamMembers(context.Background(), team.Id, userList) require.NoError(t, err) } @@ -2635,37 +2635,37 @@ func TestRemoveTeamMember(t *testing.T) { bot := th.CreateBotWithSystemAdminClient() th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, err := client.RemoveTeamMember(th.BasicTeam.Id, th.BasicUser.Id) + _, err := client.RemoveTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id) require.NoError(t, err) - _, _, err = th.SystemAdminClient.AddTeamMember(th.BasicTeam.Id, th.BasicUser.Id) + _, _, err = th.SystemAdminClient.AddTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id) require.NoError(t, err) }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - resp, err := client.RemoveTeamMember(th.BasicTeam.Id, "junk") + resp, err := client.RemoveTeamMember(context.Background(), th.BasicTeam.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.RemoveTeamMember("junk", th.BasicUser2.Id) + resp, err = client.RemoveTeamMember(context.Background(), "junk", th.BasicUser2.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) }) - resp, err := client.RemoveTeamMember(th.BasicTeam.Id, th.BasicUser2.Id) + resp, err := client.RemoveTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser2.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - resp, err = client.RemoveTeamMember(model.NewId(), th.BasicUser.Id) + resp, err = client.RemoveTeamMember(context.Background(), model.NewId(), th.BasicUser.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) }) - _, _, err = th.SystemAdminClient.AddTeamMember(th.BasicTeam.Id, th.SystemAdminUser.Id) + _, _, err = th.SystemAdminClient.AddTeamMember(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id) require.NoError(t, err) - _, _, err = th.SystemAdminClient.AddTeamMember(th.BasicTeam.Id, bot.UserId) + _, _, err = th.SystemAdminClient.AddTeamMember(context.Background(), th.BasicTeam.Id, bot.UserId) require.NoError(t, err) // If the team is group-constrained the user cannot be removed @@ -2673,21 +2673,21 @@ func TestRemoveTeamMember(t *testing.T) { _, appErr := th.App.UpdateTeam(th.BasicTeam) require.Nil(t, appErr) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err2 := client.RemoveTeamMember(th.BasicTeam.Id, th.BasicUser.Id) + _, err2 := client.RemoveTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id) CheckErrorID(t, err2, "api.team.remove_member.group_constrained.app_error") }) // Can remove a bot even if team is group-constrained th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err2 := client.RemoveTeamMember(th.BasicTeam.Id, bot.UserId) + _, err2 := client.RemoveTeamMember(context.Background(), th.BasicTeam.Id, bot.UserId) require.NoError(t, err2) - _, _, err2 = client.AddTeamMember(th.BasicTeam.Id, bot.UserId) + _, _, err2 = client.AddTeamMember(context.Background(), th.BasicTeam.Id, bot.UserId) require.NoError(t, err2) }) // Can remove self even if team is group-constrained - _, err = th.SystemAdminClient.RemoveTeamMember(th.BasicTeam.Id, th.SystemAdminUser.Id) + _, err = th.SystemAdminClient.RemoveTeamMember(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id) require.NoError(t, err) } @@ -2715,7 +2715,7 @@ func TestRemoveTeamMemberEvents(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { // remove second user from basic team - _, err := client.RemoveTeamMember(th.BasicTeam.Id, th.BasicUser2.Id) + _, err := client.RemoveTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser2.Id) require.NoError(t, err) assertExpectedWebsocketEvent(t, WebSocketClient, model.WebsocketEventLeaveTeam, func(event *model.WebSocketEvent) { @@ -2742,7 +2742,7 @@ func TestGetTeamStats(t *testing.T) { client := th.Client team := th.BasicTeam - rstats, _, err := client.GetTeamStats(team.Id, "") + rstats, _, err := client.GetTeamStats(context.Background(), team.Id, "") require.NoError(t, err) require.Equal(t, rstats.TeamId, team.Id, "wrong team id") @@ -2751,21 +2751,21 @@ func TestGetTeamStats(t *testing.T) { require.Equal(t, rstats.ActiveMemberCount, int64(3), "wrong count") - _, resp, err := client.GetTeamStats("junk", "") + _, resp, err := client.GetTeamStats(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamStats(model.NewId(), "") + _, resp, err = client.GetTeamStats(context.Background(), model.NewId(), "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetTeamStats(team.Id, "") + _, _, err = th.SystemAdminClient.GetTeamStats(context.Background(), team.Id, "") require.NoError(t, err) // deactivate BasicUser2 th.UpdateActiveUser(th.BasicUser2, false) - rstats, _, err = th.SystemAdminClient.GetTeamStats(team.Id, "") + rstats, _, err = th.SystemAdminClient.GetTeamStats(context.Background(), team.Id, "") require.NoError(t, err) require.Equal(t, rstats.TotalMemberCount, int64(3), "wrong count") @@ -2774,13 +2774,13 @@ func TestGetTeamStats(t *testing.T) { // login with different user and test if forbidden user := th.CreateUser() - client.Login(user.Email, user.Password) - _, resp, err = client.GetTeamStats(th.BasicTeam.Id, "") + client.Login(context.Background(), user.Email, user.Password) + _, resp, err = client.GetTeamStats(context.Background(), th.BasicTeam.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetTeamStats(th.BasicTeam.Id, "") + client.Logout(context.Background()) + _, resp, err = client.GetTeamStats(context.Background(), th.BasicTeam.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2795,40 +2795,40 @@ func TestUpdateTeamMemberRoles(t *testing.T) { const TeamAdmin = "team_user team_admin" // user 1 tries to promote user 2 - resp, err := client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser2.Id, TeamAdmin) + resp, err := client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser2.Id, TeamAdmin) require.Error(t, err) CheckForbiddenStatus(t, resp) // user 1 tries to promote himself - resp, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser.Id, TeamAdmin) + resp, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, TeamAdmin) require.Error(t, err) CheckForbiddenStatus(t, resp) // user 1 tries to demote someone - resp, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.SystemAdminUser.Id, TeamMember) + resp, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id, TeamMember) require.Error(t, err) CheckForbiddenStatus(t, resp) // system admin promotes user 1 - _, err = SystemAdminClient.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser.Id, TeamAdmin) + _, err = SystemAdminClient.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, TeamAdmin) require.NoError(t, err) // user 1 (team admin) promotes user 2 - _, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser2.Id, TeamAdmin) + _, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser2.Id, TeamAdmin) require.NoError(t, err) // user 1 (team admin) demotes user 2 (team admin) - _, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser2.Id, TeamMember) + _, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser2.Id, TeamMember) require.NoError(t, err) // user 1 (team admin) tries to demote system admin (not member of a team) - resp, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.SystemAdminUser.Id, TeamMember) + resp, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id, TeamMember) require.Error(t, err) CheckNotFoundStatus(t, resp) // user 1 (team admin) demotes system admin (member of a team) th.LinkUserToTeam(th.SystemAdminUser, th.BasicTeam) - _, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.SystemAdminUser.Id, TeamMember) + _, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id, TeamMember) require.NoError(t, err) // Note from API v3 // Note to anyone who thinks this (above) test is wrong: @@ -2837,30 +2837,30 @@ func TestUpdateTeamMemberRoles(t *testing.T) { // System admins should be able to manipulate permission no matter what their team level permissions are. // system admin promotes user 2 - _, err = SystemAdminClient.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser2.Id, TeamAdmin) + _, err = SystemAdminClient.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser2.Id, TeamAdmin) require.NoError(t, err) // system admin demotes user 2 (team admin) - _, err = SystemAdminClient.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser2.Id, TeamMember) + _, err = SystemAdminClient.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser2.Id, TeamMember) require.NoError(t, err) // user 1 (team admin) tries to promote himself to a random team - resp, err = client.UpdateTeamMemberRoles(model.NewId(), th.BasicUser.Id, TeamAdmin) + resp, err = client.UpdateTeamMemberRoles(context.Background(), model.NewId(), th.BasicUser.Id, TeamAdmin) require.Error(t, err) CheckForbiddenStatus(t, resp) // user 1 (team admin) tries to promote a random user - resp, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, model.NewId(), TeamAdmin) + resp, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, model.NewId(), TeamAdmin) require.Error(t, err) CheckNotFoundStatus(t, resp) // user 1 (team admin) tries to promote invalid team permission - resp, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser.Id, "junk") + resp, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) // user 1 (team admin) demotes himself - _, err = client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser.Id, TeamMember) + _, err = client.UpdateTeamMemberRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, TeamMember) require.NoError(t, err) } @@ -2875,10 +2875,10 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) { SchemeUser: false, SchemeGuest: false, } - _, err := SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, th.BasicUser.Id, s1) + _, err := SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s1) require.NoError(t, err) - tm1, _, err := SystemAdminClient.GetTeamMember(th.BasicTeam.Id, th.BasicUser.Id, "") + tm1, _, err := SystemAdminClient.GetTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, false, tm1.SchemeGuest) assert.Equal(t, false, tm1.SchemeUser) @@ -2889,10 +2889,10 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) { SchemeUser: true, SchemeGuest: false, } - _, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, th.BasicUser.Id, s2) + _, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s2) require.NoError(t, err) - tm2, _, err := SystemAdminClient.GetTeamMember(th.BasicTeam.Id, th.BasicUser.Id, "") + tm2, _, err := SystemAdminClient.GetTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, false, tm2.SchemeGuest) assert.Equal(t, true, tm2.SchemeUser) @@ -2903,10 +2903,10 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) { SchemeUser: false, SchemeGuest: false, } - _, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, th.BasicUser.Id, s3) + _, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s3) require.NoError(t, err) - tm3, _, err := SystemAdminClient.GetTeamMember(th.BasicTeam.Id, th.BasicUser.Id, "") + tm3, _, err := SystemAdminClient.GetTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, false, tm3.SchemeGuest) assert.Equal(t, false, tm3.SchemeUser) @@ -2917,10 +2917,10 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) { SchemeUser: true, SchemeGuest: false, } - _, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, th.BasicUser.Id, s4) + _, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s4) require.NoError(t, err) - tm4, _, err := SystemAdminClient.GetTeamMember(th.BasicTeam.Id, th.BasicUser.Id, "") + tm4, _, err := SystemAdminClient.GetTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, false, tm4.SchemeGuest) assert.Equal(t, true, tm4.SchemeUser) @@ -2931,10 +2931,10 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) { SchemeUser: false, SchemeGuest: true, } - _, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, th.BasicUser.Id, s5) + _, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s5) require.NoError(t, err) - tm5, _, err := SystemAdminClient.GetTeamMember(th.BasicTeam.Id, th.BasicUser.Id, "") + tm5, _, err := SystemAdminClient.GetTeamMember(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, true, tm5.SchemeGuest) assert.Equal(t, false, tm5.SchemeUser) @@ -2945,33 +2945,33 @@ func TestUpdateTeamMemberSchemeRoles(t *testing.T) { SchemeUser: true, SchemeGuest: true, } - resp, err := SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, th.BasicUser.Id, s6) + resp, err := SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s6) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(model.NewId(), th.BasicUser.Id, s4) + resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), model.NewId(), th.BasicUser.Id, s4) require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, model.NewId(), s4) + resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, model.NewId(), s4) require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles("ASDF", th.BasicUser.Id, s4) + resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), "ASDF", th.BasicUser.Id, s4) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, "ASDF", s4) + resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, "ASDF", s4) require.Error(t, err) CheckBadRequestStatus(t, resp) th.LoginBasic2() - resp, err = th.Client.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, th.BasicUser.Id, s4) + resp, err = th.Client.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.BasicUser.Id, s4) require.Error(t, err) CheckForbiddenStatus(t, resp) - SystemAdminClient.Logout() - resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(th.BasicTeam.Id, th.SystemAdminUser.Id, s4) + SystemAdminClient.Logout(context.Background()) + resp, err = SystemAdminClient.UpdateTeamMemberSchemeRoles(context.Background(), th.BasicTeam.Id, th.SystemAdminUser.Id, s4) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2982,26 +2982,26 @@ func TestGetMyTeamsUnread(t *testing.T) { client := th.Client user := th.BasicUser - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) - teams, _, err := client.GetTeamsUnreadForUser(user.Id, "", true) + teams, _, err := client.GetTeamsUnreadForUser(context.Background(), user.Id, "", true) require.NoError(t, err) require.NotEqual(t, len(teams), 0, "should have results") - teams, _, err = client.GetTeamsUnreadForUser(user.Id, th.BasicTeam.Id, true) + teams, _, err = client.GetTeamsUnreadForUser(context.Background(), user.Id, th.BasicTeam.Id, true) require.NoError(t, err) require.Empty(t, teams, "should not have results") - _, resp, err := client.GetTeamsUnreadForUser("fail", "", true) + _, resp, err := client.GetTeamsUnreadForUser(context.Background(), "fail", "", true) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetTeamsUnreadForUser(model.NewId(), "", true) + _, resp, err = client.GetTeamsUnreadForUser(context.Background(), model.NewId(), "", true) require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetTeamsUnreadForUser(user.Id, "", true) + client.Logout(context.Background()) + _, resp, err = client.GetTeamsUnreadForUser(context.Background(), user.Id, "", true) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -3038,28 +3038,28 @@ func TestTeamExists(t *testing.T) { t.Run("Logged user with permissions and valid public team", func(t *testing.T) { th.LoginBasic() - exists, _, err := client.TeamExists(public_not_member_team.Name, "") + exists, _, err := client.TeamExists(context.Background(), public_not_member_team.Name, "") require.NoError(t, err) assert.True(t, exists, "team should exist") }) t.Run("Logged user with permissions and valid private team", func(t *testing.T) { th.LoginBasic() - exists, _, err := client.TeamExists(private_not_member_team.Name, "") + exists, _, err := client.TeamExists(context.Background(), private_not_member_team.Name, "") require.NoError(t, err) assert.True(t, exists, "team should exist") }) t.Run("Logged user and invalid team", func(t *testing.T) { th.LoginBasic() - exists, _, err := client.TeamExists("testingteam", "") + exists, _, err := client.TeamExists(context.Background(), "testingteam", "") require.NoError(t, err) assert.False(t, exists, "team should not exist") }) t.Run("Logged out user", func(t *testing.T) { - client.Logout() - _, resp, err := client.TeamExists(public_not_member_team.Name, "") + client.Logout(context.Background()) + _, resp, err := client.TeamExists(context.Background(), public_not_member_team.Name, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -3068,7 +3068,7 @@ func TestTeamExists(t *testing.T) { th.LoginBasic() th.RemovePermissionFromRole(model.PermissionListPublicTeams.Id, model.SystemUserRoleId) - exists, _, err := client.TeamExists(public_member_team.Name, "") + exists, _, err := client.TeamExists(context.Background(), public_member_team.Name, "") require.NoError(t, err) assert.True(t, exists, "team should be visible") }) @@ -3077,7 +3077,7 @@ func TestTeamExists(t *testing.T) { th.LoginBasic() th.RemovePermissionFromRole(model.PermissionListPublicTeams.Id, model.SystemUserRoleId) - exists, _, err := client.TeamExists(public_not_member_team.Name, "") + exists, _, err := client.TeamExists(context.Background(), public_not_member_team.Name, "") require.NoError(t, err) assert.False(t, exists, "team should not be visible") }) @@ -3086,7 +3086,7 @@ func TestTeamExists(t *testing.T) { th.LoginBasic() th.RemovePermissionFromRole(model.PermissionListPrivateTeams.Id, model.SystemUserRoleId) - exists, _, err := client.TeamExists(private_member_team.Name, "") + exists, _, err := client.TeamExists(context.Background(), private_member_team.Name, "") require.NoError(t, err) assert.True(t, exists, "team should be visible") }) @@ -3095,7 +3095,7 @@ func TestTeamExists(t *testing.T) { th.LoginBasic() th.RemovePermissionFromRole(model.PermissionListPrivateTeams.Id, model.SystemUserRoleId) - exists, _, err := client.TeamExists(private_not_member_team.Name, "") + exists, _, err := client.TeamExists(context.Background(), private_not_member_team.Name, "") require.NoError(t, err) assert.False(t, exists, "team should not be visible") }) @@ -3109,11 +3109,11 @@ func TestImportTeam(t *testing.T) { data, err := testutils.ReadTestFile("Fake_Team_Import.zip") require.False(t, err != nil && len(data) == 0, "Error while reading the test file.") - _, resp, err := th.SystemAdminClient.ImportTeam(data, binary.Size(data), "XYZ", "Fake_Team_Import.zip", th.BasicTeam.Id) + _, resp, err := th.SystemAdminClient.ImportTeam(context.Background(), data, binary.Size(data), "XYZ", "Fake_Team_Import.zip", th.BasicTeam.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = th.SystemAdminClient.ImportTeam(data, binary.Size(data), "", "Fake_Team_Import.zip", th.BasicTeam.Id) + _, resp, err = th.SystemAdminClient.ImportTeam(context.Background(), data, binary.Size(data), "", "Fake_Team_Import.zip", th.BasicTeam.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) }, "Import from unknown and source") @@ -3126,7 +3126,7 @@ func TestImportTeam(t *testing.T) { require.False(t, err != nil && len(data) == 0, "Error while reading the test file.") // Import the channels/users/posts - fileResp, _, err := th.SystemAdminClient.ImportTeam(data, binary.Size(data), "slack", "Fake_Team_Import.zip", th.BasicTeam.Id) + fileResp, _, err := th.SystemAdminClient.ImportTeam(context.Background(), data, binary.Size(data), "slack", "Fake_Team_Import.zip", th.BasicTeam.Id) require.NoError(t, err) fileData, err := base64.StdEncoding.DecodeString(fileResp["results"]) @@ -3136,24 +3136,24 @@ func TestImportTeam(t *testing.T) { require.Truef(t, strings.Contains(fileReturned, "darth.vader@stardeath.com"), "failed to report the user was imported, fileReturned: %s", fileReturned) // Checking the imported users - importedUser, _, err := th.SystemAdminClient.GetUserByUsername("bot_test", "") + importedUser, _, err := th.SystemAdminClient.GetUserByUsername(context.Background(), "bot_test", "") require.NoError(t, err) require.Equal(t, importedUser.Username, "bot_test", "username should match with the imported user") - importedUser, _, err = th.SystemAdminClient.GetUserByUsername("lordvader", "") + importedUser, _, err = th.SystemAdminClient.GetUserByUsername(context.Background(), "lordvader", "") require.NoError(t, err) require.Equal(t, importedUser.Username, "lordvader", "username should match with the imported user") // Checking the imported Channels - importedChannel, _, err := th.SystemAdminClient.GetChannelByName("testchannel", th.BasicTeam.Id, "") + importedChannel, _, err := th.SystemAdminClient.GetChannelByName(context.Background(), "testchannel", th.BasicTeam.Id, "") require.NoError(t, err) require.Equal(t, importedChannel.Name, "testchannel", "names did not match expected: testchannel") - importedChannel, _, err = th.SystemAdminClient.GetChannelByName("general", th.BasicTeam.Id, "") + importedChannel, _, err = th.SystemAdminClient.GetChannelByName(context.Background(), "general", th.BasicTeam.Id, "") require.NoError(t, err) require.Equal(t, importedChannel.Name, "general", "names did not match expected: general") - posts, _, err := th.SystemAdminClient.GetPostsForChannel(importedChannel.Id, 0, 60, "", false, false) + posts, _, err := th.SystemAdminClient.GetPostsForChannel(context.Background(), importedChannel.Id, 0, 60, "", false, false) require.NoError(t, err) require.Equal(t, posts.Posts[posts.Order[3]].Message, "This is a test post to test the import process", "missing posts in the import process") }) @@ -3167,14 +3167,14 @@ func TestImportTeam(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("cloud")) // Import the channels/users/posts - _, resp, err := th.SystemAdminClient.ImportTeam(data, binary.Size(data), "slack", "Fake_Team_Import.zip", th.BasicTeam.Id) + _, resp, err := th.SystemAdminClient.ImportTeam(context.Background(), data, binary.Size(data), "slack", "Fake_Team_Import.zip", th.BasicTeam.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.App.Srv().SetLicense(nil) }) t.Run("MissingFile", func(t *testing.T) { - _, resp, err := th.SystemAdminClient.ImportTeam(nil, 4343, "slack", "Fake_Team_Import.zip", th.BasicTeam.Id) + _, resp, err := th.SystemAdminClient.ImportTeam(context.Background(), nil, 4343, "slack", "Fake_Team_Import.zip", th.BasicTeam.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -3186,7 +3186,7 @@ func TestImportTeam(t *testing.T) { require.False(t, err != nil && len(data) == 0, "Error while reading the test file.") // Import the channels/users/posts - _, resp, err := th.Client.ImportTeam(data, binary.Size(data), "slack", "Fake_Team_Import.zip", th.BasicTeam.Id) + _, resp, err := th.Client.ImportTeam(context.Background(), data, binary.Size(data), "slack", "Fake_Team_Import.zip", th.BasicTeam.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -3246,7 +3246,7 @@ func TestInviteUsersToTeam(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableEmailInvitations = false }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, err := client.InviteUsersToTeam(th.BasicTeam.Id, emailList) + _, err := client.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, emailList) require.Error(t, err, "Should be disabled") }) @@ -3274,7 +3274,7 @@ func TestInviteUsersToTeam(t *testing.T) { } th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableEmailInvitations = true }) - _, err := th.SystemAdminClient.InviteUsersToTeam(th.BasicTeam.Id, emailList) + _, err := th.SystemAdminClient.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, emailList) require.NoError(t, err) nameFormat := *th.App.Config().TeamSettings.TeammateNameDisplay expectedSubject := i18n.T("api.templates.invite_subject", @@ -3286,7 +3286,7 @@ func TestInviteUsersToTeam(t *testing.T) { // Test the invite to team and channel mail.DeleteMailBox(user1) mail.DeleteMailBox(user2) - _, _, err = th.SystemAdminClient.InviteUsersToTeamAndChannelsGracefully(th.BasicTeam.Id, []string{user1, user2}, []string{th.BasicChannel.Id}, "") + _, _, err = th.SystemAdminClient.InviteUsersToTeamAndChannelsGracefully(context.Background(), th.BasicTeam.Id, []string{user1, user2}, []string{th.BasicChannel.Id}, "") require.NoError(t, err) expectedSubject = i18n.T("api.templates.invite_team_and_channel_subject", map[string]any{"SenderName": th.SystemAdminUser.GetDisplayName(nameFormat), @@ -3297,7 +3297,7 @@ func TestInviteUsersToTeam(t *testing.T) { mail.DeleteMailBox(user1) mail.DeleteMailBox(user2) - _, err = th.LocalClient.InviteUsersToTeam(th.BasicTeam.Id, emailList) + _, err = th.LocalClient.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, emailList) require.NoError(t, err) expectedSubject = i18n.T("api.templates.invite_subject", map[string]any{"SenderName": "Administrator", @@ -3308,7 +3308,7 @@ func TestInviteUsersToTeam(t *testing.T) { // Test the invite local to team and channel mail.DeleteMailBox(user1) mail.DeleteMailBox(user2) - _, _, err = th.LocalClient.InviteUsersToTeamAndChannelsGracefully(th.BasicTeam.Id, []string{user1, user2}, []string{th.BasicChannel.Id}, "") + _, _, err = th.LocalClient.InviteUsersToTeamAndChannelsGracefully(context.Background(), th.BasicTeam.Id, []string{user1, user2}, []string{th.BasicChannel.Id}, "") require.NoError(t, err) expectedSubject = i18n.T("api.templates.invite_team_and_channel_subject", map[string]any{"SenderName": "Administrator", @@ -3320,10 +3320,10 @@ func TestInviteUsersToTeam(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.RestrictCreationToDomains = "@global.com,@common.com" }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, err := client.InviteUsersToTeam(th.BasicTeam.Id, emailList) + _, err := client.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, emailList) require.Error(t, err, "Adding users with non-restricted domains was allowed") - invitesWithErrors, _, err := client.InviteUsersToTeamGracefully(th.BasicTeam.Id, emailList) + invitesWithErrors, _, err := client.InviteUsersToTeamGracefully(context.Background(), th.BasicTeam.Id, emailList) require.NoError(t, err) require.Len(t, invitesWithErrors, 2) require.NotNil(t, invitesWithErrors[0].Error) @@ -3339,16 +3339,16 @@ func TestInviteUsersToTeam(t *testing.T) { _, appErr = th.App.UpdateTeam(th.BasicTeam) require.Nilf(t, appErr, "%v, Should update the team", appErr) - _, err := client.InviteUsersToTeam(th.BasicTeam.Id, []string{"test@global.com"}) + _, err := client.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, []string{"test@global.com"}) require.Errorf(t, err, "%v, Per team restriction should take precedence over the globally allowed domains", err) - _, err = client.InviteUsersToTeam(th.BasicTeam.Id, []string{"test@common.com"}) + _, err = client.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, []string{"test@common.com"}) require.NoErrorf(t, err, "%v, Failed to invite user which was common between team and global domain restriction", err) - _, err = client.InviteUsersToTeam(th.BasicTeam.Id, []string{"test@invalid.com"}) + _, err = client.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, []string{"test@invalid.com"}) require.Errorf(t, err, "%v, Should not invite user", err) - invitesWithErrors, _, err := client.InviteUsersToTeamGracefully(th.BasicTeam.Id, []string{"test@invalid.com", "test@common.com"}) + invitesWithErrors, _, err := client.InviteUsersToTeamGracefully(context.Background(), th.BasicTeam.Id, []string{"test@invalid.com", "test@common.com"}) require.NoError(t, err) require.Len(t, invitesWithErrors, 2) require.NotNil(t, invitesWithErrors[0].Error) @@ -3364,12 +3364,12 @@ func TestInviteUsersToTeam(t *testing.T) { for i := 0; i < 22; i++ { emailList[i] = "test-" + strconv.Itoa(i) + "@common.com" } - resp, err := client.InviteUsersToTeam(th.BasicTeam.Id, emailList) + resp, err := client.InviteUsersToTeam(context.Background(), th.BasicTeam.Id, emailList) require.Error(t, err) CheckRequestEntityTooLargeStatus(t, resp) CheckErrorID(t, err, "app.email.rate_limit_exceeded.app_error") - _, resp, err = client.InviteUsersToTeamGracefully(th.BasicTeam.Id, emailList) + _, resp, err = client.InviteUsersToTeamGracefully(context.Background(), th.BasicTeam.Id, emailList) require.Error(t, err) CheckRequestEntityTooLargeStatus(t, resp) CheckErrorID(t, err, "app.email.rate_limit_exceeded.app_error") @@ -3405,29 +3405,29 @@ func TestInviteGuestsToTeam(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("")) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.GuestAccountsSettings.Enable = false }) - _, err := th.SystemAdminClient.InviteGuestsToTeam(th.BasicTeam.Id, emailList, []string{th.BasicChannel.Id}, "test-message") + _, err := th.SystemAdminClient.InviteGuestsToTeam(context.Background(), th.BasicTeam.Id, emailList, []string{th.BasicChannel.Id}, "test-message") assert.Error(t, err, "Should be disabled") th.App.UpdateConfig(func(cfg *model.Config) { *cfg.GuestAccountsSettings.Enable = true }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableEmailInvitations = false }) - _, err = th.SystemAdminClient.InviteGuestsToTeam(th.BasicTeam.Id, emailList, []string{th.BasicChannel.Id}, "test-message") + _, err = th.SystemAdminClient.InviteGuestsToTeam(context.Background(), th.BasicTeam.Id, emailList, []string{th.BasicChannel.Id}, "test-message") require.Error(t, err, "Should be disabled") th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableEmailInvitations = true }) th.App.Srv().SetLicense(nil) - _, err = th.SystemAdminClient.InviteGuestsToTeam(th.BasicTeam.Id, emailList, []string{th.BasicChannel.Id}, "test-message") + _, err = th.SystemAdminClient.InviteGuestsToTeam(context.Background(), th.BasicTeam.Id, emailList, []string{th.BasicChannel.Id}, "test-message") require.Error(t, err, "Should be disabled") th.App.Srv().SetLicense(model.NewTestLicense("")) defer th.App.Srv().SetLicense(nil) - _, err = th.SystemAdminClient.InviteGuestsToTeam(th.BasicTeam.Id, emailList, []string{th.BasicChannel.Id}, "test-message") + _, err = th.SystemAdminClient.InviteGuestsToTeam(context.Background(), th.BasicTeam.Id, emailList, []string{th.BasicChannel.Id}, "test-message") require.NoError(t, err) t.Run("invalid data in request body", func(t *testing.T) { - res, err := th.SystemAdminClient.DoAPIPost("/teams/"+th.BasicTeam.Id+"/invite-guests/email", "bad data") + res, err := th.SystemAdminClient.DoAPIPost(context.Background(), "/teams/"+th.BasicTeam.Id+"/invite-guests/email", "bad data") require.Error(t, err) CheckErrorID(t, err, "api.team.invite_guests_to_channels.invalid_body.app_error") require.Equal(t, http.StatusBadRequest, res.StatusCode) @@ -3538,7 +3538,7 @@ func TestInviteGuest(t *testing.T) { buf, err := json.Marshal(guestsInvite) require.NoError(t, err) - res, err := th.SystemAdminClient.DoAPIPost("/teams/"+th.BasicTeam.Id+"/invite-guests/email", string(buf)) + res, err := th.SystemAdminClient.DoAPIPost(context.Background(), "/teams/"+th.BasicTeam.Id+"/invite-guests/email", string(buf)) require.Equal(t, http.StatusForbidden, res.StatusCode) require.True(t, strings.Contains(err.Error(), "Guest accounts are disabled")) @@ -3556,7 +3556,7 @@ func TestInviteGuest(t *testing.T) { buf, err := json.Marshal(guestsInvite) require.NoError(t, err) - res, err := th.SystemAdminClient.DoAPIPost("/teams/"+th.BasicTeam.Id+"/invite-guests/email", string(buf)) + res, err := th.SystemAdminClient.DoAPIPost(context.Background(), "/teams/"+th.BasicTeam.Id+"/invite-guests/email", string(buf)) require.Equal(t, http.StatusOK, res.StatusCode) require.NoError(t, err) @@ -3569,7 +3569,7 @@ func TestGetTeamInviteInfo(t *testing.T) { client := th.Client team := th.BasicTeam - team, _, err := client.GetTeamInviteInfo(team.InviteId) + team, _, err := client.GetTeamInviteInfo(context.Background(), team.InviteId) require.NoError(t, err) require.NotEmpty(t, team.DisplayName, "should not be empty") @@ -3577,13 +3577,13 @@ func TestGetTeamInviteInfo(t *testing.T) { require.Empty(t, team.Email, "should be empty") team.InviteId = "12345678901234567890123456789012" - team, _, err = th.SystemAdminClient.UpdateTeam(team) + team, _, err = th.SystemAdminClient.UpdateTeam(context.Background(), team) require.NoError(t, err) - _, _, err = client.GetTeamInviteInfo(team.InviteId) + _, _, err = client.GetTeamInviteInfo(context.Background(), team.InviteId) require.NoError(t, err) - _, resp, err := client.GetTeamInviteInfo("junk") + _, resp, err := client.GetTeamInviteInfo(context.Background(), "junk") require.Error(t, err) CheckNotFoundStatus(t, resp) } @@ -3599,16 +3599,16 @@ func TestSetTeamIcon(t *testing.T) { th.LoginTeamAdmin() - _, err = client.SetTeamIcon(team.Id, data) + _, err = client.SetTeamIcon(context.Background(), team.Id, data) require.NoError(t, err) - resp, err := client.SetTeamIcon(model.NewId(), data) + resp, err := client.SetTeamIcon(context.Background(), model.NewId(), data) require.Error(t, err) CheckForbiddenStatus(t, resp) th.LoginBasic() - resp, err = client.SetTeamIcon(team.Id, data) + resp, err = client.SetTeamIcon(context.Background(), team.Id, data) require.Error(t, err) if resp.StatusCode == http.StatusForbidden { CheckForbiddenStatus(t, resp) @@ -3618,9 +3618,9 @@ func TestSetTeamIcon(t *testing.T) { require.Fail(t, "Should have failed either forbidden or unauthorized") } - client.Logout() + client.Logout(context.Background()) - resp, err = client.SetTeamIcon(team.Id, data) + resp, err = client.SetTeamIcon(context.Background(), team.Id, data) require.Error(t, err) if resp.StatusCode == http.StatusForbidden { CheckForbiddenStatus(t, resp) @@ -3633,7 +3633,7 @@ func TestSetTeamIcon(t *testing.T) { teamBefore, appErr := th.App.GetTeam(team.Id) require.Nil(t, appErr) - _, err = th.SystemAdminClient.SetTeamIcon(team.Id, data) + _, err = th.SystemAdminClient.SetTeamIcon(context.Background(), team.Id, data) require.NoError(t, err) teamAfter, appErr := th.App.GetTeam(team.Id) @@ -3652,13 +3652,13 @@ func TestGetTeamIcon(t *testing.T) { team := th.BasicTeam // should always fail because no initial image and no auto creation - _, resp, err := client.GetTeamIcon(team.Id, "") + _, resp, err := client.GetTeamIcon(context.Background(), team.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) - client.Logout() + client.Logout(context.Background()) - _, resp, err = client.GetTeamIcon(team.Id, "") + _, resp, err = client.GetTeamIcon(context.Background(), team.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -3671,29 +3671,29 @@ func TestRemoveTeamIcon(t *testing.T) { th.LoginTeamAdmin() data, _ := testutils.ReadTestFile("test.png") - client.SetTeamIcon(team.Id, data) + client.SetTeamIcon(context.Background(), team.Id, data) - _, err := client.RemoveTeamIcon(team.Id) + _, err := client.RemoveTeamIcon(context.Background(), team.Id) require.NoError(t, err) teamAfter, _ := th.App.GetTeam(team.Id) require.Equal(t, teamAfter.LastTeamIconUpdate, int64(0), "should update LastTeamIconUpdate to 0") - client.SetTeamIcon(team.Id, data) + client.SetTeamIcon(context.Background(), team.Id, data) - _, err = th.SystemAdminClient.RemoveTeamIcon(team.Id) + _, err = th.SystemAdminClient.RemoveTeamIcon(context.Background(), team.Id) require.NoError(t, err) teamAfter, _ = th.App.GetTeam(team.Id) require.Equal(t, teamAfter.LastTeamIconUpdate, int64(0), "should update LastTeamIconUpdate to 0") - client.SetTeamIcon(team.Id, data) - client.Logout() + client.SetTeamIcon(context.Background(), team.Id, data) + client.Logout(context.Background()) - resp, err := client.RemoveTeamIcon(team.Id) + resp, err := client.RemoveTeamIcon(context.Background(), team.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic() - resp, err = client.RemoveTeamIcon(team.Id) + resp, err = client.RemoveTeamIcon(context.Background(), team.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -3716,7 +3716,7 @@ func TestUpdateTeamScheme(t *testing.T) { Email: "success+" + model.NewId() + "@simulator.amazonses.com", Type: model.TeamOpen, } - team, _, _ = th.SystemAdminClient.CreateTeam(team) + team, _, _ = th.SystemAdminClient.CreateTeam(context.Background(), team) teamScheme := &model.Scheme{ DisplayName: "DisplayName", @@ -3724,54 +3724,54 @@ func TestUpdateTeamScheme(t *testing.T) { Description: "Some description", Scope: model.SchemeScopeTeam, } - teamScheme, _, _ = th.SystemAdminClient.CreateScheme(teamScheme) + teamScheme, _, _ = th.SystemAdminClient.CreateScheme(context.Background(), teamScheme) channelScheme := &model.Scheme{ DisplayName: "DisplayName", Name: model.NewId(), Description: "Some description", Scope: model.SchemeScopeChannel, } - channelScheme, _, _ = th.SystemAdminClient.CreateScheme(channelScheme) + channelScheme, _, _ = th.SystemAdminClient.CreateScheme(context.Background(), channelScheme) // Test the setup/base case. - _, err := th.SystemAdminClient.UpdateTeamScheme(team.Id, teamScheme.Id) + _, err := th.SystemAdminClient.UpdateTeamScheme(context.Background(), team.Id, teamScheme.Id) require.NoError(t, err) // Test the return to default scheme - _, err = th.SystemAdminClient.UpdateTeamScheme(team.Id, "") + _, err = th.SystemAdminClient.UpdateTeamScheme(context.Background(), team.Id, "") require.NoError(t, err) // Test various invalid team and scheme id combinations. - resp, err := th.SystemAdminClient.UpdateTeamScheme(team.Id, "x") + resp, err := th.SystemAdminClient.UpdateTeamScheme(context.Background(), team.Id, "x") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.SystemAdminClient.UpdateTeamScheme("x", teamScheme.Id) + resp, err = th.SystemAdminClient.UpdateTeamScheme(context.Background(), "x", teamScheme.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.SystemAdminClient.UpdateTeamScheme("x", "x") + resp, err = th.SystemAdminClient.UpdateTeamScheme(context.Background(), "x", "x") require.Error(t, err) CheckBadRequestStatus(t, resp) // Test that permissions are required. - resp, err = th.Client.UpdateTeamScheme(team.Id, teamScheme.Id) + resp, err = th.Client.UpdateTeamScheme(context.Background(), team.Id, teamScheme.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) // Test that a license is required. th.App.Srv().SetLicense(nil) - resp, err = th.SystemAdminClient.UpdateTeamScheme(team.Id, teamScheme.Id) + resp, err = th.SystemAdminClient.UpdateTeamScheme(context.Background(), team.Id, teamScheme.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) th.App.Srv().SetLicense(model.NewTestLicense("")) // Test an invalid scheme scope. - resp, err = th.SystemAdminClient.UpdateTeamScheme(team.Id, channelScheme.Id) + resp, err = th.SystemAdminClient.UpdateTeamScheme(context.Background(), team.Id, channelScheme.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) // Test that an unauthenticated user gets rejected. - th.SystemAdminClient.Logout() - resp, err = th.SystemAdminClient.UpdateTeamScheme(team.Id, teamScheme.Id) + th.SystemAdminClient.Logout(context.Background()) + resp, err = th.SystemAdminClient.UpdateTeamScheme(context.Background(), team.Id, teamScheme.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -3802,7 +3802,7 @@ func TestTeamMembersMinusGroupMembers(t *testing.T) { require.Nil(t, appErr) // No permissions - _, _, _, err := th.Client.TeamMembersMinusGroupMembers(team.Id, []string{group1.Id, group2.Id}, 0, 100, "") + _, _, _, err := th.Client.TeamMembersMinusGroupMembers(context.Background(), team.Id, []string{group1.Id, group2.Id}, 0, 100, "") CheckErrorID(t, err, "api.context.permissions.app_error") testCases := map[string]struct { @@ -3858,7 +3858,7 @@ func TestTeamMembersMinusGroupMembers(t *testing.T) { for name, tc := range testCases { t.Run(name, func(t *testing.T) { - uwg, count, _, err := th.SystemAdminClient.TeamMembersMinusGroupMembers(team.Id, tc.groupIDs, tc.page, tc.perPage, "") + uwg, count, _, err := th.SystemAdminClient.TeamMembersMinusGroupMembers(context.Background(), team.Id, tc.groupIDs, tc.page, tc.perPage, "") require.NoError(t, err) require.Len(t, uwg, tc.length) require.Equal(t, tc.count, int(count)) @@ -3874,7 +3874,7 @@ func TestInvalidateAllEmailInvites(t *testing.T) { defer th.TearDown() t.Run("Forbidden when request performed by system user", func(t *testing.T) { - res, err := th.Client.InvalidateEmailInvites() + res, err := th.Client.InvalidateEmailInvites(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, res) }) @@ -3882,13 +3882,13 @@ func TestInvalidateAllEmailInvites(t *testing.T) { t.Run("OK when request performed by system user with requisite system permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionInvalidateEmailInvite.Id, model.SystemUserRoleId) defer th.RemovePermissionFromRole(model.PermissionInvalidateEmailInvite.Id, model.SystemUserRoleId) - res, err := th.Client.InvalidateEmailInvites() + res, err := th.Client.InvalidateEmailInvites(context.Background()) require.NoError(t, err) CheckOKStatus(t, res) }) t.Run("OK when request performed by system admin", func(t *testing.T) { - res, err := th.SystemAdminClient.InvalidateEmailInvites() + res, err := th.SystemAdminClient.InvalidateEmailInvites(context.Background()) require.NoError(t, err) CheckOKStatus(t, res) }) diff --git a/server/channels/api4/terms_of_service_test.go b/server/channels/api4/terms_of_service_test.go index 7aea400d25..5393cd3dca 100644 --- a/server/channels/api4/terms_of_service_test.go +++ b/server/channels/api4/terms_of_service_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/assert" @@ -20,7 +21,7 @@ func TestGetTermsOfService(t *testing.T) { _, appErr := th.App.CreateTermsOfService("abc", th.BasicUser.Id) require.Nil(t, appErr) - termsOfService, _, err := client.GetTermsOfService("") + termsOfService, _, err := client.GetTermsOfService(context.Background(), "") require.NoError(t, err) assert.NotNil(t, termsOfService) @@ -34,7 +35,7 @@ func TestCreateTermsOfService(t *testing.T) { defer th.TearDown() client := th.Client - _, _, err := client.CreateTermsOfService("terms of service new", th.BasicUser.Id) + _, _, err := client.CreateTermsOfService(context.Background(), "terms of service new", th.BasicUser.Id) CheckErrorID(t, err, "api.context.permissions.app_error") } @@ -43,13 +44,13 @@ func TestCreateTermsOfServiceAdminUser(t *testing.T) { defer th.TearDown() client := th.SystemAdminClient - termsOfService, _, err := client.CreateTermsOfService("terms of service new", th.SystemAdminUser.Id) + termsOfService, _, err := client.CreateTermsOfService(context.Background(), "terms of service new", th.SystemAdminUser.Id) CheckErrorID(t, err, "api.create_terms_of_service.custom_terms_of_service_disabled.app_error") assert.Nil(t, termsOfService) th.App.Srv().SetLicense(model.NewTestLicense("EnableCustomTermsOfService")) - termsOfService, _, err = client.CreateTermsOfService("terms of service new_2", th.SystemAdminUser.Id) + termsOfService, _, err = client.CreateTermsOfService(context.Background(), "terms of service new_2", th.SystemAdminUser.Id) require.NoError(t, err) assert.NotEmpty(t, termsOfService.Id) assert.NotEmpty(t, termsOfService.CreateAt) diff --git a/server/channels/api4/upload_test.go b/server/channels/api4/upload_test.go index 074596475a..16b815b17d 100644 --- a/server/channels/api4/upload_test.go +++ b/server/channels/api4/upload_test.go @@ -5,6 +5,7 @@ package api4 import ( "bytes" + "context" "encoding/json" "io" "mime/multipart" @@ -31,7 +32,7 @@ func TestCreateUpload(t *testing.T) { t.Run("file attachments disabled", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = false }) defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = true }) - u, resp, err := th.Client.CreateUpload(us) + u, resp, err := th.Client.CreateUpload(context.Background(), us) require.Nil(t, u) CheckErrorID(t, err, "api.file.attachments.disabled.app_error") require.Equal(t, http.StatusNotImplemented, resp.StatusCode) @@ -39,7 +40,7 @@ func TestCreateUpload(t *testing.T) { t.Run("no permissions", func(t *testing.T) { us.ChannelId = th.BasicPrivateChannel2.Id - u, resp, err := th.Client.CreateUpload(us) + u, resp, err := th.Client.CreateUpload(context.Background(), us) require.Nil(t, u) CheckErrorID(t, err, "api.context.permissions.app_error") require.Equal(t, http.StatusForbidden, resp.StatusCode) @@ -50,7 +51,7 @@ func TestCreateUpload(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.MaxFileSize = us.FileSize - 1 }) defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.MaxFileSize = maxFileSize }) us.ChannelId = th.BasicChannel.Id - u, resp, err := th.Client.CreateUpload(us) + u, resp, err := th.Client.CreateUpload(context.Background(), us) require.Nil(t, u) CheckErrorID(t, err, "api.upload.create.upload_too_large.app_error") require.Equal(t, http.StatusRequestEntityTooLarge, resp.StatusCode) @@ -60,7 +61,7 @@ func TestCreateUpload(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("cloud")) defer th.App.Srv().RemoveLicense() - u, resp, err := th.SystemAdminClient.CreateUpload(&model.UploadSession{ + u, resp, err := th.SystemAdminClient.CreateUpload(context.Background(), &model.UploadSession{ ChannelId: th.BasicChannel.Id, Filename: "upload", FileSize: 8 * 1024 * 1024, @@ -73,7 +74,7 @@ func TestCreateUpload(t *testing.T) { t.Run("valid", func(t *testing.T) { us.ChannelId = th.BasicChannel.Id - u, resp, err := th.Client.CreateUpload(us) + u, resp, err := th.Client.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotEmpty(t, u) require.Equal(t, http.StatusCreated, resp.StatusCode) @@ -95,7 +96,7 @@ func TestCreateUpload(t *testing.T) { FileSize: info.Size(), Type: model.UploadTypeImport, } - u, resp, err := th.Client.CreateUpload(us) + u, resp, err := th.Client.CreateUpload(context.Background(), us) require.Nil(t, u) CheckErrorID(t, err, "api.context.permissions.app_error") require.Equal(t, http.StatusForbidden, resp.StatusCode) @@ -107,7 +108,7 @@ func TestCreateUpload(t *testing.T) { FileSize: info.Size(), Type: model.UploadTypeImport, } - u, _, err := th.SystemAdminClient.CreateUpload(us) + u, _, err := th.SystemAdminClient.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotEmpty(t, u) }) @@ -133,25 +134,25 @@ func TestGetUpload(t *testing.T) { require.NotEmpty(t, us) t.Run("upload not found", func(t *testing.T) { - u, resp, err := th.Client.GetUpload(model.NewId()) + u, resp, err := th.Client.GetUpload(context.Background(), model.NewId()) require.Nil(t, u) CheckErrorID(t, err, "app.upload.get.app_error") require.Equal(t, http.StatusNotFound, resp.StatusCode) }) t.Run("no permissions", func(t *testing.T) { - u, _, err := th.Client.GetUpload(us.Id) + u, _, err := th.Client.GetUpload(context.Background(), us.Id) require.Nil(t, u) CheckErrorID(t, err, "api.upload.get_upload.forbidden.app_error") }) t.Run("success", func(t *testing.T) { - expected, resp, err := th.Client.CreateUpload(us) + expected, resp, err := th.Client.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotEmpty(t, expected) require.Equal(t, http.StatusCreated, resp.StatusCode) - u, _, err := th.Client.GetUpload(expected.Id) + u, _, err := th.Client.GetUpload(context.Background(), expected.Id) require.NoError(t, err) require.NotEmpty(t, u) require.Equal(t, expected, u) @@ -163,14 +164,14 @@ func TestGetUploadsForUser(t *testing.T) { defer th.TearDown() t.Run("no permissions", func(t *testing.T) { - uss, _, err := th.Client.GetUploadsForUser(th.BasicUser2.Id) + uss, _, err := th.Client.GetUploadsForUser(context.Background(), th.BasicUser2.Id) require.Error(t, err) CheckErrorID(t, err, "api.user.get_uploads_for_user.forbidden.app_error") require.Nil(t, uss) }) t.Run("empty", func(t *testing.T) { - uss, _, err := th.Client.GetUploadsForUser(th.BasicUser.Id) + uss, _, err := th.Client.GetUploadsForUser(context.Background(), th.BasicUser.Id) require.NoError(t, err) require.Empty(t, uss) }) @@ -195,7 +196,7 @@ func TestGetUploadsForUser(t *testing.T) { uploads[i] = us } - uss, _, err := th.Client.GetUploadsForUser(th.BasicUser.Id) + uss, _, err := th.Client.GetUploadsForUser(context.Background(), th.BasicUser.Id) require.NoError(t, err) require.NotEmpty(t, uss) require.Len(t, uss, len(uploads)) @@ -231,20 +232,20 @@ func TestUploadData(t *testing.T) { t.Run("file attachments disabled", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = false }) defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.FileSettings.EnableFileAttachments = true }) - info, _, err := th.Client.UploadData(model.NewId(), bytes.NewReader(data)) + info, _, err := th.Client.UploadData(context.Background(), model.NewId(), bytes.NewReader(data)) require.Nil(t, info) CheckErrorID(t, err, "api.file.attachments.disabled.app_error") }) t.Run("upload not found", func(t *testing.T) { - info, resp, err := th.Client.UploadData(model.NewId(), bytes.NewReader(data)) + info, resp, err := th.Client.UploadData(context.Background(), model.NewId(), bytes.NewReader(data)) require.Nil(t, info) CheckErrorID(t, err, "app.upload.get.app_error") require.Equal(t, http.StatusNotFound, resp.StatusCode) }) t.Run("no permissions", func(t *testing.T) { - info, _, err := th.Client.UploadData(us.Id, bytes.NewReader(data)) + info, _, err := th.Client.UploadData(context.Background(), us.Id, bytes.NewReader(data)) require.Nil(t, info) CheckErrorID(t, err, "api.context.permissions.app_error") }) @@ -265,30 +266,30 @@ func TestUploadData(t *testing.T) { _, appErr := th.App.CreateUploadSession(th.Context, us2) require.Nil(t, appErr) - info, resp, err := th.SystemAdminClient.UploadData(us2.Id, bytes.NewReader(data)) + info, resp, err := th.SystemAdminClient.UploadData(context.Background(), us2.Id, bytes.NewReader(data)) require.Nil(t, info) CheckErrorID(t, err, "api.file.cloud_upload.app_error") require.Equal(t, http.StatusBadRequest, resp.StatusCode) }) t.Run("bad content-length", func(t *testing.T) { - u, resp, err := th.Client.CreateUpload(us) + u, resp, err := th.Client.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotEmpty(t, u) require.Equal(t, http.StatusCreated, resp.StatusCode) - info, _, err := th.Client.UploadData(u.Id, bytes.NewReader(append(data, 0x00))) + info, _, err := th.Client.UploadData(context.Background(), u.Id, bytes.NewReader(append(data, 0x00))) require.Nil(t, info) CheckErrorID(t, err, "api.upload.upload_data.invalid_content_length") }) t.Run("success", func(t *testing.T) { - u, resp, err := th.Client.CreateUpload(us) + u, resp, err := th.Client.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotEmpty(t, u) require.Equal(t, http.StatusCreated, resp.StatusCode) - info, _, err := th.Client.UploadData(u.Id, bytes.NewReader(data)) + info, _, err := th.Client.UploadData(context.Background(), u.Id, bytes.NewReader(data)) require.NoError(t, err) require.NotEmpty(t, info) require.Equal(t, u.Filename, info.Name) @@ -296,13 +297,13 @@ func TestUploadData(t *testing.T) { require.Equal(t, "zip", info.Extension) require.Equal(t, "application/zip", info.MimeType) - file, _, err := th.Client.GetFile(info.Id) + file, _, err := th.Client.GetFile(context.Background(), info.Id) require.NoError(t, err) require.Equal(t, file, data) }) t.Run("resume success", func(t *testing.T) { - u, resp, err := th.Client.CreateUpload(us) + u, resp, err := th.Client.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotEmpty(t, u) require.Equal(t, http.StatusCreated, resp.StatusCode) @@ -311,17 +312,17 @@ func TestUploadData(t *testing.T) { R: bytes.NewReader(data), N: 5 * 1024 * 1024, } - info, resp, err := th.Client.UploadData(u.Id, rd) + info, resp, err := th.Client.UploadData(context.Background(), u.Id, rd) require.NoError(t, err) require.Nil(t, info) require.Equal(t, http.StatusNoContent, resp.StatusCode) - info, _, err = th.Client.UploadData(u.Id, bytes.NewReader(data[5*1024*1024:])) + info, _, err = th.Client.UploadData(context.Background(), u.Id, bytes.NewReader(data[5*1024*1024:])) require.NoError(t, err) require.NotEmpty(t, info) require.Equal(t, u.Filename, info.Name) - file, _, err := th.Client.GetFile(info.Id) + file, _, err := th.Client.GetFile(context.Background(), info.Id) require.NoError(t, err) require.Equal(t, file, data) }) @@ -343,7 +344,7 @@ func TestUploadDataMultipart(t *testing.T) { Filename: "upload", FileSize: 8 * 1024 * 1024, } - us, _, err := th.Client.CreateUpload(us) + us, _, err := th.Client.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotNil(t, us) require.NotEmpty(t, us) @@ -364,7 +365,7 @@ func TestUploadDataMultipart(t *testing.T) { } t.Run("bad content-type", func(t *testing.T) { - info, _, err := th.Client.DoUploadFile("/uploads/"+us.Id, data, "multipart/form-data;") + info, _, err := th.Client.DoUploadFile(context.Background(), "/uploads/"+us.Id, data, "multipart/form-data;") require.Nil(t, info) CheckErrorID(t, err, "api.upload.upload_data.invalid_content_type") }) @@ -385,7 +386,7 @@ func TestUploadDataMultipart(t *testing.T) { require.NotEmpty(t, info) require.Equal(t, us.Filename, info.Name) - file, _, err := th.Client.GetFile(info.Id) + file, _, err := th.Client.GetFile(context.Background(), info.Id) require.NoError(t, err) require.Equal(t, file, data) }) @@ -393,7 +394,7 @@ func TestUploadDataMultipart(t *testing.T) { t.Run("resume success", func(t *testing.T) { mpData, contentType := genMultipartData(t, data[:5*1024*1024]) - u, _, err := th.Client.CreateUpload(us) + u, _, err := th.Client.CreateUpload(context.Background(), us) require.NoError(t, err) require.NotNil(t, u) require.NotEmpty(t, u) @@ -422,7 +423,7 @@ func TestUploadDataMultipart(t *testing.T) { require.NotEmpty(t, info) require.Equal(t, u.Filename, info.Name) - file, _, err := th.Client.GetFile(info.Id) + file, _, err := th.Client.GetFile(context.Background(), info.Id) require.NoError(t, err) require.Equal(t, file, data) }) diff --git a/server/channels/api4/usage_test.go b/server/channels/api4/usage_test.go index bfa1ae3c44..98de5f3eb0 100644 --- a/server/channels/api4/usage_test.go +++ b/server/channels/api4/usage_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "net/http" "testing" @@ -18,9 +19,9 @@ func TestGetPostsUsage(t *testing.T) { th := Setup(t) defer th.TearDown() - th.Client.Logout() + th.Client.Logout(context.Background()) - usage, r, err := th.Client.GetPostsUsage() + usage, r, err := th.Client.GetPostsUsage(context.Background()) assert.Error(t, err) assert.Nil(t, usage) assert.Equal(t, http.StatusUnauthorized, r.StatusCode) @@ -43,7 +44,7 @@ func TestGetPostsUsage(t *testing.T) { require.LessOrEqual(t, usersOnly, int64(20)) require.GreaterOrEqual(t, total, usersOnly) - usage, r, err := th.Client.GetPostsUsage() + usage, r, err := th.Client.GetPostsUsage(context.Background()) assert.NoError(t, err) assert.Equal(t, http.StatusOK, r.StatusCode) assert.NotNil(t, usage) @@ -56,9 +57,9 @@ func TestGetStorageUsage(t *testing.T) { th := Setup(t) defer th.TearDown() - th.Client.Logout() + th.Client.Logout(context.Background()) - usage, r, err := th.Client.GetStorageUsage() + usage, r, err := th.Client.GetStorageUsage(context.Background()) assert.Error(t, err) assert.Nil(t, usage) assert.Equal(t, http.StatusUnauthorized, r.StatusCode) @@ -70,9 +71,9 @@ func TestGetTeamsUsage(t *testing.T) { th := Setup(t) defer th.TearDown() - th.Client.Logout() + th.Client.Logout(context.Background()) - usage, r, err := th.Client.GetTeamsUsage() + usage, r, err := th.Client.GetTeamsUsage(context.Background()) assert.Error(t, err) assert.Nil(t, usage) assert.Equal(t, http.StatusUnauthorized, r.StatusCode) @@ -85,7 +86,7 @@ func TestGetTeamsUsage(t *testing.T) { th.CreateTeam() th.CreateTeam() - usage, r, err := th.Client.GetTeamsUsage() + usage, r, err := th.Client.GetTeamsUsage(context.Background()) assert.NoError(t, err) assert.Equal(t, http.StatusOK, r.StatusCode) assert.NotNil(t, usage) diff --git a/server/channels/api4/user_test.go b/server/channels/api4/user_test.go index b7aa51f411..b51f8e7be4 100644 --- a/server/channels/api4/user_test.go +++ b/server/channels/api4/user_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "encoding/json" "fmt" "io" @@ -42,43 +43,43 @@ func TestCreateUser(t *testing.T) { EmailVerified: true, } - ruser, resp, err := th.Client.CreateUser(&user) + ruser, resp, err := th.Client.CreateUser(context.Background(), &user) require.NoError(t, err) CheckCreatedStatus(t, resp) // Creating a user as a regular user with verified flag should not verify the new user. require.False(t, ruser.EmailVerified) - _, _, _ = th.Client.Login(user.Email, user.Password) + _, _, _ = th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname, "nickname didn't match") require.Equal(t, model.SystemUserRoleId, ruser.Roles, "did not clear roles") CheckUserSanitization(t, ruser) - _, resp, err = th.Client.CreateUser(ruser) + _, resp, err = th.Client.CreateUser(context.Background(), ruser) require.Error(t, err) CheckBadRequestStatus(t, resp) ruser.Id = "" ruser.Username = GenerateTestUsername() ruser.Password = "passwd1" - _, resp, err = th.Client.CreateUser(ruser) + _, resp, err = th.Client.CreateUser(context.Background(), ruser) CheckErrorID(t, err, "app.user.save.email_exists.app_error") CheckBadRequestStatus(t, resp) ruser.Email = th.GenerateTestEmail() ruser.Username = user.Username - _, resp, err = th.Client.CreateUser(ruser) + _, resp, err = th.Client.CreateUser(context.Background(), ruser) CheckErrorID(t, err, "app.user.save.username_exists.app_error") CheckBadRequestStatus(t, resp) ruser.Email = "" - _, resp, err = th.Client.CreateUser(ruser) + _, resp, err = th.Client.CreateUser(context.Background(), ruser) CheckErrorID(t, err, "model.user.is_valid.email.app_error") CheckBadRequestStatus(t, resp) ruser.Username = "testinvalid+++" - _, resp, err = th.Client.CreateUser(ruser) + _, resp, err = th.Client.CreateUser(context.Background(), ruser) CheckErrorID(t, err, "model.user.is_valid.username.app_error") CheckBadRequestStatus(t, resp) @@ -87,12 +88,12 @@ func TestCreateUser(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { user2 := &model.User{Email: th.GenerateTestEmail(), Password: "Password1", Username: GenerateTestUsername(), EmailVerified: true} - ruser2, _, err2 := client.CreateUser(user2) + ruser2, _, err2 := client.CreateUser(context.Background(), user2) require.NoError(t, err2) // Creating a user as sysadmin should verify the user with the EmailVerified flag. require.True(t, ruser2.EmailVerified) - r, err2 := client.DoAPIPost("/users", "garbage") + r, err2 := client.DoAPIPost(context.Background(), "/users", "garbage") require.Error(t, err2, "should have errored") assert.Equal(t, http.StatusBadRequest, r.StatusCode) }) @@ -100,13 +101,13 @@ func TestCreateUser(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { email := th.GenerateTestEmail() user2 := &model.User{Email: email, Password: "Password1", Username: GenerateTestUsername(), EmailVerified: true} - _, _, err = client.CreateUser(user2) + _, _, err = client.CreateUser(context.Background(), user2) require.NoError(t, err) _, appErr := th.App.GetUserByUsername(user2.Username) require.Nil(t, appErr) user3 := &model.User{Email: fmt.Sprintf(" %s ", email), Password: "Password1", Username: GenerateTestUsername(), EmailVerified: true} - _, resp, err = client.CreateUser(user3) + _, resp, err = client.CreateUser(context.Background(), user3) require.Error(t, err) CheckBadRequestStatus(t, resp) _, appErr = th.App.GetUserByUsername(user3.Username) @@ -135,7 +136,7 @@ func TestCreateUserAudit(t *testing.T) { Password: password, Username: GenerateTestUsername(), } - _, resp, err := th.Client.CreateUser(&user) + _, resp, err := th.Client.CreateUser(context.Background(), &user) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -174,15 +175,15 @@ func TestCreateUserInputFilter(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { user := &model.User{Email: "foobar+testdomainrestriction@mattermost.com", Password: "Password1", Username: GenerateTestUsername()} - u, _, err := client.CreateUser(user) // we need the returned created user to use its Id for deletion. + u, _, err := client.CreateUser(context.Background(), user) // we need the returned created user to use its Id for deletion. require.NoError(t, err) - _, err = client.PermanentDeleteUser(u.Id) + _, err = client.PermanentDeleteUser(context.Background(), u.Id) require.NoError(t, err) }, "ValidUser") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { user := &model.User{Email: "foobar+testdomainrestriction@mattermost.org", Password: "Password1", Username: GenerateTestUsername()} - _, resp, err := client.CreateUser(user) + _, resp, err := client.CreateUser(context.Background(), user) require.Error(t, err) CheckBadRequestStatus(t, resp) }, "InvalidEmail") @@ -195,9 +196,9 @@ func TestCreateUserInputFilter(t *testing.T) { AuthService: "ldap", AuthData: model.NewString("999099"), } - u, _, err := th.SystemAdminClient.CreateUser(user) + u, _, err := th.SystemAdminClient.CreateUser(context.Background(), user) require.NoError(t, err) - _, err = th.SystemAdminClient.PermanentDeleteUser(u.Id) + _, err = th.SystemAdminClient.PermanentDeleteUser(context.Background(), u.Id) require.NoError(t, err) }) t.Run("LocalClient", func(t *testing.T) { @@ -207,16 +208,16 @@ func TestCreateUserInputFilter(t *testing.T) { AuthService: "ldap", AuthData: model.NewString("999100"), } - u, _, err := th.LocalClient.CreateUser(user) + u, _, err := th.LocalClient.CreateUser(context.Background(), user) require.NoError(t, err) - _, err = th.LocalClient.PermanentDeleteUser(u.Id) + _, err = th.LocalClient.PermanentDeleteUser(context.Background(), u.Id) require.NoError(t, err) }) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { user := &model.User{Email: "foobar+testdomainrestriction@mattermost.org", Password: "Password1", Username: GenerateTestUsername(), AuthService: "ldap"} - _, resp, err := th.Client.CreateUser(user) + _, resp, err := th.Client.CreateUser(context.Background(), user) require.Error(t, err) CheckBadRequestStatus(t, resp) }, "InvalidAuthServiceFilter") @@ -233,12 +234,12 @@ func TestCreateUserInputFilter(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { emailAddr := "foobar+testinvalidrole@mattermost.com" user := &model.User{Email: emailAddr, Password: "Password1", Username: GenerateTestUsername(), Roles: "system_user system_admin"} - _, _, err := client.CreateUser(user) + _, _, err := client.CreateUser(context.Background(), user) require.NoError(t, err) ruser, appErr := th.App.GetUserByEmail(emailAddr) require.Nil(t, appErr) assert.NotEqual(t, ruser.Roles, "system_user system_admin") - _, err = client.PermanentDeleteUser(ruser.Id) + _, err = client.PermanentDeleteUser(context.Background(), ruser.Id) require.NoError(t, err) }, "InvalidRole") }) @@ -249,7 +250,7 @@ func TestCreateUserInputFilter(t *testing.T) { *cfg.TeamSettings.EnableUserCreation = true }) user := &model.User{Id: "AAAAAAAAAAAAAAAAAAAAAAAAAA", Email: "foobar+testinvalidid@mattermost.com", Password: "Password1", Username: GenerateTestUsername(), Roles: "system_user system_admin"} - _, resp, err := client.CreateUser(user) + _, resp, err := client.CreateUser(context.Background(), user) require.Error(t, err) CheckBadRequestStatus(t, resp) }, "InvalidId") @@ -267,11 +268,11 @@ func TestCreateUserWithToken(t *testing.T) { ) require.NoError(t, th.App.Srv().Store().Token().Save(token)) - ruser, resp, err := th.Client.CreateUserWithToken(&user, token.Token) + ruser, resp, err := th.Client.CreateUserWithToken(context.Background(), &user, token.Token) require.NoError(t, err) CheckCreatedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, model.SystemUserRoleId, ruser.Roles, "should clear roles") CheckUserSanitization(t, ruser) @@ -292,11 +293,11 @@ func TestCreateUserWithToken(t *testing.T) { ) require.NoError(t, th.App.Srv().Store().Token().Save(token)) - ruser, resp, err := client.CreateUserWithToken(&user, token.Token) + ruser, resp, err := client.CreateUserWithToken(context.Background(), &user, token.Token) require.NoError(t, err) CheckCreatedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, model.SystemUserRoleId, ruser.Roles, "should clear roles") CheckUserSanitization(t, ruser) @@ -318,7 +319,7 @@ func TestCreateUserWithToken(t *testing.T) { require.NoError(t, th.App.Srv().Store().Token().Save(token)) defer th.App.DeleteToken(token) - _, _, err := th.Client.CreateUserWithToken(&user, "") + _, _, err := th.Client.CreateUserWithToken(context.Background(), &user, "") require.Error(t, err) CheckErrorID(t, err, "api.user.create_user.missing_token.app_error") }) @@ -335,7 +336,7 @@ func TestCreateUserWithToken(t *testing.T) { require.NoError(t, th.App.Srv().Store().Token().Save(token)) defer th.App.DeleteToken(token) - _, resp, err := th.Client.CreateUserWithToken(&user, token.Token) + _, resp, err := th.Client.CreateUserWithToken(context.Background(), &user, token.Token) require.Error(t, err) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "api.user.create_user.signup_link_expired.app_error") @@ -344,7 +345,7 @@ func TestCreateUserWithToken(t *testing.T) { t.Run("WrongToken", func(t *testing.T) { user := model.User{Email: th.GenerateTestEmail(), Nickname: "Corey Hulen", Password: "hello1", Username: GenerateTestUsername(), Roles: model.SystemAdminRoleId + " " + model.SystemUserRoleId} - _, resp, err := th.Client.CreateUserWithToken(&user, "wrong") + _, resp, err := th.Client.CreateUserWithToken(context.Background(), &user, "wrong") require.Error(t, err) CheckNotFoundStatus(t, resp) CheckErrorID(t, err, "api.user.create_user.signup_link_invalid.app_error") @@ -368,7 +369,7 @@ func TestCreateUserWithToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false }) - _, resp, err := th.Client.CreateUserWithToken(&user, token.Token) + _, resp, err := th.Client.CreateUserWithToken(context.Background(), &user, token.Token) require.Error(t, err) CheckNotImplementedStatus(t, resp) CheckErrorID(t, err, "api.user.create_user.signup_email_disabled.app_error") @@ -389,7 +390,7 @@ func TestCreateUserWithToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false }) - _, resp, err := client.CreateUserWithToken(&user, token.Token) + _, resp, err := client.CreateUserWithToken(context.Background(), &user, token.Token) require.Error(t, err) CheckNotImplementedStatus(t, resp) CheckErrorID(t, err, "api.user.create_user.signup_email_disabled.app_error") @@ -411,11 +412,11 @@ func TestCreateUserWithToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = false }) - ruser, resp, err := th.Client.CreateUserWithToken(&user, token.Token) + ruser, resp, err := th.Client.CreateUserWithToken(context.Background(), &user, token.Token) require.NoError(t, err) CheckCreatedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, model.SystemUserRoleId, ruser.Roles, "should clear roles") CheckUserSanitization(t, ruser) @@ -433,11 +434,11 @@ func TestCreateUserWithToken(t *testing.T) { ) require.NoError(t, th.App.Srv().Store().Token().Save(token)) - ruser, resp, err := th.Client.CreateUserWithToken(&user, token.Token) + ruser, resp, err := th.Client.CreateUserWithToken(context.Background(), &user, token.Token) require.NoError(t, err) CheckCreatedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, model.SystemUserRoleId, ruser.Roles, "should clear roles") CheckUserSanitization(t, ruser) @@ -471,11 +472,11 @@ func TestCreateUserWithToken(t *testing.T) { ) require.NoError(t, th.App.Srv().Store().Token().Save(token)) - ruser, resp, err := th.Client.CreateUserWithToken(&user, token.Token) + ruser, resp, err := th.Client.CreateUserWithToken(context.Background(), &user, token.Token) require.NoError(t, err) CheckCreatedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, model.SystemUserRoleId, ruser.Roles, "should clear roles") CheckUserSanitization(t, ruser) @@ -530,7 +531,7 @@ func TestCreateUserWebSocketEvent(t *testing.T) { guestClient := th.CreateClient() - _, _, err := guestClient.Login(guest.Email, guestPassword) + _, _, err := guestClient.Login(context.Background(), guest.Email, guestPassword) require.NoError(t, err) guestWSClient, err := th.CreateWebSocketClientWithClient(guestClient) @@ -547,7 +548,7 @@ func TestCreateUserWebSocketEvent(t *testing.T) { inviteId := th.BasicTeam.InviteId - _, resp, err := th.Client.CreateUserWithInviteId(&user, inviteId) + _, resp, err := th.Client.CreateUserWithInviteId(context.Background(), &user, inviteId) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -585,11 +586,11 @@ func TestCreateUserWithInviteId(t *testing.T) { inviteId := th.BasicTeam.InviteId - ruser, resp, err := th.Client.CreateUserWithInviteId(&user, inviteId) + ruser, resp, err := th.Client.CreateUserWithInviteId(context.Background(), &user, inviteId) require.NoError(t, err) CheckCreatedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, model.SystemUserRoleId, ruser.Roles, "should clear roles") CheckUserSanitization(t, ruser) @@ -599,11 +600,11 @@ func TestCreateUserWithInviteId(t *testing.T) { inviteId := th.BasicTeam.InviteId - ruser, resp, err := client.CreateUserWithInviteId(&user, inviteId) + ruser, resp, err := client.CreateUserWithInviteId(context.Background(), &user, inviteId) require.NoError(t, err) CheckCreatedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, model.SystemUserRoleId, ruser.Roles, "should clear roles") CheckUserSanitization(t, ruser) @@ -624,7 +625,7 @@ func TestCreateUserWithInviteId(t *testing.T) { inviteID := team.InviteId - _, _, err := th.Client.CreateUserWithInviteId(&user, inviteID) + _, _, err := th.Client.CreateUserWithInviteId(context.Background(), &user, inviteID) CheckErrorID(t, err, "app.team.invite_id.group_constrained.error") }) @@ -643,7 +644,7 @@ func TestCreateUserWithInviteId(t *testing.T) { inviteID := team.InviteId - _, _, err := client.CreateUserWithInviteId(&user, inviteID) + _, _, err := client.CreateUserWithInviteId(context.Background(), &user, inviteID) CheckErrorID(t, err, "app.team.invite_id.group_constrained.error") }, "GroupConstrainedTeam") @@ -652,7 +653,7 @@ func TestCreateUserWithInviteId(t *testing.T) { inviteId := model.NewId() - _, resp, err := th.Client.CreateUserWithInviteId(&user, inviteId) + _, resp, err := th.Client.CreateUserWithInviteId(context.Background(), &user, inviteId) require.Error(t, err) CheckNotFoundStatus(t, resp) CheckErrorID(t, err, "app.team.get_by_invite_id.finding.app_error") @@ -661,7 +662,7 @@ func TestCreateUserWithInviteId(t *testing.T) { t.Run("NoInviteId", func(t *testing.T) { user := model.User{Email: th.GenerateTestEmail(), Nickname: "Corey Hulen", Password: "hello1", Username: GenerateTestUsername(), Roles: model.SystemAdminRoleId + " " + model.SystemUserRoleId} - _, _, err := th.Client.CreateUserWithInviteId(&user, "") + _, _, err := th.Client.CreateUserWithInviteId(context.Background(), &user, "") require.Error(t, err) CheckErrorID(t, err, "api.user.create_user.missing_invite_id.app_error") }) @@ -671,10 +672,10 @@ func TestCreateUserWithInviteId(t *testing.T) { inviteId := th.BasicTeam.InviteId - _, _, err := th.SystemAdminClient.RegenerateTeamInviteId(th.BasicTeam.Id) + _, _, err := th.SystemAdminClient.RegenerateTeamInviteId(context.Background(), th.BasicTeam.Id) require.NoError(t, err) - _, resp, err := th.Client.CreateUserWithInviteId(&user, inviteId) + _, resp, err := th.Client.CreateUserWithInviteId(context.Background(), &user, inviteId) require.Error(t, err) CheckNotFoundStatus(t, resp) CheckErrorID(t, err, "app.team.get_by_invite_id.finding.app_error") @@ -692,7 +693,7 @@ func TestCreateUserWithInviteId(t *testing.T) { inviteId := th.BasicTeam.InviteId - _, resp, err := th.Client.CreateUserWithInviteId(&user, inviteId) + _, resp, err := th.Client.CreateUserWithInviteId(context.Background(), &user, inviteId) require.Error(t, err) CheckNotImplementedStatus(t, resp) CheckErrorID(t, err, "api.user.create_user.signup_email_disabled.app_error") @@ -706,7 +707,7 @@ func TestCreateUserWithInviteId(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserCreation = false }) inviteId := th.BasicTeam.InviteId - _, resp, err := client.CreateUserWithInviteId(&user, inviteId) + _, resp, err := client.CreateUserWithInviteId(context.Background(), &user, inviteId) require.Error(t, err) CheckNotImplementedStatus(t, resp) CheckErrorID(t, err, "api.user.create_user.signup_email_disabled.app_error") @@ -722,15 +723,15 @@ func TestCreateUserWithInviteId(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableOpenServer = false }) - team, _, err := th.SystemAdminClient.RegenerateTeamInviteId(th.BasicTeam.Id) + team, _, err := th.SystemAdminClient.RegenerateTeamInviteId(context.Background(), th.BasicTeam.Id) assert.NoError(t, err) inviteId := team.InviteId - ruser, resp, err := th.Client.CreateUserWithInviteId(&user, inviteId) + ruser, resp, err := th.Client.CreateUserWithInviteId(context.Background(), &user, inviteId) require.NoError(t, err) CheckCreatedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) require.Equal(t, user.Nickname, ruser.Nickname) require.Equal(t, model.SystemUserRoleId, ruser.Roles, "should clear roles") CheckUserSanitization(t, ruser) @@ -741,13 +742,13 @@ func TestGetMe(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - ruser, _, err := th.Client.GetMe("") + ruser, _, err := th.Client.GetMe(context.Background(), "") require.NoError(t, err) require.Equal(t, th.BasicUser.Id, ruser.Id) - th.Client.Logout() - _, resp, err := th.Client.GetMe("") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetMe(context.Background(), "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -762,7 +763,7 @@ func TestGetUser(t *testing.T) { th.App.UpdateUser(th.Context, user, false) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - ruser, resp, err := client.GetUser(user.Id, "") + ruser, resp, err := client.GetUser(context.Background(), user.Id, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -772,14 +773,14 @@ func TestGetUser(t *testing.T) { assert.Equal(t, ruser.Props["testpropkey"], "testpropvalue") require.False(t, ruser.IsBot) - ruser, resp, _ = client.GetUser(user.Id, resp.Etag) + ruser, resp, _ = client.GetUser(context.Background(), user.Id, resp.Etag) CheckEtag(t, ruser, resp) - _, resp, err = client.GetUser("junk", "") + _, resp, err = client.GetUser(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = client.GetUser(model.NewId(), "") + _, resp, err = client.GetUser(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -788,20 +789,20 @@ func TestGetUser(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowEmailAddress = false }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowFullName = false }) - ruser, _, err := th.Client.GetUser(user.Id, "") + ruser, _, err := th.Client.GetUser(context.Background(), user.Id, "") require.NoError(t, err) require.Empty(t, ruser.Email, "email should be blank") require.Empty(t, ruser.FirstName, "first name should be blank") require.Empty(t, ruser.LastName, "last name should be blank") - th.Client.Logout() - _, resp, err := th.Client.GetUser(user.Id, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetUser(context.Background(), user.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) // System admins should ignore privacy settings - ruser, _, _ = th.SystemAdminClient.GetUser(user.Id, resp.Etag) + ruser, _, _ = th.SystemAdminClient.GetUser(context.Background(), user.Id, resp.Etag) require.NotEmpty(t, ruser.Email, "email should not be blank") require.NotEmpty(t, ruser.FirstName, "first name should not be blank") require.NotEmpty(t, ruser.LastName, "last name should not be blank") @@ -817,7 +818,7 @@ func TestGetUserWithAcceptedTermsOfServiceForOtherUser(t *testing.T) { th.App.UpdateUser(th.Context, user, false) - ruser, _, err := th.Client.GetUser(user.Id, "") + ruser, _, err := th.Client.GetUser(context.Background(), user.Id, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -827,7 +828,7 @@ func TestGetUserWithAcceptedTermsOfServiceForOtherUser(t *testing.T) { th.App.SaveUserTermsOfService(user.Id, tos.Id, true) - ruser, _, err = th.Client.GetUser(user.Id, "") + ruser, _, err = th.Client.GetUser(context.Background(), user.Id, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -845,7 +846,7 @@ func TestGetUserWithAcceptedTermsOfService(t *testing.T) { tos, _ := th.App.CreateTermsOfService("Dummy TOS", user.Id) - ruser, _, err := th.Client.GetUser(user.Id, "") + ruser, _, err := th.Client.GetUser(context.Background(), user.Id, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -855,7 +856,7 @@ func TestGetUserWithAcceptedTermsOfService(t *testing.T) { th.App.SaveUserTermsOfService(user.Id, tos.Id, true) - ruser, _, err = th.Client.GetUser(user.Id, "") + ruser, _, err = th.Client.GetUser(context.Background(), user.Id, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -874,7 +875,7 @@ func TestGetUserWithAcceptedTermsOfServiceWithAdminUser(t *testing.T) { tos, _ := th.App.CreateTermsOfService("Dummy TOS", user.Id) - ruser, _, err := th.SystemAdminClient.GetUser(user.Id, "") + ruser, _, err := th.SystemAdminClient.GetUser(context.Background(), user.Id, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -884,7 +885,7 @@ func TestGetUserWithAcceptedTermsOfServiceWithAdminUser(t *testing.T) { th.App.SaveUserTermsOfService(user.Id, tos.Id, true) - ruser, _, err = th.SystemAdminClient.GetUser(user.Id, "") + ruser, _, err = th.SystemAdminClient.GetUser(context.Background(), user.Id, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -913,12 +914,12 @@ func TestGetBotUser(t *testing.T) { Description: "bot", } - createdBot, resp, err := th.Client.CreateBot(bot) + createdBot, resp, err := th.Client.CreateBot(context.Background(), bot) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - botUser, _, err := th.Client.GetUser(createdBot.UserId, "") + botUser, _, err := th.Client.GetUser(context.Background(), createdBot.UserId, "") require.NoError(t, err) require.Equal(t, bot.Username, botUser.Username) require.True(t, botUser.IsBot) @@ -931,16 +932,16 @@ func TestGetUserByUsername(t *testing.T) { user := th.BasicUser th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - ruser, resp, err := client.GetUserByUsername(user.Username, "") + ruser, resp, err := client.GetUserByUsername(context.Background(), user.Username, "") require.NoError(t, err) CheckUserSanitization(t, ruser) require.Equal(t, user.Email, ruser.Email) - ruser, resp, _ = client.GetUserByUsername(user.Username, resp.Etag) + ruser, resp, _ = client.GetUserByUsername(context.Background(), user.Username, resp.Etag) CheckEtag(t, ruser, resp) - _, resp, err = client.GetUserByUsername(GenerateTestUsername(), "") + _, resp, err = client.GetUserByUsername(context.Background(), GenerateTestUsername(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -949,25 +950,25 @@ func TestGetUserByUsername(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowEmailAddress = false }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowFullName = false }) - ruser, _, err := th.Client.GetUserByUsername(th.BasicUser2.Username, "") + ruser, _, err := th.Client.GetUserByUsername(context.Background(), th.BasicUser2.Username, "") require.NoError(t, err) require.Empty(t, ruser.Email, "email should be blank") require.Empty(t, ruser.FirstName, "first name should be blank") require.Empty(t, ruser.LastName, "last name should be blank") - ruser, _, err = th.Client.GetUserByUsername(th.BasicUser.Username, "") + ruser, _, err = th.Client.GetUserByUsername(context.Background(), th.BasicUser.Username, "") require.NoError(t, err) require.NotEmpty(t, ruser.NotifyProps, "notify props should be sent") - th.Client.Logout() - _, resp, err := th.Client.GetUserByUsername(user.Username, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetUserByUsername(context.Background(), user.Username, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { // System admins should ignore privacy settings - ruser, _, _ = client.GetUserByUsername(user.Username, resp.Etag) + ruser, _, _ = client.GetUserByUsername(context.Background(), user.Username, resp.Etag) require.NotEmpty(t, ruser.Email, "email should not be blank") require.NotEmpty(t, ruser.FirstName, "first name should not be blank") require.NotEmpty(t, ruser.LastName, "last name should not be blank") @@ -980,7 +981,7 @@ func TestGetUserByUsernameWithAcceptedTermsOfService(t *testing.T) { user := th.BasicUser - ruser, _, err := th.Client.GetUserByUsername(user.Username, "") + ruser, _, err := th.Client.GetUserByUsername(context.Background(), user.Username, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -989,7 +990,7 @@ func TestGetUserByUsernameWithAcceptedTermsOfService(t *testing.T) { tos, _ := th.App.CreateTermsOfService("Dummy TOS", user.Id) th.App.SaveUserTermsOfService(ruser.Id, tos.Id, true) - ruser, _, err = th.Client.GetUserByUsername(user.Username, "") + ruser, _, err = th.Client.GetUserByUsername(context.Background(), user.Username, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -1003,7 +1004,7 @@ func TestSaveUserTermsOfService(t *testing.T) { defer th.TearDown() t.Run("Invalid data", func(t *testing.T) { - resp, err := th.Client.DoAPIPost("/users/"+th.BasicUser.Id+"/terms_of_service", "{}") + resp, err := th.Client.DoAPIPost(context.Background(), "/users/"+th.BasicUser.Id+"/terms_of_service", "{}") require.Error(t, err) assert.Equal(t, http.StatusBadRequest, resp.StatusCode) }) @@ -1014,7 +1015,7 @@ func TestGetUserByEmail(t *testing.T) { defer th.TearDown() user := th.CreateUser() - userWithSlash, _, err := th.SystemAdminClient.CreateUser(&model.User{ + userWithSlash, _, err := th.SystemAdminClient.CreateUser(context.Background(), &model.User{ Email: "email/with/slashes@example.com", Username: GenerateTestUsername(), Password: "Pa$$word11", @@ -1028,7 +1029,7 @@ func TestGetUserByEmail(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { t.Run("should be able to get another user by email", func(t *testing.T) { - ruser, _, err := client.GetUserByEmail(user.Email, "") + ruser, _, err := client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -1036,27 +1037,27 @@ func TestGetUserByEmail(t *testing.T) { }) t.Run("Get user with a / character in the email", func(t *testing.T) { - ruser, _, err := client.GetUserByEmail(userWithSlash.Email, "") + ruser, _, err := client.GetUserByEmail(context.Background(), userWithSlash.Email, "") require.NoError(t, err) require.Equal(t, ruser.Id, userWithSlash.Id) }) t.Run("should return not modified when provided with a matching etag", func(t *testing.T) { - _, resp, err := client.GetUserByEmail(user.Email, "") + _, resp, err := client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) - ruser, resp, _ := client.GetUserByEmail(user.Email, resp.Etag) + ruser, resp, _ := client.GetUserByEmail(context.Background(), user.Email, resp.Etag) CheckEtag(t, ruser, resp) }) t.Run("should return bad request when given an invalid email", func(t *testing.T) { - _, resp, err := client.GetUserByEmail(GenerateTestUsername(), "") + _, resp, err := client.GetUserByEmail(context.Background(), GenerateTestUsername(), "") require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("should return 404 when given a non-existent email", func(t *testing.T) { - _, resp, err := client.GetUserByEmail(th.GenerateTestEmail(), "") + _, resp, err := client.GetUserByEmail(context.Background(), th.GenerateTestEmail(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -1068,7 +1069,7 @@ func TestGetUserByEmail(t *testing.T) { *cfg.PrivacySettings.ShowFullName = false }) - ruser, _, err := th.Client.GetUserByEmail(user.Email, "") + ruser, _, err := th.Client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) assert.Equal(t, "", ruser.FirstName, "first name should be blank") assert.Equal(t, "", ruser.LastName, "last name should be blank") @@ -1077,7 +1078,7 @@ func TestGetUserByEmail(t *testing.T) { *cfg.PrivacySettings.ShowFullName = true }) - ruser, _, err = th.Client.GetUserByEmail(user.Email, "") + ruser, _, err = th.Client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) assert.NotEqual(t, "", ruser.FirstName, "first name should be set") assert.NotEqual(t, "", ruser.LastName, "last name should be set") @@ -1088,7 +1089,7 @@ func TestGetUserByEmail(t *testing.T) { *cfg.PrivacySettings.ShowEmailAddress = false }) - _, resp, err := th.Client.GetUserByEmail(user.Email, "") + _, resp, err := th.Client.GetUserByEmail(context.Background(), user.Email, "") require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -1096,7 +1097,7 @@ func TestGetUserByEmail(t *testing.T) { *cfg.PrivacySettings.ShowEmailAddress = true }) - ruser, _, err := th.Client.GetUserByEmail(user.Email, "") + ruser, _, err := th.Client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) assert.Equal(t, user.Email, ruser.Email, "email should be set") }) @@ -1108,7 +1109,7 @@ func TestGetUserByEmail(t *testing.T) { *cfg.PrivacySettings.ShowFullName = false }) - ruser, _, err := client.GetUserByEmail(user.Email, "") + ruser, _, err := client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) assert.NotEqual(t, "", ruser.FirstName, "first name should be set") assert.NotEqual(t, "", ruser.LastName, "last name should be set") @@ -1117,7 +1118,7 @@ func TestGetUserByEmail(t *testing.T) { *cfg.PrivacySettings.ShowFullName = true }) - ruser, _, err = client.GetUserByEmail(user.Email, "") + ruser, _, err = client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) assert.NotEqual(t, "", ruser.FirstName, "first name should be set") assert.NotEqual(t, "", ruser.LastName, "last name should be set") @@ -1128,7 +1129,7 @@ func TestGetUserByEmail(t *testing.T) { *cfg.PrivacySettings.ShowEmailAddress = false }) - ruser, _, err := client.GetUserByEmail(user.Email, "") + ruser, _, err := client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) assert.Equal(t, user.Email, ruser.Email, "email should be set") @@ -1136,7 +1137,7 @@ func TestGetUserByEmail(t *testing.T) { *cfg.PrivacySettings.ShowEmailAddress = true }) - ruser, _, err = client.GetUserByEmail(user.Email, "") + ruser, _, err = client.GetUserByEmail(context.Background(), user.Email, "") require.NoError(t, err) assert.Equal(t, user.Email, ruser.Email, "email should be set") }) @@ -1151,7 +1152,7 @@ func TestSearchUsers(t *testing.T) { search := &model.UserSearch{Term: th.BasicUser.Username} - users, _, err := th.Client.SearchUsers(search) + users, _, err := th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.True(t, findUserInList(th.BasicUser.Id, users), "should have found user") @@ -1162,14 +1163,14 @@ func TestSearchUsers(t *testing.T) { search.Term = th.BasicUser2.Username search.AllowInactive = false - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.False(t, findUserInList(th.BasicUser2.Id, users), "should not have found user") search.AllowInactive = true - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.True(t, findUserInList(th.BasicUser2.Id, users), "should have found user") @@ -1178,14 +1179,14 @@ func TestSearchUsers(t *testing.T) { search.AllowInactive = false search.TeamId = th.BasicTeam.Id - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.True(t, findUserInList(th.BasicUser.Id, users), "should have found user") search.NotInChannelId = th.BasicChannel.Id - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.False(t, findUserInList(th.BasicUser.Id, users), "should not have found user") @@ -1194,32 +1195,32 @@ func TestSearchUsers(t *testing.T) { search.NotInChannelId = "" search.InChannelId = th.BasicChannel.Id - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.True(t, findUserInList(th.BasicUser.Id, users), "should have found user") search.InChannelId = "" search.NotInChannelId = th.BasicChannel.Id - _, resp, err := th.Client.SearchUsers(search) + _, resp, err := th.Client.SearchUsers(context.Background(), search) require.Error(t, err) CheckBadRequestStatus(t, resp) search.NotInChannelId = model.NewId() search.TeamId = model.NewId() - _, resp, err = th.Client.SearchUsers(search) + _, resp, err = th.Client.SearchUsers(context.Background(), search) require.Error(t, err) CheckForbiddenStatus(t, resp) search.NotInChannelId = "" search.TeamId = model.NewId() - _, resp, err = th.Client.SearchUsers(search) + _, resp, err = th.Client.SearchUsers(context.Background(), search) require.Error(t, err) CheckForbiddenStatus(t, resp) search.InChannelId = model.NewId() search.TeamId = "" - _, resp, err = th.Client.SearchUsers(search) + _, resp, err = th.Client.SearchUsers(context.Background(), search) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -1229,7 +1230,7 @@ func TestSearchUsers(t *testing.T) { search.InChannelId = "" search.NotInTeamId = th.BasicTeam.Id - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.False(t, findUserInList(th.BasicUser.Id, users), "should not have found user") @@ -1237,21 +1238,21 @@ func TestSearchUsers(t *testing.T) { oddUser := th.CreateUser() search.Term = oddUser.Username - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.True(t, findUserInList(oddUser.Id, users), "should have found user") - _, _, err = th.SystemAdminClient.AddTeamMember(th.BasicTeam.Id, oddUser.Id) + _, _, err = th.SystemAdminClient.AddTeamMember(context.Background(), th.BasicTeam.Id, oddUser.Id) require.NoError(t, err) - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.False(t, findUserInList(oddUser.Id, users), "should not have found user") search.NotInTeamId = model.NewId() - _, resp, err = th.Client.SearchUsers(search) + _, resp, err = th.Client.SearchUsers(context.Background(), search) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -1266,19 +1267,19 @@ func TestSearchUsers(t *testing.T) { search.InChannelId = "" search.NotInTeamId = "" search.Term = th.BasicUser2.Email - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.False(t, findUserInList(th.BasicUser2.Id, users), "should not have found user") search.Term = th.BasicUser2.FirstName - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.False(t, findUserInList(th.BasicUser2.Id, users), "should not have found user") search.Term = th.BasicUser2.LastName - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.False(t, findUserInList(th.BasicUser2.Id, users), "should not have found user") @@ -1287,7 +1288,7 @@ func TestSearchUsers(t *testing.T) { search.InChannelId = th.BasicChannel.Id search.NotInChannelId = th.BasicChannel.Id search.TeamId = th.BasicTeam.Id - users, _, err = th.SystemAdminClient.SearchUsers(search) + users, _, err = th.SystemAdminClient.SearchUsers(context.Background(), search) require.NoError(t, err) require.True(t, findUserInList(th.BasicUser.Id, users), "should have found user") @@ -1304,7 +1305,7 @@ func TestSearchUsers(t *testing.T) { search = &model.UserSearch{Term: th.BasicUser.Username, InGroupId: group.Id} t.Run("Requires ldap license when searching in group", func(t *testing.T) { - _, resp, err = th.SystemAdminClient.SearchUsers(search) + _, resp, err = th.SystemAdminClient.SearchUsers(context.Background(), search) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -1312,13 +1313,13 @@ func TestSearchUsers(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("ldap")) t.Run("Requires manage system permission when searching for users in a group", func(t *testing.T) { - _, resp, err = th.Client.SearchUsers(search) + _, resp, err = th.Client.SearchUsers(context.Background(), search) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("Returns empty list when no users found searching for users in a group", func(t *testing.T) { - users, _, err = th.SystemAdminClient.SearchUsers(search) + users, _, err = th.SystemAdminClient.SearchUsers(context.Background(), search) require.NoError(t, err) require.Empty(t, users) }) @@ -1327,7 +1328,7 @@ func TestSearchUsers(t *testing.T) { assert.Nil(t, appErr) t.Run("Returns user in group user found in group", func(t *testing.T) { - users, _, err = th.SystemAdminClient.SearchUsers(search) + users, _, err = th.SystemAdminClient.SearchUsers(context.Background(), search) require.NoError(t, err) require.Equal(t, users[0].Id, th.BasicUser.Id) }) @@ -1346,7 +1347,7 @@ func TestSearchUsers(t *testing.T) { search = &model.UserSearch{Term: th.BasicUser.Username, NotInGroupId: group.Id} t.Run("Returns users not in group", func(t *testing.T) { - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.Equal(t, users[0].Id, th.BasicUser.Id) }) @@ -1355,7 +1356,7 @@ func TestSearchUsers(t *testing.T) { assert.Nil(t, appErr) t.Run("Returns empty list for not in group", func(t *testing.T) { - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) assert.Len(t, users, 0) }) @@ -1364,11 +1365,11 @@ func TestSearchUsers(t *testing.T) { UserIds: []string{th.BasicUser.Id}, } - _, _, delErr := th.Client.DeleteGroupMembers(group.Id, members) + _, _, delErr := th.Client.DeleteGroupMembers(context.Background(), group.Id, members) require.NoError(t, delErr) t.Run("Returns user not in group after they were deleted from group", func(t *testing.T) { - users, _, err = th.Client.SearchUsers(search) + users, _, err = th.Client.SearchUsers(context.Background(), search) require.NoError(t, err) require.Equal(t, users[0].Id, th.BasicUser.Id) }) @@ -1441,7 +1442,7 @@ func TestAutocompleteUsersInChannel(t *testing.T) { for _, tc := range tt { t.Run(tc.Name, func(t *testing.T) { th.LoginBasic() - rusers, _, err := th.Client.AutocompleteUsersInChannel(tc.TeamId, tc.ChannelId, tc.Username, model.UserSearchDefaultLimit, "") + rusers, _, err := th.Client.AutocompleteUsersInChannel(context.Background(), tc.TeamId, tc.ChannelId, tc.Username, model.UserSearchDefaultLimit, "") if tc.ShouldFail { CheckErrorID(t, err, "api.user.autocomplete_users.missing_team_id.app_error") } else { @@ -1453,13 +1454,13 @@ func TestAutocompleteUsersInChannel(t *testing.T) { } } - th.Client.Logout() - _, resp, err := th.Client.AutocompleteUsersInChannel(tc.TeamId, tc.ChannelId, tc.Username, model.UserSearchDefaultLimit, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.AutocompleteUsersInChannel(context.Background(), tc.TeamId, tc.ChannelId, tc.Username, model.UserSearchDefaultLimit, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - th.Client.Login(newUser.Email, newUser.Password) - _, resp, err = th.Client.AutocompleteUsersInChannel(tc.TeamId, tc.ChannelId, tc.Username, model.UserSearchDefaultLimit, "") + th.Client.Login(context.Background(), newUser.Email, newUser.Password) + _, resp, err = th.Client.AutocompleteUsersInChannel(context.Background(), tc.TeamId, tc.ChannelId, tc.Username, model.UserSearchDefaultLimit, "") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -1469,7 +1470,7 @@ func TestAutocompleteUsersInChannel(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowFullName = false }) th.LoginBasic() - rusers, _, err := th.Client.AutocompleteUsersInChannel(teamId, channelId, username, model.UserSearchDefaultLimit, "") + rusers, _, err := th.Client.AutocompleteUsersInChannel(context.Background(), teamId, channelId, username, model.UserSearchDefaultLimit, "") require.NoError(t, err) assert.Equal(t, rusers.Users[0].FirstName, "", "should not show first/last name") @@ -1478,7 +1479,7 @@ func TestAutocompleteUsersInChannel(t *testing.T) { t.Run("Check OutOfChannel results with/without VIEW_MEMBERS permissions", func(t *testing.T) { permissionsUser := th.CreateUser() - th.SystemAdminClient.DemoteUserToGuest(permissionsUser.Id) + th.SystemAdminClient.DemoteUserToGuest(context.Background(), permissionsUser.Id) permissionsUser.Roles = "system_guest" th.LinkUserToTeam(permissionsUser, th.BasicTeam) th.AddUserToChannel(permissionsUser, th.BasicChannel) @@ -1486,9 +1487,9 @@ func TestAutocompleteUsersInChannel(t *testing.T) { otherUser := th.CreateUser() th.LinkUserToTeam(otherUser, th.BasicTeam) - th.Client.Login(permissionsUser.Email, permissionsUser.Password) + th.Client.Login(context.Background(), permissionsUser.Email, permissionsUser.Password) - rusers, _, err := th.Client.AutocompleteUsersInChannel(teamId, channelId, "", model.UserSearchDefaultLimit, "") + rusers, _, err := th.Client.AutocompleteUsersInChannel(context.Background(), teamId, channelId, "", model.UserSearchDefaultLimit, "") require.NoError(t, err) assert.Len(t, rusers.OutOfChannel, 1) @@ -1500,19 +1501,19 @@ func TestAutocompleteUsersInChannel(t *testing.T) { th.RemovePermissionFromRole(model.PermissionViewMembers.Id, model.SystemUserRoleId) th.RemovePermissionFromRole(model.PermissionViewMembers.Id, model.TeamUserRoleId) - rusers, _, err = th.Client.AutocompleteUsersInChannel(teamId, channelId, "", model.UserSearchDefaultLimit, "") + rusers, _, err = th.Client.AutocompleteUsersInChannel(context.Background(), teamId, channelId, "", model.UserSearchDefaultLimit, "") require.NoError(t, err) assert.Empty(t, rusers.OutOfChannel) th.App.GetOrCreateDirectChannel(th.Context, permissionsUser.Id, otherUser.Id) - rusers, _, err = th.Client.AutocompleteUsersInChannel(teamId, channelId, "", model.UserSearchDefaultLimit, "") + rusers, _, err = th.Client.AutocompleteUsersInChannel(context.Background(), teamId, channelId, "", model.UserSearchDefaultLimit, "") require.NoError(t, err) assert.Len(t, rusers.OutOfChannel, 1) }) t.Run("user must have access to team id, especially when it does not match channel's team id", func(t *testing.T) { - _, _, err := th.Client.AutocompleteUsersInChannel("otherTeamId", channelId, username, model.UserSearchDefaultLimit, "") + _, _, err := th.Client.AutocompleteUsersInChannel(context.Background(), "otherTeamId", channelId, username, model.UserSearchDefaultLimit, "") CheckErrorID(t, err, "api.context.permissions.app_error") }) } @@ -1557,20 +1558,20 @@ func TestAutocompleteUsersInTeam(t *testing.T) { for _, tc := range tt { t.Run(tc.Name, func(t *testing.T) { th.LoginBasic() - rusers, _, err := th.Client.AutocompleteUsersInTeam(tc.TeamId, tc.Username, model.UserSearchDefaultLimit, "") + rusers, _, err := th.Client.AutocompleteUsersInTeam(context.Background(), tc.TeamId, tc.Username, model.UserSearchDefaultLimit, "") require.NoError(t, err) if tc.MoreThan { assert.True(t, len(rusers.Users) >= tc.ExpectedResults) } else { assert.Len(t, rusers.Users, tc.ExpectedResults) } - th.Client.Logout() - _, resp, err := th.Client.AutocompleteUsersInTeam(tc.TeamId, tc.Username, model.UserSearchDefaultLimit, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.AutocompleteUsersInTeam(context.Background(), tc.TeamId, tc.Username, model.UserSearchDefaultLimit, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - th.Client.Login(newUser.Email, newUser.Password) - _, resp, err = th.Client.AutocompleteUsersInTeam(tc.TeamId, tc.Username, model.UserSearchDefaultLimit, "") + th.Client.Login(context.Background(), newUser.Email, newUser.Password) + _, resp, err = th.Client.AutocompleteUsersInTeam(context.Background(), tc.TeamId, tc.Username, model.UserSearchDefaultLimit, "") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -1580,7 +1581,7 @@ func TestAutocompleteUsersInTeam(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowFullName = false }) th.LoginBasic() - rusers, _, err := th.Client.AutocompleteUsersInTeam(teamId, username, model.UserSearchDefaultLimit, "") + rusers, _, err := th.Client.AutocompleteUsersInTeam(context.Background(), teamId, username, model.UserSearchDefaultLimit, "") require.NoError(t, err) assert.Equal(t, rusers.Users[0].FirstName, "", "should not show first/last name") @@ -1623,7 +1624,7 @@ func TestAutocompleteUsers(t *testing.T) { for _, tc := range tt { t.Run(tc.Name, func(t *testing.T) { th.LoginBasic() - rusers, _, err := th.Client.AutocompleteUsers(tc.Username, model.UserSearchDefaultLimit, "") + rusers, _, err := th.Client.AutocompleteUsers(context.Background(), tc.Username, model.UserSearchDefaultLimit, "") require.NoError(t, err) if tc.MoreThan { assert.True(t, len(rusers.Users) >= tc.ExpectedResults) @@ -1631,13 +1632,13 @@ func TestAutocompleteUsers(t *testing.T) { assert.Len(t, rusers.Users, tc.ExpectedResults) } - th.Client.Logout() - _, resp, err := th.Client.AutocompleteUsers(tc.Username, model.UserSearchDefaultLimit, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.AutocompleteUsers(context.Background(), tc.Username, model.UserSearchDefaultLimit, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - th.Client.Login(newUser.Email, newUser.Password) - _, _, err = th.Client.AutocompleteUsers(tc.Username, model.UserSearchDefaultLimit, "") + th.Client.Login(context.Background(), newUser.Email, newUser.Password) + _, _, err = th.Client.AutocompleteUsers(context.Background(), tc.Username, model.UserSearchDefaultLimit, "") require.NoError(t, err) }) } @@ -1646,7 +1647,7 @@ func TestAutocompleteUsers(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowFullName = false }) th.LoginBasic() - rusers, _, err := th.Client.AutocompleteUsers(username, model.UserSearchDefaultLimit, "") + rusers, _, err := th.Client.AutocompleteUsers(context.Background(), username, model.UserSearchDefaultLimit, "") require.NoError(t, err) assert.Equal(t, rusers.Users[0].FirstName, "", "should not show first/last name") @@ -1663,27 +1664,27 @@ func TestGetProfileImage(t *testing.T) { th.LoginBasic() user := th.BasicUser - data, resp, err := th.Client.GetProfileImage(user.Id, "") + data, resp, err := th.Client.GetProfileImage(context.Background(), user.Id, "") require.NoError(t, err) require.NotEmpty(t, data, "should not be empty") - _, resp, _ = th.Client.GetProfileImage(user.Id, resp.Etag) + _, resp, _ = th.Client.GetProfileImage(context.Background(), user.Id, resp.Etag) require.NotEqual(t, http.StatusNotModified, resp.StatusCode, "should not hit etag") - _, resp, err = th.Client.GetProfileImage("junk", "") + _, resp, err = th.Client.GetProfileImage(context.Background(), "junk", "") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = th.Client.GetProfileImage(model.NewId(), "") + _, resp, err = th.Client.GetProfileImage(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) - th.Client.Logout() - _, resp, err = th.Client.GetProfileImage(user.Id, "") + th.Client.Logout(context.Background()) + _, resp, err = th.Client.GetProfileImage(context.Background(), user.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetProfileImage(user.Id, "") + _, _, err = th.SystemAdminClient.GetProfileImage(context.Background(), user.Id, "") require.NoError(t, err) info := &model.FileInfo{Path: "/users/" + user.Id + "/profile.png"} @@ -1697,7 +1698,7 @@ func TestGetUsersByIds(t *testing.T) { th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { t.Run("should return the user", func(t *testing.T) { - users, _, err := client.GetUsersByIds([]string{th.BasicUser.Id}) + users, _, err := client.GetUsersByIds(context.Background(), []string{th.BasicUser.Id}) require.NoError(t, err) assert.Equal(t, th.BasicUser.Id, users[0].Id) @@ -1705,19 +1706,19 @@ func TestGetUsersByIds(t *testing.T) { }) t.Run("should return error when no IDs are specified", func(t *testing.T) { - _, resp, err := client.GetUsersByIds([]string{}) + _, resp, err := client.GetUsersByIds(context.Background(), []string{}) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("should not return an error for invalid IDs", func(t *testing.T) { - users, _, err := client.GetUsersByIds([]string{"junk"}) + users, _, err := client.GetUsersByIds(context.Background(), []string{"junk"}) require.NoError(t, err) require.Empty(t, users, "no users should be returned") }) t.Run("should still return users for valid IDs when invalid IDs are specified", func(t *testing.T) { - users, _, err := client.GetUsersByIds([]string{"junk", th.BasicUser.Id}) + users, _, err := client.GetUsersByIds(context.Background(), []string{"junk", th.BasicUser.Id}) require.NoError(t, err) require.Len(t, users, 1, "1 user should be returned") @@ -1725,9 +1726,9 @@ func TestGetUsersByIds(t *testing.T) { }) t.Run("should return error when not logged in", func(t *testing.T) { - th.Client.Logout() + th.Client.Logout(context.Background()) - _, resp, err := th.Client.GetUsersByIds([]string{th.BasicUser.Id}) + _, resp, err := th.Client.GetUsersByIds(context.Background(), []string{th.BasicUser.Id}) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -1749,7 +1750,7 @@ func TestGetUsersByIdsWithOptions(t *testing.T) { _, appErr = th.App.CreateUser(th.Context, &model.User{Email: th.GenerateTestEmail(), Username: model.NewId(), Password: model.NewId()}) require.Nil(t, appErr) - users, _, err := th.Client.GetUsersByIdsWithOptions([]string{user1.Id, user2.Id}, &model.UserGetByIdsOptions{ + users, _, err := th.Client.GetUsersByIdsWithOptions(context.Background(), []string{user1.Id, user2.Id}, &model.UserGetByIdsOptions{ Since: user2.UpdateAt - 1, }) @@ -1766,7 +1767,7 @@ func TestGetUsersByGroupChannelIds(t *testing.T) { gc1, appErr := th.App.CreateGroupChannel(th.Context, []string{th.BasicUser.Id, th.SystemAdminUser.Id, th.TeamAdminUser.Id}, th.BasicUser.Id) require.Nil(t, appErr) - usersByChannelId, _, err := th.Client.GetUsersByGroupChannelIds([]string{gc1.Id}) + usersByChannelId, _, err := th.Client.GetUsersByGroupChannelIds(context.Background(), []string{gc1.Id}) require.NoError(t, err) users, ok := usersByChannelId[gc1.Id] @@ -1779,14 +1780,14 @@ func TestGetUsersByGroupChannelIds(t *testing.T) { require.ElementsMatch(t, []string{th.SystemAdminUser.Id, th.TeamAdminUser.Id}, userIds) th.LoginBasic2() - usersByChannelId, _, err = th.Client.GetUsersByGroupChannelIds([]string{gc1.Id}) + usersByChannelId, _, err = th.Client.GetUsersByGroupChannelIds(context.Background(), []string{gc1.Id}) require.NoError(t, err) _, ok = usersByChannelId[gc1.Id] require.False(t, ok) - th.Client.Logout() - _, resp, err := th.Client.GetUsersByGroupChannelIds([]string{gc1.Id}) + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetUsersByGroupChannelIds(context.Background(), []string{gc1.Id}) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -1795,26 +1796,26 @@ func TestGetUsersByUsernames(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - users, _, err := th.Client.GetUsersByUsernames([]string{th.BasicUser.Username}) + users, _, err := th.Client.GetUsersByUsernames(context.Background(), []string{th.BasicUser.Username}) require.NoError(t, err) require.Equal(t, th.BasicUser.Id, users[0].Id) CheckUserSanitization(t, users[0]) - _, resp, err := th.Client.GetUsersByIds([]string{}) + _, resp, err := th.Client.GetUsersByIds(context.Background(), []string{}) require.Error(t, err) CheckBadRequestStatus(t, resp) - users, _, err = th.Client.GetUsersByUsernames([]string{"junk"}) + users, _, err = th.Client.GetUsersByUsernames(context.Background(), []string{"junk"}) require.NoError(t, err) require.Empty(t, users, "no users should be returned") - users, _, err = th.Client.GetUsersByUsernames([]string{"junk", th.BasicUser.Username}) + users, _, err = th.Client.GetUsersByUsernames(context.Background(), []string{"junk", th.BasicUser.Username}) require.NoError(t, err) require.Len(t, users, 1, "1 user should be returned") - th.Client.Logout() - _, resp, err = th.Client.GetUsersByUsernames([]string{th.BasicUser.Username}) + th.Client.Logout(context.Background()) + _, resp, err = th.Client.GetUsersByUsernames(context.Background(), []string{th.BasicUser.Username}) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -1828,7 +1829,7 @@ func TestGetTotalUsersStat(t *testing.T) { IncludeBotAccounts: true, }) - rstats, _, err := th.Client.GetTotalUsersStats("") + rstats, _, err := th.Client.GetTotalUsersStats(context.Background(), "") require.NoError(t, err) require.Equal(t, total, rstats.TotalUsersCount) @@ -1839,13 +1840,13 @@ func TestUpdateUser(t *testing.T) { defer th.TearDown() user := th.CreateUser() - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) user.Nickname = "Joram Wilander" user.Roles = model.SystemUserRoleId user.LastPasswordUpdate = 123 - ruser, _, err := th.Client.UpdateUser(user) + ruser, _, err := th.Client.UpdateUser(context.Background(), user) require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -1854,32 +1855,32 @@ func TestUpdateUser(t *testing.T) { require.NotEqual(t, 123, ruser.LastPasswordUpdate, "LastPasswordUpdate should not update") ruser.Email = th.GenerateTestEmail() - _, resp, err := th.Client.UpdateUser(ruser) + _, resp, err := th.Client.UpdateUser(context.Background(), ruser) require.Error(t, err) CheckBadRequestStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { ruser.Email = th.GenerateTestEmail() - _, _, err = client.UpdateUser(user) + _, _, err = client.UpdateUser(context.Background(), user) require.NoError(t, err) }) ruser.Password = user.Password - ruser, _, err = th.Client.UpdateUser(ruser) + ruser, _, err = th.Client.UpdateUser(context.Background(), ruser) require.NoError(t, err) CheckUserSanitization(t, ruser) ruser.Id = "junk" - _, resp, err = th.Client.UpdateUser(ruser) + _, resp, err = th.Client.UpdateUser(context.Background(), ruser) require.Error(t, err) CheckBadRequestStatus(t, resp) ruser.Id = model.NewId() - _, resp, err = th.Client.UpdateUser(ruser) + _, resp, err = th.Client.UpdateUser(context.Background(), ruser) require.Error(t, err) CheckForbiddenStatus(t, resp) - r, err := th.Client.DoAPIPut("/users/"+ruser.Id, "garbage") + r, err := th.Client.DoAPIPut(context.Background(), "/users/"+ruser.Id, "garbage") require.Error(t, err) require.Equal(t, http.StatusBadRequest, r.StatusCode) @@ -1889,22 +1890,22 @@ func TestUpdateUser(t *testing.T) { ruser.Id = user.Id ruser.Email = th.GenerateTestEmail() - _, resp, err = th.Client.UpdateUser(ruser) + _, resp, err = th.Client.UpdateUser(context.Background(), ruser) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - _, resp, err = th.Client.UpdateUser(user) + th.Client.Logout(context.Background()) + _, resp, err = th.Client.UpdateUser(context.Background(), user) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic() - _, resp, err = th.Client.UpdateUser(user) + _, resp, err = th.Client.UpdateUser(context.Background(), user) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, _, err = client.UpdateUser(user) + _, _, err = client.UpdateUser(context.Background(), user) require.NoError(t, err) }) } @@ -1914,13 +1915,13 @@ func TestPatchUser(t *testing.T) { defer th.TearDown() user := th.CreateUser() - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) t.Run("Timezone limit error", func(t *testing.T) { patch := &model.UserPatch{} patch.Timezone = model.StringMap{} patch.Timezone["manualTimezone"] = string(make([]byte, model.UserTimezoneMaxRunes)) - ruser, resp, err := th.Client.PatchUser(user.Id, patch) + ruser, resp, err := th.Client.PatchUser(context.Background(), user.Id, patch) CheckBadRequestStatus(t, resp) CheckErrorID(t, err, "model.user.is_valid.timezone_limit.app_error") require.Nil(t, ruser) @@ -1939,7 +1940,7 @@ func TestPatchUser(t *testing.T) { patch.Timezone["automaticTimezone"] = "America/New_York" patch.Timezone["manualTimezone"] = "" - ruser, _, err := th.Client.PatchUser(user.Id, patch) + ruser, _, err := th.Client.PatchUser(context.Background(), user.Id, patch) require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -1967,33 +1968,33 @@ func TestPatchUser(t *testing.T) { patch = &model.UserPatch{} patch.Email = model.NewString(th.GenerateTestEmail()) - _, resp, err := th.Client.PatchUser(user.Id, patch) + _, resp, err := th.Client.PatchUser(context.Background(), user.Id, patch) require.Error(t, err) CheckBadRequestStatus(t, resp) patch.Password = model.NewString(currentPassword) - ruser, _, err = th.Client.PatchUser(user.Id, patch) + ruser, _, err = th.Client.PatchUser(context.Background(), user.Id, patch) require.NoError(t, err) require.Equal(t, *patch.Email, ruser.Email, "Email should update properly") patch.Username = model.NewString(th.BasicUser2.Username) - _, resp, err = th.Client.PatchUser(user.Id, patch) + _, resp, err = th.Client.PatchUser(context.Background(), user.Id, patch) require.Error(t, err) CheckBadRequestStatus(t, resp) patch.Username = nil - _, resp, err = th.Client.PatchUser("junk", patch) + _, resp, err = th.Client.PatchUser(context.Background(), "junk", patch) require.Error(t, err) CheckBadRequestStatus(t, resp) ruser.Id = model.NewId() - _, resp, err = th.Client.PatchUser(model.NewId(), patch) + _, resp, err = th.Client.PatchUser(context.Background(), model.NewId(), patch) require.Error(t, err) CheckForbiddenStatus(t, resp) - r, err := th.Client.DoAPIPut("/users/"+user.Id+"/patch", "garbage") + r, err := th.Client.DoAPIPut(context.Background(), "/users/"+user.Id+"/patch", "garbage") require.Error(t, err) require.Equal(t, http.StatusBadRequest, r.StatusCode) @@ -2002,21 +2003,21 @@ func TestPatchUser(t *testing.T) { th.App.AddSessionToCache(session) patch.Email = model.NewString(th.GenerateTestEmail()) - _, resp, err = th.Client.PatchUser(user.Id, patch) + _, resp, err = th.Client.PatchUser(context.Background(), user.Id, patch) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - _, resp, err = th.Client.PatchUser(user.Id, patch) + th.Client.Logout(context.Background()) + _, resp, err = th.Client.PatchUser(context.Background(), user.Id, patch) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic() - _, resp, err = th.Client.PatchUser(user.Id, patch) + _, resp, err = th.Client.PatchUser(context.Background(), user.Id, patch) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.PatchUser(user.Id, patch) + _, _, err = th.SystemAdminClient.PatchUser(context.Background(), user.Id, patch) require.NoError(t, err) } @@ -2035,11 +2036,11 @@ func TestUserUnicodeNames(t *testing.T) { Username: "\ufeffwiggin77", Roles: model.SystemAdminRoleId + " " + model.SystemUserRoleId} - ruser, resp, err := client.CreateUser(&user) + ruser, resp, err := client.CreateUser(context.Background(), &user) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, _, _ = client.Login(user.Email, user.Password) + _, _, _ = client.Login(context.Background(), user.Email, user.Password) require.Equal(t, "wiggin77", ruser.Username, "Bad Unicode not filtered from username") require.Equal(t, "Andrew Wiggin", ruser.GetDisplayName(model.ShowFullName), "Bad Unicode not filtered from displayname") @@ -2048,14 +2049,14 @@ func TestUserUnicodeNames(t *testing.T) { t.Run("update user unicode", func(t *testing.T) { user := th.CreateUser() - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) user.Username = "wiggin\ufff9" user.Nickname = "Ender\u0340 \ufffcWiggin" user.FirstName = "Andrew\ufff9" user.LastName = "Wig\u206fgin" - ruser, _, err := client.UpdateUser(user) + ruser, _, err := client.UpdateUser(context.Background(), user) require.NoError(t, err) require.Equal(t, "wiggin", ruser.Username, "bad unicode should be filtered from username") @@ -2065,14 +2066,14 @@ func TestUserUnicodeNames(t *testing.T) { t.Run("patch user unicode", func(t *testing.T) { user := th.CreateUser() - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) patch := &model.UserPatch{} patch.Nickname = model.NewString("\U000E0000Ender\u206d Wiggin\U000E007F") patch.FirstName = model.NewString("\U0001d173Andrew\U0001d17a") patch.LastName = model.NewString("\u2028Wiggin\u2029") - ruser, _, err := client.PatchUser(user.Id, patch) + ruser, _, err := client.PatchUser(context.Background(), user.Id, patch) require.NoError(t, err) CheckUserSanitization(t, ruser) @@ -2101,13 +2102,13 @@ func TestUpdateUserAuth(t *testing.T) { userAuth.Password = user.Password // Regular user can not use endpoint - _, respErr, _ := th.SystemAdminClient.UpdateUserAuth(user.Id, userAuth) + _, respErr, _ := th.SystemAdminClient.UpdateUserAuth(context.Background(), user.Id, userAuth) require.NotNil(t, respErr, "Shouldn't have permissions. Only Admins") userAuth.AuthData = model.NewString("test@test.com") userAuth.AuthService = model.UserAuthServiceSaml userAuth.Password = "newpassword" - ruser, _, err := th.SystemAdminClient.UpdateUserAuth(user.Id, userAuth) + ruser, _, err := th.SystemAdminClient.UpdateUserAuth(context.Background(), user.Id, userAuth) require.NoError(t, err) // AuthData and AuthService are set, password is set to empty @@ -2119,7 +2120,7 @@ func TestUpdateUserAuth(t *testing.T) { userAuth.AuthData = user.AuthData userAuth.AuthService = "" userAuth.Password = "1" - _, respErr, _ = th.SystemAdminClient.UpdateUserAuth(user.Id, userAuth) + _, respErr, _ = th.SystemAdminClient.UpdateUserAuth(context.Background(), user.Id, userAuth) require.NotNil(t, respErr) // Regular user can not use endpoint @@ -2128,12 +2129,12 @@ func TestUpdateUserAuth(t *testing.T) { _, err = th.App.Srv().Store().User().VerifyEmail(user2.Id, user2.Email) require.NoError(t, err) - th.SystemAdminClient.Login(user2.Email, "passwd1") + th.SystemAdminClient.Login(context.Background(), user2.Email, "passwd1") userAuth.AuthData = user.AuthData userAuth.AuthService = user.AuthService userAuth.Password = user.Password - _, respErr, _ = th.SystemAdminClient.UpdateUserAuth(user.Id, userAuth) + _, respErr, _ = th.SystemAdminClient.UpdateUserAuth(context.Background(), user.Id, userAuth) require.NotNil(t, respErr, "Should have errored") } @@ -2142,47 +2143,47 @@ func TestDeleteUser(t *testing.T) { defer th.TearDown() th.LoginBasic() - resp, err := th.Client.DeleteUser(th.SystemAdminUser.Id) + resp, err := th.Client.DeleteUser(context.Background(), th.SystemAdminUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - resp, err = th.Client.DeleteUser(th.BasicUser.Id) + th.Client.Logout(context.Background()) + resp, err = th.Client.DeleteUser(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - resp, err = c.DeleteUser(model.NewId()) + resp, err = c.DeleteUser(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = c.DeleteUser("junk") + resp, err = c.DeleteUser(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) userToDelete := th.CreateUser() - _, err = c.DeleteUser(userToDelete.Id) + _, err = c.DeleteUser(context.Background(), userToDelete.Id) require.NoError(t, err) }) selfDeleteUser := th.CreateUser() th.LoginBasic() - resp, err = th.Client.DeleteUser(selfDeleteUser.Id) + resp, err = th.Client.DeleteUser(context.Background(), selfDeleteUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Login(selfDeleteUser.Email, selfDeleteUser.Password) + th.Client.Login(context.Background(), selfDeleteUser.Email, selfDeleteUser.Password) th.App.UpdateConfig(func(c *model.Config) { *c.TeamSettings.EnableUserDeactivation = false }) - resp, err = th.Client.DeleteUser(selfDeleteUser.Id) + resp, err = th.Client.DeleteUser(context.Background(), selfDeleteUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.App.UpdateConfig(func(c *model.Config) { *c.TeamSettings.EnableUserDeactivation = true }) - _, err = th.Client.DeleteUser(selfDeleteUser.Id) + _, err = th.Client.DeleteUser(context.Background(), selfDeleteUser.Id) require.NoError(t, err) } @@ -2200,26 +2201,26 @@ func TestPermanentDeleteUser(t *testing.T) { userToDelete := th.CreateUser() t.Run("Permanent deletion not available through API if EnableAPIUserDeletion is not set", func(t *testing.T) { - resp, err := th.SystemAdminClient.PermanentDeleteUser(userToDelete.Id) + resp, err := th.SystemAdminClient.PermanentDeleteUser(context.Background(), userToDelete.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("Permanent deletion available through local mode even if EnableAPIUserDeletion is not set", func(t *testing.T) { - _, err := th.LocalClient.PermanentDeleteUser(userToDelete.Id) + _, err := th.LocalClient.PermanentDeleteUser(context.Background(), userToDelete.Id) require.NoError(t, err) }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableAPIUserDeletion = true }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { userToDelete = th.CreateUser() - _, err := c.PermanentDeleteUser(userToDelete.Id) + _, err := c.PermanentDeleteUser(context.Background(), userToDelete.Id) require.NoError(t, err) _, appErr := th.App.GetTeam(userToDelete.Id) assert.NotNil(t, appErr) - resp, err := c.PermanentDeleteUser("junk") + resp, err := c.PermanentDeleteUser(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) }, "Permanent deletion with EnableAPIUserDeletion set") @@ -2230,11 +2231,11 @@ func TestPermanentDeleteAllUsers(t *testing.T) { defer th.TearDown() t.Run("The endpoint should not be available for neither normal nor sysadmin users", func(t *testing.T) { - resp, err := th.Client.PermanentDeleteAllUsers() + resp, err := th.Client.PermanentDeleteAllUsers(context.Background()) require.Error(t, err) CheckNotFoundStatus(t, resp) - resp, err = th.SystemAdminClient.PermanentDeleteAllUsers() + resp, err = th.SystemAdminClient.PermanentDeleteAllUsers(context.Background()) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -2267,7 +2268,7 @@ func TestPermanentDeleteAllUsers(t *testing.T) { require.Greater(t, postCount, int64(0)) // Delete all users and their posts - _, err = th.LocalClient.PermanentDeleteAllUsers() + _, err = th.LocalClient.PermanentDeleteAllUsers(context.Background()) require.NoError(t, err) // Check that both user and post tables are empty @@ -2294,26 +2295,26 @@ func TestUpdateUserRoles(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - resp, err := th.Client.UpdateUserRoles(th.SystemAdminUser.Id, model.SystemUserRoleId) + resp, err := th.Client.UpdateUserRoles(context.Background(), th.SystemAdminUser.Id, model.SystemUserRoleId) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err = client.UpdateUserRoles(th.BasicUser.Id, model.SystemUserRoleId) + _, err = client.UpdateUserRoles(context.Background(), th.BasicUser.Id, model.SystemUserRoleId) require.NoError(t, err) - _, err = client.UpdateUserRoles(th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemAdminRoleId) + _, err = client.UpdateUserRoles(context.Background(), th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemAdminRoleId) require.NoError(t, err) - resp, err = client.UpdateUserRoles(th.BasicUser.Id, "junk") + resp, err = client.UpdateUserRoles(context.Background(), th.BasicUser.Id, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UpdateUserRoles("junk", model.SystemUserRoleId) + resp, err = client.UpdateUserRoles(context.Background(), "junk", model.SystemUserRoleId) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = client.UpdateUserRoles(model.NewId(), model.SystemUserRoleId) + resp, err = client.UpdateUserRoles(context.Background(), model.NewId(), model.SystemUserRoleId) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -2350,51 +2351,51 @@ func TestUpdateUserActive(t *testing.T) { user := th.BasicUser th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserDeactivation = true }) - _, err := th.Client.UpdateUserActive(user.Id, false) + _, err := th.Client.UpdateUserActive(context.Background(), user.Id, false) require.NoError(t, err) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserDeactivation = false }) - resp, err := th.Client.UpdateUserActive(user.Id, false) + resp, err := th.Client.UpdateUserActive(context.Background(), user.Id, false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.EnableUserDeactivation = true }) - resp, err = th.Client.UpdateUserActive(user.Id, false) + resp, err = th.Client.UpdateUserActive(context.Background(), user.Id, false) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic2() - resp, err = th.Client.UpdateUserActive(user.Id, true) + resp, err = th.Client.UpdateUserActive(context.Background(), user.Id, true) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = th.Client.UpdateUserActive(GenerateTestId(), true) + resp, err = th.Client.UpdateUserActive(context.Background(), GenerateTestId(), true) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = th.Client.UpdateUserActive("junk", true) + resp, err = th.Client.UpdateUserActive(context.Background(), "junk", true) require.Error(t, err) CheckBadRequestStatus(t, resp) - th.Client.Logout() + th.Client.Logout(context.Background()) - resp, err = th.Client.UpdateUserActive(user.Id, true) + resp, err = th.Client.UpdateUserActive(context.Background(), user.Id, true) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err = client.UpdateUserActive(user.Id, true) + _, err = client.UpdateUserActive(context.Background(), user.Id, true) require.NoError(t, err) - _, err = client.UpdateUserActive(user.Id, false) + _, err = client.UpdateUserActive(context.Background(), user.Id, false) require.NoError(t, err) authData := model.NewId() _, err := th.App.Srv().Store().User().UpdateAuthData(user.Id, "random", &authData, "", true) require.NoError(t, err) - _, err = client.UpdateUserActive(user.Id, false) + _, err = client.UpdateUserActive(context.Background(), user.Id, false) require.NoError(t, err) }) }) @@ -2431,7 +2432,7 @@ func TestUpdateUserActive(t *testing.T) { // and confirm event is fired for SystemAdmin and Local mode th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowEmailAddress = true }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err := client.UpdateUserActive(user.Id, false) + _, err := client.UpdateUserActive(context.Background(), user.Id, false) require.NoError(t, err) assertWebsocketEventUserUpdatedWithEmail(t, webSocketClient, user.Email) @@ -2442,7 +2443,7 @@ func TestUpdateUserActive(t *testing.T) { // and confirm event is fired for SystemAdmin and Local mode th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.PrivacySettings.ShowEmailAddress = false }) - _, err := client.UpdateUserActive(user.Id, true) + _, err := client.UpdateUserActive(context.Background(), user.Id, true) require.NoError(t, err) assertWebsocketEventUserUpdatedWithEmail(t, webSocketClient, "") @@ -2470,7 +2471,7 @@ func TestUpdateUserActive(t *testing.T) { defer th.App.UpdateConfig(func(cfg *model.Config) { *cfg.GuestAccountsSettings.Enable = true }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err := client.UpdateUserActive(user.Id, true) + resp, err := client.UpdateUserActive(context.Background(), user.Id, true) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -2494,7 +2495,7 @@ func TestUpdateUserActive(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.GuestAccountsSettings.Enable = true }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err := client.UpdateUserActive(user.Id, true) + _, err := client.UpdateUserActive(context.Background(), user.Id, true) require.NoError(t, err) }) }) @@ -2505,45 +2506,45 @@ func TestGetUsers(t *testing.T) { defer th.TearDown() th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - rusers, _, err := client.GetUsers(0, 60, "") + rusers, _, err := client.GetUsers(context.Background(), 0, 60, "") require.NoError(t, err) for _, u := range rusers { CheckUserSanitization(t, u) } - rusers, _, err = client.GetUsers(0, 1, "") + rusers, _, err = client.GetUsers(context.Background(), 0, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - rusers, _, err = client.GetUsers(1, 1, "") + rusers, _, err = client.GetUsers(context.Background(), 1, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - rusers, _, err = client.GetUsers(10000, 100, "") + rusers, _, err = client.GetUsers(context.Background(), 10000, 100, "") require.NoError(t, err) require.Empty(t, rusers, "should be no users") // Check default params for page and per_page - _, err = client.DoAPIGet("/users", "") + _, err = client.DoAPIGet(context.Background(), "/users", "") require.NoError(t, err) // Check role params validity - _, _, err = client.GetUsersWithCustomQueryParameters(0, 5, "in_channel=random_channel_id&channel_roles=random_role_doesnt_exist", "") + _, _, err = client.GetUsersWithCustomQueryParameters(context.Background(), 0, 5, "in_channel=random_channel_id&channel_roles=random_role_doesnt_exist", "") require.Error(t, err) require.Equal(t, err.Error(), ": Invalid or missing channelRoles in request body.") - _, _, err = client.GetUsersWithCustomQueryParameters(0, 5, "in_team=random_channel_id&team_roles=random_role_doesnt_exist", "") + _, _, err = client.GetUsersWithCustomQueryParameters(context.Background(), 0, 5, "in_team=random_channel_id&team_roles=random_role_doesnt_exist", "") require.Error(t, err) require.Equal(t, err.Error(), ": Invalid or missing teamRoles in request body.") - _, _, err = client.GetUsersWithCustomQueryParameters(0, 5, "roles=random_role_doesnt_exist%2Csystem_user", "") + _, _, err = client.GetUsersWithCustomQueryParameters(context.Background(), 0, 5, "roles=random_role_doesnt_exist%2Csystem_user", "") require.Error(t, err) require.Equal(t, err.Error(), ": Invalid or missing roles in request body.") - _, _, err = client.GetUsersWithCustomQueryParameters(0, 5, "role=random_role_doesnt_exist", "") + _, _, err = client.GetUsersWithCustomQueryParameters(context.Background(), 0, 5, "role=random_role_doesnt_exist", "") require.Error(t, err) require.Equal(t, err.Error(), ": Invalid or missing role in request body.") }) - th.Client.Logout() - _, resp, err := th.Client.GetUsers(0, 60, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetUsers(context.Background(), 0, 60, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2553,7 +2554,7 @@ func TestGetNewUsersInTeam(t *testing.T) { defer th.TearDown() teamId := th.BasicTeam.Id - rusers, _, err := th.Client.GetNewUsersInTeam(teamId, 0, 60, "") + rusers, _, err := th.Client.GetNewUsersInTeam(context.Background(), teamId, 0, 60, "") require.NoError(t, err) lastCreateAt := model.GetMillis() @@ -2563,12 +2564,12 @@ func TestGetNewUsersInTeam(t *testing.T) { CheckUserSanitization(t, u) } - rusers, _, err = th.Client.GetNewUsersInTeam(teamId, 1, 1, "") + rusers, _, err = th.Client.GetNewUsersInTeam(context.Background(), teamId, 1, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - th.Client.Logout() - _, resp, err := th.Client.GetNewUsersInTeam(teamId, 1, 1, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetNewUsersInTeam(context.Background(), teamId, 1, 1, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2580,7 +2581,7 @@ func TestGetRecentlyActiveUsersInTeam(t *testing.T) { th.App.SetStatusOnline(th.BasicUser.Id, true) - rusers, _, err := th.Client.GetRecentlyActiveUsersInTeam(teamId, 0, 60, "") + rusers, _, err := th.Client.GetRecentlyActiveUsersInTeam(context.Background(), teamId, 0, 60, "") require.NoError(t, err) for _, u := range rusers { @@ -2588,12 +2589,12 @@ func TestGetRecentlyActiveUsersInTeam(t *testing.T) { CheckUserSanitization(t, u) } - rusers, _, err = th.Client.GetRecentlyActiveUsersInTeam(teamId, 0, 1, "") + rusers, _, err = th.Client.GetRecentlyActiveUsersInTeam(context.Background(), teamId, 0, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - th.Client.Logout() - _, resp, err := th.Client.GetRecentlyActiveUsersInTeam(teamId, 0, 1, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetRecentlyActiveUsersInTeam(context.Background(), teamId, 0, 1, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2603,8 +2604,8 @@ func TestGetActiveUsersInTeam(t *testing.T) { defer th.TearDown() teamId := th.BasicTeam.Id - th.SystemAdminClient.UpdateUserActive(th.BasicUser2.Id, false) - rusers, _, err := th.Client.GetActiveUsersInTeam(teamId, 0, 60, "") + th.SystemAdminClient.UpdateUserActive(context.Background(), th.BasicUser2.Id, false) + rusers, _, err := th.Client.GetActiveUsersInTeam(context.Background(), teamId, 0, 60, "") require.NoError(t, err) require.NotZero(t, len(rusers)) @@ -2614,16 +2615,16 @@ func TestGetActiveUsersInTeam(t *testing.T) { CheckUserSanitization(t, u) } - rusers, _, err = th.Client.GetActiveUsersInTeam(teamId, 0, 1, "") + rusers, _, err = th.Client.GetActiveUsersInTeam(context.Background(), teamId, 0, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") // Check case where we have supplied both active and inactive flags - _, err = th.Client.DoAPIGet("/users?inactive=true&active=true", "") + _, err = th.Client.DoAPIGet(context.Background(), "/users?inactive=true&active=true", "") require.Error(t, err) - th.Client.Logout() - _, resp, err := th.Client.GetActiveUsersInTeam(teamId, 0, 1, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetActiveUsersInTeam(context.Background(), teamId, 0, 1, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -2632,12 +2633,12 @@ func TestGetUsersWithoutTeam(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, _, err := th.Client.GetUsersWithoutTeam(0, 100, "") + _, _, err := th.Client.GetUsersWithoutTeam(context.Background(), 0, 100, "") require.Error(t, err, "should prevent non-admin user from getting users without a team") // These usernames need to appear in the first 100 users for this to work - user, _, err := th.Client.CreateUser(&model.User{ + user, _, err := th.Client.CreateUser(context.Background(), &model.User{ Username: "a000000000" + model.NewId(), Email: "success+" + model.NewId() + "@simulator.amazonses.com", Password: "Password1", @@ -2646,7 +2647,7 @@ func TestGetUsersWithoutTeam(t *testing.T) { th.LinkUserToTeam(user, th.BasicTeam) defer th.App.Srv().Store().User().PermanentDelete(user.Id) - user2, _, err := th.Client.CreateUser(&model.User{ + user2, _, err := th.Client.CreateUser(context.Background(), &model.User{ Username: "a000000001" + model.NewId(), Email: "success+" + model.NewId() + "@simulator.amazonses.com", Password: "Password1", @@ -2654,7 +2655,7 @@ func TestGetUsersWithoutTeam(t *testing.T) { require.NoError(t, err) defer th.App.Srv().Store().User().PermanentDelete(user2.Id) - rusers, _, err := th.SystemAdminClient.GetUsersWithoutTeam(0, 100, "") + rusers, _, err := th.SystemAdminClient.GetUsersWithoutTeam(context.Background(), 0, 100, "") require.NoError(t, err) found1 := false @@ -2677,39 +2678,39 @@ func TestGetUsersInTeam(t *testing.T) { defer th.TearDown() teamId := th.BasicTeam.Id - rusers, resp, err := th.Client.GetUsersInTeam(teamId, 0, 60, "") + rusers, resp, err := th.Client.GetUsersInTeam(context.Background(), teamId, 0, 60, "") require.NoError(t, err) for _, u := range rusers { CheckUserSanitization(t, u) } - rusers, resp, _ = th.Client.GetUsersInTeam(teamId, 0, 60, resp.Etag) + rusers, resp, _ = th.Client.GetUsersInTeam(context.Background(), teamId, 0, 60, resp.Etag) CheckEtag(t, rusers, resp) - rusers, _, err = th.Client.GetUsersInTeam(teamId, 0, 1, "") + rusers, _, err = th.Client.GetUsersInTeam(context.Background(), teamId, 0, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - rusers, _, err = th.Client.GetUsersInTeam(teamId, 1, 1, "") + rusers, _, err = th.Client.GetUsersInTeam(context.Background(), teamId, 1, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - rusers, _, err = th.Client.GetUsersInTeam(teamId, 10000, 100, "") + rusers, _, err = th.Client.GetUsersInTeam(context.Background(), teamId, 10000, 100, "") require.NoError(t, err) require.Empty(t, rusers, "should be no users") - th.Client.Logout() - _, resp, err = th.Client.GetUsersInTeam(teamId, 0, 60, "") + th.Client.Logout(context.Background()) + _, resp, err = th.Client.GetUsersInTeam(context.Background(), teamId, 0, 60, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - th.Client.Login(user.Email, user.Password) - _, resp, err = th.Client.GetUsersInTeam(teamId, 0, 60, "") + th.Client.Login(context.Background(), user.Email, user.Password) + _, resp, err = th.Client.GetUsersInTeam(context.Background(), teamId, 0, 60, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetUsersInTeam(teamId, 0, 60, "") + _, _, err = th.SystemAdminClient.GetUsersInTeam(context.Background(), teamId, 0, 60, "") require.NoError(t, err) } @@ -2718,40 +2719,40 @@ func TestGetUsersNotInTeam(t *testing.T) { defer th.TearDown() teamId := th.BasicTeam.Id - rusers, resp, err := th.Client.GetUsersNotInTeam(teamId, 0, 60, "") + rusers, resp, err := th.Client.GetUsersNotInTeam(context.Background(), teamId, 0, 60, "") require.NoError(t, err) for _, u := range rusers { CheckUserSanitization(t, u) } require.Len(t, rusers, 2, "should be 2 users in total") - rusers, resp, _ = th.Client.GetUsersNotInTeam(teamId, 0, 60, resp.Etag) + rusers, resp, _ = th.Client.GetUsersNotInTeam(context.Background(), teamId, 0, 60, resp.Etag) CheckEtag(t, rusers, resp) - rusers, _, err = th.Client.GetUsersNotInTeam(teamId, 0, 1, "") + rusers, _, err = th.Client.GetUsersNotInTeam(context.Background(), teamId, 0, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - rusers, _, err = th.Client.GetUsersNotInTeam(teamId, 2, 1, "") + rusers, _, err = th.Client.GetUsersNotInTeam(context.Background(), teamId, 2, 1, "") require.NoError(t, err) require.Empty(t, rusers, "should be no users") - rusers, _, err = th.Client.GetUsersNotInTeam(teamId, 10000, 100, "") + rusers, _, err = th.Client.GetUsersNotInTeam(context.Background(), teamId, 10000, 100, "") require.NoError(t, err) require.Empty(t, rusers, "should be no users") - th.Client.Logout() - _, resp, err = th.Client.GetUsersNotInTeam(teamId, 0, 60, "") + th.Client.Logout(context.Background()) + _, resp, err = th.Client.GetUsersNotInTeam(context.Background(), teamId, 0, 60, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - th.Client.Login(user.Email, user.Password) - _, resp, err = th.Client.GetUsersNotInTeam(teamId, 0, 60, "") + th.Client.Login(context.Background(), user.Email, user.Password) + _, resp, err = th.Client.GetUsersNotInTeam(context.Background(), teamId, 0, 60, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetUsersNotInTeam(teamId, 0, 60, "") + _, _, err = th.SystemAdminClient.GetUsersNotInTeam(context.Background(), teamId, 0, 60, "") require.NoError(t, err) } @@ -2760,41 +2761,41 @@ func TestGetUsersInChannel(t *testing.T) { defer th.TearDown() channelId := th.BasicChannel.Id - rusers, _, err := th.Client.GetUsersInChannel(channelId, 0, 60, "") + rusers, _, err := th.Client.GetUsersInChannel(context.Background(), channelId, 0, 60, "") require.NoError(t, err) for _, u := range rusers { CheckUserSanitization(t, u) } - rusers, _, err = th.Client.GetUsersInChannel(channelId, 0, 1, "") + rusers, _, err = th.Client.GetUsersInChannel(context.Background(), channelId, 0, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - rusers, _, err = th.Client.GetUsersInChannel(channelId, 1, 1, "") + rusers, _, err = th.Client.GetUsersInChannel(context.Background(), channelId, 1, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - rusers, _, err = th.Client.GetUsersInChannel(channelId, 10000, 100, "") + rusers, _, err = th.Client.GetUsersInChannel(context.Background(), channelId, 10000, 100, "") require.NoError(t, err) require.Empty(t, rusers, "should be no users") - th.Client.Logout() - _, resp, err := th.Client.GetUsersInChannel(channelId, 0, 60, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetUsersInChannel(context.Background(), channelId, 0, 60, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) user := th.CreateUser() - th.Client.Login(user.Email, user.Password) - _, resp, err = th.Client.GetUsersInChannel(channelId, 0, 60, "") + th.Client.Login(context.Background(), user.Email, user.Password) + _, resp, err = th.Client.GetUsersInChannel(context.Background(), channelId, 0, 60, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetUsersInChannel(channelId, 0, 60, "") + _, _, err = th.SystemAdminClient.GetUsersInChannel(context.Background(), channelId, 0, 60, "") require.NoError(t, err) t.Run("Should forbid getting the members of an archived channel if users are not allowed to view archived messages", func(t *testing.T) { th.LoginBasic() - channel, _, appErr := th.SystemAdminClient.CreateChannel(&model.Channel{ + channel, _, appErr := th.SystemAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "User Created Channel", Name: model.NewId(), Type: model.ChannelTypeOpen, @@ -2805,7 +2806,7 @@ func TestGetUsersInChannel(t *testing.T) { require.Nil(t, aErr) _, aErr = th.App.AddUserToChannel(th.Context, th.BasicUser2, channel, false) require.Nil(t, aErr) - th.SystemAdminClient.DeleteChannel(channel.Id) + th.SystemAdminClient.DeleteChannel(context.Background(), channel.Id) experimentalViewArchivedChannels := *th.App.Config().TeamSettings.ExperimentalViewArchivedChannels th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalViewArchivedChannels = true }) @@ -2816,7 +2817,7 @@ func TestGetUsersInChannel(t *testing.T) { // the endpoint should work fine for all clients when viewing // archived channels is enabled for _, client := range []*model.Client4{th.SystemAdminClient, th.Client, th.LocalClient} { - users, _, userErr := client.GetUsersInChannel(channel.Id, 0, 1000, "") + users, _, userErr := client.GetUsersInChannel(context.Background(), channel.Id, 0, 1000, "") require.NoError(t, userErr) require.Len(t, users, 3) } @@ -2825,14 +2826,14 @@ func TestGetUsersInChannel(t *testing.T) { // channels is disabled for all clients but the Local one th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.ExperimentalViewArchivedChannels = false }) for _, client := range []*model.Client4{th.SystemAdminClient, th.Client} { - users, resp, userErr := client.GetUsersInChannel(channel.Id, 0, 1000, "") + users, resp, userErr := client.GetUsersInChannel(context.Background(), channel.Id, 0, 1000, "") require.Error(t, userErr) require.Len(t, users, 0) CheckForbiddenStatus(t, resp) } // local client should be able to get the users still - users, _, appErr := th.LocalClient.GetUsersInChannel(channel.Id, 0, 1000, "") + users, _, appErr := th.LocalClient.GetUsersInChannel(context.Background(), channel.Id, 0, 1000, "") require.NoError(t, appErr) require.Len(t, users, 3) }) @@ -2847,31 +2848,31 @@ func TestGetUsersNotInChannel(t *testing.T) { user := th.CreateUser() th.LinkUserToTeam(user, th.BasicTeam) - rusers, _, err := th.Client.GetUsersNotInChannel(teamId, channelId, 0, 60, "") + rusers, _, err := th.Client.GetUsersNotInChannel(context.Background(), teamId, channelId, 0, 60, "") require.NoError(t, err) for _, u := range rusers { CheckUserSanitization(t, u) } - rusers, _, err = th.Client.GetUsersNotInChannel(teamId, channelId, 0, 1, "") + rusers, _, err = th.Client.GetUsersNotInChannel(context.Background(), teamId, channelId, 0, 1, "") require.NoError(t, err) require.Len(t, rusers, 1, "should be 1 per page") - rusers, _, err = th.Client.GetUsersNotInChannel(teamId, channelId, 10000, 100, "") + rusers, _, err = th.Client.GetUsersNotInChannel(context.Background(), teamId, channelId, 10000, 100, "") require.NoError(t, err) require.Empty(t, rusers, "should be no users") - th.Client.Logout() - _, resp, err := th.Client.GetUsersNotInChannel(teamId, channelId, 0, 60, "") + th.Client.Logout(context.Background()) + _, resp, err := th.Client.GetUsersNotInChannel(context.Background(), teamId, channelId, 0, 60, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - th.Client.Login(user.Email, user.Password) - _, resp, err = th.Client.GetUsersNotInChannel(teamId, channelId, 0, 60, "") + th.Client.Login(context.Background(), user.Email, user.Password) + _, resp, err = th.Client.GetUsersNotInChannel(context.Background(), teamId, channelId, 0, 60, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, _, err = th.SystemAdminClient.GetUsersNotInChannel(teamId, channelId, 0, 60, "") + _, _, err = th.SystemAdminClient.GetUsersNotInChannel(context.Background(), teamId, channelId, 0, 60, "") require.NoError(t, err) } @@ -2903,7 +2904,7 @@ func TestGetUsersInGroup(t *testing.T) { assert.Nil(t, err) t.Run("Requires ldap license", func(t *testing.T) { - _, response, err := th.SystemAdminClient.GetUsersInGroup(group.Id, 0, 60, "") + _, response, err := th.SystemAdminClient.GetUsersInGroup(context.Background(), group.Id, 0, 60, "") require.Error(t, err) CheckForbiddenStatus(t, response) }) @@ -2911,8 +2912,8 @@ func TestGetUsersInGroup(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional)) t.Run("Requires manage system permission to access users in group", func(t *testing.T) { - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) - _, response, err := th.Client.GetUsersInGroup(group.Id, 0, 60, "") + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) + _, response, err := th.Client.GetUsersInGroup(context.Background(), group.Id, 0, 60, "") require.Error(t, err) CheckForbiddenStatus(t, response) }) @@ -2921,13 +2922,13 @@ func TestGetUsersInGroup(t *testing.T) { assert.Nil(t, err) t.Run("Returns users in group when called by system admin", func(t *testing.T) { - users, _, err := th.SystemAdminClient.GetUsersInGroup(group.Id, 0, 60, "") + users, _, err := th.SystemAdminClient.GetUsersInGroup(context.Background(), group.Id, 0, 60, "") require.NoError(t, err) assert.Equal(t, users[0].Id, user1.Id) }) t.Run("Returns no users when pagination out of range", func(t *testing.T) { - users, _, err := th.SystemAdminClient.GetUsersInGroup(group.Id, 5, 60, "") + users, _, err := th.SystemAdminClient.GetUsersInGroup(context.Background(), group.Id, 5, 60, "") require.NoError(t, err) assert.Empty(t, users) }) @@ -2936,17 +2937,17 @@ func TestGetUsersInGroup(t *testing.T) { assert.Nil(t, err) t.Run("Returns users in custom group when called by regular user", func(t *testing.T) { - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) - users, _, err := th.Client.GetUsersInGroup(customGroup.Id, 0, 60, "") + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) + users, _, err := th.Client.GetUsersInGroup(context.Background(), customGroup.Id, 0, 60, "") require.NoError(t, err) assert.Equal(t, users[0].Id, user1.Id) }) t.Run("Returns no users in custom group when called by guest user", func(t *testing.T) { - th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) th.App.DemoteUserToGuest(th.Context, th.BasicUser) - users, _, err := th.Client.GetUsersInGroup(customGroup.Id, 0, 60, "") + users, _, err := th.Client.GetUsersInGroup(context.Background(), customGroup.Id, 0, 60, "") require.NoError(t, err) assert.Equal(t, len(users), 0) }) @@ -2994,7 +2995,7 @@ func TestGetUsersInGroupByDisplayName(t *testing.T) { assert.Nil(t, err) t.Run("Returns users in group in right order for username", func(t *testing.T) { - users, _, err := th.SystemAdminClient.GetUsersInGroupByDisplayName(group.Id, 0, 1, "") + users, _, err := th.SystemAdminClient.GetUsersInGroupByDisplayName(context.Background(), group.Id, 0, 1, "") require.NoError(t, err) assert.Equal(t, users[0].Id, user2.Id) }) @@ -3004,7 +3005,7 @@ func TestGetUsersInGroupByDisplayName(t *testing.T) { assert.Nil(t, err) t.Run("Returns users in group in right order for nickname", func(t *testing.T) { - users, _, err := th.SystemAdminClient.GetUsersInGroupByDisplayName(group.Id, 0, 1, "") + users, _, err := th.SystemAdminClient.GetUsersInGroupByDisplayName(context.Background(), group.Id, 0, 1, "") require.NoError(t, err) assert.Equal(t, users[0].Id, user1.Id) }) @@ -3022,12 +3023,12 @@ func TestUpdateUserMfa(t *testing.T) { session.IsOAuth = true th.App.AddSessionToCache(session) - resp, err := th.Client.UpdateUserMfa(th.BasicUser.Id, "12345", false) + resp, err := th.Client.UpdateUserMfa(context.Background(), th.BasicUser.Id, "12345", false) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err = client.UpdateUserMfa(th.BasicUser.Id, "12345", false) + _, err = client.UpdateUserMfa(context.Background(), th.BasicUser.Id, "12345", false) require.NoError(t, err) }) } @@ -3041,7 +3042,7 @@ func TestUserLoginMFAFlow(t *testing.T) { }) t.Run("WithoutMFA", func(t *testing.T) { - _, _, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, _, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.NoError(t, err) }) @@ -3059,21 +3060,21 @@ func TestUserLoginMFAFlow(t *testing.T) { err = th.Server.Store().User().UpdateMfaSecret(th.BasicUser.Id, secret.Secret) require.NoError(t, err) - user, _, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + user, _, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) CheckErrorID(t, err, "mfa.validate_token.authenticate.app_error") assert.Nil(t, user) - user, _, err = th.Client.LoginWithMFA(th.BasicUser.Email, th.BasicUser.Password, "") + user, _, err = th.Client.LoginWithMFA(context.Background(), th.BasicUser.Email, th.BasicUser.Password, "") CheckErrorID(t, err, "mfa.validate_token.authenticate.app_error") assert.Nil(t, user) - user, _, err = th.Client.LoginWithMFA(th.BasicUser.Email, th.BasicUser.Password, "abcdefgh") + user, _, err = th.Client.LoginWithMFA(context.Background(), th.BasicUser.Email, th.BasicUser.Password, "abcdefgh") CheckErrorID(t, err, "mfa.validate_token.authenticate.app_error") assert.Nil(t, user) secret2, appErr := th.App.GenerateMfaSecret(th.BasicUser2.Id) assert.Nil(t, appErr) - user, _, err = th.Client.LoginWithMFA(th.BasicUser.Email, th.BasicUser.Password, secret2.Secret) + user, _, err = th.Client.LoginWithMFA(context.Background(), th.BasicUser.Email, th.BasicUser.Password, secret2.Secret) CheckErrorID(t, err, "mfa.validate_token.authenticate.app_error") assert.Nil(t, user) }) @@ -3091,7 +3092,7 @@ func TestUserLoginMFAFlow(t *testing.T) { code := dgoogauth.ComputeCode(secret.Secret, time.Now().UTC().Unix()/30) - user, _, err := th.Client.LoginWithMFA(th.BasicUser.Email, th.BasicUser.Password, fmt.Sprintf("%06d", code)) + user, _, err := th.Client.LoginWithMFA(context.Background(), th.BasicUser.Email, th.BasicUser.Password, fmt.Sprintf("%06d", code)) require.NoError(t, err) assert.NotNil(t, user) }) @@ -3103,22 +3104,22 @@ func TestGenerateMfaSecret(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = false }) - _, resp, err := th.Client.GenerateMfaSecret(th.BasicUser.Id) + _, resp, err := th.Client.GenerateMfaSecret(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) - _, resp, err = th.SystemAdminClient.GenerateMfaSecret(th.BasicUser.Id) + _, resp, err = th.SystemAdminClient.GenerateMfaSecret(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) - _, resp, err = th.Client.GenerateMfaSecret("junk") + _, resp, err = th.Client.GenerateMfaSecret(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) th.App.Srv().SetLicense(model.NewTestLicense("mfa")) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = true }) - _, resp, err = th.Client.GenerateMfaSecret(model.NewId()) + _, resp, err = th.Client.GenerateMfaSecret(context.Background(), model.NewId()) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -3126,13 +3127,13 @@ func TestGenerateMfaSecret(t *testing.T) { session.IsOAuth = true th.App.AddSessionToCache(session) - _, resp, err = th.Client.GenerateMfaSecret(th.BasicUser.Id) + _, resp, err = th.Client.GenerateMfaSecret(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() + th.Client.Logout(context.Background()) - _, resp, err = th.Client.GenerateMfaSecret(th.BasicUser.Id) + _, resp, err = th.Client.GenerateMfaSecret(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -3142,39 +3143,39 @@ func TestUpdateUserPassword(t *testing.T) { defer th.TearDown() password := "newpassword1" - _, err := th.Client.UpdateUserPassword(th.BasicUser.Id, th.BasicUser.Password, password) + _, err := th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, th.BasicUser.Password, password) require.NoError(t, err) - resp, err := th.Client.UpdateUserPassword(th.BasicUser.Id, password, "") + resp, err := th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, password, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.UpdateUserPassword(th.BasicUser.Id, password, "junk") + resp, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, password, "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.UpdateUserPassword("junk", password, password) + resp, err = th.Client.UpdateUserPassword(context.Background(), "junk", password, password) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.UpdateUserPassword(th.BasicUser.Id, "", password) + resp, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, "", password) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.UpdateUserPassword(th.BasicUser.Id, "junk", password) + resp, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, "junk", password) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, err = th.Client.UpdateUserPassword(th.BasicUser.Id, password, th.BasicUser.Password) + _, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, password, th.BasicUser.Password) require.NoError(t, err) - th.Client.Logout() - resp, err = th.Client.UpdateUserPassword(th.BasicUser.Id, password, password) + th.Client.Logout(context.Background()) + resp, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, password, password) require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.LoginBasic2() - resp, err = th.Client.UpdateUserPassword(th.BasicUser.Id, password, password) + resp, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, password, password) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -3184,24 +3185,24 @@ func TestUpdateUserPassword(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.MaximumLoginAttempts = 2 }) // Fail twice - resp, err = th.Client.UpdateUserPassword(th.BasicUser.Id, "badpwd", "newpwd") + resp, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, "badpwd", "newpwd") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.UpdateUserPassword(th.BasicUser.Id, "badpwd", "newpwd") + resp, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, "badpwd", "newpwd") require.Error(t, err) CheckBadRequestStatus(t, resp) // Should fail because account is locked out - resp, err = th.Client.UpdateUserPassword(th.BasicUser.Id, th.BasicUser.Password, "newpwd") + resp, err = th.Client.UpdateUserPassword(context.Background(), th.BasicUser.Id, th.BasicUser.Password, "newpwd") CheckErrorID(t, err, "api.user.check_user_login_attempts.too_many.app_error") CheckUnauthorizedStatus(t, resp) // System admin can update another user's password adminSetPassword := "pwdsetbyadmin" - _, err = th.SystemAdminClient.UpdateUserPassword(th.BasicUser.Id, "", adminSetPassword) + _, err = th.SystemAdminClient.UpdateUserPassword(context.Background(), th.BasicUser.Id, "", adminSetPassword) require.NoError(t, err) - _, _, err = th.Client.Login(th.BasicUser.Email, adminSetPassword) + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, adminSetPassword) require.NoError(t, err) } @@ -3213,16 +3214,16 @@ func TestUpdateUserHashedPassword(t *testing.T) { password := "SuperSecurePass23!" passwordHash := "$2a$10$CiS1iWVPUj7rQNdY6XW53.DmaPLsETIvmW2p0asp4Dqpofs10UL5W" th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, err := client.UpdateUserHashedPassword(th.BasicUser.Id, passwordHash) + _, err := client.UpdateUserHashedPassword(context.Background(), th.BasicUser.Id, passwordHash) require.NoError(t, err) }) - _, _, err := client.Login(th.BasicUser.Email, password) + _, _, err := client.Login(context.Background(), th.BasicUser.Email, password) require.NoError(t, err) // Standard users should never be updating their passwords with already- // hashed passwords. - resp, err := client.UpdateUserHashedPassword(th.BasicUser.Id, passwordHash) + resp, err := client.UpdateUserHashedPassword(context.Background(), th.BasicUser.Id, passwordHash) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -3232,18 +3233,18 @@ func TestResetPassword(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Logout() + th.Client.Logout(context.Background()) user := th.BasicUser // Delete all the messages before check the reset password mail.DeleteMailBox(user.Email) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, err := client.SendPasswordResetEmail(user.Email) + _, err := client.SendPasswordResetEmail(context.Background(), user.Email) require.NoError(t, err) - resp, err := client.SendPasswordResetEmail("") + resp, err := client.SendPasswordResetEmail(context.Background(), "") require.Error(t, err) CheckBadRequestStatus(t, resp) // Should not leak whether the email is attached to an account or not - _, err = client.SendPasswordResetEmail("notreal@example.com") + _, err = client.SendPasswordResetEmail(context.Background(), "notreal@example.com") require.NoError(t, err) }) // Check if the email was send to the right email address and the recovery key match @@ -3270,37 +3271,37 @@ func TestResetPassword(t *testing.T) { recoveryToken, err := th.App.Srv().Store().Token().GetByToken(recoveryTokenString) require.NoError(t, err, "Recovery token not found (%s)", recoveryTokenString) - resp, err := th.Client.ResetPassword(recoveryToken.Token, "") + resp, err := th.Client.ResetPassword(context.Background(), recoveryToken.Token, "") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.ResetPassword(recoveryToken.Token, "newp") + resp, err = th.Client.ResetPassword(context.Background(), recoveryToken.Token, "newp") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.ResetPassword("", "newpwd") + resp, err = th.Client.ResetPassword(context.Background(), "", "newpwd") require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.ResetPassword("junk", "newpwd") + resp, err = th.Client.ResetPassword(context.Background(), "junk", "newpwd") require.Error(t, err) CheckBadRequestStatus(t, resp) code := "" for i := 0; i < model.TokenSize; i++ { code += "a" } - resp, err = th.Client.ResetPassword(code, "newpwd") + resp, err = th.Client.ResetPassword(context.Background(), code, "newpwd") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, err = th.Client.ResetPassword(recoveryToken.Token, "newpwd") + _, err = th.Client.ResetPassword(context.Background(), recoveryToken.Token, "newpwd") require.NoError(t, err) - th.Client.Login(user.Email, "newpwd") - th.Client.Logout() - resp, err = th.Client.ResetPassword(recoveryToken.Token, "newpwd") + th.Client.Login(context.Background(), user.Email, "newpwd") + th.Client.Logout(context.Background()) + resp, err = th.Client.ResetPassword(context.Background(), recoveryToken.Token, "newpwd") require.Error(t, err) CheckBadRequestStatus(t, resp) authData := model.NewId() _, err = th.App.Srv().Store().User().UpdateAuthData(user.Id, "random", &authData, "", true) require.NoError(t, err) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - resp, err = client.SendPasswordResetEmail(user.Email) + resp, err = client.SendPasswordResetEmail(context.Background(), user.Email) require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -3312,38 +3313,38 @@ func TestGetSessions(t *testing.T) { user := th.BasicUser - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) - sessions, _, err := th.Client.GetSessions(user.Id, "") + sessions, _, err := th.Client.GetSessions(context.Background(), user.Id, "") require.NoError(t, err) for _, session := range sessions { require.Equal(t, user.Id, session.UserId, "user id should match session user id") } - resp, err := th.Client.RevokeSession("junk", model.NewId()) + resp, err := th.Client.RevokeSession(context.Background(), "junk", model.NewId()) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, resp, err = th.Client.GetSessions(th.BasicUser2.Id, "") + _, resp, err = th.Client.GetSessions(context.Background(), th.BasicUser2.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.Client.GetSessions(model.NewId(), "") + _, resp, err = th.Client.GetSessions(context.Background(), model.NewId(), "") require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - _, resp, err = th.Client.GetSessions(th.BasicUser2.Id, "") + th.Client.Logout(context.Background()) + _, resp, err = th.Client.GetSessions(context.Background(), th.BasicUser2.Id, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetSessions(user.Id, "") + _, _, err = th.SystemAdminClient.GetSessions(context.Background(), user.Id, "") require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetSessions(th.BasicUser2.Id, "") + _, _, err = th.SystemAdminClient.GetSessions(context.Background(), th.BasicUser2.Id, "") require.NoError(t, err) - _, _, err = th.SystemAdminClient.GetSessions(model.NewId(), "") + _, _, err = th.SystemAdminClient.GetSessions(context.Background(), model.NewId(), "") require.NoError(t, err) } @@ -3352,27 +3353,27 @@ func TestRevokeSessions(t *testing.T) { defer th.TearDown() user := th.BasicUser - th.Client.Login(user.Email, user.Password) - sessions, _, _ := th.Client.GetSessions(user.Id, "") + th.Client.Login(context.Background(), user.Email, user.Password) + sessions, _, _ := th.Client.GetSessions(context.Background(), user.Id, "") require.NotZero(t, len(sessions), "sessions should exist") for _, session := range sessions { require.Equal(t, user.Id, session.UserId, "user id does not match session user id") } session := sessions[0] - resp, err := th.Client.RevokeSession(user.Id, model.NewId()) + resp, err := th.Client.RevokeSession(context.Background(), user.Id, model.NewId()) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.RevokeSession(th.BasicUser2.Id, model.NewId()) + resp, err = th.Client.RevokeSession(context.Background(), th.BasicUser2.Id, model.NewId()) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = th.Client.RevokeSession("junk", model.NewId()) + resp, err = th.Client.RevokeSession(context.Background(), "junk", model.NewId()) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, err = th.Client.RevokeSession(user.Id, session.Id) + _, err = th.Client.RevokeSession(context.Background(), user.Id, session.Id) require.NoError(t, err) th.LoginBasic() @@ -3380,27 +3381,27 @@ func TestRevokeSessions(t *testing.T) { sessions, _ = th.App.GetSessions(th.SystemAdminUser.Id) session = sessions[0] - resp, err = th.Client.RevokeSession(user.Id, session.Id) + resp, err = th.Client.RevokeSession(context.Background(), user.Id, session.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - th.Client.Logout() - resp, err = th.Client.RevokeSession(user.Id, model.NewId()) + th.Client.Logout(context.Background()) + resp, err = th.Client.RevokeSession(context.Background(), user.Id, model.NewId()) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - resp, err = th.SystemAdminClient.RevokeSession(user.Id, model.NewId()) + resp, err = th.SystemAdminClient.RevokeSession(context.Background(), user.Id, model.NewId()) require.Error(t, err) CheckBadRequestStatus(t, resp) - sessions, _, _ = th.SystemAdminClient.GetSessions(th.SystemAdminUser.Id, "") + sessions, _, _ = th.SystemAdminClient.GetSessions(context.Background(), th.SystemAdminUser.Id, "") require.NotEmpty(t, sessions, "sessions should exist") for _, session := range sessions { require.Equal(t, th.SystemAdminUser.Id, session.UserId, "user id should match session user id") } session = sessions[0] - _, err = th.SystemAdminClient.RevokeSession(th.SystemAdminUser.Id, session.Id) + _, err = th.SystemAdminClient.RevokeSession(context.Background(), th.SystemAdminUser.Id, session.Id) require.NoError(t, err) } @@ -3409,36 +3410,36 @@ func TestRevokeAllSessions(t *testing.T) { defer th.TearDown() user := th.BasicUser - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) - resp, err := th.Client.RevokeAllSessions(th.BasicUser2.Id) + resp, err := th.Client.RevokeAllSessions(context.Background(), th.BasicUser2.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = th.Client.RevokeAllSessions("junk" + user.Id) + resp, err = th.Client.RevokeAllSessions(context.Background(), "junk"+user.Id) require.Error(t, err) CheckBadRequestStatus(t, resp) - _, err = th.Client.RevokeAllSessions(user.Id) + _, err = th.Client.RevokeAllSessions(context.Background(), user.Id) require.NoError(t, err) - th.Client.Logout() - resp, err = th.Client.RevokeAllSessions(user.Id) + th.Client.Logout(context.Background()) + resp, err = th.Client.RevokeAllSessions(context.Background(), user.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) - sessions, _, _ := th.Client.GetSessions(user.Id, "") + sessions, _, _ := th.Client.GetSessions(context.Background(), user.Id, "") require.NotEmpty(t, sessions, "session should exist") - _, err = th.Client.RevokeAllSessions(user.Id) + _, err = th.Client.RevokeAllSessions(context.Background(), user.Id) require.NoError(t, err) - sessions, _, _ = th.SystemAdminClient.GetSessions(user.Id, "") + sessions, _, _ = th.SystemAdminClient.GetSessions(context.Background(), user.Id, "") require.Empty(t, sessions, "no sessions should exist for user") - resp, err = th.Client.RevokeAllSessions(user.Id) + resp, err = th.Client.RevokeAllSessions(context.Background(), user.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -3448,31 +3449,31 @@ func TestRevokeSessionsFromAllUsers(t *testing.T) { defer th.TearDown() user := th.BasicUser - th.Client.Login(user.Email, user.Password) - resp, err := th.Client.RevokeSessionsFromAllUsers() + th.Client.Login(context.Background(), user.Email, user.Password) + resp, err := th.Client.RevokeSessionsFromAllUsers(context.Background()) require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - resp, err = th.Client.RevokeSessionsFromAllUsers() + th.Client.Logout(context.Background()) + resp, err = th.Client.RevokeSessionsFromAllUsers(context.Background()) require.Error(t, err) CheckUnauthorizedStatus(t, resp) - th.Client.Login(user.Email, user.Password) + th.Client.Login(context.Background(), user.Email, user.Password) admin := th.SystemAdminUser - th.Client.Login(admin.Email, admin.Password) + th.Client.Login(context.Background(), admin.Email, admin.Password) sessions, err := th.Server.Store().Session().GetSessions(user.Id) require.NotEmpty(t, sessions) require.NoError(t, err) sessions, err = th.Server.Store().Session().GetSessions(admin.Id) require.NotEmpty(t, sessions) require.NoError(t, err) - _, err = th.Client.RevokeSessionsFromAllUsers() + _, err = th.Client.RevokeSessionsFromAllUsers(context.Background()) require.NoError(t, err) // All sessions were revoked, so making the same call // again will fail due to lack of a session. - resp, err = th.Client.RevokeSessionsFromAllUsers() + resp, err = th.Client.RevokeSessionsFromAllUsers(context.Background()) require.Error(t, err) CheckUnauthorizedStatus(t, resp) @@ -3509,7 +3510,7 @@ func TestAttachDeviceId(t *testing.T) { *cfg.ServiceSettings.SiteURL = tc.SiteURL }) - resp, err := th.Client.AttachDeviceId(deviceId) + resp, err := th.Client.AttachDeviceId(context.Background(), deviceId) require.NoError(t, err) cookies := resp.Header.Get("Set-Cookie") @@ -3523,15 +3524,15 @@ func TestAttachDeviceId(t *testing.T) { }) t.Run("invalid device id", func(t *testing.T) { - resp, err := th.Client.AttachDeviceId("") + resp, err := th.Client.AttachDeviceId(context.Background(), "") require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("not logged in", func(t *testing.T) { - th.Client.Logout() + th.Client.Logout(context.Background()) - resp, err := th.Client.AttachDeviceId("") + resp, err := th.Client.AttachDeviceId(context.Background(), "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -3542,22 +3543,22 @@ func TestGetUserAudits(t *testing.T) { defer th.TearDown() user := th.BasicUser - audits, _, err := th.Client.GetUserAudits(user.Id, 0, 100, "") + audits, _, err := th.Client.GetUserAudits(context.Background(), user.Id, 0, 100, "") for _, audit := range audits { require.Equal(t, user.Id, audit.UserId, "user id should match audit user id") } require.NoError(t, err) - _, resp, err := th.Client.GetUserAudits(th.BasicUser2.Id, 0, 100, "") + _, resp, err := th.Client.GetUserAudits(context.Background(), th.BasicUser2.Id, 0, 100, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - th.Client.Logout() - _, resp, err = th.Client.GetUserAudits(user.Id, 0, 100, "") + th.Client.Logout(context.Background()) + _, resp, err = th.Client.GetUserAudits(context.Background(), user.Id, 0, 100, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) - _, _, err = th.SystemAdminClient.GetUserAudits(user.Id, 0, 100, "") + _, _, err = th.SystemAdminClient.GetUserAudits(context.Background(), user.Id, 0, 100, "") require.NoError(t, err) } @@ -3568,19 +3569,19 @@ func TestVerifyUserEmail(t *testing.T) { email := th.GenerateTestEmail() user := model.User{Email: email, Nickname: "Darth Vader", Password: "hello1", Username: GenerateTestUsername(), Roles: model.SystemAdminRoleId + " " + model.SystemUserRoleId} - ruser, _, _ := th.Client.CreateUser(&user) + ruser, _, _ := th.Client.CreateUser(context.Background(), &user) token, err := th.App.Srv().EmailService.CreateVerifyEmailToken(ruser.Id, email) require.NoError(t, err, "Unable to create email verify token") - _, err = th.Client.VerifyUserEmail(token.Token) + _, err = th.Client.VerifyUserEmail(context.Background(), token.Token) require.NoError(t, err) - resp, err := th.Client.VerifyUserEmail(GenerateTestId()) + resp, err := th.Client.VerifyUserEmail(context.Background(), GenerateTestId()) require.Error(t, err) CheckBadRequestStatus(t, resp) - resp, err = th.Client.VerifyUserEmail("") + resp, err = th.Client.VerifyUserEmail(context.Background(), "") require.Error(t, err) CheckBadRequestStatus(t, resp) } @@ -3589,19 +3590,19 @@ func TestSendVerificationEmail(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, err := th.Client.SendVerificationEmail(th.BasicUser.Email) + _, err := th.Client.SendVerificationEmail(context.Background(), th.BasicUser.Email) require.NoError(t, err) - resp, err := th.Client.SendVerificationEmail("") + resp, err := th.Client.SendVerificationEmail(context.Background(), "") require.Error(t, err) CheckBadRequestStatus(t, resp) // Even non-existent emails should return 200 OK - _, err = th.Client.SendVerificationEmail(th.GenerateTestEmail()) + _, err = th.Client.SendVerificationEmail(context.Background(), th.GenerateTestEmail()) require.NoError(t, err) - th.Client.Logout() - _, err = th.Client.SendVerificationEmail(th.BasicUser.Email) + th.Client.Logout(context.Background()) + _, err = th.Client.SendVerificationEmail(context.Background(), th.BasicUser.Email) require.NoError(t, err) } @@ -3613,17 +3614,17 @@ func TestSetProfileImage(t *testing.T) { data, err := testutils.ReadTestFile("test.png") require.NoError(t, err) - _, err = th.Client.SetProfileImage(user.Id, data) + _, err = th.Client.SetProfileImage(context.Background(), user.Id, data) require.NoError(t, err) - resp, err := th.Client.SetProfileImage(model.NewId(), data) + resp, err := th.Client.SetProfileImage(context.Background(), model.NewId(), data) require.Error(t, err) CheckForbiddenStatus(t, resp) // status code returns either forbidden or unauthorized // note: forbidden is set as default at Client4.SetProfileImage when request is terminated early by server - th.Client.Logout() - resp, err = th.Client.SetProfileImage(user.Id, data) + th.Client.Logout(context.Background()) + resp, err = th.Client.SetProfileImage(context.Background(), user.Id, data) require.Error(t, err) if resp.StatusCode == http.StatusForbidden { CheckForbiddenStatus(t, resp) @@ -3636,7 +3637,7 @@ func TestSetProfileImage(t *testing.T) { buser, appErr := th.App.GetUser(user.Id) require.Nil(t, appErr) - _, err = th.SystemAdminClient.SetProfileImage(user.Id, data) + _, err = th.SystemAdminClient.SetProfileImage(context.Background(), user.Id, data) require.NoError(t, err) ruser, appErr := th.App.GetUser(user.Id) @@ -3646,7 +3647,7 @@ func TestSetProfileImage(t *testing.T) { data2, err := testutils.ReadTestFile("testjpg.jpg") require.NoError(t, err) - _, err = th.SystemAdminClient.SetProfileImage(user.Id, data2) + _, err = th.SystemAdminClient.SetProfileImage(context.Background(), user.Id, data2) require.NoError(t, err) ruser, appErr = th.App.GetUser(user.Id) @@ -3667,21 +3668,21 @@ func TestSetDefaultProfileImage(t *testing.T) { startTime := model.GetMillis() time.Sleep(time.Millisecond) - _, err := th.Client.SetDefaultProfileImage(user.Id) + _, err := th.Client.SetDefaultProfileImage(context.Background(), user.Id) require.NoError(t, err) iuser, getUserErr := th.App.GetUser(user.Id) require.Nil(t, getUserErr) assert.Less(t, iuser.LastPictureUpdate, -startTime, "LastPictureUpdate should be set to -(current time in milliseconds)") - resp, err := th.Client.SetDefaultProfileImage(model.NewId()) + resp, err := th.Client.SetDefaultProfileImage(context.Background(), model.NewId()) require.Error(t, err) CheckForbiddenStatus(t, resp) // status code returns either forbidden or unauthorized // note: forbidden is set as default at Client4.SetDefaultProfileImage when request is terminated early by server - th.Client.Logout() - resp, err = th.Client.SetDefaultProfileImage(user.Id) + th.Client.Logout(context.Background()) + resp, err = th.Client.SetDefaultProfileImage(context.Background(), user.Id) require.Error(t, err) if resp.StatusCode == http.StatusForbidden { CheckForbiddenStatus(t, resp) @@ -3693,7 +3694,7 @@ func TestSetDefaultProfileImage(t *testing.T) { time.Sleep(time.Millisecond) - _, err = th.SystemAdminClient.SetDefaultProfileImage(user.Id) + _, err = th.SystemAdminClient.SetDefaultProfileImage(context.Background(), user.Id) require.NoError(t, err) ruser, appErr := th.App.GetUser(user.Id) @@ -3708,41 +3709,41 @@ func TestSetDefaultProfileImage(t *testing.T) { func TestLogin(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Logout() + th.Client.Logout(context.Background()) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) t.Run("missing password", func(t *testing.T) { - _, _, err := th.Client.Login(th.BasicUser.Email, "") + _, _, err := th.Client.Login(context.Background(), th.BasicUser.Email, "") CheckErrorID(t, err, "api.user.login.blank_pwd.app_error") }) t.Run("unknown user", func(t *testing.T) { - _, _, err := th.Client.Login("unknown", th.BasicUser.Password) + _, _, err := th.Client.Login(context.Background(), "unknown", th.BasicUser.Password) CheckErrorID(t, err, "api.user.login.invalid_credentials_email_username") }) t.Run("valid login", func(t *testing.T) { - user, _, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + user, _, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.NoError(t, err) assert.Equal(t, user.Id, th.BasicUser.Id) }) t.Run("bot login rejected", func(t *testing.T) { - bot, _, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot, _, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: "bot", }) require.NoError(t, err) - botUser, _, err := th.SystemAdminClient.GetUser(bot.UserId, "") + botUser, _, err := th.SystemAdminClient.GetUser(context.Background(), bot.UserId, "") require.NoError(t, err) - _, err = th.SystemAdminClient.UpdateUserPassword(bot.UserId, "", "password") + _, err = th.SystemAdminClient.UpdateUserPassword(context.Background(), bot.UserId, "", "password") require.NoError(t, err) - _, _, err = th.Client.Login(botUser.Email, "password") + _, _, err = th.Client.Login(context.Background(), botUser.Email, "password") CheckErrorID(t, err, "api.user.login.bot_login_forbidden.app_error") }) @@ -3750,13 +3751,13 @@ func TestLogin(t *testing.T) { termsOfService, appErr := th.App.CreateTermsOfService("terms of service", th.BasicUser.Id) require.Nil(t, appErr) - _, err := th.Client.RegisterTermsOfServiceAction(th.BasicUser.Id, termsOfService.Id, true) + _, err := th.Client.RegisterTermsOfServiceAction(context.Background(), th.BasicUser.Id, termsOfService.Id, true) require.NoError(t, err) - userTermsOfService, _, err := th.Client.GetUserTermsOfService(th.BasicUser.Id, "") + userTermsOfService, _, err := th.Client.GetUserTermsOfService(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) - user, _, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + user, _, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.NoError(t, err) assert.Equal(t, user.Id, th.BasicUser.Id) assert.Equal(t, user.TermsOfServiceId, userTermsOfService.TermsOfServiceId) @@ -3767,7 +3768,7 @@ func TestLogin(t *testing.T) { func TestLoginWithLag(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - th.Client.Logout() + th.Client.Logout(context.Background()) t.Run("with replication lag, caches cleared", func(t *testing.T) { if !replicaFlag { @@ -3791,7 +3792,7 @@ func TestLoginWithLag(t *testing.T) { require.NoError(t, cmdErr) defer mainHelper.SetReplicationLagForTesting(0) - _, _, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, _, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.NoError(t, err) appErr = th.App.Srv().InvalidateAllCaches() @@ -3810,7 +3811,7 @@ func TestLoginCookies(t *testing.T) { th.Client.HTTPHeader[model.HeaderRequestedWith] = model.HeaderRequestedWithXML - user, resp, _ := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + user, resp, _ := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) sessionCookie := "" userCookie := "" @@ -3837,7 +3838,7 @@ func TestLoginCookies(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, resp, _ := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, resp, _ := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) assert.Empty(t, resp.Header.Get("Set-Cookie")) }) @@ -3863,7 +3864,7 @@ func TestLoginCookies(t *testing.T) { *cfg.ServiceSettings.SiteURL = tc.SiteURL }) - user, resp, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + user, resp, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.NoError(t, err) assert.Equal(t, user.Id, th.BasicUser.Id) @@ -3883,7 +3884,7 @@ func TestLoginCookies(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("cloud")) th.Client.HTTPHeader[model.HeaderRequestedWith] = model.HeaderRequestedWithXML - _, resp, _ := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, resp, _ := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) found := false cookies := resp.Header.Values("Set-Cookie") @@ -3918,7 +3919,7 @@ func TestLoginCookies(t *testing.T) { return http.ErrUseLastResponse } - r, _ := th.Client.DoAPIRequestWithHeaders( + r, _ := th.Client.DoAPIRequestWithHeaders(context.Background(), http.MethodPost, th.Client.APIURL+"/users/login/cws", form.Encode(), @@ -3948,7 +3949,7 @@ func TestLoginCookies(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("cloud")) - _, resp, _ := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, resp, _ := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) cloudSessionCookie := "" for _, cookie := range resp.Header["Set-Cookie"] { @@ -3967,7 +3968,7 @@ func TestLoginCookies(t *testing.T) { th := SetupAndApplyConfigBeforeLogin(t, updateConfig).InitBasic() defer th.TearDown() - _, resp, _ := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, resp, _ := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) cloudSessionCookie := "" for _, cookie := range resp.Header["Set-Cookie"] { @@ -3996,48 +3997,48 @@ func TestCBALogin(t *testing.T) { }) t.Run("missing cert header", func(t *testing.T) { - th.Client.Logout() - _, resp, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Logout(context.Background()) + _, resp, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("missing cert subject", func(t *testing.T) { - th.Client.Logout() + th.Client.Logout(context.Background()) th.Client.HTTPHeader["X-SSL-Client-Cert"] = "valid_cert_fake" - _, resp, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, resp, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("emails mismatch", func(t *testing.T) { - th.Client.Logout() + th.Client.Logout(context.Background()) th.Client.HTTPHeader["X-SSL-Client-Cert-Subject-DN"] = "C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/emailAddress=mis_match" + th.BasicUser.Email - _, resp, err := th.Client.Login(th.BasicUser.Email, "") + _, resp, err := th.Client.Login(context.Background(), th.BasicUser.Email, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) t.Run("successful cba login", func(t *testing.T) { th.Client.HTTPHeader["X-SSL-Client-Cert-Subject-DN"] = "C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/emailAddress=" + th.BasicUser.Email - user, _, err := th.Client.Login(th.BasicUser.Email, "") + user, _, err := th.Client.Login(context.Background(), th.BasicUser.Email, "") require.NoError(t, err) require.NotNil(t, user) require.Equal(t, th.BasicUser.Id, user.Id) }) t.Run("bot login rejected", func(t *testing.T) { - bot, _, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot, _, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: "bot", }) require.NoError(t, err) - botUser, _, err := th.SystemAdminClient.GetUser(bot.UserId, "") + botUser, _, err := th.SystemAdminClient.GetUser(context.Background(), bot.UserId, "") require.NoError(t, err) th.Client.HTTPHeader["X-SSL-Client-Cert-Subject-DN"] = "C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/emailAddress=" + botUser.Email - _, _, err = th.Client.Login(botUser.Email, "") + _, _, err = th.Client.Login(context.Background(), botUser.Email, "") CheckErrorID(t, err, "api.user.login.bot_login_forbidden.app_error") }) }) @@ -4060,34 +4061,34 @@ func TestCBALogin(t *testing.T) { t.Run("password required", func(t *testing.T) { th.Client.HTTPHeader["X-SSL-Client-Cert-Subject-DN"] = "C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/emailAddress=" + th.BasicUser.Email - _, resp, err := th.Client.Login(th.BasicUser.Email, "") + _, resp, err := th.Client.Login(context.Background(), th.BasicUser.Email, "") require.Error(t, err) CheckBadRequestStatus(t, resp) }) t.Run("successful cba login with password", func(t *testing.T) { th.Client.HTTPHeader["X-SSL-Client-Cert-Subject-DN"] = "C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/emailAddress=" + th.BasicUser.Email - user, _, err := th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + user, _, err := th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.NoError(t, err) require.NotNil(t, user) require.Equal(t, th.BasicUser.Id, user.Id) }) t.Run("bot login rejected", func(t *testing.T) { - bot, _, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot, _, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: "bot", }) require.NoError(t, err) - botUser, _, err := th.SystemAdminClient.GetUser(bot.UserId, "") + botUser, _, err := th.SystemAdminClient.GetUser(context.Background(), bot.UserId, "") require.NoError(t, err) - _, err = th.SystemAdminClient.UpdateUserPassword(bot.UserId, "", "password") + _, err = th.SystemAdminClient.UpdateUserPassword(context.Background(), bot.UserId, "", "password") require.NoError(t, err) th.Client.HTTPHeader["X-SSL-Client-Cert-Subject-DN"] = "C=US, ST=Maryland, L=Pasadena, O=Brent Baccala, OU=FreeSoft, CN=www.freesoft.org/emailAddress=" + botUser.Email - _, _, err = th.Client.Login(botUser.Email, "password") + _, _, err = th.Client.Login(context.Background(), botUser.Email, "password") CheckErrorID(t, err, "api.user.login.bot_login_forbidden.app_error") }) }) @@ -4099,7 +4100,7 @@ func TestSwitchAccount(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.GitLabSettings.Enable = true }) - th.Client.Logout() + th.Client.Logout(context.Background()) sr := &model.SwitchRequest{ CurrentService: model.UserAuthServiceEmail, @@ -4108,7 +4109,7 @@ func TestSwitchAccount(t *testing.T) { Password: th.BasicUser.Password, } - link, _, err := th.Client.SwitchAccountType(sr) + link, _, err := th.Client.SwitchAccountType(context.Background(), sr) require.NoError(t, err) require.NotEmpty(t, link, "bad link") @@ -4121,7 +4122,7 @@ func TestSwitchAccount(t *testing.T) { NewService: model.UserAuthServiceGitlab, } - _, resp, err := th.Client.SwitchAccountType(sr) + _, resp, err := th.Client.SwitchAccountType(context.Background(), sr) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -4134,7 +4135,7 @@ func TestSwitchAccount(t *testing.T) { NewPassword: th.BasicUser.Password, } - _, resp, err = th.Client.SwitchAccountType(sr) + _, resp, err = th.Client.SwitchAccountType(context.Background(), sr) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -4143,7 +4144,7 @@ func TestSwitchAccount(t *testing.T) { NewService: model.UserAuthServiceLdap, } - _, resp, err = th.Client.SwitchAccountType(sr) + _, resp, err = th.Client.SwitchAccountType(context.Background(), sr) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -4152,7 +4153,7 @@ func TestSwitchAccount(t *testing.T) { NewService: model.UserAuthServiceEmail, } - _, resp, err = th.Client.SwitchAccountType(sr) + _, resp, err = th.Client.SwitchAccountType(context.Background(), sr) require.Error(t, err) CheckForbiddenStatus(t, resp) @@ -4171,22 +4172,22 @@ func TestSwitchAccount(t *testing.T) { NewPassword: th.BasicUser.Password, } - link, _, err = th.Client.SwitchAccountType(sr) + link, _, err = th.Client.SwitchAccountType(context.Background(), sr) require.NoError(t, err) require.Equal(t, "/login?extra=signin_change", link) - th.Client.Logout() - _, _, err = th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + th.Client.Logout(context.Background()) + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) require.NoError(t, err) - th.Client.Logout() + th.Client.Logout(context.Background()) sr = &model.SwitchRequest{ CurrentService: model.UserAuthServiceGitlab, NewService: model.ServiceGoogle, } - _, resp, err = th.Client.SwitchAccountType(sr) + _, resp, err = th.Client.SwitchAccountType(context.Background(), sr) require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -4196,7 +4197,7 @@ func TestSwitchAccount(t *testing.T) { Password: th.BasicUser.Password, } - _, resp, err = th.Client.SwitchAccountType(sr) + _, resp, err = th.Client.SwitchAccountType(context.Background(), sr) require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -4206,7 +4207,7 @@ func TestSwitchAccount(t *testing.T) { Email: th.BasicUser.Email, } - _, resp, err = th.Client.SwitchAccountType(sr) + _, resp, err = th.Client.SwitchAccountType(context.Background(), sr) require.Error(t, err) CheckUnauthorizedStatus(t, resp) @@ -4217,7 +4218,7 @@ func TestSwitchAccount(t *testing.T) { NewPassword: th.BasicUser.Password, } - _, resp, err = th.Client.SwitchAccountType(sr) + _, resp, err = th.Client.SwitchAccountType(context.Background(), sr) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -4229,7 +4230,7 @@ func assertToken(t *testing.T, th *TestHelper, token *model.UserAccessToken, exp defer func() { th.Client.AuthToken = oldSessionToken }() th.Client.AuthToken = token.Token - ruser, _, err := th.Client.GetMe("") + ruser, _, err := th.Client.GetMe(context.Background(), "") require.NoError(t, err) assert.Equal(t, expectedUserId, ruser.Id, "returned wrong user") @@ -4242,7 +4243,7 @@ func assertInvalidToken(t *testing.T, th *TestHelper, token *model.UserAccessTok defer func() { th.Client.AuthToken = oldSessionToken }() th.Client.AuthToken = token.Token - _, resp, err := th.Client.GetMe("") + _, resp, err := th.Client.GetMe(context.Background(), "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -4254,7 +4255,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) - _, resp, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + _, resp, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4266,7 +4267,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - rtoken, _, err := client.CreateUserAccessToken(th.BasicUser.Id, "test token") + rtoken, _, err := client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) assert.Equal(t, th.BasicUser.Id, rtoken.UserId, "wrong user id") @@ -4285,7 +4286,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.CreateUserAccessToken("notarealuserid", "test token") + _, resp, err := client.CreateUserAccessToken(context.Background(), "notarealuserid", "test token") require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -4298,7 +4299,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.CreateUserAccessToken(th.BasicUser.Id, "") + _, resp, err := client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "") require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -4312,7 +4313,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.CreateUserAccessToken(th.BasicUser.Id, "test token") + _, resp, err := client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -4325,7 +4326,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - rtoken, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + rtoken, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) assert.Equal(t, th.BasicUser.Id, rtoken.UserId, "wrong user id") @@ -4343,7 +4344,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) - _, resp, err := th.Client.CreateUserAccessToken(th.BasicUser2.Id, "test token") + _, resp, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser2.Id, "test token") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4356,7 +4357,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.AddPermissionToRole(model.PermissionEditOtherUsers.Id, model.SystemUserManagerRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserManagerRoleId+" "+model.SystemUserAccessTokenRoleId, false) - rtoken, _, err := th.Client.CreateUserAccessToken(th.BasicUser2.Id, "test token") + rtoken, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser2.Id, "test token") require.NoError(t, err) assert.Equal(t, th.BasicUser2.Id, rtoken.UserId) @@ -4374,7 +4375,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.AddPermissionToRole(model.PermissionEditOtherUsers.Id, model.SystemUserManagerRoleId) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserManagerRoleId+" "+model.SystemUserAccessTokenRoleId, false) - _, resp, err := th.Client.CreateUserAccessToken(th.SystemAdminUser.Id, "test token") + _, resp, err := th.Client.CreateUserAccessToken(context.Background(), th.SystemAdminUser.Id, "test token") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4385,7 +4386,7 @@ func TestCreateUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) - rtoken, _, err := th.SystemAdminClient.CreateUserAccessToken(th.BasicUser.Id, "test token") + rtoken, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) assert.Equal(t, th.BasicUser.Id, rtoken.UserId) @@ -4405,7 +4406,7 @@ func TestCreateUserAccessToken(t *testing.T) { session.IsOAuth = true th.App.AddSessionToCache(session) - _, resp, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + _, resp, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4424,7 +4425,7 @@ func TestCreateUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -4436,7 +4437,7 @@ func TestCreateUserAccessToken(t *testing.T) { t.Run("without MANAGE_BOT permission", func(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - _, resp, err = th.Client.CreateUserAccessToken(createdBot.UserId, "test token") + _, resp, err = th.Client.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4444,7 +4445,7 @@ func TestCreateUserAccessToken(t *testing.T) { t.Run("with MANAGE_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - token, _, err := th.Client.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) assert.Equal(t, createdBot.UserId, token.UserId) assertToken(t, th, token, createdBot.UserId) @@ -4466,7 +4467,7 @@ func TestCreateUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -4476,7 +4477,7 @@ func TestCreateUserAccessToken(t *testing.T) { defer th.App.PermanentDeleteBot(createdBot.UserId) t.Run("only having MANAGE_BOTS permission", func(t *testing.T) { - _, resp, err = th.Client.CreateUserAccessToken(createdBot.UserId, "test token") + _, resp, err = th.Client.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4484,7 +4485,7 @@ func TestCreateUserAccessToken(t *testing.T) { t.Run("with MANAGE_OTHERS_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.TeamUserRoleId) - rtoken, _, err := th.Client.CreateUserAccessToken(createdBot.UserId, "test token") + rtoken, _, err := th.Client.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) assert.Equal(t, createdBot.UserId, rtoken.UserId) @@ -4500,7 +4501,7 @@ func TestGetUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) - _, resp, err := th.Client.GetUserAccessToken("123") + _, resp, err := th.Client.GetUserAccessToken(context.Background(), "123") require.Error(t, err) CheckBadRequestStatus(t, resp) }) @@ -4511,7 +4512,7 @@ func TestGetUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) - _, resp, err := th.Client.GetUserAccessToken(model.NewId()) + _, resp, err := th.Client.GetUserAccessToken(context.Background(), model.NewId()) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4523,10 +4524,10 @@ func TestGetUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - token, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) - rtoken, _, err := th.Client.GetUserAccessToken(token.Id) + rtoken, _, err := th.Client.GetUserAccessToken(context.Background(), token.Id) require.NoError(t, err) assert.Equal(t, th.BasicUser.Id, rtoken.UserId, "wrong user id") @@ -4543,10 +4544,10 @@ func TestGetUserAccessToken(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - token, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) - rtoken, _, err := th.SystemAdminClient.GetUserAccessToken(token.Id) + rtoken, _, err := th.SystemAdminClient.GetUserAccessToken(context.Background(), token.Id) require.NoError(t, err) assert.Equal(t, th.BasicUser.Id, rtoken.UserId, "wrong user id") @@ -4571,7 +4572,7 @@ func TestGetUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -4580,13 +4581,13 @@ func TestGetUserAccessToken(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - token, _, err := th.Client.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) t.Run("without MANAGE_BOTS permission", func(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - _, resp, err := th.Client.GetUserAccessToken(token.Id) + _, resp, err := th.Client.GetUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4594,7 +4595,7 @@ func TestGetUserAccessToken(t *testing.T) { t.Run("with MANAGE_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - returnedToken, _, err := th.Client.GetUserAccessToken(token.Id) + returnedToken, _, err := th.Client.GetUserAccessToken(context.Background(), token.Id) require.NoError(t, err) // Actual token won't be returned. @@ -4619,7 +4620,7 @@ func TestGetUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -4628,11 +4629,11 @@ func TestGetUserAccessToken(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - token, _, err := th.SystemAdminClient.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) t.Run("only having MANAGE_BOTS permission", func(t *testing.T) { - _, resp, err := th.Client.GetUserAccessToken(token.Id) + _, resp, err := th.Client.GetUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4640,7 +4641,7 @@ func TestGetUserAccessToken(t *testing.T) { t.Run("with MANAGE_OTHERS_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.TeamUserRoleId) - returnedToken, _, err := th.Client.GetUserAccessToken(token.Id) + returnedToken, _, err := th.Client.GetUserAccessToken(context.Background(), token.Id) require.NoError(t, err) // Actual token won't be returned. @@ -4659,14 +4660,14 @@ func TestGetUserAccessTokensForUser(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - _, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + _, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) - _, _, err = th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token 2") + _, _, err = th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token 2") require.NoError(t, err) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - rtokens, _, err := client.GetUserAccessTokensForUser(th.BasicUser.Id, 0, 100) + rtokens, _, err := client.GetUserAccessTokensForUser(context.Background(), th.BasicUser.Id, 0, 100) require.NoError(t, err) assert.Len(t, rtokens, 2, "should have 2 tokens") @@ -4684,14 +4685,14 @@ func TestGetUserAccessTokensForUser(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - _, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + _, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) - _, _, err = th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token 2") + _, _, err = th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token 2") require.NoError(t, err) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - rtokens, _, err := client.GetUserAccessTokensForUser(th.BasicUser.Id, 1, 1) + rtokens, _, err := client.GetUserAccessTokensForUser(context.Background(), th.BasicUser.Id, 1, 1) require.NoError(t, err) assert.Len(t, rtokens, 1, "should have 1 tokens") @@ -4711,7 +4712,7 @@ func TestGetUserAccessTokens(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - _, resp, err := th.Client.GetUserAccessTokens(0, 100) + _, resp, err := th.Client.GetUserAccessTokens(context.Background(), 0, 100) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4724,13 +4725,13 @@ func TestGetUserAccessTokens(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - _, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token 2") + _, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token 2") require.NoError(t, err) - _, _, err = th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token 2") + _, _, err = th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token 2") require.NoError(t, err) - rtokens, _, err := th.SystemAdminClient.GetUserAccessTokens(1, 1) + rtokens, _, err := th.SystemAdminClient.GetUserAccessTokens(context.Background(), 1, 1) require.NoError(t, err) assert.Len(t, rtokens, 1, "should have 1 token") @@ -4744,13 +4745,13 @@ func TestGetUserAccessTokens(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - _, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token 2") + _, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token 2") require.NoError(t, err) - _, _, err = th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token 2") + _, _, err = th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token 2") require.NoError(t, err) - rtokens, _, err := th.SystemAdminClient.GetUserAccessTokens(0, 2) + rtokens, _, err := th.SystemAdminClient.GetUserAccessTokens(context.Background(), 0, 2) require.NoError(t, err) assert.Len(t, rtokens, 2, "should have 2 tokens") @@ -4766,29 +4767,29 @@ func TestSearchUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - token, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) + token, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, testDescription) require.NoError(t, err) - _, resp, err := th.Client.SearchUserAccessTokens(&model.UserAccessTokenSearch{Term: token.Id}) + _, resp, err := th.Client.SearchUserAccessTokens(context.Background(), &model.UserAccessTokenSearch{Term: token.Id}) require.Error(t, err) CheckForbiddenStatus(t, resp) - rtokens, _, err := th.SystemAdminClient.SearchUserAccessTokens(&model.UserAccessTokenSearch{Term: th.BasicUser.Id}) + rtokens, _, err := th.SystemAdminClient.SearchUserAccessTokens(context.Background(), &model.UserAccessTokenSearch{Term: th.BasicUser.Id}) require.NoError(t, err) require.Len(t, rtokens, 1, "should have 1 token") - rtokens, _, err = th.SystemAdminClient.SearchUserAccessTokens(&model.UserAccessTokenSearch{Term: token.Id}) + rtokens, _, err = th.SystemAdminClient.SearchUserAccessTokens(context.Background(), &model.UserAccessTokenSearch{Term: token.Id}) require.NoError(t, err) require.Len(t, rtokens, 1, "should have 1 token") - rtokens, _, err = th.SystemAdminClient.SearchUserAccessTokens(&model.UserAccessTokenSearch{Term: th.BasicUser.Username}) + rtokens, _, err = th.SystemAdminClient.SearchUserAccessTokens(context.Background(), &model.UserAccessTokenSearch{Term: th.BasicUser.Username}) require.NoError(t, err) require.Len(t, rtokens, 1, "should have 1 token") - rtokens, _, err = th.SystemAdminClient.SearchUserAccessTokens(&model.UserAccessTokenSearch{Term: "not found"}) + rtokens, _, err = th.SystemAdminClient.SearchUserAccessTokens(context.Background(), &model.UserAccessTokenSearch{Term: "not found"}) require.NoError(t, err) require.Empty(t, rtokens, "should have 1 tokens") @@ -4803,11 +4804,11 @@ func TestRevokeUserAccessToken(t *testing.T) { th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) th.TestForAllClients(t, func(t *testing.T, client *model.Client4) { - token, _, err := client.CreateUserAccessToken(th.BasicUser.Id, "test token") + token, _, err := client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) assertToken(t, th, token, th.BasicUser.Id) - _, err = client.RevokeUserAccessToken(token.Id) + _, err = client.RevokeUserAccessToken(context.Background(), token.Id) require.NoError(t, err) assertInvalidToken(t, th, token) @@ -4820,10 +4821,10 @@ func TestRevokeUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) - token, _, err := th.SystemAdminClient.CreateUserAccessToken(th.BasicUser2.Id, "test token") + token, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), th.BasicUser2.Id, "test token") require.NoError(t, err) - resp, err := th.Client.RevokeUserAccessToken(token.Id) + resp, err := th.Client.RevokeUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4844,7 +4845,7 @@ func TestRevokeUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -4853,13 +4854,13 @@ func TestRevokeUserAccessToken(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - token, _, err := th.Client.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) t.Run("without MANAGE_BOTS permission", func(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - resp, err := th.Client.RevokeUserAccessToken(token.Id) + resp, err := th.Client.RevokeUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4867,7 +4868,7 @@ func TestRevokeUserAccessToken(t *testing.T) { t.Run("with MANAGE_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - _, err := th.Client.RevokeUserAccessToken(token.Id) + _, err := th.Client.RevokeUserAccessToken(context.Background(), token.Id) require.NoError(t, err) }) }) @@ -4888,7 +4889,7 @@ func TestRevokeUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -4897,11 +4898,11 @@ func TestRevokeUserAccessToken(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - token, _, err := th.SystemAdminClient.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) t.Run("only having MANAGE_BOTS permission", func(t *testing.T) { - resp, err = th.Client.RevokeUserAccessToken(token.Id) + resp, err = th.Client.RevokeUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4909,7 +4910,7 @@ func TestRevokeUserAccessToken(t *testing.T) { t.Run("with MANAGE_OTHERS_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.TeamUserRoleId) - _, err := th.Client.RevokeUserAccessToken(token.Id) + _, err := th.Client.RevokeUserAccessToken(context.Background(), token.Id) require.NoError(t, err) }) }) @@ -4923,11 +4924,11 @@ func TestDisableUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - token, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) assertToken(t, th, token, th.BasicUser.Id) - _, err = th.Client.DisableUserAccessToken(token.Id) + _, err = th.Client.DisableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) assertInvalidToken(t, th, token) @@ -4939,10 +4940,10 @@ func TestDisableUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) - token, _, err := th.SystemAdminClient.CreateUserAccessToken(th.BasicUser2.Id, "test token") + token, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), th.BasicUser2.Id, "test token") require.NoError(t, err) - resp, err := th.Client.DisableUserAccessToken(token.Id) + resp, err := th.Client.DisableUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4963,7 +4964,7 @@ func TestDisableUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -4972,13 +4973,13 @@ func TestDisableUserAccessToken(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - token, _, err := th.Client.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) t.Run("without MANAGE_BOTS permission", func(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - resp, err := th.Client.DisableUserAccessToken(token.Id) + resp, err := th.Client.DisableUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -4986,7 +4987,7 @@ func TestDisableUserAccessToken(t *testing.T) { t.Run("with MANAGE_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - _, err := th.Client.DisableUserAccessToken(token.Id) + _, err := th.Client.DisableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) }) }) @@ -5007,7 +5008,7 @@ func TestDisableUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -5016,11 +5017,11 @@ func TestDisableUserAccessToken(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - token, _, err := th.SystemAdminClient.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) t.Run("only having MANAGE_BOTS permission", func(t *testing.T) { - resp, err = th.Client.DisableUserAccessToken(token.Id) + resp, err = th.Client.DisableUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -5028,7 +5029,7 @@ func TestDisableUserAccessToken(t *testing.T) { t.Run("with MANAGE_OTHERS_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.TeamUserRoleId) - _, err := th.Client.DisableUserAccessToken(token.Id) + _, err := th.Client.DisableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) }) }) @@ -5042,16 +5043,16 @@ func TestEnableUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - token, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, "test token") require.NoError(t, err) assertToken(t, th, token, th.BasicUser.Id) - _, err = th.Client.DisableUserAccessToken(token.Id) + _, err = th.Client.DisableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) assertInvalidToken(t, th, token) - _, err = th.Client.EnableUserAccessToken(token.Id) + _, err = th.Client.EnableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) assertToken(t, th, token, th.BasicUser.Id) @@ -5063,13 +5064,13 @@ func TestEnableUserAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) - token, _, err := th.SystemAdminClient.CreateUserAccessToken(th.BasicUser2.Id, "test token") + token, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), th.BasicUser2.Id, "test token") require.NoError(t, err) - _, err = th.SystemAdminClient.DisableUserAccessToken(token.Id) + _, err = th.SystemAdminClient.DisableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) - resp, err := th.Client.DisableUserAccessToken(token.Id) + resp, err := th.Client.DisableUserAccessToken(context.Background(), token.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -5090,7 +5091,7 @@ func TestEnableUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.Client.CreateBot(&model.Bot{ + createdBot, resp, err := th.Client.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -5099,16 +5100,16 @@ func TestEnableUserAccessToken(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - token, _, err := th.Client.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.Client.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) - _, err = th.Client.DisableUserAccessToken(token.Id) + _, err = th.Client.DisableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) t.Run("without MANAGE_BOTS permission", func(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - resp, err2 := th.Client.EnableUserAccessToken(token.Id) + resp, err2 := th.Client.EnableUserAccessToken(context.Background(), token.Id) require.Error(t, err2) CheckForbiddenStatus(t, resp) }) @@ -5116,7 +5117,7 @@ func TestEnableUserAccessToken(t *testing.T) { t.Run("with MANAGE_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageBots.Id, model.TeamUserRoleId) - _, err = th.Client.EnableUserAccessToken(token.Id) + _, err = th.Client.EnableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) }) }) @@ -5137,7 +5138,7 @@ func TestEnableUserAccessToken(t *testing.T) { *cfg.ServiceSettings.EnableBotAccountCreation = true }) - createdBot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + createdBot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -5146,14 +5147,14 @@ func TestEnableUserAccessToken(t *testing.T) { CheckCreatedStatus(t, resp) defer th.App.PermanentDeleteBot(createdBot.UserId) - token, _, err := th.SystemAdminClient.CreateUserAccessToken(createdBot.UserId, "test token") + token, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), createdBot.UserId, "test token") require.NoError(t, err) - _, err = th.SystemAdminClient.DisableUserAccessToken(token.Id) + _, err = th.SystemAdminClient.DisableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) t.Run("only having MANAGE_BOTS permission", func(t *testing.T) { - resp, err2 := th.Client.EnableUserAccessToken(token.Id) + resp, err2 := th.Client.EnableUserAccessToken(context.Background(), token.Id) require.Error(t, err2) CheckForbiddenStatus(t, resp) }) @@ -5161,7 +5162,7 @@ func TestEnableUserAccessToken(t *testing.T) { t.Run("with MANAGE_OTHERS_BOTS permission", func(t *testing.T) { th.AddPermissionToRole(model.PermissionManageOthersBots.Id, model.TeamUserRoleId) - _, err = th.Client.EnableUserAccessToken(token.Id) + _, err = th.Client.EnableUserAccessToken(context.Background(), token.Id) require.NoError(t, err) }) }) @@ -5176,16 +5177,16 @@ func TestUserAccessTokenInactiveUser(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - token, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) + token, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, testDescription) require.NoError(t, err) th.Client.AuthToken = token.Token - _, _, err = th.Client.GetMe("") + _, _, err = th.Client.GetMe(context.Background(), "") require.NoError(t, err) th.App.UpdateActive(th.Context, th.BasicUser, false) - _, resp, err := th.Client.GetMe("") + _, resp, err := th.Client.GetMe(context.Background(), "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -5199,22 +5200,22 @@ func TestUserAccessTokenDisableConfig(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = true }) th.App.UpdateUserRoles(th.Context, th.BasicUser.Id, model.SystemUserRoleId+" "+model.SystemUserAccessTokenRoleId, false) - token, _, err := th.Client.CreateUserAccessToken(th.BasicUser.Id, testDescription) + token, _, err := th.Client.CreateUserAccessToken(context.Background(), th.BasicUser.Id, testDescription) require.NoError(t, err) oldSessionToken := th.Client.AuthToken th.Client.AuthToken = token.Token - _, _, err = th.Client.GetMe("") + _, _, err = th.Client.GetMe(context.Background(), "") require.NoError(t, err) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableUserAccessTokens = false }) - _, resp, err := th.Client.GetMe("") + _, resp, err := th.Client.GetMe(context.Background(), "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) th.Client.AuthToken = oldSessionToken - _, _, err = th.Client.GetMe("") + _, _, err = th.Client.GetMe(context.Background(), "") require.NoError(t, err) } @@ -5227,7 +5228,7 @@ func TestUserAccessTokenDisableConfigBotsExcluded(t *testing.T) { *cfg.ServiceSettings.EnableUserAccessTokens = false }) - bot, resp, err := th.SystemAdminClient.CreateBot(&model.Bot{ + bot, resp, err := th.SystemAdminClient.CreateBot(context.Background(), &model.Bot{ Username: GenerateTestUsername(), DisplayName: "a bot", Description: "bot", @@ -5235,11 +5236,11 @@ func TestUserAccessTokenDisableConfigBotsExcluded(t *testing.T) { require.NoError(t, err) CheckCreatedStatus(t, resp) - rtoken, _, err := th.SystemAdminClient.CreateUserAccessToken(bot.UserId, "test token") + rtoken, _, err := th.SystemAdminClient.CreateUserAccessToken(context.Background(), bot.UserId, "test token") th.Client.AuthToken = rtoken.Token require.NoError(t, err) - _, _, err = th.Client.GetMe("") + _, _, err = th.Client.GetMe(context.Background(), "") require.NoError(t, err) } @@ -5299,11 +5300,11 @@ func TestGetUsersByStatus(t *testing.T) { dndUser2 := createUserWithStatus("dnd2", model.StatusDnd) client := th.CreateClient() - _, _, err := client.Login(onlineUser2.Username, "Password1") + _, _, err := client.Login(context.Background(), onlineUser2.Username, "Password1") require.NoError(t, err) t.Run("sorting by status then alphabetical", func(t *testing.T) { - usersByStatus, _, err := client.GetUsersInChannelByStatus(channel.Id, 0, 8, "") + usersByStatus, _, err := client.GetUsersInChannelByStatus(context.Background(), channel.Id, 0, 8, "") require.NoError(t, err) expectedUsersByStatus := []*model.User{ @@ -5324,21 +5325,21 @@ func TestGetUsersByStatus(t *testing.T) { }) t.Run("paging", func(t *testing.T) { - usersByStatus, _, err := client.GetUsersInChannelByStatus(channel.Id, 0, 3, "") + usersByStatus, _, err := client.GetUsersInChannelByStatus(context.Background(), channel.Id, 0, 3, "") require.NoError(t, err) require.Len(t, usersByStatus, 3) require.Equal(t, onlineUser1.Id, usersByStatus[0].Id, "online users first") require.Equal(t, onlineUser2.Id, usersByStatus[1].Id, "online users first") require.Equal(t, awayUser1.Id, usersByStatus[2].Id, "expected to receive away users second") - usersByStatus, _, err = client.GetUsersInChannelByStatus(channel.Id, 1, 3, "") + usersByStatus, _, err = client.GetUsersInChannelByStatus(context.Background(), channel.Id, 1, 3, "") require.NoError(t, err) require.Equal(t, awayUser2.Id, usersByStatus[0].Id, "expected to receive away users second") require.Equal(t, dndUser1.Id, usersByStatus[1].Id, "expected to receive dnd users third") require.Equal(t, dndUser2.Id, usersByStatus[2].Id, "expected to receive dnd users third") - usersByStatus, _, err = client.GetUsersInChannelByStatus(channel.Id, 1, 4, "") + usersByStatus, _, err = client.GetUsersInChannelByStatus(context.Background(), channel.Id, 1, 4, "") require.NoError(t, err) require.Len(t, usersByStatus, 4) @@ -5354,13 +5355,13 @@ func TestRegisterTermsOfServiceAction(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, err := th.Client.RegisterTermsOfServiceAction(th.BasicUser.Id, "st_1", true) + _, err := th.Client.RegisterTermsOfServiceAction(context.Background(), th.BasicUser.Id, "st_1", true) CheckErrorID(t, err, "app.terms_of_service.get.no_rows.app_error") termsOfService, appErr := th.App.CreateTermsOfService("terms of service", th.BasicUser.Id) require.Nil(t, appErr) - _, err = th.Client.RegisterTermsOfServiceAction(th.BasicUser.Id, termsOfService.Id, true) + _, err = th.Client.RegisterTermsOfServiceAction(context.Background(), th.BasicUser.Id, termsOfService.Id, true) require.NoError(t, err) _, appErr = th.App.GetUser(th.BasicUser.Id) @@ -5371,16 +5372,16 @@ func TestGetUserTermsOfService(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, _, err := th.Client.GetUserTermsOfService(th.BasicUser.Id, "") + _, _, err := th.Client.GetUserTermsOfService(context.Background(), th.BasicUser.Id, "") CheckErrorID(t, err, "app.user_terms_of_service.get_by_user.no_rows.app_error") termsOfService, appErr := th.App.CreateTermsOfService("terms of service", th.BasicUser.Id) require.Nil(t, appErr) - _, err = th.Client.RegisterTermsOfServiceAction(th.BasicUser.Id, termsOfService.Id, true) + _, err = th.Client.RegisterTermsOfServiceAction(context.Background(), th.BasicUser.Id, termsOfService.Id, true) require.NoError(t, err) - userTermsOfService, _, err := th.Client.GetUserTermsOfService(th.BasicUser.Id, "") + userTermsOfService, _, err := th.Client.GetUserTermsOfService(context.Background(), th.BasicUser.Id, "") require.NoError(t, err) assert.Equal(t, th.BasicUser.Id, userTermsOfService.UserId) @@ -5392,7 +5393,7 @@ func TestLoginErrorMessage(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, err := th.Client.Logout() + _, err := th.Client.Logout(context.Background()) require.NoError(t, err) // Email and Username enabled @@ -5400,7 +5401,7 @@ func TestLoginErrorMessage(t *testing.T) { *cfg.EmailSettings.EnableSignInWithEmail = true *cfg.EmailSettings.EnableSignInWithUsername = true }) - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.login.invalid_credentials_email_username") // Email enabled @@ -5408,7 +5409,7 @@ func TestLoginErrorMessage(t *testing.T) { *cfg.EmailSettings.EnableSignInWithEmail = true *cfg.EmailSettings.EnableSignInWithUsername = false }) - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.login.invalid_credentials_email") // Username enabled @@ -5416,7 +5417,7 @@ func TestLoginErrorMessage(t *testing.T) { *cfg.EmailSettings.EnableSignInWithEmail = false *cfg.EmailSettings.EnableSignInWithUsername = true }) - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.login.invalid_credentials_username") // SAML/SSO enabled @@ -5440,7 +5441,7 @@ func TestLoginErrorMessage(t *testing.T) { *cfg.SamlSettings.PositionAttribute = "" *cfg.SamlSettings.LocaleAttribute = "" }) - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.login.invalid_credentials_sso") } @@ -5448,39 +5449,39 @@ func TestLoginLockout(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - _, err := th.Client.Logout() + _, err := th.Client.Logout(context.Background()) require.NoError(t, err) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.MaximumLoginAttempts = 3 }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableMultifactorAuthentication = true }) - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.login.invalid_credentials_email_username") - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.login.invalid_credentials_email_username") - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.login.invalid_credentials_email_username") - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.check_user_login_attempts.too_many.app_error") - _, _, err = th.Client.Login(th.BasicUser.Email, "wrong") + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, "wrong") CheckErrorID(t, err, "api.user.check_user_login_attempts.too_many.app_error") //Check if lock is active - _, _, err = th.Client.Login(th.BasicUser.Email, th.BasicUser.Password) + _, _, err = th.Client.Login(context.Background(), th.BasicUser.Email, th.BasicUser.Password) CheckErrorID(t, err, "api.user.check_user_login_attempts.too_many.app_error") // Fake user has MFA enabled err = th.Server.Store().User().UpdateMfaActive(th.BasicUser2.Id, true) require.NoError(t, err) - _, _, err = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000") + _, _, err = th.Client.LoginWithMFA(context.Background(), th.BasicUser2.Email, th.BasicUser2.Password, "000000") CheckErrorID(t, err, "api.user.check_user_mfa.bad_code.app_error") - _, _, err = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000") + _, _, err = th.Client.LoginWithMFA(context.Background(), th.BasicUser2.Email, th.BasicUser2.Password, "000000") CheckErrorID(t, err, "api.user.check_user_mfa.bad_code.app_error") - _, _, err = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000") + _, _, err = th.Client.LoginWithMFA(context.Background(), th.BasicUser2.Email, th.BasicUser2.Password, "000000") CheckErrorID(t, err, "api.user.check_user_mfa.bad_code.app_error") - _, _, err = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000") + _, _, err = th.Client.LoginWithMFA(context.Background(), th.BasicUser2.Email, th.BasicUser2.Password, "000000") CheckErrorID(t, err, "api.user.check_user_login_attempts.too_many.app_error") - _, _, err = th.Client.LoginWithMFA(th.BasicUser2.Email, th.BasicUser2.Password, "000000") + _, _, err = th.Client.LoginWithMFA(context.Background(), th.BasicUser2.Email, th.BasicUser2.Password, "000000") CheckErrorID(t, err, "api.user.check_user_login_attempts.too_many.app_error") // Fake user has MFA disabled @@ -5488,7 +5489,7 @@ func TestLoginLockout(t *testing.T) { require.NoError(t, err) //Check if lock is active - _, _, err = th.Client.Login(th.BasicUser2.Email, th.BasicUser2.Password) + _, _, err = th.Client.Login(context.Background(), th.BasicUser2.Email, th.BasicUser2.Password) CheckErrorID(t, err, "api.user.check_user_login_attempts.too_many.app_error") } @@ -5510,7 +5511,7 @@ func TestDemoteUserToGuest(t *testing.T) { t.Run("Guest Account not available in license returns forbidden", func(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicenseWithFalseDefaults("guest_accounts")) - res, err := th.SystemAdminClient.DoAPIPost("/users/"+user2.Id+"/demote", "") + res, err := th.SystemAdminClient.DoAPIPost(context.Background(), "/users/"+user2.Id+"/demote", "") require.Equal(t, http.StatusForbidden, res.StatusCode) require.True(t, strings.Contains(err.Error(), "Guest accounts are disabled")) @@ -5520,17 +5521,17 @@ func TestDemoteUserToGuest(t *testing.T) { t.Run("Guest Account available in license returns OK", func(t *testing.T) { th.App.Srv().SetLicense(model.NewTestLicense("guest_accounts")) - res, err := th.SystemAdminClient.DoAPIPost("/users/"+user2.Id+"/demote", "") + res, err := th.SystemAdminClient.DoAPIPost(context.Background(), "/users/"+user2.Id+"/demote", "") require.Equal(t, http.StatusOK, res.StatusCode) require.NoError(t, err) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - _, _, err := c.GetUser(user.Id, "") + _, _, err := c.GetUser(context.Background(), user.Id, "") require.NoError(t, err) - _, err = c.DemoteUserToGuest(user.Id) + _, err = c.DemoteUserToGuest(context.Background(), user.Id) require.NoError(t, err) defer require.Nil(t, th.App.PromoteGuestToUser(th.Context, user, "")) @@ -5557,11 +5558,11 @@ func TestDemoteUserToGuest(t *testing.T) { resp = <-adminWebSocketClient.ResponseChannel require.Equal(t, model.StatusOk, resp.Status) - _, _, err = th.SystemAdminClient.GetUser(user.Id, "") + _, _, err = th.SystemAdminClient.GetUser(context.Background(), user.Id, "") require.NoError(t, err) - _, err = th.SystemAdminClient.DemoteUserToGuest(user.Id) + _, err = th.SystemAdminClient.DemoteUserToGuest(context.Background(), user.Id) require.NoError(t, err) - defer th.SystemAdminClient.PromoteGuestToUser(user.Id) + defer th.SystemAdminClient.PromoteGuestToUser(context.Background(), user.Id) assertExpectedWebsocketEvent(t, webSocketClient, model.WebsocketEventUserUpdated, func(event *model.WebSocketEvent) { eventUser, ok := event.GetData()["user"].(*model.User) @@ -5592,10 +5593,10 @@ func TestPromoteGuestToUser(t *testing.T) { th.App.UpdateUserRoles(th.Context, user.Id, model.SystemGuestRoleId, false) th.TestForSystemAdminAndLocal(t, func(t *testing.T, c *model.Client4) { - _, _, err := c.GetUser(user.Id, "") + _, _, err := c.GetUser(context.Background(), user.Id, "") require.NoError(t, err) - _, err = c.PromoteGuestToUser(user.Id) + _, err = c.PromoteGuestToUser(context.Background(), user.Id) require.NoError(t, err) defer require.Nil(t, th.App.DemoteUserToGuest(th.Context, user)) @@ -5622,11 +5623,11 @@ func TestPromoteGuestToUser(t *testing.T) { resp = <-adminWebSocketClient.ResponseChannel require.Equal(t, model.StatusOk, resp.Status) - _, _, err = th.SystemAdminClient.GetUser(user.Id, "") + _, _, err = th.SystemAdminClient.GetUser(context.Background(), user.Id, "") require.NoError(t, err) - _, err = th.SystemAdminClient.PromoteGuestToUser(user.Id) + _, err = th.SystemAdminClient.PromoteGuestToUser(context.Background(), user.Id) require.NoError(t, err) - defer th.SystemAdminClient.DemoteUserToGuest(user.Id) + defer th.SystemAdminClient.DemoteUserToGuest(context.Background(), user.Id) assertExpectedWebsocketEvent(t, webSocketClient, model.WebsocketEventUserUpdated, func(event *model.WebSocketEvent) { eventUser, ok := event.GetData()["user"].(*model.User) @@ -5648,15 +5649,15 @@ func TestVerifyUserEmailWithoutToken(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { email := th.GenerateTestEmail() user := model.User{Email: email, Nickname: "Darth Vader", Password: "hello1", Username: GenerateTestUsername(), Roles: model.SystemUserRoleId} - ruser, _, _ := th.Client.CreateUser(&user) + ruser, _, _ := th.Client.CreateUser(context.Background(), &user) - vuser, _, err := client.VerifyUserEmailWithoutToken(ruser.Id) + vuser, _, err := client.VerifyUserEmailWithoutToken(context.Background(), ruser.Id) require.NoError(t, err) require.Equal(t, ruser.Id, vuser.Id) }, "Should verify a new user") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - vuser, _, err := client.VerifyUserEmailWithoutToken("randomId") + vuser, _, err := client.VerifyUserEmailWithoutToken(context.Background(), "randomId") require.Error(t, err) CheckErrorID(t, err, "api.context.invalid_url_param.app_error") require.Nil(t, vuser) @@ -5664,7 +5665,7 @@ func TestVerifyUserEmailWithoutToken(t *testing.T) { t.Run("Should not be able to verify user due to permissions", func(t *testing.T) { user := th.CreateUser() - vuser, _, err := th.Client.VerifyUserEmailWithoutToken(user.Id) + vuser, _, err := th.Client.VerifyUserEmailWithoutToken(context.Background(), user.Id) require.Error(t, err) CheckErrorID(t, err, "api.context.permissions.app_error") require.Nil(t, vuser) @@ -5748,23 +5749,23 @@ func TestGetKnownUsers(t *testing.T) { th.App.AddUserToChannel(th.Context, u4, c3, false) t.Run("get know users sharing no channels", func(t *testing.T) { - _, _, _ = th.Client.Login(u4.Email, u4.Password) - userIds, _, err := th.Client.GetKnownUsers() + _, _, _ = th.Client.Login(context.Background(), u4.Email, u4.Password) + userIds, _, err := th.Client.GetKnownUsers(context.Background()) require.NoError(t, err) assert.Empty(t, userIds) }) t.Run("get know users sharing one channel", func(t *testing.T) { - _, _, _ = th.Client.Login(u3.Email, u3.Password) - userIds, _, err := th.Client.GetKnownUsers() + _, _, _ = th.Client.Login(context.Background(), u3.Email, u3.Password) + userIds, _, err := th.Client.GetKnownUsers(context.Background()) require.NoError(t, err) assert.Len(t, userIds, 1) assert.Equal(t, userIds[0], u1.Id) }) t.Run("get know users sharing multiple channels", func(t *testing.T) { - _, _, _ = th.Client.Login(u1.Email, u1.Password) - userIds, _, err := th.Client.GetKnownUsers() + _, _, _ = th.Client.Login(context.Background(), u1.Email, u1.Password) + userIds, _, err := th.Client.GetKnownUsers(context.Background()) require.NoError(t, err) assert.Len(t, userIds, 2) assert.ElementsMatch(t, userIds, []string{u2.Id, u3.Id}) @@ -5781,7 +5782,7 @@ func TestPublishUserTyping(t *testing.T) { } t.Run("should return ok for non-system admin when triggering typing event for own user", func(t *testing.T) { - _, err := th.Client.PublishUserTyping(th.BasicUser.Id, tr) + _, err := th.Client.PublishUserTyping(context.Background(), th.BasicUser.Id, tr) require.NoError(t, err) }) @@ -5789,18 +5790,18 @@ func TestPublishUserTyping(t *testing.T) { th.LinkUserToTeam(th.SystemAdminUser, th.BasicTeam) th.AddUserToChannel(th.SystemAdminUser, th.BasicChannel) - _, err := th.SystemAdminClient.PublishUserTyping(th.SystemAdminUser.Id, tr) + _, err := th.SystemAdminClient.PublishUserTyping(context.Background(), th.SystemAdminUser.Id, tr) require.NoError(t, err) }) t.Run("should return forbidden for non-system admin when triggering a typing event for a different user", func(t *testing.T) { - resp, err := th.Client.PublishUserTyping(th.BasicUser2.Id, tr) + resp, err := th.Client.PublishUserTyping(context.Background(), th.BasicUser2.Id, tr) require.Error(t, err) CheckForbiddenStatus(t, resp) }) t.Run("should return bad request when triggering a typing event for an invalid user id", func(t *testing.T) { - resp, err := th.Client.PublishUserTyping("invalid", tr) + resp, err := th.Client.PublishUserTyping(context.Background(), "invalid", tr) require.Error(t, err) CheckErrorID(t, err, "api.context.invalid_url_param.app_error") CheckBadRequestStatus(t, resp) @@ -5817,7 +5818,7 @@ func TestPublishUserTyping(t *testing.T) { wsResp := <-webSocketClient.ResponseChannel require.Equal(t, model.StatusOk, wsResp.Status) - _, err = th.SystemAdminClient.PublishUserTyping(th.BasicUser2.Id, tr) + _, err = th.SystemAdminClient.PublishUserTyping(context.Background(), th.BasicUser2.Id, tr) require.NoError(t, err) assertExpectedWebsocketEvent(t, webSocketClient, model.WebsocketEventTyping, func(resp *model.WebSocketEvent) { @@ -5836,14 +5837,14 @@ func TestPublishUserTyping(t *testing.T) { th.Server.Platform().Busy.Set(time.Second * 10) t.Run("should return service unavailable for non-system admin user when triggering a typing event and server busy", func(t *testing.T) { - resp, err := th.Client.PublishUserTyping("invalid", tr) + resp, err := th.Client.PublishUserTyping(context.Background(), "invalid", tr) require.Error(t, err) CheckErrorID(t, err, "api.context.server_busy.app_error") CheckServiceUnavailableStatus(t, resp) }) t.Run("should return service unavailable for system admin user when triggering a typing event and server busy", func(t *testing.T) { - resp, err := th.SystemAdminClient.PublishUserTyping(th.SystemAdminUser.Id, tr) + resp, err := th.SystemAdminClient.PublishUserTyping(context.Background(), th.SystemAdminUser.Id, tr) require.Error(t, err) CheckErrorID(t, err, "api.context.server_busy.app_error") CheckServiceUnavailableStatus(t, resp) @@ -5854,7 +5855,7 @@ func TestConvertUserToBot(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - bot, resp, err := th.Client.ConvertUserToBot(th.BasicUser.Id) + bot, resp, err := th.Client.ConvertUserToBot(context.Background(), th.BasicUser.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) require.Nil(t, bot) @@ -5862,16 +5863,16 @@ func TestConvertUserToBot(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { user := model.User{Email: th.GenerateTestEmail(), Username: GenerateTestUsername(), Password: "password"} - ruser, resp, err := client.CreateUser(&user) + ruser, resp, err := client.CreateUser(context.Background(), &user) require.NoError(t, err) CheckCreatedStatus(t, resp) - bot, _, err = client.ConvertUserToBot(ruser.Id) + bot, _, err = client.ConvertUserToBot(context.Background(), ruser.Id) require.NoError(t, err) require.NotNil(t, bot) require.Equal(t, bot.UserId, ruser.Id) - bot, _, err = client.GetBot(bot.UserId, "") + bot, _, err = client.GetBot(context.Background(), bot.UserId, "") require.NoError(t, err) require.NotNil(t, bot) }) @@ -5881,7 +5882,7 @@ func TestGetChannelMembersWithTeamData(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - channels, resp, err := th.Client.GetChannelMembersWithTeamData(th.BasicUser.Id, 0, 5) + channels, resp, err := th.Client.GetChannelMembersWithTeamData(context.Background(), th.BasicUser.Id, 0, 5) require.NoError(t, err) CheckOKStatus(t, resp) assert.Len(t, channels, 5) @@ -5894,12 +5895,12 @@ func TestMigrateAuthToLDAP(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - resp, err := th.Client.MigrateAuthToLdap("email", "a", false) + resp, err := th.Client.MigrateAuthToLdap(context.Background(), "email", "a", false) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err = client.MigrateAuthToLdap("email", "a", false) + resp, err = client.MigrateAuthToLdap(context.Background(), "email", "a", false) require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -5909,12 +5910,12 @@ func TestMigrateAuthToSAML(t *testing.T) { th := Setup(t).InitBasic() defer th.TearDown() - resp, err := th.Client.MigrateAuthToSaml("email", map[string]string{"1": "a"}, true) + resp, err := th.Client.MigrateAuthToSaml(context.Background(), "email", map[string]string{"1": "a"}, true) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err = client.MigrateAuthToSaml("email", map[string]string{"1": "a"}, true) + resp, err = client.MigrateAuthToSaml(context.Background(), "email", map[string]string{"1": "a"}, true) require.Error(t, err) CheckNotImplementedStatus(t, resp) }) @@ -5924,7 +5925,7 @@ func TestUpdatePassword(t *testing.T) { defer th.TearDown() t.Run("Forbidden when request performed by system user on a system admin", func(t *testing.T) { - res, err := th.Client.UpdatePassword(th.SystemAdminUser.Id, "Pa$$word11", "foobar") + res, err := th.Client.UpdatePassword(context.Background(), th.SystemAdminUser.Id, "Pa$$word11", "foobar") require.Error(t, err) CheckForbiddenStatus(t, res) }) @@ -5933,16 +5934,16 @@ func TestUpdatePassword(t *testing.T) { th.AddPermissionToRole(model.PermissionSysconsoleWriteUserManagementUsers.Id, model.SystemUserRoleId) defer th.RemovePermissionFromRole(model.PermissionSysconsoleWriteUserManagementUsers.Id, model.SystemUserRoleId) - res, _ := th.Client.UpdatePassword(th.TeamAdminUser.Id, "Pa$$word11", "foobar") + res, _ := th.Client.UpdatePassword(context.Background(), th.TeamAdminUser.Id, "Pa$$word11", "foobar") CheckOKStatus(t, res) - res, err := th.Client.UpdatePassword(th.SystemAdminUser.Id, "Pa$$word11", "foobar") + res, err := th.Client.UpdatePassword(context.Background(), th.SystemAdminUser.Id, "Pa$$word11", "foobar") require.Error(t, err) CheckForbiddenStatus(t, res) }) t.Run("OK when request performed by system admin, even if requested user is system admin", func(t *testing.T) { - res, _ := th.SystemAdminClient.UpdatePassword(th.SystemAdminUser.Id, "Pa$$word11", "foobar") + res, _ := th.SystemAdminClient.UpdatePassword(context.Background(), th.SystemAdminUser.Id, "Pa$$word11", "foobar") CheckOKStatus(t, res) }) } @@ -5963,7 +5964,7 @@ func TestUpdatePasswordAudit(t *testing.T) { password := "this_is_the_password" th.LoginBasic() - resp, err := th.Client.UpdatePassword(th.BasicUser.Id, th.BasicUser.Password, password) + resp, err := th.Client.UpdatePassword(context.Background(), th.BasicUser.Id, th.BasicUser.Password, password) require.NoError(t, err) CheckOKStatus(t, resp) @@ -5997,13 +5998,13 @@ func TestGetThreadsForUser(t *testing.T) { t.Run("empty", func(t *testing.T) { client := th.Client - _, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + _, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) require.NoError(t, err) require.Len(t, uss.Threads, 0) }) @@ -6011,16 +6012,16 @@ func TestGetThreadsForUser(t *testing.T) { t.Run("no params, 1 thread", func(t *testing.T) { client := th.Client - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) require.NoError(t, err) require.Len(t, uss.Threads, 1) require.Equal(t, uss.Threads[0].PostId, rpost.Id) @@ -6030,16 +6031,16 @@ func TestGetThreadsForUser(t *testing.T) { t.Run("extended, 1 thread", func(t *testing.T) { client := th.Client - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Extended: true, }) require.NoError(t, err) @@ -6052,16 +6053,16 @@ func TestGetThreadsForUser(t *testing.T) { t.Run("deleted, 1 thread", func(t *testing.T) { client := th.Client - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) @@ -6070,16 +6071,16 @@ func TestGetThreadsForUser(t *testing.T) { require.Equal(t, uss.Threads[0].ReplyCount, int64(1)) require.Equal(t, uss.Threads[0].Participants[0].Id, th.BasicUser.Id) - _, err = th.Client.DeletePost(rpost.Id) + _, err = th.Client.DeletePost(context.Background(), rpost.Id) require.NoError(t, err) - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) require.Len(t, uss.Threads, 0) - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: true, }) require.NoError(t, err) @@ -6095,7 +6096,7 @@ func TestGetThreadsForUser(t *testing.T) { client := th.Client - _, resp, err := client.CreatePost(&model.Post{ + _, resp, err := client.CreatePost(context.Background(), &model.Post{ ChannelId: th.BasicChannel.Id, Message: "testMsg", Metadata: &model.PostMetadata{ @@ -6118,11 +6119,11 @@ func TestGetThreadsForUser(t *testing.T) { defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = client.CreatePost(&model.Post{ + _, resp, err = client.CreatePost(context.Background(), &model.Post{ RootId: rpost.Id, ChannelId: th.BasicChannel.Id, Message: "testReply", @@ -6144,7 +6145,7 @@ func TestGetThreadsForUser(t *testing.T) { client := th.Client - rpost, resp, err := client.CreatePost(&model.Post{ + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ ChannelId: th.BasicChannel.Id, Message: "testMsg", Metadata: &model.PostMetadata{ @@ -6155,13 +6156,13 @@ func TestGetThreadsForUser(t *testing.T) { }) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) require.NoError(t, err) require.Len(t, uss.Threads, 1) require.Equal(t, true, uss.Threads[0].IsUrgent) @@ -6172,18 +6173,18 @@ func TestGetThreadsForUser(t *testing.T) { var rootIds []*model.Post for i := 0; i < 30; i++ { - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) rootIds = append(rootIds, rpost) - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) require.NoError(t, err) CheckCreatedStatus(t, resp) } defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, PageSize: 30, }) @@ -6210,7 +6211,7 @@ func TestGetThreadsForUser(t *testing.T) { defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, PageSize: 10, Before: rootId, @@ -6220,7 +6221,7 @@ func TestGetThreadsForUser(t *testing.T) { require.Len(t, uss.Threads, 10) require.Equal(t, rootIdBefore, uss.Threads[0].PostId) - uss2, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss2, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, PageSize: 10, After: rootId, @@ -6230,7 +6231,7 @@ func TestGetThreadsForUser(t *testing.T) { require.Equal(t, rootIdAfter, uss2.Threads[0].PostId) - uss3, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss3, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, PageSize: 10, After: rootId + "__bad", @@ -6246,14 +6247,14 @@ func TestGetThreadsForUser(t *testing.T) { var rootIds []*model.Post for i := 0; i < 10; i++ { - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) rootIds = append(rootIds, rpost) if i%2 == 0 { - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) } else { - _, resp, err = sysadminClient.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply @" + th.BasicUser.Username, RootId: rpost.Id}) + _, resp, err = sysadminClient.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply @" + th.BasicUser.Username, RootId: rpost.Id}) } require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -6262,7 +6263,7 @@ func TestGetThreadsForUser(t *testing.T) { defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.SystemAdminUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, TotalsOnly: true, PageSize: 30, @@ -6281,14 +6282,14 @@ func TestGetThreadsForUser(t *testing.T) { var rootIds []*model.Post for i := 0; i < 10; i++ { - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) rootIds = append(rootIds, rpost) if i%2 == 0 { - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) } else { - _, resp, err = sysadminClient.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply @" + th.BasicUser.Username, RootId: rpost.Id}) + _, resp, err = sysadminClient.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply @" + th.BasicUser.Username, RootId: rpost.Id}) } require.NoError(t, err) @@ -6298,7 +6299,7 @@ func TestGetThreadsForUser(t *testing.T) { defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.SystemAdminUser.Id) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, ThreadsOnly: true, PageSize: 30, @@ -6320,7 +6321,7 @@ func TestGetThreadsForUser(t *testing.T) { t.Run("setting both threadsOnly, and totalsOnly params is not allowed", func(t *testing.T) { defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) - _, resp, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + _, resp, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ ThreadsOnly: true, TotalsOnly: true, PageSize: 30, @@ -6335,16 +6336,16 @@ func TestGetThreadsForUser(t *testing.T) { rootPost, _ := postAndCheck(t, client, &model.Post{ChannelId: th.BasicChannel.Id, Message: "root post"}) replyPost, _ := postAndCheck(t, th.SystemAdminClient, &model.Post{ChannelId: th.BasicChannel.Id, Message: "reply post", RootId: rootPost.Id}) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) require.Equal(t, uss.TotalUnreadThreads, int64(1)) require.Equal(t, uss.Threads[0].PostId, rootPost.Id) - _, _, err = th.Client.UpdateThreadReadForUser(th.BasicUser.Id, th.BasicChannel.TeamId, rootPost.Id, model.GetMillis()) + _, _, err = th.Client.UpdateThreadReadForUser(context.Background(), th.BasicUser.Id, th.BasicChannel.TeamId, rootPost.Id, model.GetMillis()) require.NoError(t, err) - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) @@ -6352,9 +6353,9 @@ func TestGetThreadsForUser(t *testing.T) { // edit post editedReplyPostMessage := "edited " + replyPost.Message - _, _, err = th.SystemAdminClient.PatchPost(replyPost.Id, &model.PostPatch{Message: &editedReplyPostMessage}) + _, _, err = th.SystemAdminClient.PatchPost(context.Background(), replyPost.Id, &model.PostPatch{Message: &editedReplyPostMessage}) require.NoError(t, err) - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) @@ -6366,9 +6367,9 @@ func TestGetThreadsForUser(t *testing.T) { PostId: replyPost.Id, EmojiName: "smile", } - _, _, err = th.SystemAdminClient.SaveReaction(reaction) + _, _, err = th.SystemAdminClient.SaveReaction(context.Background(), reaction) require.NoError(t, err) - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) @@ -6381,7 +6382,7 @@ func TestGetThreadsForUser(t *testing.T) { // Create "thread 1" rootPost1, _ := postAndCheck(t, client, &model.Post{ChannelId: th.BasicChannel.Id, Message: "Thread 1"}) postAndCheck(t, th.SystemAdminClient, &model.Post{ChannelId: th.BasicChannel.Id, Message: "Thread 1, reply 1", RootId: rootPost1.Id}) - uss, _, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Since: uint64(rootPost1.CreateAt), }) require.NoError(t, err) @@ -6389,7 +6390,7 @@ func TestGetThreadsForUser(t *testing.T) { // Should not fetch any threads since there are no new replies/new threads since the membership is updated threadMembership, _ := th.App.GetThreadMembershipForUser(th.BasicUser.Id, rootPost1.Id) - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Since: uint64(threadMembership.LastUpdated) + 1, }) require.NoError(t, err) @@ -6403,7 +6404,7 @@ func TestGetThreadsForUser(t *testing.T) { postAndCheck(t, th.SystemAdminClient, &model.Post{ChannelId: th.BasicChannel.Id, Message: "Thread 1, Reply 2", RootId: rootPost1.Id}) // Should fetch "thread 1" & "thread 2" - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Since: uint64(threadMembership.LastUpdated) + 1, }) require.NoError(t, err) @@ -6414,7 +6415,7 @@ func TestGetThreadsForUser(t *testing.T) { th.UnlinkUserFromTeam(th.BasicUser, th.BasicTeam) defer th.LinkUserToTeam(th.BasicUser, th.BasicTeam) - _, resp, err := th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) + _, resp, err := th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -6439,7 +6440,7 @@ func TestThreadSocketEvents(t *testing.T) { client := th.Client - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -6473,7 +6474,7 @@ func TestThreadSocketEvents(t *testing.T) { require.Truef(t, caught, "User should have received %s event", model.WebsocketEventThreadUpdated) }) - resp, err = th.Client.UpdateThreadFollowForUser(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, false) + resp, err = th.Client.UpdateThreadFollowForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, false) require.NoError(t, err) CheckOKStatus(t, resp) @@ -6496,7 +6497,7 @@ func TestThreadSocketEvents(t *testing.T) { require.Truef(t, caught, "User should have received %s event", model.WebsocketEventThreadFollowChanged) }) - _, resp, err = th.Client.UpdateThreadReadForUser(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, replyPost.CreateAt+1) + _, resp, err = th.Client.UpdateThreadReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, replyPost.CreateAt+1) require.NoError(t, err) CheckOKStatus(t, resp) @@ -6526,7 +6527,7 @@ func TestThreadSocketEvents(t *testing.T) { require.Truef(t, caught, "User should have received %s event", model.WebsocketEventThreadReadChanged) }) - _, resp, err = th.Client.SetThreadUnreadByPostId(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, rpost.Id) + _, resp, err = th.Client.SetThreadUnreadByPostId(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, rpost.Id) require.NoError(t, err) CheckOKStatus(t, resp) @@ -6557,7 +6558,7 @@ func TestThreadSocketEvents(t *testing.T) { }) // read the thread - _, resp, err = th.Client.UpdateThreadReadForUser(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, replyPost.CreateAt+1) + _, resp, err = th.Client.UpdateThreadReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, replyPost.CreateAt+1) require.NoError(t, err) CheckOKStatus(t, resp) @@ -6702,36 +6703,36 @@ func TestFollowThreads(t *testing.T) { t.Run("1 thread", func(t *testing.T) { client := th.Client - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) var uss *model.Threads - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) require.Len(t, uss.Threads, 1) - resp, err = th.Client.UpdateThreadFollowForUser(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, false) + resp, err = th.Client.UpdateThreadFollowForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, false) require.NoError(t, err) CheckOKStatus(t, resp) - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) require.Len(t, uss.Threads, 0) - resp, err = th.Client.UpdateThreadFollowForUser(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, true) + resp, err = th.Client.UpdateThreadFollowForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, true) require.NoError(t, err) CheckOKStatus(t, resp) - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) @@ -6747,20 +6748,20 @@ func TestFollowThreads(t *testing.T) { defer th.App.RemoveUserFromChannel(th.Context, th.BasicUser.Id, "", th.BasicPrivateChannel2) // create thread in private channel - rpost, resp, err := th.Client.CreatePost(&model.Post{ChannelId: th.BasicPrivateChannel2.Id, Message: "root post"}) + rpost, resp, err := th.Client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicPrivateChannel2.Id, Message: "root post"}) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = th.Client.CreatePost(&model.Post{ChannelId: th.BasicPrivateChannel2.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = th.Client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicPrivateChannel2.Id, Message: "testReply", RootId: rpost.Id}) require.NoError(t, err) CheckCreatedStatus(t, resp) // Try to follow thread as other user who is not in the private channel - resp, err = th.Client.UpdateThreadFollowForUser(th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, true) + resp, err = th.Client.UpdateThreadFollowForUser(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, true) require.Error(t, err) CheckForbiddenStatus(t, resp) // Try to unfollow thread as other user who is not in the private channel - resp, err = th.Client.UpdateThreadFollowForUser(th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, false) + resp, err = th.Client.UpdateThreadFollowForUser(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, false) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -6771,7 +6772,7 @@ func checkThreadListReplies(t *testing.T, th *TestHelper, client *model.Client4, if options != nil { opts = *options } - u, resp, err := client.GetUserThreads(userId, th.BasicTeam.Id, opts) + u, resp, err := client.GetUserThreads(context.Background(), userId, th.BasicTeam.Id, opts) require.NoError(t, err) require.Len(t, u.Threads, expectedThreads) @@ -6790,7 +6791,7 @@ func checkThreadListReplies(t *testing.T, th *TestHelper, client *model.Client4, } func postAndCheck(t *testing.T, client *model.Client4, post *model.Post) (*model.Post, *model.Response) { - p, resp, err := client.CreatePost(post) + p, resp, err := client.CreatePost(context.Background(), post) require.NoError(t, err) CheckCreatedStatus(t, resp) return p, resp @@ -6830,7 +6831,7 @@ func TestMaintainUnreadRepliesInThread(t *testing.T) { checkThreadListReplies(t, th, th.SystemAdminClient, th.SystemAdminUser.Id, 1, 1, nil) // mark all as read for user - resp, err := th.Client.UpdateThreadsReadForUser(th.BasicUser.Id, th.BasicTeam.Id) + resp, err := th.Client.UpdateThreadsReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id) require.NoError(t, err) CheckOKStatus(t, resp) @@ -6838,7 +6839,7 @@ func TestMaintainUnreadRepliesInThread(t *testing.T) { checkThreadListReplies(t, th, th.Client, th.BasicUser.Id, 0, 1, nil) // mark other user's read state - _, resp, err = th.SystemAdminClient.UpdateThreadReadForUser(th.SystemAdminUser.Id, th.BasicTeam.Id, rpost.Id, model.GetMillis()) + _, resp, err = th.SystemAdminClient.UpdateThreadReadForUser(context.Background(), th.SystemAdminUser.Id, th.BasicTeam.Id, rpost.Id, model.GetMillis()) require.NoError(t, err) CheckOKStatus(t, resp) @@ -6846,7 +6847,7 @@ func TestMaintainUnreadRepliesInThread(t *testing.T) { checkThreadListReplies(t, th, th.SystemAdminClient, th.SystemAdminUser.Id, 0, 0, &model.GetUserThreadsOpts{Unread: true}) // restore unread to an old date - _, resp, err = th.SystemAdminClient.UpdateThreadReadForUser(th.SystemAdminUser.Id, th.BasicTeam.Id, rpost.Id, 123) + _, resp, err = th.SystemAdminClient.UpdateThreadReadForUser(context.Background(), th.SystemAdminUser.Id, th.BasicTeam.Id, rpost.Id, 123) require.NoError(t, err) CheckOKStatus(t, resp) @@ -6939,7 +6940,7 @@ func TestSingleThreadGet(t *testing.T) { // regular user should have two threads with 3 replies total threads, _ := checkThreadListReplies(t, th, th.Client, th.BasicUser.Id, 2, 2, nil) - tr, _, err := th.Client.GetUserThread(th.BasicUser.Id, th.BasicTeam.Id, threads.Threads[0].PostId, false) + tr, _, err := th.Client.GetUserThread(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, threads.Threads[0].PostId, false) require.NoError(t, err) require.NotNil(t, tr) require.Equal(t, threads.Threads[0].PostId, tr.PostId) @@ -6949,7 +6950,7 @@ func TestSingleThreadGet(t *testing.T) { *cfg.ServiceSettings.PostPriority = false }) - tr, _, err = th.Client.GetUserThread(th.BasicUser.Id, th.BasicTeam.Id, threads.Threads[0].PostId, true) + tr, _, err = th.Client.GetUserThread(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, threads.Threads[0].PostId, true) require.NoError(t, err) require.NotEmpty(t, tr.Participants[0].Username) require.Equal(t, false, tr.IsUrgent) @@ -6959,7 +6960,7 @@ func TestSingleThreadGet(t *testing.T) { cfg.FeatureFlags.PostPriority = true }) - tr, _, err = th.Client.GetUserThread(th.BasicUser.Id, th.BasicTeam.Id, threads.Threads[0].PostId, true) + tr, _, err = th.Client.GetUserThread(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, threads.Threads[0].PostId, true) require.NoError(t, err) require.Equal(t, true, tr.IsUrgent) }) @@ -6968,7 +6969,7 @@ func TestSingleThreadGet(t *testing.T) { th.UnlinkUserFromTeam(th.BasicUser, th.BasicTeam) defer th.LinkUserToTeam(th.BasicUser, th.BasicTeam) - _, resp, err := th.Client.GetUserThread(th.BasicUser.Id, th.BasicTeam.Id, model.NewId(), false) + _, resp, err := th.Client.GetUserThread(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.NewId(), false) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -6988,7 +6989,7 @@ func TestMaintainUnreadMentionsInThread(t *testing.T) { *cfg.ServiceSettings.CollapsedThreads = model.CollapsedThreadsDefaultOn }) checkThreadList := func(client *model.Client4, userId string, expectedMentions, expectedThreads int) (*model.Threads, *model.Response) { - uss, resp, err := client.GetUserThreads(userId, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, resp, err := client.GetUserThreads(context.Background(), userId, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) @@ -7053,26 +7054,26 @@ func TestReadThreads(t *testing.T) { client := th.Client t.Run("all threads", func(t *testing.T) { - rpost, resp, err := client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) + rpost, resp, err := client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testMsg"}) require.NoError(t, err) CheckCreatedStatus(t, resp) - _, resp, err = client.CreatePost(&model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) + _, resp, err = client.CreatePost(context.Background(), &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply", RootId: rpost.Id}) require.NoError(t, err) CheckCreatedStatus(t, resp) defer th.App.Srv().Store().Post().PermanentDeleteByUser(th.BasicUser.Id) var uss, uss2 *model.Threads - uss, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) require.Len(t, uss.Threads, 1) - resp, err = th.Client.UpdateThreadsReadForUser(th.BasicUser.Id, th.BasicTeam.Id) + resp, err = th.Client.UpdateThreadsReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id) require.NoError(t, err) CheckOKStatus(t, resp) - uss2, _, err = th.Client.GetUserThreads(th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ + uss2, _, err = th.Client.GetUserThreads(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{ Deleted: false, }) require.NoError(t, err) @@ -7092,7 +7093,7 @@ func TestReadThreads(t *testing.T) { uss, _ := checkThreadListReplies(t, th, th.Client, th.BasicUser.Id, 2, 2, nil) - _, resp, err := th.Client.UpdateThreadReadForUser(th.BasicUser.Id, th.BasicTeam.Id, rrpost.Id, model.GetMillis()+10) + _, resp, err := th.Client.UpdateThreadReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rrpost.Id, model.GetMillis()+10) require.NoError(t, err) CheckOKStatus(t, resp) @@ -7100,7 +7101,7 @@ func TestReadThreads(t *testing.T) { require.Greater(t, uss2.Threads[0].LastViewedAt, uss.Threads[0].LastViewedAt) timestamp := model.GetMillis() - _, resp, err = th.Client.UpdateThreadReadForUser(th.BasicUser.Id, th.BasicTeam.Id, rrpost.Id, timestamp) + _, resp, err = th.Client.UpdateThreadReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rrpost.Id, timestamp) require.NoError(t, err) CheckOKStatus(t, resp) @@ -7119,25 +7120,25 @@ func TestReadThreads(t *testing.T) { checkThreadListReplies(t, th, th.Client, th.BasicUser.Id, 3, 1, nil) - _, resp, err := th.Client.UpdateThreadReadForUser(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, reply3.CreateAt+1) + _, resp, err := th.Client.UpdateThreadReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, reply3.CreateAt+1) require.NoError(t, err) CheckOKStatus(t, resp) checkThreadListReplies(t, th, th.Client, th.BasicUser.Id, 0, 1, nil) - _, resp, err = th.Client.SetThreadUnreadByPostId(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, reply1.Id) + _, resp, err = th.Client.SetThreadUnreadByPostId(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, reply1.Id) require.NoError(t, err) CheckOKStatus(t, resp) checkThreadListReplies(t, th, th.Client, th.BasicUser.Id, 3, 1, nil) - _, resp, err = th.Client.SetThreadUnreadByPostId(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, reply2.Id) + _, resp, err = th.Client.SetThreadUnreadByPostId(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, reply2.Id) require.NoError(t, err) CheckOKStatus(t, resp) checkThreadListReplies(t, th, th.Client, th.BasicUser.Id, 2, 1, nil) - _, resp, err = th.Client.SetThreadUnreadByPostId(th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, reply3.Id) + _, resp, err = th.Client.SetThreadUnreadByPostId(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, rpost.Id, reply3.Id) require.NoError(t, err) CheckOKStatus(t, resp) @@ -7148,15 +7149,15 @@ func TestReadThreads(t *testing.T) { th.UnlinkUserFromTeam(th.BasicUser, th.BasicTeam) defer th.LinkUserToTeam(th.BasicUser, th.BasicTeam) - _, resp, err := th.Client.UpdateThreadReadForUser(th.BasicUser.Id, th.BasicTeam.Id, model.NewId(), model.GetMillis()) + _, resp, err := th.Client.UpdateThreadReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.NewId(), model.GetMillis()) require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = th.Client.SetThreadUnreadByPostId(th.BasicUser.Id, th.BasicTeam.Id, model.NewId(), model.NewId()) + _, resp, err = th.Client.SetThreadUnreadByPostId(context.Background(), th.BasicUser.Id, th.BasicTeam.Id, model.NewId(), model.NewId()) require.Error(t, err) CheckForbiddenStatus(t, resp) - resp, err = th.Client.UpdateThreadsReadForUser(th.BasicUser.Id, th.BasicTeam.Id) + resp, err = th.Client.UpdateThreadsReadForUser(context.Background(), th.BasicUser.Id, th.BasicTeam.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -7184,24 +7185,24 @@ func TestMarkThreadUnreadMentionCount(t *testing.T) { reply1, _ := postAndCheck(t, client, &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply1 @" + th.BasicUser2.Username, RootId: rpost.Id}) reply2, _ := postAndCheck(t, client, &model.Post{ChannelId: th.BasicChannel.Id, Message: "testReply2", RootId: rpost.Id}) - th.SystemAdminClient.UpdateThreadReadForUser(th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, model.GetMillis()) + th.SystemAdminClient.UpdateThreadReadForUser(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, model.GetMillis()) - u, _, _ := th.SystemAdminClient.GetUserThreads(th.BasicUser2.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) + u, _, _ := th.SystemAdminClient.GetUserThreads(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) require.EqualValues(t, 0, u.TotalUnreadMentions) - th.SystemAdminClient.UpdateThreadReadForUser(th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, rpost.CreateAt) + th.SystemAdminClient.UpdateThreadReadForUser(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, rpost.CreateAt) - u, _, _ = th.SystemAdminClient.GetUserThreads(th.BasicUser2.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) + u, _, _ = th.SystemAdminClient.GetUserThreads(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) require.EqualValues(t, 1, u.TotalUnreadMentions) - th.SystemAdminClient.UpdateThreadReadForUser(th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, reply1.CreateAt) + th.SystemAdminClient.UpdateThreadReadForUser(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, reply1.CreateAt) - u, _, _ = th.SystemAdminClient.GetUserThreads(th.BasicUser2.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) + u, _, _ = th.SystemAdminClient.GetUserThreads(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) require.EqualValues(t, 1, u.TotalUnreadMentions) - th.SystemAdminClient.UpdateThreadReadForUser(th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, reply2.CreateAt) + th.SystemAdminClient.UpdateThreadReadForUser(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, rpost.Id, reply2.CreateAt) - u, _, _ = th.SystemAdminClient.GetUserThreads(th.BasicUser2.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) + u, _, _ = th.SystemAdminClient.GetUserThreads(context.Background(), th.BasicUser2.Id, th.BasicTeam.Id, model.GetUserThreadsOpts{}) require.EqualValues(t, 0, u.TotalUnreadMentions) } @@ -7219,9 +7220,9 @@ func TestPatchAndUpdateWithProviderAttributes(t *testing.T) { ).Return("") th.App.Channels().Ldap = ldapMock // CheckProviderAttributes should be called for both Patch and Update - th.SystemAdminClient.PatchUser(user.Id, &model.UserPatch{}) + th.SystemAdminClient.PatchUser(context.Background(), user.Id, &model.UserPatch{}) ldapMock.AssertNumberOfCalls(t, "CheckProviderAttributes", 1) - th.SystemAdminClient.UpdateUser(user) + th.SystemAdminClient.UpdateUser(context.Background(), user) ldapMock.AssertNumberOfCalls(t, "CheckProviderAttributes", 2) }) t.Run("SAML user", func(t *testing.T) { @@ -7239,9 +7240,9 @@ func TestPatchAndUpdateWithProviderAttributes(t *testing.T) { "CheckProviderAttributes", mock.Anything, mock.Anything, mock.Anything, ).Return("") th.App.Channels().Ldap = ldapMock - th.SystemAdminClient.PatchUser(user.Id, &model.UserPatch{}) + th.SystemAdminClient.PatchUser(context.Background(), user.Id, &model.UserPatch{}) ldapMock.AssertNumberOfCalls(t, "CheckProviderAttributes", 1) - th.SystemAdminClient.UpdateUser(user) + th.SystemAdminClient.UpdateUser(context.Background(), user) ldapMock.AssertNumberOfCalls(t, "CheckProviderAttributes", 2) }) t.Run("without LDAP sync", func(t *testing.T) { @@ -7253,9 +7254,9 @@ func TestPatchAndUpdateWithProviderAttributes(t *testing.T) { "CheckProviderAttributes", mock.Anything, mock.Anything, mock.Anything, ).Return("") th.App.Channels().Saml = samlMock - th.SystemAdminClient.PatchUser(user.Id, &model.UserPatch{}) + th.SystemAdminClient.PatchUser(context.Background(), user.Id, &model.UserPatch{}) samlMock.AssertNumberOfCalls(t, "CheckProviderAttributes", 1) - th.SystemAdminClient.UpdateUser(user) + th.SystemAdminClient.UpdateUser(context.Background(), user) samlMock.AssertNumberOfCalls(t, "CheckProviderAttributes", 2) }) }) @@ -7311,7 +7312,7 @@ func TestSetProfileImageWithProviderAttributes(t *testing.T) { *cfg.LdapSettings.PictureAttribute = "" } }) - resp, err2 := client.SetProfileImage(user.Id, data) + resp, err2 := client.SetProfileImage(context.Background(), user.Id, data) if testCase.shouldPass { require.NoError(t, err2) } else { @@ -7389,7 +7390,7 @@ func TestGetUsersWithInvalidEmails(t *testing.T) { Roles: model.SystemAdminRoleId + " " + model.SystemUserRoleId, } - _, resp, err := client.CreateUser(&user) + _, resp, err := client.CreateUser(context.Background(), &user) require.NoError(t, err) CheckCreatedStatus(t, resp) @@ -7398,7 +7399,7 @@ func TestGetUsersWithInvalidEmails(t *testing.T) { *cfg.TeamSettings.RestrictCreationToDomains = "localhost,simulator.amazonses.com" }) - users, _, err := client.GetUsersWithInvalidEmails(0, 50) + users, _, err := client.GetUsersWithInvalidEmails(context.Background(), 0, 50) require.NoError(t, err) assert.Len(t, users, 1) @@ -7406,7 +7407,7 @@ func TestGetUsersWithInvalidEmails(t *testing.T) { *cfg.TeamSettings.EnableOpenServer = true }) - _, resp, err = client.GetUsersWithInvalidEmails(0, 50) + _, resp, err = client.GetUsersWithInvalidEmails(context.Background(), 0, 50) require.Error(t, err) CheckBadRequestStatus(t, resp) @@ -7415,11 +7416,11 @@ func TestGetUsersWithInvalidEmails(t *testing.T) { *cfg.TeamSettings.RestrictCreationToDomains = "localhost,simulator.amazonses.com,invalid.mattermost.com" }) - users, _, err = client.GetUsersWithInvalidEmails(0, 50) + users, _, err = client.GetUsersWithInvalidEmails(context.Background(), 0, 50) require.NoError(t, err) assert.Len(t, users, 0) - _, resp, err = th.Client.GetUsersWithInvalidEmails(0, 50) + _, resp, err = th.Client.GetUsersWithInvalidEmails(context.Background(), 0, 50) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -7450,7 +7451,7 @@ func TestUserUpdateEvents(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { // trigger user update for onlineUser2 th.BasicUser.Nickname = "something_else" - ruser, _, err := client1.UpdateUser(th.BasicUser) + ruser, _, err := client1.UpdateUser(context.Background(), th.BasicUser) require.NoError(t, err) CheckUserSanitization(t, ruser) diff --git a/server/channels/api4/user_viewmembers_test.go b/server/channels/api4/user_viewmembers_test.go index 8872645696..67d7fa0690 100644 --- a/server/channels/api4/user_viewmembers_test.go +++ b/server/channels/api4/user_viewmembers_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/require" @@ -60,7 +61,7 @@ func TestAPIRestrictedViewMembers(t *testing.T) { th.App.SetStatusOnline(user4.Id, true) th.App.SetStatusOnline(user5.Id, true) - _, _, err := th.Client.Login(user1.Username, "test-password-1") + _, _, err := th.Client.Login(context.Background(), user1.Username, "test-password-1") require.NoError(t, err) t.Run("getUser", func(t *testing.T) { @@ -134,7 +135,7 @@ func TestAPIRestrictedViewMembers(t *testing.T) { th.AddPermissionToRole(model.PermissionViewMembers.Id, model.SystemUserRoleId) } - _, _, err := th.Client.GetUser(tc.UserId, "") + _, _, err := th.Client.GetUser(context.Background(), tc.UserId, "") if tc.ExpectedError != "" { CheckErrorID(t, err, tc.ExpectedError) } else { @@ -215,7 +216,7 @@ func TestAPIRestrictedViewMembers(t *testing.T) { th.AddPermissionToRole(model.PermissionViewMembers.Id, model.SystemUserRoleId) } - _, _, err := th.Client.GetUserByUsername(tc.Username, "") + _, _, err := th.Client.GetUserByUsername(context.Background(), tc.Username, "") if tc.ExpectedError != "" { CheckErrorID(t, err, tc.ExpectedError) } else { @@ -296,7 +297,7 @@ func TestAPIRestrictedViewMembers(t *testing.T) { th.AddPermissionToRole(model.PermissionViewMembers.Id, model.SystemUserRoleId) } - _, _, err := th.Client.GetUserByEmail(tc.Email, "") + _, _, err := th.Client.GetUserByEmail(context.Background(), tc.Email, "") if tc.ExpectedError != "" { CheckErrorID(t, err, tc.ExpectedError) } else { @@ -377,7 +378,7 @@ func TestAPIRestrictedViewMembers(t *testing.T) { th.AddPermissionToRole(model.PermissionViewMembers.Id, model.SystemUserRoleId) } - _, _, err := th.Client.GetDefaultProfileImage(tc.UserId) + _, _, err := th.Client.GetDefaultProfileImage(context.Background(), tc.UserId) if tc.ExpectedError != "" { CheckErrorID(t, err, tc.ExpectedError) } else { @@ -458,7 +459,7 @@ func TestAPIRestrictedViewMembers(t *testing.T) { th.AddPermissionToRole(model.PermissionViewMembers.Id, model.SystemUserRoleId) } - _, _, err := th.Client.GetProfileImage(tc.UserId, "") + _, _, err := th.Client.GetProfileImage(context.Background(), tc.UserId, "") if tc.ExpectedError != "" { CheckErrorID(t, err, tc.ExpectedError) } else { diff --git a/server/channels/api4/webhook_test.go b/server/channels/api4/webhook_test.go index e100644ffe..a1c9323016 100644 --- a/server/channels/api4/webhook_test.go +++ b/server/channels/api4/webhook_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "testing" "github.com/stretchr/testify/assert" @@ -32,7 +33,7 @@ func TestCreateIncomingWebhook(t *testing.T) { hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} - rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) require.Equal(t, hook.ChannelId, rhook.ChannelId, "channel ids didn't match") @@ -40,36 +41,36 @@ func TestCreateIncomingWebhook(t *testing.T) { require.Equal(t, th.BasicTeam.Id, rhook.TeamId, "team ids didn't match") hook.ChannelId = "junk" - _, resp, err := th.SystemAdminClient.CreateIncomingWebhook(hook) + _, resp, err := th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook) require.Error(t, err) CheckNotFoundStatus(t, resp) hook.ChannelId = th.BasicChannel.Id th.LoginTeamAdmin() - _, _, err = client.CreateIncomingWebhook(hook) + _, _, err = client.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) th.LoginBasic() - _, resp, err = client.CreateIncomingWebhook(hook) + _, resp, err = client.CreateIncomingWebhook(context.Background(), hook) require.Error(t, err) CheckForbiddenStatus(t, resp) th.AddPermissionToRole(model.PermissionManageIncomingWebhooks.Id, model.TeamUserRoleId) - _, _, err = client.CreateIncomingWebhook(hook) + _, _, err = client.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnablePostUsernameOverride = false }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnablePostIconOverride = false }) - _, _, err = client.CreateIncomingWebhook(hook) + _, _, err = client.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { hook.UserId = th.BasicUser2.Id defer func() { hook.UserId = "" }() - newHook, _, err2 := client.CreateIncomingWebhook(hook) + newHook, _, err2 := client.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err2) require.Equal(t, th.BasicUser2.Id, newHook.UserId) }, "Create an incoming webhook for a different user") @@ -78,7 +79,7 @@ func TestCreateIncomingWebhook(t *testing.T) { hook.UserId = "invalid-user" defer func() { hook.UserId = "" }() - _, response, err2 := client.CreateIncomingWebhook(hook) + _, response, err2 := client.CreateIncomingWebhook(context.Background(), hook) require.Error(t, err2) CheckNotFoundStatus(t, response) }, "Create an incoming webhook for an invalid user") @@ -87,7 +88,7 @@ func TestCreateIncomingWebhook(t *testing.T) { hook.UserId = th.BasicUser2.Id defer func() { hook.UserId = "" }() - _, response, err2 := client.CreateIncomingWebhook(hook) + _, response, err2 := client.CreateIncomingWebhook(context.Background(), hook) require.Error(t, err2) CheckForbiddenStatus(t, response) }) @@ -95,13 +96,13 @@ func TestCreateIncomingWebhook(t *testing.T) { t.Run("Create an incoming webhook in local mode without providing user", func(t *testing.T) { hook.UserId = "" - _, response, err2 := th.LocalClient.CreateIncomingWebhook(hook) + _, response, err2 := th.LocalClient.CreateIncomingWebhook(context.Background(), hook) require.Error(t, err2) CheckBadRequestStatus(t, response) }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableIncomingWebhooks = false }) - _, resp, err = client.CreateIncomingWebhook(hook) + _, resp, err = client.CreateIncomingWebhook(context.Background(), hook) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -122,7 +123,7 @@ func TestCreateIncomingWebhook_BypassTeamPermissions(t *testing.T) { hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} - rhook, _, err := th.Client.CreateIncomingWebhook(hook) + rhook, _, err := th.Client.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) require.Equal(t, rhook.ChannelId, hook.ChannelId) @@ -131,12 +132,12 @@ func TestCreateIncomingWebhook_BypassTeamPermissions(t *testing.T) { team := th.CreateTeam() team.AllowOpenInvite = false - th.Client.UpdateTeam(team) - th.SystemAdminClient.RemoveTeamMember(team.Id, th.BasicUser.Id) + th.Client.UpdateTeam(context.Background(), team) + th.SystemAdminClient.RemoveTeamMember(context.Background(), team.Id, th.BasicUser.Id) channel := th.CreateChannelWithClientAndTeam(th.SystemAdminClient, model.ChannelTypeOpen, team.Id) hook = &model.IncomingWebhook{ChannelId: channel.Id} - _, resp, err := th.Client.CreateIncomingWebhook(hook) + _, resp, err := th.Client.CreateIncomingWebhook(context.Background(), hook) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -156,10 +157,10 @@ func TestGetIncomingWebhooks(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManageIncomingWebhooks.Id, model.TeamUserRoleId) hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} - rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) - hooks, _, err := th.SystemAdminClient.GetIncomingWebhooks(0, 1000, "") + hooks, _, err := th.SystemAdminClient.GetIncomingWebhooks(context.Background(), 0, 1000, "") require.NoError(t, err) found := false @@ -172,12 +173,12 @@ func TestGetIncomingWebhooks(t *testing.T) { require.True(t, found, "missing hook") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - hooks, _, err = client.GetIncomingWebhooks(0, 1, "") + hooks, _, err = client.GetIncomingWebhooks(context.Background(), 0, 1, "") require.NoError(t, err) require.Len(t, hooks, 1, "should only be 1 hook") - hooks, _, err = client.GetIncomingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + hooks, _, err = client.GetIncomingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err) found = false @@ -189,31 +190,31 @@ func TestGetIncomingWebhooks(t *testing.T) { require.True(t, found, "missing hook") - hooks, _, err = client.GetIncomingWebhooksForTeam(model.NewId(), 0, 1000, "") + hooks, _, err = client.GetIncomingWebhooksForTeam(context.Background(), model.NewId(), 0, 1000, "") require.NoError(t, err) require.Empty(t, hooks, "no hooks should be returned") }) - _, resp, err := client.GetIncomingWebhooks(0, 1000, "") + _, resp, err := client.GetIncomingWebhooks(context.Background(), 0, 1000, "") require.Error(t, err) CheckForbiddenStatus(t, resp) th.AddPermissionToRole(model.PermissionManageIncomingWebhooks.Id, model.TeamUserRoleId) - _, _, err = client.GetIncomingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + _, _, err = client.GetIncomingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err) - _, resp, err = client.GetIncomingWebhooksForTeam(model.NewId(), 0, 1000, "") + _, resp, err = client.GetIncomingWebhooksForTeam(context.Background(), model.NewId(), 0, 1000, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - _, resp, err = client.GetIncomingWebhooks(0, 1000, "") + _, resp, err = client.GetIncomingWebhooks(context.Background(), 0, 1000, "") require.Error(t, err) CheckForbiddenStatus(t, resp) - client.Logout() - _, resp, err = client.GetIncomingWebhooks(0, 1000, "") + client.Logout(context.Background()) + _, resp, err = client.GetIncomingWebhooks(context.Background(), 0, 1000, "") require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -235,27 +236,27 @@ func TestGetIncomingWebhooksListByUser(t *testing.T) { // Basic user webhook bHook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicTeam.Id, UserId: th.BasicUser.Id} - basicHook, _, err := BasicClient.CreateIncomingWebhook(bHook) + basicHook, _, err := BasicClient.CreateIncomingWebhook(context.Background(), bHook) require.NoError(t, err) - basicHooks, _, err := BasicClient.GetIncomingWebhooks(0, 1000, "") + basicHooks, _, err := BasicClient.GetIncomingWebhooks(context.Background(), 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(basicHooks)) assert.Equal(t, basicHook.Id, basicHooks[0].Id) // Admin User webhook aHook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicTeam.Id, UserId: th.SystemAdminUser.Id} - _, _, err = th.SystemAdminClient.CreateIncomingWebhook(aHook) + _, _, err = th.SystemAdminClient.CreateIncomingWebhook(context.Background(), aHook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - adminHooks, _, err2 := client.GetIncomingWebhooks(0, 1000, "") + adminHooks, _, err2 := client.GetIncomingWebhooks(context.Background(), 0, 1000, "") require.NoError(t, err2) assert.Equal(t, 2, len(adminHooks)) }) //Re-check basic user that has no MANAGE_OTHERS permission - filteredHooks, _, err := BasicClient.GetIncomingWebhooks(0, 1000, "") + filteredHooks, _, err := BasicClient.GetIncomingWebhooks(context.Background(), 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(filteredHooks)) assert.Equal(t, basicHook.Id, filteredHooks[0].Id) @@ -277,27 +278,27 @@ func TestGetIncomingWebhooksByTeam(t *testing.T) { // Basic user webhook bHook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicTeam.Id, UserId: th.BasicUser.Id} - basicHook, _, err := BasicClient.CreateIncomingWebhook(bHook) + basicHook, _, err := BasicClient.CreateIncomingWebhook(context.Background(), bHook) require.NoError(t, err) - basicHooks, _, err := BasicClient.GetIncomingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + basicHooks, _, err := BasicClient.GetIncomingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(basicHooks)) assert.Equal(t, basicHook.Id, basicHooks[0].Id) // Admin User webhook aHook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicTeam.Id, UserId: th.SystemAdminUser.Id} - _, _, err = th.SystemAdminClient.CreateIncomingWebhook(aHook) + _, _, err = th.SystemAdminClient.CreateIncomingWebhook(context.Background(), aHook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - adminHooks, _, err2 := client.GetIncomingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + adminHooks, _, err2 := client.GetIncomingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err2) assert.Equal(t, 2, len(adminHooks)) }) //Re-check basic user that has no MANAGE_OTHERS permission - filteredHooks, _, err := BasicClient.GetIncomingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + filteredHooks, _, err := BasicClient.GetIncomingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(filteredHooks)) assert.Equal(t, basicHook.Id, filteredHooks[0].Id) @@ -310,30 +311,30 @@ func TestGetIncomingWebhook(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableIncomingWebhooks = true }) hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} - rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.GetIncomingWebhook(rhook.Id, "") + _, resp, err := client.GetIncomingWebhook(context.Background(), rhook.Id, "") require.NoError(t, err) CheckOKStatus(t, resp) }, "WhenHookExists") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.GetIncomingWebhook(model.NewId(), "") + _, resp, err := client.GetIncomingWebhook(context.Background(), model.NewId(), "") require.Error(t, err) CheckNotFoundStatus(t, resp) }, "WhenHookDoesNotExist") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - _, resp, err := client.GetIncomingWebhook("abc", "") + _, resp, err := client.GetIncomingWebhook(context.Background(), "abc", "") require.Error(t, err) CheckBadRequestStatus(t, resp) }, "WhenInvalidHookID") t.Run("WhenUserDoesNotHavePermissions", func(t *testing.T) { th.LoginBasic() - _, resp, err := th.Client.GetIncomingWebhook(rhook.Id, "") + _, resp, err := th.Client.GetIncomingWebhook(context.Background(), rhook.Id, "") require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -349,13 +350,13 @@ func TestDeleteIncomingWebhook(t *testing.T) { //var hook *model.IncomingWebhook th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err := client.DeleteIncomingWebhook("abc") + resp, err := client.DeleteIncomingWebhook(context.Background(), "abc") require.Error(t, err) CheckBadRequestStatus(t, resp) }, "WhenInvalidHookID") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err := client.DeleteIncomingWebhook(model.NewId()) + resp, err := client.DeleteIncomingWebhook(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }, "WhenHookDoesNotExist") @@ -365,26 +366,26 @@ func TestDeleteIncomingWebhook(t *testing.T) { // This request is performed by a system admin in both local // and sysadmin cases as it's not currently possible to create // a webhook via local mode - rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) - resp, err := client.DeleteIncomingWebhook(rhook.Id) + resp, err := client.DeleteIncomingWebhook(context.Background(), rhook.Id) require.NoError(t, err) CheckOKStatus(t, resp) // Get now should not return this deleted hook - _, resp, err = client.GetIncomingWebhook(rhook.Id, "") + _, resp, err = client.GetIncomingWebhook(context.Background(), rhook.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) }, "WhenHookExists") t.Run("WhenUserDoesNotHavePermissions", func(t *testing.T) { hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} - rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) th.LoginBasic() - resp, err := th.Client.DeleteIncomingWebhook(rhook.Id) + resp, err := th.Client.DeleteIncomingWebhook(context.Background(), rhook.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -406,7 +407,7 @@ func TestCreateOutgoingWebhook(t *testing.T) { hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, Username: "some-user-name", IconURL: "http://some-icon-url/"} - rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) assert.Equal(t, hook.ChannelId, rhook.ChannelId, "channel ids didn't match") @@ -414,30 +415,30 @@ func TestCreateOutgoingWebhook(t *testing.T) { assert.Equal(t, th.BasicChannel.TeamId, rhook.TeamId, "team ids didn't match") hook.ChannelId = "junk" - _, resp, err := th.SystemAdminClient.CreateOutgoingWebhook(hook) + _, resp, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook) require.Error(t, err) CheckNotFoundStatus(t, resp) hook.ChannelId = th.BasicChannel.Id th.LoginTeamAdmin() - _, _, err = client.CreateOutgoingWebhook(hook) + _, _, err = client.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) th.LoginBasic() - _, resp, err = client.CreateOutgoingWebhook(hook) + _, resp, err = client.CreateOutgoingWebhook(context.Background(), hook) require.Error(t, err) CheckForbiddenStatus(t, resp) th.AddPermissionToRole(model.PermissionManageOutgoingWebhooks.Id, model.TeamUserRoleId) - _, _, err = client.CreateOutgoingWebhook(hook) + _, _, err = client.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { hook.CreatorId = th.BasicUser2.Id defer func() { hook.CreatorId = "" }() - newHook, _, err2 := client.CreateOutgoingWebhook(hook) + newHook, _, err2 := client.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err2) require.Equal(t, th.BasicUser2.Id, newHook.CreatorId) }, "Create an outgoing webhook for a different user") @@ -446,7 +447,7 @@ func TestCreateOutgoingWebhook(t *testing.T) { hook.CreatorId = "invalid-user" defer func() { hook.CreatorId = "" }() - _, response, err2 := client.CreateOutgoingWebhook(hook) + _, response, err2 := client.CreateOutgoingWebhook(context.Background(), hook) require.Error(t, err2) CheckNotFoundStatus(t, response) }, "Create an incoming webhook for an invalid user") @@ -455,7 +456,7 @@ func TestCreateOutgoingWebhook(t *testing.T) { hook.CreatorId = th.BasicUser2.Id defer func() { hook.CreatorId = "" }() - _, response, err2 := client.CreateOutgoingWebhook(hook) + _, response, err2 := client.CreateOutgoingWebhook(context.Background(), hook) require.Error(t, err2) CheckForbiddenStatus(t, response) }) @@ -463,13 +464,13 @@ func TestCreateOutgoingWebhook(t *testing.T) { t.Run("Create an outgoing webhook in local mode without providing user", func(t *testing.T) { hook.CreatorId = "" - _, response, err2 := th.LocalClient.CreateOutgoingWebhook(hook) + _, response, err2 := th.LocalClient.CreateOutgoingWebhook(context.Background(), hook) require.Error(t, err2) CheckBadRequestStatus(t, response) }) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOutgoingWebhooks = false }) - _, resp, err = client.CreateOutgoingWebhook(hook) + _, resp, err = client.CreateOutgoingWebhook(context.Background(), hook) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -487,11 +488,11 @@ func TestGetOutgoingWebhooks(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManageOutgoingWebhooks.Id, model.TeamUserRoleId) hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - rhook, _, err2 := th.SystemAdminClient.CreateOutgoingWebhook(hook) + rhook, _, err2 := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err2) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - hooks, _, err := client.GetOutgoingWebhooks(0, 1000, "") + hooks, _, err := client.GetOutgoingWebhooks(context.Background(), 0, 1000, "") require.NoError(t, err) found := false @@ -503,12 +504,12 @@ func TestGetOutgoingWebhooks(t *testing.T) { require.True(t, found, "missing hook") - hooks, _, err = client.GetOutgoingWebhooks(0, 1, "") + hooks, _, err = client.GetOutgoingWebhooks(context.Background(), 0, 1, "") require.NoError(t, err) require.Len(t, hooks, 1, "should only be 1 hook") - hooks, _, err = client.GetOutgoingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + hooks, _, err = client.GetOutgoingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err) found = false @@ -520,12 +521,12 @@ func TestGetOutgoingWebhooks(t *testing.T) { require.True(t, found, "missing hook") - hooks, _, err = client.GetOutgoingWebhooksForTeam(model.NewId(), 0, 1000, "") + hooks, _, err = client.GetOutgoingWebhooksForTeam(context.Background(), model.NewId(), 0, 1000, "") require.NoError(t, err) require.Empty(t, hooks, "no hooks should be returned") - hooks, _, err = client.GetOutgoingWebhooksForChannel(th.BasicChannel.Id, 0, 1000, "") + hooks, _, err = client.GetOutgoingWebhooksForChannel(context.Background(), th.BasicChannel.Id, 0, 1000, "") require.NoError(t, err) found = false @@ -537,37 +538,37 @@ func TestGetOutgoingWebhooks(t *testing.T) { require.True(t, found, "missing hook") - _, resp, err := client.GetOutgoingWebhooksForChannel(model.NewId(), 0, 1000, "") + _, resp, err := client.GetOutgoingWebhooksForChannel(context.Background(), model.NewId(), 0, 1000, "") require.Error(t, err) CheckForbiddenStatus(t, resp) }) - _, resp, err2 := th.Client.GetOutgoingWebhooks(0, 1000, "") + _, resp, err2 := th.Client.GetOutgoingWebhooks(context.Background(), 0, 1000, "") require.Error(t, err2) CheckForbiddenStatus(t, resp) th.AddPermissionToRole(model.PermissionManageOutgoingWebhooks.Id, model.TeamUserRoleId) - _, _, err2 = th.Client.GetOutgoingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + _, _, err2 = th.Client.GetOutgoingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err2) - _, resp, err2 = th.Client.GetOutgoingWebhooksForTeam(model.NewId(), 0, 1000, "") + _, resp, err2 = th.Client.GetOutgoingWebhooksForTeam(context.Background(), model.NewId(), 0, 1000, "") require.Error(t, err2) CheckForbiddenStatus(t, resp) - _, _, err2 = th.Client.GetOutgoingWebhooksForChannel(th.BasicChannel.Id, 0, 1000, "") + _, _, err2 = th.Client.GetOutgoingWebhooksForChannel(context.Background(), th.BasicChannel.Id, 0, 1000, "") require.NoError(t, err2) - _, resp, err2 = th.Client.GetOutgoingWebhooksForChannel(model.NewId(), 0, 1000, "") + _, resp, err2 = th.Client.GetOutgoingWebhooksForChannel(context.Background(), model.NewId(), 0, 1000, "") require.Error(t, err2) CheckForbiddenStatus(t, resp) - _, resp, err2 = th.Client.GetOutgoingWebhooks(0, 1000, "") + _, resp, err2 = th.Client.GetOutgoingWebhooks(context.Background(), 0, 1000, "") require.Error(t, err2) CheckForbiddenStatus(t, resp) - th.Client.Logout() - _, resp, err2 = th.Client.GetOutgoingWebhooks(0, 1000, "") + th.Client.Logout(context.Background()) + _, resp, err2 = th.Client.GetOutgoingWebhooks(context.Background(), 0, 1000, "") require.Error(t, err2) CheckUnauthorizedStatus(t, resp) } @@ -587,27 +588,27 @@ func TestGetOutgoingWebhooksByTeam(t *testing.T) { // Basic user webhook bHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - basicHook, _, err := th.Client.CreateOutgoingWebhook(bHook) + basicHook, _, err := th.Client.CreateOutgoingWebhook(context.Background(), bHook) require.NoError(t, err) - basicHooks, _, err := th.Client.GetOutgoingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + basicHooks, _, err := th.Client.GetOutgoingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(basicHooks)) assert.Equal(t, basicHook.Id, basicHooks[0].Id) // Admin User webhook aHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - _, _, err = th.SystemAdminClient.CreateOutgoingWebhook(aHook) + _, _, err = th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), aHook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - adminHooks, _, err2 := client.GetOutgoingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + adminHooks, _, err2 := client.GetOutgoingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err2) assert.Equal(t, 2, len(adminHooks)) }) //Re-check basic user that has no MANAGE_OTHERS permission - filteredHooks, _, err := th.Client.GetOutgoingWebhooksForTeam(th.BasicTeam.Id, 0, 1000, "") + filteredHooks, _, err := th.Client.GetOutgoingWebhooksForTeam(context.Background(), th.BasicTeam.Id, 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(filteredHooks)) assert.Equal(t, basicHook.Id, filteredHooks[0].Id) @@ -628,27 +629,27 @@ func TestGetOutgoingWebhooksByChannel(t *testing.T) { // Basic user webhook bHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - basicHook, _, err := th.Client.CreateOutgoingWebhook(bHook) + basicHook, _, err := th.Client.CreateOutgoingWebhook(context.Background(), bHook) require.NoError(t, err) - basicHooks, _, err := th.Client.GetOutgoingWebhooksForChannel(th.BasicChannel.Id, 0, 1000, "") + basicHooks, _, err := th.Client.GetOutgoingWebhooksForChannel(context.Background(), th.BasicChannel.Id, 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(basicHooks)) assert.Equal(t, basicHook.Id, basicHooks[0].Id) // Admin User webhook aHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - _, _, err = th.SystemAdminClient.CreateOutgoingWebhook(aHook) + _, _, err = th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), aHook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - adminHooks, _, err2 := client.GetOutgoingWebhooksForChannel(th.BasicChannel.Id, 0, 1000, "") + adminHooks, _, err2 := client.GetOutgoingWebhooksForChannel(context.Background(), th.BasicChannel.Id, 0, 1000, "") require.NoError(t, err2) assert.Equal(t, 2, len(adminHooks)) }) //Re-check basic user that has no MANAGE_OTHERS permission - filteredHooks, _, err := th.Client.GetOutgoingWebhooksForChannel(th.BasicChannel.Id, 0, 1000, "") + filteredHooks, _, err := th.Client.GetOutgoingWebhooksForChannel(context.Background(), th.BasicChannel.Id, 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(filteredHooks)) assert.Equal(t, basicHook.Id, filteredHooks[0].Id) @@ -670,27 +671,27 @@ func TestGetOutgoingWebhooksListByUser(t *testing.T) { // Basic user webhook bHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - basicHook, _, err := th.Client.CreateOutgoingWebhook(bHook) + basicHook, _, err := th.Client.CreateOutgoingWebhook(context.Background(), bHook) require.NoError(t, err) - basicHooks, _, err := th.Client.GetOutgoingWebhooks(0, 1000, "") + basicHooks, _, err := th.Client.GetOutgoingWebhooks(context.Background(), 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(basicHooks)) assert.Equal(t, basicHook.Id, basicHooks[0].Id) // Admin User webhook aHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - _, _, err = th.SystemAdminClient.CreateOutgoingWebhook(aHook) + _, _, err = th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), aHook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - adminHooks, _, err2 := client.GetOutgoingWebhooks(0, 1000, "") + adminHooks, _, err2 := client.GetOutgoingWebhooks(context.Background(), 0, 1000, "") require.NoError(t, err2) assert.Equal(t, 2, len(adminHooks)) }) //Re-check basic user that has no MANAGE_OTHERS permission - filteredHooks, _, err := th.Client.GetOutgoingWebhooks(0, 1000, "") + filteredHooks, _, err := th.Client.GetOutgoingWebhooks(context.Background(), 0, 1000, "") require.NoError(t, err) assert.Equal(t, 1, len(filteredHooks)) assert.Equal(t, basicHook.Id, filteredHooks[0].Id) @@ -704,28 +705,28 @@ func TestGetOutgoingWebhook(t *testing.T) { hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - getHook, _, err2 := client.GetOutgoingWebhook(rhook.Id) + getHook, _, err2 := client.GetOutgoingWebhook(context.Background(), rhook.Id) require.NoError(t, err2) require.Equal(t, getHook.Id, rhook.Id, "failed to retrieve the correct outgoing hook") }) - _, resp, err := th.Client.GetOutgoingWebhook(rhook.Id) + _, resp, err := th.Client.GetOutgoingWebhook(context.Background(), rhook.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { nonExistentHook := &model.OutgoingWebhook{} - _, resp, err = client.GetOutgoingWebhook(nonExistentHook.Id) + _, resp, err = client.GetOutgoingWebhook(context.Background(), nonExistentHook.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) nonExistentHook.Id = model.NewId() - _, resp, err = client.GetOutgoingWebhook(nonExistentHook.Id) + _, resp, err = client.GetOutgoingWebhook(context.Background(), nonExistentHook.Id) require.Error(t, err) CheckNotFoundStatus(t, resp) }) @@ -756,7 +757,7 @@ func TestUpdateIncomingHook(t *testing.T) { // because it's not currently possible to create a webhook via // local mode var err error - createdHook, _, err = th.SystemAdminClient.CreateIncomingWebhook(hook1) + createdHook, _, err = th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook1) require.NoError(t, err) createdHook.DisplayName = "hook2" @@ -765,7 +766,7 @@ func TestUpdateIncomingHook(t *testing.T) { createdHook.Username = "username" createdHook.IconURL = "icon" - updatedHook, _, err := client.UpdateIncomingWebhook(createdHook) + updatedHook, _, err := client.UpdateIncomingWebhook(context.Background(), createdHook) require.NoError(t, err) require.NotNil(t, updatedHook, "should not be nil") @@ -784,7 +785,7 @@ func TestUpdateIncomingHook(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { var err error - createdHook, _, err = th.SystemAdminClient.CreateIncomingWebhook(hook1) + createdHook, _, err = th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook1) require.NoError(t, err) createdHook.DisplayName = "hook2" @@ -793,7 +794,7 @@ func TestUpdateIncomingHook(t *testing.T) { createdHook.Username = "username" createdHook.IconURL = "icon" - updatedHook, _, err := client.UpdateIncomingWebhook(createdHook) + updatedHook, _, err := client.UpdateIncomingWebhook(context.Background(), createdHook) require.NoError(t, err) require.NotNil(t, updatedHook, "should not be nil") @@ -810,12 +811,12 @@ func TestUpdateIncomingHook(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { hook2 := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id, CreateAt: 100} - createdHook2, _, err := th.SystemAdminClient.CreateIncomingWebhook(hook2) + createdHook2, _, err := th.SystemAdminClient.CreateIncomingWebhook(context.Background(), hook2) require.NoError(t, err) createdHook2.DisplayName = "Name2" - updatedHook, _, err := client.UpdateIncomingWebhook(createdHook2) + updatedHook, _, err := client.UpdateIncomingWebhook(context.Background(), createdHook2) require.NoError(t, err) require.NotNil(t, updatedHook) assert.Equal(t, createdHook2.CreateAt, updatedHook.CreateAt) @@ -824,7 +825,7 @@ func TestUpdateIncomingHook(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { createdHook.DisplayName = "Name3" - updatedHook, _, err := client.UpdateIncomingWebhook(createdHook) + updatedHook, _, err := client.UpdateIncomingWebhook(context.Background(), createdHook) require.NoError(t, err) require.NotNil(t, updatedHook, "should not be nil") require.NotEqual(t, createdHook.UpdateAt, updatedHook.UpdateAt, "failed - hook updateAt is not updated") @@ -833,18 +834,18 @@ func TestUpdateIncomingHook(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { nonExistentHook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} - _, resp, err := client.UpdateIncomingWebhook(nonExistentHook) + _, resp, err := client.UpdateIncomingWebhook(context.Background(), nonExistentHook) require.Error(t, err) CheckNotFoundStatus(t, resp) nonExistentHook.Id = model.NewId() - _, resp, err = client.UpdateIncomingWebhook(nonExistentHook) + _, resp, err = client.UpdateIncomingWebhook(context.Background(), nonExistentHook) require.Error(t, err) CheckNotFoundStatus(t, resp) }, "UpdateNonExistentHook") t.Run("UserIsNotAdminOfTeam", func(t *testing.T) { - _, resp, err := th.Client.UpdateIncomingWebhook(createdHook) + _, resp, err := th.Client.UpdateIncomingWebhook(context.Background(), createdHook) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -858,16 +859,16 @@ func TestUpdateIncomingHook(t *testing.T) { t.Run("UpdateHookOfSameUser", func(t *testing.T) { sameUserHook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} - sameUserHook, _, err := th.Client.CreateIncomingWebhook(sameUserHook) + sameUserHook, _, err := th.Client.CreateIncomingWebhook(context.Background(), sameUserHook) require.NoError(t, err) sameUserHook.UserId = th.BasicUser2.Id - _, _, err = th.Client.UpdateIncomingWebhook(sameUserHook) + _, _, err = th.Client.UpdateIncomingWebhook(context.Background(), sameUserHook) require.NoError(t, err) }) t.Run("UpdateHookOfDifferentUser", func(t *testing.T) { - _, resp, err := th.Client.UpdateIncomingWebhook(createdHook) + _, resp, err := th.Client.UpdateIncomingWebhook(context.Background(), createdHook) require.Error(t, err) CheckForbiddenStatus(t, resp) }) @@ -876,18 +877,18 @@ func TestUpdateIncomingHook(t *testing.T) { th.RemovePermissionFromRole(model.PermissionManageIncomingWebhooks.Id, model.TeamUserRoleId) th.AddPermissionToRole(model.PermissionManageIncomingWebhooks.Id, model.TeamAdminRoleId) - th.Client.Logout() + th.Client.Logout(context.Background()) th.UpdateUserToTeamAdmin(th.BasicUser2, th.BasicTeam) th.LoginBasic2() t.Run("UpdateByDifferentUser", func(t *testing.T) { - updatedHook, _, err := th.Client.UpdateIncomingWebhook(createdHook) + updatedHook, _, err := th.Client.UpdateIncomingWebhook(context.Background(), createdHook) require.NoError(t, err) require.NotEqual(t, th.BasicUser2.Id, updatedHook.UserId, "Hook's creator userId is not retained") }) t.Run("IncomingHooksDisabled", func(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableIncomingWebhooks = false }) - _, resp, err := th.Client.UpdateIncomingWebhook(createdHook) + _, resp, err := th.Client.UpdateIncomingWebhook(context.Background(), createdHook) require.Error(t, err) CheckNotImplementedStatus(t, resp) CheckErrorID(t, err, "api.incoming_webhook.disabled.app_error") @@ -897,18 +898,18 @@ func TestUpdateIncomingHook(t *testing.T) { t.Run("PrivateChannel", func(t *testing.T) { privateChannel := th.CreatePrivateChannel() - th.Client.Logout() + th.Client.Logout(context.Background()) th.LoginBasic() createdHook.ChannelId = privateChannel.Id - _, resp, err := th.Client.UpdateIncomingWebhook(createdHook) + _, resp, err := th.Client.UpdateIncomingWebhook(context.Background(), createdHook) require.Error(t, err) CheckForbiddenStatus(t, resp) }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { createdHook.ChannelId = "junk" - _, resp, err := client.UpdateIncomingWebhook(createdHook) + _, resp, err := client.UpdateIncomingWebhook(context.Background(), createdHook) require.Error(t, err) CheckNotFoundStatus(t, resp) }, "UpdateToNonExistentChannel") @@ -916,10 +917,10 @@ func TestUpdateIncomingHook(t *testing.T) { team := th.CreateTeamWithClient(th.Client) user := th.CreateUserWithClient(th.Client) th.LinkUserToTeam(user, team) - th.Client.Logout() - th.Client.Login(user.Id, user.Password) + th.Client.Logout(context.Background()) + th.Client.Login(context.Background(), user.Id, user.Password) t.Run("UpdateToADifferentTeam", func(t *testing.T) { - _, resp, err := th.Client.UpdateIncomingWebhook(createdHook) + _, resp, err := th.Client.UpdateIncomingWebhook(context.Background(), createdHook) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -941,7 +942,7 @@ func TestUpdateIncomingWebhook_BypassTeamPermissions(t *testing.T) { hook := &model.IncomingWebhook{ChannelId: th.BasicChannel.Id} - rhook, _, err := th.Client.CreateIncomingWebhook(hook) + rhook, _, err := th.Client.CreateIncomingWebhook(context.Background(), hook) require.NoError(t, err) require.Equal(t, rhook.ChannelId, hook.ChannelId) @@ -950,12 +951,12 @@ func TestUpdateIncomingWebhook_BypassTeamPermissions(t *testing.T) { team := th.CreateTeam() team.AllowOpenInvite = false - th.Client.UpdateTeam(team) - th.SystemAdminClient.RemoveTeamMember(team.Id, th.BasicUser.Id) + th.Client.UpdateTeam(context.Background(), team) + th.SystemAdminClient.RemoveTeamMember(context.Background(), team.Id, th.BasicUser.Id) channel := th.CreateChannelWithClientAndTeam(th.SystemAdminClient, model.ChannelTypeOpen, team.Id) hook2 := &model.IncomingWebhook{Id: rhook.Id, ChannelId: channel.Id} - _, resp, err := th.Client.UpdateIncomingWebhook(hook2) + _, resp, err := th.Client.UpdateIncomingWebhook(context.Background(), hook2) require.Error(t, err) CheckBadRequestStatus(t, resp) } @@ -968,27 +969,27 @@ func TestRegenOutgoingHookToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOutgoingWebhooks = true }) hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}} - rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) - _, resp, err := th.SystemAdminClient.RegenOutgoingHookToken("junk") + _, resp, err := th.SystemAdminClient.RegenOutgoingHookToken(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) //investigate why is act weird on jenkins - // _, resp,_ = th.SystemAdminClient.RegenOutgoingHookToken("") + // _, resp,_ = th.SystemAdminClient.RegenOutgoingHookToken(context.Background(), "") // CheckNotFoundStatus(t, resp) - regenHookToken, _, err := th.SystemAdminClient.RegenOutgoingHookToken(rhook.Id) + regenHookToken, _, err := th.SystemAdminClient.RegenOutgoingHookToken(context.Background(), rhook.Id) require.NoError(t, err) require.NotEqual(t, rhook.Token, regenHookToken.Token, "regen didn't work properly") - _, resp, err = client.RegenOutgoingHookToken(rhook.Id) + _, resp, err = client.RegenOutgoingHookToken(context.Background(), rhook.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOutgoingWebhooks = false }) - _, resp, err = th.SystemAdminClient.RegenOutgoingHookToken(rhook.Id) + _, resp, err = th.SystemAdminClient.RegenOutgoingHookToken(context.Background(), rhook.Id) require.Error(t, err) CheckNotImplementedStatus(t, resp) } @@ -1009,17 +1010,17 @@ func TestUpdateOutgoingHook(t *testing.T) { CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"cats"}} th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - rcreatedHook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(createdHook) + rcreatedHook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), createdHook) require.NoError(t, err) defer func() { - _, err = client.DeleteOutgoingWebhook(rcreatedHook.Id) + _, err = client.DeleteOutgoingWebhook(context.Background(), rcreatedHook.Id) require.NoError(t, err) }() rcreatedHook.DisplayName = "Cats" rcreatedHook.Description = "Get me some cats" - updatedHook, _, err := client.UpdateOutgoingWebhook(rcreatedHook) + updatedHook, _, err := client.UpdateOutgoingWebhook(context.Background(), rcreatedHook) require.NoError(t, err) require.Exactly(t, "Cats", updatedHook.DisplayName, "did not update") @@ -1027,16 +1028,16 @@ func TestUpdateOutgoingHook(t *testing.T) { }, "UpdateOutgoingWebhook") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - rcreatedHook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(createdHook) + rcreatedHook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), createdHook) require.NoError(t, err) defer func() { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOutgoingWebhooks = true }) - _, err = client.DeleteOutgoingWebhook(rcreatedHook.Id) + _, err = client.DeleteOutgoingWebhook(context.Background(), rcreatedHook.Id) require.NoError(t, err) }() th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOutgoingWebhooks = false }) - _, resp, err := client.UpdateOutgoingWebhook(rcreatedHook) + _, resp, err := client.UpdateOutgoingWebhook(context.Background(), rcreatedHook) require.Error(t, err) CheckNotImplementedStatus(t, resp) }, "OutgoingHooksDisabled") @@ -1046,30 +1047,30 @@ func TestUpdateOutgoingHook(t *testing.T) { hook2 := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"rats"}} - createdHook2, _, err := th.SystemAdminClient.CreateOutgoingWebhook(hook2) + createdHook2, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook2) require.NoError(t, err) defer func() { - _, err = client.DeleteOutgoingWebhook(createdHook2.Id) + _, err = client.DeleteOutgoingWebhook(context.Background(), createdHook2.Id) require.NoError(t, err) }() createdHook2.DisplayName = "Name2" - updatedHook2, _, err := client.UpdateOutgoingWebhook(createdHook2) + updatedHook2, _, err := client.UpdateOutgoingWebhook(context.Background(), createdHook2) require.NoError(t, err) require.Equal(t, createdHook2.CreateAt, updatedHook2.CreateAt, "failed - hook create at should not be changed") }, "RetainCreateAt") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - rcreatedHook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(createdHook) + rcreatedHook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), createdHook) require.NoError(t, err) defer func() { - _, err = client.DeleteOutgoingWebhook(rcreatedHook.Id) + _, err = client.DeleteOutgoingWebhook(context.Background(), rcreatedHook.Id) require.NoError(t, err) }() rcreatedHook.DisplayName = "Name3" - updatedHook2, _, err := client.UpdateOutgoingWebhook(rcreatedHook) + updatedHook2, _, err := client.UpdateOutgoingWebhook(context.Background(), rcreatedHook) require.NoError(t, err) require.NotEqual(t, createdHook.UpdateAt, updatedHook2.UpdateAt, "failed - hook updateAt is not updated") @@ -1079,21 +1080,21 @@ func TestUpdateOutgoingHook(t *testing.T) { nonExistentHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"rats"}} - _, resp, err := client.UpdateOutgoingWebhook(nonExistentHook) + _, resp, err := client.UpdateOutgoingWebhook(context.Background(), nonExistentHook) require.Error(t, err) CheckNotFoundStatus(t, resp) nonExistentHook.Id = model.NewId() - _, resp, err = client.UpdateOutgoingWebhook(nonExistentHook) + _, resp, err = client.UpdateOutgoingWebhook(context.Background(), nonExistentHook) require.Error(t, err) CheckNotFoundStatus(t, resp) }, "UpdateNonExistentHook") - createdHook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(createdHook) + createdHook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), createdHook) require.NoError(t, err) t.Run("UserIsNotAdminOfTeam", func(t *testing.T) { - _, resp, err2 := th.Client.UpdateOutgoingWebhook(createdHook) + _, resp, err2 := th.Client.UpdateOutgoingWebhook(context.Background(), createdHook) require.Error(t, err2) CheckForbiddenStatus(t, resp) }) @@ -1102,22 +1103,22 @@ func TestUpdateOutgoingHook(t *testing.T) { hook2 := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"rats2"}} - createdHook2, _, err := th.SystemAdminClient.CreateOutgoingWebhook(hook2) + createdHook2, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook2) require.NoError(t, err) - _, resp, err := th.Client.UpdateOutgoingWebhook(createdHook2) + _, resp, err := th.Client.UpdateOutgoingWebhook(context.Background(), createdHook2) require.Error(t, err) CheckForbiddenStatus(t, resp) th.RemovePermissionFromRole(model.PermissionManageOutgoingWebhooks.Id, model.TeamUserRoleId) th.AddPermissionToRole(model.PermissionManageOutgoingWebhooks.Id, model.TeamAdminRoleId) - th.Client.Logout() + th.Client.Logout(context.Background()) th.UpdateUserToTeamAdmin(th.BasicUser2, th.BasicTeam) th.LoginBasic2() t.Run("RetainHookCreator", func(t *testing.T) { createdHook.DisplayName = "Basic user 2" - updatedHook, _, err2 := th.Client.UpdateOutgoingWebhook(createdHook) + updatedHook, _, err2 := th.Client.UpdateOutgoingWebhook(context.Background(), createdHook) require.NoError(t, err2) require.Exactly(t, "Basic user 2", updatedHook.DisplayName, "should apply the change") @@ -1127,25 +1128,25 @@ func TestUpdateOutgoingHook(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { firstHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://someurl"}, TriggerWords: []string{"first"}} - firstHook, _, err = th.SystemAdminClient.CreateOutgoingWebhook(firstHook) + firstHook, _, err = th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), firstHook) require.NoError(t, err) baseHook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://someurl"}, TriggerWords: []string{"base"}} - baseHook, _, err = th.SystemAdminClient.CreateOutgoingWebhook(baseHook) + baseHook, _, err = th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), baseHook) require.NoError(t, err) defer func() { - _, err = client.DeleteOutgoingWebhook(firstHook.Id) + _, err = client.DeleteOutgoingWebhook(context.Background(), firstHook.Id) require.NoError(t, err) - _, err = client.DeleteOutgoingWebhook(baseHook.Id) + _, err = client.DeleteOutgoingWebhook(context.Background(), baseHook.Id) require.NoError(t, err) }() t.Run("OnSameChannel", func(t *testing.T) { baseHook.TriggerWords = []string{"first"} - _, resp, err2 := client.UpdateOutgoingWebhook(baseHook) + _, resp, err2 := client.UpdateOutgoingWebhook(context.Background(), baseHook) require.Error(t, err2) CheckBadRequestStatus(t, resp) }) @@ -1154,7 +1155,7 @@ func TestUpdateOutgoingHook(t *testing.T) { baseHook.TriggerWords = []string{"first"} baseHook.ChannelId = th.BasicChannel2.Id - _, _, err = client.UpdateOutgoingWebhook(baseHook) + _, _, err = client.UpdateOutgoingWebhook(context.Background(), baseHook) require.NoError(t, err) }) }, "UpdateToExistingTriggerWordAndCallback") @@ -1162,7 +1163,7 @@ func TestUpdateOutgoingHook(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { createdHook.ChannelId = "junk" - _, resp, err := client.UpdateOutgoingWebhook(createdHook) + _, resp, err := client.UpdateOutgoingWebhook(context.Background(), createdHook) require.Error(t, err) CheckNotFoundStatus(t, resp) }, "UpdateToNonExistentChannel") @@ -1171,7 +1172,7 @@ func TestUpdateOutgoingHook(t *testing.T) { privateChannel := th.CreatePrivateChannel() createdHook.ChannelId = privateChannel.Id - _, resp, err := client.UpdateOutgoingWebhook(createdHook) + _, resp, err := client.UpdateOutgoingWebhook(context.Background(), createdHook) require.Error(t, err) CheckForbiddenStatus(t, resp) }, "UpdateToPrivateChannel") @@ -1180,7 +1181,7 @@ func TestUpdateOutgoingHook(t *testing.T) { createdHook.ChannelId = "" createdHook.TriggerWords = nil - _, resp, err := client.UpdateOutgoingWebhook(createdHook) + _, resp, err := client.UpdateOutgoingWebhook(context.Background(), createdHook) require.Error(t, err) CheckInternalErrorStatus(t, resp) }, "UpdateToBlankTriggerWordAndChannel") @@ -1188,10 +1189,10 @@ func TestUpdateOutgoingHook(t *testing.T) { team := th.CreateTeamWithClient(th.Client) user := th.CreateUserWithClient(th.Client) th.LinkUserToTeam(user, team) - th.Client.Logout() - th.Client.Login(user.Id, user.Password) + th.Client.Logout(context.Background()) + th.Client.Login(context.Background(), user.Id, user.Password) t.Run("UpdateToADifferentTeam", func(t *testing.T) { - _, resp, err := th.Client.UpdateOutgoingWebhook(createdHook) + _, resp, err := th.Client.UpdateOutgoingWebhook(context.Background(), createdHook) require.Error(t, err) CheckUnauthorizedStatus(t, resp) }) @@ -1212,7 +1213,7 @@ func TestUpdateOutgoingWebhook_BypassTeamPermissions(t *testing.T) { hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"rats2"}} - rhook, _, err := th.Client.CreateOutgoingWebhook(hook) + rhook, _, err := th.Client.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) require.Equal(t, rhook.ChannelId, hook.ChannelId) @@ -1220,12 +1221,12 @@ func TestUpdateOutgoingWebhook_BypassTeamPermissions(t *testing.T) { team := th.CreateTeam() team.AllowOpenInvite = false - th.Client.UpdateTeam(team) - th.SystemAdminClient.RemoveTeamMember(team.Id, th.BasicUser.Id) + th.Client.UpdateTeam(context.Background(), team) + th.SystemAdminClient.RemoveTeamMember(context.Background(), team.Id, th.BasicUser.Id) channel := th.CreateChannelWithClientAndTeam(th.SystemAdminClient, model.ChannelTypeOpen, team.Id) hook2 := &model.OutgoingWebhook{Id: rhook.Id, ChannelId: channel.Id} - _, resp, err := th.Client.UpdateOutgoingWebhook(hook2) + _, resp, err := th.Client.UpdateOutgoingWebhook(context.Background(), hook2) require.Error(t, err) CheckForbiddenStatus(t, resp) } @@ -1237,13 +1238,13 @@ func TestDeleteOutgoingHook(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableIncomingWebhooks = true }) th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err := client.DeleteOutgoingWebhook("abc") + resp, err := client.DeleteOutgoingWebhook(context.Background(), "abc") require.Error(t, err) CheckBadRequestStatus(t, resp) }, "WhenInvalidHookID") th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { - resp, err := client.DeleteOutgoingWebhook(model.NewId()) + resp, err := client.DeleteOutgoingWebhook(context.Background(), model.NewId()) require.Error(t, err) CheckNotFoundStatus(t, resp) }, "WhenHookDoesNotExist") @@ -1251,15 +1252,15 @@ func TestDeleteOutgoingHook(t *testing.T) { th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) { hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"cats"}} - rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) - resp, err := client.DeleteOutgoingWebhook(rhook.Id) + resp, err := client.DeleteOutgoingWebhook(context.Background(), rhook.Id) require.NoError(t, err) CheckOKStatus(t, resp) // Get now should not return this deleted hook - _, resp, err = client.GetIncomingWebhook(rhook.Id, "") + _, resp, err = client.GetIncomingWebhook(context.Background(), rhook.Id, "") require.Error(t, err) CheckNotFoundStatus(t, resp) }, "WhenHookExists") @@ -1267,11 +1268,11 @@ func TestDeleteOutgoingHook(t *testing.T) { t.Run("WhenUserDoesNotHavePermissions", func(t *testing.T) { hook := &model.OutgoingWebhook{ChannelId: th.BasicChannel.Id, TeamId: th.BasicChannel.TeamId, CallbackURLs: []string{"http://nowhere.com"}, TriggerWords: []string{"dogs"}} - rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(hook) + rhook, _, err := th.SystemAdminClient.CreateOutgoingWebhook(context.Background(), hook) require.NoError(t, err) th.LoginBasic() - resp, err := th.Client.DeleteOutgoingWebhook(rhook.Id) + resp, err := th.Client.DeleteOutgoingWebhook(context.Background(), rhook.Id) require.Error(t, err) CheckForbiddenStatus(t, resp) }) diff --git a/server/channels/api4/websocket_test.go b/server/channels/api4/websocket_test.go index 564076df21..202631c66d 100644 --- a/server/channels/api4/websocket_test.go +++ b/server/channels/api4/websocket_test.go @@ -4,6 +4,7 @@ package api4 import ( + "context" "fmt" "net/http" "strings" @@ -141,7 +142,7 @@ func TestCreateDirectChannelWithSocket(t *testing.T) { for _, user := range users { time.Sleep(100 * time.Millisecond) - _, _, err := client.CreateDirectChannel(th.BasicUser.Id, user.Id) + _, _, err := client.CreateDirectChannel(context.Background(), th.BasicUser.Id, user.Id) require.NoError(t, err, "failed to create DM channel") } @@ -291,23 +292,23 @@ func TestWebSocketStatuses(t *testing.T) { require.Equal(t, resp.Status, model.StatusOk, "should have responded OK to authentication challenge") team := model.Team{DisplayName: "Name", Name: "z-z-" + model.NewRandomTeamName() + "a", Email: "test@nowhere.com", Type: model.TeamOpen} - rteam, _, _ := client.CreateTeam(&team) + rteam, _, _ := client.CreateTeam(context.Background(), &team) user := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} - ruser, _, err := client.CreateUser(&user) + ruser, _, err := client.CreateUser(context.Background(), &user) require.NoError(t, err) th.LinkUserToTeam(ruser, rteam) _, err = th.App.Srv().Store().User().VerifyEmail(ruser.Id, ruser.Email) require.NoError(t, err) user2 := model.User{Email: strings.ToLower(model.NewId()) + "success+test@simulator.amazonses.com", Nickname: "Corey Hulen", Password: "passwd1"} - ruser2, _, err := client.CreateUser(&user2) + ruser2, _, err := client.CreateUser(context.Background(), &user2) require.NoError(t, err) th.LinkUserToTeam(ruser2, rteam) _, err = th.App.Srv().Store().User().VerifyEmail(ruser2.Id, ruser2.Email) require.NoError(t, err) - client.Login(user.Email, user.Password) + client.Login(context.Background(), user.Email, user.Password) th.LoginBasic2() diff --git a/server/channels/app/slashcommands/auto_environment.go b/server/channels/app/slashcommands/auto_environment.go index 1321dbb0a2..7170044ea2 100644 --- a/server/channels/app/slashcommands/auto_environment.go +++ b/server/channels/app/slashcommands/auto_environment.go @@ -4,6 +4,7 @@ package slashcommands import ( + "context" "math/rand" "time" @@ -37,7 +38,7 @@ func CreateTestEnvironmentWithTeams(a *app.App, c request.CTX, client *model.Cli if err != nil { return TestEnvironment{}, err } - client.LoginById(randomUser.Id, UserPassword) + client.LoginById(context.Background(), randomUser.Id, UserPassword) teamEnvironment, err := CreateTestEnvironmentInTeam(a, c, client, team, rangeChannels, rangeUsers, rangePosts, fuzzy) if err != nil { return TestEnvironment{}, err @@ -77,12 +78,12 @@ func CreateTestEnvironmentInTeam(a *app.App, c request.CTX, client *model.Client // Have every user join every channel for _, user := range users { for _, channel := range channels { - _, _, err := client.LoginById(user.Id, UserPassword) + _, _, err := client.LoginById(context.Background(), user.Id, UserPassword) if err != nil { return TeamEnvironment{}, err } - _, _, err = client.AddChannelMember(channel.Id, user.Id) + _, _, err = client.AddChannelMember(context.Background(), channel.Id, user.Id) if err != nil { return TeamEnvironment{}, err } @@ -93,7 +94,7 @@ func CreateTestEnvironmentInTeam(a *app.App, c request.CTX, client *model.Client numImages := utils.RandIntFromRange(rangePosts) / 4 for j := 0; j < numPosts; j++ { user := users[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(users) - 1})] - _, _, err := client.LoginById(user.Id, UserPassword) + _, _, err := client.LoginById(context.Background(), user.Id, UserPassword) if err != nil { return TeamEnvironment{}, err } diff --git a/server/channels/app/slashcommands/auto_teams.go b/server/channels/app/slashcommands/auto_teams.go index aa6930e423..5a6edd58d4 100644 --- a/server/channels/app/slashcommands/auto_teams.go +++ b/server/channels/app/slashcommands/auto_teams.go @@ -4,6 +4,8 @@ package slashcommands import ( + "context" + "github.com/mattermost/mattermost-server/server/public/model" "github.com/mattermost/mattermost-server/server/v8/channels/utils" ) @@ -57,7 +59,7 @@ func (cfg *AutoTeamCreator) createRandomTeam() (*model.Team, error) { Type: model.TeamOpen, } - createdTeam, _, err := cfg.client.CreateTeam(team) + createdTeam, _, err := cfg.client.CreateTeam(context.Background(), team) if err != nil { return nil, err } diff --git a/server/channels/app/slashcommands/auto_users.go b/server/channels/app/slashcommands/auto_users.go index af7e50ae58..9968c77aaa 100644 --- a/server/channels/app/slashcommands/auto_users.go +++ b/server/channels/app/slashcommands/auto_users.go @@ -4,6 +4,7 @@ package slashcommands import ( + "context" "errors" "net/http" @@ -42,18 +43,18 @@ func NewAutoUserCreator(a *app.App, client *model.Client4, team *model.Team) *Au // Basic test team and user so you always know one func CreateBasicUser(a *app.App, client *model.Client4) error { - found, _, _ := client.TeamExists(BTestTeamName, "") + found, _, _ := client.TeamExists(context.Background(), BTestTeamName, "") if found { return nil } newteam := &model.Team{DisplayName: BTestTeamDisplayName, Name: BTestTeamName, Email: BTestTeamEmail, Type: BTestTeamType} - basicteam, _, err := client.CreateTeam(newteam) + basicteam, _, err := client.CreateTeam(context.Background(), newteam) if err != nil { return err } newuser := &model.User{Email: BTestUserEmail, Nickname: BTestUserName, Password: BTestUserPassword} - ruser, _, err := client.CreateUser(newuser) + ruser, _, err := client.CreateUser(context.Background(), newuser) if err != nil { return err } diff --git a/server/channels/app/slashcommands/command_loadtest.go b/server/channels/app/slashcommands/command_loadtest.go index e51fb3d1c6..7e99cec8e6 100644 --- a/server/channels/app/slashcommands/command_loadtest.go +++ b/server/channels/app/slashcommands/command_loadtest.go @@ -4,6 +4,7 @@ package slashcommands import ( + "context" "encoding/json" "io" "net/http" @@ -248,7 +249,7 @@ func (*LoadTestProvider) SetupCommand(a *app.App, c request.CTX, args *model.Com if err := CreateBasicUser(a, client); err != nil { return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.CommandResponseTypeEphemeral}, err } - _, _, err := client.Login(BTestUserEmail, BTestUserPassword) + _, _, err := client.Login(context.Background(), BTestUserEmail, BTestUserPassword) if err != nil { return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.CommandResponseTypeEphemeral}, err } @@ -604,7 +605,7 @@ func (*LoadTestProvider) PostCommand(a *app.App, c request.CTX, args *model.Comm } client := model.NewAPIv4Client(args.SiteURL) - _, _, nErr := client.LoginById(user.Id, passwd) + _, _, nErr := client.LoginById(context.Background(), user.Id, passwd) if nErr != nil { return &model.CommandResponse{Text: "Failed to login a user", ResponseType: model.CommandResponseTypeEphemeral}, nErr } @@ -613,7 +614,7 @@ func (*LoadTestProvider) PostCommand(a *app.App, c request.CTX, args *model.Comm ChannelId: channel.Id, Message: textMessage, } - _, _, nErr = client.CreatePost(post) + _, _, nErr = client.CreatePost(context.Background(), post) if nErr != nil { return &model.CommandResponse{Text: "Failed to create a post", ResponseType: model.CommandResponseTypeEphemeral}, nErr } diff --git a/server/channels/manualtesting/manual_testing.go b/server/channels/manualtesting/manual_testing.go index 19e21201b9..dd3c748983 100644 --- a/server/channels/manualtesting/manual_testing.go +++ b/server/channels/manualtesting/manual_testing.go @@ -4,6 +4,7 @@ package manualtesting import ( + "context" "errors" "hash/fnv" "math/rand" @@ -107,7 +108,7 @@ func manualTest(c *web.Context, w http.ResponseWriter, r *http.Request) { Nickname: username[0], Password: slashcommands.UserPassword} - user, _, err = client.CreateUser(user) + user, _, err = client.CreateUser(context.Background(), user) if err != nil { var appErr *model.AppError ok = errors.As(err, &appErr) @@ -126,7 +127,7 @@ func manualTest(c *web.Context, w http.ResponseWriter, r *http.Request) { userID = user.Id // Login as user to generate auth token - _, _, err = client.LoginById(user.Id, slashcommands.UserPassword) + _, _, err = client.LoginById(context.Background(), user.Id, slashcommands.UserPassword) if err != nil { var appErr *model.AppError ok = errors.As(err, &appErr) diff --git a/server/channels/manualtesting/test_autolink.go b/server/channels/manualtesting/test_autolink.go index b8bb6a4433..97988758b9 100644 --- a/server/channels/manualtesting/test_autolink.go +++ b/server/channels/manualtesting/test_autolink.go @@ -4,6 +4,7 @@ package manualtesting import ( + "context" "errors" "net/http" @@ -32,7 +33,7 @@ func testAutoLink(env TestEnvironment) *model.AppError { post := &model.Post{ ChannelId: channelID, Message: linkPostText} - _, _, err := env.Client.CreatePost(post) + _, _, err := env.Client.CreatePost(context.Background(), post) var appErr *model.AppError if ok = errors.As(err, &appErr); !ok { diff --git a/server/channels/web/oauth_test.go b/server/channels/web/oauth_test.go index ec0550cea9..34525aafed 100644 --- a/server/channels/web/oauth_test.go +++ b/server/channels/web/oauth_test.go @@ -80,7 +80,7 @@ func TestAuthorizeOAuthApp(t *testing.T) { } // Test auth code flow - ruri, _, err := apiClient.AuthorizeOAuthApp(authRequest) + ruri, _, err := apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) require.NotEmpty(t, ruri, "redirect url should be set") @@ -92,7 +92,7 @@ func TestAuthorizeOAuthApp(t *testing.T) { // Test implicit flow authRequest.ResponseType = model.ImplicitResponseType - ruri, _, err = apiClient.AuthorizeOAuthApp(authRequest) + ruri, _, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) require.False(t, ruri == "", "redirect url should be set") @@ -105,36 +105,36 @@ func TestAuthorizeOAuthApp(t *testing.T) { oldToken := apiClient.AuthToken apiClient.AuthToken = values.Get("access_token") - _, resp, err := apiClient.AuthorizeOAuthApp(authRequest) + _, resp, err := apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.Error(t, err) CheckForbiddenStatus(t, resp) apiClient.AuthToken = oldToken authRequest.RedirectURI = "" - _, resp, err = apiClient.AuthorizeOAuthApp(authRequest) + _, resp, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.Error(t, err) CheckBadRequestStatus(t, resp) authRequest.RedirectURI = "http://somewhereelse.com" - _, resp, err = apiClient.AuthorizeOAuthApp(authRequest) + _, resp, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.Error(t, err) CheckBadRequestStatus(t, resp) authRequest.RedirectURI = rapp.CallbackUrls[0] authRequest.ResponseType = "" - _, resp, err = apiClient.AuthorizeOAuthApp(authRequest) + _, resp, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.Error(t, err) CheckBadRequestStatus(t, resp) authRequest.ResponseType = model.AuthCodeResponseType authRequest.ClientId = "" - _, resp, err = apiClient.AuthorizeOAuthApp(authRequest) + _, resp, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.Error(t, err) CheckBadRequestStatus(t, resp) authRequest.ClientId = model.NewId() - _, resp, err = apiClient.AuthorizeOAuthApp(authRequest) + _, resp, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.Error(t, err) CheckNotFoundStatus(t, resp) @@ -157,7 +157,7 @@ func TestAuthorizeOAuthApp(t *testing.T) { Scope: "", State: "123", } - uriResponse, _, err := apiClient.AuthorizeOAuthApp(authRequest) + uriResponse, _, err := apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) ru, _ = url.Parse(uriResponse) require.NotEmpty(t, uriResponse, "redirect url should be set") @@ -198,21 +198,21 @@ func TestDeauthorizeOAuthApp(t *testing.T) { State: "123", } - _, _, err := apiClient.AuthorizeOAuthApp(authRequest) + _, _, err := apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) - _, err = apiClient.DeauthorizeOAuthApp(rapp.Id) + _, err = apiClient.DeauthorizeOAuthApp(context.Background(), rapp.Id) require.NoError(t, err) - resp, err := apiClient.DeauthorizeOAuthApp("junk") + resp, err := apiClient.DeauthorizeOAuthApp(context.Background(), "junk") require.Error(t, err) CheckBadRequestStatus(t, resp) - _, err = apiClient.DeauthorizeOAuthApp(model.NewId()) + _, err = apiClient.DeauthorizeOAuthApp(context.Background(), model.NewId()) require.NoError(t, err) th.Logout(apiClient) - resp, err = apiClient.DeauthorizeOAuthApp(rapp.Id) + resp, err = apiClient.DeauthorizeOAuthApp(context.Background(), rapp.Id) require.Error(t, err) CheckUnauthorizedStatus(t, resp) } @@ -252,7 +252,7 @@ func TestOAuthAccessToken(t *testing.T) { th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = false }) data := url.Values{"grant_type": []string{"junk"}, "client_id": []string{"12345678901234567890123456"}, "client_secret": []string{"12345678901234567890123456"}, "code": []string{"junk"}, "redirect_uri": []string{oauthApp.CallbackUrls[0]}} - _, _, err := apiClient.GetOAuthAccessToken(data) + _, _, err := apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - oauth providing turned off") th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = true }) @@ -264,47 +264,47 @@ func TestOAuthAccessToken(t *testing.T) { State: "123", } - redirect, _, err := apiClient.AuthorizeOAuthApp(authRequest) + redirect, _, err := apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) rurl, _ := url.Parse(redirect) - apiClient.Logout() + apiClient.Logout(context.Background()) data = url.Values{"grant_type": []string{"junk"}, "client_id": []string{oauthApp.Id}, "client_secret": []string{oauthApp.ClientSecret}, "code": []string{rurl.Query().Get("code")}, "redirect_uri": []string{oauthApp.CallbackUrls[0]}} - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - bad grant type") data.Set("grant_type", model.AccessTokenGrantType) data.Set("client_id", "") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - missing client id") data.Set("client_id", "junk") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - bad client id") data.Set("client_id", oauthApp.Id) data.Set("client_secret", "") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - missing client secret") data.Set("client_secret", "junk") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - bad client secret") data.Set("client_secret", oauthApp.ClientSecret) data.Set("code", "") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - missing code") data.Set("code", "junk") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - bad code") data.Set("code", rurl.Query().Get("code")) data.Set("redirect_uri", "junk") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - non-matching redirect uri") // reset data for successful request @@ -316,29 +316,29 @@ func TestOAuthAccessToken(t *testing.T) { token := "" refreshToken := "" - rsp, _, err := apiClient.GetOAuthAccessToken(data) + rsp, _, err := apiClient.GetOAuthAccessToken(context.Background(), data) require.NoError(t, err) require.NotEmpty(t, rsp.AccessToken, "access token not returned") require.NotEmpty(t, rsp.RefreshToken, "refresh token not returned") token, refreshToken = rsp.AccessToken, rsp.RefreshToken require.Equal(t, rsp.TokenType, model.AccessTokenType, "access token type incorrect") - _, err = apiClient.DoAPIGet("/oauth_test", "") + _, err = apiClient.DoAPIGet(context.Background(), "/oauth_test", "") require.NoError(t, err) apiClient.SetOAuthToken("") - _, err = apiClient.DoAPIGet("/oauth_test", "") + _, err = apiClient.DoAPIGet(context.Background(), "/oauth_test", "") require.Error(t, err, "should have failed - no access token provided") apiClient.SetOAuthToken("badtoken") - _, err = apiClient.DoAPIGet("/oauth_test", "") + _, err = apiClient.DoAPIGet(context.Background(), "/oauth_test", "") require.Error(t, err, "should have failed - bad token provided") apiClient.SetOAuthToken(token) - _, err = apiClient.DoAPIGet("/oauth_test", "") + _, err = apiClient.DoAPIGet(context.Background(), "/oauth_test", "") require.NoError(t, err) - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "should have failed - tried to reuse auth code") data.Set("grant_type", model.RefreshTokenGrantType) @@ -347,11 +347,11 @@ func TestOAuthAccessToken(t *testing.T) { data.Set("refresh_token", "") data.Set("redirect_uri", oauthApp.CallbackUrls[0]) data.Del("code") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "Should have failed - refresh token empty") data.Set("refresh_token", refreshToken) - rsp, _, err = apiClient.GetOAuthAccessToken(data) + rsp, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.NoError(t, err) require.NotEmpty(t, rsp.AccessToken, "access token not returned") require.NotEmpty(t, rsp.RefreshToken, "refresh token not returned") @@ -359,11 +359,11 @@ func TestOAuthAccessToken(t *testing.T) { require.Equal(t, rsp.TokenType, model.AccessTokenType, "access token type incorrect") apiClient.SetOAuthToken(rsp.AccessToken) - _, err = apiClient.DoAPIGet("/oauth_test", "") + _, err = apiClient.DoAPIGet(context.Background(), "/oauth_test", "") require.NoError(t, err) data.Set("refresh_token", rsp.RefreshToken) - rsp, _, err = apiClient.GetOAuthAccessToken(data) + rsp, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.NoError(t, err) require.NotEmpty(t, rsp.AccessToken, "access token not returned") require.NotEmpty(t, rsp.RefreshToken, "refresh token not returned") @@ -371,7 +371,7 @@ func TestOAuthAccessToken(t *testing.T) { require.Equal(t, rsp.TokenType, model.AccessTokenType, "access token type incorrect") apiClient.SetOAuthToken(rsp.AccessToken) - _, err = apiClient.DoAPIGet("/oauth_test", "") + _, err = apiClient.DoAPIGet(context.Background(), "/oauth_test", "") require.NoError(t, err) authData := &model.AuthData{ClientId: oauthApp.Id, RedirectUri: oauthApp.CallbackUrls[0], UserId: th.BasicUser.Id, Code: model.NewId(), ExpiresIn: -1} @@ -384,7 +384,7 @@ func TestOAuthAccessToken(t *testing.T) { data.Set("redirect_uri", oauthApp.CallbackUrls[0]) data.Set("code", authData.Code) data.Del("refresh_token") - _, _, err = apiClient.GetOAuthAccessToken(data) + _, _, err = apiClient.GetOAuthAccessToken(context.Background(), data) require.Error(t, err, "Should have failed - code is expired") apiClient.ClearOAuthToken() @@ -529,7 +529,7 @@ func TestOAuthComplete(t *testing.T) { State: "123", } - redirect, _, err := apiClient.AuthorizeOAuthApp(authRequest) + redirect, _, err := apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) rurl, _ := url.Parse(redirect) @@ -547,7 +547,7 @@ func TestOAuthComplete(t *testing.T) { einterfaces.RegisterOAuthProvider(model.ServiceGitlab, provider) - redirect, _, err = apiClient.AuthorizeOAuthApp(authRequest) + redirect, _, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) rurl, _ = url.Parse(redirect) @@ -561,7 +561,7 @@ func TestOAuthComplete(t *testing.T) { th.BasicUser.Id, model.ServiceGitlab, &th.BasicUser.Email, th.BasicUser.Email, true) require.NoError(t, nErr) - redirect, _, err = apiClient.AuthorizeOAuthApp(authRequest) + redirect, _, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) rurl, _ = url.Parse(redirect) @@ -572,7 +572,7 @@ func TestOAuthComplete(t *testing.T) { closeBody(r) } - redirect, _, err = apiClient.AuthorizeOAuthApp(authRequest) + redirect, _, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) rurl, _ = url.Parse(redirect) @@ -583,7 +583,7 @@ func TestOAuthComplete(t *testing.T) { closeBody(r) } - redirect, _, err = apiClient.AuthorizeOAuthApp(authRequest) + redirect, _, err = apiClient.AuthorizeOAuthApp(context.Background(), authRequest) require.NoError(t, err) rurl, _ = url.Parse(redirect) diff --git a/server/cmd/mmctl/client/client.go b/server/cmd/mmctl/client/client.go index ae2535731e..449a4cc278 100644 --- a/server/cmd/mmctl/client/client.go +++ b/server/cmd/mmctl/client/client.go @@ -4,6 +4,7 @@ package client import ( + "context" "io" "net/http" @@ -11,139 +12,139 @@ import ( ) type Client interface { - CreateChannel(channel *model.Channel) (*model.Channel, *model.Response, error) - RemoveUserFromChannel(channelID, userID string) (*model.Response, error) - GetChannelMembers(channelID string, page, perPage int, etag string) (model.ChannelMembers, *model.Response, error) - AddChannelMember(channelID, userID string) (*model.ChannelMember, *model.Response, error) - DeleteChannel(channelID string) (*model.Response, error) - PermanentDeleteChannel(channelID string) (*model.Response, error) - MoveChannel(channelID, teamID string, force bool) (*model.Channel, *model.Response, error) - GetPublicChannelsForTeam(teamID string, page int, perPage int, etag string) ([]*model.Channel, *model.Response, error) - GetDeletedChannelsForTeam(teamID string, page int, perPage int, etag string) ([]*model.Channel, *model.Response, error) - GetPrivateChannelsForTeam(teamID string, page int, perPage int, etag string) ([]*model.Channel, *model.Response, error) - GetChannelsForTeamForUser(teamID, userID string, includeDeleted bool, etag string) ([]*model.Channel, *model.Response, error) - RestoreChannel(channelID string) (*model.Channel, *model.Response, error) - PatchChannel(channelID string, patch *model.ChannelPatch) (*model.Channel, *model.Response, error) - GetChannelByName(channelName, teamID string, etag string) (*model.Channel, *model.Response, error) - GetChannelByNameIncludeDeleted(channelName, teamID string, etag string) (*model.Channel, *model.Response, error) - GetChannel(channelID, etag string) (*model.Channel, *model.Response, error) - GetTeam(teamID, etag string) (*model.Team, *model.Response, error) - GetTeamByName(name, etag string) (*model.Team, *model.Response, error) - GetAllTeams(etag string, page int, perPage int) ([]*model.Team, *model.Response, error) - CreateTeam(team *model.Team) (*model.Team, *model.Response, error) - PatchTeam(teamID string, patch *model.TeamPatch) (*model.Team, *model.Response, error) - AddTeamMember(teamID, userID string) (*model.TeamMember, *model.Response, error) - RemoveTeamMember(teamID, userID string) (*model.Response, error) - SoftDeleteTeam(teamID string) (*model.Response, error) - PermanentDeleteTeam(teamID string) (*model.Response, error) - RestoreTeam(teamID string) (*model.Team, *model.Response, error) - UpdateTeamPrivacy(teamID string, privacy string) (*model.Team, *model.Response, error) - SearchTeams(search *model.TeamSearch) ([]*model.Team, *model.Response, error) - GetPost(postID string, etag string) (*model.Post, *model.Response, error) - CreatePost(post *model.Post) (*model.Post, *model.Response, error) - GetPostsForChannel(channelID string, page, perPage int, etag string, collapsedThreads bool, includeDeleted bool) (*model.PostList, *model.Response, error) - GetPostsSince(channelID string, since int64, collapsedThreads bool) (*model.PostList, *model.Response, error) - DoAPIPost(url string, data string) (*http.Response, error) - GetLdapGroups() ([]*model.Group, *model.Response, error) - GetGroupsByChannel(channelID string, groupOpts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.Response, error) - GetGroupsByTeam(teamID string, groupOpts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.Response, error) - RestoreGroup(groupID string, etag string) (*model.Group, *model.Response, error) - UploadLicenseFile(data []byte) (*model.Response, error) - RemoveLicenseFile() (*model.Response, error) - GetLogs(page, perPage int) ([]string, *model.Response, error) - GetRoleByName(name string) (*model.Role, *model.Response, error) - PatchRole(roleID string, patch *model.RolePatch) (*model.Role, *model.Response, error) - UploadPlugin(file io.Reader) (*model.Manifest, *model.Response, error) - UploadPluginForced(file io.Reader) (*model.Manifest, *model.Response, error) - RemovePlugin(id string) (*model.Response, error) - EnablePlugin(id string) (*model.Response, error) - DisablePlugin(id string) (*model.Response, error) - GetPlugins() (*model.PluginsResponse, *model.Response, error) - GetUser(userID, etag string) (*model.User, *model.Response, error) - GetUserByUsername(userName, etag string) (*model.User, *model.Response, error) - GetUserByEmail(email, etag string) (*model.User, *model.Response, error) - PermanentDeleteUser(userID string) (*model.Response, error) - PermanentDeleteAllUsers() (*model.Response, error) - CreateUser(user *model.User) (*model.User, *model.Response, error) - VerifyUserEmailWithoutToken(userID string) (*model.User, *model.Response, error) - UpdateUserRoles(userID, roles string) (*model.Response, error) - InviteUsersToTeam(teamID string, userEmails []string) (*model.Response, error) - SendPasswordResetEmail(email string) (*model.Response, error) - UpdateUser(user *model.User) (*model.User, *model.Response, error) - UpdateUserMfa(userID, code string, activate bool) (*model.Response, error) - UpdateUserPassword(userID, currentPassword, newPassword string) (*model.Response, error) - UpdateUserHashedPassword(userID, newHashedPassword string) (*model.Response, error) - CreateUserAccessToken(userID, description string) (*model.UserAccessToken, *model.Response, error) - RevokeUserAccessToken(tokenID string) (*model.Response, error) - GetUserAccessTokensForUser(userID string, page, perPage int) ([]*model.UserAccessToken, *model.Response, error) - ConvertUserToBot(userID string) (*model.Bot, *model.Response, error) - ConvertBotToUser(userID string, userPatch *model.UserPatch, setSystemAdmin bool) (*model.User, *model.Response, error) - PromoteGuestToUser(userID string) (*model.Response, error) - DemoteUserToGuest(guestID string) (*model.Response, error) - CreateCommand(cmd *model.Command) (*model.Command, *model.Response, error) - ListCommands(teamID string, customOnly bool) ([]*model.Command, *model.Response, error) - GetCommandById(cmdID string) (*model.Command, *model.Response, error) - UpdateCommand(cmd *model.Command) (*model.Command, *model.Response, error) - MoveCommand(teamID string, commandID string) (*model.Response, error) - DeleteCommand(commandID string) (*model.Response, error) - GetConfig() (*model.Config, *model.Response, error) - UpdateConfig(*model.Config) (*model.Config, *model.Response, error) - PatchConfig(*model.Config) (*model.Config, *model.Response, error) - ReloadConfig() (*model.Response, error) - MigrateConfig(from, to string) (*model.Response, error) - SyncLdap(includeRemovedMembers bool) (*model.Response, error) - MigrateIdLdap(toAttribute string) (*model.Response, error) - GetUsers(page, perPage int, etag string) ([]*model.User, *model.Response, error) - GetUsersByIds(userIDs []string) ([]*model.User, *model.Response, error) - GetUsersInTeam(teamID string, page, perPage int, etag string) ([]*model.User, *model.Response, error) - UpdateUserActive(userID string, activate bool) (*model.Response, error) - UpdateTeam(team *model.Team) (*model.Team, *model.Response, error) - UpdateChannelPrivacy(channelID string, privacy model.ChannelType) (*model.Channel, *model.Response, error) - CreateBot(bot *model.Bot) (*model.Bot, *model.Response, error) - PatchBot(userID string, patch *model.BotPatch) (*model.Bot, *model.Response, error) - GetBots(page, perPage int, etag string) ([]*model.Bot, *model.Response, error) - GetBotsIncludeDeleted(page, perPage int, etag string) ([]*model.Bot, *model.Response, error) - GetBotsOrphaned(page, perPage int, etag string) ([]*model.Bot, *model.Response, error) - DisableBot(botUserID string) (*model.Bot, *model.Response, error) - EnableBot(botUserID string) (*model.Bot, *model.Response, error) - AssignBot(botUserID, newOwnerID string) (*model.Bot, *model.Response, error) - SetServerBusy(secs int) (*model.Response, error) - ClearServerBusy() (*model.Response, error) - GetServerBusy() (*model.ServerBusyState, *model.Response, error) - CheckIntegrity() ([]model.IntegrityCheckResult, *model.Response, error) - InstallPluginFromURL(string, bool) (*model.Manifest, *model.Response, error) - InstallMarketplacePlugin(*model.InstallMarketplacePluginRequest) (*model.Manifest, *model.Response, error) - GetMarketplacePlugins(*model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.Response, error) - MigrateAuthToLdap(fromAuthService string, matchField string, force bool) (*model.Response, error) - MigrateAuthToSaml(fromAuthService string, usersMap map[string]string, auto bool) (*model.Response, error) - GetPing() (string, *model.Response, error) - GetPingWithFullServerStatus() (map[string]string, *model.Response, error) - CreateUpload(us *model.UploadSession) (*model.UploadSession, *model.Response, error) - GetUpload(uploadID string) (*model.UploadSession, *model.Response, error) - GetUploadsForUser(userID string) ([]*model.UploadSession, *model.Response, error) - UploadData(uploadID string, data io.Reader) (*model.FileInfo, *model.Response, error) - ListImports() ([]string, *model.Response, error) - GetJob(id string) (*model.Job, *model.Response, error) - GetJobs(page int, perPage int) ([]*model.Job, *model.Response, error) - GetJobsByType(jobType string, page int, perPage int) ([]*model.Job, *model.Response, error) - CreateJob(job *model.Job) (*model.Job, *model.Response, error) - CancelJob(jobID string) (*model.Response, error) - CreateIncomingWebhook(hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.Response, error) - UpdateIncomingWebhook(hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.Response, error) - GetIncomingWebhooks(page int, perPage int, etag string) ([]*model.IncomingWebhook, *model.Response, error) - GetIncomingWebhooksForTeam(teamID string, page int, perPage int, etag string) ([]*model.IncomingWebhook, *model.Response, error) - GetIncomingWebhook(hookID string, etag string) (*model.IncomingWebhook, *model.Response, error) - DeleteIncomingWebhook(hookID string) (*model.Response, error) - CreateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.Response, error) - UpdateOutgoingWebhook(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.Response, error) - GetOutgoingWebhooks(page int, perPage int, etag string) ([]*model.OutgoingWebhook, *model.Response, error) - GetOutgoingWebhook(hookID string) (*model.OutgoingWebhook, *model.Response, error) - GetOutgoingWebhooksForChannel(channelID string, page int, perPage int, etag string) ([]*model.OutgoingWebhook, *model.Response, error) - GetOutgoingWebhooksForTeam(teamID string, page int, perPage int, etag string) ([]*model.OutgoingWebhook, *model.Response, error) - RegenOutgoingHookToken(hookID string) (*model.OutgoingWebhook, *model.Response, error) - DeleteOutgoingWebhook(hookID string) (*model.Response, error) - ListExports() ([]string, *model.Response, error) - DeleteExport(name string) (*model.Response, error) - DownloadExport(name string, wr io.Writer, offset int64) (int64, *model.Response, error) - ResetSamlAuthDataToEmail(includeDeleted bool, dryRun bool, userIDs []string) (int64, *model.Response, error) + CreateChannel(ctx context.Context, channel *model.Channel) (*model.Channel, *model.Response, error) + RemoveUserFromChannel(ctx context.Context, channelID, userID string) (*model.Response, error) + GetChannelMembers(ctx context.Context, channelID string, page, perPage int, etag string) (model.ChannelMembers, *model.Response, error) + AddChannelMember(ctx context.Context, channelID, userID string) (*model.ChannelMember, *model.Response, error) + DeleteChannel(ctx context.Context, channelID string) (*model.Response, error) + PermanentDeleteChannel(ctx context.Context, channelID string) (*model.Response, error) + MoveChannel(ctx context.Context, channelID, teamID string, force bool) (*model.Channel, *model.Response, error) + GetPublicChannelsForTeam(ctx context.Context, teamID string, page int, perPage int, etag string) ([]*model.Channel, *model.Response, error) + GetDeletedChannelsForTeam(ctx context.Context, teamID string, page int, perPage int, etag string) ([]*model.Channel, *model.Response, error) + GetPrivateChannelsForTeam(ctx context.Context, teamID string, page int, perPage int, etag string) ([]*model.Channel, *model.Response, error) + GetChannelsForTeamForUser(ctx context.Context, teamID, userID string, includeDeleted bool, etag string) ([]*model.Channel, *model.Response, error) + RestoreChannel(ctx context.Context, channelID string) (*model.Channel, *model.Response, error) + PatchChannel(ctx context.Context, channelID string, patch *model.ChannelPatch) (*model.Channel, *model.Response, error) + GetChannelByName(ctx context.Context, channelName, teamID string, etag string) (*model.Channel, *model.Response, error) + GetChannelByNameIncludeDeleted(ctx context.Context, channelName, teamID string, etag string) (*model.Channel, *model.Response, error) + GetChannel(ctx context.Context, channelID, etag string) (*model.Channel, *model.Response, error) + GetTeam(ctx context.Context, teamID, etag string) (*model.Team, *model.Response, error) + GetTeamByName(ctx context.Context, name, etag string) (*model.Team, *model.Response, error) + GetAllTeams(ctx context.Context, etag string, page int, perPage int) ([]*model.Team, *model.Response, error) + CreateTeam(ctx context.Context, team *model.Team) (*model.Team, *model.Response, error) + PatchTeam(ctx context.Context, teamID string, patch *model.TeamPatch) (*model.Team, *model.Response, error) + AddTeamMember(ctx context.Context, teamID, userID string) (*model.TeamMember, *model.Response, error) + RemoveTeamMember(ctx context.Context, teamID, userID string) (*model.Response, error) + SoftDeleteTeam(ctx context.Context, teamID string) (*model.Response, error) + PermanentDeleteTeam(ctx context.Context, teamID string) (*model.Response, error) + RestoreTeam(ctx context.Context, teamID string) (*model.Team, *model.Response, error) + UpdateTeamPrivacy(ctx context.Context, teamID string, privacy string) (*model.Team, *model.Response, error) + SearchTeams(ctx context.Context, search *model.TeamSearch) ([]*model.Team, *model.Response, error) + GetPost(ctx context.Context, postID string, etag string) (*model.Post, *model.Response, error) + CreatePost(ctx context.Context, post *model.Post) (*model.Post, *model.Response, error) + GetPostsForChannel(ctx context.Context, channelID string, page, perPage int, etag string, collapsedThreads bool, includeDeleted bool) (*model.PostList, *model.Response, error) + GetPostsSince(ctx context.Context, channelID string, since int64, collapsedThreads bool) (*model.PostList, *model.Response, error) + DoAPIPost(ctx context.Context, url string, data string) (*http.Response, error) + GetLdapGroups(ctx context.Context) ([]*model.Group, *model.Response, error) + GetGroupsByChannel(ctx context.Context, channelID string, groupOpts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.Response, error) + GetGroupsByTeam(ctx context.Context, teamID string, groupOpts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.Response, error) + RestoreGroup(ctx context.Context, groupID string, etag string) (*model.Group, *model.Response, error) + UploadLicenseFile(ctx context.Context, data []byte) (*model.Response, error) + RemoveLicenseFile(ctx context.Context) (*model.Response, error) + GetLogs(ctx context.Context, page, perPage int) ([]string, *model.Response, error) + GetRoleByName(ctx context.Context, name string) (*model.Role, *model.Response, error) + PatchRole(ctx context.Context, roleID string, patch *model.RolePatch) (*model.Role, *model.Response, error) + UploadPlugin(ctx context.Context, file io.Reader) (*model.Manifest, *model.Response, error) + UploadPluginForced(ctx context.Context, file io.Reader) (*model.Manifest, *model.Response, error) + RemovePlugin(ctx context.Context, id string) (*model.Response, error) + EnablePlugin(ctx context.Context, id string) (*model.Response, error) + DisablePlugin(ctx context.Context, id string) (*model.Response, error) + GetPlugins(ctx context.Context) (*model.PluginsResponse, *model.Response, error) + GetUser(ctx context.Context, userID, etag string) (*model.User, *model.Response, error) + GetUserByUsername(ctx context.Context, userName, etag string) (*model.User, *model.Response, error) + GetUserByEmail(ctx context.Context, email, etag string) (*model.User, *model.Response, error) + PermanentDeleteUser(ctx context.Context, userID string) (*model.Response, error) + PermanentDeleteAllUsers(ctx context.Context) (*model.Response, error) + CreateUser(ctx context.Context, user *model.User) (*model.User, *model.Response, error) + VerifyUserEmailWithoutToken(ctx context.Context, userID string) (*model.User, *model.Response, error) + UpdateUserRoles(ctx context.Context, userID, roles string) (*model.Response, error) + InviteUsersToTeam(ctx context.Context, teamID string, userEmails []string) (*model.Response, error) + SendPasswordResetEmail(ctx context.Context, email string) (*model.Response, error) + UpdateUser(ctx context.Context, user *model.User) (*model.User, *model.Response, error) + UpdateUserMfa(ctx context.Context, userID, code string, activate bool) (*model.Response, error) + UpdateUserPassword(ctx context.Context, userID, currentPassword, newPassword string) (*model.Response, error) + UpdateUserHashedPassword(ctx context.Context, userID, newHashedPassword string) (*model.Response, error) + CreateUserAccessToken(ctx context.Context, userID, description string) (*model.UserAccessToken, *model.Response, error) + RevokeUserAccessToken(ctx context.Context, tokenID string) (*model.Response, error) + GetUserAccessTokensForUser(ctx context.Context, userID string, page, perPage int) ([]*model.UserAccessToken, *model.Response, error) + ConvertUserToBot(ctx context.Context, userID string) (*model.Bot, *model.Response, error) + ConvertBotToUser(ctx context.Context, userID string, userPatch *model.UserPatch, setSystemAdmin bool) (*model.User, *model.Response, error) + PromoteGuestToUser(ctx context.Context, userID string) (*model.Response, error) + DemoteUserToGuest(ctx context.Context, guestID string) (*model.Response, error) + CreateCommand(ctx context.Context, cmd *model.Command) (*model.Command, *model.Response, error) + ListCommands(ctx context.Context, teamID string, customOnly bool) ([]*model.Command, *model.Response, error) + GetCommandById(ctx context.Context, cmdID string) (*model.Command, *model.Response, error) + UpdateCommand(ctx context.Context, cmd *model.Command) (*model.Command, *model.Response, error) + MoveCommand(ctx context.Context, teamID string, commandID string) (*model.Response, error) + DeleteCommand(ctx context.Context, commandID string) (*model.Response, error) + GetConfig(ctx context.Context) (*model.Config, *model.Response, error) + UpdateConfig(context.Context, *model.Config) (*model.Config, *model.Response, error) + PatchConfig(context.Context, *model.Config) (*model.Config, *model.Response, error) + ReloadConfig(ctx context.Context) (*model.Response, error) + MigrateConfig(ctx context.Context, from, to string) (*model.Response, error) + SyncLdap(ctx context.Context, includeRemovedMembers bool) (*model.Response, error) + MigrateIdLdap(ctx context.Context, toAttribute string) (*model.Response, error) + GetUsers(ctx context.Context, page, perPage int, etag string) ([]*model.User, *model.Response, error) + GetUsersByIds(ctx context.Context, userIDs []string) ([]*model.User, *model.Response, error) + GetUsersInTeam(ctx context.Context, teamID string, page, perPage int, etag string) ([]*model.User, *model.Response, error) + UpdateUserActive(ctx context.Context, userID string, activate bool) (*model.Response, error) + UpdateTeam(ctx context.Context, team *model.Team) (*model.Team, *model.Response, error) + UpdateChannelPrivacy(ctx context.Context, channelID string, privacy model.ChannelType) (*model.Channel, *model.Response, error) + CreateBot(ctx context.Context, bot *model.Bot) (*model.Bot, *model.Response, error) + PatchBot(ctx context.Context, userID string, patch *model.BotPatch) (*model.Bot, *model.Response, error) + GetBots(ctx context.Context, page, perPage int, etag string) ([]*model.Bot, *model.Response, error) + GetBotsIncludeDeleted(ctx context.Context, page, perPage int, etag string) ([]*model.Bot, *model.Response, error) + GetBotsOrphaned(ctx context.Context, page, perPage int, etag string) ([]*model.Bot, *model.Response, error) + DisableBot(ctx context.Context, botUserID string) (*model.Bot, *model.Response, error) + EnableBot(ctx context.Context, botUserID string) (*model.Bot, *model.Response, error) + AssignBot(ctx context.Context, botUserID, newOwnerID string) (*model.Bot, *model.Response, error) + SetServerBusy(ctx context.Context, secs int) (*model.Response, error) + ClearServerBusy(ctx context.Context) (*model.Response, error) + GetServerBusy(ctx context.Context) (*model.ServerBusyState, *model.Response, error) + CheckIntegrity(ctx context.Context) ([]model.IntegrityCheckResult, *model.Response, error) + InstallPluginFromURL(context.Context, string, bool) (*model.Manifest, *model.Response, error) + InstallMarketplacePlugin(context.Context, *model.InstallMarketplacePluginRequest) (*model.Manifest, *model.Response, error) + GetMarketplacePlugins(context.Context, *model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.Response, error) + MigrateAuthToLdap(ctx context.Context, fromAuthService string, matchField string, force bool) (*model.Response, error) + MigrateAuthToSaml(ctx context.Context, fromAuthService string, usersMap map[string]string, auto bool) (*model.Response, error) + GetPing(ctx context.Context) (string, *model.Response, error) + GetPingWithFullServerStatus(ctx context.Context) (map[string]string, *model.Response, error) + CreateUpload(ctx context.Context, us *model.UploadSession) (*model.UploadSession, *model.Response, error) + GetUpload(ctx context.Context, uploadID string) (*model.UploadSession, *model.Response, error) + GetUploadsForUser(ctx context.Context, userID string) ([]*model.UploadSession, *model.Response, error) + UploadData(ctx context.Context, uploadID string, data io.Reader) (*model.FileInfo, *model.Response, error) + ListImports(ctx context.Context) ([]string, *model.Response, error) + GetJob(ctx context.Context, id string) (*model.Job, *model.Response, error) + GetJobs(ctx context.Context, page int, perPage int) ([]*model.Job, *model.Response, error) + GetJobsByType(ctx context.Context, jobType string, page int, perPage int) ([]*model.Job, *model.Response, error) + CreateJob(ctx context.Context, job *model.Job) (*model.Job, *model.Response, error) + CancelJob(ctx context.Context, jobID string) (*model.Response, error) + CreateIncomingWebhook(ctx context.Context, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.Response, error) + UpdateIncomingWebhook(ctx context.Context, hook *model.IncomingWebhook) (*model.IncomingWebhook, *model.Response, error) + GetIncomingWebhooks(ctx context.Context, page int, perPage int, etag string) ([]*model.IncomingWebhook, *model.Response, error) + GetIncomingWebhooksForTeam(ctx context.Context, teamID string, page int, perPage int, etag string) ([]*model.IncomingWebhook, *model.Response, error) + GetIncomingWebhook(ctx context.Context, hookID string, etag string) (*model.IncomingWebhook, *model.Response, error) + DeleteIncomingWebhook(ctx context.Context, hookID string) (*model.Response, error) + CreateOutgoingWebhook(ctx context.Context, hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.Response, error) + UpdateOutgoingWebhook(ctx context.Context, hook *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.Response, error) + GetOutgoingWebhooks(ctx context.Context, page int, perPage int, etag string) ([]*model.OutgoingWebhook, *model.Response, error) + GetOutgoingWebhook(ctx context.Context, hookID string) (*model.OutgoingWebhook, *model.Response, error) + GetOutgoingWebhooksForChannel(ctx context.Context, channelID string, page int, perPage int, etag string) ([]*model.OutgoingWebhook, *model.Response, error) + GetOutgoingWebhooksForTeam(ctx context.Context, teamID string, page int, perPage int, etag string) ([]*model.OutgoingWebhook, *model.Response, error) + RegenOutgoingHookToken(ctx context.Context, hookID string) (*model.OutgoingWebhook, *model.Response, error) + DeleteOutgoingWebhook(ctx context.Context, hookID string) (*model.Response, error) + ListExports(ctx context.Context) ([]string, *model.Response, error) + DeleteExport(ctx context.Context, name string) (*model.Response, error) + DownloadExport(ctx context.Context, name string, wr io.Writer, offset int64) (int64, *model.Response, error) + ResetSamlAuthDataToEmail(ctx context.Context, includeDeleted bool, dryRun bool, userIDs []string) (int64, *model.Response, error) } diff --git a/server/cmd/mmctl/commands/auth.go b/server/cmd/mmctl/commands/auth.go index 88d938c6f5..59479f5eca 100644 --- a/server/cmd/mmctl/commands/auth.go +++ b/server/cmd/mmctl/commands/auth.go @@ -5,6 +5,7 @@ package commands import ( "bufio" + "context" "fmt" "os" "sort" @@ -166,6 +167,8 @@ func loginCmdF(cmd *cobra.Command, args []string) error { url := strings.TrimRight(args[0], "/") method := MethodPassword + ctx := context.TODO() + if name == "" { reader := bufio.NewReader(os.Stdin) fmt.Printf("Connection name: ") @@ -203,10 +206,10 @@ func loginCmdF(cmd *cobra.Command, args []string) error { var c *model.Client4 var err error if mfaToken != "" { - c, _, err = InitClientWithMFA(username, password, mfaToken, url, allowInsecureSHA1, allowInsecureTLS) + c, _, err = InitClientWithMFA(ctx, username, password, mfaToken, url, allowInsecureSHA1, allowInsecureTLS) method = MethodMFA } else { - c, _, err = InitClientWithUsernameAndPassword(username, password, url, allowInsecureSHA1, allowInsecureTLS) + c, _, err = InitClientWithUsernameAndPassword(ctx, username, password, url, allowInsecureSHA1, allowInsecureTLS) } if err != nil { return fmt.Errorf("could not initiate client: %w", err) @@ -219,7 +222,7 @@ func loginCmdF(cmd *cobra.Command, args []string) error { InstanceURL: url, AuthToken: accessToken, } - if _, _, err := InitClientWithCredentials(&credentials, allowInsecureSHA1, allowInsecureTLS); err != nil { + if _, _, err := InitClientWithCredentials(ctx, &credentials, allowInsecureSHA1, allowInsecureTLS); err != nil { return fmt.Errorf("could not initiate client: %w", err) } } @@ -350,6 +353,8 @@ func renewCmdF(cmd *cobra.Command, args []string) error { return err } + ctx := context.TODO() + if (credentials.AuthMethod == MethodPassword || credentials.AuthMethod == MethodMFA) && password == "" { if password == "" { fmt.Printf("Password: ") @@ -363,7 +368,7 @@ func renewCmdF(cmd *cobra.Command, args []string) error { switch credentials.AuthMethod { case MethodPassword: - c, _, err := InitClientWithUsernameAndPassword(credentials.Username, password, credentials.InstanceURL, allowInsecureSHA1, allowInsecureTLS) + c, _, err := InitClientWithUsernameAndPassword(ctx, credentials.Username, password, credentials.InstanceURL, allowInsecureSHA1, allowInsecureTLS) if err != nil { return err } @@ -376,7 +381,7 @@ func renewCmdF(cmd *cobra.Command, args []string) error { } credentials.AuthToken = accessToken - if _, _, err := InitClientWithCredentials(credentials, allowInsecureSHA1, allowInsecureTLS); err != nil { + if _, _, err := InitClientWithCredentials(ctx, credentials, allowInsecureSHA1, allowInsecureTLS); err != nil { return err } @@ -385,7 +390,7 @@ func renewCmdF(cmd *cobra.Command, args []string) error { return errors.New("requires the --mfa-token parameter to be set") } - c, _, err := InitClientWithMFA(credentials.Username, password, mfaToken, credentials.InstanceURL, allowInsecureSHA1, allowInsecureTLS) + c, _, err := InitClientWithMFA(ctx, credentials.Username, password, mfaToken, credentials.InstanceURL, allowInsecureSHA1, allowInsecureTLS) if err != nil { return err } diff --git a/server/cmd/mmctl/commands/bot.go b/server/cmd/mmctl/commands/bot.go index fbda862b75..f18d76f989 100644 --- a/server/cmd/mmctl/commands/bot.go +++ b/server/cmd/mmctl/commands/bot.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "github.com/mattermost/mattermost-server/server/public/model" @@ -103,7 +104,7 @@ func botCreateCmdF(c client.Client, cmd *cobra.Command, args []string) error { displayName, _ := cmd.Flags().GetString("display-name") description, _ := cmd.Flags().GetString("description") - bot, _, err := c.CreateBot(&model.Bot{ + bot, _, err := c.CreateBot(context.TODO(), &model.Bot{ Username: username, DisplayName: displayName, Description: description, @@ -144,7 +145,7 @@ func botUpdateCmdF(c client.Client, cmd *cobra.Command, args []string) error { patch.Description = &description } - bot, _, err := c.PatchBot(user.Id, &patch) + bot, _, err := c.PatchBot(context.TODO(), user.Id, &patch) if err != nil { return errors.Errorf("could not update bot: %s", err) } @@ -165,11 +166,11 @@ func botListCmdF(c client.Client, cmd *cobra.Command, args []string) error { var bots []*model.Bot var err error if all { //nolint:gocritic - bots, _, err = c.GetBotsIncludeDeleted(page, perPage, "") + bots, _, err = c.GetBotsIncludeDeleted(context.TODO(), page, perPage, "") } else if orphaned { - bots, _, err = c.GetBotsOrphaned(page, perPage, "") + bots, _, err = c.GetBotsOrphaned(context.TODO(), page, perPage, "") } else { - bots, _, err = c.GetBots(page, perPage, "") + bots, _, err = c.GetBots(context.TODO(), page, perPage, "") } if err != nil { return errors.Wrap(err, "Failed to fetch bots") @@ -180,7 +181,7 @@ func botListCmdF(c client.Client, cmd *cobra.Command, args []string) error { userIds = append(userIds, bot.OwnerId) } - users, _, err := c.GetUsersByIds(userIds) + users, _, err := c.GetUsersByIds(context.TODO(), userIds) if err != nil { return errors.Wrap(err, "Failed to fetch bots") } @@ -227,7 +228,7 @@ func botEnableCmdF(c client.Client, cmd *cobra.Command, args []string) error { continue } - bot, _, err := c.EnableBot(user.Id) + bot, _, err := c.EnableBot(context.TODO(), user.Id) if err != nil { printer.PrintError(fmt.Sprintf("could not enable bot '%v'", args[i])) result = multierror.Append(result, fmt.Errorf("could not enable bot %q: %w", args[i], err)) @@ -251,7 +252,7 @@ func botDisableCmdF(c client.Client, cmd *cobra.Command, args []string) error { continue } - bot, _, err := c.DisableBot(user.Id) + bot, _, err := c.DisableBot(context.TODO(), user.Id) if err != nil { printer.PrintError(fmt.Sprintf("could not disable bot '%v'", args[i])) result = multierror.Append(result, fmt.Errorf("could not disable bot %q: %w", args[i], err)) @@ -274,7 +275,7 @@ func botAssignCmdF(c client.Client, cmd *cobra.Command, args []string) error { return errors.New("unable to find user '" + args[1] + "'") } - newBot, _, err := c.AssignBot(botUser.Id, newOwnerUser.Id) + newBot, _, err := c.AssignBot(context.TODO(), botUser.Id, newOwnerUser.Id) if err != nil { return errors.Errorf("can not assign bot '%s' to user '%s'", args[0], args[1]) } diff --git a/server/cmd/mmctl/commands/bot_test.go b/server/cmd/mmctl/commands/bot_test.go index 81d4819906..2fe1c916d3 100644 --- a/server/cmd/mmctl/commands/bot_test.go +++ b/server/cmd/mmctl/commands/bot_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" gomock "github.com/golang/mock/gomock" @@ -27,7 +28,7 @@ func (s *MmctlUnitTestSuite) TestBotCreateCmd() { s.client. EXPECT(). - CreateBot(&mockBot). + CreateBot(context.Background(), &mockBot). Return(&mockBot, &model.Response{}, nil). Times(1) @@ -51,25 +52,25 @@ func (s *MmctlUnitTestSuite) TestBotCreateCmd() { s.client. EXPECT(). - CreateBot(&mockBot). + CreateBot(context.Background(), &mockBot). Return(&mockBot, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(model.UserFromBot(&mockBot), &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateUserAccessToken(mockBot.UserId, "autogenerated"). + CreateUserAccessToken(context.Background(), mockBot.UserId, "autogenerated"). Return(&mockToken, &model.Response{}, nil). Times(1) @@ -88,7 +89,7 @@ func (s *MmctlUnitTestSuite) TestBotCreateCmd() { s.client. EXPECT(). - CreateBot(&mockBot). + CreateBot(context.Background(), &mockBot). Return(nil, &model.Response{}, errors.New("some-error")). Times(1) @@ -117,19 +118,19 @@ func (s *MmctlUnitTestSuite) TestBotUpdateCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchBot(mockUser.Id, gomock.Any()). + PatchBot(context.Background(), mockUser.Id, gomock.Any()). Return(&mockBot, &model.Response{}, nil). Times(1) @@ -149,19 +150,19 @@ func (s *MmctlUnitTestSuite) TestBotUpdateCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(botArg, ""). + GetUser(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -184,19 +185,19 @@ func (s *MmctlUnitTestSuite) TestBotUpdateCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchBot(mockUser.Id, gomock.Any()). + PatchBot(context.Background(), mockUser.Id, gomock.Any()). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -220,13 +221,13 @@ func (s *MmctlUnitTestSuite) TestBotListCmd() { s.client. EXPECT(). - GetBotsIncludeDeleted(0, 200, ""). + GetBotsIncludeDeleted(context.Background(), 0, 200, ""). Return([]*model.Bot{&mockBot}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUsersByIds([]string{mockBot.OwnerId}). + GetUsersByIds(context.Background(), []string{mockBot.OwnerId}). Return([]*model.User{&mockUser}, &model.Response{}, nil). Times(1) @@ -246,7 +247,7 @@ func (s *MmctlUnitTestSuite) TestBotListCmd() { s.client. EXPECT(). - GetBotsIncludeDeleted(0, 200, ""). + GetBotsIncludeDeleted(context.Background(), 0, 200, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -268,13 +269,13 @@ func (s *MmctlUnitTestSuite) TestBotListCmd() { s.client. EXPECT(). - GetBotsOrphaned(0, 200, ""). + GetBotsOrphaned(context.Background(), 0, 200, ""). Return([]*model.Bot{&mockBot}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUsersByIds([]string{mockBot.OwnerId}). + GetUsersByIds(context.Background(), []string{mockBot.OwnerId}). Return([]*model.User{&mockUser}, &model.Response{}, nil). Times(1) @@ -294,7 +295,7 @@ func (s *MmctlUnitTestSuite) TestBotListCmd() { s.client. EXPECT(). - GetBotsOrphaned(0, 200, ""). + GetBotsOrphaned(context.Background(), 0, 200, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -316,13 +317,13 @@ func (s *MmctlUnitTestSuite) TestBotListCmd() { s.client. EXPECT(). - GetBots(0, 200, ""). + GetBots(context.Background(), 0, 200, ""). Return([]*model.Bot{&mockBot}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUsersByIds([]string{mockBot.OwnerId}). + GetUsersByIds(context.Background(), []string{mockBot.OwnerId}). Return([]*model.User{&mockUser}, &model.Response{}, nil). Times(1) @@ -343,13 +344,13 @@ func (s *MmctlUnitTestSuite) TestBotListCmd() { s.client. EXPECT(). - GetBots(0, 200, ""). + GetBots(context.Background(), 0, 200, ""). Return([]*model.Bot{&mockBot}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUsersByIds([]string{mockBot.OwnerId}). + GetUsersByIds(context.Background(), []string{mockBot.OwnerId}). Return([]*model.User{}, &model.Response{}, nil). Times(1) @@ -369,7 +370,7 @@ func (s *MmctlUnitTestSuite) TestBotListCmd() { s.client. EXPECT(). - GetBots(0, 200, ""). + GetBots(context.Background(), 0, 200, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -390,13 +391,13 @@ func (s *MmctlUnitTestSuite) TestBotListCmd() { s.client. EXPECT(). - GetBots(0, 200, ""). + GetBots(context.Background(), 0, 200, ""). Return([]*model.Bot{&mockBot}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUsersByIds([]string{mockBot.OwnerId}). + GetUsersByIds(context.Background(), []string{mockBot.OwnerId}). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -418,19 +419,19 @@ func (s *MmctlUnitTestSuite) TestBotDisableCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DisableBot(mockUser.Id). + DisableBot(context.Background(), mockUser.Id). Return(&mockBot, &model.Response{}, nil). Times(1) @@ -447,19 +448,19 @@ func (s *MmctlUnitTestSuite) TestBotDisableCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(botArg, ""). + GetUser(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -482,19 +483,19 @@ func (s *MmctlUnitTestSuite) TestBotDisableCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DisableBot(mockUser.Id). + DisableBot(context.Background(), mockUser.Id). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -516,19 +517,19 @@ func (s *MmctlUnitTestSuite) TestBotEnableCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - EnableBot(mockUser.Id). + EnableBot(context.Background(), mockUser.Id). Return(&mockBot, &model.Response{}, nil). Times(1) @@ -545,19 +546,19 @@ func (s *MmctlUnitTestSuite) TestBotEnableCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(botArg, ""). + GetUser(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -580,19 +581,19 @@ func (s *MmctlUnitTestSuite) TestBotEnableCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - EnableBot(mockUser.Id). + EnableBot(context.Background(), mockUser.Id). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -616,31 +617,31 @@ func (s *MmctlUnitTestSuite) TestBotAssignCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockBotUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(&mockNewOwner, &model.Response{}, nil). Times(1) s.client. EXPECT(). - AssignBot(mockBotUser.Id, mockNewOwner.Id). + AssignBot(context.Background(), mockBotUser.Id, mockNewOwner.Id). Return(&mockBot, &model.Response{}, nil). Times(1) @@ -658,19 +659,19 @@ func (s *MmctlUnitTestSuite) TestBotAssignCmd() { s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(botArg, ""). + GetUser(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -690,31 +691,31 @@ func (s *MmctlUnitTestSuite) TestBotAssignCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockBotUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(userArg, ""). + GetUser(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -735,31 +736,31 @@ func (s *MmctlUnitTestSuite) TestBotAssignCmd() { s.client. EXPECT(). - GetUserByEmail(botArg, ""). + GetUserByEmail(context.Background(), botArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(botArg, ""). + GetUserByUsername(context.Background(), botArg, ""). Return(&mockBotUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(&mockNewOwner, &model.Response{}, nil). Times(1) s.client. EXPECT(). - AssignBot(mockBotUser.Id, mockNewOwner.Id). + AssignBot(context.Background(), mockBotUser.Id, mockNewOwner.Id). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) diff --git a/server/cmd/mmctl/commands/channel.go b/server/cmd/mmctl/commands/channel.go index 877c75a84a..7efc94c9aa 100644 --- a/server/cmd/mmctl/commands/channel.go +++ b/server/cmd/mmctl/commands/channel.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "net/http" @@ -246,7 +247,7 @@ func createChannelCmdF(c client.Client, cmd *cobra.Command, args []string) error CreatorId: "", } - newChannel, _, err := c.CreateChannel(channel) + newChannel, _, err := c.CreateChannel(context.TODO(), channel) if err != nil { return err } @@ -269,7 +270,7 @@ func archiveChannelsCmdF(c client.Client, cmd *cobra.Command, args []string) err errors = multierror.Append(errors, fmt.Errorf("unable to find channel %q", args[i])) continue } - if _, err := c.DeleteChannel(channel.Id); err != nil { + if _, err := c.DeleteChannel(context.TODO(), channel.Id); err != nil { printer.PrintError("Unable to archive channel '" + channel.Name + "' error: " + err.Error()) errors = multierror.Append(errors, fmt.Errorf("unable to archive channel %q, error: %w", channel.Name, err)) } @@ -283,7 +284,7 @@ func getAllPublicChannelsForTeam(c client.Client, teamID string) ([]*model.Chann page := 0 for { - channelsPage, _, err := c.GetPublicChannelsForTeam(teamID, page, web.PerPageMaximum, "") + channelsPage, _, err := c.GetPublicChannelsForTeam(context.TODO(), teamID, page, web.PerPageMaximum, "") if err != nil { return nil, err } @@ -304,7 +305,7 @@ func getAllDeletedChannelsForTeam(c client.Client, teamID string) ([]*model.Chan page := 0 for { - channelsPage, _, err := c.GetDeletedChannelsForTeam(teamID, page, web.PerPageMaximum, "") + channelsPage, _, err := c.GetDeletedChannelsForTeam(context.TODO(), teamID, page, web.PerPageMaximum, "") if err != nil { return nil, err } @@ -374,7 +375,7 @@ func unarchiveChannelsCmdF(c client.Client, cmd *cobra.Command, args []string) e printer.PrintError("Unable to find channel '" + args[i] + "'") continue } - if _, _, err := c.RestoreChannel(channel.Id); err != nil { + if _, _, err := c.RestoreChannel(context.TODO(), channel.Id); err != nil { printer.PrintError("Unable to unarchive channel '" + args[i] + "'. Error: " + err.Error()) } } @@ -396,7 +397,7 @@ func makeChannelPrivateCmdF(c client.Client, cmd *cobra.Command, args []string) return errors.New("you can only change the type of public channels") } - if _, _, err := c.UpdateChannelPrivacy(channel.Id, model.ChannelTypePrivate); err != nil { + if _, _, err := c.UpdateChannelPrivacy(context.TODO(), channel.Id, model.ChannelTypePrivate); err != nil { return err } @@ -425,7 +426,7 @@ func modifyChannelCmdF(c client.Client, cmd *cobra.Command, args []string) error privacy = model.ChannelTypePrivate } - if _, _, err := c.UpdateChannelPrivacy(channel.Id, privacy); err != nil { + if _, _, err := c.UpdateChannelPrivacy(context.TODO(), channel.Id, privacy); err != nil { return errors.Errorf("failed to update channel (%q) privacy: %s", args[0], err.Error()) } @@ -467,7 +468,7 @@ func renameChannelCmdF(c client.Client, cmd *cobra.Command, args []string) error } // Using PatchChannel API to rename channel - updatedChannel, _, err := c.PatchChannel(channel.Id, channelPatch) + updatedChannel, _, err := c.PatchChannel(context.TODO(), channel.Id, channelPatch) if err != nil { return errors.Errorf("cannot rename channel %q, error: %s", channel.Name, err.Error()) } @@ -488,7 +489,7 @@ func searchChannelCmdF(c client.Client, cmd *cobra.Command, args []string) error } var err error - channel, _, err = c.GetChannelByName(args[0], team.Id, "") + channel, _, err = c.GetChannelByName(context.TODO(), args[0], team.Id, "") if err != nil { return err } @@ -496,13 +497,13 @@ func searchChannelCmdF(c client.Client, cmd *cobra.Command, args []string) error return errors.Errorf("channel %s was not found in team %s", args[0], teamArg) } } else { - teams, _, err := c.GetAllTeams("", 0, 9999) + teams, _, err := c.GetAllTeams(context.TODO(), "", 0, 9999) if err != nil { return err } for _, team := range teams { - channel, _, _ = c.GetChannelByName(args[0], team.Id, "") + channel, _, _ = c.GetChannelByName(context.TODO(), args[0], team.Id, "") if channel != nil && channel.Name == args[0] { break } @@ -542,7 +543,7 @@ func moveChannelCmdF(c client.Client, cmd *cobra.Command, args []string) error { continue } - newChannel, _, err := c.MoveChannel(channel.Id, team.Id, force) + newChannel, _, err := c.MoveChannel(context.TODO(), channel.Id, team.Id, force) if err != nil { result = multierror.Append(result, fmt.Errorf("unable to move channel %q: %w", channel.Name, err)) continue @@ -558,7 +559,7 @@ func getPrivateChannels(c client.Client, teamID string) ([]*model.Channel, error withoutError := true for { - channelsPage, _, err := c.GetPrivateChannelsForTeam(teamID, page, web.PerPageMaximum, "") + channelsPage, _, err := c.GetPrivateChannelsForTeam(context.TODO(), teamID, page, web.PerPageMaximum, "") if err != nil && viper.GetBool("local") { return nil, err } else if err != nil { @@ -586,7 +587,7 @@ func getPrivateChannels(c client.Client, teamID string) ([]*model.Channel, error // We are definitely not in local mode here so we can safely use // "GetChannelsForTeamForUser" and "me" for userId - allChannels, response, err := c.GetChannelsForTeamForUser(teamID, "me", false, "") + allChannels, response, err := c.GetChannelsForTeamForUser(context.TODO(), teamID, "me", false, "") if err != nil { if response.StatusCode == http.StatusNotFound { // user doesn't belong to any channels return nil, nil @@ -619,7 +620,7 @@ func deleteChannelsCmdF(c client.Client, cmd *cobra.Command, args []string) erro result = multierror.Append(result, fmt.Errorf("unable to find channel '%s'", args[i])) continue } - if _, err := c.PermanentDeleteChannel(channel.Id); err != nil { + if _, err := c.PermanentDeleteChannel(context.TODO(), channel.Id); err != nil { result = multierror.Append(result, fmt.Errorf("unable to delete channel '%q' error: %w", channel.Name, err)) } else { printer.PrintT("Deleted channel '{{.Name}}'", channel) diff --git a/server/cmd/mmctl/commands/channel_test.go b/server/cmd/mmctl/commands/channel_test.go index 10588a5131..c65d811eca 100644 --- a/server/cmd/mmctl/commands/channel_test.go +++ b/server/cmd/mmctl/commands/channel_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "net/http" @@ -40,13 +41,13 @@ func (s *MmctlUnitTestSuite) TestSearchChannelCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByName(channelName, teamID, ""). + GetChannelByName(context.Background(), channelName, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -68,21 +69,21 @@ func (s *MmctlUnitTestSuite) TestSearchChannelCmdF() { s.client. EXPECT(). - GetAllTeams("", 0, 9999). + GetAllTeams(context.Background(), "", 0, 9999). Return(mockTeams, &model.Response{}, nil). Times(1) // first call is for the other team, that doesn't have the channel s.client. EXPECT(). - GetChannelByName(channelName, otherTeamID, ""). + GetChannelByName(context.Background(), channelName, otherTeamID, ""). Return(nil, &model.Response{}, nil). Times(1) // second call is for the team that contains the channel s.client. EXPECT(). - GetChannelByName(channelName, teamID, ""). + GetChannelByName(context.Background(), channelName, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -102,13 +103,13 @@ func (s *MmctlUnitTestSuite) TestSearchChannelCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByName(channelName, teamID, ""). + GetChannelByName(context.Background(), channelName, teamID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -127,13 +128,13 @@ func (s *MmctlUnitTestSuite) TestSearchChannelCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamID, ""). + GetTeamByName(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -185,7 +186,7 @@ func (s *MmctlUnitTestSuite) TestModifyChannelCmdF() { s.client. EXPECT(). - GetChannel(args[0], ""). + GetChannel(context.Background(), args[0], ""). Return(nil, &model.Response{}, errors.New("")). Times(1) @@ -208,13 +209,13 @@ func (s *MmctlUnitTestSuite) TestModifyChannelCmdF() { s.client. EXPECT(). - GetTeam(team, ""). + GetTeam(context.Background(), team, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) s.client. EXPECT(). - GetTeamByName(team, ""). + GetTeamByName(context.Background(), team, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) @@ -239,7 +240,7 @@ func (s *MmctlUnitTestSuite) TestModifyChannelCmdF() { s.client. EXPECT(). - GetChannel(args[0], ""). + GetChannel(context.Background(), args[0], ""). Return(channel, &model.Response{}, nil). Times(1) @@ -264,7 +265,7 @@ func (s *MmctlUnitTestSuite) TestModifyChannelCmdF() { s.client. EXPECT(). - GetChannel(args[0], ""). + GetChannel(context.Background(), args[0], ""). Return(channel, &model.Response{}, nil). Times(1) @@ -291,13 +292,13 @@ func (s *MmctlUnitTestSuite) TestModifyChannelCmdF() { s.client. EXPECT(). - GetChannel(args[0], ""). + GetChannel(context.Background(), args[0], ""). Return(channel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateChannelPrivacy(channel.Id, model.ChannelTypeOpen). + UpdateChannelPrivacy(context.Background(), channel.Id, model.ChannelTypeOpen). Return(nil, &model.Response{}, mockError). Times(1) @@ -326,13 +327,13 @@ func (s *MmctlUnitTestSuite) TestModifyChannelCmdF() { s.client. EXPECT(). - GetChannel(args[0], ""). + GetChannel(context.Background(), args[0], ""). Return(channel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateChannelPrivacy(channel.Id, model.ChannelTypeOpen). + UpdateChannelPrivacy(context.Background(), channel.Id, model.ChannelTypeOpen). Return(returnedChannel, &model.Response{}, nil). Times(1) @@ -361,13 +362,13 @@ func (s *MmctlUnitTestSuite) TestModifyChannelCmdF() { s.client. EXPECT(). - GetChannel(args[0], ""). + GetChannel(context.Background(), args[0], ""). Return(channel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateChannelPrivacy(channel.Id, model.ChannelTypePrivate). + UpdateChannelPrivacy(context.Background(), channel.Id, model.ChannelTypePrivate). Return(returnedChannel, &model.Response{}, nil). Times(1) @@ -404,19 +405,19 @@ func (s *MmctlUnitTestSuite) TestArchiveChannelCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DeleteChannel(channelID). + DeleteChannel(context.Background(), channelID). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -436,13 +437,13 @@ func (s *MmctlUnitTestSuite) TestArchiveChannelCmdF() { s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DeleteChannel(channelID). + DeleteChannel(context.Background(), channelID). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -468,25 +469,25 @@ func (s *MmctlUnitTestSuite) TestArchiveChannelCmdF() { s.client. EXPECT(). - GetChannel(channelArg1, ""). + GetChannel(context.Background(), channelArg1, ""). Return(&mockChannel1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelArg2, ""). + GetChannel(context.Background(), channelArg2, ""). Return(&mockChannel2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DeleteChannel(channelID1). + DeleteChannel(context.Background(), channelID1). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - DeleteChannel(channelID2). + DeleteChannel(context.Background(), channelID2). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -507,13 +508,13 @@ func (s *MmctlUnitTestSuite) TestArchiveChannelCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -539,19 +540,19 @@ func (s *MmctlUnitTestSuite) TestArchiveChannelCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelArg, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelArg, teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelArg, ""). + GetChannel(context.Background(), channelArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -574,7 +575,7 @@ func (s *MmctlUnitTestSuite) TestArchiveChannelCmdF() { s.client. EXPECT(). - GetChannel(channelArg, ""). + GetChannel(context.Background(), channelArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -600,14 +601,14 @@ func (s *MmctlUnitTestSuite) TestArchiveChannelCmdF() { s.client. EXPECT(). - GetChannel(channelArg, ""). + GetChannel(context.Background(), channelArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) mockErr := errors.New("mock error") s.client. EXPECT(). - DeleteChannel(channelID). + DeleteChannel(context.Background(), channelID). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockErr). Times(1) @@ -657,13 +658,13 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamID, ""). + GetTeamByName(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -693,30 +694,30 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(publicChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(archivedChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(userChannels, &model.Response{}, nil). Times(0) @@ -750,37 +751,37 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(publicChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 1, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(archivedChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(userChannels, &model.Response{}, nil). Times(0) @@ -816,37 +817,37 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(publicChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(archivedChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 1, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(userChannels, &model.Response{}, nil). Times(0) @@ -884,49 +885,49 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(publicChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 1, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(archivedChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 1, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 1, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(userChannels, &model.Response{}, nil). Times(0) @@ -965,30 +966,30 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(userChannels, &model.Response{}, nil). Times(1) @@ -1015,31 +1016,31 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(emptyChannels, &model.Response{}, nil). Times(0) @@ -1064,30 +1065,30 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(emptyChannels, &model.Response{}, nil). Times(0) @@ -1112,31 +1113,31 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(emptyChannels, &model.Response{}, mockError). Times(1) // falls through to GetChannelsForTeamForUser in non-local mode @@ -1163,31 +1164,31 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(emptyChannels, &model.Response{}, mockError). Times(0) // does not fall through to GetChannelsForTeamForUser in local mode @@ -1215,31 +1216,31 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID, "me", false, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -1275,60 +1276,60 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID1, ""). + GetTeam(context.Background(), teamID1, ""). Return(team1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(teamID2, ""). + GetTeam(context.Background(), teamID2, ""). Return(nil, &model.Response{}, nil). // Team 2 not found Times(1) s.client. EXPECT(). - GetTeamByName(teamID2, ""). + GetTeamByName(context.Background(), teamID2, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(publicChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(archivedChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID1, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID1, "me", false, ""). Return(privateChannels, &model.Response{}, nil). Times(0) @@ -1367,49 +1368,49 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID1, ""). + GetTeam(context.Background(), teamID1, ""). Return(team1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(publicChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(archivedChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID1, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID1, "me", false, ""). Return(privateChannels, &model.Response{}, nil). Times(0) @@ -1417,30 +1418,30 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID2, ""). + GetTeam(context.Background(), teamID2, ""). Return(team2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID2, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID2, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID2, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID2, 0, web.PerPageMaximum, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID2, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID2, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID2, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID2, "me", false, ""). Return(privateChannels, &model.Response{}, mockError). Times(1) @@ -1465,23 +1466,23 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(team1ID, ""). + GetTeam(context.Background(), team1ID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(team2ID, ""). + GetTeam(context.Background(), team2ID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(team1ID, ""). + GetTeamByName(context.Background(), team1ID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(team2ID, ""). + GetTeamByName(context.Background(), team2ID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1519,97 +1520,97 @@ func (s *MmctlUnitTestSuite) TestListChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID1, ""). + GetTeam(context.Background(), teamID1, ""). Return(team1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(publicChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(archivedChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID1, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID1, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID1, 1, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID1, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID1, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID1, "me", false, ""). Return(privateChannels, &model.Response{}, nil). Times(0) s.client. EXPECT(). - GetTeam(teamID2, ""). + GetTeam(context.Background(), teamID2, ""). Return(team2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID2, 0, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID2, 0, web.PerPageMaximum, ""). Return(publicChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPublicChannelsForTeam(teamID2, 1, web.PerPageMaximum, ""). + GetPublicChannelsForTeam(context.Background(), teamID2, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID2, 0, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID2, 0, web.PerPageMaximum, ""). Return(archivedChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetDeletedChannelsForTeam(teamID2, 1, web.PerPageMaximum, ""). + GetDeletedChannelsForTeam(context.Background(), teamID2, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID2, 0, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID2, 0, web.PerPageMaximum, ""). Return(privateChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPrivateChannelsForTeam(teamID2, 1, web.PerPageMaximum, ""). + GetPrivateChannelsForTeam(context.Background(), teamID2, 1, web.PerPageMaximum, ""). Return(emptyChannels, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelsForTeamForUser(teamID2, "me", false, ""). + GetChannelsForTeamForUser(context.Background(), teamID2, "me", false, ""). Return(privateChannels, &model.Response{}, nil). Times(0) @@ -1663,19 +1664,19 @@ func (s *MmctlUnitTestSuite) TestUnarchiveChannelCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RestoreChannel(channelID). + RestoreChannel(context.Background(), channelID). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -1695,13 +1696,13 @@ func (s *MmctlUnitTestSuite) TestUnarchiveChannelCmdF() { s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RestoreChannel(channelID). + RestoreChannel(context.Background(), channelID). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -1727,25 +1728,25 @@ func (s *MmctlUnitTestSuite) TestUnarchiveChannelCmdF() { s.client. EXPECT(). - GetChannel(channelArg1, ""). + GetChannel(context.Background(), channelArg1, ""). Return(&mockChannel1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelArg2, ""). + GetChannel(context.Background(), channelArg2, ""). Return(&mockChannel2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RestoreChannel(channelID1). + RestoreChannel(context.Background(), channelID1). Return(&mockChannel1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RestoreChannel(channelID2). + RestoreChannel(context.Background(), channelID2). Return(&mockChannel2, &model.Response{}, nil). Times(1) @@ -1765,13 +1766,13 @@ func (s *MmctlUnitTestSuite) TestUnarchiveChannelCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1797,19 +1798,19 @@ func (s *MmctlUnitTestSuite) TestUnarchiveChannelCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelArg, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelArg, teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelArg, ""). + GetChannel(context.Background(), channelArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1832,7 +1833,7 @@ func (s *MmctlUnitTestSuite) TestUnarchiveChannelCmdF() { s.client. EXPECT(). - GetChannel(channelArg, ""). + GetChannel(context.Background(), channelArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1856,14 +1857,14 @@ func (s *MmctlUnitTestSuite) TestUnarchiveChannelCmdF() { s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) mockErr := errors.New("mock error") s.client. EXPECT(). - RestoreChannel(channelID). + RestoreChannel(context.Background(), channelID). Return(nil, &model.Response{}, mockErr). Times(1) @@ -1951,25 +1952,25 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { } s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1994,7 +1995,7 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -2018,13 +2019,13 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -2048,7 +2049,7 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -2060,19 +2061,19 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -2112,26 +2113,26 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(foundChannel, &model.Response{}, nil). Times(1) mockError := model.NewAppError("at-random-location.go", "mock error", nil, "mocking a random error", 0) s.client. EXPECT(). - PatchChannel(foundChannel.Id, channelPatch). + PatchChannel(context.Background(), foundChannel.Id, channelPatch). Return(nil, &model.Response{}, mockError). Times(1) @@ -2177,25 +2178,25 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(foundChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(foundChannel.Id, channelPatch). + PatchChannel(context.Background(), foundChannel.Id, channelPatch). Return(updatedChannel, &model.Response{}, nil). Times(1) @@ -2239,13 +2240,13 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(foundChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(foundChannel.Id, channelPatch). + PatchChannel(context.Background(), foundChannel.Id, channelPatch). Return(updatedChannel, &model.Response{}, nil). Times(1) @@ -2294,25 +2295,25 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(foundChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(foundChannel.Id, channelPatch). + PatchChannel(context.Background(), foundChannel.Id, channelPatch). Return(updatedChannel, &model.Response{}, nil). Times(1) @@ -2360,25 +2361,25 @@ func (s *MmctlUnitTestSuite) TestRenameChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(foundChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(foundChannel.Id, channelPatch). + PatchChannel(context.Background(), foundChannel.Id, channelPatch). Return(updatedChannel, &model.Response{}, nil). Times(1) @@ -2420,37 +2421,37 @@ func (s *MmctlUnitTestSuite) TestMoveChannelCmdF() { s.client. EXPECT(). - GetTeam(dstTeamName, ""). + GetTeam(context.Background(), dstTeamName, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) s.client. EXPECT(). - GetTeamByName(dstTeamName, ""). + GetTeamByName(context.Background(), dstTeamName, ""). Return(&mockTeam1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(srcTeamName, ""). + GetTeam(context.Background(), srcTeamName, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) s.client. EXPECT(). - GetTeamByName(srcTeamName, ""). + GetTeamByName(context.Background(), srcTeamName, ""). Return(&mockTeam2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, mockTeam2.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, mockTeam2.Id, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - MoveChannel(mockChannel.Id, mockTeam1.Id, false). + MoveChannel(context.Background(), mockChannel.Id, mockTeam1.Id, false). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -2470,13 +2471,13 @@ func (s *MmctlUnitTestSuite) TestMoveChannelCmdF() { s.client. EXPECT(). - GetTeam(dstTeamName, ""). + GetTeam(context.Background(), dstTeamName, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) s.client. EXPECT(). - GetTeamByName(dstTeamName, ""). + GetTeamByName(context.Background(), dstTeamName, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) @@ -2501,13 +2502,13 @@ func (s *MmctlUnitTestSuite) TestMoveChannelCmdF() { s.client. EXPECT(). - GetTeam(dstTeamID, ""). + GetTeam(context.Background(), dstTeamID, ""). Return(&mockTeam1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelID, ""). + GetChannel(context.Background(), channelID, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) @@ -2532,19 +2533,19 @@ func (s *MmctlUnitTestSuite) TestMoveChannelCmdF() { s.client. EXPECT(). - GetTeam(dstTeamID, ""). + GetTeam(context.Background(), dstTeamID, ""). Return(&mockTeam1, &model.Response{}, errors.New("")). Times(1) s.client. EXPECT(). - GetChannel(channelID, ""). + GetChannel(context.Background(), channelID, ""). Return(&model.Channel{Id: channelID, Name: "some-name"}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - MoveChannel(channelID, mockTeam1.Id, false). + MoveChannel(context.Background(), channelID, mockTeam1.Id, false). Return(nil, &model.Response{}, errors.New("some-error")). Times(1) @@ -2626,13 +2627,13 @@ func (s *MmctlUnitTestSuite) TestCreateChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -2670,19 +2671,19 @@ func (s *MmctlUnitTestSuite) TestCreateChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateChannel(foundChannel). + CreateChannel(context.Background(), foundChannel). Return(foundChannel, &model.Response{}, nil). Times(1) @@ -2723,13 +2724,13 @@ func (s *MmctlUnitTestSuite) TestCreateChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateChannel(foundChannel). + CreateChannel(context.Background(), foundChannel). Return(foundChannel, &model.Response{}, nil). Times(1) @@ -2776,13 +2777,13 @@ func (s *MmctlUnitTestSuite) TestCreateChannelCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateChannel(foundChannel). + CreateChannel(context.Background(), foundChannel). Return(foundChannel, &model.Response{}, nil). Times(1) @@ -2821,19 +2822,19 @@ func (s *MmctlUnitTestSuite) TestDeleteChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -2852,13 +2853,13 @@ func (s *MmctlUnitTestSuite) TestDeleteChannelsCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -2877,19 +2878,19 @@ func (s *MmctlUnitTestSuite) TestDeleteChannelsCmd() { printer.Clean() s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, nil, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(&mockChannel, nil, nil). Times(1) s.client. EXPECT(). - PermanentDeleteChannel(channelID). + PermanentDeleteChannel(context.Background(), channelID). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2907,7 +2908,7 @@ func (s *MmctlUnitTestSuite) TestDeleteChannelsCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, nil, nil). Times(2) @@ -2916,25 +2917,25 @@ func (s *MmctlUnitTestSuite) TestDeleteChannelsCmd() { s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelNameDoesNotExist, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelNameDoesNotExist, teamID, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannel(channelNameDoesNotExist, ""). + GetChannel(context.Background(), channelNameDoesNotExist, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(&mockChannel, nil, nil). Times(1) s.client. EXPECT(). - PermanentDeleteChannel(channelID). + PermanentDeleteChannel(context.Background(), channelID). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/channel_users.go b/server/cmd/mmctl/commands/channel_users.go index a5d1a97287..8ea84787e0 100644 --- a/server/cmd/mmctl/commands/channel_users.go +++ b/server/cmd/mmctl/commands/channel_users.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "github.com/hashicorp/go-multierror" @@ -72,7 +73,7 @@ func addUserToChannel(c client.Client, channel *model.Channel, user *model.User, printer.PrintError("Can't find user '" + userArg + "'") return } - if _, _, err := c.AddChannelMember(channel.Id, user.Id); err != nil { + if _, _, err := c.AddChannelMember(context.TODO(), channel.Id, user.Id); err != nil { printer.PrintError("Unable to add '" + userArg + "' to " + channel.Name + ". Error: " + err.Error()) } } @@ -111,21 +112,21 @@ func removeUserFromChannel(c client.Client, channel *model.Channel, user *model. printer.PrintError("Can't find user '" + userArg + "'") return } - if _, err := c.RemoveUserFromChannel(channel.Id, user.Id); err != nil { + if _, err := c.RemoveUserFromChannel(context.TODO(), channel.Id, user.Id); err != nil { printer.PrintError("Unable to remove '" + userArg + "' from " + channel.Name + ". Error: " + err.Error()) } } func removeAllUsersFromChannel(c client.Client, channel *model.Channel) error { var result *multierror.Error - members, _, err := c.GetChannelMembers(channel.Id, 0, 10000, "") + members, _, err := c.GetChannelMembers(context.TODO(), channel.Id, 0, 10000, "") if err != nil { printer.PrintError("Unable to remove all users from " + channel.Name + ". Error: " + err.Error()) return fmt.Errorf("unable to remove all users from %q: %w", channel.Name, err) } for _, member := range members { - if _, err := c.RemoveUserFromChannel(channel.Id, member.UserId); err != nil { + if _, err := c.RemoveUserFromChannel(context.TODO(), channel.Id, member.UserId); err != nil { result = multierror.Append(result, fmt.Errorf("unable to remove %q from %q Error: %w", member.UserId, channel.Name, err)) printer.PrintError("Unable to remove '" + member.UserId + "' from " + channel.Name + ". Error: " + err.Error()) } diff --git a/server/cmd/mmctl/commands/channel_users_test.go b/server/cmd/mmctl/commands/channel_users_test.go index 3576553ade..bfdce46a46 100644 --- a/server/cmd/mmctl/commands/channel_users_test.go +++ b/server/cmd/mmctl/commands/channel_users_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "net/http" @@ -43,24 +44,24 @@ func (s *MmctlUnitTestSuite) TestChannelUsersAddCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(userEmail, ""). + GetUserByEmail(context.Background(), userEmail, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - AddChannelMember(channelID, userID). + AddChannelMember(context.Background(), channelID, userID). Return(&model.ChannelMember{}, &model.Response{}, nil). Times(1) err := channelUsersAddCmdF(s.client, cmd, []string{channelArg, userEmail}) @@ -74,19 +75,19 @@ func (s *MmctlUnitTestSuite) TestChannelUsersAddCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) // No channel is returned by client. s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -102,12 +103,12 @@ func (s *MmctlUnitTestSuite) TestChannelUsersAddCmdF() { // No team is returned by client. s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamID, ""). + GetTeamByName(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -123,38 +124,38 @@ func (s *MmctlUnitTestSuite) TestChannelUsersAddCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(nilUserArg, ""). + GetUserByEmail(context.Background(), nilUserArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(nilUserArg, ""). + GetUserByUsername(context.Background(), nilUserArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(nilUserArg, ""). + GetUser(context.Background(), nilUserArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(userEmail, ""). + GetUserByEmail(context.Background(), userEmail, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - AddChannelMember(channelID, userID). + AddChannelMember(context.Background(), channelID, userID). Return(&model.ChannelMember{}, &model.Response{}, nil). Times(1) err := channelUsersAddCmdF(s.client, cmd, []string{channelArg, nilUserArg, userEmail}) @@ -169,24 +170,24 @@ func (s *MmctlUnitTestSuite) TestChannelUsersAddCmdF() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(userEmail, ""). + GetUserByEmail(context.Background(), userEmail, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - AddChannelMember(channelID, userID). + AddChannelMember(context.Background(), channelID, userID). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) err := channelUsersAddCmdF(s.client, cmd, []string{channelArg, userEmail}) @@ -224,25 +225,25 @@ func (s *MmctlUnitTestSuite) TestChannelUsersRemoveCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(foundChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(userEmail, ""). + GetUserByEmail(context.Background(), userEmail, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RemoveUserFromChannel(foundChannel.Id, mockUser.Id). + RemoveUserFromChannel(context.Background(), foundChannel.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -288,37 +289,37 @@ func (s *MmctlUnitTestSuite) TestChannelUsersRemoveCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(foundChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelMembers(foundChannel.Id, 0, 10000, ""). + GetChannelMembers(context.Background(), foundChannel.Id, 0, 10000, ""). Return(mockChannelMembers, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RemoveUserFromChannel(foundChannel.Id, mockUser.Id). + RemoveUserFromChannel(context.Background(), foundChannel.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - RemoveUserFromChannel(foundChannel.Id, mockUser2.Id). + RemoveUserFromChannel(context.Background(), foundChannel.Id, mockUser2.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - RemoveUserFromChannel(foundChannel.Id, mockUser3.Id). + RemoveUserFromChannel(context.Background(), foundChannel.Id, mockUser3.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -348,37 +349,37 @@ func (s *MmctlUnitTestSuite) TestChannelUsersRemoveCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(foundChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(userEmail, ""). + GetUserByEmail(context.Background(), userEmail, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser2.Email, ""). + GetUserByEmail(context.Background(), mockUser2.Email, ""). Return(&mockUser2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RemoveUserFromChannel(foundChannel.Id, mockUser.Id). + RemoveUserFromChannel(context.Background(), foundChannel.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - RemoveUserFromChannel(foundChannel.Id, mockUser2.Id). + RemoveUserFromChannel(context.Background(), foundChannel.Id, mockUser2.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -411,25 +412,25 @@ func (s *MmctlUnitTestSuite) TestChannelUsersRemoveCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelName, foundTeam.Id, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelName, foundTeam.Id, ""). Return(foundChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelMembers(foundChannel.Id, 0, 10000, ""). + GetChannelMembers(context.Background(), foundChannel.Id, 0, 10000, ""). Return(mockChannelMembers, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RemoveUserFromChannel(foundChannel.Id, mockUser.Id). + RemoveUserFromChannel(context.Background(), foundChannel.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) diff --git a/server/cmd/mmctl/commands/channelargs.go b/server/cmd/mmctl/commands/channelargs.go index 7f5901c4ec..68af509469 100644 --- a/server/cmd/mmctl/commands/channelargs.go +++ b/server/cmd/mmctl/commands/channelargs.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" "strings" @@ -50,11 +51,11 @@ func getChannelFromChannelArg(c client.Client, channelArg string) *model.Channel return nil } - channel, _, _ = c.GetChannelByNameIncludeDeleted(channelPart, team.Id, "") + channel, _, _ = c.GetChannelByNameIncludeDeleted(context.TODO(), channelPart, team.Id, "") } if channel == nil { - channel, _, _ = c.GetChannel(channelPart, "") + channel, _, _ = c.GetChannel(context.TODO(), channelPart, "") } return channel @@ -94,7 +95,7 @@ func getChannelFromArg(c client.Client, arg string) (*model.Channel, error) { if err != nil { return nil, err } - channel, response, err = c.GetChannelByNameIncludeDeleted(channelArg, team.Id, "") + channel, response, err = c.GetChannelByNameIncludeDeleted(context.TODO(), channelArg, team.Id, "") if err != nil { err = ExtractErrorFromResponse(response, err) var nfErr *NotFoundError @@ -108,7 +109,7 @@ func getChannelFromArg(c client.Client, arg string) (*model.Channel, error) { return channel, nil } var err error - channel, response, err = c.GetChannel(channelArg, "") + channel, response, err = c.GetChannel(context.TODO(), channelArg, "") if err != nil { nErr := ExtractErrorFromResponse(response, err) var nfErr *NotFoundError diff --git a/server/cmd/mmctl/commands/channelargs_test.go b/server/cmd/mmctl/commands/channelargs_test.go index 2bb5b0ff4b..a50fa7889a 100644 --- a/server/cmd/mmctl/commands/channelargs_test.go +++ b/server/cmd/mmctl/commands/channelargs_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" "net/http" @@ -18,7 +19,7 @@ func (s *MmctlUnitTestSuite) TestGetChannelArgs() { s.client. EXPECT(). - GetChannel(notFoundChannel, ""). + GetChannel(context.Background(), notFoundChannel, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, notFoundErr). Times(1) @@ -33,7 +34,7 @@ func (s *MmctlUnitTestSuite) TestGetChannelArgs() { s.client. EXPECT(). - GetChannel(badRequestChannel, ""). + GetChannel(context.Background(), badRequestChannel, ""). Return(nil, &model.Response{StatusCode: http.StatusBadRequest}, badRequestErr). Times(1) @@ -48,7 +49,7 @@ func (s *MmctlUnitTestSuite) TestGetChannelArgs() { s.client. EXPECT(). - GetChannel(forbidden, ""). + GetChannel(context.Background(), forbidden, ""). Return(nil, &model.Response{StatusCode: http.StatusForbidden}, forbiddenErr). Times(1) @@ -63,7 +64,7 @@ func (s *MmctlUnitTestSuite) TestGetChannelArgs() { s.client. EXPECT(). - GetChannel(errChannel, ""). + GetChannel(context.Background(), errChannel, ""). Return(nil, &model.Response{StatusCode: http.StatusInternalServerError}, internalServerErrorErr). Times(1) @@ -78,7 +79,7 @@ func (s *MmctlUnitTestSuite) TestGetChannelArgs() { s.client. EXPECT(). - GetChannel(successID, ""). + GetChannel(context.Background(), successID, ""). Return(successChannel, nil, nil). Times(1) @@ -96,12 +97,12 @@ func (s *MmctlUnitTestSuite) TestGetChannelArgs() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(successTeam, nil, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(successChannel, nil, nil). Times(1) diff --git a/server/cmd/mmctl/commands/command.go b/server/cmd/mmctl/commands/command.go index 6c22daff3f..e7bcc89f84 100644 --- a/server/cmd/mmctl/commands/command.go +++ b/server/cmd/mmctl/commands/command.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" "net/http" @@ -174,7 +175,7 @@ func createCommandCmdF(c client.Client, cmd *cobra.Command, args []string) error URL: url, } - createdCommand, _, err := c.CreateCommand(newCommand) + createdCommand, _, err := c.CreateCommand(context.TODO(), newCommand) if err != nil { return errors.New("unable to create command '" + newCommand.DisplayName + "'. " + err.Error()) } @@ -187,7 +188,7 @@ func createCommandCmdF(c client.Client, cmd *cobra.Command, args []string) error func listCommandCmdF(c client.Client, cmd *cobra.Command, args []string) error { var teams []*model.Team if len(args) < 1 { - teamList, _, err := c.GetAllTeams("", 0, 10000) + teamList, _, err := c.GetAllTeams(context.TODO(), "", 0, 10000) if err != nil { return err } @@ -203,7 +204,7 @@ func listCommandCmdF(c client.Client, cmd *cobra.Command, args []string) error { errs = multierror.Append(errs, fmt.Errorf("unable to find team '%s'", args[i])) continue } - commands, _, err := c.ListCommands(team.Id, true) + commands, _, err := c.ListCommands(context.TODO(), team.Id, true) if err != nil { printer.PrintError("Unable to list commands for '" + team.Id + "'") errs = multierror.Append(errs, fmt.Errorf("unable to list commands for '%s': %w", team.Id, err)) @@ -217,7 +218,7 @@ func listCommandCmdF(c client.Client, cmd *cobra.Command, args []string) error { } func archiveCommandCmdF(c client.Client, cmd *cobra.Command, args []string) error { - resp, err := c.DeleteCommand(args[0]) + resp, err := c.DeleteCommand(context.TODO(), args[0]) if err != nil { return errors.New("Unable to archive command '" + args[0] + "' error: " + err.Error()) } @@ -289,7 +290,7 @@ func modifyCommandCmdF(c client.Client, cmd *cobra.Command, args []string) error } } - modifiedCommand, _, err := c.UpdateCommand(command) + modifiedCommand, _, err := c.UpdateCommand(context.TODO(), command) if err != nil { return fmt.Errorf("unable to modify command '%s'. %s", command.DisplayName, err.Error()) } @@ -311,7 +312,7 @@ func moveCommandCmdF(c client.Client, cmd *cobra.Command, args []string) error { return fmt.Errorf("unable to find command '%s'", args[1]) } - resp, err := c.MoveCommand(newTeam.Id, command.Id) + resp, err := c.MoveCommand(context.TODO(), newTeam.Id, command.Id) if err != nil { return fmt.Errorf("unable to move command '%s'. %s", command.Id, err.Error()) } diff --git a/server/cmd/mmctl/commands/command_e2e_test.go b/server/cmd/mmctl/commands/command_e2e_test.go index 5038f41693..f1a0078bd0 100644 --- a/server/cmd/mmctl/commands/command_e2e_test.go +++ b/server/cmd/mmctl/commands/command_e2e_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "github.com/mattermost/mattermost-server/server/public/model" @@ -262,7 +263,7 @@ func (s *MmctlE2ETestSuite) TestModifyCommandCmdF() { Trigger: "trigger", } - command, _, _ := s.th.SystemAdminClient.CreateCommand(newCmd) + command, _, _ := s.th.SystemAdminClient.CreateCommand(context.Background(), newCmd) index := 0 s.RunForSystemAdminAndLocal("modifyCommandCmdF", func(c client.Client) { printer.Clean() diff --git a/server/cmd/mmctl/commands/command_test.go b/server/cmd/mmctl/commands/command_test.go index 4ac614c948..c57d2eca25 100644 --- a/server/cmd/mmctl/commands/command_test.go +++ b/server/cmd/mmctl/commands/command_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" "net/http" @@ -68,17 +69,17 @@ func (s *MmctlUnitTestSuite) TestCommandCreateCmd() { // createCommandCmdF will call getTeamFromTeamArg, getUserFromUserArg which then calls GetUserByEmail s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(creatorIDArg, ""). + GetUserByEmail(context.Background(), creatorIDArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateCommand(&mockCommand). + CreateCommand(context.Background(), &mockCommand). Return(&mockCommand, &model.Response{}, nil). Times(1) @@ -116,17 +117,17 @@ func (s *MmctlUnitTestSuite) TestCommandCreateCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(creatorIDArg, ""). + GetUserByEmail(context.Background(), creatorIDArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateCommand(&mockCommand). + CreateCommand(context.Background(), &mockCommand). Return(&mockCommand, &model.Response{}, nil). Times(1) @@ -145,12 +146,12 @@ func (s *MmctlUnitTestSuite) TestCommandCreateCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -196,12 +197,12 @@ func (s *MmctlUnitTestSuite) TestCommandCreateCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(creatorIDArg, ""). + GetUserByEmail(context.Background(), creatorIDArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -247,12 +248,12 @@ func (s *MmctlUnitTestSuite) TestCommandCreateCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(creatorIDArg, ""). + GetUserByEmail(context.Background(), creatorIDArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -312,18 +313,18 @@ func (s *MmctlUnitTestSuite) TestCommandCreateCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(creatorIDArg, ""). + GetUserByEmail(context.Background(), creatorIDArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) mockError := errors.New("mock error, simulated error for CreateCommand") s.client. EXPECT(). - CreateCommand(&mockCommand). + CreateCommand(context.Background(), &mockCommand). Return(nil, &model.Response{}, mockError). Times(1) @@ -343,7 +344,7 @@ func (s *MmctlUnitTestSuite) TestArchiveCommandCmd() { s.client. EXPECT(). - DeleteCommand(arg). + DeleteCommand(context.Background(), arg). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -361,7 +362,7 @@ func (s *MmctlUnitTestSuite) TestArchiveCommandCmd() { s.client. EXPECT(). - DeleteCommand(arg). + DeleteCommand(context.Background(), arg). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -379,7 +380,7 @@ func (s *MmctlUnitTestSuite) TestArchiveCommandCmd() { s.client. EXPECT(). - DeleteCommand(arg). + DeleteCommand(context.Background(), arg). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -416,9 +417,9 @@ func (s *MmctlUnitTestSuite) TestCommandListCmdF() { } cmd := &cobra.Command{} - s.client.EXPECT().GetAllTeams("", 0, 10000).Return(teams, &model.Response{}, nil).Times(1) - s.client.EXPECT().ListCommands(team1ID, true).Return(team1Commands, &model.Response{}, nil).Times(1) - s.client.EXPECT().ListCommands(team2Id, true).Return(team2Commands, &model.Response{}, nil).Times(1) + s.client.EXPECT().GetAllTeams(context.Background(), "", 0, 10000).Return(teams, &model.Response{}, nil).Times(1) + s.client.EXPECT().ListCommands(context.Background(), team1ID, true).Return(team1Commands, &model.Response{}, nil).Times(1) + s.client.EXPECT().ListCommands(context.Background(), team2Id, true).Return(team2Commands, &model.Response{}, nil).Times(1) err := listCommandCmdF(s.client, cmd, []string{}) s.Require().Nil(err) s.Len(printer.GetLines(), 2) @@ -439,8 +440,8 @@ func (s *MmctlUnitTestSuite) TestCommandListCmdF() { } cmd := &cobra.Command{} - s.client.EXPECT().GetTeam(teamID, "").Return(team, &model.Response{}, nil).Times(1) - s.client.EXPECT().ListCommands(teamID, true).Return(teamCommand, &model.Response{}, nil).Times(1) + s.client.EXPECT().GetTeam(context.Background(), teamID, "").Return(team, &model.Response{}, nil).Times(1) + s.client.EXPECT().ListCommands(context.Background(), teamID, true).Return(teamCommand, &model.Response{}, nil).Times(1) err := listCommandCmdF(s.client, cmd, []string{teamID}) s.Require().Nil(err) s.Len(printer.GetLines(), 1) @@ -453,9 +454,9 @@ func (s *MmctlUnitTestSuite) TestCommandListCmdF() { printer.Clean() cmd := &cobra.Command{} // first try to get team by id - s.client.EXPECT().GetTeam(teamID, "").Return(nil, &model.Response{}, nil).Times(1) + s.client.EXPECT().GetTeam(context.Background(), teamID, "").Return(nil, &model.Response{}, nil).Times(1) // second try to search the team by name - s.client.EXPECT().GetTeamByName(teamID, "").Return(nil, &model.Response{}, nil).Times(1) + s.client.EXPECT().GetTeamByName(context.Background(), teamID, "").Return(nil, &model.Response{}, nil).Times(1) err := listCommandCmdF(s.client, cmd, []string{teamID}) s.Require().Error(err) s.Len(printer.GetLines(), 0) @@ -468,8 +469,8 @@ func (s *MmctlUnitTestSuite) TestCommandListCmdF() { printer.Clean() cmd := &cobra.Command{} team := &model.Team{Id: teamID} - s.client.EXPECT().GetTeam(teamID, "").Return(team, &model.Response{}, nil).Times(1) - s.client.EXPECT().ListCommands(teamID, true).Return(nil, &model.Response{}, errors.New("")).Times(1) + s.client.EXPECT().GetTeam(context.Background(), teamID, "").Return(team, &model.Response{}, nil).Times(1) + s.client.EXPECT().ListCommands(context.Background(), teamID, true).Return(nil, &model.Response{}, errors.New("")).Times(1) err := listCommandCmdF(s.client, cmd, []string{teamID}) s.Require().Error(err) s.Len(printer.GetLines(), 0) @@ -541,17 +542,17 @@ func (s *MmctlUnitTestSuite) TestCommandModifyCmd() { // modifyCommandCmdF will call getCommandById, GetUserByEmail and UpdateCommand s.client. EXPECT(). - GetCommandById(arg). + GetCommandById(context.Background(), arg). Return(&mockCommand, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockCommandModified.CreatorId, ""). + GetUserByEmail(context.Background(), mockCommandModified.CreatorId, ""). Return(&model.User{Id: mockCommandModified.CreatorId}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateCommand(&mockCommand). + UpdateCommand(context.Background(), &mockCommand). Return(mockCommandModified, &model.Response{}, nil). Times(1) @@ -582,7 +583,7 @@ func (s *MmctlUnitTestSuite) TestCommandModifyCmd() { // modifyCommandCmdF will call getCommandById s.client. EXPECT(). - GetCommandById(arg). + GetCommandById(context.Background(), arg). Return(nil, &model.Response{}, nil). Times(1) @@ -615,22 +616,22 @@ func (s *MmctlUnitTestSuite) TestCommandModifyCmd() { // via email, username, and id. s.client. EXPECT(). - GetCommandById(arg). + GetCommandById(context.Background(), arg). Return(&mockCommand, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(bogusUsername, ""). + GetUserByEmail(context.Background(), bogusUsername, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(bogusUsername, ""). + GetUserByUsername(context.Background(), bogusUsername, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(bogusUsername, ""). + GetUser(context.Background(), bogusUsername, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -661,7 +662,7 @@ func (s *MmctlUnitTestSuite) TestCommandModifyCmd() { // modifyCommandCmdF will call getCommandById s.client. EXPECT(). - GetCommandById(arg). + GetCommandById(context.Background(), arg). Return(&mockCommand, &model.Response{}, nil). Times(1) @@ -692,7 +693,7 @@ func (s *MmctlUnitTestSuite) TestCommandModifyCmd() { // modifyCommandCmdF will call getCommandById s.client. EXPECT(). - GetCommandById(arg). + GetCommandById(context.Background(), arg). Return(&mockCommand, &model.Response{}, nil). Times(1) @@ -723,13 +724,13 @@ func (s *MmctlUnitTestSuite) TestCommandModifyCmd() { // modifyCommandCmdF will call getCommandById then UpdateCommand s.client. EXPECT(). - GetCommandById(arg). + GetCommandById(context.Background(), arg). Return(&mockCommand, &model.Response{}, nil). Times(1) mockError := errors.New("mock error, simulated error for CreateCommand") s.client. EXPECT(). - UpdateCommand(&mockCommand). + UpdateCommand(context.Background(), &mockCommand). Return(nil, &model.Response{}, mockError). Times(1) @@ -792,22 +793,22 @@ func (s *MmctlUnitTestSuite) TestCommandMoveCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(&mockTeamDest, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetCommandById(commandArg). + GetCommandById(context.Background(), commandArg). Return(&mockCommand, &model.Response{}, nil). Times(1) s.client. EXPECT(). - MoveCommand(teamArg, mockCommand.Id). + MoveCommand(context.Background(), teamArg, mockCommand.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -822,12 +823,12 @@ func (s *MmctlUnitTestSuite) TestCommandMoveCmd() { printer.Clean() s.client. EXPECT(). - GetTeam(teamArgBogus, ""). + GetTeam(context.Background(), teamArgBogus, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArgBogus, ""). + GetTeamByName(context.Background(), teamArgBogus, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -842,12 +843,12 @@ func (s *MmctlUnitTestSuite) TestCommandMoveCmd() { printer.Clean() s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeamDest, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetCommandById(commandArgBogus). + GetCommandById(context.Background(), commandArgBogus). Return(nil, &model.Response{}, nil). Times(1) @@ -862,17 +863,17 @@ func (s *MmctlUnitTestSuite) TestCommandMoveCmd() { printer.Clean() s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeamDest, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetCommandById(commandArg). + GetCommandById(context.Background(), commandArg). Return(&mockCommand, &model.Response{}, nil). Times(1) s.client. EXPECT(). - MoveCommand(teamArg, commandArg). + MoveCommand(context.Background(), teamArg, commandArg). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -887,17 +888,17 @@ func (s *MmctlUnitTestSuite) TestCommandMoveCmd() { printer.Clean() s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeamDest, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetCommandById(commandArg). + GetCommandById(context.Background(), commandArg). Return(&mockCommand, &model.Response{}, nil). Times(1) s.client. EXPECT(). - MoveCommand(teamArg, commandArg). + MoveCommand(context.Background(), teamArg, commandArg). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -936,7 +937,7 @@ func (s *MmctlUnitTestSuite) TestCommandShowCmd() { // showCommandCmdF will look up command by id s.client. EXPECT(). - GetCommandById(commandArg). + GetCommandById(context.Background(), commandArg). Return(&mockCommand, &model.Response{}, nil). Times(1) @@ -952,7 +953,7 @@ func (s *MmctlUnitTestSuite) TestCommandShowCmd() { // showCommandCmdF will look up command by id s.client. EXPECT(). - GetCommandById(commandArgBogus). + GetCommandById(context.Background(), commandArgBogus). Return(nil, &model.Response{}, nil). Times(1) @@ -972,13 +973,13 @@ func (s *MmctlUnitTestSuite) TestCommandShowCmd() { s.client. EXPECT(). - GetTeamByName(mockTeam.Name, ""). + GetTeamByName(context.Background(), mockTeam.Name, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - ListCommands(mockTeam.Id, false). + ListCommands(context.Background(), mockTeam.Id, false). Return(list, &model.Response{}, nil). Times(1) @@ -1001,13 +1002,13 @@ func (s *MmctlUnitTestSuite) TestCommandShowCmd() { s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(nil, &model.Response{}, errors.New("team not found")). Times(1) s.client. EXPECT(). - GetCommandById(teamTrigger). + GetCommandById(context.Background(), teamTrigger). Return(nil, &model.Response{}, errors.New("command not found")). Times(1) @@ -1029,19 +1030,19 @@ func (s *MmctlUnitTestSuite) TestCommandShowCmd() { s.client. EXPECT(). - GetTeamByName(mockTeam.Name, ""). + GetTeamByName(context.Background(), mockTeam.Name, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - ListCommands(mockTeam.Id, false). + ListCommands(context.Background(), mockTeam.Id, false). Return(list, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetCommandById(teamTrigger). + GetCommandById(context.Background(), teamTrigger). Return(nil, &model.Response{}, errors.New("bogus")). Times(1) diff --git a/server/cmd/mmctl/commands/commandargs.go b/server/cmd/mmctl/commands/commandargs.go index cba0e8474c..5d96bcbcc5 100644 --- a/server/cmd/mmctl/commands/commandargs.go +++ b/server/cmd/mmctl/commands/commandargs.go @@ -4,6 +4,7 @@ package commands import ( + "context" "strings" "github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/client" @@ -19,7 +20,7 @@ func getCommandFromCommandArg(c client.Client, commandArg string) *model.Command cmd := getCommandFromTeamTrigger(c, commandArg) if cmd == nil { - cmd, _, _ = c.GetCommandById(commandArg) + cmd, _, _ = c.GetCommandById(context.TODO(), commandArg) } return cmd } @@ -31,7 +32,7 @@ func getCommandFromTeamTrigger(c client.Client, teamTrigger string) *model.Comma return nil } - team, _, _ := c.GetTeamByName(arr[0], "") + team, _, _ := c.GetTeamByName(context.TODO(), arr[0], "") if team == nil { return nil } @@ -41,7 +42,7 @@ func getCommandFromTeamTrigger(c client.Client, teamTrigger string) *model.Comma return nil } - list, _, _ := c.ListCommands(team.Id, false) + list, _, _ := c.ListCommands(context.TODO(), team.Id, false) if list == nil { return nil } diff --git a/server/cmd/mmctl/commands/config.go b/server/cmd/mmctl/commands/config.go index bd15574419..64d0a0674e 100644 --- a/server/cmd/mmctl/commands/config.go +++ b/server/cmd/mmctl/commands/config.go @@ -4,6 +4,7 @@ package commands import ( + "context" "encoding/json" "fmt" "io/ioutil" @@ -324,7 +325,7 @@ func configGetCmdF(c client.Client, _ *cobra.Command, args []string) error { printer.SetSingle(true) printer.SetFormat(printer.FormatJSON) - config, _, err := c.GetConfig() + config, _, err := c.GetConfig(context.TODO()) if err != nil { return err } @@ -344,7 +345,7 @@ func configGetCmdF(c client.Client, _ *cobra.Command, args []string) error { } func configSetCmdF(c client.Client, _ *cobra.Command, args []string) error { - config, _, err := c.GetConfig() + config, _, err := c.GetConfig(context.TODO()) if err != nil { return err } @@ -357,7 +358,7 @@ func configSetCmdF(c client.Client, _ *cobra.Command, args []string) error { return cErr } - newConfig, _, err := c.PatchConfig(config) + newConfig, _, err := c.PatchConfig(context.TODO(), config) if err != nil { return err } @@ -372,7 +373,7 @@ func configPatchCmdF(c client.Client, _ *cobra.Command, args []string) error { return err } - config, _, err := c.GetConfig() + config, _, err := c.GetConfig(context.TODO()) if err != nil { return err } @@ -381,7 +382,7 @@ func configPatchCmdF(c client.Client, _ *cobra.Command, args []string) error { return jErr } - newConfig, _, err := c.PatchConfig(config) + newConfig, _, err := c.PatchConfig(context.TODO(), config) if err != nil { return err } @@ -391,7 +392,7 @@ func configPatchCmdF(c client.Client, _ *cobra.Command, args []string) error { } func configEditCmdF(c client.Client, _ *cobra.Command, _ []string) error { - config, _, err := c.GetConfig() + config, _, err := c.GetConfig(context.TODO()) if err != nil { return err } @@ -436,7 +437,7 @@ func configEditCmdF(c client.Client, _ *cobra.Command, _ []string) error { return jErr } - newConfig, _, err := c.UpdateConfig(config) + newConfig, _, err := c.UpdateConfig(context.TODO(), config) if err != nil { return err } @@ -458,7 +459,7 @@ func configResetCmdF(c client.Client, cmd *cobra.Command, args []string) error { defaultConfig := &model.Config{} defaultConfig.SetDefaults() - config, _, err := c.GetConfig() + config, _, err := c.GetConfig(context.TODO()) if err != nil { return err } @@ -474,7 +475,7 @@ func configResetCmdF(c client.Client, cmd *cobra.Command, args []string) error { return nErr } } - newConfig, _, err := c.UpdateConfig(config) + newConfig, _, err := c.UpdateConfig(context.TODO(), config) if err != nil { return err } @@ -486,7 +487,7 @@ func configResetCmdF(c client.Client, cmd *cobra.Command, args []string) error { func configShowCmdF(c client.Client, _ *cobra.Command, _ []string) error { printer.SetSingle(true) printer.SetFormat(printer.FormatJSON) - config, _, err := c.GetConfig() + config, _, err := c.GetConfig(context.TODO()) if err != nil { return err } @@ -501,7 +502,7 @@ func parseConfigPath(configPath string) []string { } func configReloadCmdF(c client.Client, _ *cobra.Command, _ []string) error { - _, err := c.ReloadConfig() + _, err := c.ReloadConfig(context.TODO()) if err != nil { return err } @@ -515,7 +516,7 @@ func configMigrateCmdF(c client.Client, cmd *cobra.Command, args []string) error return errors.New("this command is only available in local mode. Please set the --local flag") } - _, err := c.MigrateConfig(args[0], args[1]) + _, err := c.MigrateConfig(context.TODO(), args[0], args[1]) if err != nil { return err } diff --git a/server/cmd/mmctl/commands/config_test.go b/server/cmd/mmctl/commands/config_test.go index 9fd1ef4c4b..7feed7d83c 100644 --- a/server/cmd/mmctl/commands/config_test.go +++ b/server/cmd/mmctl/commands/config_test.go @@ -5,6 +5,7 @@ package commands import ( "bytes" + "context" "errors" "fmt" "io/ioutil" @@ -32,7 +33,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(1) @@ -51,7 +52,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(1) @@ -70,7 +71,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(1) @@ -89,7 +90,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(1) @@ -108,7 +109,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(1) @@ -129,7 +130,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(1) @@ -150,7 +151,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(1) @@ -170,7 +171,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{StatusCode: 500}, errors.New("")). Times(1) @@ -197,7 +198,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(7) @@ -255,7 +256,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(0) @@ -272,7 +273,7 @@ func (s *MmctlUnitTestSuite) TestConfigGetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(outputConfig, &model.Response{}, nil). Times(1) @@ -296,12 +297,12 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchConfig(inputConfig). + PatchConfig(context.Background(), inputConfig). Return(inputConfig, &model.Response{}, nil). Times(1) @@ -324,12 +325,12 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchConfig(inputConfig). + PatchConfig(context.Background(), inputConfig). Return(inputConfig, &model.Response{}, nil). Times(1) @@ -352,12 +353,12 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchConfig(inputConfig). + PatchConfig(context.Background(), inputConfig). Return(inputConfig, &model.Response{}, nil). Times(1) @@ -380,12 +381,12 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchConfig(inputConfig). + PatchConfig(context.Background(), inputConfig). Return(inputConfig, &model.Response{}, nil). Times(1) @@ -407,12 +408,12 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchConfig(inputConfig). + PatchConfig(context.Background(), inputConfig). Return(inputConfig, &model.Response{}, nil). Times(1) @@ -434,7 +435,7 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) @@ -453,7 +454,7 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) @@ -475,12 +476,12 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchConfig(inputConfig). + PatchConfig(context.Background(), inputConfig). Return(inputConfig, &model.Response{StatusCode: 500}, errors.New("")). Times(1) @@ -515,13 +516,13 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { } s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(3) s.client. EXPECT(). - PatchConfig(inputConfig). + PatchConfig(context.Background(), inputConfig). Return(inputConfig, &model.Response{}, nil). Times(3) @@ -555,7 +556,7 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) @@ -576,7 +577,7 @@ func (s *MmctlUnitTestSuite) TestConfigSetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) @@ -617,12 +618,12 @@ func (s *MmctlUnitTestSuite) TestConfigPatchCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchConfig(inputConfig). + PatchConfig(context.Background(), inputConfig). Return(inputConfig, &model.Response{}, nil). Times(1) @@ -640,7 +641,7 @@ func (s *MmctlUnitTestSuite) TestConfigPatchCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) @@ -668,12 +669,12 @@ func (s *MmctlUnitTestSuite) TestConfigResetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateConfig(defaultConfig). + UpdateConfig(context.Background(), defaultConfig). Return(defaultConfig, &model.Response{}, nil). Times(1) @@ -694,12 +695,12 @@ func (s *MmctlUnitTestSuite) TestConfigResetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateConfig(defaultConfig). + UpdateConfig(context.Background(), defaultConfig). Return(defaultConfig, &model.Response{}, nil). Times(1) @@ -721,7 +722,7 @@ func (s *MmctlUnitTestSuite) TestConfigResetCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(defaultConfig, &model.Response{}, nil). Times(1) @@ -742,7 +743,7 @@ func (s *MmctlUnitTestSuite) TestConfigShowCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(mockConfig, &model.Response{}, nil). Times(1) @@ -759,7 +760,7 @@ func (s *MmctlUnitTestSuite) TestConfigShowCmd() { s.client. EXPECT(). - GetConfig(). + GetConfig(context.Background()). Return(nil, &model.Response{}, configError). Times(1) @@ -775,7 +776,7 @@ func (s *MmctlUnitTestSuite) TestConfigReloadCmd() { s.client. EXPECT(). - ReloadConfig(). + ReloadConfig(context.Background()). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -789,7 +790,7 @@ func (s *MmctlUnitTestSuite) TestConfigReloadCmd() { s.client. EXPECT(). - ReloadConfig(). + ReloadConfig(context.Background()). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("some-error")). Times(1) @@ -813,7 +814,7 @@ func (s *MmctlUnitTestSuite) TestConfigMigrateCmd() { s.client. EXPECT(). - MigrateConfig(args[0], args[1]). + MigrateConfig(context.Background(), args[0], args[1]). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -831,7 +832,7 @@ func (s *MmctlUnitTestSuite) TestConfigMigrateCmd() { s.client. EXPECT(). - MigrateConfig(args[0], args[1]). + MigrateConfig(context.Background(), args[0], args[1]). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("some-error")). Times(1) diff --git a/server/cmd/mmctl/commands/export.go b/server/cmd/mmctl/commands/export.go index 0104fef4ef..2223a9f38f 100644 --- a/server/cmd/mmctl/commands/export.go +++ b/server/cmd/mmctl/commands/export.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "io" "os" @@ -127,7 +128,7 @@ func exportCreateCmdF(c client.Client, command *cobra.Command, args []string) er data["include_attachments"] = "true" } - job, _, err := c.CreateJob(&model.Job{ + job, _, err := c.CreateJob(context.TODO(), &model.Job{ Type: model.JobTypeExportProcess, Data: data, }) @@ -141,7 +142,7 @@ func exportCreateCmdF(c client.Client, command *cobra.Command, args []string) er } func exportListCmdF(c client.Client, command *cobra.Command, args []string) error { - exports, _, err := c.ListExports() + exports, _, err := c.ListExports(context.TODO()) if err != nil { return fmt.Errorf("failed to list exports: %w", err) } @@ -161,7 +162,7 @@ func exportListCmdF(c client.Client, command *cobra.Command, args []string) erro func exportDeleteCmdF(c client.Client, command *cobra.Command, args []string) error { name := args[0] - if _, err := c.DeleteExport(name); err != nil { + if _, err := c.DeleteExport(context.TODO(), name); err != nil { return fmt.Errorf("failed to delete export: %w", err) } @@ -211,7 +212,7 @@ func exportDownloadCmdF(c client.Client, command *cobra.Command, args []string) return fmt.Errorf("failed to seek export file: %w", err) } - if _, _, err := c.DownloadExport(name, outFile, off); err != nil { + if _, _, err := c.DownloadExport(context.TODO(), name, outFile, off); err != nil { printer.PrintWarning(fmt.Sprintf("failed to download export file: %v. Retrying...", err)) i++ continue @@ -231,7 +232,7 @@ func exportJobListCmdF(c client.Client, command *cobra.Command, args []string) e } func exportJobShowCmdF(c client.Client, command *cobra.Command, args []string) error { - job, _, err := c.GetJob(args[0]) + job, _, err := c.GetJob(context.TODO(), args[0]) if err != nil { return fmt.Errorf("failed to get export job: %w", err) } @@ -242,12 +243,12 @@ func exportJobShowCmdF(c client.Client, command *cobra.Command, args []string) e } func exportJobCancelCmdF(c client.Client, _ *cobra.Command, args []string) error { - job, _, err := c.GetJob(args[0]) + job, _, err := c.GetJob(context.TODO(), args[0]) if err != nil { return fmt.Errorf("failed to get export job: %w", err) } - if _, err := c.CancelJob(job.Id); err != nil { + if _, err := c.CancelJob(context.TODO(), job.Id); err != nil { return fmt.Errorf("failed to cancel export job: %w", err) } diff --git a/server/cmd/mmctl/commands/export_test.go b/server/cmd/mmctl/commands/export_test.go index 2567ea9f76..dd9f3e7d5e 100644 --- a/server/cmd/mmctl/commands/export_test.go +++ b/server/cmd/mmctl/commands/export_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "net/http" @@ -23,7 +24,7 @@ func (s *MmctlUnitTestSuite) TestExportCreateCmdF() { s.client. EXPECT(). - CreateJob(mockJob). + CreateJob(context.Background(), mockJob). Return(mockJob, &model.Response{}, nil). Times(1) @@ -43,7 +44,7 @@ func (s *MmctlUnitTestSuite) TestExportCreateCmdF() { s.client. EXPECT(). - CreateJob(mockJob). + CreateJob(context.Background(), mockJob). Return(mockJob, &model.Response{}, nil). Times(1) @@ -65,7 +66,7 @@ func (s *MmctlUnitTestSuite) TestExportDeleteCmdF() { s.client. EXPECT(). - DeleteExport(exportName). + DeleteExport(context.Background(), exportName). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -83,7 +84,7 @@ func (s *MmctlUnitTestSuite) TestExportListCmdF() { s.client. EXPECT(). - ListExports(). + ListExports(context.Background()). Return(mockExports, &model.Response{}, nil). Times(1) @@ -104,7 +105,7 @@ func (s *MmctlUnitTestSuite) TestExportListCmdF() { s.client. EXPECT(). - ListExports(). + ListExports(context.Background()). Return(mockExports, &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/extract.go b/server/cmd/mmctl/commands/extract.go index cca2cc335e..2584aeedab 100644 --- a/server/cmd/mmctl/commands/extract.go +++ b/server/cmd/mmctl/commands/extract.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "strconv" "time" @@ -80,7 +81,7 @@ func extractRunCmdF(c client.Client, command *cobra.Command, args []string) erro to = model.GetMillis() / 1000 } - job, _, err := c.CreateJob(&model.Job{ + job, _, err := c.CreateJob(context.TODO(), &model.Job{ Type: model.JobTypeExtractContent, Data: map[string]string{ "from": strconv.FormatInt(from, 10), @@ -97,7 +98,7 @@ func extractRunCmdF(c client.Client, command *cobra.Command, args []string) erro } func extractJobShowCmdF(c client.Client, command *cobra.Command, args []string) error { - job, _, err := c.GetJob(args[0]) + job, _, err := c.GetJob(context.TODO(), args[0]) if err != nil { return fmt.Errorf("failed to get content extraction job: %w", err) } diff --git a/server/cmd/mmctl/commands/extract_e2e_test.go b/server/cmd/mmctl/commands/extract_e2e_test.go index 7383a0a562..e25f40a513 100644 --- a/server/cmd/mmctl/commands/extract_e2e_test.go +++ b/server/cmd/mmctl/commands/extract_e2e_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "os" "path/filepath" "time" @@ -45,7 +46,7 @@ func (s *MmctlE2ETestSuite) TestExtractRunCmdF() { info, err := file.Stat() s.Require().NoError(err) - us, _, err := s.th.SystemAdminClient.CreateUpload(&model.UploadSession{ + us, _, err := s.th.SystemAdminClient.CreateUpload(context.Background(), &model.UploadSession{ ChannelId: s.th.BasicChannel.Id, Filename: info.Name(), FileSize: info.Size(), @@ -53,7 +54,7 @@ func (s *MmctlE2ETestSuite) TestExtractRunCmdF() { s.Require().NoError(err) s.Require().NotNil(us) - _, _, err = s.th.SystemAdminClient.UploadData(us.Id, file) + _, _, err = s.th.SystemAdminClient.UploadData(context.Background(), us.Id, file) s.Require().NoError(err) cmd := &cobra.Command{} diff --git a/server/cmd/mmctl/commands/group.go b/server/cmd/mmctl/commands/group.go index eab857ef88..3721e0e030 100644 --- a/server/cmd/mmctl/commands/group.go +++ b/server/cmd/mmctl/commands/group.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" "github.com/mattermost/mattermost-server/server/public/model" @@ -149,7 +150,7 @@ func init() { } func listLdapGroupsCmdF(c client.Client, cmd *cobra.Command, args []string) error { - groups, _, err := c.GetLdapGroups() + groups, _, err := c.GetLdapGroups(context.TODO()) if err != nil { return err } @@ -174,7 +175,7 @@ func channelGroupEnableCmdF(c client.Client, cmd *cobra.Command, args []string) }, } - groups, _, _, err := c.GetGroupsByChannel(channel.Id, *groupOpts) + groups, _, _, err := c.GetGroupsByChannel(context.TODO(), channel.Id, *groupOpts) if err != nil { return err } @@ -184,7 +185,7 @@ func channelGroupEnableCmdF(c client.Client, cmd *cobra.Command, args []string) } channelPatch := model.ChannelPatch{GroupConstrained: model.NewBool(true)} - if _, _, err = c.PatchChannel(channel.Id, &channelPatch); err != nil { + if _, _, err = c.PatchChannel(context.TODO(), channel.Id, &channelPatch); err != nil { return err } @@ -198,7 +199,7 @@ func channelGroupDisableCmdF(c client.Client, cmd *cobra.Command, args []string) } channelPatch := model.ChannelPatch{GroupConstrained: model.NewBool(false)} - if _, _, err := c.PatchChannel(channel.Id, &channelPatch); err != nil { + if _, _, err := c.PatchChannel(context.TODO(), channel.Id, &channelPatch); err != nil { return err } @@ -234,7 +235,7 @@ func channelGroupListCmdF(c client.Client, cmd *cobra.Command, args []string) er PerPage: 9999, }, } - groups, _, _, err := c.GetGroupsByChannel(channel.Id, groupOpts) + groups, _, _, err := c.GetGroupsByChannel(context.TODO(), channel.Id, groupOpts) if err != nil { return err } @@ -258,7 +259,7 @@ func teamGroupEnableCmdF(c client.Client, cmd *cobra.Command, args []string) err PerPage: 10, }, } - groups, _, _, err := c.GetGroupsByTeam(team.Id, groupOpts) + groups, _, _, err := c.GetGroupsByTeam(context.TODO(), team.Id, groupOpts) if err != nil { return err } @@ -268,7 +269,7 @@ func teamGroupEnableCmdF(c client.Client, cmd *cobra.Command, args []string) err } teamPatch := model.TeamPatch{GroupConstrained: model.NewBool(true)} - if _, _, err = c.PatchTeam(team.Id, &teamPatch); err != nil { + if _, _, err = c.PatchTeam(context.TODO(), team.Id, &teamPatch); err != nil { return err } @@ -282,7 +283,7 @@ func teamGroupDisableCmdF(c client.Client, cmd *cobra.Command, args []string) er } teamPatch := model.TeamPatch{GroupConstrained: model.NewBool(false)} - if _, _, err := c.PatchTeam(team.Id, &teamPatch); err != nil { + if _, _, err := c.PatchTeam(context.TODO(), team.Id, &teamPatch); err != nil { return err } @@ -318,7 +319,7 @@ func teamGroupListCmdF(c client.Client, cmd *cobra.Command, args []string) error PerPage: 9999, }, } - groups, _, _, err := c.GetGroupsByTeam(team.Id, groupOpts) + groups, _, _, err := c.GetGroupsByTeam(context.TODO(), team.Id, groupOpts) if err != nil { return err } @@ -332,7 +333,7 @@ func teamGroupListCmdF(c client.Client, cmd *cobra.Command, args []string) error func userGroupRestoreCmdF(c client.Client, cmd *cobra.Command, args []string) error { groupID := args[0] - _, resp, err := c.RestoreGroup(groupID, "") + _, resp, err := c.RestoreGroup(context.TODO(), groupID, "") if err != nil { return err } diff --git a/server/cmd/mmctl/commands/group_test.go b/server/cmd/mmctl/commands/group_test.go index 17bdaa5cc2..5c98d16f16 100644 --- a/server/cmd/mmctl/commands/group_test.go +++ b/server/cmd/mmctl/commands/group_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" "strings" @@ -22,7 +23,7 @@ func (s *MmctlUnitTestSuite) TestListLdapGroupsCmd() { s.client. EXPECT(). - GetLdapGroups(). + GetLdapGroups(context.Background()). Return(nil, &model.Response{}, mockError). Times(1) @@ -42,7 +43,7 @@ func (s *MmctlUnitTestSuite) TestListLdapGroupsCmd() { s.client. EXPECT(). - GetLdapGroups(). + GetLdapGroups(context.Background()). Return(mockList, &model.Response{}, nil). Times(1) @@ -64,13 +65,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupEnableCmd() { s.client. EXPECT(). - GetTeam(arg, ""). + GetTeam(context.Background(), arg, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) s.client. EXPECT(). - GetTeamByName(arg, ""). + GetTeamByName(context.Background(), arg, ""). Return(nil, &model.Response{}, errors.New("")). Times(1) @@ -95,13 +96,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupEnableCmd() { s.client. EXPECT(). - GetTeam(arg, ""). + GetTeam(context.Background(), arg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByTeam(mockTeam.Id, groupOpts). + GetGroupsByTeam(context.Background(), mockTeam.Id, groupOpts). Return(nil, 0, &model.Response{}, mockError). Times(1) @@ -125,13 +126,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupEnableCmd() { s.client. EXPECT(). - GetTeam(arg, ""). + GetTeam(context.Background(), arg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByTeam(mockTeam.Id, groupOpts). + GetGroupsByTeam(context.Background(), mockTeam.Id, groupOpts). Return([]*model.GroupWithSchemeAdmin{}, 0, &model.Response{}, nil). Times(1) @@ -157,19 +158,19 @@ func (s *MmctlUnitTestSuite) TestTeamGroupEnableCmd() { s.client. EXPECT(). - GetTeam(arg, ""). + GetTeam(context.Background(), arg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByTeam(mockTeam.Id, groupOpts). + GetGroupsByTeam(context.Background(), mockTeam.Id, groupOpts). Return([]*model.GroupWithSchemeAdmin{{}}, 1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchTeam(mockTeam.Id, &teamPatch). + PatchTeam(context.Background(), mockTeam.Id, &teamPatch). Return(nil, &model.Response{}, mockError). Times(1) @@ -194,19 +195,19 @@ func (s *MmctlUnitTestSuite) TestTeamGroupEnableCmd() { s.client. EXPECT(). - GetTeam(arg, ""). + GetTeam(context.Background(), arg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByTeam(mockTeam.Id, groupOpts). + GetGroupsByTeam(context.Background(), mockTeam.Id, groupOpts). Return([]*model.GroupWithSchemeAdmin{{}}, 1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchTeam(mockTeam.Id, &teamPatch). + PatchTeam(context.Background(), mockTeam.Id, &teamPatch). Return(&mockTeam, &model.Response{}, nil). Times(1) @@ -226,13 +227,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupDisableCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchTeam(teamArg, &teamPatch). + PatchTeam(context.Background(), teamArg, &teamPatch). Return(nil, &model.Response{}, nil). Times(1) @@ -247,13 +248,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupDisableCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -273,13 +274,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupDisableCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchTeam(teamArg, &teamPatch). + PatchTeam(context.Background(), teamArg, &teamPatch). Return(nil, &model.Response{}, mockError). Times(1) @@ -315,19 +316,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupListCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelID, *groupOpts). + GetGroupsByChannel(context.Background(), channelID, *groupOpts). Return(mockGroups, 0, &model.Response{}, nil). Times(1) @@ -362,19 +363,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupListCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelID, *groupOpts). + GetGroupsByChannel(context.Background(), channelID, *groupOpts). Return(mockGroups, 0, &model.Response{}, nil). Times(1) @@ -407,19 +408,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupListCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelID, *groupOpts). + GetGroupsByChannel(context.Background(), channelID, *groupOpts). Return(mockGroups, 0, &model.Response{}, nil). Times(1) @@ -441,19 +442,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupListCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelID, ""). + GetChannel(context.Background(), channelID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -474,13 +475,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupListCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamID, ""). + GetTeamByName(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -512,19 +513,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupListCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelID, *groupOpts). + GetGroupsByChannel(context.Background(), channelID, *groupOpts). Return(nil, 0, &model.Response{}, mockError). Times(1) @@ -547,19 +548,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupListCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannel(channelID, ""). + GetChannel(context.Background(), channelID, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -581,13 +582,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupListCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetTeamByName(teamID, ""). + GetTeamByName(context.Background(), teamID, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -604,13 +605,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupListCmd() { s.client. EXPECT(). - GetTeam("team1", ""). + GetTeam(context.Background(), "team1", ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName("team1", ""). + GetTeamByName(context.Background(), "team1", ""). Return(nil, &model.Response{}, nil). Times(1) @@ -645,13 +646,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupListCmd() { s.client. EXPECT(). - GetTeam("team1", ""). + GetTeam(context.Background(), "team1", ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByTeam("team1", groupOpts). + GetGroupsByTeam(context.Background(), "team1", groupOpts). Return(groups, 2, &model.Response{}, mockError). Times(1) @@ -684,13 +685,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupListCmd() { s.client. EXPECT(). - GetTeam("team1", ""). + GetTeam(context.Background(), "team1", ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByTeam("team1", groupOpts). + GetGroupsByTeam(context.Background(), "team1", groupOpts). Return(groups, 2, &model.Response{}, nil). Times(1) @@ -715,13 +716,13 @@ func (s *MmctlUnitTestSuite) TestTeamGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamID, ""). + GetTeamByName(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -741,7 +742,7 @@ func (s *MmctlUnitTestSuite) TestTeamGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) @@ -764,7 +765,7 @@ func (s *MmctlUnitTestSuite) TestTeamGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) @@ -787,7 +788,7 @@ func (s *MmctlUnitTestSuite) TestTeamGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) @@ -812,13 +813,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamID, ""). + GetTeamByName(context.Background(), teamID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -840,19 +841,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelID, ""). + GetChannel(context.Background(), channelID, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -875,13 +876,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(channel, &model.Response{}, nil). Times(1) @@ -907,13 +908,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(channel, &model.Response{}, nil). Times(1) @@ -939,13 +940,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupStatusCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(team, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelID, teamID, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelID, teamID, ""). Return(channel, &model.Response{}, nil). Times(1) @@ -978,25 +979,25 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelPart, *groupOpts). + GetGroupsByChannel(context.Background(), channelPart, *groupOpts). Return(mockGroups, 0, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(true)}). + PatchChannel(context.Background(), channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(true)}). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -1016,13 +1017,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -1044,19 +1045,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannel(channelPart, ""). + GetChannel(context.Background(), channelPart, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -1085,19 +1086,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelPart, *groupOpts). + GetGroupsByChannel(context.Background(), channelPart, *groupOpts). Return(nil, 0, &model.Response{}, mockError). Times(1) @@ -1128,25 +1129,25 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelPart, *groupOpts). + GetGroupsByChannel(context.Background(), channelPart, *groupOpts). Return(mockGroups, 0, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(true)}). + PatchChannel(context.Background(), channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(true)}). Return(nil, &model.Response{}, mockError). Times(1) @@ -1175,19 +1176,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelPart, *groupOpts). + GetGroupsByChannel(context.Background(), channelPart, *groupOpts). Return(mockGroups, 0, &model.Response{}, nil). Times(1) @@ -1207,13 +1208,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1234,19 +1235,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelPart, ""). + GetChannel(context.Background(), channelPart, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1277,31 +1278,31 @@ func (s *MmctlUnitTestSuite) TestChannelGroupEnableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannel(channelPart, ""). + GetChannel(context.Background(), channelPart, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetGroupsByChannel(channelPart, *groupOpts). + GetGroupsByChannel(context.Background(), channelPart, *groupOpts). Return(mockGroups, 0, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(true)}). + PatchChannel(context.Background(), channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(true)}). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -1324,19 +1325,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupDisableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(false)}). + PatchChannel(context.Background(), channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(false)}). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -1355,13 +1356,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupDisableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1382,19 +1383,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupDisableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannel(channelPart, ""). + GetChannel(context.Background(), channelPart, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1417,25 +1418,25 @@ func (s *MmctlUnitTestSuite) TestChannelGroupDisableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(false)}). + PatchChannel(context.Background(), channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(false)}). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -1455,13 +1456,13 @@ func (s *MmctlUnitTestSuite) TestChannelGroupDisableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -1483,19 +1484,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupDisableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetChannel(channelPart, ""). + GetChannel(context.Background(), channelPart, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -1518,19 +1519,19 @@ func (s *MmctlUnitTestSuite) TestChannelGroupDisableCmdF() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetChannelByNameIncludeDeleted(channelPart, teamArg, ""). + GetChannelByNameIncludeDeleted(context.Background(), channelPart, teamArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchChannel(channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(false)}). + PatchChannel(context.Background(), channelPart, &model.ChannelPatch{GroupConstrained: model.NewBool(false)}). Return(nil, &model.Response{}, mockError). Times(1) @@ -1548,7 +1549,7 @@ func (s *MmctlUnitTestSuite) TestUserGroupRestoreCmd() { s.client. EXPECT(). - RestoreGroup("groupId", ""). + RestoreGroup(context.Background(), "groupId", ""). Return(nil, &model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -1565,7 +1566,7 @@ func (s *MmctlUnitTestSuite) TestUserGroupRestoreCmd() { mockError := errors.New("no group found") s.client. EXPECT(). - RestoreGroup("groupId", ""). + RestoreGroup(context.Background(), "groupId", ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, mockError). Times(1) diff --git a/server/cmd/mmctl/commands/import.go b/server/cmd/mmctl/commands/import.go index ea91a90aca..21af5f4556 100644 --- a/server/cmd/mmctl/commands/import.go +++ b/server/cmd/mmctl/commands/import.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" "io" @@ -132,7 +133,7 @@ func importListIncompleteCmdF(c client.Client, command *cobra.Command, args []st userID = model.UploadNoUserID } - uploads, _, err := c.GetUploadsForUser(userID) + uploads, _, err := c.GetUploadsForUser(context.TODO(), userID) if err != nil { return fmt.Errorf("failed to get uploads: %w", err) } @@ -155,7 +156,7 @@ func importListIncompleteCmdF(c client.Client, command *cobra.Command, args []st } func importListAvailableCmdF(c client.Client, command *cobra.Command, args []string) error { - imports, _, err := c.ListImports() + imports, _, err := c.ListImports(context.TODO()) if err != nil { return fmt.Errorf("failed to list imports: %w", err) } @@ -194,7 +195,7 @@ func importUploadCmdF(c client.Client, command *cobra.Command, args []string) er return errors.New("upload session ID is missing or invalid") } - us, _, err = c.GetUpload(uploadID) + us, _, err = c.GetUpload(context.TODO(), uploadID) if err != nil { return fmt.Errorf("failed to get upload session: %w", err) } @@ -213,7 +214,7 @@ func importUploadCmdF(c client.Client, command *cobra.Command, args []string) er userID = model.UploadNoUserID } - us, _, err = c.CreateUpload(&model.UploadSession{ + us, _, err = c.CreateUpload(context.TODO(), &model.UploadSession{ Filename: info.Name(), FileSize: info.Size(), Type: model.UploadTypeImport, @@ -226,7 +227,7 @@ func importUploadCmdF(c client.Client, command *cobra.Command, args []string) er printer.PrintT("Upload session successfully created, ID: {{.Id}} ", us) } - finfo, _, err := c.UploadData(us.Id, file) + finfo, _, err := c.UploadData(context.TODO(), us.Id, file) if err != nil { return fmt.Errorf("failed to upload data: %w", err) } @@ -239,7 +240,7 @@ func importUploadCmdF(c client.Client, command *cobra.Command, args []string) er func importProcessCmdF(c client.Client, command *cobra.Command, args []string) error { importFile := args[0] - job, _, err := c.CreateJob(&model.Job{ + job, _, err := c.CreateJob(context.TODO(), &model.Job{ Type: model.JobTypeImportProcess, Data: map[string]string{ "import_file": importFile, @@ -273,7 +274,7 @@ func printJob(job *model.Job) { } func importJobShowCmdF(c client.Client, command *cobra.Command, args []string) error { - job, _, err := c.GetJob(args[0]) + job, _, err := c.GetJob(context.TODO(), args[0]) if err != nil { return fmt.Errorf("failed to get import job: %w", err) } @@ -302,7 +303,7 @@ func jobListCmdF(c client.Client, command *cobra.Command, jobType string) error } for { - jobs, _, err := c.GetJobsByType(jobType, page, perPage) + jobs, _, err := c.GetJobsByType(context.TODO(), jobType, page, perPage) if err != nil { return fmt.Errorf("failed to get jobs: %w", err) } @@ -356,7 +357,9 @@ func importValidateCmdF(command *cobra.Command, args []string) error { ) err := withClient(func(c client.Client, cmd *cobra.Command, args []string) error { - users, err := getPages(c.GetUsers, 250) + users, err := getPages(func(page, numPerPage int, etag string) ([]*model.User, *model.Response, error) { + return c.GetUsers(context.TODO(), page, numPerPage, etag) + }, 250) if err != nil { return err } @@ -369,7 +372,7 @@ func importValidateCmdF(command *cobra.Command, args []string) error { } teams, err := getPages(func(page, numPerPage int, etag string) ([]*model.Team, *model.Response, error) { - return c.GetAllTeams(etag, page, numPerPage) + return c.GetAllTeams(context.TODO(), etag, page, numPerPage) }, 250) if err != nil { return err @@ -380,14 +383,14 @@ func importValidateCmdF(command *cobra.Command, args []string) error { serverTeams[team.Name] = team publicChannels, err := getPages(func(page, numPerPage int, etag string) ([]*model.Channel, *model.Response, error) { - return c.GetPublicChannelsForTeam(team.Id, page, numPerPage, etag) + return c.GetPublicChannelsForTeam(context.TODO(), team.Id, page, numPerPage, etag) }, 250) if err != nil { return err } privateChannels, err := getPages(func(page, numPerPage int, etag string) ([]*model.Channel, *model.Response, error) { - return c.GetPrivateChannelsForTeam(team.Id, page, numPerPage, etag) + return c.GetPrivateChannelsForTeam(context.TODO(), team.Id, page, numPerPage, etag) }, 250) if err != nil { return err diff --git a/server/cmd/mmctl/commands/import_e2e_test.go b/server/cmd/mmctl/commands/import_e2e_test.go index bb51bd48a2..e39cd5fc62 100644 --- a/server/cmd/mmctl/commands/import_e2e_test.go +++ b/server/cmd/mmctl/commands/import_e2e_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "os" "path/filepath" "time" @@ -67,7 +68,7 @@ func (s *MmctlE2ETestSuite) TestImportUploadCmdF() { userID = "nouser" } - us, _, err := c.CreateUpload(&model.UploadSession{ + us, _, err := c.CreateUpload(context.TODO(), &model.UploadSession{ Filename: importName, FileSize: 276051, Type: model.UploadTypeImport, @@ -197,7 +198,7 @@ func (s *MmctlE2ETestSuite) TestImportListIncompleteCmdF() { cmd := &cobra.Command{} userID := "nouser" if c == s.th.SystemAdminClient { - user, _, err := s.th.SystemAdminClient.GetMe("") + user, _, err := s.th.SystemAdminClient.GetMe(context.Background(), "") s.Require().NoError(err) userID = user.Id } else { diff --git a/server/cmd/mmctl/commands/import_test.go b/server/cmd/mmctl/commands/import_test.go index bf005c3684..df7dade3c6 100644 --- a/server/cmd/mmctl/commands/import_test.go +++ b/server/cmd/mmctl/commands/import_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" "github.com/pkg/errors" @@ -21,7 +22,7 @@ func (s *MmctlUnitTestSuite) TestImportListAvailableCmdF() { s.client. EXPECT(). - ListImports(). + ListImports(context.Background()). Return(mockImports, &model.Response{}, nil). Times(1) @@ -42,7 +43,7 @@ func (s *MmctlUnitTestSuite) TestImportListAvailableCmdF() { s.client. EXPECT(). - ListImports(). + ListImports(context.Background()). Return(mockImports, &model.Response{}, nil). Times(1) @@ -63,7 +64,7 @@ func (s *MmctlUnitTestSuite) TestImportListIncompleteCmdF() { s.client. EXPECT(). - GetUploadsForUser("me"). + GetUploadsForUser(context.Background(), "me"). Return(mockUploads, &model.Response{}, nil). Times(1) @@ -93,7 +94,7 @@ func (s *MmctlUnitTestSuite) TestImportListIncompleteCmdF() { s.client. EXPECT(). - GetUploadsForUser("me"). + GetUploadsForUser(context.Background(), "me"). Return(mockUploads, &model.Response{}, nil). Times(1) @@ -114,7 +115,7 @@ func (s *MmctlUnitTestSuite) TestImportJobShowCmdF() { s.client. EXPECT(). - GetJob(jobID). + GetJob(context.Background(), jobID). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("not found")). Times(1) @@ -132,7 +133,7 @@ func (s *MmctlUnitTestSuite) TestImportJobShowCmdF() { s.client. EXPECT(). - GetJob(mockJob.Id). + GetJob(context.Background(), mockJob.Id). Return(mockJob, &model.Response{}, nil). Times(1) @@ -157,7 +158,7 @@ func (s *MmctlUnitTestSuite) TestImportJobListCmdF() { s.client. EXPECT(). - GetJobsByType(model.JobTypeImportProcess, 0, perPage). + GetJobsByType(context.Background(), model.JobTypeImportProcess, 0, perPage). Return(mockJobs, &model.Response{}, nil). Times(1) @@ -190,7 +191,7 @@ func (s *MmctlUnitTestSuite) TestImportJobListCmdF() { s.client. EXPECT(). - GetJobsByType(model.JobTypeImportProcess, 0, perPage). + GetJobsByType(context.Background(), model.JobTypeImportProcess, 0, perPage). Return(mockJobs, &model.Response{}, nil). Times(1) @@ -214,7 +215,7 @@ func (s *MmctlUnitTestSuite) TestImportProcessCmdF() { s.client. EXPECT(). - CreateJob(mockJob). + CreateJob(context.Background(), mockJob). Return(mockJob, &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/init.go b/server/cmd/mmctl/commands/init.go index fe65e08295..ca8e7cf8ec 100644 --- a/server/cmd/mmctl/commands/init.go +++ b/server/cmd/mmctl/commands/init.go @@ -4,6 +4,7 @@ package commands import ( + "context" "crypto/tls" "crypto/x509" "fmt" @@ -72,7 +73,9 @@ func withClient(fn func(c client.Client, cmd *cobra.Command, args []string) erro return fn(c, cmd, args) } - c, serverVersion, err := InitClient(viper.GetBool("insecure-sha1-intermediate"), viper.GetBool("insecure-tls-version")) + ctx := context.TODO() + + c, serverVersion, err := InitClient(ctx, viper.GetBool("insecure-sha1-intermediate"), viper.GetBool("insecure-tls-version")) if err != nil { return err } @@ -163,32 +166,32 @@ func NewAPIv4Client(instanceURL string, allowInsecureSHA1, allowInsecureTLS bool return client } -func InitClientWithUsernameAndPassword(username, password, instanceURL string, allowInsecureSHA1, allowInsecureTLS bool) (*model.Client4, string, error) { +func InitClientWithUsernameAndPassword(ctx context.Context, username, password, instanceURL string, allowInsecureSHA1, allowInsecureTLS bool) (*model.Client4, string, error) { client := NewAPIv4Client(instanceURL, allowInsecureSHA1, allowInsecureTLS) - _, resp, err := client.Login(username, password) + _, resp, err := client.Login(ctx, username, password) if err != nil { return nil, "", checkInsecureTLSError(err, allowInsecureTLS) } return client, resp.ServerVersion, nil } -func InitClientWithMFA(username, password, mfaToken, instanceURL string, allowInsecureSHA1, allowInsecureTLS bool) (*model.Client4, string, error) { +func InitClientWithMFA(ctx context.Context, username, password, mfaToken, instanceURL string, allowInsecureSHA1, allowInsecureTLS bool) (*model.Client4, string, error) { client := NewAPIv4Client(instanceURL, allowInsecureSHA1, allowInsecureTLS) - _, resp, err := client.LoginWithMFA(username, password, mfaToken) + _, resp, err := client.LoginWithMFA(ctx, username, password, mfaToken) if err != nil { return nil, "", checkInsecureTLSError(err, allowInsecureTLS) } return client, resp.ServerVersion, nil } -func InitClientWithCredentials(credentials *Credentials, allowInsecureSHA1, allowInsecureTLS bool) (*model.Client4, string, error) { +func InitClientWithCredentials(ctx context.Context, credentials *Credentials, allowInsecureSHA1, allowInsecureTLS bool) (*model.Client4, string, error) { client := NewAPIv4Client(credentials.InstanceURL, allowInsecureSHA1, allowInsecureTLS) client.AuthType = model.HeaderBearer client.AuthToken = credentials.AuthToken - _, resp, err := client.GetMe("") + _, resp, err := client.GetMe(ctx, "") if err != nil { return nil, "", checkInsecureTLSError(err, allowInsecureTLS) } @@ -196,12 +199,12 @@ func InitClientWithCredentials(credentials *Credentials, allowInsecureSHA1, allo return client, resp.ServerVersion, nil } -func InitClient(allowInsecureSHA1, allowInsecureTLS bool) (*model.Client4, string, error) { +func InitClient(ctx context.Context, allowInsecureSHA1, allowInsecureTLS bool) (*model.Client4, string, error) { credentials, err := GetCurrentCredentials() if err != nil { return nil, "", err } - return InitClientWithCredentials(credentials, allowInsecureSHA1, allowInsecureTLS) + return InitClientWithCredentials(ctx, credentials, allowInsecureSHA1, allowInsecureTLS) } func InitWebSocketClient() (*model.WebSocketClient, error) { diff --git a/server/cmd/mmctl/commands/init_test.go b/server/cmd/mmctl/commands/init_test.go index c27567dee7..fc505870ed 100644 --- a/server/cmd/mmctl/commands/init_test.go +++ b/server/cmd/mmctl/commands/init_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "crypto/x509" "encoding/json" "net" @@ -189,7 +190,7 @@ func TestNewAPIv4Client(t *testing.T) { defer os.Unsetenv("HTTP_PROXY") client := NewAPIv4Client("http://somethingelse:"+port, false, false) - _, _, err = client.GetMe("") + _, _, err = client.GetMe(context.Background(), "") require.NoError(t, err) }) } diff --git a/server/cmd/mmctl/commands/integrity.go b/server/cmd/mmctl/commands/integrity.go index da9a09dd0c..b653d6cb4f 100644 --- a/server/cmd/mmctl/commands/integrity.go +++ b/server/cmd/mmctl/commands/integrity.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "github.com/hashicorp/go-multierror" @@ -84,7 +85,7 @@ func integrityCmdF(c client.Client, command *cobra.Command, args []string) error verboseFlag, _ := command.Flags().GetBool("verbose") - results, _, err := c.CheckIntegrity() + results, _, err := c.CheckIntegrity(context.TODO()) if err != nil { return fmt.Errorf("unable to perform integrity check. Error: %w", err) } diff --git a/server/cmd/mmctl/commands/integrity_test.go b/server/cmd/mmctl/commands/integrity_test.go index fb863dbd65..6a987e0918 100644 --- a/server/cmd/mmctl/commands/integrity_test.go +++ b/server/cmd/mmctl/commands/integrity_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "github.com/hashicorp/go-multierror" @@ -40,7 +41,7 @@ func (s *MmctlUnitTestSuite) TestIntegrityCmd() { } s.client. EXPECT(). - CheckIntegrity(). + CheckIntegrity(context.Background()). Return(mockResults, &model.Response{}, nil). Times(1) @@ -58,7 +59,7 @@ func (s *MmctlUnitTestSuite) TestIntegrityCmd() { s.client. EXPECT(). - CheckIntegrity(). + CheckIntegrity(context.Background()). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -98,7 +99,7 @@ func (s *MmctlUnitTestSuite) TestIntegrityCmd() { } s.client. EXPECT(). - CheckIntegrity(). + CheckIntegrity(context.Background()). Return(mockResults, &model.Response{}, nil). Times(1) var expected error diff --git a/server/cmd/mmctl/commands/ldap.go b/server/cmd/mmctl/commands/ldap.go index 9f35d814f8..f6bf832ccb 100644 --- a/server/cmd/mmctl/commands/ldap.go +++ b/server/cmd/mmctl/commands/ldap.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" "github.com/spf13/cobra" @@ -53,7 +54,7 @@ func ldapSyncCmdF(c client.Client, cmd *cobra.Command, args []string) error { includeRemovedMembers, _ := cmd.Flags().GetBool("include-removed-members") - resp, err := c.SyncLdap(includeRemovedMembers) + resp, err := c.SyncLdap(context.TODO(), includeRemovedMembers) if err != nil { return err } @@ -69,7 +70,7 @@ func ldapSyncCmdF(c client.Client, cmd *cobra.Command, args []string) error { func ldapIDMigrateCmdF(c client.Client, cmd *cobra.Command, args []string) error { toAttribute := args[0] - resp, err := c.MigrateIdLdap(toAttribute) + resp, err := c.MigrateIdLdap(context.TODO(), toAttribute) if err != nil { return err } diff --git a/server/cmd/mmctl/commands/ldap_test.go b/server/cmd/mmctl/commands/ldap_test.go index 6c90fd26b5..de9ce5829c 100644 --- a/server/cmd/mmctl/commands/ldap_test.go +++ b/server/cmd/mmctl/commands/ldap_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" "github.com/mattermost/mattermost-server/server/public/model" @@ -21,7 +22,7 @@ func (s *MmctlUnitTestSuite) TestLdapSyncCmd() { s.client. EXPECT(). - SyncLdap(false). + SyncLdap(context.Background(), false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -38,7 +39,7 @@ func (s *MmctlUnitTestSuite) TestLdapSyncCmd() { s.client. EXPECT(). - SyncLdap(false). + SyncLdap(context.Background(), false). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -55,7 +56,7 @@ func (s *MmctlUnitTestSuite) TestLdapSyncCmd() { s.client. EXPECT(). - SyncLdap(false). + SyncLdap(context.Background(), false). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -73,7 +74,7 @@ func (s *MmctlUnitTestSuite) TestLdapSyncCmd() { s.client. EXPECT(). - SyncLdap(true). + SyncLdap(context.Background(), true). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -88,7 +89,7 @@ func (s *MmctlUnitTestSuite) TestLdapMigrateID() { s.client. EXPECT(). - MigrateIdLdap("test-id"). + MigrateIdLdap(context.Background(), "test-id"). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -104,7 +105,7 @@ func (s *MmctlUnitTestSuite) TestLdapMigrateID() { s.client. EXPECT(). - MigrateIdLdap("test-id"). + MigrateIdLdap(context.Background(), "test-id"). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("test-error")). Times(1) diff --git a/server/cmd/mmctl/commands/license.go b/server/cmd/mmctl/commands/license.go index 8d9d6c84b5..338180ebbc 100644 --- a/server/cmd/mmctl/commands/license.go +++ b/server/cmd/mmctl/commands/license.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "io/ioutil" @@ -56,7 +57,7 @@ func uploadLicenseStringCmdF(c client.Client, cmd *cobra.Command, args []string) licenseBytes := []byte(args[0]) - if _, err := c.UploadLicenseFile(licenseBytes); err != nil { + if _, err := c.UploadLicenseFile(context.TODO(), licenseBytes); err != nil { return err } @@ -75,7 +76,7 @@ func uploadLicenseCmdF(c client.Client, cmd *cobra.Command, args []string) error return err } - if _, err := c.UploadLicenseFile(fileBytes); err != nil { + if _, err := c.UploadLicenseFile(context.TODO(), fileBytes); err != nil { return err } @@ -85,7 +86,7 @@ func uploadLicenseCmdF(c client.Client, cmd *cobra.Command, args []string) error } func removeLicenseCmdF(c client.Client, cmd *cobra.Command, args []string) error { - if _, err := c.RemoveLicenseFile(); err != nil { + if _, err := c.RemoveLicenseFile(context.TODO()); err != nil { return err } diff --git a/server/cmd/mmctl/commands/license_test.go b/server/cmd/mmctl/commands/license_test.go index e9cabc0a0a..3e8c239c93 100644 --- a/server/cmd/mmctl/commands/license_test.go +++ b/server/cmd/mmctl/commands/license_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "io/ioutil" "net/http" "os" @@ -25,7 +26,7 @@ func (s *MmctlUnitTestSuite) TestRemoveLicenseCmd() { s.client. EXPECT(). - RemoveLicenseFile(). + RemoveLicenseFile(context.Background()). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -42,7 +43,7 @@ func (s *MmctlUnitTestSuite) TestRemoveLicenseCmd() { s.client. EXPECT(). - RemoveLicenseFile(). + RemoveLicenseFile(context.Background()). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockErr). Times(1) @@ -72,7 +73,7 @@ func (s *MmctlUnitTestSuite) TestUploadLicenseCmdF() { printer.Clean() s.client. EXPECT(). - UploadLicenseFile(mockLicenseFile). + UploadLicenseFile(context.Background(), mockLicenseFile). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -86,7 +87,7 @@ func (s *MmctlUnitTestSuite) TestUploadLicenseCmdF() { errMsg := "open " + path + ": no such file or directory" s.client. EXPECT(). - UploadLicenseFile(mockLicenseFile). + UploadLicenseFile(context.Background(), mockLicenseFile). Times(0) err := uploadLicenseCmdF(s.client, &cobra.Command{}, []string{path}) @@ -110,7 +111,7 @@ func (s *MmctlUnitTestSuite) TestUploadLicenseStringCmdF() { printer.Clean() s.client. EXPECT(). - UploadLicenseFile(mockLicenseFile). + UploadLicenseFile(context.Background(), mockLicenseFile). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/logs.go b/server/cmd/mmctl/commands/logs.go index ce89f08960..2fdd2aa85f 100644 --- a/server/cmd/mmctl/commands/logs.go +++ b/server/cmd/mmctl/commands/logs.go @@ -5,6 +5,7 @@ package commands import ( "bytes" + "context" "errors" "fmt" "os" @@ -39,7 +40,7 @@ func logsCmdF(c client.Client, cmd *cobra.Command, args []string) error { } number, _ := cmd.Flags().GetInt("number") - logLines, _, err := c.GetLogs(0, number) + logLines, _, err := c.GetLogs(context.TODO(), 0, number) if err != nil { return errors.New("Unable to retrieve logs. Error: " + err.Error()) } diff --git a/server/cmd/mmctl/commands/logs_test.go b/server/cmd/mmctl/commands/logs_test.go index 5eeec30497..5894ce1f4c 100644 --- a/server/cmd/mmctl/commands/logs_test.go +++ b/server/cmd/mmctl/commands/logs_test.go @@ -5,6 +5,7 @@ package commands import ( "bytes" + "context" "fmt" "io" "os" @@ -31,7 +32,7 @@ func (s *MmctlUnitTestSuite) TestLogsCmd() { s.client. EXPECT(). - GetLogs(0, 1). + GetLogs(context.Background(), 0, 1). Return(mockSingleLogLine, &model.Response{}, nil). Times(1) @@ -48,7 +49,7 @@ func (s *MmctlUnitTestSuite) TestLogsCmd() { s.client. EXPECT(). - GetLogs(0, 0). + GetLogs(context.Background(), 0, 0). Return(mockSingleLogLine, &model.Response{}, nil). Times(1) @@ -67,7 +68,7 @@ func (s *MmctlUnitTestSuite) TestLogsCmd() { s.client. EXPECT(). - GetLogs(0, 1). + GetLogs(context.Background(), 0, 1). Return(mockSingleLogLine, &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/permission_role_test.go b/server/cmd/mmctl/commands/permission_role_test.go index 82ec0ce75d..e5819fec9c 100644 --- a/server/cmd/mmctl/commands/permission_role_test.go +++ b/server/cmd/mmctl/commands/permission_role_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" "net/http" @@ -33,25 +34,25 @@ func (s *MmctlUnitTestSuite) TestAssignUsersCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser.Username, ""). + GetUserByEmail(context.Background(), mockUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Username, ""). + GetUserByUsername(context.Background(), mockUser.Username, ""). Return(mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(mockUser.Id, fmt.Sprintf("%s %s", mockUser.Roles, mockRole.Name)). + UpdateUserRoles(context.Background(), mockUser.Id, fmt.Sprintf("%s %s", mockUser.Roles, mockRole.Name)). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -85,45 +86,45 @@ func (s *MmctlUnitTestSuite) TestAssignUsersCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) for _, user := range []*model.User{mockUser1, mockUser2} { s.client. EXPECT(). - GetUserByEmail(user.Username, ""). + GetUserByEmail(context.Background(), user.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(user.Username, ""). + GetUserByUsername(context.Background(), user.Username, ""). Return(user, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(user.Id, fmt.Sprintf("%s %s", user.Roles, mockRole.Name)). + UpdateUserRoles(context.Background(), user.Id, fmt.Sprintf("%s %s", user.Roles, mockRole.Name)). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) } s.client. EXPECT(). - GetUserByEmail(notFoundUser.Username, ""). + GetUserByEmail(context.Background(), notFoundUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(notFoundUser.Username, ""). + GetUserByUsername(context.Background(), notFoundUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(notFoundUser.Username, ""). + GetUser(context.Background(), notFoundUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -141,7 +142,7 @@ func (s *MmctlUnitTestSuite) TestAssignUsersCmd() { s.client. EXPECT(). - GetRoleByName("non-existent"). + GetRoleByName(context.Background(), "non-existent"). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, expectedError). Times(1) @@ -166,19 +167,19 @@ func (s *MmctlUnitTestSuite) TestAssignUsersCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser.Username, ""). + GetUserByEmail(context.Background(), mockUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Username, ""). + GetUserByUsername(context.Background(), mockUser.Username, ""). Return(mockUser, &model.Response{}, nil). Times(1) @@ -198,25 +199,25 @@ func (s *MmctlUnitTestSuite) TestAssignUsersCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(requestedUser, ""). + GetUserByEmail(context.Background(), requestedUser, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(requestedUser, ""). + GetUserByUsername(context.Background(), requestedUser, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(requestedUser, ""). + GetUser(context.Background(), requestedUser, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -242,19 +243,19 @@ func (s *MmctlUnitTestSuite) TestUnassignUsersCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Username, ""). + GetUserByEmail(context.Background(), mockUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Username, ""). + GetUserByUsername(context.Background(), mockUser.Username, ""). Return(mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(mockUser.Id, "system_user team_admin"). + UpdateUserRoles(context.Background(), mockUser.Id, "system_user team_admin"). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -285,38 +286,38 @@ func (s *MmctlUnitTestSuite) TestUnassignUsersCmd() { for _, user := range []*model.User{mockUser1, mockUser2} { s.client. EXPECT(). - GetUserByEmail(user.Username, ""). + GetUserByEmail(context.Background(), user.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(user.Username, ""). + GetUserByUsername(context.Background(), user.Username, ""). Return(user, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(user.Id, strings.TrimSpace(strings.ReplaceAll(user.Roles, roleName, ""))). + UpdateUserRoles(context.Background(), user.Id, strings.TrimSpace(strings.ReplaceAll(user.Roles, roleName, ""))). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) } s.client. EXPECT(). - GetUserByEmail(notFoundUser.Username, ""). + GetUserByEmail(context.Background(), notFoundUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(notFoundUser.Username, ""). + GetUserByUsername(context.Background(), notFoundUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(notFoundUser.Username, ""). + GetUser(context.Background(), notFoundUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -336,13 +337,13 @@ func (s *MmctlUnitTestSuite) TestUnassignUsersCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Username, ""). + GetUserByEmail(context.Background(), mockUser.Username, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Username, ""). + GetUserByUsername(context.Background(), mockUser.Username, ""). Return(mockUser, &model.Response{}, nil). Times(1) @@ -356,19 +357,19 @@ func (s *MmctlUnitTestSuite) TestUnassignUsersCmd() { s.client. EXPECT(). - GetUserByEmail(requestedUser, ""). + GetUserByEmail(context.Background(), requestedUser, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(requestedUser, ""). + GetUserByUsername(context.Background(), requestedUser, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(requestedUser, ""). + GetUser(context.Background(), requestedUser, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -392,7 +393,7 @@ func (s *MmctlUnitTestSuite) TestShowRoleCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) @@ -424,7 +425,7 @@ SchemeManaged false s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) @@ -454,7 +455,7 @@ Permissions edit_brand // showRoleCmdF will look up role by name s.client. EXPECT(). - GetRoleByName(commandArgBogus). + GetRoleByName(context.Background(), commandArgBogus). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, expectedError). Times(1) diff --git a/server/cmd/mmctl/commands/permissions.go b/server/cmd/mmctl/commands/permissions.go index 4e83339890..90781dda2d 100644 --- a/server/cmd/mmctl/commands/permissions.go +++ b/server/cmd/mmctl/commands/permissions.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "github.com/mattermost/mattermost-server/server/public/model" @@ -71,7 +72,7 @@ func init() { } func addPermissionsCmdF(c client.Client, cmd *cobra.Command, args []string) error { - role, _, err := c.GetRoleByName(args[0]) + role, _, err := c.GetRoleByName(context.TODO(), args[0]) if err != nil { return err } @@ -92,7 +93,7 @@ func addPermissionsCmdF(c client.Client, cmd *cobra.Command, args []string) erro Permissions: &newPermissions, } - if _, _, err = c.PatchRole(role.Id, &patchRole); err != nil { + if _, _, err = c.PatchRole(context.TODO(), role.Id, &patchRole); err != nil { return err } @@ -100,7 +101,7 @@ func addPermissionsCmdF(c client.Client, cmd *cobra.Command, args []string) erro } func removePermissionsCmdF(c client.Client, cmd *cobra.Command, args []string) error { - role, _, err := c.GetRoleByName(args[0]) + role, _, err := c.GetRoleByName(context.TODO(), args[0]) if err != nil { return err } @@ -131,7 +132,7 @@ func removePermissionsCmdF(c client.Client, cmd *cobra.Command, args []string) e Permissions: &newPermissionSet, } - if _, _, err = c.PatchRole(role.Id, &patchRole); err != nil { + if _, _, err = c.PatchRole(context.TODO(), role.Id, &patchRole); err != nil { return err } @@ -139,7 +140,7 @@ func removePermissionsCmdF(c client.Client, cmd *cobra.Command, args []string) e } func resetPermissionsCmdF(c client.Client, cmd *cobra.Command, args []string) error { - role, _, err := c.GetRoleByName(args[0]) + role, _, err := c.GetRoleByName(context.TODO(), args[0]) if err != nil { return err } @@ -153,7 +154,7 @@ func resetPermissionsCmdF(c client.Client, cmd *cobra.Command, args []string) er Permissions: &defaultRole.Permissions, } - role, _, err = c.PatchRole(role.Id, &patchRole) + role, _, err = c.PatchRole(context.TODO(), role.Id, &patchRole) if err != nil { return err } diff --git a/server/cmd/mmctl/commands/permissions_role.go b/server/cmd/mmctl/commands/permissions_role.go index a63bde9372..b7c0639469 100644 --- a/server/cmd/mmctl/commands/permissions_role.go +++ b/server/cmd/mmctl/commands/permissions_role.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "sort" "strings" @@ -146,7 +147,7 @@ func prettyRole(role *model.Role) string { } func showRoleCmdF(c client.Client, cmd *cobra.Command, args []string) error { - role, _, err := c.GetRoleByName(args[0]) + role, _, err := c.GetRoleByName(context.TODO(), args[0]) if err != nil { return err } @@ -157,7 +158,7 @@ func showRoleCmdF(c client.Client, cmd *cobra.Command, args []string) error { } func assignUsersCmdF(c client.Client, cmd *cobra.Command, args []string) error { - role, _, err := c.GetRoleByName(args[0]) + role, _, err := c.GetRoleByName(context.TODO(), args[0]) if err != nil { return err } @@ -186,7 +187,7 @@ func assignUsersCmdF(c client.Client, cmd *cobra.Command, args []string) error { userRoles := startingRoles userRoles = append(userRoles, role.Name) - _, err = c.UpdateUserRoles(user.Id, strings.Join(userRoles, " ")) + _, err = c.UpdateUserRoles(context.TODO(), user.Id, strings.Join(userRoles, " ")) if err != nil { return err } @@ -215,7 +216,7 @@ func unassignUsersCmdF(c client.Client, cmd *cobra.Command, args []string) error } if originalCount > len(userRoles) { - _, err := c.UpdateUserRoles(user.Id, strings.Join(userRoles, " ")) + _, err := c.UpdateUserRoles(context.TODO(), user.Id, strings.Join(userRoles, " ")) if err != nil { return err } diff --git a/server/cmd/mmctl/commands/permissions_test.go b/server/cmd/mmctl/commands/permissions_test.go index c3117f66ac..cc1a9ff9a1 100644 --- a/server/cmd/mmctl/commands/permissions_test.go +++ b/server/cmd/mmctl/commands/permissions_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" gomock "github.com/golang/mock/gomock" @@ -31,13 +32,13 @@ func (s *MmctlUnitTestSuite) TestAddPermissionsCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchRole(mockRole.Id, expectedPatch). + PatchRole(context.Background(), mockRole.Id, expectedPatch). Return(&model.Role{}, &model.Response{}, nil). Times(1) @@ -51,7 +52,7 @@ func (s *MmctlUnitTestSuite) TestAddPermissionsCmd() { s.client. EXPECT(). - GetRoleByName(gomock.Any()). + GetRoleByName(context.Background(), gomock.Any()). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, expectedError). Times(1) @@ -70,7 +71,7 @@ func (s *MmctlUnitTestSuite) TestAddPermissionsCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) @@ -82,7 +83,7 @@ func (s *MmctlUnitTestSuite) TestAddPermissionsCmd() { } s.client. EXPECT(). - PatchRole(mockRole.Id, expectedPatch). + PatchRole(context.Background(), mockRole.Id, expectedPatch). Return(&model.Role{}, &model.Response{}, nil). Times(1) args := []string{mockRole.Name, newPermission} @@ -106,12 +107,12 @@ func (s *MmctlUnitTestSuite) TestRemovePermissionsCmd() { } s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchRole(mockRole.Id, expectedPatch). + PatchRole(context.Background(), mockRole.Id, expectedPatch). Return(&model.Role{}, &model.Response{}, nil). Times(1) @@ -132,12 +133,12 @@ func (s *MmctlUnitTestSuite) TestRemovePermissionsCmd() { } s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchRole(mockRole.Id, expectedPatch). + PatchRole(context.Background(), mockRole.Id, expectedPatch). Return(&model.Role{}, &model.Response{}, nil). Times(1) @@ -158,12 +159,12 @@ func (s *MmctlUnitTestSuite) TestRemovePermissionsCmd() { } s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(mockRole, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchRole(mockRole.Id, expectedPatch). + PatchRole(context.Background(), mockRole.Id, expectedPatch). Return(&model.Role{}, &model.Response{}, nil). Times(1) @@ -180,7 +181,7 @@ func (s *MmctlUnitTestSuite) TestRemovePermissionsCmd() { mockError := errors.New("role_not_found") s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, mockError). Times(1) @@ -200,7 +201,7 @@ func (s *MmctlUnitTestSuite) TestResetPermissionsCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, mockError). Times(1) @@ -218,7 +219,7 @@ func (s *MmctlUnitTestSuite) TestResetPermissionsCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(&mockRole, &model.Response{}, nil). Times(1) @@ -241,13 +242,13 @@ func (s *MmctlUnitTestSuite) TestResetPermissionsCmd() { s.client. EXPECT(). - GetRoleByName(mockRole.Name). + GetRoleByName(context.Background(), mockRole.Name). Return(&mockRole, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PatchRole(mockRole.Id, expectedPatch). + PatchRole(context.Background(), mockRole.Id, expectedPatch). Return(&model.Role{}, &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/plugin.go b/server/cmd/mmctl/commands/plugin.go index bc187c34d8..9298fa8cbe 100644 --- a/server/cmd/mmctl/commands/plugin.go +++ b/server/cmd/mmctl/commands/plugin.go @@ -4,6 +4,7 @@ package commands import ( + "context" "os" "github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/client" @@ -101,9 +102,9 @@ func pluginAddCmdF(c client.Client, cmd *cobra.Command, args []string) error { } if force { - _, _, err = c.UploadPluginForced(fileReader) + _, _, err = c.UploadPluginForced(context.TODO(), fileReader) } else { - _, _, err = c.UploadPlugin(fileReader) + _, _, err = c.UploadPlugin(context.TODO(), fileReader) } if err != nil { @@ -122,7 +123,7 @@ func pluginInstallURLCmdF(c client.Client, cmd *cobra.Command, args []string) er var multiErr *multierror.Error for _, plugin := range args { - manifest, _, err := c.InstallPluginFromURL(plugin, force) + manifest, _, err := c.InstallPluginFromURL(context.TODO(), plugin, force) if err != nil { printer.PrintError("Unable to install plugin from URL \"" + plugin + "\". Error: " + err.Error()) multiErr = multierror.Append(multiErr, err) @@ -136,7 +137,7 @@ func pluginInstallURLCmdF(c client.Client, cmd *cobra.Command, args []string) er func pluginDeleteCmdF(c client.Client, cmd *cobra.Command, args []string) error { for _, plugin := range args { - if _, err := c.RemovePlugin(plugin); err != nil { + if _, err := c.RemovePlugin(context.TODO(), plugin); err != nil { printer.PrintError("Unable to delete plugin: " + plugin + ". Error: " + err.Error()) } else { printer.Print("Deleted plugin: " + plugin) @@ -148,7 +149,7 @@ func pluginDeleteCmdF(c client.Client, cmd *cobra.Command, args []string) error func pluginEnableCmdF(c client.Client, cmd *cobra.Command, args []string) error { for _, plugin := range args { - if _, err := c.EnablePlugin(plugin); err != nil { + if _, err := c.EnablePlugin(context.TODO(), plugin); err != nil { printer.PrintError("Unable to enable plugin: " + plugin + ". Error: " + err.Error()) } else { printer.Print("Enabled plugin: " + plugin) @@ -160,7 +161,7 @@ func pluginEnableCmdF(c client.Client, cmd *cobra.Command, args []string) error func pluginDisableCmdF(c client.Client, cmd *cobra.Command, args []string) error { for _, plugin := range args { - if _, err := c.DisablePlugin(plugin); err != nil { + if _, err := c.DisablePlugin(context.TODO(), plugin); err != nil { printer.PrintError("Unable to disable plugin: " + plugin + ". Error: " + err.Error()) } else { printer.Print("Disabled plugin: " + plugin) @@ -171,7 +172,7 @@ func pluginDisableCmdF(c client.Client, cmd *cobra.Command, args []string) error } func pluginListCmdF(c client.Client, cmd *cobra.Command, args []string) error { - pluginsResp, _, err := c.GetPlugins() + pluginsResp, _, err := c.GetPlugins(context.TODO()) if err != nil { return errors.New("Unable to list plugins. Error: " + err.Error()) } diff --git a/server/cmd/mmctl/commands/plugin_marketplace.go b/server/cmd/mmctl/commands/plugin_marketplace.go index 8a736072bb..e62aedf439 100644 --- a/server/cmd/mmctl/commands/plugin_marketplace.go +++ b/server/cmd/mmctl/commands/plugin_marketplace.go @@ -4,6 +4,8 @@ package commands import ( + "context" + "github.com/mattermost/mattermost-server/server/public/model" "github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/client" @@ -67,7 +69,7 @@ func pluginMarketplaceInstallCmdF(c client.Client, _ *cobra.Command, args []stri id := args[0] pluginRequest := &model.InstallMarketplacePluginRequest{Id: id} - manifest, _, err := c.InstallMarketplacePlugin(pluginRequest) + manifest, _, err := c.InstallMarketplacePlugin(context.TODO(), pluginRequest) if err != nil { return errors.Wrap(err, "couldn't install plugin from marketplace") } @@ -96,7 +98,7 @@ func pluginMarketplaceListCmdF(c client.Client, cmd *cobra.Command, _ []string) LocalOnly: localOnly, } - plugins, _, err := c.GetMarketplacePlugins(pluginFilter) + plugins, _, err := c.GetMarketplacePlugins(context.TODO(), pluginFilter) if err != nil { return errors.Wrap(err, "Failed to fetch plugins") } diff --git a/server/cmd/mmctl/commands/plugin_marketplace_test.go b/server/cmd/mmctl/commands/plugin_marketplace_test.go index b32ea9df39..5c47429937 100644 --- a/server/cmd/mmctl/commands/plugin_marketplace_test.go +++ b/server/cmd/mmctl/commands/plugin_marketplace_test.go @@ -4,6 +4,8 @@ package commands import ( + "context" + "github.com/mattermost/mattermost-server/server/public/model" "github.com/pkg/errors" @@ -31,7 +33,7 @@ func (s *MmctlUnitTestSuite) TestPluginMarketplaceInstallCmd() { s.client. EXPECT(). - InstallMarketplacePlugin(pluginRequest). + InstallMarketplacePlugin(context.Background(), pluginRequest). Return(manifest, &model.Response{}, nil). Times(1) @@ -51,7 +53,7 @@ func (s *MmctlUnitTestSuite) TestPluginMarketplaceInstallCmd() { s.client. EXPECT(). - InstallMarketplacePlugin(pluginRequest). + InstallMarketplacePlugin(context.Background(), pluginRequest). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -75,7 +77,7 @@ func (s *MmctlUnitTestSuite) TestPluginMarketplaceListCmd() { s.client. EXPECT(). - GetMarketplacePlugins(pluginFilter). + GetMarketplacePlugins(context.Background(), pluginFilter). Return(plugins, &model.Response{}, nil). Times(1) @@ -97,19 +99,19 @@ func (s *MmctlUnitTestSuite) TestPluginMarketplaceListCmd() { s.client. EXPECT(). - GetMarketplacePlugins(&model.MarketplacePluginFilter{Page: 0, PerPage: 1}). + GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{Page: 0, PerPage: 1}). Return([]*model.MarketplacePlugin{mockPlugin1}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetMarketplacePlugins(&model.MarketplacePluginFilter{Page: 1, PerPage: 1}). + GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{Page: 1, PerPage: 1}). Return([]*model.MarketplacePlugin{mockPlugin2}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetMarketplacePlugins(&model.MarketplacePluginFilter{Page: 2, PerPage: 1}). + GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{Page: 2, PerPage: 1}). Return([]*model.MarketplacePlugin{}, &model.Response{}, nil). Times(1) @@ -129,7 +131,7 @@ func (s *MmctlUnitTestSuite) TestPluginMarketplaceListCmd() { s.client. EXPECT(). - GetMarketplacePlugins(&model.MarketplacePluginFilter{Page: 0, PerPage: 200}). + GetMarketplacePlugins(context.Background(), &model.MarketplacePluginFilter{Page: 0, PerPage: 200}). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -153,7 +155,7 @@ func (s *MmctlUnitTestSuite) TestPluginMarketplaceListCmd() { s.client. EXPECT(). - GetMarketplacePlugins(pluginFilter). + GetMarketplacePlugins(context.Background(), pluginFilter). Return(plugins, &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/plugin_test.go b/server/cmd/mmctl/commands/plugin_test.go index 41c9516f31..b961e7d5bd 100644 --- a/server/cmd/mmctl/commands/plugin_test.go +++ b/server/cmd/mmctl/commands/plugin_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "io/ioutil" "net/http" "os" @@ -30,7 +31,7 @@ func (s *MmctlUnitTestSuite) TestPluginAddCmd() { s.client. EXPECT(). - UploadPlugin(gomock.AssignableToTypeOf(tmpFile)). + UploadPlugin(context.Background(), gomock.AssignableToTypeOf(tmpFile)). Return(&model.Manifest{}, &model.Response{}, nil). Times(1) @@ -50,7 +51,7 @@ func (s *MmctlUnitTestSuite) TestPluginAddCmd() { s.client. EXPECT(). - UploadPluginForced(gomock.AssignableToTypeOf(tmpFile)). + UploadPluginForced(context.Background(), gomock.AssignableToTypeOf(tmpFile)). Return(&model.Manifest{}, &model.Response{}, nil). Times(1) @@ -81,7 +82,7 @@ func (s *MmctlUnitTestSuite) TestPluginAddCmd() { s.client. EXPECT(). - UploadPlugin(gomock.AssignableToTypeOf(tmpFile)). + UploadPlugin(context.Background(), gomock.AssignableToTypeOf(tmpFile)). Return(&model.Manifest{}, &model.Response{}, mockError). Times(1) @@ -103,13 +104,13 @@ func (s *MmctlUnitTestSuite) TestPluginAddCmd() { if arg == "fail" { s.client. EXPECT(). - UploadPlugin(gomock.AssignableToTypeOf(tmpFile)). + UploadPlugin(context.Background(), gomock.AssignableToTypeOf(tmpFile)). Return(nil, &model.Response{}, mockError). Times(1) } else { s.client. EXPECT(). - UploadPlugin(gomock.AssignableToTypeOf(tmpFile)). + UploadPlugin(context.Background(), gomock.AssignableToTypeOf(tmpFile)). Return(&model.Manifest{}, &model.Response{}, nil). Times(1) } @@ -138,13 +139,13 @@ func (s *MmctlUnitTestSuite) TestPluginInstallUrlCmd() { s.client. EXPECT(). - InstallPluginFromURL(pluginURL1, false). + InstallPluginFromURL(context.Background(), pluginURL1, false). Return(manifest1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - InstallPluginFromURL(pluginURL2, false). + InstallPluginFromURL(context.Background(), pluginURL2, false). Return(manifest2, &model.Response{}, nil). Times(1) @@ -164,7 +165,7 @@ func (s *MmctlUnitTestSuite) TestPluginInstallUrlCmd() { s.client. EXPECT(). - InstallPluginFromURL(pluginURL, true). + InstallPluginFromURL(context.Background(), pluginURL, true). Return(manifest, &model.Response{}, nil). Times(1) @@ -188,13 +189,13 @@ func (s *MmctlUnitTestSuite) TestPluginInstallUrlCmd() { s.client. EXPECT(). - InstallPluginFromURL(pluginURL1, false). + InstallPluginFromURL(context.Background(), pluginURL1, false). Return(manifest1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - InstallPluginFromURL(pluginURL2, false). + InstallPluginFromURL(context.Background(), pluginURL2, false). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -217,7 +218,7 @@ func (s *MmctlUnitTestSuite) TestPluginDisableCmd() { s.client. EXPECT(). - DisablePlugin(arg). + DisablePlugin(context.Background(), arg). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -235,7 +236,7 @@ func (s *MmctlUnitTestSuite) TestPluginDisableCmd() { s.client. EXPECT(). - DisablePlugin(arg). + DisablePlugin(context.Background(), arg). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -255,13 +256,13 @@ func (s *MmctlUnitTestSuite) TestPluginDisableCmd() { if strings.HasPrefix(arg, "fail") { s.client. EXPECT(). - DisablePlugin(arg). + DisablePlugin(context.Background(), arg). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) } else { s.client. EXPECT(). - DisablePlugin(arg). + DisablePlugin(context.Background(), arg). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) } @@ -285,7 +286,7 @@ func (s *MmctlUnitTestSuite) TestPluginEnableCmd() { s.client. EXPECT(). - EnablePlugin(pluginArg). + EnablePlugin(context.Background(), pluginArg). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -303,7 +304,7 @@ func (s *MmctlUnitTestSuite) TestPluginEnableCmd() { for _, plugin := range plugins { s.client. EXPECT(). - EnablePlugin(plugin). + EnablePlugin(context.Background(), plugin). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) } @@ -324,7 +325,7 @@ func (s *MmctlUnitTestSuite) TestPluginEnableCmd() { s.client. EXPECT(). - EnablePlugin(pluginArg). + EnablePlugin(context.Background(), pluginArg). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockErr). Times(1) @@ -347,7 +348,7 @@ func (s *MmctlUnitTestSuite) TestPluginEnableCmd() { for _, plugin := range okPlugins { s.client. EXPECT(). - EnablePlugin(plugin). + EnablePlugin(context.Background(), plugin). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) } @@ -355,7 +356,7 @@ func (s *MmctlUnitTestSuite) TestPluginEnableCmd() { for _, plugin := range failPlugins { s.client. EXPECT(). - EnablePlugin(plugin). + EnablePlugin(context.Background(), plugin). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockErr). Times(1) } @@ -424,7 +425,7 @@ func (s *MmctlUnitTestSuite) TestPluginListCmd() { s.client. EXPECT(). - GetPlugins(). + GetPlugins(context.Background()). Return(mockList, &model.Response{}, nil). Times(1) @@ -499,7 +500,7 @@ func (s *MmctlUnitTestSuite) TestPluginListCmd() { s.client. EXPECT(). - GetPlugins(). + GetPlugins(context.Background()). Return(mockList, &model.Response{}, nil). Times(1) @@ -525,7 +526,7 @@ func (s *MmctlUnitTestSuite) TestPluginListCmd() { s.client. EXPECT(). - GetPlugins(). + GetPlugins(context.Background()). Return(nil, &model.Response{}, mockError). Times(1) @@ -543,7 +544,7 @@ func (s *MmctlUnitTestSuite) TestPluginDeleteCmd() { s.client. EXPECT(). - RemovePlugin(args). + RemovePlugin(context.Background(), args). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -560,7 +561,7 @@ func (s *MmctlUnitTestSuite) TestPluginDeleteCmd() { s.client. EXPECT(). - RemovePlugin(args). + RemovePlugin(context.Background(), args). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -586,25 +587,25 @@ func (s *MmctlUnitTestSuite) TestPluginDeleteCmd() { s.client. EXPECT(). - RemovePlugin(args[0]). + RemovePlugin(context.Background(), args[0]). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - RemovePlugin(args[1]). + RemovePlugin(context.Background(), args[1]). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockErrors[0]). Times(1) s.client. EXPECT(). - RemovePlugin(args[2]). + RemovePlugin(context.Background(), args[2]). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockErrors[1]). Times(1) s.client. EXPECT(). - RemovePlugin(args[3]). + RemovePlugin(context.Background(), args[3]). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/post.go b/server/cmd/mmctl/commands/post.go index 25fb2d8b36..3db6505704 100644 --- a/server/cmd/mmctl/commands/post.go +++ b/server/cmd/mmctl/commands/post.go @@ -4,6 +4,7 @@ package commands import ( + "context" "encoding/json" "fmt" "time" @@ -70,7 +71,7 @@ func postCreateCmdF(c client.Client, cmd *cobra.Command, args []string) error { replyTo, _ := cmd.Flags().GetString("reply-to") if replyTo != "" { - replyToPost, _, err := c.GetPost(replyTo, "") + replyToPost, _, err := c.GetPost(context.TODO(), replyTo, "") if err != nil { return err } @@ -96,7 +97,7 @@ func postCreateCmdF(c client.Client, cmd *cobra.Command, args []string) error { return fmt.Errorf("could not decode post: %w", err) } - if _, err := c.DoAPIPost(url, data); err != nil { + if _, err := c.DoAPIPost(context.TODO(), url, data); err != nil { return fmt.Errorf("could not create post: %s", err.Error()) } return nil @@ -124,7 +125,7 @@ func printPost(c client.Client, post *model.Post, usernames map[string]string, s if usernames[post.UserId] != "" { username = usernames[post.UserId] } else { - user, _, err := c.GetUser(post.UserId, "") + user, _, err := c.GetUser(context.TODO(), post.UserId, "") if err != nil { username = post.UserId } else { @@ -149,7 +150,7 @@ func printPost(c client.Client, post *model.Post, usernames map[string]string, s func getPostList(client client.Client, channelID, since string, perPage int) (*model.PostList, *model.Response, error) { if since == "" { - return client.GetPostsForChannel(channelID, 0, perPage, "", false, false) + return client.GetPostsForChannel(context.TODO(), channelID, 0, perPage, "", false, false) } sinceTime, err := time.Parse(ISO8601Layout, since) @@ -158,7 +159,7 @@ func getPostList(client client.Client, channelID, since string, perPage int) (*m } sinceTimeMillis := model.GetMillisForTime(sinceTime) - return client.GetPostsSince(channelID, sinceTimeMillis, false) + return client.GetPostsSince(context.TODO(), channelID, sinceTimeMillis, false) } func postListCmdF(c client.Client, cmd *cobra.Command, args []string) error { diff --git a/server/cmd/mmctl/commands/post_test.go b/server/cmd/mmctl/commands/post_test.go index c9cf1ff266..ea95a263b8 100644 --- a/server/cmd/mmctl/commands/post_test.go +++ b/server/cmd/mmctl/commands/post_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "time" "github.com/mattermost/mattermost-server/server/public/model" @@ -41,7 +42,7 @@ func (s *MmctlUnitTestSuite) TestPostCreateCmdF() { s.client. EXPECT(). - GetPost(replyToArg, ""). + GetPost(context.Background(), replyToArg, ""). Return(nil, &model.Response{}, errors.New("some-error")). Times(1) @@ -62,13 +63,13 @@ func (s *MmctlUnitTestSuite) TestPostCreateCmdF() { s.client. EXPECT(). - GetChannel(channelArg, ""). + GetChannel(context.Background(), channelArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DoAPIPost("/posts?set_online=false", data). + DoAPIPost(context.Background(), "/posts?set_online=false", data). Return(nil, errors.New("some-error")). Times(1) @@ -89,13 +90,13 @@ func (s *MmctlUnitTestSuite) TestPostCreateCmdF() { s.client. EXPECT(). - GetChannel(channelArg, ""). + GetChannel(context.Background(), channelArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DoAPIPost("/posts?set_online=false", data). + DoAPIPost(context.Background(), "/posts?set_online=false", data). Return(nil, nil). Times(1) @@ -121,19 +122,19 @@ func (s *MmctlUnitTestSuite) TestPostCreateCmdF() { s.client. EXPECT(). - GetChannel(channelArg, ""). + GetChannel(context.Background(), channelArg, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPost(replyToArg, ""). + GetPost(context.Background(), replyToArg, ""). Return(&mockReplyTo, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DoAPIPost("/posts?set_online=false", data). + DoAPIPost(context.Background(), "/posts?set_online=false", data). Return(nil, nil). Times(1) @@ -160,7 +161,7 @@ func (s *MmctlUnitTestSuite) TestPostListCmdF() { s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) @@ -185,19 +186,19 @@ func (s *MmctlUnitTestSuite) TestPostListCmdF() { s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPostsForChannel(channelID, 0, 1, "", false, false). + GetPostsForChannel(context.Background(), channelID, 0, 1, "", false, false). Return(mockPostList, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(userID, ""). + GetUser(context.Background(), userID, ""). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -233,19 +234,19 @@ func (s *MmctlUnitTestSuite) TestPostListCmdF() { s.client. EXPECT(). - GetChannel(channelName, ""). + GetChannel(context.Background(), channelName, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetPostsSince(channelID, sinceTimeMillis, false). + GetPostsSince(context.Background(), channelID, sinceTimeMillis, false). Return(mockPostList, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(userID, ""). + GetUser(context.Background(), userID, ""). Return(&mockUser, &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/roles.go b/server/cmd/mmctl/commands/roles.go index ba6c268a8e..f2baaab892 100644 --- a/server/cmd/mmctl/commands/roles.go +++ b/server/cmd/mmctl/commands/roles.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "strings" @@ -78,7 +79,7 @@ func rolesSystemAdminCmdF(c client.Client, _ *cobra.Command, args []string) erro if !systemAdmin { roles = append(roles, model.SystemAdminRoleId) - if _, err := c.UpdateUserRoles(user.Id, strings.Join(roles, " ")); err != nil { + if _, err := c.UpdateUserRoles(context.TODO(), user.Id, strings.Join(roles, " ")); err != nil { updateErr := fmt.Errorf("can't update roles for user %q: %w", args[i], err) errs = multierror.Append(errs, updateErr) printer.PrintError(updateErr.Error()) @@ -117,7 +118,7 @@ func rolesMemberCmdF(c client.Client, _ *cobra.Command, args []string) error { } if shouldRemoveSysadmin { - if _, err := c.UpdateUserRoles(user.Id, strings.Join(newRoles, " ")); err != nil { + if _, err := c.UpdateUserRoles(context.TODO(), user.Id, strings.Join(newRoles, " ")); err != nil { updateErr := fmt.Errorf("can't update roles for user %q: %w", args[i], err) errs = multierror.Append(errs, updateErr) printer.PrintError(updateErr.Error()) diff --git a/server/cmd/mmctl/commands/roles_test.go b/server/cmd/mmctl/commands/roles_test.go index a71644ee4f..266ef574d3 100644 --- a/server/cmd/mmctl/commands/roles_test.go +++ b/server/cmd/mmctl/commands/roles_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "net/http" @@ -24,13 +25,13 @@ func (s *MmctlUnitTestSuite) TestMakeAdminCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Email, ""). + GetUserByEmail(context.Background(), mockUser.Email, ""). Return(mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(mockUser.Id, newRoles). + UpdateUserRoles(context.Background(), mockUser.Id, newRoles). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -50,7 +51,7 @@ func (s *MmctlUnitTestSuite) TestMakeAdminCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Email, ""). + GetUserByEmail(context.Background(), mockUser.Email, ""). Return(mockUser, &model.Response{}, nil). Times(1) @@ -68,19 +69,19 @@ func (s *MmctlUnitTestSuite) TestMakeAdminCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(emailArg, ""). + GetUserByUsername(context.Background(), emailArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(emailArg, ""). + GetUser(context.Background(), emailArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -100,13 +101,13 @@ func (s *MmctlUnitTestSuite) TestMakeAdminCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Email, ""). + GetUserByEmail(context.Background(), mockUser.Email, ""). Return(mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(mockUser.Id, newRoles). + UpdateUserRoles(context.Background(), mockUser.Id, newRoles). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) @@ -127,13 +128,13 @@ func (s *MmctlUnitTestSuite) TestMakeMemberCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Email, ""). + GetUserByEmail(context.Background(), mockUser.Email, ""). Return(mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(mockUser.Id, "system_user"). + UpdateUserRoles(context.Background(), mockUser.Id, "system_user"). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -152,7 +153,7 @@ func (s *MmctlUnitTestSuite) TestMakeMemberCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Email, ""). + GetUserByEmail(context.Background(), mockUser.Email, ""). Return(mockUser, &model.Response{}, nil). Times(1) @@ -170,13 +171,13 @@ func (s *MmctlUnitTestSuite) TestMakeMemberCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Email, ""). + GetUserByEmail(context.Background(), mockUser.Email, ""). Return(mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(mockUser.Id, "system_user"). + UpdateUserRoles(context.Background(), mockUser.Id, "system_user"). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) @@ -195,19 +196,19 @@ func (s *MmctlUnitTestSuite) TestMakeMemberCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(emailArg, ""). + GetUserByUsername(context.Background(), emailArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(emailArg, ""). + GetUser(context.Background(), emailArg, ""). Return(nil, &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/saml.go b/server/cmd/mmctl/commands/saml.go index 17df6dcd7b..a4d5e2a0de 100644 --- a/server/cmd/mmctl/commands/saml.go +++ b/server/cmd/mmctl/commands/saml.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/client" @@ -59,7 +60,7 @@ func samlAuthDataResetCmdF(c client.Client, cmd *cobra.Command, args []string) e } } - numAffected, _, err := c.ResetSamlAuthDataToEmail(includeDeleted, dryRun, userIDs) + numAffected, _, err := c.ResetSamlAuthDataToEmail(context.TODO(), includeDeleted, dryRun, userIDs) if err != nil { return err } diff --git a/server/cmd/mmctl/commands/saml_test.go b/server/cmd/mmctl/commands/saml_test.go index 4fb604e5da..28153016ea 100644 --- a/server/cmd/mmctl/commands/saml_test.go +++ b/server/cmd/mmctl/commands/saml_test.go @@ -4,6 +4,8 @@ package commands import ( + "context" + "github.com/mattermost/mattermost-server/server/public/model" "github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/printer" @@ -27,7 +29,7 @@ func (s *MmctlUnitTestSuite) TestSamlAuthDataReset() { s.client. EXPECT(). - ResetSamlAuthDataToEmail(false, false, []string{}). + ResetSamlAuthDataToEmail(context.Background(), false, false, []string{}). Return(int64(1), &model.Response{}, nil). Times(1) @@ -47,7 +49,7 @@ func (s *MmctlUnitTestSuite) TestSamlAuthDataReset() { s.client. EXPECT(). - ResetSamlAuthDataToEmail(false, true, []string{}). + ResetSamlAuthDataToEmail(context.Background(), false, true, []string{}). Return(int64(1), &model.Response{}, nil). Times(1) @@ -63,7 +65,7 @@ func (s *MmctlUnitTestSuite) TestSamlAuthDataReset() { users := []string{"user1"} s.client. EXPECT(). - ResetSamlAuthDataToEmail(false, false, users). + ResetSamlAuthDataToEmail(context.Background(), false, false, users). Return(int64(1), &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/sampledata.go b/server/cmd/mmctl/commands/sampledata.go index 8dc0c8f151..02e12dc0d0 100644 --- a/server/cmd/mmctl/commands/sampledata.go +++ b/server/cmd/mmctl/commands/sampledata.go @@ -5,6 +5,7 @@ package commands import ( + "context" "encoding/json" "fmt" "io/ioutil" @@ -93,7 +94,7 @@ func uploadAndProcess(c client.Client, zipPath string, isLocal bool) error { } // create session - us, _, err := c.CreateUpload(&model.UploadSession{ + us, _, err := c.CreateUpload(context.TODO(), &model.UploadSession{ Filename: info.Name(), FileSize: info.Size(), Type: model.UploadTypeImport, @@ -106,7 +107,7 @@ func uploadAndProcess(c client.Client, zipPath string, isLocal bool) error { printer.PrintT("Upload session successfully created, ID: {{.Id}} ", us) // upload file - finfo, _, err := c.UploadData(us.Id, zipFile) + finfo, _, err := c.UploadData(context.TODO(), us.Id, zipFile) if err != nil { return fmt.Errorf("failed to upload data: %w", err) } @@ -114,7 +115,7 @@ func uploadAndProcess(c client.Client, zipPath string, isLocal bool) error { printer.PrintT("Import file successfully uploaded, name: {{.Name}}", finfo) // process - job, _, err := c.CreateJob(&model.Job{ + job, _, err := c.CreateJob(context.TODO(), &model.Job{ Type: model.JobTypeImportProcess, Data: map[string]string{ "import_file": us.Id + "_" + finfo.Name, @@ -127,7 +128,7 @@ func uploadAndProcess(c client.Client, zipPath string, isLocal bool) error { printer.PrintT("Import process job successfully created, ID: {{.Id}}", job) for { - job, _, err = c.GetJob(job.Id) + job, _, err = c.GetJob(context.TODO(), job.Id) if err != nil { return fmt.Errorf("failed to get import job status: %w", err) } diff --git a/server/cmd/mmctl/commands/system.go b/server/cmd/mmctl/commands/system.go index 028741f5ba..9d1817cccf 100644 --- a/server/cmd/mmctl/commands/system.go +++ b/server/cmd/mmctl/commands/system.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "github.com/pkg/errors" @@ -80,7 +81,7 @@ func init() { func getBusyCmdF(c client.Client, cmd *cobra.Command, _ []string) error { printer.SetSingle(true) - sbs, _, err := c.GetServerBusy() + sbs, _, err := c.GetServerBusy(context.TODO()) if err != nil { return fmt.Errorf("unable to get busy state: %w", err) } @@ -96,7 +97,7 @@ func setBusyCmdF(c client.Client, cmd *cobra.Command, args []string) error { return errors.New("seconds must be a number > 0") } - _, err = c.SetServerBusy(int(seconds)) + _, err = c.SetServerBusy(context.TODO(), int(seconds)) if err != nil { return fmt.Errorf("unable to set busy state: %w", err) } @@ -108,7 +109,7 @@ func setBusyCmdF(c client.Client, cmd *cobra.Command, args []string) error { func clearBusyCmdF(c client.Client, cmd *cobra.Command, _ []string) error { printer.SetSingle(true) - _, err := c.ClearServerBusy() + _, err := c.ClearServerBusy(context.TODO()) if err != nil { return fmt.Errorf("unable to clear busy state: %w", err) } @@ -122,7 +123,7 @@ func systemVersionCmdF(c client.Client, cmd *cobra.Command, _ []string) error { // use the initial "withClient" connection information as local // mode doesn't need to log in, so we use an endpoint that will // always return a valid response - _, resp, err := c.GetPing() + _, resp, err := c.GetPing(context.TODO()) if err != nil { return fmt.Errorf("unable to fetch server version: %w", err) } @@ -134,7 +135,7 @@ func systemVersionCmdF(c client.Client, cmd *cobra.Command, _ []string) error { func systemStatusCmdF(c client.Client, cmd *cobra.Command, _ []string) error { printer.SetSingle(true) - status, _, err := c.GetPingWithFullServerStatus() + status, _, err := c.GetPingWithFullServerStatus(context.TODO()) if err != nil { return fmt.Errorf("unable to fetch server status: %w", err) } diff --git a/server/cmd/mmctl/commands/system_test.go b/server/cmd/mmctl/commands/system_test.go index 7c8efdc58f..326fceb401 100644 --- a/server/cmd/mmctl/commands/system_test.go +++ b/server/cmd/mmctl/commands/system_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" "strconv" "time" @@ -23,7 +24,7 @@ func (s *MmctlUnitTestSuite) TestGetBusyCmd() { s.client. EXPECT(). - GetServerBusy(). + GetServerBusy(context.Background()). Return(sbs, &model.Response{}, nil). Times(1) @@ -42,7 +43,7 @@ func (s *MmctlUnitTestSuite) TestGetBusyCmd() { s.client. EXPECT(). - GetServerBusy(). + GetServerBusy(context.Background()). Return(sbs, &model.Response{}, nil). Times(1) @@ -57,7 +58,7 @@ func (s *MmctlUnitTestSuite) TestGetBusyCmd() { printer.Clean() s.client. EXPECT(). - GetServerBusy(). + GetServerBusy(context.Background()). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) @@ -78,7 +79,7 @@ func (s *MmctlUnitTestSuite) TestSetBusyCmd() { s.client. EXPECT(). - SetServerBusy(minutes*60). + SetServerBusy(context.Background(), minutes*60). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -116,7 +117,7 @@ func (s *MmctlUnitTestSuite) TestClearBusyCmd() { printer.Clean() s.client. EXPECT(). - ClearServerBusy(). + ClearServerBusy(context.Background()). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -131,7 +132,7 @@ func (s *MmctlUnitTestSuite) TestClearBusyCmd() { printer.Clean() s.client. EXPECT(). - ClearServerBusy(). + ClearServerBusy(context.Background()). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) @@ -149,7 +150,7 @@ func (s *MmctlUnitTestSuite) TestServerVersionCmd() { expectedVersion := "1.23.4.dev" s.client. EXPECT(). - GetPing(). + GetPing(context.Background()). Return("", &model.Response{ServerVersion: expectedVersion}, nil). Times(1) @@ -165,7 +166,7 @@ func (s *MmctlUnitTestSuite) TestServerVersionCmd() { s.client. EXPECT(). - GetPing(). + GetPing(context.Background()). Return("", &model.Response{}, errors.New("mock error")). Times(1) @@ -183,7 +184,7 @@ func (s *MmctlUnitTestSuite) TestServerStatusCmd() { expectedStatus := map[string]string{"status": "OK"} s.client. EXPECT(). - GetPingWithFullServerStatus(). + GetPingWithFullServerStatus(context.Background()). Return(expectedStatus, &model.Response{}, nil). Times(1) @@ -199,7 +200,7 @@ func (s *MmctlUnitTestSuite) TestServerStatusCmd() { s.client. EXPECT(). - GetPingWithFullServerStatus(). + GetPingWithFullServerStatus(context.Background()). Return(nil, &model.Response{}, errors.New("mock error")). Times(1) diff --git a/server/cmd/mmctl/commands/team.go b/server/cmd/mmctl/commands/team.go index 8495819b8d..822cbd7e11 100644 --- a/server/cmd/mmctl/commands/team.go +++ b/server/cmd/mmctl/commands/team.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" "sort" @@ -164,7 +165,7 @@ func createTeamCmdF(c client.Client, cmd *cobra.Command, args []string) error { AllowOpenInvite: allowOpenInvite, } - newTeam, _, err := c.CreateTeam(team) + newTeam, _, err := c.CreateTeam(context.TODO(), team) if err != nil { return errors.New("Team creation failed: " + err.Error()) } @@ -175,7 +176,7 @@ func createTeamCmdF(c client.Client, cmd *cobra.Command, args []string) error { } func deleteTeam(c client.Client, team *model.Team) (*model.Response, error) { - return c.PermanentDeleteTeam(team.Id) + return c.PermanentDeleteTeam(context.TODO(), team.Id) } func archiveTeamsCmdF(c client.Client, cmd *cobra.Command, args []string) error { @@ -192,7 +193,7 @@ func archiveTeamsCmdF(c client.Client, cmd *cobra.Command, args []string) error printer.PrintError("Unable to find team '" + args[i] + "'") continue } - if _, err := c.SoftDeleteTeam(team.Id); err != nil { + if _, err := c.SoftDeleteTeam(context.TODO(), team.Id); err != nil { printer.PrintError("Unable to archive team '" + team.Name + "' error: " + err.Error()) } else { printer.PrintT("Archived team '{{.Name}}'", team) @@ -205,7 +206,7 @@ func archiveTeamsCmdF(c client.Client, cmd *cobra.Command, args []string) error func listTeamsCmdF(c client.Client, cmd *cobra.Command, args []string) error { page := 0 for { - teams, _, err := c.GetAllTeams("", page, APILimitMaximum) + teams, _, err := c.GetAllTeams(context.TODO(), "", page, APILimitMaximum) if err != nil { return err } @@ -232,7 +233,7 @@ func searchTeamCmdF(c client.Client, cmd *cobra.Command, args []string) error { var teams []*model.Team for _, searchTerm := range args { - foundTeams, _, err := c.SearchTeams(&model.TeamSearch{Term: searchTerm}) + foundTeams, _, err := c.SearchTeams(context.TODO(), &model.TeamSearch{Term: searchTerm}) if err != nil { return err } @@ -290,7 +291,7 @@ func renameTeamCmdF(c client.Client, cmd *cobra.Command, args []string) error { team.DisplayName = newDisplayName // Using UpdateTeam API Method to rename team - _, _, err := c.UpdateTeam(team) + _, _, err := c.UpdateTeam(context.TODO(), team) if err != nil { return errors.New("Cannot rename team '" + oldTeamName + "', error : " + err.Error()) } @@ -348,7 +349,7 @@ func modifyTeamsCmdF(c client.Client, cmd *cobra.Command, args []string) error { printer.PrintError("Unable to find team '" + args[i] + "'") continue } - if updatedTeam, _, err := c.UpdateTeamPrivacy(team.Id, privacy); err != nil { + if updatedTeam, _, err := c.UpdateTeamPrivacy(context.TODO(), team.Id, privacy); err != nil { printer.PrintError("Unable to modify team '" + team.Name + "' error: " + err.Error()) } else { printer.PrintT("Modified team '{{.Name}}'", updatedTeam) @@ -367,7 +368,7 @@ func restoreTeamsCmdF(c client.Client, cmd *cobra.Command, args []string) error printer.PrintError("Unable to find team '" + args[i] + "'") continue } - if rteam, _, err := c.RestoreTeam(team.Id); err != nil { + if rteam, _, err := c.RestoreTeam(context.TODO(), team.Id); err != nil { result = multierror.Append(result, fmt.Errorf("unable to restore team '%s' error: %w", team.Name, err)) printer.PrintError("Unable to restore team '" + team.Name + "' error: " + err.Error()) } else { diff --git a/server/cmd/mmctl/commands/team_e2e_test.go b/server/cmd/mmctl/commands/team_e2e_test.go index 29b421b6d0..881a8872e6 100644 --- a/server/cmd/mmctl/commands/team_e2e_test.go +++ b/server/cmd/mmctl/commands/team_e2e_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" @@ -108,9 +109,9 @@ func (s *MmctlE2ETestSuite) TestDeleteTeamsCmdF() { // Set EnableAPITeamDeletion enableConfig := true - config, _, _ := c.GetConfig() + config, _, _ := c.GetConfig(context.TODO()) config.ServiceSettings.EnableAPITeamDeletion = &enableConfig - _, _, _ = c.UpdateConfig(config) + _, _, _ = c.UpdateConfig(context.TODO(), config) // Deletion should succeed for both local and SystemAdmin client now err = deleteTeamsCmdF(c, cmd, args) @@ -121,9 +122,9 @@ func (s *MmctlE2ETestSuite) TestDeleteTeamsCmdF() { // Reset config enableConfig = false - config, _, _ = c.GetConfig() + config, _, _ = c.GetConfig(context.TODO()) config.ServiceSettings.EnableAPITeamDeletion = &enableConfig - _, _, _ = c.UpdateConfig(config) + _, _, _ = c.UpdateConfig(context.TODO(), config) }) s.Run("Permission denied error for system admin when deleting a valid team", func() { diff --git a/server/cmd/mmctl/commands/team_test.go b/server/cmd/mmctl/commands/team_test.go index 860ae9195b..fadcc47581 100644 --- a/server/cmd/mmctl/commands/team_test.go +++ b/server/cmd/mmctl/commands/team_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" "net/http" @@ -55,7 +56,7 @@ func (s *MmctlUnitTestSuite) TestCreateTeamCmd() { s.client. EXPECT(). - CreateTeam(mockTeam). + CreateTeam(context.Background(), mockTeam). Return(mockTeam, &model.Response{}, nil). Times(1) @@ -83,7 +84,7 @@ func (s *MmctlUnitTestSuite) TestCreateTeamCmd() { s.client. EXPECT(). - CreateTeam(mockTeam). + CreateTeam(context.Background(), mockTeam). Return(mockTeam, &model.Response{}, nil). Times(1) @@ -109,7 +110,7 @@ func (s *MmctlUnitTestSuite) TestCreateTeamCmd() { s.client. EXPECT(). - CreateTeam(mockTeam). + CreateTeam(context.Background(), mockTeam). Return(nil, &model.Response{}, mockError). Times(1) @@ -131,14 +132,14 @@ func (s *MmctlUnitTestSuite) TestRenameTeamCmdF() { // Mocking : GetTeam searches with team id, if team not found proceeds with team name search s.client. EXPECT(). - GetTeam("existingName", ""). + GetTeam(context.Background(), "existingName", ""). Return(nil, &model.Response{}, nil). Times(1) // Mocking : GetTeamByname is called, if GetTeam fails to return any team, as team name was passed instead of team id s.client. EXPECT(). - GetTeamByName("existingName", ""). + GetTeamByName(context.Background(), "existingName", ""). Return(nil, &model.Response{}, nil). // Error is nil as team not found will not return error from API Times(1) @@ -169,13 +170,13 @@ func (s *MmctlUnitTestSuite) TestRenameTeamCmdF() { s.client. EXPECT(). - GetTeam(args[0], ""). + GetTeam(context.Background(), args[0], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(args[0], ""). + GetTeamByName(context.Background(), args[0], ""). Return(foundTeam, &model.Response{}, nil). Times(1) @@ -185,7 +186,7 @@ func (s *MmctlUnitTestSuite) TestRenameTeamCmdF() { // Mock out UpdateTeam which calls the api to rename team s.client. EXPECT(). - UpdateTeam(renamedTeam). + UpdateTeam(context.Background(), renamedTeam). Return(nil, &model.Response{}, mockError). Times(1) @@ -215,19 +216,19 @@ func (s *MmctlUnitTestSuite) TestRenameTeamCmdF() { s.client. EXPECT(). - GetTeam(args[0], ""). + GetTeam(context.Background(), args[0], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(args[0], ""). + GetTeamByName(context.Background(), args[0], ""). Return(foundTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateTeam(updatedTeam). + UpdateTeam(context.Background(), updatedTeam). Return(updatedTeam, &model.Response{}, nil). Times(1) @@ -247,7 +248,7 @@ func (s *MmctlUnitTestSuite) TestListTeamsCmdF() { s.client. EXPECT(). - GetAllTeams("", 0, APILimitMaximum). + GetAllTeams(context.Background(), "", 0, APILimitMaximum). Return(nil, &model.Response{}, mockError). Times(1) @@ -265,7 +266,7 @@ func (s *MmctlUnitTestSuite) TestListTeamsCmdF() { s.client. EXPECT(). - GetAllTeams("", 0, APILimitMaximum). + GetAllTeams(context.Background(), "", 0, APILimitMaximum). Return([]*model.Team{&mockTeam}, &model.Response{}, nil). Times(2) @@ -299,7 +300,7 @@ func (s *MmctlUnitTestSuite) TestListTeamsCmdF() { s.client. EXPECT(). - GetAllTeams("", 0, APILimitMaximum). + GetAllTeams(context.Background(), "", 0, APILimitMaximum). Return([]*model.Team{&mockTeam}, &model.Response{}, nil). Times(2) @@ -346,7 +347,7 @@ func (s *MmctlUnitTestSuite) TestListTeamsCmdF() { s.client. EXPECT(). - GetAllTeams("", 0, APILimitMaximum). + GetAllTeams(context.Background(), "", 0, APILimitMaximum). Return(mockTeams, &model.Response{}, nil). Times(2) @@ -390,13 +391,13 @@ func (s *MmctlUnitTestSuite) TestListTeamsCmdF() { s.client. EXPECT(). - GetAllTeams("", 0, APILimitMaximum). + GetAllTeams(context.Background(), "", 0, APILimitMaximum). Return(mockTeamsPage1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetAllTeams("", 1, APILimitMaximum). + GetAllTeams(context.Background(), "", 1, APILimitMaximum). Return(mockTeamsPage2, &model.Response{}, nil). Times(1) @@ -427,13 +428,13 @@ func (s *MmctlUnitTestSuite) TestDeleteTeamsCmd() { s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -454,13 +455,13 @@ func (s *MmctlUnitTestSuite) TestDeleteTeamsCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PermanentDeleteTeam(teamID). + PermanentDeleteTeam(context.Background(), teamID). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -483,13 +484,13 @@ func (s *MmctlUnitTestSuite) TestDeleteTeamsCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PermanentDeleteTeam(teamID). + PermanentDeleteTeam(context.Background(), teamID). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -511,7 +512,7 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: teamName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: teamName}). Return([]*model.Team{mockTeam}, &model.Response{}, nil). Times(1) @@ -529,7 +530,7 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: displayName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: displayName}). Return([]*model.Team{mockTeam}, &model.Response{}, nil). Times(1) @@ -546,7 +547,7 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: teamName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: teamName}). Return(nil, &model.Response{}, nil). Times(1) @@ -563,7 +564,7 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: displayName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: displayName}). Return(nil, &model.Response{}, nil). Times(1) @@ -584,13 +585,13 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: mockTeam1Name}). + SearchTeams(context.Background(), &model.TeamSearch{Term: mockTeam1Name}). Return([]*model.Team{mockTeam1}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: mockTeam2DisplayName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: mockTeam2DisplayName}). Return([]*model.Team{mockTeam2}, &model.Response{}, nil). Times(1) @@ -611,7 +612,7 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: teamVariableName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: teamVariableName}). Return([]*model.Team{mockTeam1, mockTeam2}, &model.Response{}, nil). Times(1) @@ -634,13 +635,13 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: "team"}). + SearchTeams(context.Background(), &model.TeamSearch{Term: "team"}). Return([]*model.Team{mockTeam1, mockTeam2, mockTeam3, mockTeam4}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: teamVariableName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: teamVariableName}). Return([]*model.Team{mockTeam1, mockTeam2, mockTeam3, mockTeam4}, &model.Response{}, nil). Times(1) @@ -662,7 +663,7 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { s.client. EXPECT(). - SearchTeams(&model.TeamSearch{Term: teamVariableName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: teamVariableName}). Return([]*model.Team{mockTeam1, mockTeam2, mockTeam3, mockTeam4, mockTeam5}, &model.Response{}, nil). Times(1) @@ -682,7 +683,7 @@ func (s *MmctlUnitTestSuite) TestSearchTeamCmd() { mockError := errors.New("remote error") teamName := "teamName" s.client.EXPECT(). - SearchTeams(&model.TeamSearch{Term: teamName}). + SearchTeams(context.Background(), &model.TeamSearch{Term: teamName}). Return(nil, &model.Response{}, mockError). Times(1) @@ -719,13 +720,13 @@ func (s *MmctlUnitTestSuite) TestModifyTeamsCmd() { s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -748,13 +749,13 @@ func (s *MmctlUnitTestSuite) TestModifyTeamsCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateTeamPrivacy(teamID, model.TeamInvite). + UpdateTeamPrivacy(context.Background(), teamID, model.TeamInvite). Return(&mockTeam, &model.Response{}, nil). Times(1) @@ -777,13 +778,13 @@ func (s *MmctlUnitTestSuite) TestModifyTeamsCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateTeamPrivacy(teamID, model.TeamOpen). + UpdateTeamPrivacy(context.Background(), teamID, model.TeamOpen). Return(&mockTeam, &model.Response{}, nil). Times(1) @@ -808,13 +809,13 @@ func (s *MmctlUnitTestSuite) TestModifyTeamsCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateTeamPrivacy(teamID, model.TeamOpen). + UpdateTeamPrivacy(context.Background(), teamID, model.TeamOpen). Return(nil, &model.Response{}, mockError). Times(1) @@ -838,13 +839,13 @@ func (s *MmctlUnitTestSuite) TestRestoreTeamsCmd() { s.client. EXPECT(). - GetTeamByName(teamName, ""). + GetTeamByName(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -864,13 +865,13 @@ func (s *MmctlUnitTestSuite) TestRestoreTeamsCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RestoreTeam(teamID). + RestoreTeam(context.Background(), teamID). Return(&mockTeam, &model.Response{}, nil). Times(1) @@ -890,13 +891,13 @@ func (s *MmctlUnitTestSuite) TestRestoreTeamsCmd() { s.client. EXPECT(). - GetTeam(teamName, ""). + GetTeam(context.Background(), teamName, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - RestoreTeam(teamID). + RestoreTeam(context.Background(), teamID). Return(nil, &model.Response{}, mockError). Times(1) diff --git a/server/cmd/mmctl/commands/team_users.go b/server/cmd/mmctl/commands/team_users.go index 570210a3eb..73925d2d6b 100644 --- a/server/cmd/mmctl/commands/team_users.go +++ b/server/cmd/mmctl/commands/team_users.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" @@ -72,7 +73,7 @@ func removeUserFromTeam(c client.Client, team *model.Team, user *model.User, use } var err error - if _, err = c.RemoveTeamMember(team.Id, user.Id); err != nil { + if _, err = c.RemoveTeamMember(context.TODO(), team.Id, user.Id); err != nil { err = fmt.Errorf("unable to remove '%s' from %s. Error: %w", userArg, team.Name, err) printer.PrintError(err.Error()) } @@ -102,7 +103,7 @@ func teamUsersAddCmdF(c client.Client, cmd *cobra.Command, args []string) error } func addUserToTeam(c client.Client, team *model.Team, user *model.User, userArg string) { - if _, _, err := c.AddTeamMember(team.Id, user.Id); err != nil { + if _, _, err := c.AddTeamMember(context.TODO(), team.Id, user.Id); err != nil { printer.PrintError("Unable to add '" + userArg + "' to " + team.Name + ". Error: " + err.Error()) } } diff --git a/server/cmd/mmctl/commands/team_users_test.go b/server/cmd/mmctl/commands/team_users_test.go index f452468df4..4d896f2f16 100644 --- a/server/cmd/mmctl/commands/team_users_test.go +++ b/server/cmd/mmctl/commands/team_users_test.go @@ -3,6 +3,7 @@ package commands import ( + "context" "errors" "net/http" @@ -21,13 +22,13 @@ func (s *MmctlUnitTestSuite) TestTeamUsersArchiveCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -43,25 +44,25 @@ func (s *MmctlUnitTestSuite) TestTeamUsersArchiveCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser.Id, ""). + GetUserByEmail(context.Background(), mockUser.Id, ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Id, ""). + GetUserByUsername(context.Background(), mockUser.Id, ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUser(mockUser.Id, ""). + GetUser(context.Background(), mockUser.Id, ""). Return(nil, nil, nil). Times(1) @@ -79,25 +80,25 @@ func (s *MmctlUnitTestSuite) TestTeamUsersArchiveCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetTeamByName(teamArg, ""). + GetTeamByName(context.Background(), teamArg, ""). Return(mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser.Id, ""). + GetUserByEmail(context.Background(), mockUser.Id, ""). Return(mockUser, nil, nil). Times(1) s.client. EXPECT(). - RemoveTeamMember(mockTeam.Id, mockUser.Id). + RemoveTeamMember(context.Background(), mockTeam.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -114,19 +115,19 @@ func (s *MmctlUnitTestSuite) TestTeamUsersArchiveCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser.Id, ""). + GetUserByEmail(context.Background(), mockUser.Id, ""). Return(mockUser, nil, nil). Times(1) s.client. EXPECT(). - RemoveTeamMember(mockTeam.Id, mockUser.Id). + RemoveTeamMember(context.Background(), mockTeam.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -143,25 +144,25 @@ func (s *MmctlUnitTestSuite) TestTeamUsersArchiveCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser.Id, ""). + GetUserByEmail(context.Background(), mockUser.Id, ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Id, ""). + GetUserByUsername(context.Background(), mockUser.Id, ""). Return(mockUser, nil, nil). Times(1) s.client. EXPECT(). - RemoveTeamMember(mockTeam.Id, mockUser.Id). + RemoveTeamMember(context.Background(), mockTeam.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -177,31 +178,31 @@ func (s *MmctlUnitTestSuite) TestTeamUsersArchiveCmd() { mockUser := &model.User{Id: userArg} s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser.Id, ""). + GetUserByEmail(context.Background(), mockUser.Id, ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Id, ""). + GetUserByUsername(context.Background(), mockUser.Id, ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUser(mockUser.Id, ""). + GetUser(context.Background(), mockUser.Id, ""). Return(mockUser, nil, nil). Times(1) s.client. EXPECT(). - RemoveTeamMember(mockTeam.Id, mockUser.Id). + RemoveTeamMember(context.Background(), mockTeam.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -219,19 +220,19 @@ func (s *MmctlUnitTestSuite) TestTeamUsersArchiveCmd() { s.client. EXPECT(). - GetTeam(teamArg, ""). + GetTeam(context.Background(), teamArg, ""). Return(mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(mockUser.Id, ""). + GetUserByEmail(context.Background(), mockUser.Id, ""). Return(mockUser, nil, nil). Times(1) s.client. EXPECT(). - RemoveTeamMember(mockTeam.Id, mockUser.Id). + RemoveTeamMember(context.Background(), mockTeam.Id, mockUser.Id). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -260,13 +261,13 @@ func (s *MmctlUnitTestSuite) TestAddUsersCmd() { s.client. EXPECT(). - GetTeam("team1", ""). + GetTeam(context.Background(), "team1", ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName("team1", ""). + GetTeamByName(context.Background(), "team1", ""). Return(nil, &model.Response{}, nil). Times(1) @@ -281,25 +282,25 @@ func (s *MmctlUnitTestSuite) TestAddUsersCmd() { s.client. EXPECT(). - GetTeam("team1", ""). + GetTeam(context.Background(), "team1", ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail("user1", ""). + GetUserByEmail(context.Background(), "user1", ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername("user1", ""). + GetUserByUsername(context.Background(), "user1", ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser("user1", ""). + GetUser(context.Background(), "user1", ""). Return(nil, &model.Response{}, nil). Times(1) @@ -315,13 +316,13 @@ func (s *MmctlUnitTestSuite) TestAddUsersCmd() { s.client. EXPECT(). - GetTeam("team1", ""). + GetTeam(context.Background(), "team1", ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail("user1", ""). + GetUserByEmail(context.Background(), "user1", ""). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -329,7 +330,7 @@ func (s *MmctlUnitTestSuite) TestAddUsersCmd() { s.client. EXPECT(). - AddTeamMember("TeamId", "UserID"). + AddTeamMember(context.Background(), "TeamId", "UserID"). Return(nil, &model.Response{}, mockError). Times(1) @@ -346,19 +347,19 @@ func (s *MmctlUnitTestSuite) TestAddUsersCmd() { cmd := &cobra.Command{} s.client. EXPECT(). - GetTeam("team1", ""). + GetTeam(context.Background(), "team1", ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail("user1", ""). + GetUserByEmail(context.Background(), "user1", ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - AddTeamMember("TeamId", "UserID"). + AddTeamMember(context.Background(), "TeamId", "UserID"). Return(nil, &model.Response{}, nil). Times(1) diff --git a/server/cmd/mmctl/commands/teamargs.go b/server/cmd/mmctl/commands/teamargs.go index 2163394784..fc79cc0425 100644 --- a/server/cmd/mmctl/commands/teamargs.go +++ b/server/cmd/mmctl/commands/teamargs.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "fmt" @@ -28,10 +29,10 @@ func getTeamFromTeamArg(c client.Client, teamArg string) *model.Team { } var team *model.Team - team, _, _ = c.GetTeam(teamArg, "") + team, _, _ = c.GetTeam(context.TODO(), teamArg, "") if team == nil { - team, _, _ = c.GetTeamByName(teamArg, "") + team, _, _ = c.GetTeamByName(context.TODO(), teamArg, "") } return team } @@ -62,7 +63,7 @@ func getTeamFromArg(c client.Client, teamArg string) (*model.Team, error) { var team *model.Team var response *model.Response var err error - team, response, err = c.GetTeam(teamArg, "") + team, response, err = c.GetTeam(context.TODO(), teamArg, "") if err != nil { nErr := ExtractErrorFromResponse(response, err) var nfErr *NotFoundError @@ -74,7 +75,7 @@ func getTeamFromArg(c client.Client, teamArg string) (*model.Team, error) { if team != nil { return team, nil } - team, response, err = c.GetTeamByName(teamArg, "") + team, response, err = c.GetTeamByName(context.TODO(), teamArg, "") if err != nil { nErr := ExtractErrorFromResponse(response, err) var nfErr *NotFoundError diff --git a/server/cmd/mmctl/commands/teamargs_test.go b/server/cmd/mmctl/commands/teamargs_test.go index 84f1963a85..89cd0d2dfd 100644 --- a/server/cmd/mmctl/commands/teamargs_test.go +++ b/server/cmd/mmctl/commands/teamargs_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "net/http" @@ -18,12 +19,12 @@ func (s *MmctlUnitTestSuite) TestGetTeamArgs() { s.client. EXPECT(). - GetTeam(notFoundTeam, ""). + GetTeam(context.Background(), notFoundTeam, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, notFoundErr). Times(1) s.client. EXPECT(). - GetTeamByName(notFoundTeam, ""). + GetTeamByName(context.Background(), notFoundTeam, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, notFoundErr). Times(1) @@ -38,12 +39,12 @@ func (s *MmctlUnitTestSuite) TestGetTeamArgs() { s.client. EXPECT(). - GetTeam(badRequestTeam, ""). + GetTeam(context.Background(), badRequestTeam, ""). Return(nil, &model.Response{StatusCode: http.StatusBadRequest}, badRequestErr). Times(1) s.client. EXPECT(). - GetTeamByName(badRequestTeam, ""). + GetTeamByName(context.Background(), badRequestTeam, ""). Return(nil, &model.Response{StatusCode: http.StatusBadRequest}, badRequestErr). Times(1) @@ -58,7 +59,7 @@ func (s *MmctlUnitTestSuite) TestGetTeamArgs() { s.client. EXPECT(). - GetTeam(forbidden, ""). + GetTeam(context.Background(), forbidden, ""). Return(nil, &model.Response{StatusCode: http.StatusForbidden}, forbiddenErr). Times(1) @@ -73,7 +74,7 @@ func (s *MmctlUnitTestSuite) TestGetTeamArgs() { s.client. EXPECT(). - GetTeam(errTeam, ""). + GetTeam(context.Background(), errTeam, ""). Return(nil, &model.Response{StatusCode: http.StatusInternalServerError}, internalServerErrorErr). Times(1) @@ -88,7 +89,7 @@ func (s *MmctlUnitTestSuite) TestGetTeamArgs() { s.client. EXPECT(). - GetTeam(successID, ""). + GetTeam(context.Background(), successID, ""). Return(successTeam, nil, nil). Times(1) diff --git a/server/cmd/mmctl/commands/token.go b/server/cmd/mmctl/commands/token.go index 846ac08908..b029774e84 100644 --- a/server/cmd/mmctl/commands/token.go +++ b/server/cmd/mmctl/commands/token.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" "github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/client" @@ -70,7 +71,7 @@ func generateTokenForAUserCmdF(c client.Client, command *cobra.Command, args []s return errors.Errorf("could not retrieve user information of %q", userArg) } - token, _, err := c.CreateUserAccessToken(user.Id, args[1]) + token, _, err := c.CreateUserAccessToken(context.TODO(), user.Id, args[1]) if err != nil { return errors.Errorf("could not create token for %q: %s", userArg, err.Error()) } @@ -98,7 +99,7 @@ func listTokensOfAUserCmdF(c client.Client, command *cobra.Command, args []strin return errors.Errorf("could not retrieve user information of %q", userArg) } - tokens, _, err := c.GetUserAccessTokensForUser(user.Id, page, perPage) + tokens, _, err := c.GetUserAccessTokensForUser(context.TODO(), user.Id, page, perPage) if err != nil { return errors.Errorf("could not retrieve tokens for user %q: %s", userArg, err.Error()) } @@ -120,7 +121,7 @@ func listTokensOfAUserCmdF(c client.Client, command *cobra.Command, args []strin func revokeTokenForAUserCmdF(c client.Client, command *cobra.Command, args []string) error { for _, id := range args { - res, err := c.RevokeUserAccessToken(id) + res, err := c.RevokeUserAccessToken(context.TODO(), id) if err != nil { return errors.Errorf("could not revoke token %q: %s", id, err.Error()) } diff --git a/server/cmd/mmctl/commands/token_test.go b/server/cmd/mmctl/commands/token_test.go index 303bee41c3..3d61f096ba 100644 --- a/server/cmd/mmctl/commands/token_test.go +++ b/server/cmd/mmctl/commands/token_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "fmt" "net/http" @@ -25,25 +26,25 @@ func (s *MmctlUnitTestSuite) TestGenerateTokenForAUserCmd() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given username")). Times(1) s.client. EXPECT(). - GetUser(userArg, ""). + GetUser(context.Background(), userArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateUserAccessToken(mockUser.Id, mockToken.Description). + CreateUserAccessToken(context.Background(), mockUser.Id, mockToken.Description). Return(&mockToken, &model.Response{}, nil). Times(1) @@ -59,19 +60,19 @@ func (s *MmctlUnitTestSuite) TestGenerateTokenForAUserCmd() { userArg := "some-text" s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given username")). Times(1) s.client. EXPECT(). - GetUser(userArg, ""). + GetUser(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given ID")). Times(1) @@ -88,19 +89,19 @@ func (s *MmctlUnitTestSuite) TestGenerateTokenForAUserCmd() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateUserAccessToken(mockUser.Id, "description"). + CreateUserAccessToken(context.Background(), mockUser.Id, "description"). Return(nil, &model.Response{}, errors.New("error-message")). Times(1) @@ -127,25 +128,25 @@ func (s *MmctlUnitTestSuite) TestListTokensOfAUserCmdF() { s.client. EXPECT(). - GetUserByEmail(mockUser.Id, ""). + GetUserByEmail(context.Background(), mockUser.Id, ""). Return(nil, &model.Response{}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Id, ""). + GetUserByUsername(context.Background(), mockUser.Id, ""). Return(nil, &model.Response{}, errors.New("no user found with the given username")). Times(1) s.client. EXPECT(). - GetUser(mockUser.Id, ""). + GetUser(context.Background(), mockUser.Id, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserAccessTokensForUser(mockUser.Id, 0, 9999). + GetUserAccessTokensForUser(context.Background(), mockUser.Id, 0, 9999). Return( []*model.UserAccessToken{&mockToken1, &mockToken2}, &model.Response{}, nil, @@ -174,13 +175,13 @@ func (s *MmctlUnitTestSuite) TestListTokensOfAUserCmdF() { s.client. EXPECT(). - GetUserByEmail(mockUser.Email, ""). + GetUserByEmail(context.Background(), mockUser.Email, ""). Return(&mockUser, &model.Response{}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserAccessTokensForUser(mockUser.Id, 0, 2). + GetUserAccessTokensForUser(context.Background(), mockUser.Id, 0, 2). Return( []*model.UserAccessToken{&mockToken1, &mockToken2}, &model.Response{}, nil, @@ -205,19 +206,19 @@ func (s *MmctlUnitTestSuite) TestListTokensOfAUserCmdF() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given username")). Times(1) s.client. EXPECT(). - GetUser(userArg, ""). + GetUser(context.Background(), userArg, ""). Return(nil, &model.Response{}, errors.New("no user found with the given user ID")). Times(1) @@ -240,13 +241,13 @@ func (s *MmctlUnitTestSuite) TestListTokensOfAUserCmdF() { s.client. EXPECT(). - GetUserByEmail(mockUser.Email, ""). + GetUserByEmail(context.Background(), mockUser.Email, ""). Return(&mockUser, &model.Response{}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserAccessTokensForUser(mockUser.Id, 0, 2). + GetUserAccessTokensForUser(context.Background(), mockUser.Id, 0, 2). Return( []*model.UserAccessToken{}, &model.Response{}, nil, @@ -267,13 +268,13 @@ func (s *MmctlUnitTestSuite) TestRevokeTokenForAUserCmdF() { s.client. EXPECT(). - RevokeUserAccessToken(mockToken1.Id). + RevokeUserAccessToken(context.Background(), mockToken1.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - RevokeUserAccessToken(mockToken2.Id). + RevokeUserAccessToken(context.Background(), mockToken2.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -285,7 +286,7 @@ func (s *MmctlUnitTestSuite) TestRevokeTokenForAUserCmdF() { s.Run("Should fail if can't revoke user access token", func() { s.client. EXPECT(). - RevokeUserAccessToken("token-id"). + RevokeUserAccessToken(context.Background(), "token-id"). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("some-error")). Times(1) diff --git a/server/cmd/mmctl/commands/user.go b/server/cmd/mmctl/commands/user.go index e2d0caffdc..97a825c521 100644 --- a/server/cmd/mmctl/commands/user.go +++ b/server/cmd/mmctl/commands/user.go @@ -4,6 +4,7 @@ package commands import ( + "context" "encoding/json" "fmt" "io/ioutil" @@ -383,7 +384,7 @@ func changeUserActiveStatus(c client.Client, user *model.User, activate bool) er if !activate && user.IsSSOUser() { printer.Print("You must also deactivate user " + user.Id + " in the SSO provider or they will be reactivated on next login or sync.") } - if _, err := c.UpdateUserActive(user.Id, activate); err != nil { + if _, err := c.UpdateUserActive(context.TODO(), user.Id, activate); err != nil { return fmt.Errorf("unable to change activation status of user: %v", user.Id) } @@ -436,18 +437,18 @@ func userCreateCmdF(c client.Client, cmd *cobra.Command, args []string) error { DisableWelcomeEmail: disableWelcomeEmail, } - ruser, _, err := c.CreateUser(user) + ruser, _, err := c.CreateUser(context.TODO(), user) if err != nil { return errors.New("Unable to create user. Error: " + err.Error()) } if systemAdmin { - if _, err := c.UpdateUserRoles(ruser.Id, "system_user system_admin"); err != nil { + if _, err := c.UpdateUserRoles(context.TODO(), ruser.Id, "system_user system_admin"); err != nil { return errors.New("Unable to update user roles. Error: " + err.Error()) } } else if guest { - if _, err := c.DemoteUserToGuest(ruser.Id); err != nil { + if _, err := c.DemoteUserToGuest(context.TODO(), ruser.Id); err != nil { return errors.Wrapf(err, "Unable to demote use to guest") } } @@ -486,7 +487,7 @@ func inviteUser(c client.Client, email string, team *model.Team, teamArg string) return fmt.Errorf("can't find team '%v'", teamArg) } - if _, err := c.InviteUsersToTeam(team.Id, invites); err != nil { + if _, err := c.InviteUsersToTeam(context.TODO(), team.Id, invites); err != nil { return errors.New("Unable to invite user with email " + email + " to team " + team.Name + ". Error: " + err.Error()) } @@ -508,7 +509,7 @@ func sendPasswordResetEmailCmdF(c client.Client, cmd *cobra.Command, args []stri printer.PrintError("Invalid email '" + email + "'") continue } - if _, err := c.SendPasswordResetEmail(email); err != nil { + if _, err := c.SendPasswordResetEmail(context.TODO(), email); err != nil { result = multierror.Append(result, fmt.Errorf("unable send reset password email to email %s: %w", email, err)) printer.PrintError("Unable send reset password email to email " + email + ". Error: " + err.Error()) } @@ -537,7 +538,7 @@ func updateUserEmailCmdF(c client.Client, cmd *cobra.Command, args []string) err user.Email = newEmail - ruser, _, err := c.UpdateUser(user) + ruser, _, err := c.UpdateUser(context.TODO(), user) if err != nil { return errors.New(err.Error()) } @@ -563,7 +564,7 @@ func updateUsernameCmdF(c client.Client, cmd *cobra.Command, args []string) erro user.Username = newUsername - ruser, _, err := c.UpdateUser(user) + ruser, _, err := c.UpdateUser(context.TODO(), user) if err != nil { return errors.New(err.Error()) } @@ -602,11 +603,11 @@ func changePasswordUserCmdF(c client.Client, cmd *cobra.Command, args []string) } if hashed { - if _, err := c.UpdateUserHashedPassword(user.Id, password); err != nil { + if _, err := c.UpdateUserHashedPassword(context.TODO(), user.Id, password); err != nil { return errors.Wrap(err, "changing user hashed password failed") } } else { - if _, err := c.UpdateUserPassword(user.Id, current, password); err != nil { + if _, err := c.UpdateUserPassword(context.TODO(), user.Id, current, password); err != nil { return errors.Wrap(err, "changing user password failed") } } @@ -627,7 +628,7 @@ func resetUserMfaCmdF(c client.Client, cmd *cobra.Command, args []string) error } for _, user := range users { - if _, err := c.UpdateUserMfa(user.Id, "", false); err != nil { + if _, err := c.UpdateUserMfa(context.TODO(), user.Id, "", false); err != nil { result = multierror.Append(result, fmt.Errorf("unable to reset user %q MFA. Error: %w", user.Id, err)) } } @@ -652,7 +653,7 @@ func deleteUsersCmdF(c client.Client, cmd *cobra.Command, args []string) error { printer.PrintError("Unable to find user '" + args[i] + "'") continue } - if res, err := c.PermanentDeleteUser(user.Id); err != nil { + if res, err := c.PermanentDeleteUser(context.TODO(), user.Id); err != nil { printer.PrintError("Unable to delete user '" + user.Username + "' error: " + err.Error()) } else { // res.StatusCode is checked for 202 to identify issues with file deletion. @@ -673,7 +674,7 @@ func deleteAllUsersCmdF(c client.Client, cmd *cobra.Command, args []string) erro } } - if _, err := c.PermanentDeleteAllUsers(); err != nil { + if _, err := c.PermanentDeleteAllUsers(context.TODO()); err != nil { return err } @@ -738,7 +739,7 @@ func listUsersCmdF(c client.Client, command *cobra.Command, args []string) error var team *model.Team if teamName != "" { var err error - team, _, err = c.GetTeamByName(teamName, "") + team, _, err = c.GetTeamByName(context.TODO(), teamName, "") if err != nil { return errors.Wrap(err, fmt.Sprintf("Failed to get team %s", teamName)) } @@ -749,12 +750,12 @@ func listUsersCmdF(c client.Client, command *cobra.Command, args []string) error var users []*model.User var err error if team != nil { - users, _, err = c.GetUsersInTeam(team.Id, page, perPage, "") + users, _, err = c.GetUsersInTeam(context.TODO(), team.Id, page, perPage, "") if err != nil { return errors.Wrap(err, fmt.Sprintf("Failed to fetch users for team %s", teamName)) } } else { - users, _, err = c.GetUsers(page, perPage, "") + users, _, err = c.GetUsers(context.TODO(), page, perPage, "") if err != nil { return errors.Wrap(err, "Failed to fetch users") } @@ -784,7 +785,7 @@ func verifyUserEmailWithoutTokenCmdF(c client.Client, cmd *cobra.Command, userAr } for _, user := range users { - if newUser, _, err := c.VerifyUserEmailWithoutToken(user.Id); err != nil { + if newUser, _, err := c.VerifyUserEmailWithoutToken(context.TODO(), user.Id); err != nil { result = multierror.Append(result, fmt.Errorf("unable to verify user %s email: %w", user.Id, err)) } else { printer.PrintT("User {{.Username}} verified", newUser) @@ -814,7 +815,7 @@ func convertUserToBot(c client.Client, _ *cobra.Command, userArgs []string) erro printer.PrintError(err.Error()) } for _, user := range users { - bot, _, err := c.ConvertUserToBot(user.Id) + bot, _, err := c.ConvertUserToBot(context.TODO(), user.Id) if err != nil { printer.PrintError(err.Error()) continue @@ -881,7 +882,7 @@ func convertBotToUser(c client.Client, cmd *cobra.Command, userArgs []string) er systemAdmin, _ = cmd.Flags().GetBool("system_admin") } - user, _, err = c.ConvertBotToUser(user.Id, up, systemAdmin) + user, _, err = c.ConvertBotToUser(context.TODO(), user.Id, up, systemAdmin) if err != nil { return err } @@ -925,7 +926,7 @@ func migrateAuthToSamlCmdF(c client.Client, cmd *cobra.Command, userArgs []strin return errors.New("invalid from_auth argument") } - resp, err := c.MigrateAuthToSaml(fromAuth, matches, auto) + resp, err := c.MigrateAuthToSaml(context.TODO(), fromAuth, matches, auto) if err != nil { return err } else if resp.StatusCode == http.StatusOK { @@ -948,7 +949,7 @@ func migrateAuthToLdapCmdF(c client.Client, cmd *cobra.Command, userArgs []strin force, _ := cmd.Flags().GetBool("force") - resp, err := c.MigrateAuthToLdap(fromAuth, matchField, force) + resp, err := c.MigrateAuthToLdap(context.TODO(), fromAuth, matchField, force) if err != nil { return err } else if resp.StatusCode == http.StatusOK { @@ -965,7 +966,7 @@ func promoteGuestToUserCmdF(c client.Client, _ *cobra.Command, userArgs []string continue } - if _, err := c.PromoteGuestToUser(user.Id); err != nil { + if _, err := c.PromoteGuestToUser(context.TODO(), user.Id); err != nil { printer.PrintError(fmt.Sprintf("unable to promote guest %s: %s", userArgs[i], err)) continue } @@ -986,7 +987,7 @@ func demoteUserToGuestCmdF(c client.Client, _ *cobra.Command, userArgs []string) continue } - if _, err := c.DemoteUserToGuest(user.Id); err != nil { + if _, err := c.DemoteUserToGuest(context.TODO(), user.Id); err != nil { err = fmt.Errorf("unable to demote user %s: %w", userArgs[i], err) errs = multierror.Append(errs, err) printer.PrintError(err.Error()) diff --git a/server/cmd/mmctl/commands/user_test.go b/server/cmd/mmctl/commands/user_test.go index c589abdd27..323f55df1f 100644 --- a/server/cmd/mmctl/commands/user_test.go +++ b/server/cmd/mmctl/commands/user_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "encoding/json" "fmt" "io/ioutil" @@ -29,13 +30,13 @@ func (s *MmctlUnitTestSuite) TestUserActivateCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, true). + UpdateUserActive(context.Background(), mockUser.Id, true). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -51,19 +52,19 @@ func (s *MmctlUnitTestSuite) TestUserActivateCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(emailArg, ""). + GetUserByUsername(context.Background(), emailArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(emailArg, ""). + GetUser(context.Background(), emailArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) @@ -81,13 +82,13 @@ func (s *MmctlUnitTestSuite) TestUserActivateCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, true). + UpdateUserActive(context.Background(), mockUser.Id, true). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) @@ -108,67 +109,67 @@ func (s *MmctlUnitTestSuite) TestUserActivateCmd() { s.client. EXPECT(). - GetUserByEmail(emailArgs[0], ""). + GetUserByEmail(context.Background(), emailArgs[0], ""). Return(&mockUser0, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailArgs[1], ""). + GetUserByEmail(context.Background(), emailArgs[1], ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(emailArgs[1], ""). + GetUserByUsername(context.Background(), emailArgs[1], ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(emailArgs[1], ""). + GetUser(context.Background(), emailArgs[1], ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByEmail(emailArgs[2], ""). + GetUserByEmail(context.Background(), emailArgs[2], ""). Return(&mockUser2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailArgs[3], ""). + GetUserByEmail(context.Background(), emailArgs[3], ""). Return(&mockUser3, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailArgs[4], ""). + GetUserByEmail(context.Background(), emailArgs[4], ""). Return(&mockUser4, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser0.Id, true). + UpdateUserActive(context.Background(), mockUser0.Id, true). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser2.Id, true). + UpdateUserActive(context.Background(), mockUser2.Id, true). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser3.Id, true). + UpdateUserActive(context.Background(), mockUser3.Id, true). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser4.Id, true). + UpdateUserActive(context.Background(), mockUser4.Id, true). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -189,13 +190,13 @@ func (s *MmctlUnitTestSuite) TestDeactivateUserCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, false). + UpdateUserActive(context.Background(), mockUser.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -211,19 +212,19 @@ func (s *MmctlUnitTestSuite) TestDeactivateUserCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(emailArg, ""). + GetUserByUsername(context.Background(), emailArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(emailArg, ""). + GetUser(context.Background(), emailArg, ""). Return(nil, &model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) @@ -241,13 +242,13 @@ func (s *MmctlUnitTestSuite) TestDeactivateUserCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, false). + UpdateUserActive(context.Background(), mockUser.Id, false). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) @@ -265,13 +266,13 @@ func (s *MmctlUnitTestSuite) TestDeactivateUserCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, false). + UpdateUserActive(context.Background(), mockUser.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -292,67 +293,67 @@ func (s *MmctlUnitTestSuite) TestDeactivateUserCmd() { s.client. EXPECT(). - GetUserByEmail(emailArgs[0], ""). + GetUserByEmail(context.Background(), emailArgs[0], ""). Return(&mockUser0, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailArgs[1], ""). + GetUserByEmail(context.Background(), emailArgs[1], ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByUsername(emailArgs[1], ""). + GetUserByUsername(context.Background(), emailArgs[1], ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUser(emailArgs[1], ""). + GetUser(context.Background(), emailArgs[1], ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("mock error")). Times(1) s.client. EXPECT(). - GetUserByEmail(emailArgs[2], ""). + GetUserByEmail(context.Background(), emailArgs[2], ""). Return(&mockUser2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailArgs[3], ""). + GetUserByEmail(context.Background(), emailArgs[3], ""). Return(&mockUser3, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailArgs[4], ""). + GetUserByEmail(context.Background(), emailArgs[4], ""). Return(&mockUser4, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser0.Id, false). + UpdateUserActive(context.Background(), mockUser0.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser2.Id, false). + UpdateUserActive(context.Background(), mockUser2.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser3.Id, false). + UpdateUserActive(context.Background(), mockUser3.Id, false). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser4.Id, false). + UpdateUserActive(context.Background(), mockUser4.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -388,19 +389,19 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() { s.client. EXPECT(). - GetUserByEmail(arg, ""). + GetUserByEmail(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(arg, ""). + GetUserByUsername(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(arg, ""). + GetUser(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -417,23 +418,23 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() { s.client. EXPECT(). - GetUserByEmail(email1, ""). + GetUserByEmail(context.Background(), email1, ""). Return(&mockUser1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PermanentDeleteUser(userID1). + PermanentDeleteUser(context.Background(), userID1). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(email2, ""). + GetUserByEmail(context.Background(), email2, ""). Return(&mockUser2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PermanentDeleteUser(userID2). + PermanentDeleteUser(context.Background(), userID2). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -453,13 +454,13 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() { s.client. EXPECT(). - GetUserByEmail(email1, ""). + GetUserByEmail(context.Background(), email1, ""). Return(&mockUser1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PermanentDeleteUser(userID1). + PermanentDeleteUser(context.Background(), userID1). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -480,23 +481,23 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() { s.client. EXPECT(). - GetUserByEmail(email1, ""). + GetUserByEmail(context.Background(), email1, ""). Return(&mockUser1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(email2, ""). + GetUserByEmail(context.Background(), email2, ""). Return(&mockUser2, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PermanentDeleteUser(userID1). + PermanentDeleteUser(context.Background(), userID1). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) s.client. EXPECT(). - PermanentDeleteUser(userID2). + PermanentDeleteUser(context.Background(), userID2). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -517,12 +518,12 @@ func (s *MmctlUnitTestSuite) TestDeleteUsersCmd() { s.client. EXPECT(). - GetUserByEmail(email1, ""). + GetUserByEmail(context.Background(), email1, ""). Return(&mockUser1, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PermanentDeleteUser(userID1). + PermanentDeleteUser(context.Background(), userID1). Return(&model.Response{StatusCode: http.StatusAccepted}, nil). Times(1) @@ -545,7 +546,7 @@ func (s *MmctlUnitTestSuite) TestDeleteAllUsersCmd() { s.client. EXPECT(). - PermanentDeleteAllUsers(). + PermanentDeleteAllUsers(context.Background()). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -563,7 +564,7 @@ func (s *MmctlUnitTestSuite) TestDeleteAllUsersCmd() { s.client. EXPECT(). - PermanentDeleteAllUsers(). + PermanentDeleteAllUsers(context.Background()). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("mock error")). Times(1) @@ -581,7 +582,7 @@ func (s *MmctlUnitTestSuite) TestSearchUserCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -597,19 +598,19 @@ func (s *MmctlUnitTestSuite) TestSearchUserCmd() { s.client. EXPECT(). - GetUserByEmail(arg, ""). + GetUserByEmail(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(arg, ""). + GetUserByUsername(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(arg, ""). + GetUser(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -639,13 +640,13 @@ func (s *MmctlUnitTestSuite) TestChangePasswordUserCmdF() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserPassword(mockUser.Id, currentPassword, password). + UpdateUserPassword(context.Background(), mockUser.Id, currentPassword, password). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -668,13 +669,13 @@ func (s *MmctlUnitTestSuite) TestChangePasswordUserCmdF() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserPassword(mockUser.Id, "", password). + UpdateUserPassword(context.Background(), mockUser.Id, "", password). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -698,13 +699,13 @@ func (s *MmctlUnitTestSuite) TestChangePasswordUserCmdF() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserPassword(mockUser.Id, currentPassword, password). + UpdateUserPassword(context.Background(), mockUser.Id, currentPassword, password). Return(&model.Response{StatusCode: http.StatusOK}, mockError). Times(1) @@ -728,13 +729,13 @@ func (s *MmctlUnitTestSuite) TestChangePasswordUserCmdF() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserPassword(mockUser.Id, "", password). + UpdateUserPassword(context.Background(), mockUser.Id, "", password). Return(&model.Response{StatusCode: http.StatusOK}, mockError). Times(1) @@ -755,19 +756,19 @@ func (s *MmctlUnitTestSuite) TestChangePasswordUserCmdF() { s.client. EXPECT(). - GetUserByEmail(arg, ""). + GetUserByEmail(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(arg, ""). + GetUserByUsername(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(arg, ""). + GetUser(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -789,13 +790,13 @@ func (s *MmctlUnitTestSuite) TestChangePasswordUserCmdF() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserHashedPassword(mockUser.Id, hashedPassword). + UpdateUserHashedPassword(context.Background(), mockUser.Id, hashedPassword). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -819,13 +820,13 @@ func (s *MmctlUnitTestSuite) TestChangePasswordUserCmdF() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserHashedPassword(mockUser.Id, hashedPassword). + UpdateUserHashedPassword(context.Background(), mockUser.Id, hashedPassword). Return(&model.Response{StatusCode: http.StatusOK}, mockError). Times(1) @@ -847,7 +848,7 @@ func (s *MmctlUnitTestSuite) TestSendPasswordResetEmailCmd() { s.client. EXPECT(). - SendPasswordResetEmail(emailArg). + SendPasswordResetEmail(context.Background(), emailArg). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -880,7 +881,7 @@ func (s *MmctlUnitTestSuite) TestSendPasswordResetEmailCmd() { s.client. EXPECT(). - SendPasswordResetEmail(emailArg). + SendPasswordResetEmail(context.Background(), emailArg). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -912,7 +913,7 @@ func (s *MmctlUnitTestSuite) TestSendPasswordResetEmailCmd() { case strings.HasPrefix(email, "error"): s.client. EXPECT(). - SendPasswordResetEmail(email). + SendPasswordResetEmail(context.Background(), email). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) expected = multierror.Append(expected, fmt.Errorf("unable send reset password email to email %s: %w", email, mockError)) @@ -921,7 +922,7 @@ func (s *MmctlUnitTestSuite) TestSendPasswordResetEmailCmd() { default: s.client. EXPECT(). - SendPasswordResetEmail(email). + SendPasswordResetEmail(context.Background(), email). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) } @@ -945,13 +946,13 @@ func (s *MmctlUnitTestSuite) TestUserInviteCmd() { s.client. EXPECT(). - GetTeam(argTeam, ""). + GetTeam(context.Background(), argTeam, ""). Return(&model.Team{Id: argTeam}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - InviteUsersToTeam(argTeam, []string{argUser}). + InviteUsersToTeam(context.Background(), argTeam, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -970,19 +971,19 @@ func (s *MmctlUnitTestSuite) TestUserInviteCmd() { s.client. EXPECT(). - GetTeam(argTeam, ""). + GetTeam(context.Background(), argTeam, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(argTeam, ""). + GetTeamByName(context.Background(), argTeam, ""). Return(&model.Team{Id: resultID}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - InviteUsersToTeam(resultID, []string{argUser}). + InviteUsersToTeam(context.Background(), resultID, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -1007,38 +1008,38 @@ func (s *MmctlUnitTestSuite) TestUserInviteCmd() { // Setup GetTeam s.client. EXPECT(). - GetTeam(argTeam[0], ""). + GetTeam(context.Background(), argTeam[0], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(argTeam[1], ""). + GetTeam(context.Background(), argTeam[1], ""). Return(resultTeamModels[1], &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(argTeam[2], ""). + GetTeam(context.Background(), argTeam[2], ""). Return(resultTeamModels[2], &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(argTeam[3], ""). + GetTeam(context.Background(), argTeam[3], ""). Return(nil, &model.Response{}, nil). Times(1) // Setup GetTeamByName s.client. EXPECT(). - GetTeamByName(argTeam[0], ""). + GetTeamByName(context.Background(), argTeam[0], ""). Return(resultTeamModels[0], &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(argTeam[3], ""). + GetTeamByName(context.Background(), argTeam[3], ""). Return(resultTeamModels[3], &model.Response{}, nil). Times(1) @@ -1046,7 +1047,7 @@ func (s *MmctlUnitTestSuite) TestUserInviteCmd() { for _, resultTeamModel := range resultTeamModels { s.client. EXPECT(). - InviteUsersToTeam(resultTeamModel.Id, []string{argUser}). + InviteUsersToTeam(context.Background(), resultTeamModel.Id, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) } @@ -1067,13 +1068,13 @@ func (s *MmctlUnitTestSuite) TestUserInviteCmd() { s.client. EXPECT(). - GetTeam(argTeam, ""). + GetTeam(context.Background(), argTeam, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(argTeam, ""). + GetTeamByName(context.Background(), argTeam, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -1093,13 +1094,13 @@ func (s *MmctlUnitTestSuite) TestUserInviteCmd() { s.client. EXPECT(). - GetTeam(argTeam, ""). + GetTeam(context.Background(), argTeam, ""). Return(&model.Team{Id: argTeam, Name: resultName}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - InviteUsersToTeam(argTeam, []string{argUser}). + InviteUsersToTeam(context.Background(), argTeam, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -1127,87 +1128,87 @@ func (s *MmctlUnitTestSuite) TestUserInviteCmd() { // Setup GetTeam s.client. EXPECT(). - GetTeam(argTeam[0], ""). + GetTeam(context.Background(), argTeam[0], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(argTeam[1], ""). + GetTeam(context.Background(), argTeam[1], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(argTeam[2], ""). + GetTeam(context.Background(), argTeam[2], ""). Return(resultTeamModels[2], &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(argTeam[3], ""). + GetTeam(context.Background(), argTeam[3], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(argTeam[4], ""). + GetTeam(context.Background(), argTeam[4], ""). Return(resultTeamModels[4], &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeam(argTeam[5], ""). + GetTeam(context.Background(), argTeam[5], ""). Return(resultTeamModels[5], &model.Response{}, nil). Times(1) // Setup GetTeamByName s.client. EXPECT(). - GetTeamByName(argTeam[0], ""). + GetTeamByName(context.Background(), argTeam[0], ""). Return(resultTeamModels[0], &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(argTeam[1], ""). + GetTeamByName(context.Background(), argTeam[1], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetTeamByName(argTeam[3], ""). + GetTeamByName(context.Background(), argTeam[3], ""). Return(resultTeamModels[3], &model.Response{}, nil). Times(1) // Setup InviteUsersToTeam s.client. EXPECT(). - InviteUsersToTeam(resultTeamModels[0].Id, []string{argUser}). + InviteUsersToTeam(context.Background(), resultTeamModels[0].Id, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) s.client. EXPECT(). - InviteUsersToTeam(resultTeamModels[2].Id, []string{argUser}). + InviteUsersToTeam(context.Background(), resultTeamModels[2].Id, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) s.client. EXPECT(). - InviteUsersToTeam(resultTeamModels[3].Id, []string{argUser}). + InviteUsersToTeam(context.Background(), resultTeamModels[3].Id, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) s.client. EXPECT(). - InviteUsersToTeam(resultTeamModels[4].Id, []string{argUser}). + InviteUsersToTeam(context.Background(), resultTeamModels[4].Id, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) s.client. EXPECT(). - InviteUsersToTeam(resultTeamModels[5].Id, []string{argUser}). + InviteUsersToTeam(context.Background(), resultTeamModels[5].Id, []string{argUser}). Return(&model.Response{StatusCode: http.StatusBadRequest}, nil). Times(1) @@ -1271,7 +1272,7 @@ func (s *MmctlUnitTestSuite) TestUserCreateCmd() { s.client. EXPECT(). - CreateUser(&mockUser). + CreateUser(context.Background(), &mockUser). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -1296,7 +1297,7 @@ func (s *MmctlUnitTestSuite) TestUserCreateCmd() { s.client. EXPECT(). - CreateUser(&mockUser). + CreateUser(context.Background(), &mockUser). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -1322,7 +1323,7 @@ func (s *MmctlUnitTestSuite) TestUserCreateCmd() { s.client. EXPECT(). - CreateUser(&mockUser). + CreateUser(context.Background(), &mockUser). Return(&mockUser, &model.Response{}, errors.New("remote error")). Times(1) @@ -1341,13 +1342,13 @@ func (s *MmctlUnitTestSuite) TestUserCreateCmd() { s.client. EXPECT(). - CreateUser(&mockUser). + CreateUser(context.Background(), &mockUser). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(mockUser.Id, "system_user system_admin"). + UpdateUserRoles(context.Background(), mockUser.Id, "system_user system_admin"). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -1369,13 +1370,13 @@ func (s *MmctlUnitTestSuite) TestUserCreateCmd() { s.client. EXPECT(). - CreateUser(&mockUser). + CreateUser(context.Background(), &mockUser). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DemoteUserToGuest(mockUser.Id). + DemoteUserToGuest(context.Background(), mockUser.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -1397,13 +1398,13 @@ func (s *MmctlUnitTestSuite) TestUserCreateCmd() { s.client. EXPECT(). - CreateUser(&mockUser). + CreateUser(context.Background(), &mockUser). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserRoles(mockUser.Id, "system_user system_admin"). + UpdateUserRoles(context.Background(), mockUser.Id, "system_user system_admin"). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("remote error")). Times(1) @@ -1451,19 +1452,19 @@ func (s *MmctlUnitTestSuite) TestUpdateUserEmailCmd() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("no user found with the given username")). Times(1) s.client. EXPECT(). - GetUser(userArg, ""). + GetUser(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("no user found with the given id")). Times(1) @@ -1483,19 +1484,19 @@ func (s *MmctlUnitTestSuite) TestUpdateUserEmailCmd() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(¤tUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUser(¤tUser). + UpdateUser(context.Background(), ¤tUser). Return(nil, &model.Response{}, errors.New("remote error")). Times(1) @@ -1516,19 +1517,19 @@ func (s *MmctlUnitTestSuite) TestUpdateUserEmailCmd() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(¤tUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUser(¤tUser). + UpdateUser(context.Background(), ¤tUser). Return(&updatedUser, &model.Response{}, nil). Times(1) @@ -1551,13 +1552,13 @@ func (s *MmctlUnitTestSuite) TestUpdateUserEmailCmd() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(¤tUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUser(¤tUser). + UpdateUser(context.Background(), ¤tUser). Return(&updatedUser, &model.Response{}, nil). Times(1) @@ -1580,25 +1581,25 @@ func (s *MmctlUnitTestSuite) TestUpdateUserEmailCmd() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("no user found with the given email")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("no user found with the given username")). Times(1) s.client. EXPECT(). - GetUser(userArg, ""). + GetUser(context.Background(), userArg, ""). Return(¤tUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUser(¤tUser). + UpdateUser(context.Background(), ¤tUser). Return(&updatedUser, &model.Response{}, nil). Times(1) @@ -1616,13 +1617,13 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() { s.client. EXPECT(). - GetUserByEmail("userId", ""). + GetUserByEmail(context.Background(), "userId", ""). Return(&model.User{Id: "userId"}, nil, nil). Times(1) s.client. EXPECT(). - UpdateUserMfa("userId", "", false). + UpdateUserMfa(context.Background(), "userId", "", false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -1637,19 +1638,19 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() { s.client. EXPECT(). - GetUserByEmail("userId", ""). + GetUserByEmail(context.Background(), "userId", ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUserByUsername("userId", ""). + GetUserByUsername(context.Background(), "userId", ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUser("userId", ""). + GetUser(context.Background(), "userId", ""). Return(nil, nil, nil). Times(1) @@ -1674,13 +1675,13 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() { s.client. EXPECT(). - GetUserByEmail("userId", ""). + GetUserByEmail(context.Background(), "userId", ""). Return(&model.User{Id: "userId"}, nil, nil). Times(1) s.client. EXPECT(). - UpdateUserMfa("userId", "", false). + UpdateUserMfa(context.Background(), "userId", "", false). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -1705,25 +1706,25 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() { if user == "notfounduser" { s.client. EXPECT(). - GetUserByEmail(user, ""). + GetUserByEmail(context.Background(), user, ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(user, ""). + GetUserByUsername(context.Background(), user, ""). Return(nil, nil, nil). Times(1) s.client. EXPECT(). - GetUser(user, ""). + GetUser(context.Background(), user, ""). Return(nil, nil, nil). Times(1) } else { s.client. EXPECT(). - GetUserByEmail(user, ""). + GetUserByEmail(context.Background(), user, ""). Return(&model.User{Id: user}, nil, nil). Times(1) } @@ -1733,13 +1734,13 @@ func (s *MmctlUnitTestSuite) TestResetUserMfaCmd() { if user == "error1" { s.client. EXPECT(). - UpdateUserMfa(user, "", false). + UpdateUserMfa(context.Background(), user, "", false). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) } else if user != "notfounduser" { s.client. EXPECT(). - UpdateUserMfa(user, "", false). + UpdateUserMfa(context.Background(), user, "", false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) } @@ -1786,7 +1787,7 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() { s.client. EXPECT(). - GetUsers(page, perPage, ""). + GetUsers(context.Background(), page, perPage, ""). Return([]*model.User{&mockUser}, &model.Response{}, nil). Times(1) @@ -1813,19 +1814,19 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() { s.client. EXPECT(). - GetUsers(0, perPage, ""). + GetUsers(context.Background(), 0, perPage, ""). Return([]*model.User{&mockUser1}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUsers(1, perPage, ""). + GetUsers(context.Background(), 1, perPage, ""). Return([]*model.User{&mockUser2}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUsers(2, perPage, ""). + GetUsers(context.Background(), 2, perPage, ""). Return([]*model.User{}, &model.Response{}, nil). Times(1) @@ -1848,7 +1849,7 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() { s.client. EXPECT(). - GetUsers(page, perPage, ""). + GetUsers(context.Background(), page, perPage, ""). Return([]*model.User{}, &model.Response{}, nil). Times(1) @@ -1872,7 +1873,7 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() { s.client. EXPECT(). - GetUsers(page, perPage, ""). + GetUsers(context.Background(), page, perPage, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -1896,7 +1897,7 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() { s.client. EXPECT(). - GetUsers(page, perPage, ""). + GetUsers(context.Background(), page, perPage, ""). Return([]*model.User{&mockUser}, &model.Response{}, nil). Times(1) @@ -1924,13 +1925,13 @@ func (s *MmctlUnitTestSuite) TestListUserCmdF() { s.client. EXPECT(). - GetTeamByName(team, ""). + GetTeamByName(context.Background(), team, ""). Return(&model.Team{Id: resultID}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUsersInTeam(resultID, page, perPage, ""). + GetUsersInTeam(context.Background(), resultID, page, perPage, ""). Return([]*model.User{&mockUser}, &model.Response{}, nil). Times(1) @@ -1949,13 +1950,13 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, false). + UpdateUserActive(context.Background(), mockUser.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -1972,19 +1973,19 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { s.client. EXPECT(). - GetUserByEmail(usernameArg, ""). + GetUserByEmail(context.Background(), usernameArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(usernameArg, ""). + GetUserByUsername(context.Background(), usernameArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, false). + UpdateUserActive(context.Background(), mockUser.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2000,25 +2001,25 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { s.client. EXPECT(). - GetUserByEmail(mockUser.Id, ""). + GetUserByEmail(context.Background(), mockUser.Id, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(mockUser.Id, ""). + GetUserByUsername(context.Background(), mockUser.Id, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(mockUser.Id, ""). + GetUser(context.Background(), mockUser.Id, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, false). + UpdateUserActive(context.Background(), mockUser.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2035,13 +2036,13 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { s.client. EXPECT(). - GetUserByEmail(arg, ""). + GetUserByEmail(context.Background(), arg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser.Id, false). + UpdateUserActive(context.Background(), mockUser.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2058,19 +2059,19 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { s.client. EXPECT(). - GetUserByEmail(arg, ""). + GetUserByEmail(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(arg, ""). + GetUserByUsername(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(arg, ""). + GetUser(context.Background(), arg, ""). Return(nil, &model.Response{}, nil). Times(1) @@ -2093,7 +2094,7 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { for i := 0; i < len(argEmails); i++ { s.client. EXPECT(). - GetUserByEmail(argEmails[i], ""). + GetUserByEmail(context.Background(), argEmails[i], ""). Return(&argUsers[i], &model.Response{}, nil). Times(1) } @@ -2101,7 +2102,7 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { for i := 0; i < len(argEmails); i++ { s.client. EXPECT(). - UpdateUserActive(argUsers[i].Id, false). + UpdateUserActive(context.Background(), argUsers[i].Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) } @@ -2124,45 +2125,45 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { // mockUser1 s.client. EXPECT(). - GetUserByEmail(argsDelete[0], ""). + GetUserByEmail(context.Background(), argsDelete[0], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(argsDelete[0], ""). + GetUserByUsername(context.Background(), argsDelete[0], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(argsDelete[0], ""). + GetUser(context.Background(), argsDelete[0], ""). Return(&argUsers[0], &model.Response{}, nil). Times(1) // mockUser2 s.client. EXPECT(). - GetUserByEmail(argsDelete[1], ""). + GetUserByEmail(context.Background(), argsDelete[1], ""). Return(&argUsers[1], &model.Response{}, nil). Times(1) // mockUser3 s.client. EXPECT(). - GetUserByEmail(argsDelete[2], ""). + GetUserByEmail(context.Background(), argsDelete[2], ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(argsDelete[2], ""). + GetUserByUsername(context.Background(), argsDelete[2], ""). Return(&argUsers[2], &model.Response{}, nil). Times(1) for _, user := range argUsers { s.client. EXPECT(). - UpdateUserActive(user.Id, false). + UpdateUserActive(context.Background(), user.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) } @@ -2181,32 +2182,32 @@ func (s *MmctlUnitTestSuite) TestUserDeactivateCmd() { // mockUser1 s.client. EXPECT(). - GetUserByEmail(mockUser1.Email, ""). + GetUserByEmail(context.Background(), mockUser1.Email, ""). Return(&mockUser1, &model.Response{}, nil). Times(1) // nonexistent email s.client. EXPECT(). - GetUserByEmail(nonexistentEmail, ""). + GetUserByEmail(context.Background(), nonexistentEmail, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(nonexistentEmail, ""). + GetUserByUsername(context.Background(), nonexistentEmail, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUser(nonexistentEmail, ""). + GetUser(context.Background(), nonexistentEmail, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateUserActive(mockUser1.Id, false). + UpdateUserActive(context.Background(), mockUser1.Id, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2226,13 +2227,13 @@ func (s *MmctlUnitTestSuite) TestVerifyUserEmailWithoutTokenCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - VerifyUserEmailWithoutToken(mockUser.Id). + VerifyUserEmailWithoutToken(context.Background(), mockUser.Id). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -2249,19 +2250,19 @@ func (s *MmctlUnitTestSuite) TestVerifyUserEmailWithoutTokenCmd() { s.client. EXPECT(). - GetUserByEmail(userArg, ""). + GetUserByEmail(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("")). Times(1) s.client. EXPECT(). - GetUserByUsername(userArg, ""). + GetUserByUsername(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("")). Times(1) s.client. EXPECT(). - GetUser(userArg, ""). + GetUser(context.Background(), userArg, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, errors.New("")). Times(1) @@ -2287,13 +2288,13 @@ func (s *MmctlUnitTestSuite) TestVerifyUserEmailWithoutTokenCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - VerifyUserEmailWithoutToken(mockUser.Id). + VerifyUserEmailWithoutToken(context.Background(), mockUser.Id). Return(nil, &model.Response{}, errors.New("some-message")). Times(1) @@ -2322,13 +2323,13 @@ func (s *MmctlUnitTestSuite) TestUserConvertCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - ConvertUserToBot(mockUser.Id). + ConvertUserToBot(context.Background(), mockUser.Id). Return(&mockBot, &model.Response{}, nil). Times(1) @@ -2360,19 +2361,19 @@ func (s *MmctlUnitTestSuite) TestUserConvertCmd() { s.client. EXPECT(). - GetUserByEmail(userNameArg, ""). + GetUserByEmail(context.Background(), userNameArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(userNameArg, ""). + GetUserByUsername(context.Background(), userNameArg, ""). Return(&mockBotUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - ConvertBotToUser(mockBot.UserId, &userPatch, false). + ConvertBotToUser(context.Background(), mockBot.UserId, &userPatch, false). Return(&mockUser, &model.Response{}, nil). Times(1) @@ -2404,13 +2405,13 @@ func (s *MmctlUnitTestSuite) TestUserConvertCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - ConvertUserToBot(mockUser.Id). + ConvertUserToBot(context.Background(), mockUser.Id). Return(nil, &model.Response{}, errors.New("some-message")). Times(1) @@ -2440,19 +2441,19 @@ func (s *MmctlUnitTestSuite) TestUserConvertCmd() { s.client. EXPECT(). - GetUserByEmail(userNameArg, ""). + GetUserByEmail(context.Background(), userNameArg, ""). Return(nil, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByUsername(userNameArg, ""). + GetUserByUsername(context.Background(), userNameArg, ""). Return(&mockBotUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - ConvertBotToUser(mockBot.UserId, &userPatch, false). + ConvertBotToUser(context.Background(), mockBot.UserId, &userPatch, false). Return(nil, &model.Response{}, errors.New("some-message")). Times(1) @@ -2475,7 +2476,7 @@ func (s *MmctlUnitTestSuite) TestMigrateAuthCmd() { s.client. EXPECT(). - MigrateAuthToLdap(fromAuth, matchField, false). + MigrateAuthToLdap(context.Background(), fromAuth, matchField, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2514,7 +2515,7 @@ func (s *MmctlUnitTestSuite) TestMigrateAuthCmd() { s.client. EXPECT(). - MigrateAuthToSaml(fromAuth, userData, false). + MigrateAuthToSaml(context.Background(), fromAuth, userData, false). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2536,7 +2537,7 @@ func (s *MmctlUnitTestSuite) TestMigrateAuthCmd() { s.client. EXPECT(). - MigrateAuthToSaml(fromAuth, map[string]string{}, true). + MigrateAuthToSaml(context.Background(), fromAuth, map[string]string{}, true). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2604,7 +2605,7 @@ func (s *MmctlUnitTestSuite) TestMigrateAuthCmd() { s.client. EXPECT(). - MigrateAuthToLdap(fromAuth, matchField, false). + MigrateAuthToLdap(context.Background(), fromAuth, matchField, false). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("some-error")). Times(1) @@ -2625,7 +2626,7 @@ func (s *MmctlUnitTestSuite) TestMigrateAuthCmd() { s.client. EXPECT(). - MigrateAuthToSaml(fromAuth, map[string]string{}, true). + MigrateAuthToSaml(context.Background(), fromAuth, map[string]string{}, true). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("some-error")). Times(1) @@ -2643,13 +2644,13 @@ func (s *MmctlUnitTestSuite) TestPromoteGuestToUserCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PromoteGuestToUser(mockUser.Id). + PromoteGuestToUser(context.Background(), mockUser.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2667,13 +2668,13 @@ func (s *MmctlUnitTestSuite) TestPromoteGuestToUserCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - PromoteGuestToUser(mockUser.Id). + PromoteGuestToUser(context.Background(), mockUser.Id). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("some-error")). Times(1) @@ -2693,13 +2694,13 @@ func (s *MmctlUnitTestSuite) TestDemoteUserToGuestCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DemoteUserToGuest(mockUser.Id). + DemoteUserToGuest(context.Background(), mockUser.Id). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -2717,13 +2718,13 @@ func (s *MmctlUnitTestSuite) TestDemoteUserToGuestCmd() { s.client. EXPECT(). - GetUserByEmail(emailArg, ""). + GetUserByEmail(context.Background(), emailArg, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DemoteUserToGuest(mockUser.Id). + DemoteUserToGuest(context.Background(), mockUser.Id). Return(&model.Response{StatusCode: http.StatusBadRequest}, errors.New("some-error")). Times(1) diff --git a/server/cmd/mmctl/commands/userargs.go b/server/cmd/mmctl/commands/userargs.go index 2e2cb6ae54..dbbd4322d9 100644 --- a/server/cmd/mmctl/commands/userargs.go +++ b/server/cmd/mmctl/commands/userargs.go @@ -4,6 +4,7 @@ package commands import ( + "context" "errors" "net/url" "strings" @@ -26,16 +27,16 @@ func getUsersFromUserArgs(c client.Client, userArgs []string) []*model.User { func getUserFromUserArg(c client.Client, userArg string) *model.User { var user *model.User if !checkDots(userArg) { - user, _, _ = c.GetUserByEmail(userArg, "") + user, _, _ = c.GetUserByEmail(context.TODO(), userArg, "") } if !checkSlash(userArg) { if user == nil { - user, _, _ = c.GetUserByUsername(userArg, "") + user, _, _ = c.GetUserByUsername(context.TODO(), userArg, "") } if user == nil { - user, _, _ = c.GetUser(userArg, "") + user, _, _ = c.GetUser(context.TODO(), userArg, "") } } @@ -75,7 +76,7 @@ func getUserFromArg(c client.Client, userArg string) (*model.User, error) { var response *model.Response var err error if !checkDots(userArg) { - user, response, err = c.GetUserByEmail(userArg, "") + user, response, err = c.GetUserByEmail(context.TODO(), userArg, "") if err != nil { nErr := ExtractErrorFromResponse(response, err) var nfErr *NotFoundError @@ -88,7 +89,7 @@ func getUserFromArg(c client.Client, userArg string) (*model.User, error) { if !checkSlash(userArg) { if user == nil { - user, response, err = c.GetUserByUsername(userArg, "") + user, response, err = c.GetUserByUsername(context.TODO(), userArg, "") if err != nil { nErr := ExtractErrorFromResponse(response, err) var nfErr *NotFoundError @@ -100,7 +101,7 @@ func getUserFromArg(c client.Client, userArg string) (*model.User, error) { } if user == nil { - user, response, err = c.GetUser(userArg, "") + user, response, err = c.GetUser(context.TODO(), userArg, "") if err != nil { nErr := ExtractErrorFromResponse(response, err) var nfErr *NotFoundError diff --git a/server/cmd/mmctl/commands/userargs_test.go b/server/cmd/mmctl/commands/userargs_test.go index 3193b86469..11cc615b34 100644 --- a/server/cmd/mmctl/commands/userargs_test.go +++ b/server/cmd/mmctl/commands/userargs_test.go @@ -3,6 +3,7 @@ package commands import ( + "context" "fmt" "net/http" @@ -19,17 +20,17 @@ func (s *MmctlUnitTestSuite) TestGetUserFromArgs() { printer.Clean() s.client. EXPECT(). - GetUserByEmail(notFoundEmail, ""). + GetUserByEmail(context.Background(), notFoundEmail, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, notFoundErr). Times(1) s.client. EXPECT(). - GetUserByUsername(notFoundEmail, ""). + GetUserByUsername(context.Background(), notFoundEmail, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, notFoundErr). Times(1) s.client. EXPECT(). - GetUser(notFoundEmail, ""). + GetUser(context.Background(), notFoundEmail, ""). Return(nil, &model.Response{StatusCode: http.StatusNotFound}, notFoundErr). Times(1) @@ -45,17 +46,17 @@ func (s *MmctlUnitTestSuite) TestGetUserFromArgs() { printer.Clean() s.client. EXPECT(). - GetUserByEmail(badRequestEmail, ""). + GetUserByEmail(context.Background(), badRequestEmail, ""). Return(nil, &model.Response{StatusCode: http.StatusBadRequest}, badRequestErr). Times(1) s.client. EXPECT(). - GetUserByUsername(badRequestEmail, ""). + GetUserByUsername(context.Background(), badRequestEmail, ""). Return(nil, &model.Response{StatusCode: http.StatusBadRequest}, badRequestErr). Times(1) s.client. EXPECT(). - GetUser(badRequestEmail, ""). + GetUser(context.Background(), badRequestEmail, ""). Return(nil, &model.Response{StatusCode: http.StatusBadRequest}, badRequestErr). Times(1) @@ -71,7 +72,7 @@ func (s *MmctlUnitTestSuite) TestGetUserFromArgs() { printer.Clean() s.client. EXPECT(). - GetUserByEmail(unexpectedErrEmail, ""). + GetUserByEmail(context.Background(), unexpectedErrEmail, ""). Return(nil, &model.Response{StatusCode: http.StatusInternalServerError}, unexpectedErr). Times(1) users, err := getUsersFromArgs(s.client, []string{unexpectedErrEmail}) @@ -85,7 +86,7 @@ func (s *MmctlUnitTestSuite) TestGetUserFromArgs() { printer.Clean() s.client. EXPECT(). - GetUserByEmail(forbiddenErrEmail, ""). + GetUserByEmail(context.Background(), forbiddenErrEmail, ""). Return(nil, &model.Response{StatusCode: http.StatusForbidden}, forbiddenErr). Times(1) users, err := getUsersFromArgs(s.client, []string{forbiddenErrEmail}) @@ -99,7 +100,7 @@ func (s *MmctlUnitTestSuite) TestGetUserFromArgs() { printer.Clean() s.client. EXPECT(). - GetUserByEmail(successEmail, ""). + GetUserByEmail(context.Background(), successEmail, ""). Return(successUser, nil, nil). Times(1) users, err := getUsersFromArgs(s.client, []string{successEmail}) diff --git a/server/cmd/mmctl/commands/webhook.go b/server/cmd/mmctl/commands/webhook.go index 208ed81979..1d896ee7cb 100644 --- a/server/cmd/mmctl/commands/webhook.go +++ b/server/cmd/mmctl/commands/webhook.go @@ -4,6 +4,8 @@ package commands import ( + "context" + "github.com/mattermost/mattermost-server/server/public/model" "github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/client" @@ -90,7 +92,7 @@ func listWebhookCmdF(c client.Client, command *cobra.Command, args []string) err if len(args) < 1 { var err error // If no team is specified, list all teams - teams, _, err = c.GetAllTeams("", 0, 100000000) + teams, _, err = c.GetAllTeams(context.TODO(), "", 0, 100000000) if err != nil { return err } @@ -107,13 +109,13 @@ func listWebhookCmdF(c client.Client, command *cobra.Command, args []string) err // Fetch all hooks with a very large limit so we get them all. incomingResult := make(chan StoreResult, 1) go func() { - incomingHooks, _, err := c.GetIncomingWebhooksForTeam(team.Id, 0, 100000000, "") + incomingHooks, _, err := c.GetIncomingWebhooksForTeam(context.TODO(), team.Id, 0, 100000000, "") incomingResult <- StoreResult{Data: incomingHooks, Err: err} close(incomingResult) }() outgoingResult := make(chan StoreResult, 1) go func() { - outgoingHooks, _, err := c.GetOutgoingWebhooksForTeam(team.Id, 0, 100000000, "") + outgoingHooks, _, err := c.GetOutgoingWebhooksForTeam(context.TODO(), team.Id, 0, 100000000, "") outgoingResult <- StoreResult{Data: outgoingHooks, Err: err} close(outgoingResult) }() @@ -170,7 +172,7 @@ func createIncomingWebhookCmdF(c client.Client, command *cobra.Command, args []s UserId: user.Id, } - createdIncoming, _, err := c.CreateIncomingWebhook(incomingWebhook) + createdIncoming, _, err := c.CreateIncomingWebhook(context.TODO(), incomingWebhook) if err != nil { printer.PrintError("Unable to create webhook") return err @@ -187,7 +189,7 @@ func modifyIncomingWebhookCmdF(c client.Client, command *cobra.Command, args []s printer.SetSingle(true) webhookArg := args[0] - oldHook, _, err := c.GetIncomingWebhook(webhookArg, "") + oldHook, _, err := c.GetIncomingWebhook(context.TODO(), webhookArg, "") if err != nil { return errors.New("Unable to find webhook '" + webhookArg + "'") } @@ -219,7 +221,7 @@ func modifyIncomingWebhookCmdF(c client.Client, command *cobra.Command, args []s updatedHook.ChannelLocked = channelLocked var newHook *model.IncomingWebhook - if newHook, _, err = c.UpdateIncomingWebhook(updatedHook); err != nil { + if newHook, _, err = c.UpdateIncomingWebhook(context.TODO(), updatedHook); err != nil { printer.PrintError("Unable to modify incoming webhook") return err } @@ -283,7 +285,7 @@ func createOutgoingWebhookCmdF(c client.Client, command *cobra.Command, args []s } } - createdOutgoing, _, err := c.CreateOutgoingWebhook(outgoingWebhook) + createdOutgoing, _, err := c.CreateOutgoingWebhook(context.TODO(), outgoingWebhook) if err != nil { printer.PrintError("Unable to create outgoing webhook") return err @@ -300,7 +302,7 @@ func modifyOutgoingWebhookCmdF(c client.Client, command *cobra.Command, args []s printer.SetSingle(true) webhookArg := args[0] - oldHook, _, err := c.GetOutgoingWebhook(webhookArg) + oldHook, _, err := c.GetOutgoingWebhook(context.TODO(), webhookArg) if err != nil { return errors.New("unable to find webhook '" + webhookArg + "'") } @@ -367,7 +369,7 @@ func modifyOutgoingWebhookCmdF(c client.Client, command *cobra.Command, args []s } var newHook *model.OutgoingWebhook - if newHook, _, err = c.UpdateOutgoingWebhook(updatedHook); err != nil { + if newHook, _, err = c.UpdateOutgoingWebhook(context.TODO(), updatedHook); err != nil { printer.PrintError("Unable to modify outgoing webhook") return err } @@ -380,8 +382,8 @@ func deleteWebhookCmdF(c client.Client, command *cobra.Command, args []string) e printer.SetSingle(true) webhookID := args[0] - if incomingWebhook, _, err := c.GetIncomingWebhook(webhookID, ""); err == nil { - _, err := c.DeleteIncomingWebhook(webhookID) + if incomingWebhook, _, err := c.GetIncomingWebhook(context.TODO(), webhookID, ""); err == nil { + _, err := c.DeleteIncomingWebhook(context.TODO(), webhookID) if err != nil { printer.PrintError("Unable to delete webhook '" + webhookID + "'") return err @@ -390,8 +392,8 @@ func deleteWebhookCmdF(c client.Client, command *cobra.Command, args []string) e return nil } - if outgoingWebhook, _, err := c.GetOutgoingWebhook(webhookID); err == nil { - _, err := c.DeleteOutgoingWebhook(webhookID) + if outgoingWebhook, _, err := c.GetOutgoingWebhook(context.TODO(), webhookID); err == nil { + _, err := c.DeleteOutgoingWebhook(context.TODO(), webhookID) if err != nil { printer.PrintError("Unable to delete webhook '" + webhookID + "'") return err @@ -408,12 +410,12 @@ func showWebhookCmdF(c client.Client, command *cobra.Command, args []string) err printer.SetSingle(true) webhookID := args[0] - if incomingWebhook, _, err := c.GetIncomingWebhook(webhookID, ""); err == nil { + if incomingWebhook, _, err := c.GetIncomingWebhook(context.TODO(), webhookID, ""); err == nil { printer.Print(*incomingWebhook) return nil } - if outgoingWebhook, _, err := c.GetOutgoingWebhook(webhookID); err == nil { + if outgoingWebhook, _, err := c.GetOutgoingWebhook(context.TODO(), webhookID); err == nil { printer.Print(*outgoingWebhook) return nil } diff --git a/server/cmd/mmctl/commands/webhook_test.go b/server/cmd/mmctl/commands/webhook_test.go index 1e2098356d..9c255dcbd9 100644 --- a/server/cmd/mmctl/commands/webhook_test.go +++ b/server/cmd/mmctl/commands/webhook_test.go @@ -4,6 +4,7 @@ package commands import ( + "context" "net/http" "strconv" @@ -39,19 +40,19 @@ func (s *MmctlUnitTestSuite) TestListWebhookCmd() { s.client. EXPECT(). - GetAllTeams("", 0, 100000000). + GetAllTeams(context.Background(), "", 0, 100000000). Return([]*model.Team{&mockTeam}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetIncomingWebhooksForTeam(teamID, 0, 100000000, ""). + GetIncomingWebhooksForTeam(context.Background(), teamID, 0, 100000000, ""). Return([]*model.IncomingWebhook{&mockIncomingWebhook}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetOutgoingWebhooksForTeam(teamID, 0, 100000000, ""). + GetOutgoingWebhooksForTeam(context.Background(), teamID, 0, 100000000, ""). Return([]*model.OutgoingWebhook{&mockOutgoingWebhook}, &model.Response{}, nil). Times(1) @@ -79,19 +80,19 @@ func (s *MmctlUnitTestSuite) TestListWebhookCmd() { } s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetIncomingWebhooksForTeam(teamID, 0, 100000000, ""). + GetIncomingWebhooksForTeam(context.Background(), teamID, 0, 100000000, ""). Return([]*model.IncomingWebhook{&mockIncomingWebhook}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetOutgoingWebhooksForTeam(teamID, 0, 100000000, ""). + GetOutgoingWebhooksForTeam(context.Background(), teamID, 0, 100000000, ""). Return([]*model.OutgoingWebhook{&mockOutgoingWebhook}, &model.Response{}, nil). Times(1) @@ -113,19 +114,19 @@ func (s *MmctlUnitTestSuite) TestListWebhookCmd() { s.client. EXPECT(). - GetAllTeams("", 0, 100000000). + GetAllTeams(context.Background(), "", 0, 100000000). Return([]*model.Team{&mockTeam}, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetIncomingWebhooksForTeam(teamID, 0, 100000000, ""). + GetIncomingWebhooksForTeam(context.Background(), teamID, 0, 100000000, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetOutgoingWebhooksForTeam(teamID, 0, 100000000, ""). + GetOutgoingWebhooksForTeam(context.Background(), teamID, 0, 100000000, ""). Return(nil, &model.Response{}, mockError). Times(1) @@ -173,19 +174,19 @@ func (s *MmctlUnitTestSuite) TestCreateIncomingWebhookCmd() { s.client. EXPECT(). - GetChannel(channelID, ""). + GetChannel(context.Background(), channelID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailID, ""). + GetUserByEmail(context.Background(), emailID, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateIncomingWebhook(&mockIncomingWebhook). + CreateIncomingWebhook(context.Background(), &mockIncomingWebhook). Return(&returnedIncomingWebhook, &model.Response{}, nil). Times(1) @@ -217,19 +218,19 @@ func (s *MmctlUnitTestSuite) TestCreateIncomingWebhookCmd() { s.client. EXPECT(). - GetChannel(channelID, ""). + GetChannel(context.Background(), channelID, ""). Return(&mockChannel, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailID, ""). + GetUserByEmail(context.Background(), emailID, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateIncomingWebhook(&mockIncomingWebhook). + CreateIncomingWebhook(context.Background(), &mockIncomingWebhook). Return(nil, &model.Response{}, mockError). Times(1) @@ -268,13 +269,13 @@ func (s *MmctlUnitTestSuite) TestModifyIncomingWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(incomingWebhookID, ""). + GetIncomingWebhook(context.Background(), incomingWebhookID, ""). Return(&mockIncomingWebhook, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateIncomingWebhook(&mockIncomingWebhook). + UpdateIncomingWebhook(context.Background(), &mockIncomingWebhook). Return(&updatedIncomingWebhook, &model.Response{}, nil). Times(1) @@ -306,13 +307,13 @@ func (s *MmctlUnitTestSuite) TestModifyIncomingWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(incomingWebhookID, ""). + GetIncomingWebhook(context.Background(), incomingWebhookID, ""). Return(&mockIncomingWebhook, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateIncomingWebhook(&mockIncomingWebhook). + UpdateIncomingWebhook(context.Background(), &mockIncomingWebhook). Return(nil, &model.Response{}, mockError). Times(1) @@ -362,19 +363,19 @@ func (s *MmctlUnitTestSuite) TestCreateOutgoingWebhookCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailID, ""). + GetUserByEmail(context.Background(), emailID, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateOutgoingWebhook(&mockOutgoingWebhook). + CreateOutgoingWebhook(context.Background(), &mockOutgoingWebhook). Return(&createdOutgoingWebhook, &model.Response{}, nil). Times(1) @@ -408,19 +409,19 @@ func (s *MmctlUnitTestSuite) TestCreateOutgoingWebhookCmd() { s.client. EXPECT(). - GetTeam(teamID, ""). + GetTeam(context.Background(), teamID, ""). Return(&mockTeam, &model.Response{}, nil). Times(1) s.client. EXPECT(). - GetUserByEmail(emailID, ""). + GetUserByEmail(context.Background(), emailID, ""). Return(&mockUser, &model.Response{}, nil). Times(1) s.client. EXPECT(). - CreateOutgoingWebhook(&mockOutgoingWebhook). + CreateOutgoingWebhook(context.Background(), &mockOutgoingWebhook). Return(nil, &model.Response{}, mockError). Times(1) @@ -455,13 +456,13 @@ func (s *MmctlUnitTestSuite) TestModifyOutgoingWebhookCmd() { s.client. EXPECT(). - GetOutgoingWebhook(outgoingWebhookID). + GetOutgoingWebhook(context.Background(), outgoingWebhookID). Return(&mockOutgoingWebhook, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateOutgoingWebhook(&mockOutgoingWebhook). + UpdateOutgoingWebhook(context.Background(), &mockOutgoingWebhook). Return(&updatedOutgoingWebhook, &model.Response{}, nil). Times(1) @@ -490,13 +491,13 @@ func (s *MmctlUnitTestSuite) TestModifyOutgoingWebhookCmd() { s.client. EXPECT(). - GetOutgoingWebhook(outgoingWebhookID). + GetOutgoingWebhook(context.Background(), outgoingWebhookID). Return(&mockOutgoingWebhook, &model.Response{}, nil). Times(1) s.client. EXPECT(). - UpdateOutgoingWebhook(&mockOutgoingWebhook). + UpdateOutgoingWebhook(context.Background(), &mockOutgoingWebhook). Return(nil, &model.Response{}, mockError). Times(1) @@ -519,13 +520,13 @@ func (s *MmctlUnitTestSuite) TestDeleteWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(incomingWebhookID, ""). + GetIncomingWebhook(context.Background(), incomingWebhookID, ""). Return(&mockIncomingWebhook, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DeleteIncomingWebhook(incomingWebhookID). + DeleteIncomingWebhook(context.Background(), incomingWebhookID). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -544,19 +545,19 @@ func (s *MmctlUnitTestSuite) TestDeleteWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(outgoingWebhookID, ""). + GetIncomingWebhook(context.Background(), outgoingWebhookID, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetOutgoingWebhook(outgoingWebhookID). + GetOutgoingWebhook(context.Background(), outgoingWebhookID). Return(&mockOutgoingWebhook, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DeleteOutgoingWebhook(outgoingWebhookID). + DeleteOutgoingWebhook(context.Background(), outgoingWebhookID). Return(&model.Response{StatusCode: http.StatusOK}, nil). Times(1) @@ -575,13 +576,13 @@ func (s *MmctlUnitTestSuite) TestDeleteWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(incomingWebhookID, ""). + GetIncomingWebhook(context.Background(), incomingWebhookID, ""). Return(&mockIncomingWebhook, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DeleteIncomingWebhook(incomingWebhookID). + DeleteIncomingWebhook(context.Background(), incomingWebhookID). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -600,19 +601,19 @@ func (s *MmctlUnitTestSuite) TestDeleteWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(outgoingWebhookID, ""). + GetIncomingWebhook(context.Background(), outgoingWebhookID, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetOutgoingWebhook(outgoingWebhookID). + GetOutgoingWebhook(context.Background(), outgoingWebhookID). Return(&mockOutgoingWebhook, &model.Response{}, nil). Times(1) s.client. EXPECT(). - DeleteOutgoingWebhook(outgoingWebhookID). + DeleteOutgoingWebhook(context.Background(), outgoingWebhookID). Return(&model.Response{StatusCode: http.StatusBadRequest}, mockError). Times(1) @@ -636,7 +637,7 @@ func (s *MmctlUnitTestSuite) TestShowWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(incomingWebhookID, ""). + GetIncomingWebhook(context.Background(), incomingWebhookID, ""). Return(&mockIncomingWebhook, &model.Response{}, nil). Times(1) @@ -655,13 +656,13 @@ func (s *MmctlUnitTestSuite) TestShowWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(outgoingWebhookID, ""). + GetIncomingWebhook(context.Background(), outgoingWebhookID, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetOutgoingWebhook(outgoingWebhookID). + GetOutgoingWebhook(context.Background(), outgoingWebhookID). Return(&mockOutgoingWebhook, &model.Response{}, nil). Times(1) @@ -679,13 +680,13 @@ func (s *MmctlUnitTestSuite) TestShowWebhookCmd() { s.client. EXPECT(). - GetIncomingWebhook(nonExistentID, ""). + GetIncomingWebhook(context.Background(), nonExistentID, ""). Return(nil, &model.Response{}, mockError). Times(1) s.client. EXPECT(). - GetOutgoingWebhook(nonExistentID). + GetOutgoingWebhook(context.Background(), nonExistentID). Return(nil, &model.Response{}, mockError). Times(1) diff --git a/server/cmd/mmctl/mocks/client_mock.go b/server/cmd/mmctl/mocks/client_mock.go index 1ea3f94098..3c1a566c4b 100644 --- a/server/cmd/mmctl/mocks/client_mock.go +++ b/server/cmd/mmctl/mocks/client_mock.go @@ -8,6 +8,7 @@ package mocks import ( + context "context" io "io" http "net/http" reflect "reflect" @@ -40,9 +41,9 @@ func (m *MockClient) EXPECT() *MockClientMockRecorder { } // AddChannelMember mocks base method. -func (m *MockClient) AddChannelMember(arg0, arg1 string) (*model.ChannelMember, *model.Response, error) { +func (m *MockClient) AddChannelMember(arg0 context.Context, arg1, arg2 string) (*model.ChannelMember, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddChannelMember", arg0, arg1) + ret := m.ctrl.Call(m, "AddChannelMember", arg0, arg1, arg2) ret0, _ := ret[0].(*model.ChannelMember) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -50,15 +51,15 @@ func (m *MockClient) AddChannelMember(arg0, arg1 string) (*model.ChannelMember, } // AddChannelMember indicates an expected call of AddChannelMember. -func (mr *MockClientMockRecorder) AddChannelMember(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) AddChannelMember(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddChannelMember", reflect.TypeOf((*MockClient)(nil).AddChannelMember), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddChannelMember", reflect.TypeOf((*MockClient)(nil).AddChannelMember), arg0, arg1, arg2) } // AddTeamMember mocks base method. -func (m *MockClient) AddTeamMember(arg0, arg1 string) (*model.TeamMember, *model.Response, error) { +func (m *MockClient) AddTeamMember(arg0 context.Context, arg1, arg2 string) (*model.TeamMember, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddTeamMember", arg0, arg1) + ret := m.ctrl.Call(m, "AddTeamMember", arg0, arg1, arg2) ret0, _ := ret[0].(*model.TeamMember) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -66,15 +67,15 @@ func (m *MockClient) AddTeamMember(arg0, arg1 string) (*model.TeamMember, *model } // AddTeamMember indicates an expected call of AddTeamMember. -func (mr *MockClientMockRecorder) AddTeamMember(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) AddTeamMember(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddTeamMember", reflect.TypeOf((*MockClient)(nil).AddTeamMember), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddTeamMember", reflect.TypeOf((*MockClient)(nil).AddTeamMember), arg0, arg1, arg2) } // AssignBot mocks base method. -func (m *MockClient) AssignBot(arg0, arg1 string) (*model.Bot, *model.Response, error) { +func (m *MockClient) AssignBot(arg0 context.Context, arg1, arg2 string) (*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AssignBot", arg0, arg1) + ret := m.ctrl.Call(m, "AssignBot", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -82,30 +83,30 @@ func (m *MockClient) AssignBot(arg0, arg1 string) (*model.Bot, *model.Response, } // AssignBot indicates an expected call of AssignBot. -func (mr *MockClientMockRecorder) AssignBot(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) AssignBot(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AssignBot", reflect.TypeOf((*MockClient)(nil).AssignBot), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AssignBot", reflect.TypeOf((*MockClient)(nil).AssignBot), arg0, arg1, arg2) } // CancelJob mocks base method. -func (m *MockClient) CancelJob(arg0 string) (*model.Response, error) { +func (m *MockClient) CancelJob(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CancelJob", arg0) + ret := m.ctrl.Call(m, "CancelJob", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // CancelJob indicates an expected call of CancelJob. -func (mr *MockClientMockRecorder) CancelJob(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CancelJob(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CancelJob", reflect.TypeOf((*MockClient)(nil).CancelJob), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CancelJob", reflect.TypeOf((*MockClient)(nil).CancelJob), arg0, arg1) } // CheckIntegrity mocks base method. -func (m *MockClient) CheckIntegrity() ([]model.IntegrityCheckResult, *model.Response, error) { +func (m *MockClient) CheckIntegrity(arg0 context.Context) ([]model.IntegrityCheckResult, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CheckIntegrity") + ret := m.ctrl.Call(m, "CheckIntegrity", arg0) ret0, _ := ret[0].([]model.IntegrityCheckResult) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -113,30 +114,30 @@ func (m *MockClient) CheckIntegrity() ([]model.IntegrityCheckResult, *model.Resp } // CheckIntegrity indicates an expected call of CheckIntegrity. -func (mr *MockClientMockRecorder) CheckIntegrity() *gomock.Call { +func (mr *MockClientMockRecorder) CheckIntegrity(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckIntegrity", reflect.TypeOf((*MockClient)(nil).CheckIntegrity)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckIntegrity", reflect.TypeOf((*MockClient)(nil).CheckIntegrity), arg0) } // ClearServerBusy mocks base method. -func (m *MockClient) ClearServerBusy() (*model.Response, error) { +func (m *MockClient) ClearServerBusy(arg0 context.Context) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ClearServerBusy") + ret := m.ctrl.Call(m, "ClearServerBusy", arg0) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // ClearServerBusy indicates an expected call of ClearServerBusy. -func (mr *MockClientMockRecorder) ClearServerBusy() *gomock.Call { +func (mr *MockClientMockRecorder) ClearServerBusy(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ClearServerBusy", reflect.TypeOf((*MockClient)(nil).ClearServerBusy)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ClearServerBusy", reflect.TypeOf((*MockClient)(nil).ClearServerBusy), arg0) } // ConvertBotToUser mocks base method. -func (m *MockClient) ConvertBotToUser(arg0 string, arg1 *model.UserPatch, arg2 bool) (*model.User, *model.Response, error) { +func (m *MockClient) ConvertBotToUser(arg0 context.Context, arg1 string, arg2 *model.UserPatch, arg3 bool) (*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ConvertBotToUser", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "ConvertBotToUser", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -144,15 +145,15 @@ func (m *MockClient) ConvertBotToUser(arg0 string, arg1 *model.UserPatch, arg2 b } // ConvertBotToUser indicates an expected call of ConvertBotToUser. -func (mr *MockClientMockRecorder) ConvertBotToUser(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) ConvertBotToUser(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConvertBotToUser", reflect.TypeOf((*MockClient)(nil).ConvertBotToUser), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConvertBotToUser", reflect.TypeOf((*MockClient)(nil).ConvertBotToUser), arg0, arg1, arg2, arg3) } // ConvertUserToBot mocks base method. -func (m *MockClient) ConvertUserToBot(arg0 string) (*model.Bot, *model.Response, error) { +func (m *MockClient) ConvertUserToBot(arg0 context.Context, arg1 string) (*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ConvertUserToBot", arg0) + ret := m.ctrl.Call(m, "ConvertUserToBot", arg0, arg1) ret0, _ := ret[0].(*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -160,15 +161,15 @@ func (m *MockClient) ConvertUserToBot(arg0 string) (*model.Bot, *model.Response, } // ConvertUserToBot indicates an expected call of ConvertUserToBot. -func (mr *MockClientMockRecorder) ConvertUserToBot(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) ConvertUserToBot(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConvertUserToBot", reflect.TypeOf((*MockClient)(nil).ConvertUserToBot), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConvertUserToBot", reflect.TypeOf((*MockClient)(nil).ConvertUserToBot), arg0, arg1) } // CreateBot mocks base method. -func (m *MockClient) CreateBot(arg0 *model.Bot) (*model.Bot, *model.Response, error) { +func (m *MockClient) CreateBot(arg0 context.Context, arg1 *model.Bot) (*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateBot", arg0) + ret := m.ctrl.Call(m, "CreateBot", arg0, arg1) ret0, _ := ret[0].(*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -176,15 +177,15 @@ func (m *MockClient) CreateBot(arg0 *model.Bot) (*model.Bot, *model.Response, er } // CreateBot indicates an expected call of CreateBot. -func (mr *MockClientMockRecorder) CreateBot(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateBot(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateBot", reflect.TypeOf((*MockClient)(nil).CreateBot), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateBot", reflect.TypeOf((*MockClient)(nil).CreateBot), arg0, arg1) } // CreateChannel mocks base method. -func (m *MockClient) CreateChannel(arg0 *model.Channel) (*model.Channel, *model.Response, error) { +func (m *MockClient) CreateChannel(arg0 context.Context, arg1 *model.Channel) (*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateChannel", arg0) + ret := m.ctrl.Call(m, "CreateChannel", arg0, arg1) ret0, _ := ret[0].(*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -192,15 +193,15 @@ func (m *MockClient) CreateChannel(arg0 *model.Channel) (*model.Channel, *model. } // CreateChannel indicates an expected call of CreateChannel. -func (mr *MockClientMockRecorder) CreateChannel(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateChannel(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateChannel", reflect.TypeOf((*MockClient)(nil).CreateChannel), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateChannel", reflect.TypeOf((*MockClient)(nil).CreateChannel), arg0, arg1) } // CreateCommand mocks base method. -func (m *MockClient) CreateCommand(arg0 *model.Command) (*model.Command, *model.Response, error) { +func (m *MockClient) CreateCommand(arg0 context.Context, arg1 *model.Command) (*model.Command, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateCommand", arg0) + ret := m.ctrl.Call(m, "CreateCommand", arg0, arg1) ret0, _ := ret[0].(*model.Command) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -208,15 +209,15 @@ func (m *MockClient) CreateCommand(arg0 *model.Command) (*model.Command, *model. } // CreateCommand indicates an expected call of CreateCommand. -func (mr *MockClientMockRecorder) CreateCommand(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateCommand(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCommand", reflect.TypeOf((*MockClient)(nil).CreateCommand), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateCommand", reflect.TypeOf((*MockClient)(nil).CreateCommand), arg0, arg1) } // CreateIncomingWebhook mocks base method. -func (m *MockClient) CreateIncomingWebhook(arg0 *model.IncomingWebhook) (*model.IncomingWebhook, *model.Response, error) { +func (m *MockClient) CreateIncomingWebhook(arg0 context.Context, arg1 *model.IncomingWebhook) (*model.IncomingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateIncomingWebhook", arg0) + ret := m.ctrl.Call(m, "CreateIncomingWebhook", arg0, arg1) ret0, _ := ret[0].(*model.IncomingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -224,15 +225,15 @@ func (m *MockClient) CreateIncomingWebhook(arg0 *model.IncomingWebhook) (*model. } // CreateIncomingWebhook indicates an expected call of CreateIncomingWebhook. -func (mr *MockClientMockRecorder) CreateIncomingWebhook(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateIncomingWebhook(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateIncomingWebhook", reflect.TypeOf((*MockClient)(nil).CreateIncomingWebhook), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateIncomingWebhook", reflect.TypeOf((*MockClient)(nil).CreateIncomingWebhook), arg0, arg1) } // CreateJob mocks base method. -func (m *MockClient) CreateJob(arg0 *model.Job) (*model.Job, *model.Response, error) { +func (m *MockClient) CreateJob(arg0 context.Context, arg1 *model.Job) (*model.Job, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateJob", arg0) + ret := m.ctrl.Call(m, "CreateJob", arg0, arg1) ret0, _ := ret[0].(*model.Job) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -240,15 +241,15 @@ func (m *MockClient) CreateJob(arg0 *model.Job) (*model.Job, *model.Response, er } // CreateJob indicates an expected call of CreateJob. -func (mr *MockClientMockRecorder) CreateJob(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateJob(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateJob", reflect.TypeOf((*MockClient)(nil).CreateJob), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateJob", reflect.TypeOf((*MockClient)(nil).CreateJob), arg0, arg1) } // CreateOutgoingWebhook mocks base method. -func (m *MockClient) CreateOutgoingWebhook(arg0 *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.Response, error) { +func (m *MockClient) CreateOutgoingWebhook(arg0 context.Context, arg1 *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateOutgoingWebhook", arg0) + ret := m.ctrl.Call(m, "CreateOutgoingWebhook", arg0, arg1) ret0, _ := ret[0].(*model.OutgoingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -256,15 +257,15 @@ func (m *MockClient) CreateOutgoingWebhook(arg0 *model.OutgoingWebhook) (*model. } // CreateOutgoingWebhook indicates an expected call of CreateOutgoingWebhook. -func (mr *MockClientMockRecorder) CreateOutgoingWebhook(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateOutgoingWebhook(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOutgoingWebhook", reflect.TypeOf((*MockClient)(nil).CreateOutgoingWebhook), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOutgoingWebhook", reflect.TypeOf((*MockClient)(nil).CreateOutgoingWebhook), arg0, arg1) } // CreatePost mocks base method. -func (m *MockClient) CreatePost(arg0 *model.Post) (*model.Post, *model.Response, error) { +func (m *MockClient) CreatePost(arg0 context.Context, arg1 *model.Post) (*model.Post, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreatePost", arg0) + ret := m.ctrl.Call(m, "CreatePost", arg0, arg1) ret0, _ := ret[0].(*model.Post) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -272,15 +273,15 @@ func (m *MockClient) CreatePost(arg0 *model.Post) (*model.Post, *model.Response, } // CreatePost indicates an expected call of CreatePost. -func (mr *MockClientMockRecorder) CreatePost(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreatePost(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreatePost", reflect.TypeOf((*MockClient)(nil).CreatePost), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreatePost", reflect.TypeOf((*MockClient)(nil).CreatePost), arg0, arg1) } // CreateTeam mocks base method. -func (m *MockClient) CreateTeam(arg0 *model.Team) (*model.Team, *model.Response, error) { +func (m *MockClient) CreateTeam(arg0 context.Context, arg1 *model.Team) (*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateTeam", arg0) + ret := m.ctrl.Call(m, "CreateTeam", arg0, arg1) ret0, _ := ret[0].(*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -288,15 +289,15 @@ func (m *MockClient) CreateTeam(arg0 *model.Team) (*model.Team, *model.Response, } // CreateTeam indicates an expected call of CreateTeam. -func (mr *MockClientMockRecorder) CreateTeam(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateTeam(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTeam", reflect.TypeOf((*MockClient)(nil).CreateTeam), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTeam", reflect.TypeOf((*MockClient)(nil).CreateTeam), arg0, arg1) } // CreateUpload mocks base method. -func (m *MockClient) CreateUpload(arg0 *model.UploadSession) (*model.UploadSession, *model.Response, error) { +func (m *MockClient) CreateUpload(arg0 context.Context, arg1 *model.UploadSession) (*model.UploadSession, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateUpload", arg0) + ret := m.ctrl.Call(m, "CreateUpload", arg0, arg1) ret0, _ := ret[0].(*model.UploadSession) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -304,15 +305,15 @@ func (m *MockClient) CreateUpload(arg0 *model.UploadSession) (*model.UploadSessi } // CreateUpload indicates an expected call of CreateUpload. -func (mr *MockClientMockRecorder) CreateUpload(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateUpload(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpload", reflect.TypeOf((*MockClient)(nil).CreateUpload), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUpload", reflect.TypeOf((*MockClient)(nil).CreateUpload), arg0, arg1) } // CreateUser mocks base method. -func (m *MockClient) CreateUser(arg0 *model.User) (*model.User, *model.Response, error) { +func (m *MockClient) CreateUser(arg0 context.Context, arg1 *model.User) (*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateUser", arg0) + ret := m.ctrl.Call(m, "CreateUser", arg0, arg1) ret0, _ := ret[0].(*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -320,15 +321,15 @@ func (m *MockClient) CreateUser(arg0 *model.User) (*model.User, *model.Response, } // CreateUser indicates an expected call of CreateUser. -func (mr *MockClientMockRecorder) CreateUser(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateUser(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUser", reflect.TypeOf((*MockClient)(nil).CreateUser), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUser", reflect.TypeOf((*MockClient)(nil).CreateUser), arg0, arg1) } // CreateUserAccessToken mocks base method. -func (m *MockClient) CreateUserAccessToken(arg0, arg1 string) (*model.UserAccessToken, *model.Response, error) { +func (m *MockClient) CreateUserAccessToken(arg0 context.Context, arg1, arg2 string) (*model.UserAccessToken, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "CreateUserAccessToken", arg0, arg1) + ret := m.ctrl.Call(m, "CreateUserAccessToken", arg0, arg1, arg2) ret0, _ := ret[0].(*model.UserAccessToken) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -336,105 +337,105 @@ func (m *MockClient) CreateUserAccessToken(arg0, arg1 string) (*model.UserAccess } // CreateUserAccessToken indicates an expected call of CreateUserAccessToken. -func (mr *MockClientMockRecorder) CreateUserAccessToken(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) CreateUserAccessToken(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUserAccessToken", reflect.TypeOf((*MockClient)(nil).CreateUserAccessToken), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateUserAccessToken", reflect.TypeOf((*MockClient)(nil).CreateUserAccessToken), arg0, arg1, arg2) } // DeleteChannel mocks base method. -func (m *MockClient) DeleteChannel(arg0 string) (*model.Response, error) { +func (m *MockClient) DeleteChannel(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteChannel", arg0) + ret := m.ctrl.Call(m, "DeleteChannel", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // DeleteChannel indicates an expected call of DeleteChannel. -func (mr *MockClientMockRecorder) DeleteChannel(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DeleteChannel(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteChannel", reflect.TypeOf((*MockClient)(nil).DeleteChannel), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteChannel", reflect.TypeOf((*MockClient)(nil).DeleteChannel), arg0, arg1) } // DeleteCommand mocks base method. -func (m *MockClient) DeleteCommand(arg0 string) (*model.Response, error) { +func (m *MockClient) DeleteCommand(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteCommand", arg0) + ret := m.ctrl.Call(m, "DeleteCommand", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // DeleteCommand indicates an expected call of DeleteCommand. -func (mr *MockClientMockRecorder) DeleteCommand(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DeleteCommand(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCommand", reflect.TypeOf((*MockClient)(nil).DeleteCommand), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCommand", reflect.TypeOf((*MockClient)(nil).DeleteCommand), arg0, arg1) } // DeleteExport mocks base method. -func (m *MockClient) DeleteExport(arg0 string) (*model.Response, error) { +func (m *MockClient) DeleteExport(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteExport", arg0) + ret := m.ctrl.Call(m, "DeleteExport", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // DeleteExport indicates an expected call of DeleteExport. -func (mr *MockClientMockRecorder) DeleteExport(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DeleteExport(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteExport", reflect.TypeOf((*MockClient)(nil).DeleteExport), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteExport", reflect.TypeOf((*MockClient)(nil).DeleteExport), arg0, arg1) } // DeleteIncomingWebhook mocks base method. -func (m *MockClient) DeleteIncomingWebhook(arg0 string) (*model.Response, error) { +func (m *MockClient) DeleteIncomingWebhook(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteIncomingWebhook", arg0) + ret := m.ctrl.Call(m, "DeleteIncomingWebhook", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // DeleteIncomingWebhook indicates an expected call of DeleteIncomingWebhook. -func (mr *MockClientMockRecorder) DeleteIncomingWebhook(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DeleteIncomingWebhook(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteIncomingWebhook", reflect.TypeOf((*MockClient)(nil).DeleteIncomingWebhook), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteIncomingWebhook", reflect.TypeOf((*MockClient)(nil).DeleteIncomingWebhook), arg0, arg1) } // DeleteOutgoingWebhook mocks base method. -func (m *MockClient) DeleteOutgoingWebhook(arg0 string) (*model.Response, error) { +func (m *MockClient) DeleteOutgoingWebhook(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DeleteOutgoingWebhook", arg0) + ret := m.ctrl.Call(m, "DeleteOutgoingWebhook", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // DeleteOutgoingWebhook indicates an expected call of DeleteOutgoingWebhook. -func (mr *MockClientMockRecorder) DeleteOutgoingWebhook(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DeleteOutgoingWebhook(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteOutgoingWebhook", reflect.TypeOf((*MockClient)(nil).DeleteOutgoingWebhook), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteOutgoingWebhook", reflect.TypeOf((*MockClient)(nil).DeleteOutgoingWebhook), arg0, arg1) } // DemoteUserToGuest mocks base method. -func (m *MockClient) DemoteUserToGuest(arg0 string) (*model.Response, error) { +func (m *MockClient) DemoteUserToGuest(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DemoteUserToGuest", arg0) + ret := m.ctrl.Call(m, "DemoteUserToGuest", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // DemoteUserToGuest indicates an expected call of DemoteUserToGuest. -func (mr *MockClientMockRecorder) DemoteUserToGuest(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DemoteUserToGuest(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DemoteUserToGuest", reflect.TypeOf((*MockClient)(nil).DemoteUserToGuest), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DemoteUserToGuest", reflect.TypeOf((*MockClient)(nil).DemoteUserToGuest), arg0, arg1) } // DisableBot mocks base method. -func (m *MockClient) DisableBot(arg0 string) (*model.Bot, *model.Response, error) { +func (m *MockClient) DisableBot(arg0 context.Context, arg1 string) (*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DisableBot", arg0) + ret := m.ctrl.Call(m, "DisableBot", arg0, arg1) ret0, _ := ret[0].(*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -442,45 +443,45 @@ func (m *MockClient) DisableBot(arg0 string) (*model.Bot, *model.Response, error } // DisableBot indicates an expected call of DisableBot. -func (mr *MockClientMockRecorder) DisableBot(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DisableBot(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DisableBot", reflect.TypeOf((*MockClient)(nil).DisableBot), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DisableBot", reflect.TypeOf((*MockClient)(nil).DisableBot), arg0, arg1) } // DisablePlugin mocks base method. -func (m *MockClient) DisablePlugin(arg0 string) (*model.Response, error) { +func (m *MockClient) DisablePlugin(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DisablePlugin", arg0) + ret := m.ctrl.Call(m, "DisablePlugin", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // DisablePlugin indicates an expected call of DisablePlugin. -func (mr *MockClientMockRecorder) DisablePlugin(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DisablePlugin(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DisablePlugin", reflect.TypeOf((*MockClient)(nil).DisablePlugin), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DisablePlugin", reflect.TypeOf((*MockClient)(nil).DisablePlugin), arg0, arg1) } // DoAPIPost mocks base method. -func (m *MockClient) DoAPIPost(arg0, arg1 string) (*http.Response, error) { +func (m *MockClient) DoAPIPost(arg0 context.Context, arg1, arg2 string) (*http.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DoAPIPost", arg0, arg1) + ret := m.ctrl.Call(m, "DoAPIPost", arg0, arg1, arg2) ret0, _ := ret[0].(*http.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // DoAPIPost indicates an expected call of DoAPIPost. -func (mr *MockClientMockRecorder) DoAPIPost(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DoAPIPost(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DoAPIPost", reflect.TypeOf((*MockClient)(nil).DoAPIPost), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DoAPIPost", reflect.TypeOf((*MockClient)(nil).DoAPIPost), arg0, arg1, arg2) } // DownloadExport mocks base method. -func (m *MockClient) DownloadExport(arg0 string, arg1 io.Writer, arg2 int64) (int64, *model.Response, error) { +func (m *MockClient) DownloadExport(arg0 context.Context, arg1 string, arg2 io.Writer, arg3 int64) (int64, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "DownloadExport", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "DownloadExport", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(int64) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -488,15 +489,15 @@ func (m *MockClient) DownloadExport(arg0 string, arg1 io.Writer, arg2 int64) (in } // DownloadExport indicates an expected call of DownloadExport. -func (mr *MockClientMockRecorder) DownloadExport(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) DownloadExport(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DownloadExport", reflect.TypeOf((*MockClient)(nil).DownloadExport), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DownloadExport", reflect.TypeOf((*MockClient)(nil).DownloadExport), arg0, arg1, arg2, arg3) } // EnableBot mocks base method. -func (m *MockClient) EnableBot(arg0 string) (*model.Bot, *model.Response, error) { +func (m *MockClient) EnableBot(arg0 context.Context, arg1 string) (*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "EnableBot", arg0) + ret := m.ctrl.Call(m, "EnableBot", arg0, arg1) ret0, _ := ret[0].(*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -504,30 +505,30 @@ func (m *MockClient) EnableBot(arg0 string) (*model.Bot, *model.Response, error) } // EnableBot indicates an expected call of EnableBot. -func (mr *MockClientMockRecorder) EnableBot(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) EnableBot(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnableBot", reflect.TypeOf((*MockClient)(nil).EnableBot), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnableBot", reflect.TypeOf((*MockClient)(nil).EnableBot), arg0, arg1) } // EnablePlugin mocks base method. -func (m *MockClient) EnablePlugin(arg0 string) (*model.Response, error) { +func (m *MockClient) EnablePlugin(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "EnablePlugin", arg0) + ret := m.ctrl.Call(m, "EnablePlugin", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // EnablePlugin indicates an expected call of EnablePlugin. -func (mr *MockClientMockRecorder) EnablePlugin(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) EnablePlugin(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnablePlugin", reflect.TypeOf((*MockClient)(nil).EnablePlugin), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnablePlugin", reflect.TypeOf((*MockClient)(nil).EnablePlugin), arg0, arg1) } // GetAllTeams mocks base method. -func (m *MockClient) GetAllTeams(arg0 string, arg1, arg2 int) ([]*model.Team, *model.Response, error) { +func (m *MockClient) GetAllTeams(arg0 context.Context, arg1 string, arg2, arg3 int) ([]*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetAllTeams", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetAllTeams", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -535,15 +536,15 @@ func (m *MockClient) GetAllTeams(arg0 string, arg1, arg2 int) ([]*model.Team, *m } // GetAllTeams indicates an expected call of GetAllTeams. -func (mr *MockClientMockRecorder) GetAllTeams(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetAllTeams(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllTeams", reflect.TypeOf((*MockClient)(nil).GetAllTeams), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAllTeams", reflect.TypeOf((*MockClient)(nil).GetAllTeams), arg0, arg1, arg2, arg3) } // GetBots mocks base method. -func (m *MockClient) GetBots(arg0, arg1 int, arg2 string) ([]*model.Bot, *model.Response, error) { +func (m *MockClient) GetBots(arg0 context.Context, arg1, arg2 int, arg3 string) ([]*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBots", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetBots", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -551,15 +552,15 @@ func (m *MockClient) GetBots(arg0, arg1 int, arg2 string) ([]*model.Bot, *model. } // GetBots indicates an expected call of GetBots. -func (mr *MockClientMockRecorder) GetBots(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetBots(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBots", reflect.TypeOf((*MockClient)(nil).GetBots), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBots", reflect.TypeOf((*MockClient)(nil).GetBots), arg0, arg1, arg2, arg3) } // GetBotsIncludeDeleted mocks base method. -func (m *MockClient) GetBotsIncludeDeleted(arg0, arg1 int, arg2 string) ([]*model.Bot, *model.Response, error) { +func (m *MockClient) GetBotsIncludeDeleted(arg0 context.Context, arg1, arg2 int, arg3 string) ([]*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBotsIncludeDeleted", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetBotsIncludeDeleted", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -567,15 +568,15 @@ func (m *MockClient) GetBotsIncludeDeleted(arg0, arg1 int, arg2 string) ([]*mode } // GetBotsIncludeDeleted indicates an expected call of GetBotsIncludeDeleted. -func (mr *MockClientMockRecorder) GetBotsIncludeDeleted(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetBotsIncludeDeleted(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBotsIncludeDeleted", reflect.TypeOf((*MockClient)(nil).GetBotsIncludeDeleted), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBotsIncludeDeleted", reflect.TypeOf((*MockClient)(nil).GetBotsIncludeDeleted), arg0, arg1, arg2, arg3) } // GetBotsOrphaned mocks base method. -func (m *MockClient) GetBotsOrphaned(arg0, arg1 int, arg2 string) ([]*model.Bot, *model.Response, error) { +func (m *MockClient) GetBotsOrphaned(arg0 context.Context, arg1, arg2 int, arg3 string) ([]*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetBotsOrphaned", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetBotsOrphaned", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -583,15 +584,15 @@ func (m *MockClient) GetBotsOrphaned(arg0, arg1 int, arg2 string) ([]*model.Bot, } // GetBotsOrphaned indicates an expected call of GetBotsOrphaned. -func (mr *MockClientMockRecorder) GetBotsOrphaned(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetBotsOrphaned(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBotsOrphaned", reflect.TypeOf((*MockClient)(nil).GetBotsOrphaned), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetBotsOrphaned", reflect.TypeOf((*MockClient)(nil).GetBotsOrphaned), arg0, arg1, arg2, arg3) } // GetChannel mocks base method. -func (m *MockClient) GetChannel(arg0, arg1 string) (*model.Channel, *model.Response, error) { +func (m *MockClient) GetChannel(arg0 context.Context, arg1, arg2 string) (*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetChannel", arg0, arg1) + ret := m.ctrl.Call(m, "GetChannel", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -599,15 +600,15 @@ func (m *MockClient) GetChannel(arg0, arg1 string) (*model.Channel, *model.Respo } // GetChannel indicates an expected call of GetChannel. -func (mr *MockClientMockRecorder) GetChannel(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetChannel(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannel", reflect.TypeOf((*MockClient)(nil).GetChannel), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannel", reflect.TypeOf((*MockClient)(nil).GetChannel), arg0, arg1, arg2) } // GetChannelByName mocks base method. -func (m *MockClient) GetChannelByName(arg0, arg1, arg2 string) (*model.Channel, *model.Response, error) { +func (m *MockClient) GetChannelByName(arg0 context.Context, arg1, arg2, arg3 string) (*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetChannelByName", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetChannelByName", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -615,15 +616,15 @@ func (m *MockClient) GetChannelByName(arg0, arg1, arg2 string) (*model.Channel, } // GetChannelByName indicates an expected call of GetChannelByName. -func (mr *MockClientMockRecorder) GetChannelByName(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetChannelByName(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelByName", reflect.TypeOf((*MockClient)(nil).GetChannelByName), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelByName", reflect.TypeOf((*MockClient)(nil).GetChannelByName), arg0, arg1, arg2, arg3) } // GetChannelByNameIncludeDeleted mocks base method. -func (m *MockClient) GetChannelByNameIncludeDeleted(arg0, arg1, arg2 string) (*model.Channel, *model.Response, error) { +func (m *MockClient) GetChannelByNameIncludeDeleted(arg0 context.Context, arg1, arg2, arg3 string) (*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetChannelByNameIncludeDeleted", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetChannelByNameIncludeDeleted", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -631,15 +632,15 @@ func (m *MockClient) GetChannelByNameIncludeDeleted(arg0, arg1, arg2 string) (*m } // GetChannelByNameIncludeDeleted indicates an expected call of GetChannelByNameIncludeDeleted. -func (mr *MockClientMockRecorder) GetChannelByNameIncludeDeleted(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetChannelByNameIncludeDeleted(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelByNameIncludeDeleted", reflect.TypeOf((*MockClient)(nil).GetChannelByNameIncludeDeleted), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelByNameIncludeDeleted", reflect.TypeOf((*MockClient)(nil).GetChannelByNameIncludeDeleted), arg0, arg1, arg2, arg3) } // GetChannelMembers mocks base method. -func (m *MockClient) GetChannelMembers(arg0 string, arg1, arg2 int, arg3 string) (model.ChannelMembers, *model.Response, error) { +func (m *MockClient) GetChannelMembers(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string) (model.ChannelMembers, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetChannelMembers", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetChannelMembers", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].(model.ChannelMembers) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -647,15 +648,15 @@ func (m *MockClient) GetChannelMembers(arg0 string, arg1, arg2 int, arg3 string) } // GetChannelMembers indicates an expected call of GetChannelMembers. -func (mr *MockClientMockRecorder) GetChannelMembers(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetChannelMembers(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelMembers", reflect.TypeOf((*MockClient)(nil).GetChannelMembers), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelMembers", reflect.TypeOf((*MockClient)(nil).GetChannelMembers), arg0, arg1, arg2, arg3, arg4) } // GetChannelsForTeamForUser mocks base method. -func (m *MockClient) GetChannelsForTeamForUser(arg0, arg1 string, arg2 bool, arg3 string) ([]*model.Channel, *model.Response, error) { +func (m *MockClient) GetChannelsForTeamForUser(arg0 context.Context, arg1, arg2 string, arg3 bool, arg4 string) ([]*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetChannelsForTeamForUser", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetChannelsForTeamForUser", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].([]*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -663,15 +664,15 @@ func (m *MockClient) GetChannelsForTeamForUser(arg0, arg1 string, arg2 bool, arg } // GetChannelsForTeamForUser indicates an expected call of GetChannelsForTeamForUser. -func (mr *MockClientMockRecorder) GetChannelsForTeamForUser(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetChannelsForTeamForUser(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelsForTeamForUser", reflect.TypeOf((*MockClient)(nil).GetChannelsForTeamForUser), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetChannelsForTeamForUser", reflect.TypeOf((*MockClient)(nil).GetChannelsForTeamForUser), arg0, arg1, arg2, arg3, arg4) } // GetCommandById mocks base method. -func (m *MockClient) GetCommandById(arg0 string) (*model.Command, *model.Response, error) { +func (m *MockClient) GetCommandById(arg0 context.Context, arg1 string) (*model.Command, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetCommandById", arg0) + ret := m.ctrl.Call(m, "GetCommandById", arg0, arg1) ret0, _ := ret[0].(*model.Command) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -679,15 +680,15 @@ func (m *MockClient) GetCommandById(arg0 string) (*model.Command, *model.Respons } // GetCommandById indicates an expected call of GetCommandById. -func (mr *MockClientMockRecorder) GetCommandById(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetCommandById(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCommandById", reflect.TypeOf((*MockClient)(nil).GetCommandById), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCommandById", reflect.TypeOf((*MockClient)(nil).GetCommandById), arg0, arg1) } // GetConfig mocks base method. -func (m *MockClient) GetConfig() (*model.Config, *model.Response, error) { +func (m *MockClient) GetConfig(arg0 context.Context) (*model.Config, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetConfig") + ret := m.ctrl.Call(m, "GetConfig", arg0) ret0, _ := ret[0].(*model.Config) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -695,15 +696,15 @@ func (m *MockClient) GetConfig() (*model.Config, *model.Response, error) { } // GetConfig indicates an expected call of GetConfig. -func (mr *MockClientMockRecorder) GetConfig() *gomock.Call { +func (mr *MockClientMockRecorder) GetConfig(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConfig", reflect.TypeOf((*MockClient)(nil).GetConfig)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConfig", reflect.TypeOf((*MockClient)(nil).GetConfig), arg0) } // GetDeletedChannelsForTeam mocks base method. -func (m *MockClient) GetDeletedChannelsForTeam(arg0 string, arg1, arg2 int, arg3 string) ([]*model.Channel, *model.Response, error) { +func (m *MockClient) GetDeletedChannelsForTeam(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string) ([]*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDeletedChannelsForTeam", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetDeletedChannelsForTeam", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].([]*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -711,15 +712,15 @@ func (m *MockClient) GetDeletedChannelsForTeam(arg0 string, arg1, arg2 int, arg3 } // GetDeletedChannelsForTeam indicates an expected call of GetDeletedChannelsForTeam. -func (mr *MockClientMockRecorder) GetDeletedChannelsForTeam(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetDeletedChannelsForTeam(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeletedChannelsForTeam", reflect.TypeOf((*MockClient)(nil).GetDeletedChannelsForTeam), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeletedChannelsForTeam", reflect.TypeOf((*MockClient)(nil).GetDeletedChannelsForTeam), arg0, arg1, arg2, arg3, arg4) } // GetGroupsByChannel mocks base method. -func (m *MockClient) GetGroupsByChannel(arg0 string, arg1 model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.Response, error) { +func (m *MockClient) GetGroupsByChannel(arg0 context.Context, arg1 string, arg2 model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetGroupsByChannel", arg0, arg1) + ret := m.ctrl.Call(m, "GetGroupsByChannel", arg0, arg1, arg2) ret0, _ := ret[0].([]*model.GroupWithSchemeAdmin) ret1, _ := ret[1].(int) ret2, _ := ret[2].(*model.Response) @@ -728,15 +729,15 @@ func (m *MockClient) GetGroupsByChannel(arg0 string, arg1 model.GroupSearchOpts) } // GetGroupsByChannel indicates an expected call of GetGroupsByChannel. -func (mr *MockClientMockRecorder) GetGroupsByChannel(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetGroupsByChannel(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGroupsByChannel", reflect.TypeOf((*MockClient)(nil).GetGroupsByChannel), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGroupsByChannel", reflect.TypeOf((*MockClient)(nil).GetGroupsByChannel), arg0, arg1, arg2) } // GetGroupsByTeam mocks base method. -func (m *MockClient) GetGroupsByTeam(arg0 string, arg1 model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.Response, error) { +func (m *MockClient) GetGroupsByTeam(arg0 context.Context, arg1 string, arg2 model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, int, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetGroupsByTeam", arg0, arg1) + ret := m.ctrl.Call(m, "GetGroupsByTeam", arg0, arg1, arg2) ret0, _ := ret[0].([]*model.GroupWithSchemeAdmin) ret1, _ := ret[1].(int) ret2, _ := ret[2].(*model.Response) @@ -745,15 +746,15 @@ func (m *MockClient) GetGroupsByTeam(arg0 string, arg1 model.GroupSearchOpts) ([ } // GetGroupsByTeam indicates an expected call of GetGroupsByTeam. -func (mr *MockClientMockRecorder) GetGroupsByTeam(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetGroupsByTeam(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGroupsByTeam", reflect.TypeOf((*MockClient)(nil).GetGroupsByTeam), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGroupsByTeam", reflect.TypeOf((*MockClient)(nil).GetGroupsByTeam), arg0, arg1, arg2) } // GetIncomingWebhook mocks base method. -func (m *MockClient) GetIncomingWebhook(arg0, arg1 string) (*model.IncomingWebhook, *model.Response, error) { +func (m *MockClient) GetIncomingWebhook(arg0 context.Context, arg1, arg2 string) (*model.IncomingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetIncomingWebhook", arg0, arg1) + ret := m.ctrl.Call(m, "GetIncomingWebhook", arg0, arg1, arg2) ret0, _ := ret[0].(*model.IncomingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -761,15 +762,15 @@ func (m *MockClient) GetIncomingWebhook(arg0, arg1 string) (*model.IncomingWebho } // GetIncomingWebhook indicates an expected call of GetIncomingWebhook. -func (mr *MockClientMockRecorder) GetIncomingWebhook(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetIncomingWebhook(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetIncomingWebhook", reflect.TypeOf((*MockClient)(nil).GetIncomingWebhook), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetIncomingWebhook", reflect.TypeOf((*MockClient)(nil).GetIncomingWebhook), arg0, arg1, arg2) } // GetIncomingWebhooks mocks base method. -func (m *MockClient) GetIncomingWebhooks(arg0, arg1 int, arg2 string) ([]*model.IncomingWebhook, *model.Response, error) { +func (m *MockClient) GetIncomingWebhooks(arg0 context.Context, arg1, arg2 int, arg3 string) ([]*model.IncomingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetIncomingWebhooks", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetIncomingWebhooks", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.IncomingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -777,15 +778,15 @@ func (m *MockClient) GetIncomingWebhooks(arg0, arg1 int, arg2 string) ([]*model. } // GetIncomingWebhooks indicates an expected call of GetIncomingWebhooks. -func (mr *MockClientMockRecorder) GetIncomingWebhooks(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetIncomingWebhooks(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetIncomingWebhooks", reflect.TypeOf((*MockClient)(nil).GetIncomingWebhooks), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetIncomingWebhooks", reflect.TypeOf((*MockClient)(nil).GetIncomingWebhooks), arg0, arg1, arg2, arg3) } // GetIncomingWebhooksForTeam mocks base method. -func (m *MockClient) GetIncomingWebhooksForTeam(arg0 string, arg1, arg2 int, arg3 string) ([]*model.IncomingWebhook, *model.Response, error) { +func (m *MockClient) GetIncomingWebhooksForTeam(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string) ([]*model.IncomingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetIncomingWebhooksForTeam", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetIncomingWebhooksForTeam", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].([]*model.IncomingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -793,15 +794,15 @@ func (m *MockClient) GetIncomingWebhooksForTeam(arg0 string, arg1, arg2 int, arg } // GetIncomingWebhooksForTeam indicates an expected call of GetIncomingWebhooksForTeam. -func (mr *MockClientMockRecorder) GetIncomingWebhooksForTeam(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetIncomingWebhooksForTeam(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetIncomingWebhooksForTeam", reflect.TypeOf((*MockClient)(nil).GetIncomingWebhooksForTeam), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetIncomingWebhooksForTeam", reflect.TypeOf((*MockClient)(nil).GetIncomingWebhooksForTeam), arg0, arg1, arg2, arg3, arg4) } // GetJob mocks base method. -func (m *MockClient) GetJob(arg0 string) (*model.Job, *model.Response, error) { +func (m *MockClient) GetJob(arg0 context.Context, arg1 string) (*model.Job, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetJob", arg0) + ret := m.ctrl.Call(m, "GetJob", arg0, arg1) ret0, _ := ret[0].(*model.Job) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -809,15 +810,15 @@ func (m *MockClient) GetJob(arg0 string) (*model.Job, *model.Response, error) { } // GetJob indicates an expected call of GetJob. -func (mr *MockClientMockRecorder) GetJob(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetJob(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetJob", reflect.TypeOf((*MockClient)(nil).GetJob), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetJob", reflect.TypeOf((*MockClient)(nil).GetJob), arg0, arg1) } // GetJobs mocks base method. -func (m *MockClient) GetJobs(arg0, arg1 int) ([]*model.Job, *model.Response, error) { +func (m *MockClient) GetJobs(arg0 context.Context, arg1, arg2 int) ([]*model.Job, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetJobs", arg0, arg1) + ret := m.ctrl.Call(m, "GetJobs", arg0, arg1, arg2) ret0, _ := ret[0].([]*model.Job) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -825,15 +826,15 @@ func (m *MockClient) GetJobs(arg0, arg1 int) ([]*model.Job, *model.Response, err } // GetJobs indicates an expected call of GetJobs. -func (mr *MockClientMockRecorder) GetJobs(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetJobs(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetJobs", reflect.TypeOf((*MockClient)(nil).GetJobs), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetJobs", reflect.TypeOf((*MockClient)(nil).GetJobs), arg0, arg1, arg2) } // GetJobsByType mocks base method. -func (m *MockClient) GetJobsByType(arg0 string, arg1, arg2 int) ([]*model.Job, *model.Response, error) { +func (m *MockClient) GetJobsByType(arg0 context.Context, arg1 string, arg2, arg3 int) ([]*model.Job, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetJobsByType", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetJobsByType", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.Job) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -841,15 +842,15 @@ func (m *MockClient) GetJobsByType(arg0 string, arg1, arg2 int) ([]*model.Job, * } // GetJobsByType indicates an expected call of GetJobsByType. -func (mr *MockClientMockRecorder) GetJobsByType(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetJobsByType(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetJobsByType", reflect.TypeOf((*MockClient)(nil).GetJobsByType), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetJobsByType", reflect.TypeOf((*MockClient)(nil).GetJobsByType), arg0, arg1, arg2, arg3) } // GetLdapGroups mocks base method. -func (m *MockClient) GetLdapGroups() ([]*model.Group, *model.Response, error) { +func (m *MockClient) GetLdapGroups(arg0 context.Context) ([]*model.Group, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetLdapGroups") + ret := m.ctrl.Call(m, "GetLdapGroups", arg0) ret0, _ := ret[0].([]*model.Group) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -857,15 +858,15 @@ func (m *MockClient) GetLdapGroups() ([]*model.Group, *model.Response, error) { } // GetLdapGroups indicates an expected call of GetLdapGroups. -func (mr *MockClientMockRecorder) GetLdapGroups() *gomock.Call { +func (mr *MockClientMockRecorder) GetLdapGroups(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLdapGroups", reflect.TypeOf((*MockClient)(nil).GetLdapGroups)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLdapGroups", reflect.TypeOf((*MockClient)(nil).GetLdapGroups), arg0) } // GetLogs mocks base method. -func (m *MockClient) GetLogs(arg0, arg1 int) ([]string, *model.Response, error) { +func (m *MockClient) GetLogs(arg0 context.Context, arg1, arg2 int) ([]string, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetLogs", arg0, arg1) + ret := m.ctrl.Call(m, "GetLogs", arg0, arg1, arg2) ret0, _ := ret[0].([]string) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -873,15 +874,15 @@ func (m *MockClient) GetLogs(arg0, arg1 int) ([]string, *model.Response, error) } // GetLogs indicates an expected call of GetLogs. -func (mr *MockClientMockRecorder) GetLogs(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetLogs(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLogs", reflect.TypeOf((*MockClient)(nil).GetLogs), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLogs", reflect.TypeOf((*MockClient)(nil).GetLogs), arg0, arg1, arg2) } // GetMarketplacePlugins mocks base method. -func (m *MockClient) GetMarketplacePlugins(arg0 *model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.Response, error) { +func (m *MockClient) GetMarketplacePlugins(arg0 context.Context, arg1 *model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetMarketplacePlugins", arg0) + ret := m.ctrl.Call(m, "GetMarketplacePlugins", arg0, arg1) ret0, _ := ret[0].([]*model.MarketplacePlugin) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -889,15 +890,15 @@ func (m *MockClient) GetMarketplacePlugins(arg0 *model.MarketplacePluginFilter) } // GetMarketplacePlugins indicates an expected call of GetMarketplacePlugins. -func (mr *MockClientMockRecorder) GetMarketplacePlugins(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetMarketplacePlugins(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMarketplacePlugins", reflect.TypeOf((*MockClient)(nil).GetMarketplacePlugins), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMarketplacePlugins", reflect.TypeOf((*MockClient)(nil).GetMarketplacePlugins), arg0, arg1) } // GetOutgoingWebhook mocks base method. -func (m *MockClient) GetOutgoingWebhook(arg0 string) (*model.OutgoingWebhook, *model.Response, error) { +func (m *MockClient) GetOutgoingWebhook(arg0 context.Context, arg1 string) (*model.OutgoingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOutgoingWebhook", arg0) + ret := m.ctrl.Call(m, "GetOutgoingWebhook", arg0, arg1) ret0, _ := ret[0].(*model.OutgoingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -905,15 +906,15 @@ func (m *MockClient) GetOutgoingWebhook(arg0 string) (*model.OutgoingWebhook, *m } // GetOutgoingWebhook indicates an expected call of GetOutgoingWebhook. -func (mr *MockClientMockRecorder) GetOutgoingWebhook(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetOutgoingWebhook(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutgoingWebhook", reflect.TypeOf((*MockClient)(nil).GetOutgoingWebhook), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutgoingWebhook", reflect.TypeOf((*MockClient)(nil).GetOutgoingWebhook), arg0, arg1) } // GetOutgoingWebhooks mocks base method. -func (m *MockClient) GetOutgoingWebhooks(arg0, arg1 int, arg2 string) ([]*model.OutgoingWebhook, *model.Response, error) { +func (m *MockClient) GetOutgoingWebhooks(arg0 context.Context, arg1, arg2 int, arg3 string) ([]*model.OutgoingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOutgoingWebhooks", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetOutgoingWebhooks", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.OutgoingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -921,15 +922,15 @@ func (m *MockClient) GetOutgoingWebhooks(arg0, arg1 int, arg2 string) ([]*model. } // GetOutgoingWebhooks indicates an expected call of GetOutgoingWebhooks. -func (mr *MockClientMockRecorder) GetOutgoingWebhooks(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetOutgoingWebhooks(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutgoingWebhooks", reflect.TypeOf((*MockClient)(nil).GetOutgoingWebhooks), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutgoingWebhooks", reflect.TypeOf((*MockClient)(nil).GetOutgoingWebhooks), arg0, arg1, arg2, arg3) } // GetOutgoingWebhooksForChannel mocks base method. -func (m *MockClient) GetOutgoingWebhooksForChannel(arg0 string, arg1, arg2 int, arg3 string) ([]*model.OutgoingWebhook, *model.Response, error) { +func (m *MockClient) GetOutgoingWebhooksForChannel(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string) ([]*model.OutgoingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOutgoingWebhooksForChannel", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetOutgoingWebhooksForChannel", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].([]*model.OutgoingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -937,15 +938,15 @@ func (m *MockClient) GetOutgoingWebhooksForChannel(arg0 string, arg1, arg2 int, } // GetOutgoingWebhooksForChannel indicates an expected call of GetOutgoingWebhooksForChannel. -func (mr *MockClientMockRecorder) GetOutgoingWebhooksForChannel(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetOutgoingWebhooksForChannel(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutgoingWebhooksForChannel", reflect.TypeOf((*MockClient)(nil).GetOutgoingWebhooksForChannel), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutgoingWebhooksForChannel", reflect.TypeOf((*MockClient)(nil).GetOutgoingWebhooksForChannel), arg0, arg1, arg2, arg3, arg4) } // GetOutgoingWebhooksForTeam mocks base method. -func (m *MockClient) GetOutgoingWebhooksForTeam(arg0 string, arg1, arg2 int, arg3 string) ([]*model.OutgoingWebhook, *model.Response, error) { +func (m *MockClient) GetOutgoingWebhooksForTeam(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string) ([]*model.OutgoingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetOutgoingWebhooksForTeam", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetOutgoingWebhooksForTeam", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].([]*model.OutgoingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -953,15 +954,15 @@ func (m *MockClient) GetOutgoingWebhooksForTeam(arg0 string, arg1, arg2 int, arg } // GetOutgoingWebhooksForTeam indicates an expected call of GetOutgoingWebhooksForTeam. -func (mr *MockClientMockRecorder) GetOutgoingWebhooksForTeam(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetOutgoingWebhooksForTeam(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutgoingWebhooksForTeam", reflect.TypeOf((*MockClient)(nil).GetOutgoingWebhooksForTeam), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutgoingWebhooksForTeam", reflect.TypeOf((*MockClient)(nil).GetOutgoingWebhooksForTeam), arg0, arg1, arg2, arg3, arg4) } // GetPing mocks base method. -func (m *MockClient) GetPing() (string, *model.Response, error) { +func (m *MockClient) GetPing(arg0 context.Context) (string, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPing") + ret := m.ctrl.Call(m, "GetPing", arg0) ret0, _ := ret[0].(string) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -969,15 +970,15 @@ func (m *MockClient) GetPing() (string, *model.Response, error) { } // GetPing indicates an expected call of GetPing. -func (mr *MockClientMockRecorder) GetPing() *gomock.Call { +func (mr *MockClientMockRecorder) GetPing(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPing", reflect.TypeOf((*MockClient)(nil).GetPing)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPing", reflect.TypeOf((*MockClient)(nil).GetPing), arg0) } // GetPingWithFullServerStatus mocks base method. -func (m *MockClient) GetPingWithFullServerStatus() (map[string]string, *model.Response, error) { +func (m *MockClient) GetPingWithFullServerStatus(arg0 context.Context) (map[string]string, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPingWithFullServerStatus") + ret := m.ctrl.Call(m, "GetPingWithFullServerStatus", arg0) ret0, _ := ret[0].(map[string]string) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -985,15 +986,15 @@ func (m *MockClient) GetPingWithFullServerStatus() (map[string]string, *model.Re } // GetPingWithFullServerStatus indicates an expected call of GetPingWithFullServerStatus. -func (mr *MockClientMockRecorder) GetPingWithFullServerStatus() *gomock.Call { +func (mr *MockClientMockRecorder) GetPingWithFullServerStatus(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPingWithFullServerStatus", reflect.TypeOf((*MockClient)(nil).GetPingWithFullServerStatus)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPingWithFullServerStatus", reflect.TypeOf((*MockClient)(nil).GetPingWithFullServerStatus), arg0) } // GetPlugins mocks base method. -func (m *MockClient) GetPlugins() (*model.PluginsResponse, *model.Response, error) { +func (m *MockClient) GetPlugins(arg0 context.Context) (*model.PluginsResponse, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPlugins") + ret := m.ctrl.Call(m, "GetPlugins", arg0) ret0, _ := ret[0].(*model.PluginsResponse) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1001,15 +1002,15 @@ func (m *MockClient) GetPlugins() (*model.PluginsResponse, *model.Response, erro } // GetPlugins indicates an expected call of GetPlugins. -func (mr *MockClientMockRecorder) GetPlugins() *gomock.Call { +func (mr *MockClientMockRecorder) GetPlugins(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPlugins", reflect.TypeOf((*MockClient)(nil).GetPlugins)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPlugins", reflect.TypeOf((*MockClient)(nil).GetPlugins), arg0) } // GetPost mocks base method. -func (m *MockClient) GetPost(arg0, arg1 string) (*model.Post, *model.Response, error) { +func (m *MockClient) GetPost(arg0 context.Context, arg1, arg2 string) (*model.Post, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPost", arg0, arg1) + ret := m.ctrl.Call(m, "GetPost", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Post) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1017,15 +1018,15 @@ func (m *MockClient) GetPost(arg0, arg1 string) (*model.Post, *model.Response, e } // GetPost indicates an expected call of GetPost. -func (mr *MockClientMockRecorder) GetPost(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetPost(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPost", reflect.TypeOf((*MockClient)(nil).GetPost), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPost", reflect.TypeOf((*MockClient)(nil).GetPost), arg0, arg1, arg2) } // GetPostsForChannel mocks base method. -func (m *MockClient) GetPostsForChannel(arg0 string, arg1, arg2 int, arg3 string, arg4, arg5 bool) (*model.PostList, *model.Response, error) { +func (m *MockClient) GetPostsForChannel(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string, arg5, arg6 bool) (*model.PostList, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPostsForChannel", arg0, arg1, arg2, arg3, arg4, arg5) + ret := m.ctrl.Call(m, "GetPostsForChannel", arg0, arg1, arg2, arg3, arg4, arg5, arg6) ret0, _ := ret[0].(*model.PostList) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1033,15 +1034,15 @@ func (m *MockClient) GetPostsForChannel(arg0 string, arg1, arg2 int, arg3 string } // GetPostsForChannel indicates an expected call of GetPostsForChannel. -func (mr *MockClientMockRecorder) GetPostsForChannel(arg0, arg1, arg2, arg3, arg4, arg5 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetPostsForChannel(arg0, arg1, arg2, arg3, arg4, arg5, arg6 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPostsForChannel", reflect.TypeOf((*MockClient)(nil).GetPostsForChannel), arg0, arg1, arg2, arg3, arg4, arg5) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPostsForChannel", reflect.TypeOf((*MockClient)(nil).GetPostsForChannel), arg0, arg1, arg2, arg3, arg4, arg5, arg6) } // GetPostsSince mocks base method. -func (m *MockClient) GetPostsSince(arg0 string, arg1 int64, arg2 bool) (*model.PostList, *model.Response, error) { +func (m *MockClient) GetPostsSince(arg0 context.Context, arg1 string, arg2 int64, arg3 bool) (*model.PostList, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPostsSince", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetPostsSince", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.PostList) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1049,15 +1050,15 @@ func (m *MockClient) GetPostsSince(arg0 string, arg1 int64, arg2 bool) (*model.P } // GetPostsSince indicates an expected call of GetPostsSince. -func (mr *MockClientMockRecorder) GetPostsSince(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetPostsSince(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPostsSince", reflect.TypeOf((*MockClient)(nil).GetPostsSince), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPostsSince", reflect.TypeOf((*MockClient)(nil).GetPostsSince), arg0, arg1, arg2, arg3) } // GetPrivateChannelsForTeam mocks base method. -func (m *MockClient) GetPrivateChannelsForTeam(arg0 string, arg1, arg2 int, arg3 string) ([]*model.Channel, *model.Response, error) { +func (m *MockClient) GetPrivateChannelsForTeam(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string) ([]*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPrivateChannelsForTeam", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetPrivateChannelsForTeam", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].([]*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1065,15 +1066,15 @@ func (m *MockClient) GetPrivateChannelsForTeam(arg0 string, arg1, arg2 int, arg3 } // GetPrivateChannelsForTeam indicates an expected call of GetPrivateChannelsForTeam. -func (mr *MockClientMockRecorder) GetPrivateChannelsForTeam(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetPrivateChannelsForTeam(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPrivateChannelsForTeam", reflect.TypeOf((*MockClient)(nil).GetPrivateChannelsForTeam), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPrivateChannelsForTeam", reflect.TypeOf((*MockClient)(nil).GetPrivateChannelsForTeam), arg0, arg1, arg2, arg3, arg4) } // GetPublicChannelsForTeam mocks base method. -func (m *MockClient) GetPublicChannelsForTeam(arg0 string, arg1, arg2 int, arg3 string) ([]*model.Channel, *model.Response, error) { +func (m *MockClient) GetPublicChannelsForTeam(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string) ([]*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetPublicChannelsForTeam", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetPublicChannelsForTeam", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].([]*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1081,15 +1082,15 @@ func (m *MockClient) GetPublicChannelsForTeam(arg0 string, arg1, arg2 int, arg3 } // GetPublicChannelsForTeam indicates an expected call of GetPublicChannelsForTeam. -func (mr *MockClientMockRecorder) GetPublicChannelsForTeam(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetPublicChannelsForTeam(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPublicChannelsForTeam", reflect.TypeOf((*MockClient)(nil).GetPublicChannelsForTeam), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPublicChannelsForTeam", reflect.TypeOf((*MockClient)(nil).GetPublicChannelsForTeam), arg0, arg1, arg2, arg3, arg4) } // GetRoleByName mocks base method. -func (m *MockClient) GetRoleByName(arg0 string) (*model.Role, *model.Response, error) { +func (m *MockClient) GetRoleByName(arg0 context.Context, arg1 string) (*model.Role, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetRoleByName", arg0) + ret := m.ctrl.Call(m, "GetRoleByName", arg0, arg1) ret0, _ := ret[0].(*model.Role) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1097,15 +1098,15 @@ func (m *MockClient) GetRoleByName(arg0 string) (*model.Role, *model.Response, e } // GetRoleByName indicates an expected call of GetRoleByName. -func (mr *MockClientMockRecorder) GetRoleByName(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetRoleByName(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRoleByName", reflect.TypeOf((*MockClient)(nil).GetRoleByName), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRoleByName", reflect.TypeOf((*MockClient)(nil).GetRoleByName), arg0, arg1) } // GetServerBusy mocks base method. -func (m *MockClient) GetServerBusy() (*model.ServerBusyState, *model.Response, error) { +func (m *MockClient) GetServerBusy(arg0 context.Context) (*model.ServerBusyState, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetServerBusy") + ret := m.ctrl.Call(m, "GetServerBusy", arg0) ret0, _ := ret[0].(*model.ServerBusyState) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1113,15 +1114,15 @@ func (m *MockClient) GetServerBusy() (*model.ServerBusyState, *model.Response, e } // GetServerBusy indicates an expected call of GetServerBusy. -func (mr *MockClientMockRecorder) GetServerBusy() *gomock.Call { +func (mr *MockClientMockRecorder) GetServerBusy(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerBusy", reflect.TypeOf((*MockClient)(nil).GetServerBusy)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetServerBusy", reflect.TypeOf((*MockClient)(nil).GetServerBusy), arg0) } // GetTeam mocks base method. -func (m *MockClient) GetTeam(arg0, arg1 string) (*model.Team, *model.Response, error) { +func (m *MockClient) GetTeam(arg0 context.Context, arg1, arg2 string) (*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTeam", arg0, arg1) + ret := m.ctrl.Call(m, "GetTeam", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1129,15 +1130,15 @@ func (m *MockClient) GetTeam(arg0, arg1 string) (*model.Team, *model.Response, e } // GetTeam indicates an expected call of GetTeam. -func (mr *MockClientMockRecorder) GetTeam(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetTeam(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeam", reflect.TypeOf((*MockClient)(nil).GetTeam), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeam", reflect.TypeOf((*MockClient)(nil).GetTeam), arg0, arg1, arg2) } // GetTeamByName mocks base method. -func (m *MockClient) GetTeamByName(arg0, arg1 string) (*model.Team, *model.Response, error) { +func (m *MockClient) GetTeamByName(arg0 context.Context, arg1, arg2 string) (*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetTeamByName", arg0, arg1) + ret := m.ctrl.Call(m, "GetTeamByName", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1145,15 +1146,15 @@ func (m *MockClient) GetTeamByName(arg0, arg1 string) (*model.Team, *model.Respo } // GetTeamByName indicates an expected call of GetTeamByName. -func (mr *MockClientMockRecorder) GetTeamByName(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetTeamByName(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeamByName", reflect.TypeOf((*MockClient)(nil).GetTeamByName), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTeamByName", reflect.TypeOf((*MockClient)(nil).GetTeamByName), arg0, arg1, arg2) } // GetUpload mocks base method. -func (m *MockClient) GetUpload(arg0 string) (*model.UploadSession, *model.Response, error) { +func (m *MockClient) GetUpload(arg0 context.Context, arg1 string) (*model.UploadSession, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUpload", arg0) + ret := m.ctrl.Call(m, "GetUpload", arg0, arg1) ret0, _ := ret[0].(*model.UploadSession) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1161,15 +1162,15 @@ func (m *MockClient) GetUpload(arg0 string) (*model.UploadSession, *model.Respon } // GetUpload indicates an expected call of GetUpload. -func (mr *MockClientMockRecorder) GetUpload(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUpload(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUpload", reflect.TypeOf((*MockClient)(nil).GetUpload), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUpload", reflect.TypeOf((*MockClient)(nil).GetUpload), arg0, arg1) } // GetUploadsForUser mocks base method. -func (m *MockClient) GetUploadsForUser(arg0 string) ([]*model.UploadSession, *model.Response, error) { +func (m *MockClient) GetUploadsForUser(arg0 context.Context, arg1 string) ([]*model.UploadSession, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUploadsForUser", arg0) + ret := m.ctrl.Call(m, "GetUploadsForUser", arg0, arg1) ret0, _ := ret[0].([]*model.UploadSession) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1177,15 +1178,15 @@ func (m *MockClient) GetUploadsForUser(arg0 string) ([]*model.UploadSession, *mo } // GetUploadsForUser indicates an expected call of GetUploadsForUser. -func (mr *MockClientMockRecorder) GetUploadsForUser(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUploadsForUser(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUploadsForUser", reflect.TypeOf((*MockClient)(nil).GetUploadsForUser), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUploadsForUser", reflect.TypeOf((*MockClient)(nil).GetUploadsForUser), arg0, arg1) } // GetUser mocks base method. -func (m *MockClient) GetUser(arg0, arg1 string) (*model.User, *model.Response, error) { +func (m *MockClient) GetUser(arg0 context.Context, arg1, arg2 string) (*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUser", arg0, arg1) + ret := m.ctrl.Call(m, "GetUser", arg0, arg1, arg2) ret0, _ := ret[0].(*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1193,15 +1194,15 @@ func (m *MockClient) GetUser(arg0, arg1 string) (*model.User, *model.Response, e } // GetUser indicates an expected call of GetUser. -func (mr *MockClientMockRecorder) GetUser(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUser(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUser", reflect.TypeOf((*MockClient)(nil).GetUser), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUser", reflect.TypeOf((*MockClient)(nil).GetUser), arg0, arg1, arg2) } // GetUserAccessTokensForUser mocks base method. -func (m *MockClient) GetUserAccessTokensForUser(arg0 string, arg1, arg2 int) ([]*model.UserAccessToken, *model.Response, error) { +func (m *MockClient) GetUserAccessTokensForUser(arg0 context.Context, arg1 string, arg2, arg3 int) ([]*model.UserAccessToken, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUserAccessTokensForUser", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetUserAccessTokensForUser", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.UserAccessToken) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1209,15 +1210,15 @@ func (m *MockClient) GetUserAccessTokensForUser(arg0 string, arg1, arg2 int) ([] } // GetUserAccessTokensForUser indicates an expected call of GetUserAccessTokensForUser. -func (mr *MockClientMockRecorder) GetUserAccessTokensForUser(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUserAccessTokensForUser(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserAccessTokensForUser", reflect.TypeOf((*MockClient)(nil).GetUserAccessTokensForUser), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserAccessTokensForUser", reflect.TypeOf((*MockClient)(nil).GetUserAccessTokensForUser), arg0, arg1, arg2, arg3) } // GetUserByEmail mocks base method. -func (m *MockClient) GetUserByEmail(arg0, arg1 string) (*model.User, *model.Response, error) { +func (m *MockClient) GetUserByEmail(arg0 context.Context, arg1, arg2 string) (*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUserByEmail", arg0, arg1) + ret := m.ctrl.Call(m, "GetUserByEmail", arg0, arg1, arg2) ret0, _ := ret[0].(*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1225,15 +1226,15 @@ func (m *MockClient) GetUserByEmail(arg0, arg1 string) (*model.User, *model.Resp } // GetUserByEmail indicates an expected call of GetUserByEmail. -func (mr *MockClientMockRecorder) GetUserByEmail(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUserByEmail(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserByEmail", reflect.TypeOf((*MockClient)(nil).GetUserByEmail), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserByEmail", reflect.TypeOf((*MockClient)(nil).GetUserByEmail), arg0, arg1, arg2) } // GetUserByUsername mocks base method. -func (m *MockClient) GetUserByUsername(arg0, arg1 string) (*model.User, *model.Response, error) { +func (m *MockClient) GetUserByUsername(arg0 context.Context, arg1, arg2 string) (*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUserByUsername", arg0, arg1) + ret := m.ctrl.Call(m, "GetUserByUsername", arg0, arg1, arg2) ret0, _ := ret[0].(*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1241,15 +1242,15 @@ func (m *MockClient) GetUserByUsername(arg0, arg1 string) (*model.User, *model.R } // GetUserByUsername indicates an expected call of GetUserByUsername. -func (mr *MockClientMockRecorder) GetUserByUsername(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUserByUsername(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserByUsername", reflect.TypeOf((*MockClient)(nil).GetUserByUsername), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUserByUsername", reflect.TypeOf((*MockClient)(nil).GetUserByUsername), arg0, arg1, arg2) } // GetUsers mocks base method. -func (m *MockClient) GetUsers(arg0, arg1 int, arg2 string) ([]*model.User, *model.Response, error) { +func (m *MockClient) GetUsers(arg0 context.Context, arg1, arg2 int, arg3 string) ([]*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUsers", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "GetUsers", arg0, arg1, arg2, arg3) ret0, _ := ret[0].([]*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1257,15 +1258,15 @@ func (m *MockClient) GetUsers(arg0, arg1 int, arg2 string) ([]*model.User, *mode } // GetUsers indicates an expected call of GetUsers. -func (mr *MockClientMockRecorder) GetUsers(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUsers(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUsers", reflect.TypeOf((*MockClient)(nil).GetUsers), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUsers", reflect.TypeOf((*MockClient)(nil).GetUsers), arg0, arg1, arg2, arg3) } // GetUsersByIds mocks base method. -func (m *MockClient) GetUsersByIds(arg0 []string) ([]*model.User, *model.Response, error) { +func (m *MockClient) GetUsersByIds(arg0 context.Context, arg1 []string) ([]*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUsersByIds", arg0) + ret := m.ctrl.Call(m, "GetUsersByIds", arg0, arg1) ret0, _ := ret[0].([]*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1273,15 +1274,15 @@ func (m *MockClient) GetUsersByIds(arg0 []string) ([]*model.User, *model.Respons } // GetUsersByIds indicates an expected call of GetUsersByIds. -func (mr *MockClientMockRecorder) GetUsersByIds(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUsersByIds(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUsersByIds", reflect.TypeOf((*MockClient)(nil).GetUsersByIds), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUsersByIds", reflect.TypeOf((*MockClient)(nil).GetUsersByIds), arg0, arg1) } // GetUsersInTeam mocks base method. -func (m *MockClient) GetUsersInTeam(arg0 string, arg1, arg2 int, arg3 string) ([]*model.User, *model.Response, error) { +func (m *MockClient) GetUsersInTeam(arg0 context.Context, arg1 string, arg2, arg3 int, arg4 string) ([]*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetUsersInTeam", arg0, arg1, arg2, arg3) + ret := m.ctrl.Call(m, "GetUsersInTeam", arg0, arg1, arg2, arg3, arg4) ret0, _ := ret[0].([]*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1289,15 +1290,15 @@ func (m *MockClient) GetUsersInTeam(arg0 string, arg1, arg2 int, arg3 string) ([ } // GetUsersInTeam indicates an expected call of GetUsersInTeam. -func (mr *MockClientMockRecorder) GetUsersInTeam(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) GetUsersInTeam(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUsersInTeam", reflect.TypeOf((*MockClient)(nil).GetUsersInTeam), arg0, arg1, arg2, arg3) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetUsersInTeam", reflect.TypeOf((*MockClient)(nil).GetUsersInTeam), arg0, arg1, arg2, arg3, arg4) } // InstallMarketplacePlugin mocks base method. -func (m *MockClient) InstallMarketplacePlugin(arg0 *model.InstallMarketplacePluginRequest) (*model.Manifest, *model.Response, error) { +func (m *MockClient) InstallMarketplacePlugin(arg0 context.Context, arg1 *model.InstallMarketplacePluginRequest) (*model.Manifest, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "InstallMarketplacePlugin", arg0) + ret := m.ctrl.Call(m, "InstallMarketplacePlugin", arg0, arg1) ret0, _ := ret[0].(*model.Manifest) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1305,15 +1306,15 @@ func (m *MockClient) InstallMarketplacePlugin(arg0 *model.InstallMarketplacePlug } // InstallMarketplacePlugin indicates an expected call of InstallMarketplacePlugin. -func (mr *MockClientMockRecorder) InstallMarketplacePlugin(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) InstallMarketplacePlugin(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InstallMarketplacePlugin", reflect.TypeOf((*MockClient)(nil).InstallMarketplacePlugin), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InstallMarketplacePlugin", reflect.TypeOf((*MockClient)(nil).InstallMarketplacePlugin), arg0, arg1) } // InstallPluginFromURL mocks base method. -func (m *MockClient) InstallPluginFromURL(arg0 string, arg1 bool) (*model.Manifest, *model.Response, error) { +func (m *MockClient) InstallPluginFromURL(arg0 context.Context, arg1 string, arg2 bool) (*model.Manifest, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "InstallPluginFromURL", arg0, arg1) + ret := m.ctrl.Call(m, "InstallPluginFromURL", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Manifest) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1321,30 +1322,30 @@ func (m *MockClient) InstallPluginFromURL(arg0 string, arg1 bool) (*model.Manife } // InstallPluginFromURL indicates an expected call of InstallPluginFromURL. -func (mr *MockClientMockRecorder) InstallPluginFromURL(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) InstallPluginFromURL(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InstallPluginFromURL", reflect.TypeOf((*MockClient)(nil).InstallPluginFromURL), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InstallPluginFromURL", reflect.TypeOf((*MockClient)(nil).InstallPluginFromURL), arg0, arg1, arg2) } // InviteUsersToTeam mocks base method. -func (m *MockClient) InviteUsersToTeam(arg0 string, arg1 []string) (*model.Response, error) { +func (m *MockClient) InviteUsersToTeam(arg0 context.Context, arg1 string, arg2 []string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "InviteUsersToTeam", arg0, arg1) + ret := m.ctrl.Call(m, "InviteUsersToTeam", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // InviteUsersToTeam indicates an expected call of InviteUsersToTeam. -func (mr *MockClientMockRecorder) InviteUsersToTeam(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) InviteUsersToTeam(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InviteUsersToTeam", reflect.TypeOf((*MockClient)(nil).InviteUsersToTeam), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InviteUsersToTeam", reflect.TypeOf((*MockClient)(nil).InviteUsersToTeam), arg0, arg1, arg2) } // ListCommands mocks base method. -func (m *MockClient) ListCommands(arg0 string, arg1 bool) ([]*model.Command, *model.Response, error) { +func (m *MockClient) ListCommands(arg0 context.Context, arg1 string, arg2 bool) ([]*model.Command, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListCommands", arg0, arg1) + ret := m.ctrl.Call(m, "ListCommands", arg0, arg1, arg2) ret0, _ := ret[0].([]*model.Command) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1352,15 +1353,15 @@ func (m *MockClient) ListCommands(arg0 string, arg1 bool) ([]*model.Command, *mo } // ListCommands indicates an expected call of ListCommands. -func (mr *MockClientMockRecorder) ListCommands(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) ListCommands(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCommands", reflect.TypeOf((*MockClient)(nil).ListCommands), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCommands", reflect.TypeOf((*MockClient)(nil).ListCommands), arg0, arg1, arg2) } // ListExports mocks base method. -func (m *MockClient) ListExports() ([]string, *model.Response, error) { +func (m *MockClient) ListExports(arg0 context.Context) ([]string, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListExports") + ret := m.ctrl.Call(m, "ListExports", arg0) ret0, _ := ret[0].([]string) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1368,15 +1369,15 @@ func (m *MockClient) ListExports() ([]string, *model.Response, error) { } // ListExports indicates an expected call of ListExports. -func (mr *MockClientMockRecorder) ListExports() *gomock.Call { +func (mr *MockClientMockRecorder) ListExports(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListExports", reflect.TypeOf((*MockClient)(nil).ListExports)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListExports", reflect.TypeOf((*MockClient)(nil).ListExports), arg0) } // ListImports mocks base method. -func (m *MockClient) ListImports() ([]string, *model.Response, error) { +func (m *MockClient) ListImports(arg0 context.Context) ([]string, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ListImports") + ret := m.ctrl.Call(m, "ListImports", arg0) ret0, _ := ret[0].([]string) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1384,75 +1385,75 @@ func (m *MockClient) ListImports() ([]string, *model.Response, error) { } // ListImports indicates an expected call of ListImports. -func (mr *MockClientMockRecorder) ListImports() *gomock.Call { +func (mr *MockClientMockRecorder) ListImports(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListImports", reflect.TypeOf((*MockClient)(nil).ListImports)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListImports", reflect.TypeOf((*MockClient)(nil).ListImports), arg0) } // MigrateAuthToLdap mocks base method. -func (m *MockClient) MigrateAuthToLdap(arg0, arg1 string, arg2 bool) (*model.Response, error) { +func (m *MockClient) MigrateAuthToLdap(arg0 context.Context, arg1, arg2 string, arg3 bool) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "MigrateAuthToLdap", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "MigrateAuthToLdap", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // MigrateAuthToLdap indicates an expected call of MigrateAuthToLdap. -func (mr *MockClientMockRecorder) MigrateAuthToLdap(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) MigrateAuthToLdap(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateAuthToLdap", reflect.TypeOf((*MockClient)(nil).MigrateAuthToLdap), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateAuthToLdap", reflect.TypeOf((*MockClient)(nil).MigrateAuthToLdap), arg0, arg1, arg2, arg3) } // MigrateAuthToSaml mocks base method. -func (m *MockClient) MigrateAuthToSaml(arg0 string, arg1 map[string]string, arg2 bool) (*model.Response, error) { +func (m *MockClient) MigrateAuthToSaml(arg0 context.Context, arg1 string, arg2 map[string]string, arg3 bool) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "MigrateAuthToSaml", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "MigrateAuthToSaml", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // MigrateAuthToSaml indicates an expected call of MigrateAuthToSaml. -func (mr *MockClientMockRecorder) MigrateAuthToSaml(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) MigrateAuthToSaml(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateAuthToSaml", reflect.TypeOf((*MockClient)(nil).MigrateAuthToSaml), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateAuthToSaml", reflect.TypeOf((*MockClient)(nil).MigrateAuthToSaml), arg0, arg1, arg2, arg3) } // MigrateConfig mocks base method. -func (m *MockClient) MigrateConfig(arg0, arg1 string) (*model.Response, error) { +func (m *MockClient) MigrateConfig(arg0 context.Context, arg1, arg2 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "MigrateConfig", arg0, arg1) + ret := m.ctrl.Call(m, "MigrateConfig", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // MigrateConfig indicates an expected call of MigrateConfig. -func (mr *MockClientMockRecorder) MigrateConfig(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) MigrateConfig(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateConfig", reflect.TypeOf((*MockClient)(nil).MigrateConfig), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateConfig", reflect.TypeOf((*MockClient)(nil).MigrateConfig), arg0, arg1, arg2) } // MigrateIdLdap mocks base method. -func (m *MockClient) MigrateIdLdap(arg0 string) (*model.Response, error) { +func (m *MockClient) MigrateIdLdap(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "MigrateIdLdap", arg0) + ret := m.ctrl.Call(m, "MigrateIdLdap", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // MigrateIdLdap indicates an expected call of MigrateIdLdap. -func (mr *MockClientMockRecorder) MigrateIdLdap(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) MigrateIdLdap(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateIdLdap", reflect.TypeOf((*MockClient)(nil).MigrateIdLdap), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MigrateIdLdap", reflect.TypeOf((*MockClient)(nil).MigrateIdLdap), arg0, arg1) } // MoveChannel mocks base method. -func (m *MockClient) MoveChannel(arg0, arg1 string, arg2 bool) (*model.Channel, *model.Response, error) { +func (m *MockClient) MoveChannel(arg0 context.Context, arg1, arg2 string, arg3 bool) (*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "MoveChannel", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "MoveChannel", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1460,30 +1461,30 @@ func (m *MockClient) MoveChannel(arg0, arg1 string, arg2 bool) (*model.Channel, } // MoveChannel indicates an expected call of MoveChannel. -func (mr *MockClientMockRecorder) MoveChannel(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) MoveChannel(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MoveChannel", reflect.TypeOf((*MockClient)(nil).MoveChannel), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MoveChannel", reflect.TypeOf((*MockClient)(nil).MoveChannel), arg0, arg1, arg2, arg3) } // MoveCommand mocks base method. -func (m *MockClient) MoveCommand(arg0, arg1 string) (*model.Response, error) { +func (m *MockClient) MoveCommand(arg0 context.Context, arg1, arg2 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "MoveCommand", arg0, arg1) + ret := m.ctrl.Call(m, "MoveCommand", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // MoveCommand indicates an expected call of MoveCommand. -func (mr *MockClientMockRecorder) MoveCommand(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) MoveCommand(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MoveCommand", reflect.TypeOf((*MockClient)(nil).MoveCommand), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MoveCommand", reflect.TypeOf((*MockClient)(nil).MoveCommand), arg0, arg1, arg2) } // PatchBot mocks base method. -func (m *MockClient) PatchBot(arg0 string, arg1 *model.BotPatch) (*model.Bot, *model.Response, error) { +func (m *MockClient) PatchBot(arg0 context.Context, arg1 string, arg2 *model.BotPatch) (*model.Bot, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PatchBot", arg0, arg1) + ret := m.ctrl.Call(m, "PatchBot", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Bot) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1491,15 +1492,15 @@ func (m *MockClient) PatchBot(arg0 string, arg1 *model.BotPatch) (*model.Bot, *m } // PatchBot indicates an expected call of PatchBot. -func (mr *MockClientMockRecorder) PatchBot(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PatchBot(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchBot", reflect.TypeOf((*MockClient)(nil).PatchBot), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchBot", reflect.TypeOf((*MockClient)(nil).PatchBot), arg0, arg1, arg2) } // PatchChannel mocks base method. -func (m *MockClient) PatchChannel(arg0 string, arg1 *model.ChannelPatch) (*model.Channel, *model.Response, error) { +func (m *MockClient) PatchChannel(arg0 context.Context, arg1 string, arg2 *model.ChannelPatch) (*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PatchChannel", arg0, arg1) + ret := m.ctrl.Call(m, "PatchChannel", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1507,15 +1508,15 @@ func (m *MockClient) PatchChannel(arg0 string, arg1 *model.ChannelPatch) (*model } // PatchChannel indicates an expected call of PatchChannel. -func (mr *MockClientMockRecorder) PatchChannel(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PatchChannel(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchChannel", reflect.TypeOf((*MockClient)(nil).PatchChannel), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchChannel", reflect.TypeOf((*MockClient)(nil).PatchChannel), arg0, arg1, arg2) } // PatchConfig mocks base method. -func (m *MockClient) PatchConfig(arg0 *model.Config) (*model.Config, *model.Response, error) { +func (m *MockClient) PatchConfig(arg0 context.Context, arg1 *model.Config) (*model.Config, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PatchConfig", arg0) + ret := m.ctrl.Call(m, "PatchConfig", arg0, arg1) ret0, _ := ret[0].(*model.Config) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1523,15 +1524,15 @@ func (m *MockClient) PatchConfig(arg0 *model.Config) (*model.Config, *model.Resp } // PatchConfig indicates an expected call of PatchConfig. -func (mr *MockClientMockRecorder) PatchConfig(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PatchConfig(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchConfig", reflect.TypeOf((*MockClient)(nil).PatchConfig), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchConfig", reflect.TypeOf((*MockClient)(nil).PatchConfig), arg0, arg1) } // PatchRole mocks base method. -func (m *MockClient) PatchRole(arg0 string, arg1 *model.RolePatch) (*model.Role, *model.Response, error) { +func (m *MockClient) PatchRole(arg0 context.Context, arg1 string, arg2 *model.RolePatch) (*model.Role, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PatchRole", arg0, arg1) + ret := m.ctrl.Call(m, "PatchRole", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Role) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1539,15 +1540,15 @@ func (m *MockClient) PatchRole(arg0 string, arg1 *model.RolePatch) (*model.Role, } // PatchRole indicates an expected call of PatchRole. -func (mr *MockClientMockRecorder) PatchRole(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PatchRole(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRole", reflect.TypeOf((*MockClient)(nil).PatchRole), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchRole", reflect.TypeOf((*MockClient)(nil).PatchRole), arg0, arg1, arg2) } // PatchTeam mocks base method. -func (m *MockClient) PatchTeam(arg0 string, arg1 *model.TeamPatch) (*model.Team, *model.Response, error) { +func (m *MockClient) PatchTeam(arg0 context.Context, arg1 string, arg2 *model.TeamPatch) (*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PatchTeam", arg0, arg1) + ret := m.ctrl.Call(m, "PatchTeam", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1555,90 +1556,90 @@ func (m *MockClient) PatchTeam(arg0 string, arg1 *model.TeamPatch) (*model.Team, } // PatchTeam indicates an expected call of PatchTeam. -func (mr *MockClientMockRecorder) PatchTeam(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PatchTeam(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchTeam", reflect.TypeOf((*MockClient)(nil).PatchTeam), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PatchTeam", reflect.TypeOf((*MockClient)(nil).PatchTeam), arg0, arg1, arg2) } // PermanentDeleteAllUsers mocks base method. -func (m *MockClient) PermanentDeleteAllUsers() (*model.Response, error) { +func (m *MockClient) PermanentDeleteAllUsers(arg0 context.Context) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PermanentDeleteAllUsers") + ret := m.ctrl.Call(m, "PermanentDeleteAllUsers", arg0) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // PermanentDeleteAllUsers indicates an expected call of PermanentDeleteAllUsers. -func (mr *MockClientMockRecorder) PermanentDeleteAllUsers() *gomock.Call { +func (mr *MockClientMockRecorder) PermanentDeleteAllUsers(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PermanentDeleteAllUsers", reflect.TypeOf((*MockClient)(nil).PermanentDeleteAllUsers)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PermanentDeleteAllUsers", reflect.TypeOf((*MockClient)(nil).PermanentDeleteAllUsers), arg0) } // PermanentDeleteChannel mocks base method. -func (m *MockClient) PermanentDeleteChannel(arg0 string) (*model.Response, error) { +func (m *MockClient) PermanentDeleteChannel(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PermanentDeleteChannel", arg0) + ret := m.ctrl.Call(m, "PermanentDeleteChannel", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // PermanentDeleteChannel indicates an expected call of PermanentDeleteChannel. -func (mr *MockClientMockRecorder) PermanentDeleteChannel(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PermanentDeleteChannel(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PermanentDeleteChannel", reflect.TypeOf((*MockClient)(nil).PermanentDeleteChannel), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PermanentDeleteChannel", reflect.TypeOf((*MockClient)(nil).PermanentDeleteChannel), arg0, arg1) } // PermanentDeleteTeam mocks base method. -func (m *MockClient) PermanentDeleteTeam(arg0 string) (*model.Response, error) { +func (m *MockClient) PermanentDeleteTeam(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PermanentDeleteTeam", arg0) + ret := m.ctrl.Call(m, "PermanentDeleteTeam", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // PermanentDeleteTeam indicates an expected call of PermanentDeleteTeam. -func (mr *MockClientMockRecorder) PermanentDeleteTeam(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PermanentDeleteTeam(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PermanentDeleteTeam", reflect.TypeOf((*MockClient)(nil).PermanentDeleteTeam), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PermanentDeleteTeam", reflect.TypeOf((*MockClient)(nil).PermanentDeleteTeam), arg0, arg1) } // PermanentDeleteUser mocks base method. -func (m *MockClient) PermanentDeleteUser(arg0 string) (*model.Response, error) { +func (m *MockClient) PermanentDeleteUser(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PermanentDeleteUser", arg0) + ret := m.ctrl.Call(m, "PermanentDeleteUser", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // PermanentDeleteUser indicates an expected call of PermanentDeleteUser. -func (mr *MockClientMockRecorder) PermanentDeleteUser(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PermanentDeleteUser(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PermanentDeleteUser", reflect.TypeOf((*MockClient)(nil).PermanentDeleteUser), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PermanentDeleteUser", reflect.TypeOf((*MockClient)(nil).PermanentDeleteUser), arg0, arg1) } // PromoteGuestToUser mocks base method. -func (m *MockClient) PromoteGuestToUser(arg0 string) (*model.Response, error) { +func (m *MockClient) PromoteGuestToUser(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "PromoteGuestToUser", arg0) + ret := m.ctrl.Call(m, "PromoteGuestToUser", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // PromoteGuestToUser indicates an expected call of PromoteGuestToUser. -func (mr *MockClientMockRecorder) PromoteGuestToUser(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) PromoteGuestToUser(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PromoteGuestToUser", reflect.TypeOf((*MockClient)(nil).PromoteGuestToUser), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PromoteGuestToUser", reflect.TypeOf((*MockClient)(nil).PromoteGuestToUser), arg0, arg1) } // RegenOutgoingHookToken mocks base method. -func (m *MockClient) RegenOutgoingHookToken(arg0 string) (*model.OutgoingWebhook, *model.Response, error) { +func (m *MockClient) RegenOutgoingHookToken(arg0 context.Context, arg1 string) (*model.OutgoingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RegenOutgoingHookToken", arg0) + ret := m.ctrl.Call(m, "RegenOutgoingHookToken", arg0, arg1) ret0, _ := ret[0].(*model.OutgoingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1646,90 +1647,90 @@ func (m *MockClient) RegenOutgoingHookToken(arg0 string) (*model.OutgoingWebhook } // RegenOutgoingHookToken indicates an expected call of RegenOutgoingHookToken. -func (mr *MockClientMockRecorder) RegenOutgoingHookToken(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) RegenOutgoingHookToken(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegenOutgoingHookToken", reflect.TypeOf((*MockClient)(nil).RegenOutgoingHookToken), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RegenOutgoingHookToken", reflect.TypeOf((*MockClient)(nil).RegenOutgoingHookToken), arg0, arg1) } // ReloadConfig mocks base method. -func (m *MockClient) ReloadConfig() (*model.Response, error) { +func (m *MockClient) ReloadConfig(arg0 context.Context) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ReloadConfig") + ret := m.ctrl.Call(m, "ReloadConfig", arg0) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // ReloadConfig indicates an expected call of ReloadConfig. -func (mr *MockClientMockRecorder) ReloadConfig() *gomock.Call { +func (mr *MockClientMockRecorder) ReloadConfig(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReloadConfig", reflect.TypeOf((*MockClient)(nil).ReloadConfig)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ReloadConfig", reflect.TypeOf((*MockClient)(nil).ReloadConfig), arg0) } // RemoveLicenseFile mocks base method. -func (m *MockClient) RemoveLicenseFile() (*model.Response, error) { +func (m *MockClient) RemoveLicenseFile(arg0 context.Context) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveLicenseFile") + ret := m.ctrl.Call(m, "RemoveLicenseFile", arg0) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // RemoveLicenseFile indicates an expected call of RemoveLicenseFile. -func (mr *MockClientMockRecorder) RemoveLicenseFile() *gomock.Call { +func (mr *MockClientMockRecorder) RemoveLicenseFile(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveLicenseFile", reflect.TypeOf((*MockClient)(nil).RemoveLicenseFile)) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveLicenseFile", reflect.TypeOf((*MockClient)(nil).RemoveLicenseFile), arg0) } // RemovePlugin mocks base method. -func (m *MockClient) RemovePlugin(arg0 string) (*model.Response, error) { +func (m *MockClient) RemovePlugin(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemovePlugin", arg0) + ret := m.ctrl.Call(m, "RemovePlugin", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // RemovePlugin indicates an expected call of RemovePlugin. -func (mr *MockClientMockRecorder) RemovePlugin(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) RemovePlugin(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePlugin", reflect.TypeOf((*MockClient)(nil).RemovePlugin), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemovePlugin", reflect.TypeOf((*MockClient)(nil).RemovePlugin), arg0, arg1) } // RemoveTeamMember mocks base method. -func (m *MockClient) RemoveTeamMember(arg0, arg1 string) (*model.Response, error) { +func (m *MockClient) RemoveTeamMember(arg0 context.Context, arg1, arg2 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveTeamMember", arg0, arg1) + ret := m.ctrl.Call(m, "RemoveTeamMember", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // RemoveTeamMember indicates an expected call of RemoveTeamMember. -func (mr *MockClientMockRecorder) RemoveTeamMember(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) RemoveTeamMember(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTeamMember", reflect.TypeOf((*MockClient)(nil).RemoveTeamMember), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTeamMember", reflect.TypeOf((*MockClient)(nil).RemoveTeamMember), arg0, arg1, arg2) } // RemoveUserFromChannel mocks base method. -func (m *MockClient) RemoveUserFromChannel(arg0, arg1 string) (*model.Response, error) { +func (m *MockClient) RemoveUserFromChannel(arg0 context.Context, arg1, arg2 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RemoveUserFromChannel", arg0, arg1) + ret := m.ctrl.Call(m, "RemoveUserFromChannel", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // RemoveUserFromChannel indicates an expected call of RemoveUserFromChannel. -func (mr *MockClientMockRecorder) RemoveUserFromChannel(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) RemoveUserFromChannel(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveUserFromChannel", reflect.TypeOf((*MockClient)(nil).RemoveUserFromChannel), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveUserFromChannel", reflect.TypeOf((*MockClient)(nil).RemoveUserFromChannel), arg0, arg1, arg2) } // ResetSamlAuthDataToEmail mocks base method. -func (m *MockClient) ResetSamlAuthDataToEmail(arg0, arg1 bool, arg2 []string) (int64, *model.Response, error) { +func (m *MockClient) ResetSamlAuthDataToEmail(arg0 context.Context, arg1, arg2 bool, arg3 []string) (int64, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ResetSamlAuthDataToEmail", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "ResetSamlAuthDataToEmail", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(int64) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1737,15 +1738,15 @@ func (m *MockClient) ResetSamlAuthDataToEmail(arg0, arg1 bool, arg2 []string) (i } // ResetSamlAuthDataToEmail indicates an expected call of ResetSamlAuthDataToEmail. -func (mr *MockClientMockRecorder) ResetSamlAuthDataToEmail(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) ResetSamlAuthDataToEmail(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResetSamlAuthDataToEmail", reflect.TypeOf((*MockClient)(nil).ResetSamlAuthDataToEmail), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResetSamlAuthDataToEmail", reflect.TypeOf((*MockClient)(nil).ResetSamlAuthDataToEmail), arg0, arg1, arg2, arg3) } // RestoreChannel mocks base method. -func (m *MockClient) RestoreChannel(arg0 string) (*model.Channel, *model.Response, error) { +func (m *MockClient) RestoreChannel(arg0 context.Context, arg1 string) (*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RestoreChannel", arg0) + ret := m.ctrl.Call(m, "RestoreChannel", arg0, arg1) ret0, _ := ret[0].(*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1753,15 +1754,15 @@ func (m *MockClient) RestoreChannel(arg0 string) (*model.Channel, *model.Respons } // RestoreChannel indicates an expected call of RestoreChannel. -func (mr *MockClientMockRecorder) RestoreChannel(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) RestoreChannel(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RestoreChannel", reflect.TypeOf((*MockClient)(nil).RestoreChannel), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RestoreChannel", reflect.TypeOf((*MockClient)(nil).RestoreChannel), arg0, arg1) } // RestoreGroup mocks base method. -func (m *MockClient) RestoreGroup(arg0, arg1 string) (*model.Group, *model.Response, error) { +func (m *MockClient) RestoreGroup(arg0 context.Context, arg1, arg2 string) (*model.Group, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RestoreGroup", arg0, arg1) + ret := m.ctrl.Call(m, "RestoreGroup", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Group) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1769,15 +1770,15 @@ func (m *MockClient) RestoreGroup(arg0, arg1 string) (*model.Group, *model.Respo } // RestoreGroup indicates an expected call of RestoreGroup. -func (mr *MockClientMockRecorder) RestoreGroup(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) RestoreGroup(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RestoreGroup", reflect.TypeOf((*MockClient)(nil).RestoreGroup), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RestoreGroup", reflect.TypeOf((*MockClient)(nil).RestoreGroup), arg0, arg1, arg2) } // RestoreTeam mocks base method. -func (m *MockClient) RestoreTeam(arg0 string) (*model.Team, *model.Response, error) { +func (m *MockClient) RestoreTeam(arg0 context.Context, arg1 string) (*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RestoreTeam", arg0) + ret := m.ctrl.Call(m, "RestoreTeam", arg0, arg1) ret0, _ := ret[0].(*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1785,30 +1786,30 @@ func (m *MockClient) RestoreTeam(arg0 string) (*model.Team, *model.Response, err } // RestoreTeam indicates an expected call of RestoreTeam. -func (mr *MockClientMockRecorder) RestoreTeam(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) RestoreTeam(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RestoreTeam", reflect.TypeOf((*MockClient)(nil).RestoreTeam), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RestoreTeam", reflect.TypeOf((*MockClient)(nil).RestoreTeam), arg0, arg1) } // RevokeUserAccessToken mocks base method. -func (m *MockClient) RevokeUserAccessToken(arg0 string) (*model.Response, error) { +func (m *MockClient) RevokeUserAccessToken(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "RevokeUserAccessToken", arg0) + ret := m.ctrl.Call(m, "RevokeUserAccessToken", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // RevokeUserAccessToken indicates an expected call of RevokeUserAccessToken. -func (mr *MockClientMockRecorder) RevokeUserAccessToken(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) RevokeUserAccessToken(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RevokeUserAccessToken", reflect.TypeOf((*MockClient)(nil).RevokeUserAccessToken), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RevokeUserAccessToken", reflect.TypeOf((*MockClient)(nil).RevokeUserAccessToken), arg0, arg1) } // SearchTeams mocks base method. -func (m *MockClient) SearchTeams(arg0 *model.TeamSearch) ([]*model.Team, *model.Response, error) { +func (m *MockClient) SearchTeams(arg0 context.Context, arg1 *model.TeamSearch) ([]*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SearchTeams", arg0) + ret := m.ctrl.Call(m, "SearchTeams", arg0, arg1) ret0, _ := ret[0].([]*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1816,75 +1817,75 @@ func (m *MockClient) SearchTeams(arg0 *model.TeamSearch) ([]*model.Team, *model. } // SearchTeams indicates an expected call of SearchTeams. -func (mr *MockClientMockRecorder) SearchTeams(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) SearchTeams(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SearchTeams", reflect.TypeOf((*MockClient)(nil).SearchTeams), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SearchTeams", reflect.TypeOf((*MockClient)(nil).SearchTeams), arg0, arg1) } // SendPasswordResetEmail mocks base method. -func (m *MockClient) SendPasswordResetEmail(arg0 string) (*model.Response, error) { +func (m *MockClient) SendPasswordResetEmail(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SendPasswordResetEmail", arg0) + ret := m.ctrl.Call(m, "SendPasswordResetEmail", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // SendPasswordResetEmail indicates an expected call of SendPasswordResetEmail. -func (mr *MockClientMockRecorder) SendPasswordResetEmail(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) SendPasswordResetEmail(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendPasswordResetEmail", reflect.TypeOf((*MockClient)(nil).SendPasswordResetEmail), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendPasswordResetEmail", reflect.TypeOf((*MockClient)(nil).SendPasswordResetEmail), arg0, arg1) } // SetServerBusy mocks base method. -func (m *MockClient) SetServerBusy(arg0 int) (*model.Response, error) { +func (m *MockClient) SetServerBusy(arg0 context.Context, arg1 int) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SetServerBusy", arg0) + ret := m.ctrl.Call(m, "SetServerBusy", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // SetServerBusy indicates an expected call of SetServerBusy. -func (mr *MockClientMockRecorder) SetServerBusy(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) SetServerBusy(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetServerBusy", reflect.TypeOf((*MockClient)(nil).SetServerBusy), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SetServerBusy", reflect.TypeOf((*MockClient)(nil).SetServerBusy), arg0, arg1) } // SoftDeleteTeam mocks base method. -func (m *MockClient) SoftDeleteTeam(arg0 string) (*model.Response, error) { +func (m *MockClient) SoftDeleteTeam(arg0 context.Context, arg1 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SoftDeleteTeam", arg0) + ret := m.ctrl.Call(m, "SoftDeleteTeam", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // SoftDeleteTeam indicates an expected call of SoftDeleteTeam. -func (mr *MockClientMockRecorder) SoftDeleteTeam(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) SoftDeleteTeam(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SoftDeleteTeam", reflect.TypeOf((*MockClient)(nil).SoftDeleteTeam), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SoftDeleteTeam", reflect.TypeOf((*MockClient)(nil).SoftDeleteTeam), arg0, arg1) } // SyncLdap mocks base method. -func (m *MockClient) SyncLdap(arg0 bool) (*model.Response, error) { +func (m *MockClient) SyncLdap(arg0 context.Context, arg1 bool) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "SyncLdap", arg0) + ret := m.ctrl.Call(m, "SyncLdap", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // SyncLdap indicates an expected call of SyncLdap. -func (mr *MockClientMockRecorder) SyncLdap(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) SyncLdap(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncLdap", reflect.TypeOf((*MockClient)(nil).SyncLdap), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncLdap", reflect.TypeOf((*MockClient)(nil).SyncLdap), arg0, arg1) } // UpdateChannelPrivacy mocks base method. -func (m *MockClient) UpdateChannelPrivacy(arg0 string, arg1 model.ChannelType) (*model.Channel, *model.Response, error) { +func (m *MockClient) UpdateChannelPrivacy(arg0 context.Context, arg1 string, arg2 model.ChannelType) (*model.Channel, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateChannelPrivacy", arg0, arg1) + ret := m.ctrl.Call(m, "UpdateChannelPrivacy", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Channel) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1892,15 +1893,15 @@ func (m *MockClient) UpdateChannelPrivacy(arg0 string, arg1 model.ChannelType) ( } // UpdateChannelPrivacy indicates an expected call of UpdateChannelPrivacy. -func (mr *MockClientMockRecorder) UpdateChannelPrivacy(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateChannelPrivacy(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateChannelPrivacy", reflect.TypeOf((*MockClient)(nil).UpdateChannelPrivacy), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateChannelPrivacy", reflect.TypeOf((*MockClient)(nil).UpdateChannelPrivacy), arg0, arg1, arg2) } // UpdateCommand mocks base method. -func (m *MockClient) UpdateCommand(arg0 *model.Command) (*model.Command, *model.Response, error) { +func (m *MockClient) UpdateCommand(arg0 context.Context, arg1 *model.Command) (*model.Command, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateCommand", arg0) + ret := m.ctrl.Call(m, "UpdateCommand", arg0, arg1) ret0, _ := ret[0].(*model.Command) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1908,15 +1909,15 @@ func (m *MockClient) UpdateCommand(arg0 *model.Command) (*model.Command, *model. } // UpdateCommand indicates an expected call of UpdateCommand. -func (mr *MockClientMockRecorder) UpdateCommand(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateCommand(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCommand", reflect.TypeOf((*MockClient)(nil).UpdateCommand), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCommand", reflect.TypeOf((*MockClient)(nil).UpdateCommand), arg0, arg1) } // UpdateConfig mocks base method. -func (m *MockClient) UpdateConfig(arg0 *model.Config) (*model.Config, *model.Response, error) { +func (m *MockClient) UpdateConfig(arg0 context.Context, arg1 *model.Config) (*model.Config, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateConfig", arg0) + ret := m.ctrl.Call(m, "UpdateConfig", arg0, arg1) ret0, _ := ret[0].(*model.Config) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1924,15 +1925,15 @@ func (m *MockClient) UpdateConfig(arg0 *model.Config) (*model.Config, *model.Res } // UpdateConfig indicates an expected call of UpdateConfig. -func (mr *MockClientMockRecorder) UpdateConfig(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateConfig(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateConfig", reflect.TypeOf((*MockClient)(nil).UpdateConfig), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateConfig", reflect.TypeOf((*MockClient)(nil).UpdateConfig), arg0, arg1) } // UpdateIncomingWebhook mocks base method. -func (m *MockClient) UpdateIncomingWebhook(arg0 *model.IncomingWebhook) (*model.IncomingWebhook, *model.Response, error) { +func (m *MockClient) UpdateIncomingWebhook(arg0 context.Context, arg1 *model.IncomingWebhook) (*model.IncomingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateIncomingWebhook", arg0) + ret := m.ctrl.Call(m, "UpdateIncomingWebhook", arg0, arg1) ret0, _ := ret[0].(*model.IncomingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1940,15 +1941,15 @@ func (m *MockClient) UpdateIncomingWebhook(arg0 *model.IncomingWebhook) (*model. } // UpdateIncomingWebhook indicates an expected call of UpdateIncomingWebhook. -func (mr *MockClientMockRecorder) UpdateIncomingWebhook(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateIncomingWebhook(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateIncomingWebhook", reflect.TypeOf((*MockClient)(nil).UpdateIncomingWebhook), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateIncomingWebhook", reflect.TypeOf((*MockClient)(nil).UpdateIncomingWebhook), arg0, arg1) } // UpdateOutgoingWebhook mocks base method. -func (m *MockClient) UpdateOutgoingWebhook(arg0 *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.Response, error) { +func (m *MockClient) UpdateOutgoingWebhook(arg0 context.Context, arg1 *model.OutgoingWebhook) (*model.OutgoingWebhook, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateOutgoingWebhook", arg0) + ret := m.ctrl.Call(m, "UpdateOutgoingWebhook", arg0, arg1) ret0, _ := ret[0].(*model.OutgoingWebhook) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1956,15 +1957,15 @@ func (m *MockClient) UpdateOutgoingWebhook(arg0 *model.OutgoingWebhook) (*model. } // UpdateOutgoingWebhook indicates an expected call of UpdateOutgoingWebhook. -func (mr *MockClientMockRecorder) UpdateOutgoingWebhook(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateOutgoingWebhook(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateOutgoingWebhook", reflect.TypeOf((*MockClient)(nil).UpdateOutgoingWebhook), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateOutgoingWebhook", reflect.TypeOf((*MockClient)(nil).UpdateOutgoingWebhook), arg0, arg1) } // UpdateTeam mocks base method. -func (m *MockClient) UpdateTeam(arg0 *model.Team) (*model.Team, *model.Response, error) { +func (m *MockClient) UpdateTeam(arg0 context.Context, arg1 *model.Team) (*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateTeam", arg0) + ret := m.ctrl.Call(m, "UpdateTeam", arg0, arg1) ret0, _ := ret[0].(*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1972,15 +1973,15 @@ func (m *MockClient) UpdateTeam(arg0 *model.Team) (*model.Team, *model.Response, } // UpdateTeam indicates an expected call of UpdateTeam. -func (mr *MockClientMockRecorder) UpdateTeam(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateTeam(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTeam", reflect.TypeOf((*MockClient)(nil).UpdateTeam), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTeam", reflect.TypeOf((*MockClient)(nil).UpdateTeam), arg0, arg1) } // UpdateTeamPrivacy mocks base method. -func (m *MockClient) UpdateTeamPrivacy(arg0, arg1 string) (*model.Team, *model.Response, error) { +func (m *MockClient) UpdateTeamPrivacy(arg0 context.Context, arg1, arg2 string) (*model.Team, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateTeamPrivacy", arg0, arg1) + ret := m.ctrl.Call(m, "UpdateTeamPrivacy", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Team) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -1988,15 +1989,15 @@ func (m *MockClient) UpdateTeamPrivacy(arg0, arg1 string) (*model.Team, *model.R } // UpdateTeamPrivacy indicates an expected call of UpdateTeamPrivacy. -func (mr *MockClientMockRecorder) UpdateTeamPrivacy(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateTeamPrivacy(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTeamPrivacy", reflect.TypeOf((*MockClient)(nil).UpdateTeamPrivacy), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateTeamPrivacy", reflect.TypeOf((*MockClient)(nil).UpdateTeamPrivacy), arg0, arg1, arg2) } // UpdateUser mocks base method. -func (m *MockClient) UpdateUser(arg0 *model.User) (*model.User, *model.Response, error) { +func (m *MockClient) UpdateUser(arg0 context.Context, arg1 *model.User) (*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateUser", arg0) + ret := m.ctrl.Call(m, "UpdateUser", arg0, arg1) ret0, _ := ret[0].(*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -2004,90 +2005,90 @@ func (m *MockClient) UpdateUser(arg0 *model.User) (*model.User, *model.Response, } // UpdateUser indicates an expected call of UpdateUser. -func (mr *MockClientMockRecorder) UpdateUser(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateUser(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUser", reflect.TypeOf((*MockClient)(nil).UpdateUser), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUser", reflect.TypeOf((*MockClient)(nil).UpdateUser), arg0, arg1) } // UpdateUserActive mocks base method. -func (m *MockClient) UpdateUserActive(arg0 string, arg1 bool) (*model.Response, error) { +func (m *MockClient) UpdateUserActive(arg0 context.Context, arg1 string, arg2 bool) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateUserActive", arg0, arg1) + ret := m.ctrl.Call(m, "UpdateUserActive", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // UpdateUserActive indicates an expected call of UpdateUserActive. -func (mr *MockClientMockRecorder) UpdateUserActive(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateUserActive(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserActive", reflect.TypeOf((*MockClient)(nil).UpdateUserActive), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserActive", reflect.TypeOf((*MockClient)(nil).UpdateUserActive), arg0, arg1, arg2) } // UpdateUserHashedPassword mocks base method. -func (m *MockClient) UpdateUserHashedPassword(arg0, arg1 string) (*model.Response, error) { +func (m *MockClient) UpdateUserHashedPassword(arg0 context.Context, arg1, arg2 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateUserHashedPassword", arg0, arg1) + ret := m.ctrl.Call(m, "UpdateUserHashedPassword", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // UpdateUserHashedPassword indicates an expected call of UpdateUserHashedPassword. -func (mr *MockClientMockRecorder) UpdateUserHashedPassword(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateUserHashedPassword(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserHashedPassword", reflect.TypeOf((*MockClient)(nil).UpdateUserHashedPassword), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserHashedPassword", reflect.TypeOf((*MockClient)(nil).UpdateUserHashedPassword), arg0, arg1, arg2) } // UpdateUserMfa mocks base method. -func (m *MockClient) UpdateUserMfa(arg0, arg1 string, arg2 bool) (*model.Response, error) { +func (m *MockClient) UpdateUserMfa(arg0 context.Context, arg1, arg2 string, arg3 bool) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateUserMfa", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "UpdateUserMfa", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // UpdateUserMfa indicates an expected call of UpdateUserMfa. -func (mr *MockClientMockRecorder) UpdateUserMfa(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateUserMfa(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserMfa", reflect.TypeOf((*MockClient)(nil).UpdateUserMfa), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserMfa", reflect.TypeOf((*MockClient)(nil).UpdateUserMfa), arg0, arg1, arg2, arg3) } // UpdateUserPassword mocks base method. -func (m *MockClient) UpdateUserPassword(arg0, arg1, arg2 string) (*model.Response, error) { +func (m *MockClient) UpdateUserPassword(arg0 context.Context, arg1, arg2, arg3 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateUserPassword", arg0, arg1, arg2) + ret := m.ctrl.Call(m, "UpdateUserPassword", arg0, arg1, arg2, arg3) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // UpdateUserPassword indicates an expected call of UpdateUserPassword. -func (mr *MockClientMockRecorder) UpdateUserPassword(arg0, arg1, arg2 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateUserPassword(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserPassword", reflect.TypeOf((*MockClient)(nil).UpdateUserPassword), arg0, arg1, arg2) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserPassword", reflect.TypeOf((*MockClient)(nil).UpdateUserPassword), arg0, arg1, arg2, arg3) } // UpdateUserRoles mocks base method. -func (m *MockClient) UpdateUserRoles(arg0, arg1 string) (*model.Response, error) { +func (m *MockClient) UpdateUserRoles(arg0 context.Context, arg1, arg2 string) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateUserRoles", arg0, arg1) + ret := m.ctrl.Call(m, "UpdateUserRoles", arg0, arg1, arg2) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // UpdateUserRoles indicates an expected call of UpdateUserRoles. -func (mr *MockClientMockRecorder) UpdateUserRoles(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UpdateUserRoles(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserRoles", reflect.TypeOf((*MockClient)(nil).UpdateUserRoles), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateUserRoles", reflect.TypeOf((*MockClient)(nil).UpdateUserRoles), arg0, arg1, arg2) } // UploadData mocks base method. -func (m *MockClient) UploadData(arg0 string, arg1 io.Reader) (*model.FileInfo, *model.Response, error) { +func (m *MockClient) UploadData(arg0 context.Context, arg1 string, arg2 io.Reader) (*model.FileInfo, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UploadData", arg0, arg1) + ret := m.ctrl.Call(m, "UploadData", arg0, arg1, arg2) ret0, _ := ret[0].(*model.FileInfo) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -2095,30 +2096,30 @@ func (m *MockClient) UploadData(arg0 string, arg1 io.Reader) (*model.FileInfo, * } // UploadData indicates an expected call of UploadData. -func (mr *MockClientMockRecorder) UploadData(arg0, arg1 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UploadData(arg0, arg1, arg2 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadData", reflect.TypeOf((*MockClient)(nil).UploadData), arg0, arg1) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadData", reflect.TypeOf((*MockClient)(nil).UploadData), arg0, arg1, arg2) } // UploadLicenseFile mocks base method. -func (m *MockClient) UploadLicenseFile(arg0 []byte) (*model.Response, error) { +func (m *MockClient) UploadLicenseFile(arg0 context.Context, arg1 []byte) (*model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UploadLicenseFile", arg0) + ret := m.ctrl.Call(m, "UploadLicenseFile", arg0, arg1) ret0, _ := ret[0].(*model.Response) ret1, _ := ret[1].(error) return ret0, ret1 } // UploadLicenseFile indicates an expected call of UploadLicenseFile. -func (mr *MockClientMockRecorder) UploadLicenseFile(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UploadLicenseFile(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadLicenseFile", reflect.TypeOf((*MockClient)(nil).UploadLicenseFile), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadLicenseFile", reflect.TypeOf((*MockClient)(nil).UploadLicenseFile), arg0, arg1) } // UploadPlugin mocks base method. -func (m *MockClient) UploadPlugin(arg0 io.Reader) (*model.Manifest, *model.Response, error) { +func (m *MockClient) UploadPlugin(arg0 context.Context, arg1 io.Reader) (*model.Manifest, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UploadPlugin", arg0) + ret := m.ctrl.Call(m, "UploadPlugin", arg0, arg1) ret0, _ := ret[0].(*model.Manifest) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -2126,15 +2127,15 @@ func (m *MockClient) UploadPlugin(arg0 io.Reader) (*model.Manifest, *model.Respo } // UploadPlugin indicates an expected call of UploadPlugin. -func (mr *MockClientMockRecorder) UploadPlugin(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UploadPlugin(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadPlugin", reflect.TypeOf((*MockClient)(nil).UploadPlugin), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadPlugin", reflect.TypeOf((*MockClient)(nil).UploadPlugin), arg0, arg1) } // UploadPluginForced mocks base method. -func (m *MockClient) UploadPluginForced(arg0 io.Reader) (*model.Manifest, *model.Response, error) { +func (m *MockClient) UploadPluginForced(arg0 context.Context, arg1 io.Reader) (*model.Manifest, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UploadPluginForced", arg0) + ret := m.ctrl.Call(m, "UploadPluginForced", arg0, arg1) ret0, _ := ret[0].(*model.Manifest) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -2142,15 +2143,15 @@ func (m *MockClient) UploadPluginForced(arg0 io.Reader) (*model.Manifest, *model } // UploadPluginForced indicates an expected call of UploadPluginForced. -func (mr *MockClientMockRecorder) UploadPluginForced(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) UploadPluginForced(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadPluginForced", reflect.TypeOf((*MockClient)(nil).UploadPluginForced), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UploadPluginForced", reflect.TypeOf((*MockClient)(nil).UploadPluginForced), arg0, arg1) } // VerifyUserEmailWithoutToken mocks base method. -func (m *MockClient) VerifyUserEmailWithoutToken(arg0 string) (*model.User, *model.Response, error) { +func (m *MockClient) VerifyUserEmailWithoutToken(arg0 context.Context, arg1 string) (*model.User, *model.Response, error) { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "VerifyUserEmailWithoutToken", arg0) + ret := m.ctrl.Call(m, "VerifyUserEmailWithoutToken", arg0, arg1) ret0, _ := ret[0].(*model.User) ret1, _ := ret[1].(*model.Response) ret2, _ := ret[2].(error) @@ -2158,7 +2159,7 @@ func (m *MockClient) VerifyUserEmailWithoutToken(arg0 string) (*model.User, *mod } // VerifyUserEmailWithoutToken indicates an expected call of VerifyUserEmailWithoutToken. -func (mr *MockClientMockRecorder) VerifyUserEmailWithoutToken(arg0 interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) VerifyUserEmailWithoutToken(arg0, arg1 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyUserEmailWithoutToken", reflect.TypeOf((*MockClient)(nil).VerifyUserEmailWithoutToken), arg0) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "VerifyUserEmailWithoutToken", reflect.TypeOf((*MockClient)(nil).VerifyUserEmailWithoutToken), arg0, arg1) } diff --git a/server/playbooks/client/doc_test.go b/server/playbooks/client/doc_test.go index 5da0e6e9f1..15180477c4 100644 --- a/server/playbooks/client/doc_test.go +++ b/server/playbooks/client/doc_test.go @@ -16,7 +16,7 @@ func Example() { ctx := context.Background() client4 := model.NewAPIv4Client("http://localhost:8065") - _, _, err := client4.Login("test@example.com", "testtest") + _, _, err := client4.Login(context.Background(), "test@example.com", "testtest") if err != nil { log.Fatal(err) } diff --git a/server/playbooks/client/playbook_runs_test.go b/server/playbooks/client/playbook_runs_test.go index c865769cb3..b5d51a4b35 100644 --- a/server/playbooks/client/playbook_runs_test.go +++ b/server/playbooks/client/playbook_runs_test.go @@ -16,7 +16,7 @@ func ExamplePlaybookRunService_Get() { ctx := context.Background() client4 := model.NewAPIv4Client("http://localhost:8065") - client4.Login("test@example.com", "testtest") + client4.Login(context.Background(), "test@example.com", "testtest") c, err := client.New(client4) if err != nil { @@ -36,12 +36,12 @@ func ExamplePlaybookRunService_List() { ctx := context.Background() client4 := model.NewAPIv4Client("http://localhost:8065") - _, _, err := client4.Login("test@example.com", "testtest") + _, _, err := client4.Login(context.Background(), "test@example.com", "testtest") if err != nil { log.Fatal(err.Error()) } - teams, _, err := client4.GetAllTeams("", 0, 1) + teams, _, err := client4.GetAllTeams(context.Background(), "", 0, 1) if err != nil { log.Fatal(err.Error()) } diff --git a/server/playbooks/client/playbooks_test.go b/server/playbooks/client/playbooks_test.go index 8c5a060f15..a6c8906457 100644 --- a/server/playbooks/client/playbooks_test.go +++ b/server/playbooks/client/playbooks_test.go @@ -16,7 +16,7 @@ func ExamplePlaybooksService_Get() { ctx := context.Background() client4 := model.NewAPIv4Client("http://localhost:8065") - client4.Login("test@example.com", "testtest") + client4.Login(context.Background(), "test@example.com", "testtest") c, err := client.New(client4) if err != nil { @@ -36,12 +36,12 @@ func ExamplePlaybooksService_List() { ctx := context.Background() client4 := model.NewAPIv4Client("http://localhost:8065") - _, _, err := client4.Login("test@example.com", "testtest") + _, _, err := client4.Login(context.Background(), "test@example.com", "testtest") if err != nil { log.Fatal(err.Error()) } - teams, _, err := client4.GetAllTeams("", 0, 1) + teams, _, err := client4.GetAllTeams(context.Background(), "", 0, 1) if err != nil { log.Fatal(err.Error()) } diff --git a/server/playbooks/server/api_actions_test.go b/server/playbooks/server/api_actions_test.go index 7f45c06ae8..b0997cc7e9 100644 --- a/server/playbooks/server/api_actions_test.go +++ b/server/playbooks/server/api_actions_test.go @@ -21,7 +21,7 @@ func TestActionCreation(t *testing.T) { createNewChannel := func(t *testing.T, name string) *model.Channel { t.Helper() - pubChannel, _, err := e.ServerAdminClient.CreateChannel(&model.Channel{ + pubChannel, _, err := e.ServerAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: name, Name: name, Type: model.ChannelTypeOpen, @@ -29,7 +29,7 @@ func TestActionCreation(t *testing.T) { }) assert.NoError(t, err) - _, _, err = e.ServerAdminClient.AddChannelMember(pubChannel.Id, e.RegularUser.Id) + _, _, err = e.ServerAdminClient.AddChannelMember(context.Background(), pubChannel.Id, e.RegularUser.Id) assert.NoError(t, err) return pubChannel diff --git a/server/playbooks/server/api_bot_test.go b/server/playbooks/server/api_bot_test.go index 965810c7e3..35d6139970 100644 --- a/server/playbooks/server/api_bot_test.go +++ b/server/playbooks/server/api_bot_test.go @@ -4,6 +4,7 @@ package server import ( + "context" "encoding/json" "net/http" "testing" @@ -30,7 +31,7 @@ func TestTrialLicences(t *testing.T) { }, } dialogRequestBytes, _ := json.Marshal(dialogRequest) - resp, err := e.ServerClient.DoAPIRequestBytes("POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/bot/notify-admins/button-start-trial", dialogRequestBytes, "") + resp, err := e.ServerClient.DoAPIRequestBytes(context.Background(), "POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/bot/notify-admins/button-start-trial", dialogRequestBytes, "") assert.Error(t, err) assert.Equal(t, http.StatusForbidden, resp.StatusCode) }) @@ -46,7 +47,7 @@ func TestTrialLicences(t *testing.T) { }, } dialogRequestBytes, _ := json.Marshal(dialogRequest) - resp, err := e.ServerAdminClient.DoAPIRequestBytes("POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/bot/notify-admins/button-start-trial", dialogRequestBytes, "") + resp, err := e.ServerAdminClient.DoAPIRequestBytes(context.Background(), "POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/bot/notify-admins/button-start-trial", dialogRequestBytes, "") assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) }) diff --git a/server/playbooks/server/api_general_test.go b/server/playbooks/server/api_general_test.go index 5793427392..4fa6925882 100644 --- a/server/playbooks/server/api_general_test.go +++ b/server/playbooks/server/api_general_test.go @@ -4,6 +4,7 @@ package server import ( + "context" "net/http" "testing" @@ -15,7 +16,7 @@ func TestAPI(t *testing.T) { e.CreateClients() t.Run("404", func(t *testing.T) { - resp, err := e.ServerClient.DoAPIRequestBytes("POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/nothing", nil, "") + resp, err := e.ServerClient.DoAPIRequestBytes(context.Background(), "POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/nothing", nil, "") assert.Error(t, err) assert.Equal(t, http.StatusNotFound, resp.StatusCode) }) diff --git a/server/playbooks/server/api_graphql_runs_test.go b/server/playbooks/server/api_graphql_runs_test.go index 62b7166e2a..e7332d5ef2 100644 --- a/server/playbooks/server/api_graphql_runs_test.go +++ b/server/playbooks/server/api_graphql_runs_test.go @@ -208,16 +208,16 @@ func TestGraphQLChangeRunParticipants(t *testing.T) { e := Setup(t) e.CreateBasic() - user3, _, err := e.ServerAdminClient.CreateUser(&model.User{ + user3, _, err := e.ServerAdminClient.CreateUser(context.Background(), &model.User{ Email: "thirduser@example.com", Username: "thirduser", Password: "Password123!", }) require.NoError(t, err) - _, _, err = e.ServerAdminClient.AddTeamMember(e.BasicTeam.Id, user3.Id) + _, _, err = e.ServerAdminClient.AddTeamMember(context.Background(), e.BasicTeam.Id, user3.Id) require.NoError(t, err) - userNotInTeam, _, err := e.ServerAdminClient.CreateUser(&model.User{ + userNotInTeam, _, err := e.ServerAdminClient.CreateUser(context.Background(), &model.User{ Email: "notinteam@example.com", Username: "notinteam", Password: "Password123!", @@ -671,13 +671,13 @@ func TestGraphQLChangeRunOwner(t *testing.T) { e.CreateBasic() // create a third user to test change owner - user3, _, err := e.ServerAdminClient.CreateUser(&model.User{ + user3, _, err := e.ServerAdminClient.CreateUser(context.Background(), &model.User{ Email: "thirduser@example.com", Username: "thirduser", Password: "Password123!", }) require.NoError(t, err) - _, _, err = e.ServerAdminClient.AddTeamMember(e.BasicTeam.Id, user3.Id) + _, _, err = e.ServerAdminClient.AddTeamMember(context.Background(), e.BasicTeam.Id, user3.Id) require.NoError(t, err) t.Run("set another participant as owner", func(t *testing.T) { diff --git a/server/playbooks/server/api_playbooks_test.go b/server/playbooks/server/api_playbooks_test.go index ebef95b745..9bef0092ed 100644 --- a/server/playbooks/server/api_playbooks_test.go +++ b/server/playbooks/server/api_playbooks_test.go @@ -1270,7 +1270,7 @@ func TestAddPostToTimeline(t *testing.T) { e.RemoveLicence() // Post the request with the dialog payload and verify it is not allowed - resp, err := e.ServerClient.DoAPIRequestBytes("POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/add-to-timeline-dialog", dialogRequestBytes, "") + resp, err := e.ServerClient.DoAPIRequestBytes(context.Background(), "POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/add-to-timeline-dialog", dialogRequestBytes, "") require.Error(t, err) require.Equal(t, http.StatusForbidden, resp.StatusCode) }) @@ -1280,7 +1280,7 @@ func TestAddPostToTimeline(t *testing.T) { e.SetE10Licence() // Post the request with the dialog payload and verify it is allowed - _, err := e.ServerClient.DoAPIRequestBytes("POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/add-to-timeline-dialog", dialogRequestBytes, "") + _, err := e.ServerClient.DoAPIRequestBytes(context.Background(), "POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/add-to-timeline-dialog", dialogRequestBytes, "") require.NoError(t, err) }) @@ -1289,7 +1289,7 @@ func TestAddPostToTimeline(t *testing.T) { e.SetE20Licence() // Post the request with the dialog payload and verify it is allowed - _, err := e.ServerClient.DoAPIRequestBytes("POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/add-to-timeline-dialog", dialogRequestBytes, "") + _, err := e.ServerClient.DoAPIRequestBytes(context.Background(), "POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/add-to-timeline-dialog", dialogRequestBytes, "") require.NoError(t, err) }) } diff --git a/server/playbooks/server/api_runs_test.go b/server/playbooks/server/api_runs_test.go index 53ec120692..1622d93440 100644 --- a/server/playbooks/server/api_runs_test.go +++ b/server/playbooks/server/api_runs_test.go @@ -188,7 +188,7 @@ func TestRunCreation(t *testing.T) { tc.permissionsPrep() } - result, err := e.ServerClient.DoAPIRequestBytes("POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/dialog", dialogRequestBytes, "") + result, err := e.ServerClient.DoAPIRequestBytes(context.Background(), "POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/dialog", dialogRequestBytes, "") tc.expected(t, result, err) }) } @@ -357,14 +357,14 @@ func TestCreateRunInExistingChannel(t *testing.T) { t.Run("create a run, pass a channel different from the playbook configs", func(t *testing.T) { // create private channel - privateChannel, _, err := e.ServerAdminClient.CreateChannel(&model.Channel{ + privateChannel, _, err := e.ServerAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "test_private", Name: "test_private", Type: model.ChannelTypePrivate, TeamId: e.BasicTeam.Id, }) require.NoError(e.T, err) - _, _, err = e.ServerAdminClient.AddChannelMember(privateChannel.Id, e.RegularUser.Id) + _, _, err = e.ServerAdminClient.AddChannelMember(context.Background(), privateChannel.Id, e.RegularUser.Id) require.NoError(e.T, err) // create a run, pass the channel id different from the playbook configs @@ -393,7 +393,7 @@ func TestCreateRunInExistingChannel(t *testing.T) { dialogRequestBytes, err := json.Marshal(dialogRequest) assert.NoError(t, err) - result, err := e.ServerClient.DoAPIRequestBytes("POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/dialog", dialogRequestBytes, "") + result, err := e.ServerClient.DoAPIRequestBytes(context.Background(), "POST", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/dialog", dialogRequestBytes, "") assert.NoError(t, err) assert.Equal(t, http.StatusCreated, result.StatusCode) @@ -481,7 +481,7 @@ func TestRunRetrieval(t *testing.T) { }) t.Run("checklist autocomplete", func(t *testing.T) { - resp, err := e.ServerClient.DoAPIRequest("GET", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/checklist-autocomplete?channel_id="+e.BasicPrivateChannel.Id, "", "") + resp, err := e.ServerClient.DoAPIRequest(context.Background(), "GET", e.ServerClient.URL+"/plugins/"+"playbooks"+"/api/v0/runs/checklist-autocomplete?channel_id="+e.BasicPrivateChannel.Id, "", "") assert.Error(t, err) assert.Equal(t, http.StatusNotFound, resp.StatusCode) }) @@ -528,7 +528,7 @@ func TestRunPostStatusUpdate(t *testing.T) { assert.NoError(t, err) // post created with expected props - post, _, err := e.ServerClient.GetPost(run.ReminderPostID, "") + post, _, err := e.ServerClient.GetPost(context.Background(), run.ReminderPostID, "") assert.NoError(t, err) assert.Equal(t, run.ID, post.GetProp("playbookRunId")) assert.Equal(t, e.RegularUser.Username, post.GetProp("targetUsername")) @@ -540,7 +540,7 @@ func TestRunPostStatusUpdate(t *testing.T) { }) t.Run("no permissions to run", func(t *testing.T) { - _, _, err := e.ServerAdminClient.AddChannelMember(e.BasicRun.ChannelID, e.RegularUser2.Id) + _, _, err := e.ServerAdminClient.AddChannelMember(context.Background(), e.BasicRun.ChannelID, e.RegularUser2.Id) require.NoError(t, err) err = e.PlaybooksClient2.PlaybookRuns.UpdateStatus(context.Background(), e.BasicRun.ID, "update", 600) requireErrorWithStatusCode(t, err, http.StatusForbidden) @@ -1468,7 +1468,7 @@ func TestReminderReset(t *testing.T) { assert.NoError(t, err) // post created with expected props - post, _, err := e.ServerClient.GetPost(run.ReminderPostID, "") + post, _, err := e.ServerClient.GetPost(context.Background(), run.ReminderPostID, "") assert.NoError(t, err) assert.Equal(t, run.ID, post.GetProp("playbookRunId")) assert.Equal(t, e.RegularUser.Username, post.GetProp("targetUsername")) @@ -1753,7 +1753,7 @@ func TestGetOwners(t *testing.T) { t.Run(tc.Name, func(t *testing.T) { cfg := e.Srv.Config() cfg.PrivacySettings.ShowFullName = model.NewBool(tc.ShowFullName) - _, _, err = e.ServerAdminClient.UpdateConfig(cfg) + _, _, err = e.ServerAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(t, err) owners, err := tc.Client.PlaybookRuns.GetOwners(context.Background()) diff --git a/server/playbooks/server/main_test.go b/server/playbooks/server/main_test.go index 117ba3735e..16bdb3866f 100644 --- a/server/playbooks/server/main_test.go +++ b/server/playbooks/server/main_test.go @@ -213,7 +213,7 @@ func (e *TestEnvironment) CreateClients() { siteURL := fmt.Sprintf("http://localhost:%v", e.A.Srv().ListenAddr.Port) serverAdminClient := model.NewAPIv4Client(siteURL) - _, _, err := serverAdminClient.Login(admin.Email, userPassword) + _, _, err := serverAdminClient.Login(context.Background(), admin.Email, userPassword) require.NoError(e.T, err) playbooksAdminClient, err := client.New(serverAdminClient) @@ -223,7 +223,7 @@ func (e *TestEnvironment) CreateClients() { e.PlaybooksAdminClient = playbooksAdminClient serverClient := model.NewAPIv4Client(siteURL) - _, _, err = serverClient.Login(user.Email, userPassword) + _, _, err = serverClient.Login(context.Background(), user.Email, userPassword) require.NoError(e.T, err) playbooksClient, err := client.New(serverClient) @@ -234,14 +234,14 @@ func (e *TestEnvironment) CreateClients() { require.NoError(e.T, err) serverClient2 := model.NewAPIv4Client(siteURL) - _, _, err = serverClient2.Login(user2.Email, userPassword) + _, _, err = serverClient2.Login(context.Background(), user2.Email, userPassword) require.NoError(e.T, err) playbooksClient2, err := client.New(serverClient2) require.NoError(e.T, err) serverClientNotInTeam := model.NewAPIv4Client(siteURL) - _, _, err = serverClientNotInTeam.Login(notInTeam.Email, userPassword) + _, _, err = serverClientNotInTeam.Login(context.Background(), notInTeam.Email, userPassword) require.NoError(e.T, err) playbooksClientNotInTeam, err := client.New(serverClientNotInTeam) @@ -257,7 +257,7 @@ func (e *TestEnvironment) CreateClients() { func (e *TestEnvironment) CreateBasicServer() { e.T.Helper() - team, _, err := e.ServerAdminClient.CreateTeam(&model.Team{ + team, _, err := e.ServerAdminClient.CreateTeam(context.Background(), &model.Team{ DisplayName: "basic", Name: "basic", Email: "success+playbooks@simulator.amazonses.com", @@ -265,12 +265,12 @@ func (e *TestEnvironment) CreateBasicServer() { }) require.NoError(e.T, err) - _, _, err = e.ServerAdminClient.AddTeamMember(team.Id, e.RegularUser.Id) + _, _, err = e.ServerAdminClient.AddTeamMember(context.Background(), team.Id, e.RegularUser.Id) require.NoError(e.T, err) - _, _, err = e.ServerAdminClient.AddTeamMember(team.Id, e.RegularUser2.Id) + _, _, err = e.ServerAdminClient.AddTeamMember(context.Background(), team.Id, e.RegularUser2.Id) require.NoError(e.T, err) - pubChannel, _, err := e.ServerAdminClient.CreateChannel(&model.Channel{ + pubChannel, _, err := e.ServerAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "testpublic1", Name: "testpublic1", Type: model.ChannelTypeOpen, @@ -278,17 +278,17 @@ func (e *TestEnvironment) CreateBasicServer() { }) require.NoError(e.T, err) - pubPost, _, err := e.ServerAdminClient.CreatePost(&model.Post{ + pubPost, _, err := e.ServerAdminClient.CreatePost(context.Background(), &model.Post{ UserId: e.AdminUser.Id, ChannelId: pubChannel.Id, Message: "this is a public channel post by a system admin", }) require.NoError(e.T, err) - _, _, err = e.ServerAdminClient.AddChannelMember(pubChannel.Id, e.RegularUser.Id) + _, _, err = e.ServerAdminClient.AddChannelMember(context.Background(), pubChannel.Id, e.RegularUser.Id) require.NoError(e.T, err) - privateChannel, _, err := e.ServerAdminClient.CreateChannel(&model.Channel{ + privateChannel, _, err := e.ServerAdminClient.CreateChannel(context.Background(), &model.Channel{ DisplayName: "testprivate1", Name: "testprivate1", Type: model.ChannelTypePrivate, @@ -296,7 +296,7 @@ func (e *TestEnvironment) CreateBasicServer() { }) require.NoError(e.T, err) - privatePost, _, err := e.ServerAdminClient.CreatePost(&model.Post{ + privatePost, _, err := e.ServerAdminClient.CreatePost(context.Background(), &model.Post{ UserId: e.AdminUser.Id, ChannelId: privateChannel.Id, Message: "this is a private channel post by a system admin", @@ -310,7 +310,7 @@ func (e *TestEnvironment) CreateBasicServer() { e.BasicPrivateChannelPost = privatePost // Add a second team to test cross-team features - team2, _, err := e.ServerAdminClient.CreateTeam(&model.Team{ + team2, _, err := e.ServerAdminClient.CreateTeam(context.Background(), &model.Team{ DisplayName: "second team", Name: "second-team", Email: "success+playbooks@simulator.amazonses.com", @@ -318,7 +318,7 @@ func (e *TestEnvironment) CreateBasicServer() { }) require.NoError(e.T, err) - _, _, err = e.ServerAdminClient.AddTeamMember(team2.Id, e.RegularUser.Id) + _, _, err = e.ServerAdminClient.AddTeamMember(context.Background(), team2.Id, e.RegularUser.Id) require.NoError(e.T, err) e.BasicTeam2 = team2 @@ -435,7 +435,7 @@ func (e *TestEnvironment) CreateAdditionalPlaybooks() { func (e *TestEnvironment) CreateGuest() { cfg := e.Srv.Config() cfg.GuestAccountsSettings.Enable = model.NewBool(true) - _, _, err := e.ServerAdminClient.UpdateConfig(cfg) + _, _, err := e.ServerAdminClient.UpdateConfig(context.Background(), cfg) require.NoError(e.T, err) userPassword := "password123!" @@ -447,15 +447,15 @@ func (e *TestEnvironment) CreateGuest() { require.Nil(e.T, appErr) e.GuestUser = guest - _, _, err = e.ServerAdminClient.AddTeamMember(e.BasicPublicChannel.TeamId, e.GuestUser.Id) + _, _, err = e.ServerAdminClient.AddTeamMember(context.Background(), e.BasicPublicChannel.TeamId, e.GuestUser.Id) require.NoError(e.T, err) - _, _, err = e.ServerAdminClient.AddChannelMember(e.BasicPublicChannel.Id, e.GuestUser.Id) + _, _, err = e.ServerAdminClient.AddChannelMember(context.Background(), e.BasicPublicChannel.Id, e.GuestUser.Id) require.NoError(e.T, err) siteURL := fmt.Sprintf("http://localhost:%v", e.A.Srv().ListenAddr.Port) serverClientGuest := model.NewAPIv4Client(siteURL) - _, _, err = serverClientGuest.Login(e.GuestUser.Email, userPassword) + _, _, err = serverClientGuest.Login(context.Background(), e.GuestUser.Email, userPassword) require.NoError(e.T, err) playbooksClientGuest, err := client.New(serverClientGuest) diff --git a/server/public/model/client4.go b/server/public/model/client4.go index 1f19a7f65a..6c03cea601 100644 --- a/server/public/model/client4.go +++ b/server/public/model/client4.go @@ -5,6 +5,7 @@ package model import ( "bytes" + "context" "encoding/json" "fmt" "io" @@ -562,52 +563,52 @@ func (c *Client4) permissionsRoute() string { return "/permissions" } -func (c *Client4) DoAPIGet(url string, etag string) (*http.Response, error) { - return c.DoAPIRequest(http.MethodGet, c.APIURL+url, "", etag) +func (c *Client4) DoAPIGet(ctx context.Context, url string, etag string) (*http.Response, error) { + return c.DoAPIRequest(ctx, http.MethodGet, c.APIURL+url, "", etag) } -func (c *Client4) DoAPIPost(url string, data string) (*http.Response, error) { - return c.DoAPIRequest(http.MethodPost, c.APIURL+url, data, "") +func (c *Client4) DoAPIPost(ctx context.Context, url string, data string) (*http.Response, error) { + return c.DoAPIRequest(ctx, http.MethodPost, c.APIURL+url, data, "") } -func (c *Client4) DoAPIDeleteBytes(url string, data []byte) (*http.Response, error) { - return c.DoAPIRequestBytes(http.MethodDelete, c.APIURL+url, data, "") +func (c *Client4) DoAPIDeleteBytes(ctx context.Context, url string, data []byte) (*http.Response, error) { + return c.DoAPIRequestBytes(ctx, http.MethodDelete, c.APIURL+url, data, "") } -func (c *Client4) DoAPIPatchBytes(url string, data []byte) (*http.Response, error) { - return c.DoAPIRequestBytes(http.MethodPatch, c.APIURL+url, data, "") +func (c *Client4) DoAPIPatchBytes(ctx context.Context, url string, data []byte) (*http.Response, error) { + return c.DoAPIRequestBytes(ctx, http.MethodPatch, c.APIURL+url, data, "") } -func (c *Client4) DoAPIPostBytes(url string, data []byte) (*http.Response, error) { - return c.DoAPIRequestBytes(http.MethodPost, c.APIURL+url, data, "") +func (c *Client4) DoAPIPostBytes(ctx context.Context, url string, data []byte) (*http.Response, error) { + return c.DoAPIRequestBytes(ctx, http.MethodPost, c.APIURL+url, data, "") } -func (c *Client4) DoAPIPut(url string, data string) (*http.Response, error) { - return c.DoAPIRequest(http.MethodPut, c.APIURL+url, data, "") +func (c *Client4) DoAPIPut(ctx context.Context, url string, data string) (*http.Response, error) { + return c.DoAPIRequest(ctx, http.MethodPut, c.APIURL+url, data, "") } -func (c *Client4) DoAPIPutBytes(url string, data []byte) (*http.Response, error) { - return c.DoAPIRequestBytes(http.MethodPut, c.APIURL+url, data, "") +func (c *Client4) DoAPIPutBytes(ctx context.Context, url string, data []byte) (*http.Response, error) { + return c.DoAPIRequestBytes(ctx, http.MethodPut, c.APIURL+url, data, "") } -func (c *Client4) DoAPIDelete(url string) (*http.Response, error) { - return c.DoAPIRequest(http.MethodDelete, c.APIURL+url, "", "") +func (c *Client4) DoAPIDelete(ctx context.Context, url string) (*http.Response, error) { + return c.DoAPIRequest(ctx, http.MethodDelete, c.APIURL+url, "", "") } -func (c *Client4) DoAPIRequest(method, url, data, etag string) (*http.Response, error) { - return c.DoAPIRequestReader(method, url, strings.NewReader(data), map[string]string{HeaderEtagClient: etag}) +func (c *Client4) DoAPIRequest(ctx context.Context, method, url, data, etag string) (*http.Response, error) { + return c.DoAPIRequestReader(ctx, method, url, strings.NewReader(data), map[string]string{HeaderEtagClient: etag}) } -func (c *Client4) DoAPIRequestWithHeaders(method, url, data string, headers map[string]string) (*http.Response, error) { - return c.DoAPIRequestReader(method, url, strings.NewReader(data), headers) +func (c *Client4) DoAPIRequestWithHeaders(ctx context.Context, method, url, data string, headers map[string]string) (*http.Response, error) { + return c.DoAPIRequestReader(ctx, method, url, strings.NewReader(data), headers) } -func (c *Client4) DoAPIRequestBytes(method, url string, data []byte, etag string) (*http.Response, error) { - return c.DoAPIRequestReader(method, url, bytes.NewReader(data), map[string]string{HeaderEtagClient: etag}) +func (c *Client4) DoAPIRequestBytes(ctx context.Context, method, url string, data []byte, etag string) (*http.Response, error) { + return c.DoAPIRequestReader(ctx, method, url, bytes.NewReader(data), map[string]string{HeaderEtagClient: etag}) } -func (c *Client4) DoAPIRequestReader(method, url string, data io.Reader, headers map[string]string) (*http.Response, error) { - rq, err := http.NewRequest(method, url, data) +func (c *Client4) DoAPIRequestReader(ctx context.Context, method, url string, data io.Reader, headers map[string]string) (*http.Response, error) { + rq, err := http.NewRequestWithContext(ctx, method, url, data) if err != nil { return nil, err } @@ -643,11 +644,11 @@ func (c *Client4) DoAPIRequestReader(method, url string, data io.Reader, headers return rp, nil } -func (c *Client4) DoUploadFile(url string, data []byte, contentType string) (*FileUploadResponse, *Response, error) { - return c.doUploadFile(url, bytes.NewReader(data), contentType, 0) +func (c *Client4) DoUploadFile(ctx context.Context, url string, data []byte, contentType string) (*FileUploadResponse, *Response, error) { + return c.doUploadFile(ctx, url, bytes.NewReader(data), contentType, 0) } -func (c *Client4) doUploadFile(url string, body io.Reader, contentType string, contentLength int64) (*FileUploadResponse, *Response, error) { +func (c *Client4) doUploadFile(ctx context.Context, url string, body io.Reader, contentType string, contentLength int64) (*FileUploadResponse, *Response, error) { rq, err := http.NewRequest("POST", c.APIURL+url, body) if err != nil { return nil, nil, err @@ -678,8 +679,8 @@ func (c *Client4) doUploadFile(url string, body io.Reader, contentType string, c return &res, BuildResponse(rp), nil } -func (c *Client4) DoEmojiUploadFile(url string, data []byte, contentType string) (*Emoji, *Response, error) { - rq, err := http.NewRequest("POST", c.APIURL+url, bytes.NewReader(data)) +func (c *Client4) DoEmojiUploadFile(ctx context.Context, url string, data []byte, contentType string) (*Emoji, *Response, error) { + rq, err := http.NewRequestWithContext(ctx, "POST", c.APIURL+url, bytes.NewReader(data)) if err != nil { return nil, nil, err } @@ -706,7 +707,7 @@ func (c *Client4) DoEmojiUploadFile(url string, data []byte, contentType string) return &e, BuildResponse(rp), nil } -func (c *Client4) DoUploadImportTeam(url string, data []byte, contentType string) (map[string]string, *Response, error) { +func (c *Client4) DoUploadImportTeam(ctx context.Context, url string, data []byte, contentType string) (map[string]string, *Response, error) { rq, err := http.NewRequest("POST", c.APIURL+url, bytes.NewReader(data)) if err != nil { return nil, nil, err @@ -733,53 +734,53 @@ func (c *Client4) DoUploadImportTeam(url string, data []byte, contentType string // Authentication Section // LoginById authenticates a user by user id and password. -func (c *Client4) LoginById(id string, password string) (*User, *Response, error) { +func (c *Client4) LoginById(ctx context.Context, id string, password string) (*User, *Response, error) { m := make(map[string]string) m["id"] = id m["password"] = password - return c.login(m) + return c.login(ctx, m) } // Login authenticates a user by login id, which can be username, email or some sort // of SSO identifier based on server configuration, and a password. -func (c *Client4) Login(loginId string, password string) (*User, *Response, error) { +func (c *Client4) Login(ctx context.Context, loginId string, password string) (*User, *Response, error) { m := make(map[string]string) m["login_id"] = loginId m["password"] = password - return c.login(m) + return c.login(ctx, m) } // LoginByLdap authenticates a user by LDAP id and password. -func (c *Client4) LoginByLdap(loginId string, password string) (*User, *Response, error) { +func (c *Client4) LoginByLdap(ctx context.Context, loginId string, password string) (*User, *Response, error) { m := make(map[string]string) m["login_id"] = loginId m["password"] = password m["ldap_only"] = c.boolString(true) - return c.login(m) + return c.login(ctx, m) } // LoginWithDevice authenticates a user by login id (username, email or some sort // of SSO identifier based on configuration), password and attaches a device id to // the session. -func (c *Client4) LoginWithDevice(loginId string, password string, deviceId string) (*User, *Response, error) { +func (c *Client4) LoginWithDevice(ctx context.Context, loginId string, password string, deviceId string) (*User, *Response, error) { m := make(map[string]string) m["login_id"] = loginId m["password"] = password m["device_id"] = deviceId - return c.login(m) + return c.login(ctx, m) } // LoginWithMFA logs a user in with a MFA token -func (c *Client4) LoginWithMFA(loginId, password, mfaToken string) (*User, *Response, error) { +func (c *Client4) LoginWithMFA(ctx context.Context, loginId, password, mfaToken string) (*User, *Response, error) { m := make(map[string]string) m["login_id"] = loginId m["password"] = password m["token"] = mfaToken - return c.login(m) + return c.login(ctx, m) } -func (c *Client4) login(m map[string]string) (*User, *Response, error) { - r, err := c.DoAPIPost("/users/login", MapToJSON(m)) +func (c *Client4) login(ctx context.Context, m map[string]string) (*User, *Response, error) { + r, err := c.DoAPIPost(ctx, "/users/login", MapToJSON(m)) if err != nil { return nil, BuildResponse(r), err } @@ -795,8 +796,8 @@ func (c *Client4) login(m map[string]string) (*User, *Response, error) { } // Logout terminates the current user's session. -func (c *Client4) Logout() (*Response, error) { - r, err := c.DoAPIPost("/users/logout", "") +func (c *Client4) Logout(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, "/users/logout", "") if err != nil { return BuildResponse(r), err } @@ -807,12 +808,12 @@ func (c *Client4) Logout() (*Response, error) { } // SwitchAccountType changes a user's login type from one type to another. -func (c *Client4) SwitchAccountType(switchRequest *SwitchRequest) (string, *Response, error) { +func (c *Client4) SwitchAccountType(ctx context.Context, switchRequest *SwitchRequest) (string, *Response, error) { buf, err := json.Marshal(switchRequest) if err != nil { return "", BuildResponse(nil), NewAppError("SwitchAccountType", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.usersRoute()+"/login/switch", buf) + r, err := c.DoAPIPostBytes(ctx, c.usersRoute()+"/login/switch", buf) if err != nil { return "", BuildResponse(r), err } @@ -823,13 +824,13 @@ func (c *Client4) SwitchAccountType(switchRequest *SwitchRequest) (string, *Resp // User Section // CreateUser creates a user in the system based on the provided user struct. -func (c *Client4) CreateUser(user *User) (*User, *Response, error) { +func (c *Client4) CreateUser(ctx context.Context, user *User) (*User, *Response, error) { userJSON, err := json.Marshal(user) if err != nil { return nil, nil, NewAppError("CreateUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.usersRoute(), string(userJSON)) + r, err := c.DoAPIPost(ctx, c.usersRoute(), string(userJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -842,7 +843,7 @@ func (c *Client4) CreateUser(user *User) (*User, *Response, error) { } // CreateUserWithToken creates a user in the system based on the provided tokenId. -func (c *Client4) CreateUserWithToken(user *User, tokenId string) (*User, *Response, error) { +func (c *Client4) CreateUserWithToken(ctx context.Context, user *User, tokenId string) (*User, *Response, error) { if tokenId == "" { return nil, nil, NewAppError("MissingHashOrData", "api.user.create_user.missing_token.app_error", nil, "", http.StatusBadRequest) } @@ -852,7 +853,7 @@ func (c *Client4) CreateUserWithToken(user *User, tokenId string) (*User, *Respo if err != nil { return nil, nil, NewAppError("CreateUserWithToken", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.usersRoute()+query, buf) + r, err := c.DoAPIPostBytes(ctx, c.usersRoute()+query, buf) if err != nil { return nil, BuildResponse(r), err } @@ -866,7 +867,7 @@ func (c *Client4) CreateUserWithToken(user *User, tokenId string) (*User, *Respo } // CreateUserWithInviteId creates a user in the system based on the provided invited id. -func (c *Client4) CreateUserWithInviteId(user *User, inviteId string) (*User, *Response, error) { +func (c *Client4) CreateUserWithInviteId(ctx context.Context, user *User, inviteId string) (*User, *Response, error) { if inviteId == "" { return nil, nil, NewAppError("MissingInviteId", "api.user.create_user.missing_invite_id.app_error", nil, "", http.StatusBadRequest) } @@ -876,7 +877,7 @@ func (c *Client4) CreateUserWithInviteId(user *User, inviteId string) (*User, *R if err != nil { return nil, nil, NewAppError("CreateUserWithInviteId", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.usersRoute()+query, buf) + r, err := c.DoAPIPostBytes(ctx, c.usersRoute()+query, buf) if err != nil { return nil, BuildResponse(r), err } @@ -890,8 +891,8 @@ func (c *Client4) CreateUserWithInviteId(user *User, inviteId string) (*User, *R } // GetMe returns the logged in user. -func (c *Client4) GetMe(etag string) (*User, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(Me), etag) +func (c *Client4) GetMe(ctx context.Context, etag string) (*User, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(Me), etag) if err != nil { return nil, BuildResponse(r), err } @@ -907,8 +908,8 @@ func (c *Client4) GetMe(etag string) (*User, *Response, error) { } // GetUser returns a user based on the provided user id string. -func (c *Client4) GetUser(userId, etag string) (*User, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId), etag) +func (c *Client4) GetUser(ctx context.Context, userId, etag string) (*User, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -924,8 +925,8 @@ func (c *Client4) GetUser(userId, etag string) (*User, *Response, error) { } // GetUserByUsername returns a user based on the provided user name string. -func (c *Client4) GetUserByUsername(userName, etag string) (*User, *Response, error) { - r, err := c.DoAPIGet(c.userByUsernameRoute(userName), etag) +func (c *Client4) GetUserByUsername(ctx context.Context, userName, etag string) (*User, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userByUsernameRoute(userName), etag) if err != nil { return nil, BuildResponse(r), err } @@ -941,8 +942,8 @@ func (c *Client4) GetUserByUsername(userName, etag string) (*User, *Response, er } // GetUserByEmail returns a user based on the provided user email string. -func (c *Client4) GetUserByEmail(email, etag string) (*User, *Response, error) { - r, err := c.DoAPIGet(c.userByEmailRoute(email), etag) +func (c *Client4) GetUserByEmail(ctx context.Context, email, etag string) (*User, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userByEmailRoute(email), etag) if err != nil { return nil, BuildResponse(r), err } @@ -958,9 +959,9 @@ func (c *Client4) GetUserByEmail(email, etag string) (*User, *Response, error) { } // AutocompleteUsersInTeam returns the users on a team based on search term. -func (c *Client4) AutocompleteUsersInTeam(teamId string, username string, limit int, etag string) (*UserAutocomplete, *Response, error) { +func (c *Client4) AutocompleteUsersInTeam(ctx context.Context, teamId string, username string, limit int, etag string) (*UserAutocomplete, *Response, error) { query := fmt.Sprintf("?in_team=%v&name=%v&limit=%d", teamId, username, limit) - r, err := c.DoAPIGet(c.usersRoute()+"/autocomplete"+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/autocomplete"+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -976,9 +977,9 @@ func (c *Client4) AutocompleteUsersInTeam(teamId string, username string, limit } // AutocompleteUsersInChannel returns the users in a channel based on search term. -func (c *Client4) AutocompleteUsersInChannel(teamId string, channelId string, username string, limit int, etag string) (*UserAutocomplete, *Response, error) { +func (c *Client4) AutocompleteUsersInChannel(ctx context.Context, teamId string, channelId string, username string, limit int, etag string) (*UserAutocomplete, *Response, error) { query := fmt.Sprintf("?in_team=%v&in_channel=%v&name=%v&limit=%d", teamId, channelId, username, limit) - r, err := c.DoAPIGet(c.usersRoute()+"/autocomplete"+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/autocomplete"+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -994,9 +995,9 @@ func (c *Client4) AutocompleteUsersInChannel(teamId string, channelId string, us } // AutocompleteUsers returns the users in the system based on search term. -func (c *Client4) AutocompleteUsers(username string, limit int, etag string) (*UserAutocomplete, *Response, error) { +func (c *Client4) AutocompleteUsers(ctx context.Context, username string, limit int, etag string) (*UserAutocomplete, *Response, error) { query := fmt.Sprintf("?name=%v&limit=%d", username, limit) - r, err := c.DoAPIGet(c.usersRoute()+"/autocomplete"+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/autocomplete"+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1012,8 +1013,8 @@ func (c *Client4) AutocompleteUsers(username string, limit int, etag string) (*U } // GetDefaultProfileImage gets the default user's profile image. Must be logged in. -func (c *Client4) GetDefaultProfileImage(userId string) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+"/image/default", "") +func (c *Client4) GetDefaultProfileImage(ctx context.Context, userId string) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/image/default", "") if err != nil { return nil, BuildResponse(r), err } @@ -1028,8 +1029,8 @@ func (c *Client4) GetDefaultProfileImage(userId string) ([]byte, *Response, erro } // GetProfileImage gets user's profile image. Must be logged in. -func (c *Client4) GetProfileImage(userId, etag string) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+"/image", etag) +func (c *Client4) GetProfileImage(ctx context.Context, userId, etag string) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/image", etag) if err != nil { return nil, BuildResponse(r), err } @@ -1043,9 +1044,9 @@ func (c *Client4) GetProfileImage(userId, etag string) ([]byte, *Response, error } // GetUsers returns a page of users on the system. Page counting starts at 0. -func (c *Client4) GetUsers(page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsers(ctx context.Context, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1061,9 +1062,9 @@ func (c *Client4) GetUsers(page int, perPage int, etag string) ([]*User, *Respon } // GetUsersWithChannelRoles returns a page of users on the system. Page counting starts at 0. -func (c *Client4) GetUsersWithCustomQueryParameters(page int, perPage int, queryParameters, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersWithCustomQueryParameters(ctx context.Context, page int, perPage int, queryParameters, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&%v", page, perPage, queryParameters) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1079,9 +1080,9 @@ func (c *Client4) GetUsersWithCustomQueryParameters(page int, perPage int, query } // GetUsersInTeam returns a page of users on a team. Page counting starts at 0. -func (c *Client4) GetUsersInTeam(teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersInTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?in_team=%v&page=%v&per_page=%v", teamId, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1097,9 +1098,9 @@ func (c *Client4) GetUsersInTeam(teamId string, page int, perPage int, etag stri } // GetNewUsersInTeam returns a page of users on a team. Page counting starts at 0. -func (c *Client4) GetNewUsersInTeam(teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetNewUsersInTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?sort=create_at&in_team=%v&page=%v&per_page=%v", teamId, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1115,9 +1116,9 @@ func (c *Client4) GetNewUsersInTeam(teamId string, page int, perPage int, etag s } // GetRecentlyActiveUsersInTeam returns a page of users on a team. Page counting starts at 0. -func (c *Client4) GetRecentlyActiveUsersInTeam(teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetRecentlyActiveUsersInTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?sort=last_activity_at&in_team=%v&page=%v&per_page=%v", teamId, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1133,9 +1134,9 @@ func (c *Client4) GetRecentlyActiveUsersInTeam(teamId string, page int, perPage } // GetActiveUsersInTeam returns a page of users on a team. Page counting starts at 0. -func (c *Client4) GetActiveUsersInTeam(teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetActiveUsersInTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?active=true&in_team=%v&page=%v&per_page=%v", teamId, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1151,9 +1152,9 @@ func (c *Client4) GetActiveUsersInTeam(teamId string, page int, perPage int, eta } // GetUsersNotInTeam returns a page of users who are not in a team. Page counting starts at 0. -func (c *Client4) GetUsersNotInTeam(teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersNotInTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?not_in_team=%v&page=%v&per_page=%v", teamId, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1169,9 +1170,9 @@ func (c *Client4) GetUsersNotInTeam(teamId string, page int, perPage int, etag s } // GetUsersInChannel returns a page of users in a channel. Page counting starts at 0. -func (c *Client4) GetUsersInChannel(channelId string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersInChannel(ctx context.Context, channelId string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?in_channel=%v&page=%v&per_page=%v", channelId, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1187,9 +1188,9 @@ func (c *Client4) GetUsersInChannel(channelId string, page int, perPage int, eta } // GetUsersInChannelByStatus returns a page of users in a channel. Page counting starts at 0. Sorted by Status -func (c *Client4) GetUsersInChannelByStatus(channelId string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersInChannelByStatus(ctx context.Context, channelId string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?in_channel=%v&page=%v&per_page=%v&sort=status", channelId, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1205,9 +1206,9 @@ func (c *Client4) GetUsersInChannelByStatus(channelId string, page int, perPage } // GetUsersNotInChannel returns a page of users not in a channel. Page counting starts at 0. -func (c *Client4) GetUsersNotInChannel(teamId, channelId string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersNotInChannel(ctx context.Context, teamId, channelId string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?in_team=%v¬_in_channel=%v&page=%v&per_page=%v", teamId, channelId, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1223,9 +1224,9 @@ func (c *Client4) GetUsersNotInChannel(teamId, channelId string, page int, perPa } // GetUsersWithoutTeam returns a page of users on the system that aren't on any teams. Page counting starts at 0. -func (c *Client4) GetUsersWithoutTeam(page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersWithoutTeam(ctx context.Context, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?without_team=1&page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1241,9 +1242,9 @@ func (c *Client4) GetUsersWithoutTeam(page int, perPage int, etag string) ([]*Us } // GetUsersInGroup returns a page of users in a group. Page counting starts at 0. -func (c *Client4) GetUsersInGroup(groupID string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersInGroup(ctx context.Context, groupID string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?in_group=%v&page=%v&per_page=%v", groupID, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1259,9 +1260,9 @@ func (c *Client4) GetUsersInGroup(groupID string, page int, perPage int, etag st } // GetUsersInGroup returns a page of users in a group. Page counting starts at 0. -func (c *Client4) GetUsersInGroupByDisplayName(groupID string, page int, perPage int, etag string) ([]*User, *Response, error) { +func (c *Client4) GetUsersInGroupByDisplayName(ctx context.Context, groupID string, page int, perPage int, etag string) ([]*User, *Response, error) { query := fmt.Sprintf("?sort=display_name&in_group=%v&page=%v&per_page=%v", groupID, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1277,8 +1278,8 @@ func (c *Client4) GetUsersInGroupByDisplayName(groupID string, page int, perPage } // GetUsersByIds returns a list of users based on the provided user ids. -func (c *Client4) GetUsersByIds(userIds []string) ([]*User, *Response, error) { - r, err := c.DoAPIPost(c.usersRoute()+"/ids", ArrayToJSON(userIds)) +func (c *Client4) GetUsersByIds(ctx context.Context, userIds []string) ([]*User, *Response, error) { + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/ids", ArrayToJSON(userIds)) if err != nil { return nil, BuildResponse(r), err } @@ -1291,7 +1292,7 @@ func (c *Client4) GetUsersByIds(userIds []string) ([]*User, *Response, error) { } // GetUsersByIds returns a list of users based on the provided user ids. -func (c *Client4) GetUsersByIdsWithOptions(userIds []string, options *UserGetByIdsOptions) ([]*User, *Response, error) { +func (c *Client4) GetUsersByIdsWithOptions(ctx context.Context, userIds []string, options *UserGetByIdsOptions) ([]*User, *Response, error) { v := url.Values{} if options.Since != 0 { v.Set("since", fmt.Sprintf("%d", options.Since)) @@ -1302,7 +1303,7 @@ func (c *Client4) GetUsersByIdsWithOptions(userIds []string, options *UserGetByI url += "?" + v.Encode() } - r, err := c.DoAPIPost(url, ArrayToJSON(userIds)) + r, err := c.DoAPIPost(ctx, url, ArrayToJSON(userIds)) if err != nil { return nil, BuildResponse(r), err } @@ -1315,8 +1316,8 @@ func (c *Client4) GetUsersByIdsWithOptions(userIds []string, options *UserGetByI } // GetUsersByUsernames returns a list of users based on the provided usernames. -func (c *Client4) GetUsersByUsernames(usernames []string) ([]*User, *Response, error) { - r, err := c.DoAPIPost(c.usersRoute()+"/usernames", ArrayToJSON(usernames)) +func (c *Client4) GetUsersByUsernames(ctx context.Context, usernames []string) ([]*User, *Response, error) { + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/usernames", ArrayToJSON(usernames)) if err != nil { return nil, BuildResponse(r), err } @@ -1330,8 +1331,8 @@ func (c *Client4) GetUsersByUsernames(usernames []string) ([]*User, *Response, e // GetUsersByGroupChannelIds returns a map with channel ids as keys // and a list of users as values based on the provided user ids. -func (c *Client4) GetUsersByGroupChannelIds(groupChannelIds []string) (map[string][]*User, *Response, error) { - r, err := c.DoAPIPost(c.usersRoute()+"/group_channels", ArrayToJSON(groupChannelIds)) +func (c *Client4) GetUsersByGroupChannelIds(ctx context.Context, groupChannelIds []string) (map[string][]*User, *Response, error) { + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/group_channels", ArrayToJSON(groupChannelIds)) if err != nil { return nil, BuildResponse(r), err } @@ -1343,12 +1344,12 @@ func (c *Client4) GetUsersByGroupChannelIds(groupChannelIds []string) (map[strin } // SearchUsers returns a list of users based on some search criteria. -func (c *Client4) SearchUsers(search *UserSearch) ([]*User, *Response, error) { +func (c *Client4) SearchUsers(ctx context.Context, search *UserSearch) ([]*User, *Response, error) { buf, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchUsers", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.usersRoute()+"/search", buf) + r, err := c.DoAPIPostBytes(ctx, c.usersRoute()+"/search", buf) if err != nil { return nil, BuildResponse(r), err } @@ -1361,12 +1362,12 @@ func (c *Client4) SearchUsers(search *UserSearch) ([]*User, *Response, error) { } // UpdateUser updates a user in the system based on the provided user struct. -func (c *Client4) UpdateUser(user *User) (*User, *Response, error) { +func (c *Client4) UpdateUser(ctx context.Context, user *User) (*User, *Response, error) { buf, err := json.Marshal(user) if err != nil { return nil, nil, NewAppError("UpdateUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.userRoute(user.Id), buf) + r, err := c.DoAPIPutBytes(ctx, c.userRoute(user.Id), buf) if err != nil { return nil, BuildResponse(r), err } @@ -1379,12 +1380,12 @@ func (c *Client4) UpdateUser(user *User) (*User, *Response, error) { } // PatchUser partially updates a user in the system. Any missing fields are not updated. -func (c *Client4) PatchUser(userId string, patch *UserPatch) (*User, *Response, error) { +func (c *Client4) PatchUser(ctx context.Context, userId string, patch *UserPatch) (*User, *Response, error) { buf, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.userRoute(userId)+"/patch", buf) + r, err := c.DoAPIPutBytes(ctx, c.userRoute(userId)+"/patch", buf) if err != nil { return nil, BuildResponse(r), err } @@ -1397,12 +1398,12 @@ func (c *Client4) PatchUser(userId string, patch *UserPatch) (*User, *Response, } // UpdateUserAuth updates a user AuthData (uthData, authService and password) in the system. -func (c *Client4) UpdateUserAuth(userId string, userAuth *UserAuth) (*UserAuth, *Response, error) { +func (c *Client4) UpdateUserAuth(ctx context.Context, userId string, userAuth *UserAuth) (*UserAuth, *Response, error) { buf, err := json.Marshal(userAuth) if err != nil { return nil, nil, NewAppError("UpdateUserAuth", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.userRoute(userId)+"/auth", buf) + r, err := c.DoAPIPutBytes(ctx, c.userRoute(userId)+"/auth", buf) if err != nil { return nil, BuildResponse(r), err } @@ -1417,12 +1418,12 @@ func (c *Client4) UpdateUserAuth(userId string, userAuth *UserAuth) (*UserAuth, // UpdateUserMfa activates multi-factor authentication for a user if activate // is true and a valid code is provided. If activate is false, then code is not // required and multi-factor authentication is disabled for the user. -func (c *Client4) UpdateUserMfa(userId, code string, activate bool) (*Response, error) { +func (c *Client4) UpdateUserMfa(ctx context.Context, userId, code string, activate bool) (*Response, error) { requestBody := make(map[string]any) requestBody["activate"] = activate requestBody["code"] = code - r, err := c.DoAPIPut(c.userRoute(userId)+"/mfa", StringInterfaceToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.userRoute(userId)+"/mfa", StringInterfaceToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1432,8 +1433,8 @@ func (c *Client4) UpdateUserMfa(userId, code string, activate bool) (*Response, // GenerateMfaSecret will generate a new MFA secret for a user and return it as a string and // as a base64 encoded image QR code. -func (c *Client4) GenerateMfaSecret(userId string) (*MfaSecret, *Response, error) { - r, err := c.DoAPIPost(c.userRoute(userId)+"/mfa/generate", "") +func (c *Client4) GenerateMfaSecret(ctx context.Context, userId string) (*MfaSecret, *Response, error) { + r, err := c.DoAPIPost(ctx, c.userRoute(userId)+"/mfa/generate", "") if err != nil { return nil, BuildResponse(r), err } @@ -1446,9 +1447,9 @@ func (c *Client4) GenerateMfaSecret(userId string) (*MfaSecret, *Response, error } // UpdateUserPassword updates a user's password. Must be logged in as the user or be a system administrator. -func (c *Client4) UpdateUserPassword(userId, currentPassword, newPassword string) (*Response, error) { +func (c *Client4) UpdateUserPassword(ctx context.Context, userId, currentPassword, newPassword string) (*Response, error) { requestBody := map[string]string{"current_password": currentPassword, "new_password": newPassword} - r, err := c.DoAPIPut(c.userRoute(userId)+"/password", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.userRoute(userId)+"/password", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1457,9 +1458,9 @@ func (c *Client4) UpdateUserPassword(userId, currentPassword, newPassword string } // UpdateUserHashedPassword updates a user's password with an already-hashed password. Must be a system administrator. -func (c *Client4) UpdateUserHashedPassword(userId, newHashedPassword string) (*Response, error) { +func (c *Client4) UpdateUserHashedPassword(ctx context.Context, userId, newHashedPassword string) (*Response, error) { requestBody := map[string]string{"already_hashed": "true", "new_password": newHashedPassword} - r, err := c.DoAPIPut(c.userRoute(userId)+"/password", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.userRoute(userId)+"/password", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1468,8 +1469,8 @@ func (c *Client4) UpdateUserHashedPassword(userId, newHashedPassword string) (*R } // PromoteGuestToUser convert a guest into a regular user -func (c *Client4) PromoteGuestToUser(guestId string) (*Response, error) { - r, err := c.DoAPIPost(c.userRoute(guestId)+"/promote", "") +func (c *Client4) PromoteGuestToUser(ctx context.Context, guestId string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.userRoute(guestId)+"/promote", "") if err != nil { return BuildResponse(r), err } @@ -1478,8 +1479,8 @@ func (c *Client4) PromoteGuestToUser(guestId string) (*Response, error) { } // DemoteUserToGuest convert a regular user into a guest -func (c *Client4) DemoteUserToGuest(guestId string) (*Response, error) { - r, err := c.DoAPIPost(c.userRoute(guestId)+"/demote", "") +func (c *Client4) DemoteUserToGuest(ctx context.Context, guestId string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.userRoute(guestId)+"/demote", "") if err != nil { return BuildResponse(r), err } @@ -1488,9 +1489,9 @@ func (c *Client4) DemoteUserToGuest(guestId string) (*Response, error) { } // UpdateUserRoles updates a user's roles in the system. A user can have "system_user" and "system_admin" roles. -func (c *Client4) UpdateUserRoles(userId, roles string) (*Response, error) { +func (c *Client4) UpdateUserRoles(ctx context.Context, userId, roles string) (*Response, error) { requestBody := map[string]string{"roles": roles} - r, err := c.DoAPIPut(c.userRoute(userId)+"/roles", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.userRoute(userId)+"/roles", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1499,10 +1500,10 @@ func (c *Client4) UpdateUserRoles(userId, roles string) (*Response, error) { } // UpdateUserActive updates status of a user whether active or not. -func (c *Client4) UpdateUserActive(userId string, active bool) (*Response, error) { +func (c *Client4) UpdateUserActive(ctx context.Context, userId string, active bool) (*Response, error) { requestBody := make(map[string]any) requestBody["active"] = active - r, err := c.DoAPIPut(c.userRoute(userId)+"/active", StringInterfaceToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.userRoute(userId)+"/active", StringInterfaceToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1512,8 +1513,8 @@ func (c *Client4) UpdateUserActive(userId string, active bool) (*Response, error } // DeleteUser deactivates a user in the system based on the provided user id string. -func (c *Client4) DeleteUser(userId string) (*Response, error) { - r, err := c.DoAPIDelete(c.userRoute(userId)) +func (c *Client4) DeleteUser(ctx context.Context, userId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.userRoute(userId)) if err != nil { return BuildResponse(r), err } @@ -1522,8 +1523,8 @@ func (c *Client4) DeleteUser(userId string) (*Response, error) { } // PermanentDeleteUser deletes a user in the system based on the provided user id string. -func (c *Client4) PermanentDeleteUser(userId string) (*Response, error) { - r, err := c.DoAPIDelete(c.userRoute(userId) + "?permanent=" + c.boolString(true)) +func (c *Client4) PermanentDeleteUser(ctx context.Context, userId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.userRoute(userId)+"?permanent="+c.boolString(true)) if err != nil { return BuildResponse(r), err } @@ -1532,8 +1533,8 @@ func (c *Client4) PermanentDeleteUser(userId string) (*Response, error) { } // ConvertUserToBot converts a user to a bot user. -func (c *Client4) ConvertUserToBot(userId string) (*Bot, *Response, error) { - r, err := c.DoAPIPost(c.userRoute(userId)+"/convert_to_bot", "") +func (c *Client4) ConvertUserToBot(ctx context.Context, userId string) (*Bot, *Response, error) { + r, err := c.DoAPIPost(ctx, c.userRoute(userId)+"/convert_to_bot", "") if err != nil { return nil, BuildResponse(r), err } @@ -1547,7 +1548,7 @@ func (c *Client4) ConvertUserToBot(userId string) (*Bot, *Response, error) { } // ConvertBotToUser converts a bot user to a user. -func (c *Client4) ConvertBotToUser(userId string, userPatch *UserPatch, setSystemAdmin bool) (*User, *Response, error) { +func (c *Client4) ConvertBotToUser(ctx context.Context, userId string, userPatch *UserPatch, setSystemAdmin bool) (*User, *Response, error) { var query string if setSystemAdmin { query = "?set_system_admin=true" @@ -1556,7 +1557,7 @@ func (c *Client4) ConvertBotToUser(userId string, userPatch *UserPatch, setSyste if err != nil { return nil, nil, NewAppError("ConvertBotToUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.botRoute(userId)+"/convert_to_user"+query, buf) + r, err := c.DoAPIPostBytes(ctx, c.botRoute(userId)+"/convert_to_user"+query, buf) if err != nil { return nil, BuildResponse(r), err } @@ -1569,8 +1570,8 @@ func (c *Client4) ConvertBotToUser(userId string, userPatch *UserPatch, setSyste } // PermanentDeleteAll permanently deletes all users in the system. This is a local only endpoint -func (c *Client4) PermanentDeleteAllUsers() (*Response, error) { - r, err := c.DoAPIDelete(c.usersRoute()) +func (c *Client4) PermanentDeleteAllUsers(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.usersRoute()) if err != nil { return BuildResponse(r), err } @@ -1580,9 +1581,9 @@ func (c *Client4) PermanentDeleteAllUsers() (*Response, error) { // SendPasswordResetEmail will send a link for password resetting to a user with the // provided email. -func (c *Client4) SendPasswordResetEmail(email string) (*Response, error) { +func (c *Client4) SendPasswordResetEmail(ctx context.Context, email string) (*Response, error) { requestBody := map[string]string{"email": email} - r, err := c.DoAPIPost(c.usersRoute()+"/password/reset/send", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/password/reset/send", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1591,9 +1592,9 @@ func (c *Client4) SendPasswordResetEmail(email string) (*Response, error) { } // ResetPassword uses a recovery code to update reset a user's password. -func (c *Client4) ResetPassword(token, newPassword string) (*Response, error) { +func (c *Client4) ResetPassword(ctx context.Context, token, newPassword string) (*Response, error) { requestBody := map[string]string{"token": token, "new_password": newPassword} - r, err := c.DoAPIPost(c.usersRoute()+"/password/reset", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/password/reset", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1602,8 +1603,8 @@ func (c *Client4) ResetPassword(token, newPassword string) (*Response, error) { } // GetSessions returns a list of sessions based on the provided user id string. -func (c *Client4) GetSessions(userId, etag string) ([]*Session, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+"/sessions", etag) +func (c *Client4) GetSessions(ctx context.Context, userId, etag string) ([]*Session, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/sessions", etag) if err != nil { return nil, BuildResponse(r), err } @@ -1616,9 +1617,9 @@ func (c *Client4) GetSessions(userId, etag string) ([]*Session, *Response, error } // RevokeSession revokes a user session based on the provided user id and session id strings. -func (c *Client4) RevokeSession(userId, sessionId string) (*Response, error) { +func (c *Client4) RevokeSession(ctx context.Context, userId, sessionId string) (*Response, error) { requestBody := map[string]string{"session_id": sessionId} - r, err := c.DoAPIPost(c.userRoute(userId)+"/sessions/revoke", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.userRoute(userId)+"/sessions/revoke", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1627,8 +1628,8 @@ func (c *Client4) RevokeSession(userId, sessionId string) (*Response, error) { } // RevokeAllSessions revokes all sessions for the provided user id string. -func (c *Client4) RevokeAllSessions(userId string) (*Response, error) { - r, err := c.DoAPIPost(c.userRoute(userId)+"/sessions/revoke/all", "") +func (c *Client4) RevokeAllSessions(ctx context.Context, userId string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.userRoute(userId)+"/sessions/revoke/all", "") if err != nil { return BuildResponse(r), err } @@ -1637,8 +1638,8 @@ func (c *Client4) RevokeAllSessions(userId string) (*Response, error) { } // RevokeAllSessions revokes all sessions for all the users. -func (c *Client4) RevokeSessionsFromAllUsers() (*Response, error) { - r, err := c.DoAPIPost(c.usersRoute()+"/sessions/revoke/all", "") +func (c *Client4) RevokeSessionsFromAllUsers(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/sessions/revoke/all", "") if err != nil { return BuildResponse(r), err } @@ -1647,9 +1648,9 @@ func (c *Client4) RevokeSessionsFromAllUsers() (*Response, error) { } // AttachDeviceId attaches a mobile device ID to the current session. -func (c *Client4) AttachDeviceId(deviceId string) (*Response, error) { +func (c *Client4) AttachDeviceId(ctx context.Context, deviceId string) (*Response, error) { requestBody := map[string]string{"device_id": deviceId} - r, err := c.DoAPIPut(c.usersRoute()+"/sessions/device", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.usersRoute()+"/sessions/device", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1661,7 +1662,7 @@ func (c *Client4) AttachDeviceId(deviceId string) (*Response, error) { // of unread messages and mentions the current user has for the teams it belongs to. // An optional team ID can be set to exclude that team from the results. // An optional boolean can be set to include collapsed thread unreads. Must be authenticated. -func (c *Client4) GetTeamsUnreadForUser(userId, teamIdToExclude string, includeCollapsedThreads bool) ([]*TeamUnread, *Response, error) { +func (c *Client4) GetTeamsUnreadForUser(ctx context.Context, userId, teamIdToExclude string, includeCollapsedThreads bool) ([]*TeamUnread, *Response, error) { query := url.Values{} if teamIdToExclude != "" { @@ -1672,7 +1673,7 @@ func (c *Client4) GetTeamsUnreadForUser(userId, teamIdToExclude string, includeC query.Set("include_collapsed_threads", "true") } - r, err := c.DoAPIGet(c.userRoute(userId)+"/teams/unread?"+query.Encode(), "") + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/teams/unread?"+query.Encode(), "") if err != nil { return nil, BuildResponse(r), err } @@ -1686,9 +1687,9 @@ func (c *Client4) GetTeamsUnreadForUser(userId, teamIdToExclude string, includeC } // GetUserAudits returns a list of audit based on the provided user id string. -func (c *Client4) GetUserAudits(userId string, page int, perPage int, etag string) (Audits, *Response, error) { +func (c *Client4) GetUserAudits(ctx context.Context, userId string, page int, perPage int, etag string) (Audits, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.userRoute(userId)+"/audits"+query, etag) + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/audits"+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -1703,9 +1704,9 @@ func (c *Client4) GetUserAudits(userId string, page int, perPage int, etag strin } // VerifyUserEmail will verify a user's email using the supplied token. -func (c *Client4) VerifyUserEmail(token string) (*Response, error) { +func (c *Client4) VerifyUserEmail(ctx context.Context, token string) (*Response, error) { requestBody := map[string]string{"token": token} - r, err := c.DoAPIPost(c.usersRoute()+"/email/verify", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/email/verify", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1714,8 +1715,8 @@ func (c *Client4) VerifyUserEmail(token string) (*Response, error) { } // VerifyUserEmailWithoutToken will verify a user's email by its Id. (Requires manage system role) -func (c *Client4) VerifyUserEmailWithoutToken(userId string) (*User, *Response, error) { - r, err := c.DoAPIPost(c.userRoute(userId)+"/email/verify/member", "") +func (c *Client4) VerifyUserEmailWithoutToken(ctx context.Context, userId string) (*User, *Response, error) { + r, err := c.DoAPIPost(ctx, c.userRoute(userId)+"/email/verify/member", "") if err != nil { return nil, BuildResponse(r), err } @@ -1730,9 +1731,9 @@ func (c *Client4) VerifyUserEmailWithoutToken(userId string) (*User, *Response, // SendVerificationEmail will send an email to the user with the provided email address, if // that user exists. The email will contain a link that can be used to verify the user's // email address. -func (c *Client4) SendVerificationEmail(email string) (*Response, error) { +func (c *Client4) SendVerificationEmail(ctx context.Context, email string) (*Response, error) { requestBody := map[string]string{"email": email} - r, err := c.DoAPIPost(c.usersRoute()+"/email/verify/send", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/email/verify/send", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1741,8 +1742,8 @@ func (c *Client4) SendVerificationEmail(email string) (*Response, error) { } // SetDefaultProfileImage resets the profile image to a default generated one. -func (c *Client4) SetDefaultProfileImage(userId string) (*Response, error) { - r, err := c.DoAPIDelete(c.userRoute(userId) + "/image") +func (c *Client4) SetDefaultProfileImage(ctx context.Context, userId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.userRoute(userId)+"/image") if err != nil { return BuildResponse(r), err } @@ -1750,7 +1751,7 @@ func (c *Client4) SetDefaultProfileImage(userId string) (*Response, error) { } // SetProfileImage sets profile image of the user. -func (c *Client4) SetProfileImage(userId string, data []byte) (*Response, error) { +func (c *Client4) SetProfileImage(ctx context.Context, userId string, data []byte) (*Response, error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) @@ -1794,9 +1795,9 @@ func (c *Client4) SetProfileImage(userId string, data []byte) (*Response, error) // of a session token to access the REST API. Must have the 'create_user_access_token' // permission and if generating for another user, must have the 'edit_other_users' // permission. A non-blank description is required. -func (c *Client4) CreateUserAccessToken(userId, description string) (*UserAccessToken, *Response, error) { +func (c *Client4) CreateUserAccessToken(ctx context.Context, userId, description string) (*UserAccessToken, *Response, error) { requestBody := map[string]string{"description": description} - r, err := c.DoAPIPost(c.userRoute(userId)+"/tokens", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.userRoute(userId)+"/tokens", MapToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -1811,9 +1812,9 @@ func (c *Client4) CreateUserAccessToken(userId, description string) (*UserAccess // GetUserAccessTokens will get a page of access tokens' id, description, is_active // and the user_id in the system. The actual token will not be returned. Must have // the 'manage_system' permission. -func (c *Client4) GetUserAccessTokens(page int, perPage int) ([]*UserAccessToken, *Response, error) { +func (c *Client4) GetUserAccessTokens(ctx context.Context, page int, perPage int) ([]*UserAccessToken, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.userAccessTokensRoute()+query, "") + r, err := c.DoAPIGet(ctx, c.userAccessTokensRoute()+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -1829,8 +1830,8 @@ func (c *Client4) GetUserAccessTokens(page int, perPage int) ([]*UserAccessToken // and the user_id of the user it is for. The actual token will not be returned. // Must have the 'read_user_access_token' permission and if getting for another // user, must have the 'edit_other_users' permission. -func (c *Client4) GetUserAccessToken(tokenId string) (*UserAccessToken, *Response, error) { - r, err := c.DoAPIGet(c.userAccessTokenRoute(tokenId), "") +func (c *Client4) GetUserAccessToken(ctx context.Context, tokenId string) (*UserAccessToken, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userAccessTokenRoute(tokenId), "") if err != nil { return nil, BuildResponse(r), err } @@ -1846,9 +1847,9 @@ func (c *Client4) GetUserAccessToken(tokenId string) (*UserAccessToken, *Respons // description and user_id for each. The actual tokens will not be returned. Must have // the 'read_user_access_token' permission and if getting for another user, must have the // 'edit_other_users' permission. -func (c *Client4) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*UserAccessToken, *Response, error) { +func (c *Client4) GetUserAccessTokensForUser(ctx context.Context, userId string, page, perPage int) ([]*UserAccessToken, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.userRoute(userId)+"/tokens"+query, "") + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/tokens"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -1863,9 +1864,9 @@ func (c *Client4) GetUserAccessTokensForUser(userId string, page, perPage int) ( // RevokeUserAccessToken will revoke a user access token by id. Must have the // 'revoke_user_access_token' permission and if revoking for another user, must have the // 'edit_other_users' permission. -func (c *Client4) RevokeUserAccessToken(tokenId string) (*Response, error) { +func (c *Client4) RevokeUserAccessToken(ctx context.Context, tokenId string) (*Response, error) { requestBody := map[string]string{"token_id": tokenId} - r, err := c.DoAPIPost(c.usersRoute()+"/tokens/revoke", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/tokens/revoke", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1874,12 +1875,12 @@ func (c *Client4) RevokeUserAccessToken(tokenId string) (*Response, error) { } // SearchUserAccessTokens returns user access tokens matching the provided search term. -func (c *Client4) SearchUserAccessTokens(search *UserAccessTokenSearch) ([]*UserAccessToken, *Response, error) { +func (c *Client4) SearchUserAccessTokens(ctx context.Context, search *UserAccessTokenSearch) ([]*UserAccessToken, *Response, error) { buf, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchUserAccessTokens", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.usersRoute()+"/tokens/search", buf) + r, err := c.DoAPIPostBytes(ctx, c.usersRoute()+"/tokens/search", buf) if err != nil { return nil, BuildResponse(r), err } @@ -1894,9 +1895,9 @@ func (c *Client4) SearchUserAccessTokens(search *UserAccessTokenSearch) ([]*User // DisableUserAccessToken will disable a user access token by id. Must have the // 'revoke_user_access_token' permission and if disabling for another user, must have the // 'edit_other_users' permission. -func (c *Client4) DisableUserAccessToken(tokenId string) (*Response, error) { +func (c *Client4) DisableUserAccessToken(ctx context.Context, tokenId string) (*Response, error) { requestBody := map[string]string{"token_id": tokenId} - r, err := c.DoAPIPost(c.usersRoute()+"/tokens/disable", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/tokens/disable", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1907,9 +1908,9 @@ func (c *Client4) DisableUserAccessToken(tokenId string) (*Response, error) { // EnableUserAccessToken will enable a user access token by id. Must have the // 'create_user_access_token' permission and if enabling for another user, must have the // 'edit_other_users' permission. -func (c *Client4) EnableUserAccessToken(tokenId string) (*Response, error) { +func (c *Client4) EnableUserAccessToken(ctx context.Context, tokenId string) (*Response, error) { requestBody := map[string]string{"token_id": tokenId} - r, err := c.DoAPIPost(c.usersRoute()+"/tokens/enable", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/tokens/enable", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -1920,12 +1921,12 @@ func (c *Client4) EnableUserAccessToken(tokenId string) (*Response, error) { // Bots section // CreateBot creates a bot in the system based on the provided bot struct. -func (c *Client4) CreateBot(bot *Bot) (*Bot, *Response, error) { +func (c *Client4) CreateBot(ctx context.Context, bot *Bot) (*Bot, *Response, error) { buf, err := json.Marshal(bot) if err != nil { return nil, nil, NewAppError("CreateBot", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.botsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.botsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -1941,12 +1942,12 @@ func (c *Client4) CreateBot(bot *Bot) (*Bot, *Response, error) { } // PatchBot partially updates a bot. Any missing fields are not updated. -func (c *Client4) PatchBot(userId string, patch *BotPatch) (*Bot, *Response, error) { +func (c *Client4) PatchBot(ctx context.Context, userId string, patch *BotPatch) (*Bot, *Response, error) { buf, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchBot", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.botRoute(userId), buf) + r, err := c.DoAPIPutBytes(ctx, c.botRoute(userId), buf) if err != nil { return nil, BuildResponse(r), err } @@ -1962,8 +1963,8 @@ func (c *Client4) PatchBot(userId string, patch *BotPatch) (*Bot, *Response, err } // GetBot fetches the given, undeleted bot. -func (c *Client4) GetBot(userId string, etag string) (*Bot, *Response, error) { - r, err := c.DoAPIGet(c.botRoute(userId), etag) +func (c *Client4) GetBot(ctx context.Context, userId string, etag string) (*Bot, *Response, error) { + r, err := c.DoAPIGet(ctx, c.botRoute(userId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -1979,8 +1980,8 @@ func (c *Client4) GetBot(userId string, etag string) (*Bot, *Response, error) { } // GetBotIncludeDeleted fetches the given bot, even if it is deleted. -func (c *Client4) GetBotIncludeDeleted(userId string, etag string) (*Bot, *Response, error) { - r, err := c.DoAPIGet(c.botRoute(userId)+"?include_deleted="+c.boolString(true), etag) +func (c *Client4) GetBotIncludeDeleted(ctx context.Context, userId string, etag string) (*Bot, *Response, error) { + r, err := c.DoAPIGet(ctx, c.botRoute(userId)+"?include_deleted="+c.boolString(true), etag) if err != nil { return nil, BuildResponse(r), err } @@ -1996,9 +1997,9 @@ func (c *Client4) GetBotIncludeDeleted(userId string, etag string) (*Bot, *Respo } // GetBots fetches the given page of bots, excluding deleted. -func (c *Client4) GetBots(page, perPage int, etag string) ([]*Bot, *Response, error) { +func (c *Client4) GetBots(ctx context.Context, page, perPage int, etag string) ([]*Bot, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.botsRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.botsRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -2013,9 +2014,9 @@ func (c *Client4) GetBots(page, perPage int, etag string) ([]*Bot, *Response, er } // GetBotsIncludeDeleted fetches the given page of bots, including deleted. -func (c *Client4) GetBotsIncludeDeleted(page, perPage int, etag string) ([]*Bot, *Response, error) { +func (c *Client4) GetBotsIncludeDeleted(ctx context.Context, page, perPage int, etag string) ([]*Bot, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&include_deleted="+c.boolString(true), page, perPage) - r, err := c.DoAPIGet(c.botsRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.botsRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -2030,9 +2031,9 @@ func (c *Client4) GetBotsIncludeDeleted(page, perPage int, etag string) ([]*Bot, } // GetBotsOrphaned fetches the given page of bots, only including orphaned bots. -func (c *Client4) GetBotsOrphaned(page, perPage int, etag string) ([]*Bot, *Response, error) { +func (c *Client4) GetBotsOrphaned(ctx context.Context, page, perPage int, etag string) ([]*Bot, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&only_orphaned="+c.boolString(true), page, perPage) - r, err := c.DoAPIGet(c.botsRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.botsRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -2047,8 +2048,8 @@ func (c *Client4) GetBotsOrphaned(page, perPage int, etag string) ([]*Bot, *Resp } // DisableBot disables the given bot in the system. -func (c *Client4) DisableBot(botUserId string) (*Bot, *Response, error) { - r, err := c.DoAPIPostBytes(c.botRoute(botUserId)+"/disable", nil) +func (c *Client4) DisableBot(ctx context.Context, botUserId string) (*Bot, *Response, error) { + r, err := c.DoAPIPostBytes(ctx, c.botRoute(botUserId)+"/disable", nil) if err != nil { return nil, BuildResponse(r), err } @@ -2064,8 +2065,8 @@ func (c *Client4) DisableBot(botUserId string) (*Bot, *Response, error) { } // EnableBot disables the given bot in the system. -func (c *Client4) EnableBot(botUserId string) (*Bot, *Response, error) { - r, err := c.DoAPIPostBytes(c.botRoute(botUserId)+"/enable", nil) +func (c *Client4) EnableBot(ctx context.Context, botUserId string) (*Bot, *Response, error) { + r, err := c.DoAPIPostBytes(ctx, c.botRoute(botUserId)+"/enable", nil) if err != nil { return nil, BuildResponse(r), err } @@ -2081,8 +2082,8 @@ func (c *Client4) EnableBot(botUserId string) (*Bot, *Response, error) { } // AssignBot assigns the given bot to the given user -func (c *Client4) AssignBot(botUserId, newOwnerId string) (*Bot, *Response, error) { - r, err := c.DoAPIPostBytes(c.botRoute(botUserId)+"/assign/"+newOwnerId, nil) +func (c *Client4) AssignBot(ctx context.Context, botUserId, newOwnerId string) (*Bot, *Response, error) { + r, err := c.DoAPIPostBytes(ctx, c.botRoute(botUserId)+"/assign/"+newOwnerId, nil) if err != nil { return nil, BuildResponse(r), err } @@ -2100,12 +2101,12 @@ func (c *Client4) AssignBot(botUserId, newOwnerId string) (*Bot, *Response, erro // Team Section // CreateTeam creates a team in the system based on the provided team struct. -func (c *Client4) CreateTeam(team *Team) (*Team, *Response, error) { +func (c *Client4) CreateTeam(ctx context.Context, team *Team) (*Team, *Response, error) { buf, err := json.Marshal(team) if err != nil { return nil, nil, NewAppError("CreateTeam", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.teamsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.teamsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -2118,8 +2119,8 @@ func (c *Client4) CreateTeam(team *Team) (*Team, *Response, error) { } // GetTeam returns a team based on the provided team id string. -func (c *Client4) GetTeam(teamId, etag string) (*Team, *Response, error) { - r, err := c.DoAPIGet(c.teamRoute(teamId), etag) +func (c *Client4) GetTeam(ctx context.Context, teamId, etag string) (*Team, *Response, error) { + r, err := c.DoAPIGet(ctx, c.teamRoute(teamId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -2132,9 +2133,9 @@ func (c *Client4) GetTeam(teamId, etag string) (*Team, *Response, error) { } // GetAllTeams returns all teams based on permissions. -func (c *Client4) GetAllTeams(etag string, page int, perPage int) ([]*Team, *Response, error) { +func (c *Client4) GetAllTeams(ctx context.Context, etag string, page int, perPage int) ([]*Team, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.teamsRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.teamsRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -2147,9 +2148,9 @@ func (c *Client4) GetAllTeams(etag string, page int, perPage int) ([]*Team, *Res } // GetAllTeamsWithTotalCount returns all teams based on permissions. -func (c *Client4) GetAllTeamsWithTotalCount(etag string, page int, perPage int) ([]*Team, int64, *Response, error) { +func (c *Client4) GetAllTeamsWithTotalCount(ctx context.Context, etag string, page int, perPage int) ([]*Team, int64, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&include_total_count="+c.boolString(true), page, perPage) - r, err := c.DoAPIGet(c.teamsRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.teamsRoute()+query, etag) if err != nil { return nil, 0, BuildResponse(r), err } @@ -2163,9 +2164,9 @@ func (c *Client4) GetAllTeamsWithTotalCount(etag string, page int, perPage int) // GetAllTeamsExcludePolicyConstrained returns all teams which are not part of a data retention policy. // Must be a system administrator. -func (c *Client4) GetAllTeamsExcludePolicyConstrained(etag string, page int, perPage int) ([]*Team, *Response, error) { +func (c *Client4) GetAllTeamsExcludePolicyConstrained(ctx context.Context, etag string, page int, perPage int) ([]*Team, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&exclude_policy_constrained=%v", page, perPage, true) - r, err := c.DoAPIGet(c.teamsRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.teamsRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -2178,8 +2179,8 @@ func (c *Client4) GetAllTeamsExcludePolicyConstrained(etag string, page int, per } // GetTeamByName returns a team based on the provided team name string. -func (c *Client4) GetTeamByName(name, etag string) (*Team, *Response, error) { - r, err := c.DoAPIGet(c.teamByNameRoute(name), etag) +func (c *Client4) GetTeamByName(ctx context.Context, name, etag string) (*Team, *Response, error) { + r, err := c.DoAPIGet(ctx, c.teamByNameRoute(name), etag) if err != nil { return nil, BuildResponse(r), err } @@ -2192,12 +2193,12 @@ func (c *Client4) GetTeamByName(name, etag string) (*Team, *Response, error) { } // SearchTeams returns teams matching the provided search term. -func (c *Client4) SearchTeams(search *TeamSearch) ([]*Team, *Response, error) { +func (c *Client4) SearchTeams(ctx context.Context, search *TeamSearch) ([]*Team, *Response, error) { buf, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchTeams", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.teamsRoute()+"/search", buf) + r, err := c.DoAPIPostBytes(ctx, c.teamsRoute()+"/search", buf) if err != nil { return nil, BuildResponse(r), err } @@ -2210,7 +2211,7 @@ func (c *Client4) SearchTeams(search *TeamSearch) ([]*Team, *Response, error) { } // SearchTeamsPaged returns a page of teams and the total count matching the provided search term. -func (c *Client4) SearchTeamsPaged(search *TeamSearch) ([]*Team, int64, *Response, error) { +func (c *Client4) SearchTeamsPaged(ctx context.Context, search *TeamSearch) ([]*Team, int64, *Response, error) { if search.Page == nil { search.Page = NewInt(0) } @@ -2221,7 +2222,7 @@ func (c *Client4) SearchTeamsPaged(search *TeamSearch) ([]*Team, int64, *Respons if err != nil { return nil, 0, BuildResponse(nil), NewAppError("SearchTeamsPaged", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.teamsRoute()+"/search", buf) + r, err := c.DoAPIPostBytes(ctx, c.teamsRoute()+"/search", buf) if err != nil { return nil, 0, BuildResponse(r), err } @@ -2234,8 +2235,8 @@ func (c *Client4) SearchTeamsPaged(search *TeamSearch) ([]*Team, int64, *Respons } // TeamExists returns true or false if the team exist or not. -func (c *Client4) TeamExists(name, etag string) (bool, *Response, error) { - r, err := c.DoAPIGet(c.teamByNameRoute(name)+"/exists", etag) +func (c *Client4) TeamExists(ctx context.Context, name, etag string) (bool, *Response, error) { + r, err := c.DoAPIGet(ctx, c.teamByNameRoute(name)+"/exists", etag) if err != nil { return false, BuildResponse(r), err } @@ -2245,8 +2246,8 @@ func (c *Client4) TeamExists(name, etag string) (bool, *Response, error) { // GetTeamsForUser returns a list of teams a user is on. Must be logged in as the user // or be a system administrator. -func (c *Client4) GetTeamsForUser(userId, etag string) ([]*Team, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+"/teams", etag) +func (c *Client4) GetTeamsForUser(ctx context.Context, userId, etag string) ([]*Team, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/teams", etag) if err != nil { return nil, BuildResponse(r), err } @@ -2259,8 +2260,8 @@ func (c *Client4) GetTeamsForUser(userId, etag string) ([]*Team, *Response, erro } // GetTeamMember returns a team member based on the provided team and user id strings. -func (c *Client4) GetTeamMember(teamId, userId, etag string) (*TeamMember, *Response, error) { - r, err := c.DoAPIGet(c.teamMemberRoute(teamId, userId), etag) +func (c *Client4) GetTeamMember(ctx context.Context, teamId, userId, etag string) (*TeamMember, *Response, error) { + r, err := c.DoAPIGet(ctx, c.teamMemberRoute(teamId, userId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -2276,9 +2277,9 @@ func (c *Client4) GetTeamMember(teamId, userId, etag string) (*TeamMember, *Resp } // UpdateTeamMemberRoles will update the roles on a team for a user. -func (c *Client4) UpdateTeamMemberRoles(teamId, userId, newRoles string) (*Response, error) { +func (c *Client4) UpdateTeamMemberRoles(ctx context.Context, teamId, userId, newRoles string) (*Response, error) { requestBody := map[string]string{"roles": newRoles} - r, err := c.DoAPIPut(c.teamMemberRoute(teamId, userId)+"/roles", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.teamMemberRoute(teamId, userId)+"/roles", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -2287,12 +2288,12 @@ func (c *Client4) UpdateTeamMemberRoles(teamId, userId, newRoles string) (*Respo } // UpdateTeamMemberSchemeRoles will update the scheme-derived roles on a team for a user. -func (c *Client4) UpdateTeamMemberSchemeRoles(teamId string, userId string, schemeRoles *SchemeRoles) (*Response, error) { +func (c *Client4) UpdateTeamMemberSchemeRoles(ctx context.Context, teamId string, userId string, schemeRoles *SchemeRoles) (*Response, error) { buf, err := json.Marshal(schemeRoles) if err != nil { return nil, NewAppError("UpdateTeamMemberSchemeRoles", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.teamMemberRoute(teamId, userId)+"/schemeRoles", buf) + r, err := c.DoAPIPutBytes(ctx, c.teamMemberRoute(teamId, userId)+"/schemeRoles", buf) if err != nil { return BuildResponse(r), err } @@ -2301,12 +2302,12 @@ func (c *Client4) UpdateTeamMemberSchemeRoles(teamId string, userId string, sche } // UpdateTeam will update a team. -func (c *Client4) UpdateTeam(team *Team) (*Team, *Response, error) { +func (c *Client4) UpdateTeam(ctx context.Context, team *Team) (*Team, *Response, error) { buf, err := json.Marshal(team) if err != nil { return nil, nil, NewAppError("UpdateTeam", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.teamRoute(team.Id), buf) + r, err := c.DoAPIPutBytes(ctx, c.teamRoute(team.Id), buf) if err != nil { return nil, BuildResponse(r), err } @@ -2319,12 +2320,12 @@ func (c *Client4) UpdateTeam(team *Team) (*Team, *Response, error) { } // PatchTeam partially updates a team. Any missing fields are not updated. -func (c *Client4) PatchTeam(teamId string, patch *TeamPatch) (*Team, *Response, error) { +func (c *Client4) PatchTeam(ctx context.Context, teamId string, patch *TeamPatch) (*Team, *Response, error) { buf, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchTeam", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.teamRoute(teamId)+"/patch", buf) + r, err := c.DoAPIPutBytes(ctx, c.teamRoute(teamId)+"/patch", buf) if err != nil { return nil, BuildResponse(r), err } @@ -2337,8 +2338,8 @@ func (c *Client4) PatchTeam(teamId string, patch *TeamPatch) (*Team, *Response, } // RestoreTeam restores a previously deleted team. -func (c *Client4) RestoreTeam(teamId string) (*Team, *Response, error) { - r, err := c.DoAPIPost(c.teamRoute(teamId)+"/restore", "") +func (c *Client4) RestoreTeam(ctx context.Context, teamId string) (*Team, *Response, error) { + r, err := c.DoAPIPost(ctx, c.teamRoute(teamId)+"/restore", "") if err != nil { return nil, BuildResponse(r), err } @@ -2351,8 +2352,8 @@ func (c *Client4) RestoreTeam(teamId string) (*Team, *Response, error) { } // RegenerateTeamInviteId requests a new invite ID to be generated. -func (c *Client4) RegenerateTeamInviteId(teamId string) (*Team, *Response, error) { - r, err := c.DoAPIPost(c.teamRoute(teamId)+"/regenerate_invite_id", "") +func (c *Client4) RegenerateTeamInviteId(ctx context.Context, teamId string) (*Team, *Response, error) { + r, err := c.DoAPIPost(ctx, c.teamRoute(teamId)+"/regenerate_invite_id", "") if err != nil { return nil, BuildResponse(r), err } @@ -2365,8 +2366,8 @@ func (c *Client4) RegenerateTeamInviteId(teamId string) (*Team, *Response, error } // SoftDeleteTeam deletes the team softly (archive only, not permanent delete). -func (c *Client4) SoftDeleteTeam(teamId string) (*Response, error) { - r, err := c.DoAPIDelete(c.teamRoute(teamId)) +func (c *Client4) SoftDeleteTeam(ctx context.Context, teamId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.teamRoute(teamId)) if err != nil { return BuildResponse(r), err } @@ -2376,8 +2377,8 @@ func (c *Client4) SoftDeleteTeam(teamId string) (*Response, error) { // PermanentDeleteTeam deletes the team, should only be used when needed for // compliance and the like. -func (c *Client4) PermanentDeleteTeam(teamId string) (*Response, error) { - r, err := c.DoAPIDelete(c.teamRoute(teamId) + "?permanent=" + c.boolString(true)) +func (c *Client4) PermanentDeleteTeam(ctx context.Context, teamId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.teamRoute(teamId)+"?permanent="+c.boolString(true)) if err != nil { return BuildResponse(r), err } @@ -2387,9 +2388,9 @@ func (c *Client4) PermanentDeleteTeam(teamId string) (*Response, error) { // UpdateTeamPrivacy modifies the team type (model.TeamOpen <--> model.TeamInvite) and sets // the corresponding AllowOpenInvite appropriately. -func (c *Client4) UpdateTeamPrivacy(teamId string, privacy string) (*Team, *Response, error) { +func (c *Client4) UpdateTeamPrivacy(ctx context.Context, teamId string, privacy string) (*Team, *Response, error) { requestBody := map[string]string{"privacy": privacy} - r, err := c.DoAPIPut(c.teamRoute(teamId)+"/privacy", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.teamRoute(teamId)+"/privacy", MapToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -2402,9 +2403,9 @@ func (c *Client4) UpdateTeamPrivacy(teamId string, privacy string) (*Team, *Resp } // GetTeamMembers returns team members based on the provided team id string. -func (c *Client4) GetTeamMembers(teamId string, page int, perPage int, etag string) ([]*TeamMember, *Response, error) { +func (c *Client4) GetTeamMembers(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*TeamMember, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.teamMembersRoute(teamId)+query, etag) + r, err := c.DoAPIGet(ctx, c.teamMembersRoute(teamId)+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -2421,9 +2422,9 @@ func (c *Client4) GetTeamMembers(teamId string, page int, perPage int, etag stri // GetTeamMembersWithoutDeletedUsers returns team members based on the provided team id string. Additional parameters of sort and exclude_deleted_users accepted as well // Could not add it to above function due to it be a breaking change. -func (c *Client4) GetTeamMembersSortAndWithoutDeletedUsers(teamId string, page int, perPage int, sort string, excludeDeletedUsers bool, etag string) ([]*TeamMember, *Response, error) { +func (c *Client4) GetTeamMembersSortAndWithoutDeletedUsers(ctx context.Context, teamId string, page int, perPage int, sort string, excludeDeletedUsers bool, etag string) ([]*TeamMember, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&sort=%v&exclude_deleted_users=%v", page, perPage, sort, excludeDeletedUsers) - r, err := c.DoAPIGet(c.teamMembersRoute(teamId)+query, etag) + r, err := c.DoAPIGet(ctx, c.teamMembersRoute(teamId)+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -2439,8 +2440,8 @@ func (c *Client4) GetTeamMembersSortAndWithoutDeletedUsers(teamId string, page i } // GetTeamMembersForUser returns the team members for a user. -func (c *Client4) GetTeamMembersForUser(userId string, etag string) ([]*TeamMember, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+"/teams/members", etag) +func (c *Client4) GetTeamMembersForUser(ctx context.Context, userId string, etag string) ([]*TeamMember, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/teams/members", etag) if err != nil { return nil, BuildResponse(r), err } @@ -2457,8 +2458,8 @@ func (c *Client4) GetTeamMembersForUser(userId string, etag string) ([]*TeamMemb // GetTeamMembersByIds will return an array of team members based on the // team id and a list of user ids provided. Must be authenticated. -func (c *Client4) GetTeamMembersByIds(teamId string, userIds []string) ([]*TeamMember, *Response, error) { - r, err := c.DoAPIPost(fmt.Sprintf("/teams/%v/members/ids", teamId), ArrayToJSON(userIds)) +func (c *Client4) GetTeamMembersByIds(ctx context.Context, teamId string, userIds []string) ([]*TeamMember, *Response, error) { + r, err := c.DoAPIPost(ctx, fmt.Sprintf("/teams/%v/members/ids", teamId), ArrayToJSON(userIds)) if err != nil { return nil, BuildResponse(r), err } @@ -2471,13 +2472,13 @@ func (c *Client4) GetTeamMembersByIds(teamId string, userIds []string) ([]*TeamM } // AddTeamMember adds user to a team and return a team member. -func (c *Client4) AddTeamMember(teamId, userId string) (*TeamMember, *Response, error) { +func (c *Client4) AddTeamMember(ctx context.Context, teamId, userId string) (*TeamMember, *Response, error) { member := &TeamMember{TeamId: teamId, UserId: userId} buf, err := json.Marshal(member) if err != nil { return nil, nil, NewAppError("AddTeamMember", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.teamMembersRoute(teamId), buf) + r, err := c.DoAPIPostBytes(ctx, c.teamMembersRoute(teamId), buf) if err != nil { return nil, BuildResponse(r), err } @@ -2491,7 +2492,7 @@ func (c *Client4) AddTeamMember(teamId, userId string) (*TeamMember, *Response, // AddTeamMemberFromInvite adds a user to a team and return a team member using an invite id // or an invite token/data pair. -func (c *Client4) AddTeamMemberFromInvite(token, inviteId string) (*TeamMember, *Response, error) { +func (c *Client4) AddTeamMemberFromInvite(ctx context.Context, token, inviteId string) (*TeamMember, *Response, error) { var query string if inviteId != "" { @@ -2502,7 +2503,7 @@ func (c *Client4) AddTeamMemberFromInvite(token, inviteId string) (*TeamMember, query += fmt.Sprintf("?token=%v", token) } - r, err := c.DoAPIPost(c.teamsRoute()+"/members/invite"+query, "") + r, err := c.DoAPIPost(ctx, c.teamsRoute()+"/members/invite"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -2515,7 +2516,7 @@ func (c *Client4) AddTeamMemberFromInvite(token, inviteId string) (*TeamMember, } // AddTeamMembers adds a number of users to a team and returns the team members. -func (c *Client4) AddTeamMembers(teamId string, userIds []string) ([]*TeamMember, *Response, error) { +func (c *Client4) AddTeamMembers(ctx context.Context, teamId string, userIds []string) ([]*TeamMember, *Response, error) { var members []*TeamMember for _, userId := range userIds { member := &TeamMember{TeamId: teamId, UserId: userId} @@ -2525,7 +2526,7 @@ func (c *Client4) AddTeamMembers(teamId string, userIds []string) ([]*TeamMember if err != nil { return nil, nil, NewAppError("AddTeamMembers", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.teamMembersRoute(teamId)+"/batch", string(js)) + r, err := c.DoAPIPost(ctx, c.teamMembersRoute(teamId)+"/batch", string(js)) if err != nil { return nil, BuildResponse(r), err } @@ -2538,7 +2539,7 @@ func (c *Client4) AddTeamMembers(teamId string, userIds []string) ([]*TeamMember } // AddTeamMembers adds a number of users to a team and returns the team members. -func (c *Client4) AddTeamMembersGracefully(teamId string, userIds []string) ([]*TeamMemberWithError, *Response, error) { +func (c *Client4) AddTeamMembersGracefully(ctx context.Context, teamId string, userIds []string) ([]*TeamMemberWithError, *Response, error) { var members []*TeamMember for _, userId := range userIds { member := &TeamMember{TeamId: teamId, UserId: userId} @@ -2549,7 +2550,7 @@ func (c *Client4) AddTeamMembersGracefully(teamId string, userIds []string) ([]* return nil, nil, NewAppError("AddTeamMembersGracefully", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.teamMembersRoute(teamId)+"/batch?graceful="+c.boolString(true), string(js)) + r, err := c.DoAPIPost(ctx, c.teamMembersRoute(teamId)+"/batch?graceful="+c.boolString(true), string(js)) if err != nil { return nil, BuildResponse(r), err } @@ -2562,8 +2563,8 @@ func (c *Client4) AddTeamMembersGracefully(teamId string, userIds []string) ([]* } // RemoveTeamMember will remove a user from a team. -func (c *Client4) RemoveTeamMember(teamId, userId string) (*Response, error) { - r, err := c.DoAPIDelete(c.teamMemberRoute(teamId, userId)) +func (c *Client4) RemoveTeamMember(ctx context.Context, teamId, userId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.teamMemberRoute(teamId, userId)) if err != nil { return BuildResponse(r), err } @@ -2573,8 +2574,8 @@ func (c *Client4) RemoveTeamMember(teamId, userId string) (*Response, error) { // GetTeamStats returns a team stats based on the team id string. // Must be authenticated. -func (c *Client4) GetTeamStats(teamId, etag string) (*TeamStats, *Response, error) { - r, err := c.DoAPIGet(c.teamStatsRoute(teamId), etag) +func (c *Client4) GetTeamStats(ctx context.Context, teamId, etag string) (*TeamStats, *Response, error) { + r, err := c.DoAPIGet(ctx, c.teamStatsRoute(teamId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -2588,8 +2589,8 @@ func (c *Client4) GetTeamStats(teamId, etag string) (*TeamStats, *Response, erro // GetTotalUsersStats returns a total system user stats. // Must be authenticated. -func (c *Client4) GetTotalUsersStats(etag string) (*UsersStats, *Response, error) { - r, err := c.DoAPIGet(c.totalUsersStatsRoute(), etag) +func (c *Client4) GetTotalUsersStats(ctx context.Context, etag string) (*UsersStats, *Response, error) { + r, err := c.DoAPIGet(ctx, c.totalUsersStatsRoute(), etag) if err != nil { return nil, BuildResponse(r), err } @@ -2604,8 +2605,8 @@ func (c *Client4) GetTotalUsersStats(etag string) (*UsersStats, *Response, error // GetTeamUnread will return a TeamUnread object that contains the amount of // unread messages and mentions the user has for the specified team. // Must be authenticated. -func (c *Client4) GetTeamUnread(teamId, userId string) (*TeamUnread, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+c.teamRoute(teamId)+"/unread", "") +func (c *Client4) GetTeamUnread(ctx context.Context, teamId, userId string) (*TeamUnread, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+c.teamRoute(teamId)+"/unread", "") if err != nil { return nil, BuildResponse(r), err } @@ -2618,7 +2619,7 @@ func (c *Client4) GetTeamUnread(teamId, userId string) (*TeamUnread, *Response, } // ImportTeam will import an exported team from other app into a existing team. -func (c *Client4) ImportTeam(data []byte, filesize int, importFrom, filename, teamId string) (map[string]string, *Response, error) { +func (c *Client4) ImportTeam(ctx context.Context, data []byte, filesize int, importFrom, filename, teamId string) (map[string]string, *Response, error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) @@ -2653,12 +2654,12 @@ func (c *Client4) ImportTeam(data []byte, filesize int, importFrom, filename, te return nil, nil, err } - return c.DoUploadImportTeam(c.teamImportRoute(teamId), body.Bytes(), writer.FormDataContentType()) + return c.DoUploadImportTeam(ctx, c.teamImportRoute(teamId), body.Bytes(), writer.FormDataContentType()) } // InviteUsersToTeam invite users by email to the team. -func (c *Client4) InviteUsersToTeam(teamId string, userEmails []string) (*Response, error) { - r, err := c.DoAPIPost(c.teamRoute(teamId)+"/invite/email", ArrayToJSON(userEmails)) +func (c *Client4) InviteUsersToTeam(ctx context.Context, teamId string, userEmails []string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.teamRoute(teamId)+"/invite/email", ArrayToJSON(userEmails)) if err != nil { return BuildResponse(r), err } @@ -2667,7 +2668,7 @@ func (c *Client4) InviteUsersToTeam(teamId string, userEmails []string) (*Respon } // InviteGuestsToTeam invite guest by email to some channels in a team. -func (c *Client4) InviteGuestsToTeam(teamId string, userEmails []string, channels []string, message string) (*Response, error) { +func (c *Client4) InviteGuestsToTeam(ctx context.Context, teamId string, userEmails []string, channels []string, message string) (*Response, error) { guestsInvite := GuestsInvite{ Emails: userEmails, Channels: channels, @@ -2677,7 +2678,7 @@ func (c *Client4) InviteGuestsToTeam(teamId string, userEmails []string, channel if err != nil { return nil, NewAppError("InviteGuestsToTeam", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.teamRoute(teamId)+"/invite-guests/email", buf) + r, err := c.DoAPIPostBytes(ctx, c.teamRoute(teamId)+"/invite-guests/email", buf) if err != nil { return BuildResponse(r), err } @@ -2686,8 +2687,8 @@ func (c *Client4) InviteGuestsToTeam(teamId string, userEmails []string, channel } // InviteUsersToTeam invite users by email to the team. -func (c *Client4) InviteUsersToTeamGracefully(teamId string, userEmails []string) ([]*EmailInviteWithError, *Response, error) { - r, err := c.DoAPIPost(c.teamRoute(teamId)+"/invite/email?graceful="+c.boolString(true), ArrayToJSON(userEmails)) +func (c *Client4) InviteUsersToTeamGracefully(ctx context.Context, teamId string, userEmails []string) ([]*EmailInviteWithError, *Response, error) { + r, err := c.DoAPIPost(ctx, c.teamRoute(teamId)+"/invite/email?graceful="+c.boolString(true), ArrayToJSON(userEmails)) if err != nil { return nil, BuildResponse(r), err @@ -2701,7 +2702,7 @@ func (c *Client4) InviteUsersToTeamGracefully(teamId string, userEmails []string } // InviteUsersToTeam invite users by email to the team. -func (c *Client4) InviteUsersToTeamAndChannelsGracefully(teamId string, userEmails []string, channelIds []string, message string) ([]*EmailInviteWithError, *Response, error) { +func (c *Client4) InviteUsersToTeamAndChannelsGracefully(ctx context.Context, teamId string, userEmails []string, channelIds []string, message string) ([]*EmailInviteWithError, *Response, error) { memberInvite := MemberInvite{ Emails: userEmails, ChannelIds: channelIds, @@ -2711,7 +2712,7 @@ func (c *Client4) InviteUsersToTeamAndChannelsGracefully(teamId string, userEmai if err != nil { return nil, nil, NewAppError("InviteMembersToTeamAndChannels", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.teamRoute(teamId)+"/invite/email?graceful="+c.boolString(true), buf) + r, err := c.DoAPIPostBytes(ctx, c.teamRoute(teamId)+"/invite/email?graceful="+c.boolString(true), buf) if err != nil { return nil, BuildResponse(r), err } @@ -2724,7 +2725,7 @@ func (c *Client4) InviteUsersToTeamAndChannelsGracefully(teamId string, userEmai } // InviteGuestsToTeam invite guest by email to some channels in a team. -func (c *Client4) InviteGuestsToTeamGracefully(teamId string, userEmails []string, channels []string, message string) ([]*EmailInviteWithError, *Response, error) { +func (c *Client4) InviteGuestsToTeamGracefully(ctx context.Context, teamId string, userEmails []string, channels []string, message string) ([]*EmailInviteWithError, *Response, error) { guestsInvite := GuestsInvite{ Emails: userEmails, Channels: channels, @@ -2734,7 +2735,7 @@ func (c *Client4) InviteGuestsToTeamGracefully(teamId string, userEmails []strin if err != nil { return nil, nil, NewAppError("InviteGuestsToTeamGracefully", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.teamRoute(teamId)+"/invite-guests/email?graceful="+c.boolString(true), buf) + r, err := c.DoAPIPostBytes(ctx, c.teamRoute(teamId)+"/invite-guests/email?graceful="+c.boolString(true), buf) if err != nil { return nil, BuildResponse(r), err } @@ -2747,8 +2748,8 @@ func (c *Client4) InviteGuestsToTeamGracefully(teamId string, userEmails []strin } // InvalidateEmailInvites will invalidate active email invitations that have not been accepted by the user. -func (c *Client4) InvalidateEmailInvites() (*Response, error) { - r, err := c.DoAPIDelete(c.teamsRoute() + "/invites/email") +func (c *Client4) InvalidateEmailInvites(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.teamsRoute()+"/invites/email") if err != nil { return BuildResponse(r), err } @@ -2757,8 +2758,8 @@ func (c *Client4) InvalidateEmailInvites() (*Response, error) { } // GetTeamInviteInfo returns a team object from an invite id containing sanitized information. -func (c *Client4) GetTeamInviteInfo(inviteId string) (*Team, *Response, error) { - r, err := c.DoAPIGet(c.teamsRoute()+"/invite/"+inviteId, "") +func (c *Client4) GetTeamInviteInfo(ctx context.Context, inviteId string) (*Team, *Response, error) { + r, err := c.DoAPIGet(ctx, c.teamsRoute()+"/invite/"+inviteId, "") if err != nil { return nil, BuildResponse(r), err } @@ -2771,7 +2772,7 @@ func (c *Client4) GetTeamInviteInfo(inviteId string) (*Team, *Response, error) { } // SetTeamIcon sets team icon of the team. -func (c *Client4) SetTeamIcon(teamId string, data []byte) (*Response, error) { +func (c *Client4) SetTeamIcon(ctx context.Context, teamId string, data []byte) (*Response, error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) @@ -2812,8 +2813,8 @@ func (c *Client4) SetTeamIcon(teamId string, data []byte) (*Response, error) { } // GetTeamIcon gets the team icon of the team. -func (c *Client4) GetTeamIcon(teamId, etag string) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.teamRoute(teamId)+"/image", etag) +func (c *Client4) GetTeamIcon(ctx context.Context, teamId, etag string) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.teamRoute(teamId)+"/image", etag) if err != nil { return nil, BuildResponse(r), err } @@ -2827,8 +2828,8 @@ func (c *Client4) GetTeamIcon(teamId, etag string) ([]byte, *Response, error) { } // RemoveTeamIcon updates LastTeamIconUpdate to 0 which indicates team icon is removed. -func (c *Client4) RemoveTeamIcon(teamId string) (*Response, error) { - r, err := c.DoAPIDelete(c.teamRoute(teamId) + "/image") +func (c *Client4) RemoveTeamIcon(ctx context.Context, teamId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.teamRoute(teamId)+"/image") if err != nil { return BuildResponse(r), err } @@ -2839,25 +2840,25 @@ func (c *Client4) RemoveTeamIcon(teamId string) (*Response, error) { // Channel Section // GetAllChannels get all the channels. Must be a system administrator. -func (c *Client4) GetAllChannels(page int, perPage int, etag string) (ChannelListWithTeamData, *Response, error) { - return c.getAllChannels(page, perPage, etag, ChannelSearchOpts{}) +func (c *Client4) GetAllChannels(ctx context.Context, page int, perPage int, etag string) (ChannelListWithTeamData, *Response, error) { + return c.getAllChannels(ctx, page, perPage, etag, ChannelSearchOpts{}) } // GetAllChannelsIncludeDeleted get all the channels. Must be a system administrator. -func (c *Client4) GetAllChannelsIncludeDeleted(page int, perPage int, etag string) (ChannelListWithTeamData, *Response, error) { - return c.getAllChannels(page, perPage, etag, ChannelSearchOpts{IncludeDeleted: true}) +func (c *Client4) GetAllChannelsIncludeDeleted(ctx context.Context, page int, perPage int, etag string) (ChannelListWithTeamData, *Response, error) { + return c.getAllChannels(ctx, page, perPage, etag, ChannelSearchOpts{IncludeDeleted: true}) } // GetAllChannelsExcludePolicyConstrained gets all channels which are not part of a data retention policy. // Must be a system administrator. -func (c *Client4) GetAllChannelsExcludePolicyConstrained(page, perPage int, etag string) (ChannelListWithTeamData, *Response, error) { - return c.getAllChannels(page, perPage, etag, ChannelSearchOpts{ExcludePolicyConstrained: true}) +func (c *Client4) GetAllChannelsExcludePolicyConstrained(ctx context.Context, page, perPage int, etag string) (ChannelListWithTeamData, *Response, error) { + return c.getAllChannels(ctx, page, perPage, etag, ChannelSearchOpts{ExcludePolicyConstrained: true}) } -func (c *Client4) getAllChannels(page int, perPage int, etag string, opts ChannelSearchOpts) (ChannelListWithTeamData, *Response, error) { +func (c *Client4) getAllChannels(ctx context.Context, page int, perPage int, etag string, opts ChannelSearchOpts) (ChannelListWithTeamData, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&include_deleted=%v&exclude_policy_constrained=%v", page, perPage, opts.IncludeDeleted, opts.ExcludePolicyConstrained) - r, err := c.DoAPIGet(c.channelsRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.channelsRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -2872,9 +2873,9 @@ func (c *Client4) getAllChannels(page int, perPage int, etag string, opts Channe } // GetAllChannelsWithCount get all the channels including the total count. Must be a system administrator. -func (c *Client4) GetAllChannelsWithCount(page int, perPage int, etag string) (ChannelListWithTeamData, int64, *Response, error) { +func (c *Client4) GetAllChannelsWithCount(ctx context.Context, page int, perPage int, etag string) (ChannelListWithTeamData, int64, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&include_total_count="+c.boolString(true), page, perPage) - r, err := c.DoAPIGet(c.channelsRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.channelsRoute()+query, etag) if err != nil { return nil, 0, BuildResponse(r), err } @@ -2889,12 +2890,12 @@ func (c *Client4) GetAllChannelsWithCount(page int, perPage int, etag string) (C } // CreateChannel creates a channel based on the provided channel struct. -func (c *Client4) CreateChannel(channel *Channel) (*Channel, *Response, error) { +func (c *Client4) CreateChannel(ctx context.Context, channel *Channel) (*Channel, *Response, error) { channelJSON, err := json.Marshal(channel) if err != nil { return nil, nil, NewAppError("CreateChannel", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.channelsRoute(), string(channelJSON)) + r, err := c.DoAPIPost(ctx, c.channelsRoute(), string(channelJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -2909,12 +2910,12 @@ func (c *Client4) CreateChannel(channel *Channel) (*Channel, *Response, error) { } // UpdateChannel updates a channel based on the provided channel struct. -func (c *Client4) UpdateChannel(channel *Channel) (*Channel, *Response, error) { +func (c *Client4) UpdateChannel(ctx context.Context, channel *Channel) (*Channel, *Response, error) { channelJSON, err := json.Marshal(channel) if err != nil { return nil, nil, NewAppError("UpdateChannel", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPut(c.channelRoute(channel.Id), string(channelJSON)) + r, err := c.DoAPIPut(ctx, c.channelRoute(channel.Id), string(channelJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -2929,12 +2930,12 @@ func (c *Client4) UpdateChannel(channel *Channel) (*Channel, *Response, error) { } // PatchChannel partially updates a channel. Any missing fields are not updated. -func (c *Client4) PatchChannel(channelId string, patch *ChannelPatch) (*Channel, *Response, error) { +func (c *Client4) PatchChannel(ctx context.Context, channelId string, patch *ChannelPatch) (*Channel, *Response, error) { buf, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchChannel", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.channelRoute(channelId)+"/patch", buf) + r, err := c.DoAPIPutBytes(ctx, c.channelRoute(channelId)+"/patch", buf) if err != nil { return nil, BuildResponse(r), err } @@ -2949,9 +2950,9 @@ func (c *Client4) PatchChannel(channelId string, patch *ChannelPatch) (*Channel, } // UpdateChannelPrivacy updates channel privacy -func (c *Client4) UpdateChannelPrivacy(channelId string, privacy ChannelType) (*Channel, *Response, error) { +func (c *Client4) UpdateChannelPrivacy(ctx context.Context, channelId string, privacy ChannelType) (*Channel, *Response, error) { requestBody := map[string]string{"privacy": string(privacy)} - r, err := c.DoAPIPut(c.channelRoute(channelId)+"/privacy", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.channelRoute(channelId)+"/privacy", MapToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -2966,8 +2967,8 @@ func (c *Client4) UpdateChannelPrivacy(channelId string, privacy ChannelType) (* } // RestoreChannel restores a previously deleted channel. Any missing fields are not updated. -func (c *Client4) RestoreChannel(channelId string) (*Channel, *Response, error) { - r, err := c.DoAPIPost(c.channelRoute(channelId)+"/restore", "") +func (c *Client4) RestoreChannel(ctx context.Context, channelId string) (*Channel, *Response, error) { + r, err := c.DoAPIPost(ctx, c.channelRoute(channelId)+"/restore", "") if err != nil { return nil, BuildResponse(r), err } @@ -2983,9 +2984,9 @@ func (c *Client4) RestoreChannel(channelId string) (*Channel, *Response, error) // CreateDirectChannel creates a direct message channel based on the two user // ids provided. -func (c *Client4) CreateDirectChannel(userId1, userId2 string) (*Channel, *Response, error) { +func (c *Client4) CreateDirectChannel(ctx context.Context, userId1, userId2 string) (*Channel, *Response, error) { requestBody := []string{userId1, userId2} - r, err := c.DoAPIPost(c.channelsRoute()+"/direct", ArrayToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.channelsRoute()+"/direct", ArrayToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -3000,8 +3001,8 @@ func (c *Client4) CreateDirectChannel(userId1, userId2 string) (*Channel, *Respo } // CreateGroupChannel creates a group message channel based on userIds provided. -func (c *Client4) CreateGroupChannel(userIds []string) (*Channel, *Response, error) { - r, err := c.DoAPIPost(c.channelsRoute()+"/group", ArrayToJSON(userIds)) +func (c *Client4) CreateGroupChannel(ctx context.Context, userIds []string) (*Channel, *Response, error) { + r, err := c.DoAPIPost(ctx, c.channelsRoute()+"/group", ArrayToJSON(userIds)) if err != nil { return nil, BuildResponse(r), err } @@ -3016,8 +3017,8 @@ func (c *Client4) CreateGroupChannel(userIds []string) (*Channel, *Response, err } // GetChannel returns a channel based on the provided channel id string. -func (c *Client4) GetChannel(channelId, etag string) (*Channel, *Response, error) { - r, err := c.DoAPIGet(c.channelRoute(channelId), etag) +func (c *Client4) GetChannel(ctx context.Context, channelId, etag string) (*Channel, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelRoute(channelId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3032,9 +3033,9 @@ func (c *Client4) GetChannel(channelId, etag string) (*Channel, *Response, error } // GetChannelStats returns statistics for a channel. -func (c *Client4) GetChannelStats(channelId string, etag string, excludeFilesCount bool) (*ChannelStats, *Response, error) { +func (c *Client4) GetChannelStats(ctx context.Context, channelId string, etag string, excludeFilesCount bool) (*ChannelStats, *Response, error) { route := c.channelRoute(channelId) + fmt.Sprintf("/stats?exclude_files_count=%v", excludeFilesCount) - r, err := c.DoAPIGet(route, etag) + r, err := c.DoAPIGet(ctx, route, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3047,8 +3048,8 @@ func (c *Client4) GetChannelStats(channelId string, etag string, excludeFilesCou } // GetChannelMembersTimezones gets a list of timezones for a channel. -func (c *Client4) GetChannelMembersTimezones(channelId string) ([]string, *Response, error) { - r, err := c.DoAPIGet(c.channelRoute(channelId)+"/timezones", "") +func (c *Client4) GetChannelMembersTimezones(ctx context.Context, channelId string) ([]string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelRoute(channelId)+"/timezones", "") if err != nil { return nil, BuildResponse(r), err } @@ -3057,8 +3058,8 @@ func (c *Client4) GetChannelMembersTimezones(channelId string) ([]string, *Respo } // GetPinnedPosts gets a list of pinned posts. -func (c *Client4) GetPinnedPosts(channelId string, etag string) (*PostList, *Response, error) { - r, err := c.DoAPIGet(c.channelRoute(channelId)+"/pinned", etag) +func (c *Client4) GetPinnedPosts(ctx context.Context, channelId string, etag string) (*PostList, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelRoute(channelId)+"/pinned", etag) if err != nil { return nil, BuildResponse(r), err } @@ -3076,9 +3077,9 @@ func (c *Client4) GetPinnedPosts(channelId string, etag string) (*PostList, *Res } // GetPrivateChannelsForTeam returns a list of private channels based on the provided team id string. -func (c *Client4) GetPrivateChannelsForTeam(teamId string, page int, perPage int, etag string) ([]*Channel, *Response, error) { +func (c *Client4) GetPrivateChannelsForTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*Channel, *Response, error) { query := fmt.Sprintf("/private?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.channelsForTeamRoute(teamId)+query, etag) + r, err := c.DoAPIGet(ctx, c.channelsForTeamRoute(teamId)+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3093,9 +3094,9 @@ func (c *Client4) GetPrivateChannelsForTeam(teamId string, page int, perPage int } // GetPublicChannelsForTeam returns a list of public channels based on the provided team id string. -func (c *Client4) GetPublicChannelsForTeam(teamId string, page int, perPage int, etag string) ([]*Channel, *Response, error) { +func (c *Client4) GetPublicChannelsForTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*Channel, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.channelsForTeamRoute(teamId)+query, etag) + r, err := c.DoAPIGet(ctx, c.channelsForTeamRoute(teamId)+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3110,9 +3111,9 @@ func (c *Client4) GetPublicChannelsForTeam(teamId string, page int, perPage int, } // GetDeletedChannelsForTeam returns a list of public channels based on the provided team id string. -func (c *Client4) GetDeletedChannelsForTeam(teamId string, page int, perPage int, etag string) ([]*Channel, *Response, error) { +func (c *Client4) GetDeletedChannelsForTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*Channel, *Response, error) { query := fmt.Sprintf("/deleted?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.channelsForTeamRoute(teamId)+query, etag) + r, err := c.DoAPIGet(ctx, c.channelsForTeamRoute(teamId)+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3127,8 +3128,8 @@ func (c *Client4) GetDeletedChannelsForTeam(teamId string, page int, perPage int } // GetPublicChannelsByIdsForTeam returns a list of public channels based on provided team id string. -func (c *Client4) GetPublicChannelsByIdsForTeam(teamId string, channelIds []string) ([]*Channel, *Response, error) { - r, err := c.DoAPIPost(c.channelsForTeamRoute(teamId)+"/ids", ArrayToJSON(channelIds)) +func (c *Client4) GetPublicChannelsByIdsForTeam(ctx context.Context, teamId string, channelIds []string) ([]*Channel, *Response, error) { + r, err := c.DoAPIPost(ctx, c.channelsForTeamRoute(teamId)+"/ids", ArrayToJSON(channelIds)) if err != nil { return nil, BuildResponse(r), err } @@ -3143,8 +3144,8 @@ func (c *Client4) GetPublicChannelsByIdsForTeam(teamId string, channelIds []stri } // GetChannelsForTeamForUser returns a list channels of on a team for a user. -func (c *Client4) GetChannelsForTeamForUser(teamId, userId string, includeDeleted bool, etag string) ([]*Channel, *Response, error) { - r, err := c.DoAPIGet(c.channelsForTeamForUserRoute(teamId, userId, includeDeleted), etag) +func (c *Client4) GetChannelsForTeamForUser(ctx context.Context, teamId, userId string, includeDeleted bool, etag string) ([]*Channel, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelsForTeamForUserRoute(teamId, userId, includeDeleted), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3159,10 +3160,10 @@ func (c *Client4) GetChannelsForTeamForUser(teamId, userId string, includeDelete } // GetChannelsForTeamAndUserWithLastDeleteAt returns a list channels of a team for a user, additionally filtered with lastDeleteAt. This does not have any effect if includeDeleted is set to false. -func (c *Client4) GetChannelsForTeamAndUserWithLastDeleteAt(teamId, userId string, includeDeleted bool, lastDeleteAt int, etag string) ([]*Channel, *Response, error) { +func (c *Client4) GetChannelsForTeamAndUserWithLastDeleteAt(ctx context.Context, teamId, userId string, includeDeleted bool, lastDeleteAt int, etag string) ([]*Channel, *Response, error) { route := fmt.Sprintf(c.userRoute(userId) + c.teamRoute(teamId) + "/channels") route += fmt.Sprintf("?include_deleted=%v&last_delete_at=%d", includeDeleted, lastDeleteAt) - r, err := c.DoAPIGet(route, etag) + r, err := c.DoAPIGet(ctx, route, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3177,10 +3178,10 @@ func (c *Client4) GetChannelsForTeamAndUserWithLastDeleteAt(teamId, userId strin } // GetChannelsForUserWithLastDeleteAt returns a list channels for a user, additionally filtered with lastDeleteAt. -func (c *Client4) GetChannelsForUserWithLastDeleteAt(userID string, lastDeleteAt int) ([]*Channel, *Response, error) { +func (c *Client4) GetChannelsForUserWithLastDeleteAt(ctx context.Context, userID string, lastDeleteAt int) ([]*Channel, *Response, error) { route := fmt.Sprintf(c.userRoute(userID) + "/channels") route += fmt.Sprintf("?last_delete_at=%d", lastDeleteAt) - r, err := c.DoAPIGet(route, "") + r, err := c.DoAPIGet(ctx, route, "") if err != nil { return nil, BuildResponse(r), err } @@ -3195,12 +3196,12 @@ func (c *Client4) GetChannelsForUserWithLastDeleteAt(userID string, lastDeleteAt } // SearchChannels returns the channels on a team matching the provided search term. -func (c *Client4) SearchChannels(teamId string, search *ChannelSearch) ([]*Channel, *Response, error) { +func (c *Client4) SearchChannels(ctx context.Context, teamId string, search *ChannelSearch) ([]*Channel, *Response, error) { searchJSON, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchChannels", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.channelsForTeamRoute(teamId)+"/search", string(searchJSON)) + r, err := c.DoAPIPost(ctx, c.channelsForTeamRoute(teamId)+"/search", string(searchJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3215,12 +3216,12 @@ func (c *Client4) SearchChannels(teamId string, search *ChannelSearch) ([]*Chann } // SearchArchivedChannels returns the archived channels on a team matching the provided search term. -func (c *Client4) SearchArchivedChannels(teamId string, search *ChannelSearch) ([]*Channel, *Response, error) { +func (c *Client4) SearchArchivedChannels(ctx context.Context, teamId string, search *ChannelSearch) ([]*Channel, *Response, error) { searchJSON, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchArchivedChannels", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.channelsForTeamRoute(teamId)+"/search_archived", string(searchJSON)) + r, err := c.DoAPIPost(ctx, c.channelsForTeamRoute(teamId)+"/search_archived", string(searchJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3235,12 +3236,12 @@ func (c *Client4) SearchArchivedChannels(teamId string, search *ChannelSearch) ( } // SearchAllChannels search in all the channels. Must be a system administrator. -func (c *Client4) SearchAllChannels(search *ChannelSearch) (ChannelListWithTeamData, *Response, error) { +func (c *Client4) SearchAllChannels(ctx context.Context, search *ChannelSearch) (ChannelListWithTeamData, *Response, error) { searchJSON, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchAllChannels", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.channelsRoute()+"/search", string(searchJSON)) + r, err := c.DoAPIPost(ctx, c.channelsRoute()+"/search", string(searchJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3255,7 +3256,7 @@ func (c *Client4) SearchAllChannels(search *ChannelSearch) (ChannelListWithTeamD } // SearchAllChannelsForUser search in all the channels for a regular user. -func (c *Client4) SearchAllChannelsForUser(term string) (ChannelListWithTeamData, *Response, error) { +func (c *Client4) SearchAllChannelsForUser(ctx context.Context, term string) (ChannelListWithTeamData, *Response, error) { search := &ChannelSearch{ Term: term, } @@ -3263,7 +3264,7 @@ func (c *Client4) SearchAllChannelsForUser(term string) (ChannelListWithTeamData if err != nil { return nil, nil, NewAppError("SearchAllChannelsForUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.channelsRoute()+"/search?system_console=false", string(searchJSON)) + r, err := c.DoAPIPost(ctx, c.channelsRoute()+"/search?system_console=false", string(searchJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3278,12 +3279,12 @@ func (c *Client4) SearchAllChannelsForUser(term string) (ChannelListWithTeamData } // SearchAllChannelsPaged searches all the channels and returns the results paged with the total count. -func (c *Client4) SearchAllChannelsPaged(search *ChannelSearch) (*ChannelsWithCount, *Response, error) { +func (c *Client4) SearchAllChannelsPaged(ctx context.Context, search *ChannelSearch) (*ChannelsWithCount, *Response, error) { searchJSON, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchAllChannelsPaged", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.channelsRoute()+"/search", string(searchJSON)) + r, err := c.DoAPIPost(ctx, c.channelsRoute()+"/search", string(searchJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3298,12 +3299,12 @@ func (c *Client4) SearchAllChannelsPaged(search *ChannelSearch) (*ChannelsWithCo } // SearchGroupChannels returns the group channels of the user whose members' usernames match the search term. -func (c *Client4) SearchGroupChannels(search *ChannelSearch) ([]*Channel, *Response, error) { +func (c *Client4) SearchGroupChannels(ctx context.Context, search *ChannelSearch) ([]*Channel, *Response, error) { searchJSON, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchGroupChannels", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.channelsRoute()+"/group/search", string(searchJSON)) + r, err := c.DoAPIPost(ctx, c.channelsRoute()+"/group/search", string(searchJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3318,8 +3319,8 @@ func (c *Client4) SearchGroupChannels(search *ChannelSearch) ([]*Channel, *Respo } // DeleteChannel deletes channel based on the provided channel id string. -func (c *Client4) DeleteChannel(channelId string) (*Response, error) { - r, err := c.DoAPIDelete(c.channelRoute(channelId)) +func (c *Client4) DeleteChannel(ctx context.Context, channelId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.channelRoute(channelId)) if err != nil { return BuildResponse(r), err } @@ -3328,8 +3329,8 @@ func (c *Client4) DeleteChannel(channelId string) (*Response, error) { } // PermanentDeleteChannel deletes a channel based on the provided channel id string. -func (c *Client4) PermanentDeleteChannel(channelId string) (*Response, error) { - r, err := c.DoAPIDelete(c.channelRoute(channelId) + "?permanent=" + c.boolString(true)) +func (c *Client4) PermanentDeleteChannel(ctx context.Context, channelId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.channelRoute(channelId)+"?permanent="+c.boolString(true)) if err != nil { return BuildResponse(r), err } @@ -3338,12 +3339,12 @@ func (c *Client4) PermanentDeleteChannel(channelId string) (*Response, error) { } // MoveChannel moves the channel to the destination team. -func (c *Client4) MoveChannel(channelId, teamId string, force bool) (*Channel, *Response, error) { +func (c *Client4) MoveChannel(ctx context.Context, channelId, teamId string, force bool) (*Channel, *Response, error) { requestBody := map[string]any{ "team_id": teamId, "force": force, } - r, err := c.DoAPIPost(c.channelRoute(channelId)+"/move", StringInterfaceToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.channelRoute(channelId)+"/move", StringInterfaceToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -3358,8 +3359,8 @@ func (c *Client4) MoveChannel(channelId, teamId string, force bool) (*Channel, * } // GetChannelByName returns a channel based on the provided channel name and team id strings. -func (c *Client4) GetChannelByName(channelName, teamId string, etag string) (*Channel, *Response, error) { - r, err := c.DoAPIGet(c.channelByNameRoute(channelName, teamId), etag) +func (c *Client4) GetChannelByName(ctx context.Context, channelName, teamId string, etag string) (*Channel, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelByNameRoute(channelName, teamId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3374,8 +3375,8 @@ func (c *Client4) GetChannelByName(channelName, teamId string, etag string) (*Ch } // GetChannelByNameIncludeDeleted returns a channel based on the provided channel name and team id strings. Other then GetChannelByName it will also return deleted channels. -func (c *Client4) GetChannelByNameIncludeDeleted(channelName, teamId string, etag string) (*Channel, *Response, error) { - r, err := c.DoAPIGet(c.channelByNameRoute(channelName, teamId)+"?include_deleted="+c.boolString(true), etag) +func (c *Client4) GetChannelByNameIncludeDeleted(ctx context.Context, channelName, teamId string, etag string) (*Channel, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelByNameRoute(channelName, teamId)+"?include_deleted="+c.boolString(true), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3390,8 +3391,8 @@ func (c *Client4) GetChannelByNameIncludeDeleted(channelName, teamId string, eta } // GetChannelByNameForTeamName returns a channel based on the provided channel name and team name strings. -func (c *Client4) GetChannelByNameForTeamName(channelName, teamName string, etag string) (*Channel, *Response, error) { - r, err := c.DoAPIGet(c.channelByNameForTeamNameRoute(channelName, teamName), etag) +func (c *Client4) GetChannelByNameForTeamName(ctx context.Context, channelName, teamName string, etag string) (*Channel, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelByNameForTeamNameRoute(channelName, teamName), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3406,8 +3407,8 @@ func (c *Client4) GetChannelByNameForTeamName(channelName, teamName string, etag } // GetChannelByNameForTeamNameIncludeDeleted returns a channel based on the provided channel name and team name strings. Other then GetChannelByNameForTeamName it will also return deleted channels. -func (c *Client4) GetChannelByNameForTeamNameIncludeDeleted(channelName, teamName string, etag string) (*Channel, *Response, error) { - r, err := c.DoAPIGet(c.channelByNameForTeamNameRoute(channelName, teamName)+"?include_deleted="+c.boolString(true), etag) +func (c *Client4) GetChannelByNameForTeamNameIncludeDeleted(ctx context.Context, channelName, teamName string, etag string) (*Channel, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelByNameForTeamNameRoute(channelName, teamName)+"?include_deleted="+c.boolString(true), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3422,9 +3423,9 @@ func (c *Client4) GetChannelByNameForTeamNameIncludeDeleted(channelName, teamNam } // GetChannelMembers gets a page of channel members specific to a channel. -func (c *Client4) GetChannelMembers(channelId string, page, perPage int, etag string) (ChannelMembers, *Response, error) { +func (c *Client4) GetChannelMembers(ctx context.Context, channelId string, page, perPage int, etag string) (ChannelMembers, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.channelMembersRoute(channelId)+query, etag) + r, err := c.DoAPIGet(ctx, c.channelMembersRoute(channelId)+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3439,9 +3440,9 @@ func (c *Client4) GetChannelMembers(channelId string, page, perPage int, etag st } // GetChannelMembersWithTeamData gets a page of all channel members for a user. -func (c *Client4) GetChannelMembersWithTeamData(userID string, page, perPage int) (ChannelMembersWithTeamData, *Response, error) { +func (c *Client4) GetChannelMembersWithTeamData(ctx context.Context, userID string, page, perPage int) (ChannelMembersWithTeamData, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.userRoute(userID)+"/channel_members"+query, "") + r, err := c.DoAPIGet(ctx, c.userRoute(userID)+"/channel_members"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -3456,8 +3457,8 @@ func (c *Client4) GetChannelMembersWithTeamData(userID string, page, perPage int } // GetChannelMembersByIds gets the channel members in a channel for a list of user ids. -func (c *Client4) GetChannelMembersByIds(channelId string, userIds []string) (ChannelMembers, *Response, error) { - r, err := c.DoAPIPost(c.channelMembersRoute(channelId)+"/ids", ArrayToJSON(userIds)) +func (c *Client4) GetChannelMembersByIds(ctx context.Context, channelId string, userIds []string) (ChannelMembers, *Response, error) { + r, err := c.DoAPIPost(ctx, c.channelMembersRoute(channelId)+"/ids", ArrayToJSON(userIds)) if err != nil { return nil, BuildResponse(r), err } @@ -3472,8 +3473,8 @@ func (c *Client4) GetChannelMembersByIds(channelId string, userIds []string) (Ch } // GetChannelMember gets a channel member. -func (c *Client4) GetChannelMember(channelId, userId, etag string) (*ChannelMember, *Response, error) { - r, err := c.DoAPIGet(c.channelMemberRoute(channelId, userId), etag) +func (c *Client4) GetChannelMember(ctx context.Context, channelId, userId, etag string) (*ChannelMember, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelMemberRoute(channelId, userId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3488,8 +3489,8 @@ func (c *Client4) GetChannelMember(channelId, userId, etag string) (*ChannelMemb } // GetChannelMembersForUser gets all the channel members for a user on a team. -func (c *Client4) GetChannelMembersForUser(userId, teamId, etag string) (ChannelMembers, *Response, error) { - r, err := c.DoAPIGet(fmt.Sprintf(c.userRoute(userId)+"/teams/%v/channels/members", teamId), etag) +func (c *Client4) GetChannelMembersForUser(ctx context.Context, userId, teamId, etag string) (ChannelMembers, *Response, error) { + r, err := c.DoAPIGet(ctx, fmt.Sprintf(c.userRoute(userId)+"/teams/%v/channels/members", teamId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3504,13 +3505,13 @@ func (c *Client4) GetChannelMembersForUser(userId, teamId, etag string) (Channel } // ViewChannel performs a view action for a user. Synonymous with switching channels or marking channels as read by a user. -func (c *Client4) ViewChannel(userId string, view *ChannelView) (*ChannelViewResponse, *Response, error) { +func (c *Client4) ViewChannel(ctx context.Context, userId string, view *ChannelView) (*ChannelViewResponse, *Response, error) { url := fmt.Sprintf(c.channelsRoute()+"/members/%v/view", userId) buf, err := json.Marshal(view) if err != nil { return nil, nil, NewAppError("ViewChannel", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(url, buf) + r, err := c.DoAPIPostBytes(ctx, url, buf) if err != nil { return nil, BuildResponse(r), err } @@ -3526,8 +3527,8 @@ func (c *Client4) ViewChannel(userId string, view *ChannelView) (*ChannelViewRes // GetChannelUnread will return a ChannelUnread object that contains the number of // unread messages and mentions for a user. -func (c *Client4) GetChannelUnread(channelId, userId string) (*ChannelUnread, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+c.channelRoute(channelId)+"/unread", "") +func (c *Client4) GetChannelUnread(ctx context.Context, channelId, userId string) (*ChannelUnread, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+c.channelRoute(channelId)+"/unread", "") if err != nil { return nil, BuildResponse(r), err } @@ -3542,9 +3543,9 @@ func (c *Client4) GetChannelUnread(channelId, userId string) (*ChannelUnread, *R } // UpdateChannelRoles will update the roles on a channel for a user. -func (c *Client4) UpdateChannelRoles(channelId, userId, roles string) (*Response, error) { +func (c *Client4) UpdateChannelRoles(ctx context.Context, channelId, userId, roles string) (*Response, error) { requestBody := map[string]string{"roles": roles} - r, err := c.DoAPIPut(c.channelMemberRoute(channelId, userId)+"/roles", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.channelMemberRoute(channelId, userId)+"/roles", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -3553,12 +3554,12 @@ func (c *Client4) UpdateChannelRoles(channelId, userId, roles string) (*Response } // UpdateChannelMemberSchemeRoles will update the scheme-derived roles on a channel for a user. -func (c *Client4) UpdateChannelMemberSchemeRoles(channelId string, userId string, schemeRoles *SchemeRoles) (*Response, error) { +func (c *Client4) UpdateChannelMemberSchemeRoles(ctx context.Context, channelId string, userId string, schemeRoles *SchemeRoles) (*Response, error) { buf, err := json.Marshal(schemeRoles) if err != nil { return nil, NewAppError("UpdateChannelMemberSchemeRoles", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.channelMemberRoute(channelId, userId)+"/schemeRoles", buf) + r, err := c.DoAPIPutBytes(ctx, c.channelMemberRoute(channelId, userId)+"/schemeRoles", buf) if err != nil { return BuildResponse(r), err } @@ -3567,8 +3568,8 @@ func (c *Client4) UpdateChannelMemberSchemeRoles(channelId string, userId string } // UpdateChannelNotifyProps will update the notification properties on a channel for a user. -func (c *Client4) UpdateChannelNotifyProps(channelId, userId string, props map[string]string) (*Response, error) { - r, err := c.DoAPIPut(c.channelMemberRoute(channelId, userId)+"/notify_props", MapToJSON(props)) +func (c *Client4) UpdateChannelNotifyProps(ctx context.Context, channelId, userId string, props map[string]string) (*Response, error) { + r, err := c.DoAPIPut(ctx, c.channelMemberRoute(channelId, userId)+"/notify_props", MapToJSON(props)) if err != nil { return BuildResponse(r), err } @@ -3577,9 +3578,9 @@ func (c *Client4) UpdateChannelNotifyProps(channelId, userId string, props map[s } // AddChannelMember adds user to channel and return a channel member. -func (c *Client4) AddChannelMember(channelId, userId string) (*ChannelMember, *Response, error) { +func (c *Client4) AddChannelMember(ctx context.Context, channelId, userId string) (*ChannelMember, *Response, error) { requestBody := map[string]string{"user_id": userId} - r, err := c.DoAPIPost(c.channelMembersRoute(channelId)+"", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.channelMembersRoute(channelId)+"", MapToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -3594,9 +3595,9 @@ func (c *Client4) AddChannelMember(channelId, userId string) (*ChannelMember, *R } // AddChannelMemberWithRootId adds user to channel and return a channel member. Post add to channel message has the postRootId. -func (c *Client4) AddChannelMemberWithRootId(channelId, userId, postRootId string) (*ChannelMember, *Response, error) { +func (c *Client4) AddChannelMemberWithRootId(ctx context.Context, channelId, userId, postRootId string) (*ChannelMember, *Response, error) { requestBody := map[string]string{"user_id": userId, "post_root_id": postRootId} - r, err := c.DoAPIPost(c.channelMembersRoute(channelId)+"", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.channelMembersRoute(channelId)+"", MapToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -3611,8 +3612,8 @@ func (c *Client4) AddChannelMemberWithRootId(channelId, userId, postRootId strin } // RemoveUserFromChannel will delete the channel member object for a user, effectively removing the user from a channel. -func (c *Client4) RemoveUserFromChannel(channelId, userId string) (*Response, error) { - r, err := c.DoAPIDelete(c.channelMemberRoute(channelId, userId)) +func (c *Client4) RemoveUserFromChannel(ctx context.Context, channelId, userId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.channelMemberRoute(channelId, userId)) if err != nil { return BuildResponse(r), err } @@ -3621,9 +3622,9 @@ func (c *Client4) RemoveUserFromChannel(channelId, userId string) (*Response, er } // AutocompleteChannelsForTeam will return an ordered list of channels autocomplete suggestions. -func (c *Client4) AutocompleteChannelsForTeam(teamId, name string) (ChannelList, *Response, error) { +func (c *Client4) AutocompleteChannelsForTeam(ctx context.Context, teamId, name string) (ChannelList, *Response, error) { query := fmt.Sprintf("?name=%v", name) - r, err := c.DoAPIGet(c.channelsForTeamRoute(teamId)+"/autocomplete"+query, "") + r, err := c.DoAPIGet(ctx, c.channelsForTeamRoute(teamId)+"/autocomplete"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -3638,9 +3639,9 @@ func (c *Client4) AutocompleteChannelsForTeam(teamId, name string) (ChannelList, } // AutocompleteChannelsForTeamForSearch will return an ordered list of your channels autocomplete suggestions. -func (c *Client4) AutocompleteChannelsForTeamForSearch(teamId, name string) (ChannelList, *Response, error) { +func (c *Client4) AutocompleteChannelsForTeamForSearch(ctx context.Context, teamId, name string) (ChannelList, *Response, error) { query := fmt.Sprintf("?name=%v", name) - r, err := c.DoAPIGet(c.channelsForTeamRoute(teamId)+"/search_autocomplete"+query, "") + r, err := c.DoAPIGet(ctx, c.channelsForTeamRoute(teamId)+"/search_autocomplete"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -3655,9 +3656,9 @@ func (c *Client4) AutocompleteChannelsForTeamForSearch(teamId, name string) (Cha } // GetTopChannelsForTeamSince will return an ordered list of the top channels in a given team. -func (c *Client4) GetTopChannelsForTeamSince(teamId string, timeRange string, page int, perPage int) (*TopChannelList, *Response, error) { +func (c *Client4) GetTopChannelsForTeamSince(ctx context.Context, teamId string, timeRange string, page int, perPage int) (*TopChannelList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) - r, err := c.DoAPIGet(c.teamRoute(teamId)+"/top/channels"+query, "") + r, err := c.DoAPIGet(ctx, c.teamRoute(teamId)+"/top/channels"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -3670,14 +3671,14 @@ func (c *Client4) GetTopChannelsForTeamSince(teamId string, timeRange string, pa } // GetTopChannelsForUserSince will return an ordered list of your top channels in a given team. -func (c *Client4) GetTopChannelsForUserSince(teamId string, timeRange string, page int, perPage int) (*TopChannelList, *Response, error) { +func (c *Client4) GetTopChannelsForUserSince(ctx context.Context, teamId string, timeRange string, page int, perPage int) (*TopChannelList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) if teamId != "" { query += fmt.Sprintf("&team_id=%v", teamId) } - r, err := c.DoAPIGet(c.usersRoute()+"/me/top/channels"+query, "") + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/me/top/channels"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -3690,9 +3691,9 @@ func (c *Client4) GetTopChannelsForUserSince(teamId string, timeRange string, pa } // GetTopInactiveChannelsForTeamSince will return an ordered list of the top channels in a given team. -func (c *Client4) GetTopInactiveChannelsForTeamSince(teamId string, timeRange string, page int, perPage int) (*TopInactiveChannelList, *Response, error) { +func (c *Client4) GetTopInactiveChannelsForTeamSince(ctx context.Context, teamId string, timeRange string, page int, perPage int) (*TopInactiveChannelList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) - r, err := c.DoAPIGet(c.teamRoute(teamId)+"/top/inactive_channels"+query, "") + r, err := c.DoAPIGet(ctx, c.teamRoute(teamId)+"/top/inactive_channels"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -3705,14 +3706,14 @@ func (c *Client4) GetTopInactiveChannelsForTeamSince(teamId string, timeRange st } // GetTopInactiveChannelsForUserSince will return an ordered list of your top channels in a given team. -func (c *Client4) GetTopInactiveChannelsForUserSince(teamId string, timeRange string, page int, perPage int) (*TopInactiveChannelList, *Response, error) { +func (c *Client4) GetTopInactiveChannelsForUserSince(ctx context.Context, teamId string, timeRange string, page int, perPage int) (*TopInactiveChannelList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) if teamId != "" { query += fmt.Sprintf("&team_id=%v", teamId) } - r, err := c.DoAPIGet(c.usersRoute()+"/me/top/inactive_channels"+query, "") + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/me/top/inactive_channels"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -3727,12 +3728,12 @@ func (c *Client4) GetTopInactiveChannelsForUserSince(teamId string, timeRange st // Post Section // CreatePost creates a post based on the provided post struct. -func (c *Client4) CreatePost(post *Post) (*Post, *Response, error) { +func (c *Client4) CreatePost(ctx context.Context, post *Post) (*Post, *Response, error) { postJSON, err := json.Marshal(post) if err != nil { return nil, nil, NewAppError("CreatePost", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.postsRoute(), string(postJSON)) + r, err := c.DoAPIPost(ctx, c.postsRoute(), string(postJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3748,12 +3749,12 @@ func (c *Client4) CreatePost(post *Post) (*Post, *Response, error) { } // CreatePostEphemeral creates a ephemeral post based on the provided post struct which is send to the given user id. -func (c *Client4) CreatePostEphemeral(post *PostEphemeral) (*Post, *Response, error) { +func (c *Client4) CreatePostEphemeral(ctx context.Context, post *PostEphemeral) (*Post, *Response, error) { postJSON, err := json.Marshal(post) if err != nil { return nil, nil, NewAppError("CreatePostEphemeral", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.postsEphemeralRoute(), string(postJSON)) + r, err := c.DoAPIPost(ctx, c.postsEphemeralRoute(), string(postJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3769,12 +3770,12 @@ func (c *Client4) CreatePostEphemeral(post *PostEphemeral) (*Post, *Response, er } // UpdatePost updates a post based on the provided post struct. -func (c *Client4) UpdatePost(postId string, post *Post) (*Post, *Response, error) { +func (c *Client4) UpdatePost(ctx context.Context, postId string, post *Post) (*Post, *Response, error) { postJSON, err := json.Marshal(post) if err != nil { return nil, nil, NewAppError("UpdatePost", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPut(c.postRoute(postId), string(postJSON)) + r, err := c.DoAPIPut(ctx, c.postRoute(postId), string(postJSON)) if err != nil { return nil, BuildResponse(r), err } @@ -3790,12 +3791,12 @@ func (c *Client4) UpdatePost(postId string, post *Post) (*Post, *Response, error } // PatchPost partially updates a post. Any missing fields are not updated. -func (c *Client4) PatchPost(postId string, patch *PostPatch) (*Post, *Response, error) { +func (c *Client4) PatchPost(ctx context.Context, postId string, patch *PostPatch) (*Post, *Response, error) { buf, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchPost", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.postRoute(postId)+"/patch", buf) + r, err := c.DoAPIPutBytes(ctx, c.postRoute(postId)+"/patch", buf) if err != nil { return nil, BuildResponse(r), err } @@ -3811,12 +3812,12 @@ func (c *Client4) PatchPost(postId string, patch *PostPatch) (*Post, *Response, } // SetPostUnread marks channel where post belongs as unread on the time of the provided post. -func (c *Client4) SetPostUnread(userId string, postId string, collapsedThreadsSupported bool) (*Response, error) { +func (c *Client4) SetPostUnread(ctx context.Context, userId string, postId string, collapsedThreadsSupported bool) (*Response, error) { b, err := json.Marshal(map[string]bool{"collapsed_threads_supported": collapsedThreadsSupported}) if err != nil { return nil, NewAppError("SetPostUnread", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.userRoute(userId)+c.postRoute(postId)+"/set_unread", b) + r, err := c.DoAPIPostBytes(ctx, c.userRoute(userId)+c.postRoute(postId)+"/set_unread", b) if err != nil { return BuildResponse(r), err } @@ -3827,13 +3828,13 @@ func (c *Client4) SetPostUnread(userId string, postId string, collapsedThreadsSu // SetPostReminder creates a post reminder for a given post at a specified time. // The time needs to be in UTC epoch in seconds. It is always truncated to a // 5 minute resolution minimum. -func (c *Client4) SetPostReminder(reminder *PostReminder) (*Response, error) { +func (c *Client4) SetPostReminder(ctx context.Context, reminder *PostReminder) (*Response, error) { b, err := json.Marshal(reminder) if err != nil { return nil, NewAppError("SetPostReminder", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.userRoute(reminder.UserId)+c.postRoute(reminder.PostId)+"/reminder", b) + r, err := c.DoAPIPostBytes(ctx, c.userRoute(reminder.UserId)+c.postRoute(reminder.PostId)+"/reminder", b) if err != nil { return BuildResponse(r), err } @@ -3842,8 +3843,8 @@ func (c *Client4) SetPostReminder(reminder *PostReminder) (*Response, error) { } // PinPost pin a post based on provided post id string. -func (c *Client4) PinPost(postId string) (*Response, error) { - r, err := c.DoAPIPost(c.postRoute(postId)+"/pin", "") +func (c *Client4) PinPost(ctx context.Context, postId string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.postRoute(postId)+"/pin", "") if err != nil { return BuildResponse(r), err } @@ -3852,8 +3853,8 @@ func (c *Client4) PinPost(postId string) (*Response, error) { } // UnpinPost unpin a post based on provided post id string. -func (c *Client4) UnpinPost(postId string) (*Response, error) { - r, err := c.DoAPIPost(c.postRoute(postId)+"/unpin", "") +func (c *Client4) UnpinPost(ctx context.Context, postId string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.postRoute(postId)+"/unpin", "") if err != nil { return BuildResponse(r), err } @@ -3862,8 +3863,8 @@ func (c *Client4) UnpinPost(postId string) (*Response, error) { } // GetPost gets a single post. -func (c *Client4) GetPost(postId string, etag string) (*Post, *Response, error) { - r, err := c.DoAPIGet(c.postRoute(postId), etag) +func (c *Client4) GetPost(ctx context.Context, postId string, etag string) (*Post, *Response, error) { + r, err := c.DoAPIGet(ctx, c.postRoute(postId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3880,8 +3881,8 @@ func (c *Client4) GetPost(postId string, etag string) (*Post, *Response, error) } // GetPostIncludeDeleted gets a single post, including deleted. -func (c *Client4) GetPostIncludeDeleted(postId string, etag string) (*Post, *Response, error) { - r, err := c.DoAPIGet(c.postRoute(postId)+"?include_deleted="+c.boolString(true), etag) +func (c *Client4) GetPostIncludeDeleted(ctx context.Context, postId string, etag string) (*Post, *Response, error) { + r, err := c.DoAPIGet(ctx, c.postRoute(postId)+"?include_deleted="+c.boolString(true), etag) if err != nil { return nil, BuildResponse(r), err } @@ -3898,8 +3899,8 @@ func (c *Client4) GetPostIncludeDeleted(postId string, etag string) (*Post, *Res } // DeletePost deletes a post from the provided post id string. -func (c *Client4) DeletePost(postId string) (*Response, error) { - r, err := c.DoAPIDelete(c.postRoute(postId)) +func (c *Client4) DeletePost(ctx context.Context, postId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.postRoute(postId)) if err != nil { return BuildResponse(r), err } @@ -3908,12 +3909,12 @@ func (c *Client4) DeletePost(postId string) (*Response, error) { } // GetPostThread gets a post with all the other posts in the same thread. -func (c *Client4) GetPostThread(postId string, etag string, collapsedThreads bool) (*PostList, *Response, error) { +func (c *Client4) GetPostThread(ctx context.Context, postId string, etag string, collapsedThreads bool) (*PostList, *Response, error) { url := c.postRoute(postId) + "/thread" if collapsedThreads { url += "?collapsedThreads=true" } - r, err := c.DoAPIGet(url, etag) + r, err := c.DoAPIGet(ctx, url, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3929,7 +3930,7 @@ func (c *Client4) GetPostThread(postId string, etag string, collapsedThreads boo } // GetPostThreadWithOpts gets a post with all the other posts in the same thread. -func (c *Client4) GetPostThreadWithOpts(postID string, etag string, opts GetPostsOptions) (*PostList, *Response, error) { +func (c *Client4) GetPostThreadWithOpts(ctx context.Context, postID string, etag string, opts GetPostsOptions) (*PostList, *Response, error) { urlVal := c.postRoute(postID) + "/thread" values := url.Values{} @@ -3956,7 +3957,7 @@ func (c *Client4) GetPostThreadWithOpts(postID string, etag string, opts GetPost } urlVal += "?" + values.Encode() - r, err := c.DoAPIGet(urlVal, etag) + r, err := c.DoAPIGet(ctx, urlVal, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3972,7 +3973,7 @@ func (c *Client4) GetPostThreadWithOpts(postID string, etag string, opts GetPost } // GetPostsForChannel gets a page of posts with an array for ordering for a channel. -func (c *Client4) GetPostsForChannel(channelId string, page, perPage int, etag string, collapsedThreads bool, includeDeleted bool) (*PostList, *Response, error) { +func (c *Client4) GetPostsForChannel(ctx context.Context, channelId string, page, perPage int, etag string, collapsedThreads bool, includeDeleted bool) (*PostList, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) if collapsedThreads { query += "&collapsedThreads=true" @@ -3981,7 +3982,7 @@ func (c *Client4) GetPostsForChannel(channelId string, page, perPage int, etag s if includeDeleted { query += "&include_deleted=true" } - r, err := c.DoAPIGet(c.channelRoute(channelId)+"/posts"+query, etag) + r, err := c.DoAPIGet(ctx, c.channelRoute(channelId)+"/posts"+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -3997,12 +3998,12 @@ func (c *Client4) GetPostsForChannel(channelId string, page, perPage int, etag s } // GetPostsByIds gets a list of posts by taking an array of post ids -func (c *Client4) GetPostsByIds(postIds []string) ([]*Post, *Response, error) { +func (c *Client4) GetPostsByIds(ctx context.Context, postIds []string) ([]*Post, *Response, error) { js, err := json.Marshal(postIds) if err != nil { return nil, nil, NewAppError("SearchFilesWithParams", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.postsRoute()+"/ids", string(js)) + r, err := c.DoAPIPost(ctx, c.postsRoute()+"/ids", string(js)) if err != nil { return nil, BuildResponse(r), err } @@ -4018,12 +4019,12 @@ func (c *Client4) GetPostsByIds(postIds []string) ([]*Post, *Response, error) { } // GetEditHistoryForPost gets a list of posts by taking a post ids -func (c *Client4) GetEditHistoryForPost(postId string) ([]*Post, *Response, error) { +func (c *Client4) GetEditHistoryForPost(ctx context.Context, postId string) ([]*Post, *Response, error) { js, err := json.Marshal(postId) if err != nil { return nil, nil, NewAppError("GetEditHistoryForPost", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIGet(c.postRoute(postId)+"/edit_history", string(js)) + r, err := c.DoAPIGet(ctx, c.postRoute(postId)+"/edit_history", string(js)) if err != nil { return nil, BuildResponse(r), err } @@ -4039,9 +4040,9 @@ func (c *Client4) GetEditHistoryForPost(postId string) ([]*Post, *Response, erro } // GetFlaggedPostsForUser returns flagged posts of a user based on user id string. -func (c *Client4) GetFlaggedPostsForUser(userId string, page int, perPage int) (*PostList, *Response, error) { +func (c *Client4) GetFlaggedPostsForUser(ctx context.Context, userId string, page int, perPage int) (*PostList, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.userRoute(userId)+"/posts/flagged"+query, "") + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/posts/flagged"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -4057,13 +4058,13 @@ func (c *Client4) GetFlaggedPostsForUser(userId string, page int, perPage int) ( } // GetFlaggedPostsForUserInTeam returns flagged posts in team of a user based on user id string. -func (c *Client4) GetFlaggedPostsForUserInTeam(userId string, teamId string, page int, perPage int) (*PostList, *Response, error) { +func (c *Client4) GetFlaggedPostsForUserInTeam(ctx context.Context, userId string, teamId string, page int, perPage int) (*PostList, *Response, error) { if !IsValidId(teamId) { return nil, nil, NewAppError("GetFlaggedPostsForUserInTeam", "model.client.get_flagged_posts_in_team.missing_parameter.app_error", nil, "", http.StatusBadRequest) } query := fmt.Sprintf("?team_id=%v&page=%v&per_page=%v", teamId, page, perPage) - r, err := c.DoAPIGet(c.userRoute(userId)+"/posts/flagged"+query, "") + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/posts/flagged"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -4079,13 +4080,13 @@ func (c *Client4) GetFlaggedPostsForUserInTeam(userId string, teamId string, pag } // GetFlaggedPostsForUserInChannel returns flagged posts in channel of a user based on user id string. -func (c *Client4) GetFlaggedPostsForUserInChannel(userId string, channelId string, page int, perPage int) (*PostList, *Response, error) { +func (c *Client4) GetFlaggedPostsForUserInChannel(ctx context.Context, userId string, channelId string, page int, perPage int) (*PostList, *Response, error) { if !IsValidId(channelId) { return nil, nil, NewAppError("GetFlaggedPostsForUserInChannel", "model.client.get_flagged_posts_in_channel.missing_parameter.app_error", nil, "", http.StatusBadRequest) } query := fmt.Sprintf("?channel_id=%v&page=%v&per_page=%v", channelId, page, perPage) - r, err := c.DoAPIGet(c.userRoute(userId)+"/posts/flagged"+query, "") + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/posts/flagged"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -4101,12 +4102,12 @@ func (c *Client4) GetFlaggedPostsForUserInChannel(userId string, channelId strin } // GetPostsSince gets posts created after a specified time as Unix time in milliseconds. -func (c *Client4) GetPostsSince(channelId string, time int64, collapsedThreads bool) (*PostList, *Response, error) { +func (c *Client4) GetPostsSince(ctx context.Context, channelId string, time int64, collapsedThreads bool) (*PostList, *Response, error) { query := fmt.Sprintf("?since=%v", time) if collapsedThreads { query += "&collapsedThreads=true" } - r, err := c.DoAPIGet(c.channelRoute(channelId)+"/posts"+query, "") + r, err := c.DoAPIGet(ctx, c.channelRoute(channelId)+"/posts"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -4122,7 +4123,7 @@ func (c *Client4) GetPostsSince(channelId string, time int64, collapsedThreads b } // GetPostsAfter gets a page of posts that were posted after the post provided. -func (c *Client4) GetPostsAfter(channelId, postId string, page, perPage int, etag string, collapsedThreads bool, includeDeleted bool) (*PostList, *Response, error) { +func (c *Client4) GetPostsAfter(ctx context.Context, channelId, postId string, page, perPage int, etag string, collapsedThreads bool, includeDeleted bool) (*PostList, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&after=%v", page, perPage, postId) if collapsedThreads { query += "&collapsedThreads=true" @@ -4130,7 +4131,7 @@ func (c *Client4) GetPostsAfter(channelId, postId string, page, perPage int, eta if includeDeleted { query += "&include_deleted=true" } - r, err := c.DoAPIGet(c.channelRoute(channelId)+"/posts"+query, etag) + r, err := c.DoAPIGet(ctx, c.channelRoute(channelId)+"/posts"+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -4146,7 +4147,7 @@ func (c *Client4) GetPostsAfter(channelId, postId string, page, perPage int, eta } // GetPostsBefore gets a page of posts that were posted before the post provided. -func (c *Client4) GetPostsBefore(channelId, postId string, page, perPage int, etag string, collapsedThreads bool, includeDeleted bool) (*PostList, *Response, error) { +func (c *Client4) GetPostsBefore(ctx context.Context, channelId, postId string, page, perPage int, etag string, collapsedThreads bool, includeDeleted bool) (*PostList, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&before=%v", page, perPage, postId) if collapsedThreads { query += "&collapsedThreads=true" @@ -4154,7 +4155,7 @@ func (c *Client4) GetPostsBefore(channelId, postId string, page, perPage int, et if includeDeleted { query += "&include_deleted=true" } - r, err := c.DoAPIGet(c.channelRoute(channelId)+"/posts"+query, etag) + r, err := c.DoAPIGet(ctx, c.channelRoute(channelId)+"/posts"+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -4170,12 +4171,12 @@ func (c *Client4) GetPostsBefore(channelId, postId string, page, perPage int, et } // GetPostsAroundLastUnread gets a list of posts around last unread post by a user in a channel. -func (c *Client4) GetPostsAroundLastUnread(userId, channelId string, limitBefore, limitAfter int, collapsedThreads bool) (*PostList, *Response, error) { +func (c *Client4) GetPostsAroundLastUnread(ctx context.Context, userId, channelId string, limitBefore, limitAfter int, collapsedThreads bool) (*PostList, *Response, error) { query := fmt.Sprintf("?limit_before=%v&limit_after=%v", limitBefore, limitAfter) if collapsedThreads { query += "&collapsedThreads=true" } - r, err := c.DoAPIGet(c.userRoute(userId)+c.channelRoute(channelId)+"/posts/unread"+query, "") + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+c.channelRoute(channelId)+"/posts/unread"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -4191,21 +4192,21 @@ func (c *Client4) GetPostsAroundLastUnread(userId, channelId string, limitBefore } // SearchFiles returns any posts with matching terms string. -func (c *Client4) SearchFiles(teamId string, terms string, isOrSearch bool) (*FileInfoList, *Response, error) { +func (c *Client4) SearchFiles(ctx context.Context, teamId string, terms string, isOrSearch bool) (*FileInfoList, *Response, error) { params := SearchParameter{ Terms: &terms, IsOrSearch: &isOrSearch, } - return c.SearchFilesWithParams(teamId, ¶ms) + return c.SearchFilesWithParams(ctx, teamId, ¶ms) } // SearchFilesWithParams returns any posts with matching terms string. -func (c *Client4) SearchFilesWithParams(teamId string, params *SearchParameter) (*FileInfoList, *Response, error) { +func (c *Client4) SearchFilesWithParams(ctx context.Context, teamId string, params *SearchParameter) (*FileInfoList, *Response, error) { js, err := json.Marshal(params) if err != nil { return nil, nil, NewAppError("SearchFilesWithParams", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.teamRoute(teamId)+"/files/search", string(js)) + r, err := c.DoAPIPost(ctx, c.teamRoute(teamId)+"/files/search", string(js)) if err != nil { return nil, BuildResponse(r), err } @@ -4219,16 +4220,16 @@ func (c *Client4) SearchFilesWithParams(teamId string, params *SearchParameter) } // SearchPosts returns any posts with matching terms string. -func (c *Client4) SearchPosts(teamId string, terms string, isOrSearch bool) (*PostList, *Response, error) { +func (c *Client4) SearchPosts(ctx context.Context, teamId string, terms string, isOrSearch bool) (*PostList, *Response, error) { params := SearchParameter{ Terms: &terms, IsOrSearch: &isOrSearch, } - return c.SearchPostsWithParams(teamId, ¶ms) + return c.SearchPostsWithParams(ctx, teamId, ¶ms) } // SearchPostsWithParams returns any posts with matching terms string. -func (c *Client4) SearchPostsWithParams(teamId string, params *SearchParameter) (*PostList, *Response, error) { +func (c *Client4) SearchPostsWithParams(ctx context.Context, teamId string, params *SearchParameter) (*PostList, *Response, error) { js, err := json.Marshal(params) if err != nil { return nil, nil, NewAppError("SearchFilesWithParams", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) @@ -4239,7 +4240,7 @@ func (c *Client4) SearchPostsWithParams(teamId string, params *SearchParameter) } else { route = c.teamRoute(teamId) + "/posts/search" } - r, err := c.DoAPIPost(route, string(js)) + r, err := c.DoAPIPost(ctx, route, string(js)) if err != nil { return nil, BuildResponse(r), err } @@ -4255,7 +4256,7 @@ func (c *Client4) SearchPostsWithParams(teamId string, params *SearchParameter) } // SearchPostsWithMatches returns any posts with matching terms string, including. -func (c *Client4) SearchPostsWithMatches(teamId string, terms string, isOrSearch bool) (*PostSearchResults, *Response, error) { +func (c *Client4) SearchPostsWithMatches(ctx context.Context, teamId string, terms string, isOrSearch bool) (*PostSearchResults, *Response, error) { requestBody := map[string]any{"terms": terms, "is_or_search": isOrSearch} var route string if teamId == "" { @@ -4263,7 +4264,7 @@ func (c *Client4) SearchPostsWithMatches(teamId string, terms string, isOrSearch } else { route = c.teamRoute(teamId) + "/posts/search" } - r, err := c.DoAPIPost(route, StringInterfaceToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, route, StringInterfaceToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -4276,8 +4277,8 @@ func (c *Client4) SearchPostsWithMatches(teamId string, terms string, isOrSearch } // DoPostAction performs a post action. -func (c *Client4) DoPostAction(postId, actionId string) (*Response, error) { - r, err := c.DoAPIPost(c.postRoute(postId)+"/actions/"+actionId, "") +func (c *Client4) DoPostAction(ctx context.Context, postId, actionId string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.postRoute(postId)+"/actions/"+actionId, "") if err != nil { return BuildResponse(r), err } @@ -4286,7 +4287,7 @@ func (c *Client4) DoPostAction(postId, actionId string) (*Response, error) { } // DoPostActionWithCookie performs a post action with extra arguments -func (c *Client4) DoPostActionWithCookie(postId, actionId, selected, cookieStr string) (*Response, error) { +func (c *Client4) DoPostActionWithCookie(ctx context.Context, postId, actionId, selected, cookieStr string) (*Response, error) { var body []byte if selected != "" || cookieStr != "" { var err error @@ -4298,7 +4299,7 @@ func (c *Client4) DoPostActionWithCookie(postId, actionId, selected, cookieStr s return nil, NewAppError("DoPostActionWithCookie", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } } - r, err := c.DoAPIPost(c.postRoute(postId)+"/actions/"+actionId, string(body)) + r, err := c.DoAPIPost(ctx, c.postRoute(postId)+"/actions/"+actionId, string(body)) if err != nil { return BuildResponse(r), err } @@ -4307,9 +4308,9 @@ func (c *Client4) DoPostActionWithCookie(postId, actionId, selected, cookieStr s } // GetTopThreadsForTeamSince will return an ordered list of the top channels in a given team. -func (c *Client4) GetTopThreadsForTeamSince(teamId string, timeRange string, page int, perPage int) (*TopThreadList, *Response, error) { +func (c *Client4) GetTopThreadsForTeamSince(ctx context.Context, teamId string, timeRange string, page int, perPage int) (*TopThreadList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) - r, err := c.DoAPIGet(c.teamRoute(teamId)+"/top/threads"+query, "") + r, err := c.DoAPIGet(ctx, c.teamRoute(teamId)+"/top/threads"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -4322,14 +4323,14 @@ func (c *Client4) GetTopThreadsForTeamSince(teamId string, timeRange string, pag } // GetTopThreadsForUserSince will return an ordered list of your top channels in a given team. -func (c *Client4) GetTopThreadsForUserSince(teamId string, timeRange string, page int, perPage int) (*TopThreadList, *Response, error) { +func (c *Client4) GetTopThreadsForUserSince(ctx context.Context, teamId string, timeRange string, page int, perPage int) (*TopThreadList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) if teamId != "" { query += fmt.Sprintf("&team_id=%v", teamId) } - r, err := c.DoAPIGet(c.usersRoute()+"/me/top/threads"+query, "") + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/me/top/threads"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -4345,12 +4346,12 @@ func (c *Client4) GetTopThreadsForUserSince(teamId string, timeRange string, pag // open interactive dialogs, based on the provided trigger ID and other // provided data. Used with interactive message buttons, menus and // slash commands. -func (c *Client4) OpenInteractiveDialog(request OpenDialogRequest) (*Response, error) { +func (c *Client4) OpenInteractiveDialog(ctx context.Context, request OpenDialogRequest) (*Response, error) { b, err := json.Marshal(request) if err != nil { return nil, NewAppError("OpenInteractiveDialog", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost("/actions/dialogs/open", string(b)) + r, err := c.DoAPIPost(ctx, "/actions/dialogs/open", string(b)) if err != nil { return BuildResponse(r), err } @@ -4360,12 +4361,12 @@ func (c *Client4) OpenInteractiveDialog(request OpenDialogRequest) (*Response, e // SubmitInteractiveDialog will submit the provided dialog data to the integration // configured by the URL. Used with the interactive dialogs integration feature. -func (c *Client4) SubmitInteractiveDialog(request SubmitDialogRequest) (*SubmitDialogResponse, *Response, error) { +func (c *Client4) SubmitInteractiveDialog(ctx context.Context, request SubmitDialogRequest) (*SubmitDialogResponse, *Response, error) { b, err := json.Marshal(request) if err != nil { return nil, nil, NewAppError("SubmitInteractiveDialog", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost("/actions/dialogs/submit", string(b)) + r, err := c.DoAPIPost(ctx, "/actions/dialogs/submit", string(b)) if err != nil { return nil, BuildResponse(r), err } @@ -4378,7 +4379,7 @@ func (c *Client4) SubmitInteractiveDialog(request SubmitDialogRequest) (*SubmitD // UploadFile will upload a file to a channel using a multipart request, to be later attached to a post. // This method is functionally equivalent to Client4.UploadFileAsRequestBody. -func (c *Client4) UploadFile(data []byte, channelId string, filename string) (*FileUploadResponse, *Response, error) { +func (c *Client4) UploadFile(ctx context.Context, data []byte, channelId string, filename string) (*FileUploadResponse, *Response, error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) @@ -4406,18 +4407,18 @@ func (c *Client4) UploadFile(data []byte, channelId string, filename string) (*F return nil, nil, err } - return c.DoUploadFile(c.filesRoute(), body.Bytes(), writer.FormDataContentType()) + return c.DoUploadFile(ctx, c.filesRoute(), body.Bytes(), writer.FormDataContentType()) } // UploadFileAsRequestBody will upload a file to a channel as the body of a request, to be later attached // to a post. This method is functionally equivalent to Client4.UploadFile. -func (c *Client4) UploadFileAsRequestBody(data []byte, channelId string, filename string) (*FileUploadResponse, *Response, error) { - return c.DoUploadFile(c.filesRoute()+fmt.Sprintf("?channel_id=%v&filename=%v", url.QueryEscape(channelId), url.QueryEscape(filename)), data, http.DetectContentType(data)) +func (c *Client4) UploadFileAsRequestBody(ctx context.Context, data []byte, channelId string, filename string) (*FileUploadResponse, *Response, error) { + return c.DoUploadFile(ctx, c.filesRoute()+fmt.Sprintf("?channel_id=%v&filename=%v", url.QueryEscape(channelId), url.QueryEscape(filename)), data, http.DetectContentType(data)) } // GetFile gets the bytes for a file by id. -func (c *Client4) GetFile(fileId string) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.fileRoute(fileId), "") +func (c *Client4) GetFile(ctx context.Context, fileId string) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.fileRoute(fileId), "") if err != nil { return nil, BuildResponse(r), err } @@ -4431,8 +4432,8 @@ func (c *Client4) GetFile(fileId string) ([]byte, *Response, error) { } // DownloadFile gets the bytes for a file by id, optionally adding headers to force the browser to download it. -func (c *Client4) DownloadFile(fileId string, download bool) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.fileRoute(fileId)+fmt.Sprintf("?download=%v", download), "") +func (c *Client4) DownloadFile(ctx context.Context, fileId string, download bool) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.fileRoute(fileId)+fmt.Sprintf("?download=%v", download), "") if err != nil { return nil, BuildResponse(r), err } @@ -4446,8 +4447,8 @@ func (c *Client4) DownloadFile(fileId string, download bool) ([]byte, *Response, } // GetFileThumbnail gets the bytes for a file by id. -func (c *Client4) GetFileThumbnail(fileId string) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.fileRoute(fileId)+"/thumbnail", "") +func (c *Client4) GetFileThumbnail(ctx context.Context, fileId string) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.fileRoute(fileId)+"/thumbnail", "") if err != nil { return nil, BuildResponse(r), err } @@ -4461,8 +4462,8 @@ func (c *Client4) GetFileThumbnail(fileId string) ([]byte, *Response, error) { } // DownloadFileThumbnail gets the bytes for a file by id, optionally adding headers to force the browser to download it. -func (c *Client4) DownloadFileThumbnail(fileId string, download bool) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.fileRoute(fileId)+fmt.Sprintf("/thumbnail?download=%v", download), "") +func (c *Client4) DownloadFileThumbnail(ctx context.Context, fileId string, download bool) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.fileRoute(fileId)+fmt.Sprintf("/thumbnail?download=%v", download), "") if err != nil { return nil, BuildResponse(r), err } @@ -4476,8 +4477,8 @@ func (c *Client4) DownloadFileThumbnail(fileId string, download bool) ([]byte, * } // GetFileLink gets the public link of a file by id. -func (c *Client4) GetFileLink(fileId string) (string, *Response, error) { - r, err := c.DoAPIGet(c.fileRoute(fileId)+"/link", "") +func (c *Client4) GetFileLink(ctx context.Context, fileId string) (string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.fileRoute(fileId)+"/link", "") if err != nil { return "", BuildResponse(r), err } @@ -4486,8 +4487,8 @@ func (c *Client4) GetFileLink(fileId string) (string, *Response, error) { } // GetFilePreview gets the bytes for a file by id. -func (c *Client4) GetFilePreview(fileId string) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.fileRoute(fileId)+"/preview", "") +func (c *Client4) GetFilePreview(ctx context.Context, fileId string) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.fileRoute(fileId)+"/preview", "") if err != nil { return nil, BuildResponse(r), err } @@ -4501,8 +4502,8 @@ func (c *Client4) GetFilePreview(fileId string) ([]byte, *Response, error) { } // DownloadFilePreview gets the bytes for a file by id. -func (c *Client4) DownloadFilePreview(fileId string, download bool) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.fileRoute(fileId)+fmt.Sprintf("/preview?download=%v", download), "") +func (c *Client4) DownloadFilePreview(ctx context.Context, fileId string, download bool) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.fileRoute(fileId)+fmt.Sprintf("/preview?download=%v", download), "") if err != nil { return nil, BuildResponse(r), err } @@ -4516,8 +4517,8 @@ func (c *Client4) DownloadFilePreview(fileId string, download bool) ([]byte, *Re } // GetFileInfo gets all the file info objects. -func (c *Client4) GetFileInfo(fileId string) (*FileInfo, *Response, error) { - r, err := c.DoAPIGet(c.fileRoute(fileId)+"/info", "") +func (c *Client4) GetFileInfo(ctx context.Context, fileId string) (*FileInfo, *Response, error) { + r, err := c.DoAPIGet(ctx, c.fileRoute(fileId)+"/info", "") if err != nil { return nil, BuildResponse(r), err } @@ -4531,8 +4532,8 @@ func (c *Client4) GetFileInfo(fileId string) (*FileInfo, *Response, error) { } // GetFileInfosForPost gets all the file info objects attached to a post. -func (c *Client4) GetFileInfosForPost(postId string, etag string) ([]*FileInfo, *Response, error) { - r, err := c.DoAPIGet(c.postRoute(postId)+"/files/info", etag) +func (c *Client4) GetFileInfosForPost(ctx context.Context, postId string, etag string) ([]*FileInfo, *Response, error) { + r, err := c.DoAPIGet(ctx, c.postRoute(postId)+"/files/info", etag) if err != nil { return nil, BuildResponse(r), err } @@ -4549,8 +4550,8 @@ func (c *Client4) GetFileInfosForPost(postId string, etag string) ([]*FileInfo, } // GetFileInfosForPost gets all the file info objects attached to a post, including deleted -func (c *Client4) GetFileInfosForPostIncludeDeleted(postId string, etag string) ([]*FileInfo, *Response, error) { - r, err := c.DoAPIGet(c.postRoute(postId)+"/files/info"+"?include_deleted="+c.boolString(true), etag) +func (c *Client4) GetFileInfosForPostIncludeDeleted(ctx context.Context, postId string, etag string) ([]*FileInfo, *Response, error) { + r, err := c.DoAPIGet(ctx, c.postRoute(postId)+"/files/info"+"?include_deleted="+c.boolString(true), etag) if err != nil { return nil, BuildResponse(r), err } @@ -4569,8 +4570,8 @@ func (c *Client4) GetFileInfosForPostIncludeDeleted(postId string, etag string) // General/System Section // GenerateSupportPacket downloads the generated support packet -func (c *Client4) GenerateSupportPacket() ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.systemRoute()+"/support_packet", "") +func (c *Client4) GenerateSupportPacket(ctx context.Context) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.systemRoute()+"/support_packet", "") if err != nil { return nil, BuildResponse(r), err } @@ -4584,8 +4585,8 @@ func (c *Client4) GenerateSupportPacket() ([]byte, *Response, error) { } // GetPing will return ok if the running goRoutines are below the threshold and unhealthy for above. -func (c *Client4) GetPing() (string, *Response, error) { - r, err := c.DoAPIGet(c.systemRoute()+"/ping", "") +func (c *Client4) GetPing(ctx context.Context) (string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.systemRoute()+"/ping", "") if r != nil && r.StatusCode == 500 { defer r.Body.Close() return StatusUnhealthy, BuildResponse(r), err @@ -4599,8 +4600,8 @@ func (c *Client4) GetPing() (string, *Response, error) { // GetPingWithServerStatus will return ok if several basic server health checks // all pass successfully. -func (c *Client4) GetPingWithServerStatus() (string, *Response, error) { - r, err := c.DoAPIGet(c.systemRoute()+"/ping?get_server_status="+c.boolString(true), "") +func (c *Client4) GetPingWithServerStatus(ctx context.Context) (string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.systemRoute()+"/ping?get_server_status="+c.boolString(true), "") if r != nil && r.StatusCode == 500 { defer r.Body.Close() return StatusUnhealthy, BuildResponse(r), err @@ -4614,8 +4615,8 @@ func (c *Client4) GetPingWithServerStatus() (string, *Response, error) { // GetPingWithFullServerStatus will return the full status if several basic server // health checks all pass successfully. -func (c *Client4) GetPingWithFullServerStatus() (map[string]string, *Response, error) { - r, err := c.DoAPIGet(c.systemRoute()+"/ping?get_server_status="+c.boolString(true), "") +func (c *Client4) GetPingWithFullServerStatus(ctx context.Context) (map[string]string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.systemRoute()+"/ping?get_server_status="+c.boolString(true), "") if r != nil && r.StatusCode == 500 { defer r.Body.Close() return map[string]string{"status": StatusUnhealthy}, BuildResponse(r), err @@ -4628,12 +4629,12 @@ func (c *Client4) GetPingWithFullServerStatus() (map[string]string, *Response, e } // TestEmail will attempt to connect to the configured SMTP server. -func (c *Client4) TestEmail(config *Config) (*Response, error) { +func (c *Client4) TestEmail(ctx context.Context, config *Config) (*Response, error) { buf, err := json.Marshal(config) if err != nil { return nil, NewAppError("TestEmail", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.testEmailRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.testEmailRoute(), buf) if err != nil { return BuildResponse(r), err } @@ -4642,10 +4643,10 @@ func (c *Client4) TestEmail(config *Config) (*Response, error) { } // TestSiteURL will test the validity of a site URL. -func (c *Client4) TestSiteURL(siteURL string) (*Response, error) { +func (c *Client4) TestSiteURL(ctx context.Context, siteURL string) (*Response, error) { requestBody := make(map[string]string) requestBody["site_url"] = siteURL - r, err := c.DoAPIPost(c.testSiteURLRoute(), MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.testSiteURLRoute(), MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -4654,12 +4655,12 @@ func (c *Client4) TestSiteURL(siteURL string) (*Response, error) { } // TestS3Connection will attempt to connect to the AWS S3. -func (c *Client4) TestS3Connection(config *Config) (*Response, error) { +func (c *Client4) TestS3Connection(ctx context.Context, config *Config) (*Response, error) { buf, err := json.Marshal(config) if err != nil { return nil, NewAppError("TestS3Connection", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.testS3Route(), buf) + r, err := c.DoAPIPostBytes(ctx, c.testS3Route(), buf) if err != nil { return BuildResponse(r), err } @@ -4668,8 +4669,8 @@ func (c *Client4) TestS3Connection(config *Config) (*Response, error) { } // GetConfig will retrieve the server config with some sanitized items. -func (c *Client4) GetConfig() (*Config, *Response, error) { - r, err := c.DoAPIGet(c.configRoute(), "") +func (c *Client4) GetConfig(ctx context.Context) (*Config, *Response, error) { + r, err := c.DoAPIGet(ctx, c.configRoute(), "") if err != nil { return nil, BuildResponse(r), err } @@ -4681,8 +4682,8 @@ func (c *Client4) GetConfig() (*Config, *Response, error) { } // ReloadConfig will reload the server configuration. -func (c *Client4) ReloadConfig() (*Response, error) { - r, err := c.DoAPIPost(c.configRoute()+"/reload", "") +func (c *Client4) ReloadConfig(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.configRoute()+"/reload", "") if err != nil { return BuildResponse(r), err } @@ -4692,8 +4693,8 @@ func (c *Client4) ReloadConfig() (*Response, error) { // GetOldClientConfig will retrieve the parts of the server configuration needed by the // client, formatted in the old format. -func (c *Client4) GetOldClientConfig(etag string) (map[string]string, *Response, error) { - r, err := c.DoAPIGet(c.configRoute()+"/client?format=old", etag) +func (c *Client4) GetOldClientConfig(ctx context.Context, etag string) (map[string]string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.configRoute()+"/client?format=old", etag) if err != nil { return nil, BuildResponse(r), err } @@ -4704,8 +4705,8 @@ func (c *Client4) GetOldClientConfig(etag string) (map[string]string, *Response, // GetEnvironmentConfig will retrieve a map mirroring the server configuration where fields // are set to true if the corresponding config setting is set through an environment variable. // Settings that haven't been set through environment variables will be missing from the map. -func (c *Client4) GetEnvironmentConfig() (map[string]any, *Response, error) { - r, err := c.DoAPIGet(c.configRoute()+"/environment", "") +func (c *Client4) GetEnvironmentConfig(ctx context.Context) (map[string]any, *Response, error) { + r, err := c.DoAPIGet(ctx, c.configRoute()+"/environment", "") if err != nil { return nil, BuildResponse(r), err } @@ -4715,8 +4716,8 @@ func (c *Client4) GetEnvironmentConfig() (map[string]any, *Response, error) { // GetOldClientLicense will retrieve the parts of the server license needed by the // client, formatted in the old format. -func (c *Client4) GetOldClientLicense(etag string) (map[string]string, *Response, error) { - r, err := c.DoAPIGet(c.licenseRoute()+"/client?format=old", etag) +func (c *Client4) GetOldClientLicense(ctx context.Context, etag string) (map[string]string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.licenseRoute()+"/client?format=old", etag) if err != nil { return nil, BuildResponse(r), err } @@ -4725,8 +4726,8 @@ func (c *Client4) GetOldClientLicense(etag string) (map[string]string, *Response } // DatabaseRecycle will recycle the connections. Discard current connection and get new one. -func (c *Client4) DatabaseRecycle() (*Response, error) { - r, err := c.DoAPIPost(c.databaseRoute()+"/recycle", "") +func (c *Client4) DatabaseRecycle(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.databaseRoute()+"/recycle", "") if err != nil { return BuildResponse(r), err } @@ -4735,8 +4736,8 @@ func (c *Client4) DatabaseRecycle() (*Response, error) { } // InvalidateCaches will purge the cache and can affect the performance while is cleaning. -func (c *Client4) InvalidateCaches() (*Response, error) { - r, err := c.DoAPIPost(c.cacheRoute()+"/invalidate", "") +func (c *Client4) InvalidateCaches(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.cacheRoute()+"/invalidate", "") if err != nil { return BuildResponse(r), err } @@ -4745,12 +4746,12 @@ func (c *Client4) InvalidateCaches() (*Response, error) { } // UpdateConfig will update the server configuration. -func (c *Client4) UpdateConfig(config *Config) (*Config, *Response, error) { +func (c *Client4) UpdateConfig(ctx context.Context, config *Config) (*Config, *Response, error) { buf, err := json.Marshal(config) if err != nil { return nil, nil, NewAppError("UpdateConfig", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.configRoute(), buf) + r, err := c.DoAPIPutBytes(ctx, c.configRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -4765,11 +4766,11 @@ func (c *Client4) UpdateConfig(config *Config) (*Config, *Response, error) { // DEPRECATED: The config migrate API has been moved to be a purely // mmctl --local endpoint. This method will be removed in a // future major release. -func (c *Client4) MigrateConfig(from, to string) (*Response, error) { +func (c *Client4) MigrateConfig(ctx context.Context, from, to string) (*Response, error) { m := make(map[string]string, 2) m["from"] = from m["to"] = to - r, err := c.DoAPIPost(c.configRoute()+"/migrate", MapToJSON(m)) + r, err := c.DoAPIPost(ctx, c.configRoute()+"/migrate", MapToJSON(m)) if err != nil { return BuildResponse(r), err } @@ -4778,7 +4779,7 @@ func (c *Client4) MigrateConfig(from, to string) (*Response, error) { } // UploadLicenseFile will add a license file to the system. -func (c *Client4) UploadLicenseFile(data []byte) (*Response, error) { +func (c *Client4) UploadLicenseFile(ctx context.Context, data []byte) (*Response, error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) @@ -4820,8 +4821,8 @@ func (c *Client4) UploadLicenseFile(data []byte) (*Response, error) { // RemoveLicenseFile will remove the server license it exists. Note that this will // disable all enterprise features. -func (c *Client4) RemoveLicenseFile() (*Response, error) { - r, err := c.DoAPIDelete(c.licenseRoute()) +func (c *Client4) RemoveLicenseFile(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.licenseRoute()) if err != nil { return BuildResponse(r), err } @@ -4833,9 +4834,9 @@ func (c *Client4) RemoveLicenseFile() (*Response, error) { // available but the "/analytics" endpoint is reserved for it. The "name" argument is optional // and defaults to "standard". The "teamId" argument is optional and will limit results // to a specific team. -func (c *Client4) GetAnalyticsOld(name, teamId string) (AnalyticsRows, *Response, error) { +func (c *Client4) GetAnalyticsOld(ctx context.Context, name, teamId string) (AnalyticsRows, *Response, error) { query := fmt.Sprintf("?name=%v&team_id=%v", name, teamId) - r, err := c.DoAPIGet(c.analyticsRoute()+"/old"+query, "") + r, err := c.DoAPIGet(ctx, c.analyticsRoute()+"/old"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -4852,12 +4853,12 @@ func (c *Client4) GetAnalyticsOld(name, teamId string) (AnalyticsRows, *Response // Webhooks Section // CreateIncomingWebhook creates an incoming webhook for a channel. -func (c *Client4) CreateIncomingWebhook(hook *IncomingWebhook) (*IncomingWebhook, *Response, error) { +func (c *Client4) CreateIncomingWebhook(ctx context.Context, hook *IncomingWebhook) (*IncomingWebhook, *Response, error) { buf, err := json.Marshal(hook) if err != nil { return nil, nil, NewAppError("CreateIncomingWebhook", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.incomingWebhooksRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.incomingWebhooksRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -4871,12 +4872,12 @@ func (c *Client4) CreateIncomingWebhook(hook *IncomingWebhook) (*IncomingWebhook } // UpdateIncomingWebhook updates an incoming webhook for a channel. -func (c *Client4) UpdateIncomingWebhook(hook *IncomingWebhook) (*IncomingWebhook, *Response, error) { +func (c *Client4) UpdateIncomingWebhook(ctx context.Context, hook *IncomingWebhook) (*IncomingWebhook, *Response, error) { buf, err := json.Marshal(hook) if err != nil { return nil, nil, NewAppError("UpdateIncomingWebhook", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.incomingWebhookRoute(hook.Id), buf) + r, err := c.DoAPIPutBytes(ctx, c.incomingWebhookRoute(hook.Id), buf) if err != nil { return nil, BuildResponse(r), err } @@ -4890,9 +4891,9 @@ func (c *Client4) UpdateIncomingWebhook(hook *IncomingWebhook) (*IncomingWebhook } // GetIncomingWebhooks returns a page of incoming webhooks on the system. Page counting starts at 0. -func (c *Client4) GetIncomingWebhooks(page int, perPage int, etag string) ([]*IncomingWebhook, *Response, error) { +func (c *Client4) GetIncomingWebhooks(ctx context.Context, page int, perPage int, etag string) ([]*IncomingWebhook, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.incomingWebhooksRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.incomingWebhooksRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -4908,9 +4909,9 @@ func (c *Client4) GetIncomingWebhooks(page int, perPage int, etag string) ([]*In } // GetIncomingWebhooksForTeam returns a page of incoming webhooks for a team. Page counting starts at 0. -func (c *Client4) GetIncomingWebhooksForTeam(teamId string, page int, perPage int, etag string) ([]*IncomingWebhook, *Response, error) { +func (c *Client4) GetIncomingWebhooksForTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*IncomingWebhook, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&team_id=%v", page, perPage, teamId) - r, err := c.DoAPIGet(c.incomingWebhooksRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.incomingWebhooksRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -4926,8 +4927,8 @@ func (c *Client4) GetIncomingWebhooksForTeam(teamId string, page int, perPage in } // GetIncomingWebhook returns an Incoming webhook given the hook ID. -func (c *Client4) GetIncomingWebhook(hookID string, etag string) (*IncomingWebhook, *Response, error) { - r, err := c.DoAPIGet(c.incomingWebhookRoute(hookID), etag) +func (c *Client4) GetIncomingWebhook(ctx context.Context, hookID string, etag string) (*IncomingWebhook, *Response, error) { + r, err := c.DoAPIGet(ctx, c.incomingWebhookRoute(hookID), etag) if err != nil { return nil, BuildResponse(r), err } @@ -4943,8 +4944,8 @@ func (c *Client4) GetIncomingWebhook(hookID string, etag string) (*IncomingWebho } // DeleteIncomingWebhook deletes and Incoming Webhook given the hook ID. -func (c *Client4) DeleteIncomingWebhook(hookID string) (*Response, error) { - r, err := c.DoAPIDelete(c.incomingWebhookRoute(hookID)) +func (c *Client4) DeleteIncomingWebhook(ctx context.Context, hookID string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.incomingWebhookRoute(hookID)) if err != nil { return BuildResponse(r), err } @@ -4953,12 +4954,12 @@ func (c *Client4) DeleteIncomingWebhook(hookID string) (*Response, error) { } // CreateOutgoingWebhook creates an outgoing webhook for a team or channel. -func (c *Client4) CreateOutgoingWebhook(hook *OutgoingWebhook) (*OutgoingWebhook, *Response, error) { +func (c *Client4) CreateOutgoingWebhook(ctx context.Context, hook *OutgoingWebhook) (*OutgoingWebhook, *Response, error) { buf, err := json.Marshal(hook) if err != nil { return nil, nil, NewAppError("CreateOutgoingWebhook", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.outgoingWebhooksRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.outgoingWebhooksRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -4971,12 +4972,12 @@ func (c *Client4) CreateOutgoingWebhook(hook *OutgoingWebhook) (*OutgoingWebhook } // UpdateOutgoingWebhook creates an outgoing webhook for a team or channel. -func (c *Client4) UpdateOutgoingWebhook(hook *OutgoingWebhook) (*OutgoingWebhook, *Response, error) { +func (c *Client4) UpdateOutgoingWebhook(ctx context.Context, hook *OutgoingWebhook) (*OutgoingWebhook, *Response, error) { buf, err := json.Marshal(hook) if err != nil { return nil, nil, NewAppError("UpdateOutgoingWebhook", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.outgoingWebhookRoute(hook.Id), buf) + r, err := c.DoAPIPutBytes(ctx, c.outgoingWebhookRoute(hook.Id), buf) if err != nil { return nil, BuildResponse(r), err } @@ -4989,9 +4990,9 @@ func (c *Client4) UpdateOutgoingWebhook(hook *OutgoingWebhook) (*OutgoingWebhook } // GetOutgoingWebhooks returns a page of outgoing webhooks on the system. Page counting starts at 0. -func (c *Client4) GetOutgoingWebhooks(page int, perPage int, etag string) ([]*OutgoingWebhook, *Response, error) { +func (c *Client4) GetOutgoingWebhooks(ctx context.Context, page int, perPage int, etag string) ([]*OutgoingWebhook, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.outgoingWebhooksRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.outgoingWebhooksRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -5007,8 +5008,8 @@ func (c *Client4) GetOutgoingWebhooks(page int, perPage int, etag string) ([]*Ou } // GetOutgoingWebhook outgoing webhooks on the system requested by Hook Id. -func (c *Client4) GetOutgoingWebhook(hookId string) (*OutgoingWebhook, *Response, error) { - r, err := c.DoAPIGet(c.outgoingWebhookRoute(hookId), "") +func (c *Client4) GetOutgoingWebhook(ctx context.Context, hookId string) (*OutgoingWebhook, *Response, error) { + r, err := c.DoAPIGet(ctx, c.outgoingWebhookRoute(hookId), "") if err != nil { return nil, BuildResponse(r), err } @@ -5021,9 +5022,9 @@ func (c *Client4) GetOutgoingWebhook(hookId string) (*OutgoingWebhook, *Response } // GetOutgoingWebhooksForChannel returns a page of outgoing webhooks for a channel. Page counting starts at 0. -func (c *Client4) GetOutgoingWebhooksForChannel(channelId string, page int, perPage int, etag string) ([]*OutgoingWebhook, *Response, error) { +func (c *Client4) GetOutgoingWebhooksForChannel(ctx context.Context, channelId string, page int, perPage int, etag string) ([]*OutgoingWebhook, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&channel_id=%v", page, perPage, channelId) - r, err := c.DoAPIGet(c.outgoingWebhooksRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.outgoingWebhooksRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -5039,9 +5040,9 @@ func (c *Client4) GetOutgoingWebhooksForChannel(channelId string, page int, perP } // GetOutgoingWebhooksForTeam returns a page of outgoing webhooks for a team. Page counting starts at 0. -func (c *Client4) GetOutgoingWebhooksForTeam(teamId string, page int, perPage int, etag string) ([]*OutgoingWebhook, *Response, error) { +func (c *Client4) GetOutgoingWebhooksForTeam(ctx context.Context, teamId string, page int, perPage int, etag string) ([]*OutgoingWebhook, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&team_id=%v", page, perPage, teamId) - r, err := c.DoAPIGet(c.outgoingWebhooksRoute()+query, etag) + r, err := c.DoAPIGet(ctx, c.outgoingWebhooksRoute()+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -5057,8 +5058,8 @@ func (c *Client4) GetOutgoingWebhooksForTeam(teamId string, page int, perPage in } // RegenOutgoingHookToken regenerate the outgoing webhook token. -func (c *Client4) RegenOutgoingHookToken(hookId string) (*OutgoingWebhook, *Response, error) { - r, err := c.DoAPIPost(c.outgoingWebhookRoute(hookId)+"/regen_token", "") +func (c *Client4) RegenOutgoingHookToken(ctx context.Context, hookId string) (*OutgoingWebhook, *Response, error) { + r, err := c.DoAPIPost(ctx, c.outgoingWebhookRoute(hookId)+"/regen_token", "") if err != nil { return nil, BuildResponse(r), err } @@ -5071,8 +5072,8 @@ func (c *Client4) RegenOutgoingHookToken(hookId string) (*OutgoingWebhook, *Resp } // DeleteOutgoingWebhook delete the outgoing webhook on the system requested by Hook Id. -func (c *Client4) DeleteOutgoingWebhook(hookId string) (*Response, error) { - r, err := c.DoAPIDelete(c.outgoingWebhookRoute(hookId)) +func (c *Client4) DeleteOutgoingWebhook(ctx context.Context, hookId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.outgoingWebhookRoute(hookId)) if err != nil { return BuildResponse(r), err } @@ -5083,8 +5084,8 @@ func (c *Client4) DeleteOutgoingWebhook(hookId string) (*Response, error) { // Preferences Section // GetPreferences returns the user's preferences. -func (c *Client4) GetPreferences(userId string) (Preferences, *Response, error) { - r, err := c.DoAPIGet(c.preferencesRoute(userId), "") +func (c *Client4) GetPreferences(ctx context.Context, userId string) (Preferences, *Response, error) { + r, err := c.DoAPIGet(ctx, c.preferencesRoute(userId), "") if err != nil { return nil, BuildResponse(r), err } @@ -5098,12 +5099,12 @@ func (c *Client4) GetPreferences(userId string) (Preferences, *Response, error) } // UpdatePreferences saves the user's preferences. -func (c *Client4) UpdatePreferences(userId string, preferences Preferences) (*Response, error) { +func (c *Client4) UpdatePreferences(ctx context.Context, userId string, preferences Preferences) (*Response, error) { buf, err := json.Marshal(preferences) if err != nil { return nil, NewAppError("UpdatePreferences", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.preferencesRoute(userId), buf) + r, err := c.DoAPIPutBytes(ctx, c.preferencesRoute(userId), buf) if err != nil { return BuildResponse(r), err } @@ -5112,12 +5113,12 @@ func (c *Client4) UpdatePreferences(userId string, preferences Preferences) (*Re } // DeletePreferences deletes the user's preferences. -func (c *Client4) DeletePreferences(userId string, preferences Preferences) (*Response, error) { +func (c *Client4) DeletePreferences(ctx context.Context, userId string, preferences Preferences) (*Response, error) { buf, err := json.Marshal(preferences) if err != nil { return nil, NewAppError("DeletePreferences", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.preferencesRoute(userId)+"/delete", buf) + r, err := c.DoAPIPostBytes(ctx, c.preferencesRoute(userId)+"/delete", buf) if err != nil { return BuildResponse(r), err } @@ -5126,9 +5127,9 @@ func (c *Client4) DeletePreferences(userId string, preferences Preferences) (*Re } // GetPreferencesByCategory returns the user's preferences from the provided category string. -func (c *Client4) GetPreferencesByCategory(userId string, category string) (Preferences, *Response, error) { +func (c *Client4) GetPreferencesByCategory(ctx context.Context, userId string, category string) (Preferences, *Response, error) { url := fmt.Sprintf(c.preferencesRoute(userId)+"/%s", category) - r, err := c.DoAPIGet(url, "") + r, err := c.DoAPIGet(ctx, url, "") if err != nil { return nil, BuildResponse(r), err } @@ -5141,9 +5142,9 @@ func (c *Client4) GetPreferencesByCategory(userId string, category string) (Pref } // GetPreferenceByCategoryAndName returns the user's preferences from the provided category and preference name string. -func (c *Client4) GetPreferenceByCategoryAndName(userId string, category string, preferenceName string) (*Preference, *Response, error) { +func (c *Client4) GetPreferenceByCategoryAndName(ctx context.Context, userId string, category string, preferenceName string) (*Preference, *Response, error) { url := fmt.Sprintf(c.preferencesRoute(userId)+"/%s/name/%v", category, preferenceName) - r, err := c.DoAPIGet(url, "") + r, err := c.DoAPIGet(ctx, url, "") if err != nil { return nil, BuildResponse(r), err } @@ -5159,8 +5160,8 @@ func (c *Client4) GetPreferenceByCategoryAndName(userId string, category string, // SAML Section // GetSamlMetadata returns metadata for the SAML configuration. -func (c *Client4) GetSamlMetadata() (string, *Response, error) { - r, err := c.DoAPIGet(c.samlRoute()+"/metadata", "") +func (c *Client4) GetSamlMetadata(ctx context.Context) (string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.samlRoute()+"/metadata", "") if err != nil { return "", BuildResponse(r), err } @@ -5197,43 +5198,43 @@ func fileToMultipart(data []byte, filename string) ([]byte, *multipart.Writer, e // UploadSamlIdpCertificate will upload an IDP certificate for SAML and set the config to use it. // The filename parameter is deprecated and ignored: the server will pick a hard-coded filename when writing to disk. -func (c *Client4) UploadSamlIdpCertificate(data []byte, filename string) (*Response, error) { +func (c *Client4) UploadSamlIdpCertificate(ctx context.Context, data []byte, filename string) (*Response, error) { body, writer, err := fileToMultipart(data, filename) if err != nil { return nil, NewAppError("UploadSamlIdpCertificate", "model.client.upload_saml_cert.app_error", nil, "", http.StatusBadRequest).Wrap(err) } - _, resp, err := c.DoUploadFile(c.samlRoute()+"/certificate/idp", body, writer.FormDataContentType()) + _, resp, err := c.DoUploadFile(ctx, c.samlRoute()+"/certificate/idp", body, writer.FormDataContentType()) return resp, err } // UploadSamlPublicCertificate will upload a public certificate for SAML and set the config to use it. // The filename parameter is deprecated and ignored: the server will pick a hard-coded filename when writing to disk. -func (c *Client4) UploadSamlPublicCertificate(data []byte, filename string) (*Response, error) { +func (c *Client4) UploadSamlPublicCertificate(ctx context.Context, data []byte, filename string) (*Response, error) { body, writer, err := fileToMultipart(data, filename) if err != nil { return nil, NewAppError("UploadSamlPublicCertificate", "model.client.upload_saml_cert.app_error", nil, "", http.StatusBadRequest).Wrap(err) } - _, resp, err := c.DoUploadFile(c.samlRoute()+"/certificate/public", body, writer.FormDataContentType()) + _, resp, err := c.DoUploadFile(ctx, c.samlRoute()+"/certificate/public", body, writer.FormDataContentType()) return resp, err } // UploadSamlPrivateCertificate will upload a private key for SAML and set the config to use it. // The filename parameter is deprecated and ignored: the server will pick a hard-coded filename when writing to disk. -func (c *Client4) UploadSamlPrivateCertificate(data []byte, filename string) (*Response, error) { +func (c *Client4) UploadSamlPrivateCertificate(ctx context.Context, data []byte, filename string) (*Response, error) { body, writer, err := fileToMultipart(data, filename) if err != nil { return nil, NewAppError("UploadSamlPrivateCertificate", "model.client.upload_saml_cert.app_error", nil, "", http.StatusBadRequest).Wrap(err) } - _, resp, err := c.DoUploadFile(c.samlRoute()+"/certificate/private", body, writer.FormDataContentType()) + _, resp, err := c.DoUploadFile(ctx, c.samlRoute()+"/certificate/private", body, writer.FormDataContentType()) return resp, err } // DeleteSamlIdpCertificate deletes the SAML IDP certificate from the server and updates the config to not use it and disable SAML. -func (c *Client4) DeleteSamlIdpCertificate() (*Response, error) { - r, err := c.DoAPIDelete(c.samlRoute() + "/certificate/idp") +func (c *Client4) DeleteSamlIdpCertificate(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.samlRoute()+"/certificate/idp") if err != nil { return BuildResponse(r), err } @@ -5242,8 +5243,8 @@ func (c *Client4) DeleteSamlIdpCertificate() (*Response, error) { } // DeleteSamlPublicCertificate deletes the SAML IDP certificate from the server and updates the config to not use it and disable SAML. -func (c *Client4) DeleteSamlPublicCertificate() (*Response, error) { - r, err := c.DoAPIDelete(c.samlRoute() + "/certificate/public") +func (c *Client4) DeleteSamlPublicCertificate(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.samlRoute()+"/certificate/public") if err != nil { return BuildResponse(r), err } @@ -5252,8 +5253,8 @@ func (c *Client4) DeleteSamlPublicCertificate() (*Response, error) { } // DeleteSamlPrivateCertificate deletes the SAML IDP certificate from the server and updates the config to not use it and disable SAML. -func (c *Client4) DeleteSamlPrivateCertificate() (*Response, error) { - r, err := c.DoAPIDelete(c.samlRoute() + "/certificate/private") +func (c *Client4) DeleteSamlPrivateCertificate(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.samlRoute()+"/certificate/private") if err != nil { return BuildResponse(r), err } @@ -5262,8 +5263,8 @@ func (c *Client4) DeleteSamlPrivateCertificate() (*Response, error) { } // GetSamlCertificateStatus returns metadata for the SAML configuration. -func (c *Client4) GetSamlCertificateStatus() (*SamlCertificateStatus, *Response, error) { - r, err := c.DoAPIGet(c.samlRoute()+"/certificate/status", "") +func (c *Client4) GetSamlCertificateStatus(ctx context.Context) (*SamlCertificateStatus, *Response, error) { + r, err := c.DoAPIGet(ctx, c.samlRoute()+"/certificate/status", "") if err != nil { return nil, BuildResponse(r), err } @@ -5276,10 +5277,10 @@ func (c *Client4) GetSamlCertificateStatus() (*SamlCertificateStatus, *Response, return &status, BuildResponse(r), nil } -func (c *Client4) GetSamlMetadataFromIdp(samlMetadataURL string) (*SamlMetadataResponse, *Response, error) { +func (c *Client4) GetSamlMetadataFromIdp(ctx context.Context, samlMetadataURL string) (*SamlMetadataResponse, *Response, error) { requestBody := make(map[string]string) requestBody["saml_metadata_url"] = samlMetadataURL - r, err := c.DoAPIPost(c.samlRoute()+"/metadatafromidp", MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.samlRoute()+"/metadatafromidp", MapToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -5293,7 +5294,7 @@ func (c *Client4) GetSamlMetadataFromIdp(samlMetadataURL string) (*SamlMetadataR } // ResetSamlAuthDataToEmail resets the AuthData field of SAML users to their Email. -func (c *Client4) ResetSamlAuthDataToEmail(includeDeleted bool, dryRun bool, userIDs []string) (int64, *Response, error) { +func (c *Client4) ResetSamlAuthDataToEmail(ctx context.Context, includeDeleted bool, dryRun bool, userIDs []string) (int64, *Response, error) { params := map[string]any{ "include_deleted": includeDeleted, "dry_run": dryRun, @@ -5303,7 +5304,7 @@ func (c *Client4) ResetSamlAuthDataToEmail(includeDeleted bool, dryRun bool, use if err != nil { return 0, nil, NewAppError("ResetSamlAuthDataToEmail", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.samlRoute()+"/reset_auth_data", b) + r, err := c.DoAPIPostBytes(ctx, c.samlRoute()+"/reset_auth_data", b) if err != nil { return 0, BuildResponse(r), err } @@ -5319,12 +5320,12 @@ func (c *Client4) ResetSamlAuthDataToEmail(includeDeleted bool, dryRun bool, use // Compliance Section // CreateComplianceReport creates an incoming webhook for a channel. -func (c *Client4) CreateComplianceReport(report *Compliance) (*Compliance, *Response, error) { +func (c *Client4) CreateComplianceReport(ctx context.Context, report *Compliance) (*Compliance, *Response, error) { buf, err := json.Marshal(report) if err != nil { return nil, nil, NewAppError("CreateComplianceReport", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.complianceReportsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.complianceReportsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -5337,9 +5338,9 @@ func (c *Client4) CreateComplianceReport(report *Compliance) (*Compliance, *Resp } // GetComplianceReports returns list of compliance reports. -func (c *Client4) GetComplianceReports(page, perPage int) (Compliances, *Response, error) { +func (c *Client4) GetComplianceReports(ctx context.Context, page, perPage int) (Compliances, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.complianceReportsRoute()+query, "") + r, err := c.DoAPIGet(ctx, c.complianceReportsRoute()+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -5352,8 +5353,8 @@ func (c *Client4) GetComplianceReports(page, perPage int) (Compliances, *Respons } // GetComplianceReport returns a compliance report. -func (c *Client4) GetComplianceReport(reportId string) (*Compliance, *Response, error) { - r, err := c.DoAPIGet(c.complianceReportRoute(reportId), "") +func (c *Client4) GetComplianceReport(ctx context.Context, reportId string) (*Compliance, *Response, error) { + r, err := c.DoAPIGet(ctx, c.complianceReportRoute(reportId), "") if err != nil { return nil, BuildResponse(r), err } @@ -5366,7 +5367,7 @@ func (c *Client4) GetComplianceReport(reportId string) (*Compliance, *Response, } // DownloadComplianceReport returns a full compliance report as a file. -func (c *Client4) DownloadComplianceReport(reportId string) ([]byte, *Response, error) { +func (c *Client4) DownloadComplianceReport(ctx context.Context, reportId string) ([]byte, *Response, error) { rq, err := http.NewRequest("GET", c.APIURL+c.complianceReportDownloadRoute(reportId), nil) if err != nil { return nil, nil, err @@ -5397,8 +5398,8 @@ func (c *Client4) DownloadComplianceReport(reportId string) ([]byte, *Response, // Cluster Section // GetClusterStatus returns the status of all the configured cluster nodes. -func (c *Client4) GetClusterStatus() ([]*ClusterInfo, *Response, error) { - r, err := c.DoAPIGet(c.clusterRoute()+"/status", "") +func (c *Client4) GetClusterStatus(ctx context.Context) ([]*ClusterInfo, *Response, error) { + r, err := c.DoAPIGet(ctx, c.clusterRoute()+"/status", "") if err != nil { return nil, BuildResponse(r), err } @@ -5415,14 +5416,14 @@ func (c *Client4) GetClusterStatus() ([]*ClusterInfo, *Response, error) { // SyncLdap will force a sync with the configured LDAP server. // If includeRemovedMembers is true, then group members who left or were removed from a // synced team/channel will be re-joined; otherwise, they will be excluded. -func (c *Client4) SyncLdap(includeRemovedMembers bool) (*Response, error) { +func (c *Client4) SyncLdap(ctx context.Context, includeRemovedMembers bool) (*Response, error) { reqBody, err := json.Marshal(map[string]any{ "include_removed_members": includeRemovedMembers, }) if err != nil { return nil, NewAppError("SyncLdap", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.ldapRoute()+"/sync", reqBody) + r, err := c.DoAPIPostBytes(ctx, c.ldapRoute()+"/sync", reqBody) if err != nil { return BuildResponse(r), err } @@ -5432,8 +5433,8 @@ func (c *Client4) SyncLdap(includeRemovedMembers bool) (*Response, error) { // TestLdap will attempt to connect to the configured LDAP server and return OK if configured // correctly. -func (c *Client4) TestLdap() (*Response, error) { - r, err := c.DoAPIPost(c.ldapRoute()+"/test", "") +func (c *Client4) TestLdap(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.ldapRoute()+"/test", "") if err != nil { return BuildResponse(r), err } @@ -5442,10 +5443,10 @@ func (c *Client4) TestLdap() (*Response, error) { } // GetLdapGroups retrieves the immediate child groups of the given parent group. -func (c *Client4) GetLdapGroups() ([]*Group, *Response, error) { +func (c *Client4) GetLdapGroups(ctx context.Context) ([]*Group, *Response, error) { path := fmt.Sprintf("%s/groups", c.ldapRoute()) - r, err := c.DoAPIGet(path, "") + r, err := c.DoAPIGet(ctx, path, "") if err != nil { return nil, BuildResponse(r), err } @@ -5466,10 +5467,10 @@ func (c *Client4) GetLdapGroups() ([]*Group, *Response, error) { } // LinkLdapGroup creates or undeletes a Mattermost group and associates it to the given LDAP group DN. -func (c *Client4) LinkLdapGroup(dn string) (*Group, *Response, error) { +func (c *Client4) LinkLdapGroup(ctx context.Context, dn string) (*Group, *Response, error) { path := fmt.Sprintf("%s/groups/%s/link", c.ldapRoute(), dn) - r, err := c.DoAPIPost(path, "") + r, err := c.DoAPIPost(ctx, path, "") if err != nil { return nil, BuildResponse(r), err } @@ -5483,10 +5484,10 @@ func (c *Client4) LinkLdapGroup(dn string) (*Group, *Response, error) { } // UnlinkLdapGroup deletes the Mattermost group associated with the given LDAP group DN. -func (c *Client4) UnlinkLdapGroup(dn string) (*Group, *Response, error) { +func (c *Client4) UnlinkLdapGroup(ctx context.Context, dn string) (*Group, *Response, error) { path := fmt.Sprintf("%s/groups/%s/link", c.ldapRoute(), dn) - r, err := c.DoAPIDelete(path) + r, err := c.DoAPIDelete(ctx, path) if err != nil { return nil, BuildResponse(r), err } @@ -5500,8 +5501,8 @@ func (c *Client4) UnlinkLdapGroup(dn string) (*Group, *Response, error) { } // MigrateIdLdap migrates the LDAP enabled users to given attribute -func (c *Client4) MigrateIdLdap(toAttribute string) (*Response, error) { - r, err := c.DoAPIPost(c.ldapRoute()+"/migrateid", MapToJSON(map[string]string{ +func (c *Client4) MigrateIdLdap(ctx context.Context, toAttribute string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.ldapRoute()+"/migrateid", MapToJSON(map[string]string{ "toAttribute": toAttribute, })) if err != nil { @@ -5512,12 +5513,12 @@ func (c *Client4) MigrateIdLdap(toAttribute string) (*Response, error) { } // GetGroupsByChannel retrieves the Mattermost Groups associated with a given channel -func (c *Client4) GetGroupsByChannel(channelId string, opts GroupSearchOpts) ([]*GroupWithSchemeAdmin, int, *Response, error) { +func (c *Client4) GetGroupsByChannel(ctx context.Context, channelId string, opts GroupSearchOpts) ([]*GroupWithSchemeAdmin, int, *Response, error) { path := fmt.Sprintf("%s/groups?q=%v&include_member_count=%v&filter_allow_reference=%v", c.channelRoute(channelId), opts.Q, opts.IncludeMemberCount, opts.FilterAllowReference) if opts.PageOpts != nil { path = fmt.Sprintf("%s&page=%v&per_page=%v", path, opts.PageOpts.Page, opts.PageOpts.PerPage) } - r, err := c.DoAPIGet(path, "") + r, err := c.DoAPIGet(ctx, path, "") if err != nil { return nil, 0, BuildResponse(r), err } @@ -5535,12 +5536,12 @@ func (c *Client4) GetGroupsByChannel(channelId string, opts GroupSearchOpts) ([] } // GetGroupsByTeam retrieves the Mattermost Groups associated with a given team -func (c *Client4) GetGroupsByTeam(teamId string, opts GroupSearchOpts) ([]*GroupWithSchemeAdmin, int, *Response, error) { +func (c *Client4) GetGroupsByTeam(ctx context.Context, teamId string, opts GroupSearchOpts) ([]*GroupWithSchemeAdmin, int, *Response, error) { path := fmt.Sprintf("%s/groups?q=%v&include_member_count=%v&filter_allow_reference=%v", c.teamRoute(teamId), opts.Q, opts.IncludeMemberCount, opts.FilterAllowReference) if opts.PageOpts != nil { path = fmt.Sprintf("%s&page=%v&per_page=%v", path, opts.PageOpts.Page, opts.PageOpts.PerPage) } - r, err := c.DoAPIGet(path, "") + r, err := c.DoAPIGet(ctx, path, "") if err != nil { return nil, 0, BuildResponse(r), err } @@ -5558,12 +5559,12 @@ func (c *Client4) GetGroupsByTeam(teamId string, opts GroupSearchOpts) ([]*Group } // GetGroupsAssociatedToChannelsByTeam retrieves the Mattermost Groups associated with channels in a given team -func (c *Client4) GetGroupsAssociatedToChannelsByTeam(teamId string, opts GroupSearchOpts) (map[string][]*GroupWithSchemeAdmin, *Response, error) { +func (c *Client4) GetGroupsAssociatedToChannelsByTeam(ctx context.Context, teamId string, opts GroupSearchOpts) (map[string][]*GroupWithSchemeAdmin, *Response, error) { path := fmt.Sprintf("%s/groups_by_channels?q=%v&filter_allow_reference=%v", c.teamRoute(teamId), opts.Q, opts.FilterAllowReference) if opts.PageOpts != nil { path = fmt.Sprintf("%s&page=%v&per_page=%v", path, opts.PageOpts.Page, opts.PageOpts.PerPage) } - r, err := c.DoAPIGet(path, "") + r, err := c.DoAPIGet(ctx, path, "") if err != nil { return nil, BuildResponse(r), err } @@ -5580,7 +5581,7 @@ func (c *Client4) GetGroupsAssociatedToChannelsByTeam(teamId string, opts GroupS } // GetGroups retrieves Mattermost Groups -func (c *Client4) GetGroups(opts GroupSearchOpts) ([]*Group, *Response, error) { +func (c *Client4) GetGroups(ctx context.Context, opts GroupSearchOpts) ([]*Group, *Response, error) { path := fmt.Sprintf( "%s?include_member_count=%v¬_associated_to_team=%v¬_associated_to_channel=%v&filter_allow_reference=%v&q=%v&filter_parent_team_permitted=%v&group_source=%v&include_channel_member_count=%v&include_timezones=%v", c.groupsRoute(), @@ -5600,7 +5601,7 @@ func (c *Client4) GetGroups(opts GroupSearchOpts) ([]*Group, *Response, error) { if opts.PageOpts != nil { path = fmt.Sprintf("%s&page=%v&per_page=%v", path, opts.PageOpts.Page, opts.PageOpts.PerPage) } - r, err := c.DoAPIGet(path, "") + r, err := c.DoAPIGet(ctx, path, "") if err != nil { return nil, BuildResponse(r), err } @@ -5614,14 +5615,14 @@ func (c *Client4) GetGroups(opts GroupSearchOpts) ([]*Group, *Response, error) { } // GetGroupsByUserId retrieves Mattermost Groups for a user -func (c *Client4) GetGroupsByUserId(userId string) ([]*Group, *Response, error) { +func (c *Client4) GetGroupsByUserId(ctx context.Context, userId string) ([]*Group, *Response, error) { path := fmt.Sprintf( "%s/%v/groups", c.usersRoute(), userId, ) - r, err := c.DoAPIGet(path, "") + r, err := c.DoAPIGet(ctx, path, "") if err != nil { return nil, BuildResponse(r), err } @@ -5633,8 +5634,8 @@ func (c *Client4) GetGroupsByUserId(userId string) ([]*Group, *Response, error) return list, BuildResponse(r), nil } -func (c *Client4) MigrateAuthToLdap(fromAuthService string, matchField string, force bool) (*Response, error) { - r, err := c.DoAPIPost(c.usersRoute()+"/migrate_auth/ldap", StringInterfaceToJSON(map[string]any{ +func (c *Client4) MigrateAuthToLdap(ctx context.Context, fromAuthService string, matchField string, force bool) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/migrate_auth/ldap", StringInterfaceToJSON(map[string]any{ "from": fromAuthService, "force": force, "match_field": matchField, @@ -5646,8 +5647,8 @@ func (c *Client4) MigrateAuthToLdap(fromAuthService string, matchField string, f return BuildResponse(r), nil } -func (c *Client4) MigrateAuthToSaml(fromAuthService string, usersMap map[string]string, auto bool) (*Response, error) { - r, err := c.DoAPIPost(c.usersRoute()+"/migrate_auth/saml", StringInterfaceToJSON(map[string]any{ +func (c *Client4) MigrateAuthToSaml(ctx context.Context, fromAuthService string, usersMap map[string]string, auto bool) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.usersRoute()+"/migrate_auth/saml", StringInterfaceToJSON(map[string]any{ "from": fromAuthService, "auto": auto, "matches": usersMap, @@ -5660,30 +5661,30 @@ func (c *Client4) MigrateAuthToSaml(fromAuthService string, usersMap map[string] } // UploadLdapPublicCertificate will upload a public certificate for LDAP and set the config to use it. -func (c *Client4) UploadLdapPublicCertificate(data []byte) (*Response, error) { +func (c *Client4) UploadLdapPublicCertificate(ctx context.Context, data []byte) (*Response, error) { body, writer, err := fileToMultipart(data, LdapPublicCertificateName) if err != nil { return nil, NewAppError("UploadLdapPublicCertificate", "model.client.upload_ldap_cert.app_error", nil, "", http.StatusBadRequest).Wrap(err) } - _, resp, err := c.DoUploadFile(c.ldapRoute()+"/certificate/public", body, writer.FormDataContentType()) + _, resp, err := c.DoUploadFile(ctx, c.ldapRoute()+"/certificate/public", body, writer.FormDataContentType()) return resp, err } // UploadLdapPrivateCertificate will upload a private key for LDAP and set the config to use it. -func (c *Client4) UploadLdapPrivateCertificate(data []byte) (*Response, error) { +func (c *Client4) UploadLdapPrivateCertificate(ctx context.Context, data []byte) (*Response, error) { body, writer, err := fileToMultipart(data, LdapPrivateKeyName) if err != nil { return nil, NewAppError("UploadLdapPrivateCertificate", "model.client.upload_Ldap_cert.app_error", nil, "", http.StatusBadRequest).Wrap(err) } - _, resp, err := c.DoUploadFile(c.ldapRoute()+"/certificate/private", body, writer.FormDataContentType()) + _, resp, err := c.DoUploadFile(ctx, c.ldapRoute()+"/certificate/private", body, writer.FormDataContentType()) return resp, err } // DeleteLdapPublicCertificate deletes the LDAP IDP certificate from the server and updates the config to not use it and disable LDAP. -func (c *Client4) DeleteLdapPublicCertificate() (*Response, error) { - r, err := c.DoAPIDelete(c.ldapRoute() + "/certificate/public") +func (c *Client4) DeleteLdapPublicCertificate(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.ldapRoute()+"/certificate/public") if err != nil { return BuildResponse(r), err } @@ -5692,8 +5693,8 @@ func (c *Client4) DeleteLdapPublicCertificate() (*Response, error) { } // DeleteLDAPPrivateCertificate deletes the LDAP IDP certificate from the server and updates the config to not use it and disable LDAP. -func (c *Client4) DeleteLdapPrivateCertificate() (*Response, error) { - r, err := c.DoAPIDelete(c.ldapRoute() + "/certificate/private") +func (c *Client4) DeleteLdapPrivateCertificate(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.ldapRoute()+"/certificate/private") if err != nil { return BuildResponse(r), err } @@ -5704,9 +5705,9 @@ func (c *Client4) DeleteLdapPrivateCertificate() (*Response, error) { // Audits Section // GetAudits returns a list of audits for the whole system. -func (c *Client4) GetAudits(page int, perPage int, etag string) (Audits, *Response, error) { +func (c *Client4) GetAudits(ctx context.Context, page int, perPage int, etag string) (Audits, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet("/audits"+query, etag) + r, err := c.DoAPIGet(ctx, "/audits"+query, etag) if err != nil { return nil, BuildResponse(r), err } @@ -5723,8 +5724,8 @@ func (c *Client4) GetAudits(page int, perPage int, etag string) (Audits, *Respon // Brand Section // GetBrandImage retrieves the previously uploaded brand image. -func (c *Client4) GetBrandImage() ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.brandRoute()+"/image", "") +func (c *Client4) GetBrandImage(ctx context.Context) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.brandRoute()+"/image", "") if err != nil { return nil, BuildResponse(r), err } @@ -5743,8 +5744,8 @@ func (c *Client4) GetBrandImage() ([]byte, *Response, error) { } // DeleteBrandImage deletes the brand image for the system. -func (c *Client4) DeleteBrandImage() (*Response, error) { - r, err := c.DoAPIDelete(c.brandRoute() + "/image") +func (c *Client4) DeleteBrandImage(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.brandRoute()+"/image") if err != nil { return BuildResponse(r), err } @@ -5752,7 +5753,7 @@ func (c *Client4) DeleteBrandImage() (*Response, error) { } // UploadBrandImage sets the brand image for the system. -func (c *Client4) UploadBrandImage(data []byte) (*Response, error) { +func (c *Client4) UploadBrandImage(ctx context.Context, data []byte) (*Response, error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) @@ -5795,9 +5796,9 @@ func (c *Client4) UploadBrandImage(data []byte) (*Response, error) { // Logs Section // GetLogs page of logs as a string array. -func (c *Client4) GetLogs(page, perPage int) ([]string, *Response, error) { +func (c *Client4) GetLogs(ctx context.Context, page, perPage int) ([]string, *Response, error) { query := fmt.Sprintf("?page=%v&logs_per_page=%v", page, perPage) - r, err := c.DoAPIGet("/logs"+query, "") + r, err := c.DoAPIGet(ctx, "/logs"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -5808,8 +5809,8 @@ func (c *Client4) GetLogs(page, perPage int) ([]string, *Response, error) { // PostLog is a convenience Web Service call so clients can log messages into // the server-side logs. For example we typically log javascript error messages // into the server-side. It returns the log message if the logging was successful. -func (c *Client4) PostLog(message map[string]string) (map[string]string, *Response, error) { - r, err := c.DoAPIPost("/logs", MapToJSON(message)) +func (c *Client4) PostLog(ctx context.Context, message map[string]string) (map[string]string, *Response, error) { + r, err := c.DoAPIPost(ctx, "/logs", MapToJSON(message)) if err != nil { return nil, BuildResponse(r), err } @@ -5820,12 +5821,12 @@ func (c *Client4) PostLog(message map[string]string) (map[string]string, *Respon // OAuth Section // CreateOAuthApp will register a new OAuth 2.0 client application with Mattermost acting as an OAuth 2.0 service provider. -func (c *Client4) CreateOAuthApp(app *OAuthApp) (*OAuthApp, *Response, error) { +func (c *Client4) CreateOAuthApp(ctx context.Context, app *OAuthApp) (*OAuthApp, *Response, error) { buf, err := json.Marshal(app) if err != nil { return nil, nil, NewAppError("CreateOAuthApp", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.oAuthAppsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.oAuthAppsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -5839,12 +5840,12 @@ func (c *Client4) CreateOAuthApp(app *OAuthApp) (*OAuthApp, *Response, error) { } // UpdateOAuthApp updates a page of registered OAuth 2.0 client applications with Mattermost acting as an OAuth 2.0 service provider. -func (c *Client4) UpdateOAuthApp(app *OAuthApp) (*OAuthApp, *Response, error) { +func (c *Client4) UpdateOAuthApp(ctx context.Context, app *OAuthApp) (*OAuthApp, *Response, error) { buf, err := json.Marshal(app) if err != nil { return nil, nil, NewAppError("UpdateOAuthApp", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.oAuthAppRoute(app.Id), buf) + r, err := c.DoAPIPutBytes(ctx, c.oAuthAppRoute(app.Id), buf) if err != nil { return nil, BuildResponse(r), err } @@ -5857,9 +5858,9 @@ func (c *Client4) UpdateOAuthApp(app *OAuthApp) (*OAuthApp, *Response, error) { } // GetOAuthApps gets a page of registered OAuth 2.0 client applications with Mattermost acting as an OAuth 2.0 service provider. -func (c *Client4) GetOAuthApps(page, perPage int) ([]*OAuthApp, *Response, error) { +func (c *Client4) GetOAuthApps(ctx context.Context, page, perPage int) ([]*OAuthApp, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.oAuthAppsRoute()+query, "") + r, err := c.DoAPIGet(ctx, c.oAuthAppsRoute()+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -5872,8 +5873,8 @@ func (c *Client4) GetOAuthApps(page, perPage int) ([]*OAuthApp, *Response, error } // GetOAuthApp gets a registered OAuth 2.0 client application with Mattermost acting as an OAuth 2.0 service provider. -func (c *Client4) GetOAuthApp(appId string) (*OAuthApp, *Response, error) { - r, err := c.DoAPIGet(c.oAuthAppRoute(appId), "") +func (c *Client4) GetOAuthApp(ctx context.Context, appId string) (*OAuthApp, *Response, error) { + r, err := c.DoAPIGet(ctx, c.oAuthAppRoute(appId), "") if err != nil { return nil, BuildResponse(r), err } @@ -5886,8 +5887,8 @@ func (c *Client4) GetOAuthApp(appId string) (*OAuthApp, *Response, error) { } // GetOAuthAppInfo gets a sanitized version of a registered OAuth 2.0 client application with Mattermost acting as an OAuth 2.0 service provider. -func (c *Client4) GetOAuthAppInfo(appId string) (*OAuthApp, *Response, error) { - r, err := c.DoAPIGet(c.oAuthAppRoute(appId)+"/info", "") +func (c *Client4) GetOAuthAppInfo(ctx context.Context, appId string) (*OAuthApp, *Response, error) { + r, err := c.DoAPIGet(ctx, c.oAuthAppRoute(appId)+"/info", "") if err != nil { return nil, BuildResponse(r), err } @@ -5900,8 +5901,8 @@ func (c *Client4) GetOAuthAppInfo(appId string) (*OAuthApp, *Response, error) { } // DeleteOAuthApp deletes a registered OAuth 2.0 client application. -func (c *Client4) DeleteOAuthApp(appId string) (*Response, error) { - r, err := c.DoAPIDelete(c.oAuthAppRoute(appId)) +func (c *Client4) DeleteOAuthApp(ctx context.Context, appId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.oAuthAppRoute(appId)) if err != nil { return BuildResponse(r), err } @@ -5910,8 +5911,8 @@ func (c *Client4) DeleteOAuthApp(appId string) (*Response, error) { } // RegenerateOAuthAppSecret regenerates the client secret for a registered OAuth 2.0 client application. -func (c *Client4) RegenerateOAuthAppSecret(appId string) (*OAuthApp, *Response, error) { - r, err := c.DoAPIPost(c.oAuthAppRoute(appId)+"/regen_secret", "") +func (c *Client4) RegenerateOAuthAppSecret(ctx context.Context, appId string) (*OAuthApp, *Response, error) { + r, err := c.DoAPIPost(ctx, c.oAuthAppRoute(appId)+"/regen_secret", "") if err != nil { return nil, BuildResponse(r), err } @@ -5924,9 +5925,9 @@ func (c *Client4) RegenerateOAuthAppSecret(appId string) (*OAuthApp, *Response, } // GetAuthorizedOAuthAppsForUser gets a page of OAuth 2.0 client applications the user has authorized to use access their account. -func (c *Client4) GetAuthorizedOAuthAppsForUser(userId string, page, perPage int) ([]*OAuthApp, *Response, error) { +func (c *Client4) GetAuthorizedOAuthAppsForUser(ctx context.Context, userId string, page, perPage int) ([]*OAuthApp, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.userRoute(userId)+"/oauth/apps/authorized"+query, "") + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/oauth/apps/authorized"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -5939,12 +5940,12 @@ func (c *Client4) GetAuthorizedOAuthAppsForUser(userId string, page, perPage int } // AuthorizeOAuthApp will authorize an OAuth 2.0 client application to access a user's account and provide a redirect link to follow. -func (c *Client4) AuthorizeOAuthApp(authRequest *AuthorizeRequest) (string, *Response, error) { +func (c *Client4) AuthorizeOAuthApp(ctx context.Context, authRequest *AuthorizeRequest) (string, *Response, error) { buf, err := json.Marshal(authRequest) if err != nil { return "", BuildResponse(nil), NewAppError("AuthorizeOAuthApp", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIRequestBytes(http.MethodPost, c.URL+"/oauth/authorize", buf, "") + r, err := c.DoAPIRequestBytes(ctx, http.MethodPost, c.URL+"/oauth/authorize", buf, "") if err != nil { return "", BuildResponse(r), err } @@ -5953,9 +5954,9 @@ func (c *Client4) AuthorizeOAuthApp(authRequest *AuthorizeRequest) (string, *Res } // DeauthorizeOAuthApp will deauthorize an OAuth 2.0 client application from accessing a user's account. -func (c *Client4) DeauthorizeOAuthApp(appId string) (*Response, error) { +func (c *Client4) DeauthorizeOAuthApp(ctx context.Context, appId string) (*Response, error) { requestData := map[string]string{"client_id": appId} - r, err := c.DoAPIRequest(http.MethodPost, c.URL+"/oauth/deauthorize", MapToJSON(requestData), "") + r, err := c.DoAPIRequest(ctx, http.MethodPost, c.URL+"/oauth/deauthorize", MapToJSON(requestData), "") if err != nil { return BuildResponse(r), err } @@ -5964,7 +5965,7 @@ func (c *Client4) DeauthorizeOAuthApp(appId string) (*Response, error) { } // GetOAuthAccessToken is a test helper function for the OAuth access token endpoint. -func (c *Client4) GetOAuthAccessToken(data url.Values) (*AccessResponse, *Response, error) { +func (c *Client4) GetOAuthAccessToken(ctx context.Context, data url.Values) (*AccessResponse, *Response, error) { url := c.URL + "/oauth/access_token" rq, err := http.NewRequest(http.MethodPost, url, strings.NewReader(data.Encode())) if err != nil { @@ -5999,8 +6000,8 @@ func (c *Client4) GetOAuthAccessToken(data url.Values) (*AccessResponse, *Respon // TestElasticsearch will attempt to connect to the configured Elasticsearch server and return OK if configured. // correctly. -func (c *Client4) TestElasticsearch() (*Response, error) { - r, err := c.DoAPIPost(c.elasticsearchRoute()+"/test", "") +func (c *Client4) TestElasticsearch(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.elasticsearchRoute()+"/test", "") if err != nil { return BuildResponse(r), err } @@ -6009,8 +6010,8 @@ func (c *Client4) TestElasticsearch() (*Response, error) { } // PurgeElasticsearchIndexes immediately deletes all Elasticsearch indexes. -func (c *Client4) PurgeElasticsearchIndexes() (*Response, error) { - r, err := c.DoAPIPost(c.elasticsearchRoute()+"/purge_indexes", "") +func (c *Client4) PurgeElasticsearchIndexes(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.elasticsearchRoute()+"/purge_indexes", "") if err != nil { return BuildResponse(r), err } @@ -6021,8 +6022,8 @@ func (c *Client4) PurgeElasticsearchIndexes() (*Response, error) { // Bleve Section // PurgeBleveIndexes immediately deletes all Bleve indexes. -func (c *Client4) PurgeBleveIndexes() (*Response, error) { - r, err := c.DoAPIPost(c.bleveRoute()+"/purge_indexes", "") +func (c *Client4) PurgeBleveIndexes(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.bleveRoute()+"/purge_indexes", "") if err != nil { return BuildResponse(r), err } @@ -6033,8 +6034,8 @@ func (c *Client4) PurgeBleveIndexes() (*Response, error) { // Data Retention Section // GetDataRetentionPolicy will get the current global data retention policy details. -func (c *Client4) GetDataRetentionPolicy() (*GlobalRetentionPolicy, *Response, error) { - r, err := c.DoAPIGet(c.dataRetentionRoute()+"/policy", "") +func (c *Client4) GetDataRetentionPolicy(ctx context.Context) (*GlobalRetentionPolicy, *Response, error) { + r, err := c.DoAPIGet(ctx, c.dataRetentionRoute()+"/policy", "") if err != nil { return nil, BuildResponse(r), err } @@ -6047,8 +6048,8 @@ func (c *Client4) GetDataRetentionPolicy() (*GlobalRetentionPolicy, *Response, e } // GetDataRetentionPolicyByID will get the details for the granular data retention policy with the specified ID. -func (c *Client4) GetDataRetentionPolicyByID(policyID string) (*RetentionPolicyWithTeamAndChannelCounts, *Response, error) { - r, err := c.DoAPIGet(c.dataRetentionPolicyRoute(policyID), "") +func (c *Client4) GetDataRetentionPolicyByID(ctx context.Context, policyID string) (*RetentionPolicyWithTeamAndChannelCounts, *Response, error) { + r, err := c.DoAPIGet(ctx, c.dataRetentionPolicyRoute(policyID), "") if err != nil { return nil, BuildResponse(r), err } @@ -6062,11 +6063,11 @@ func (c *Client4) GetDataRetentionPolicyByID(policyID string) (*RetentionPolicyW } // GetDataRetentionPoliciesCount will get the total number of granular data retention policies. -func (c *Client4) GetDataRetentionPoliciesCount() (int64, *Response, error) { +func (c *Client4) GetDataRetentionPoliciesCount(ctx context.Context) (int64, *Response, error) { type CountBody struct { TotalCount int64 `json:"total_count"` } - r, err := c.DoAPIGet(c.dataRetentionRoute()+"/policies_count", "") + r, err := c.DoAPIGet(ctx, c.dataRetentionRoute()+"/policies_count", "") if err != nil { return 0, BuildResponse(r), err } @@ -6079,9 +6080,9 @@ func (c *Client4) GetDataRetentionPoliciesCount() (int64, *Response, error) { } // GetDataRetentionPolicies will get the current granular data retention policies' details. -func (c *Client4) GetDataRetentionPolicies(page, perPage int) (*RetentionPolicyWithTeamAndChannelCountsList, *Response, error) { +func (c *Client4) GetDataRetentionPolicies(ctx context.Context, page, perPage int) (*RetentionPolicyWithTeamAndChannelCountsList, *Response, error) { query := fmt.Sprintf("?page=%d&per_page=%d", page, perPage) - r, err := c.DoAPIGet(c.dataRetentionRoute()+"/policies"+query, "") + r, err := c.DoAPIGet(ctx, c.dataRetentionRoute()+"/policies"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6096,12 +6097,12 @@ func (c *Client4) GetDataRetentionPolicies(page, perPage int) (*RetentionPolicyW // CreateDataRetentionPolicy will create a new granular data retention policy which will be applied to // the specified teams and channels. The Id field of `policy` must be empty. -func (c *Client4) CreateDataRetentionPolicy(policy *RetentionPolicyWithTeamAndChannelIDs) (*RetentionPolicyWithTeamAndChannelCounts, *Response, error) { +func (c *Client4) CreateDataRetentionPolicy(ctx context.Context, policy *RetentionPolicyWithTeamAndChannelIDs) (*RetentionPolicyWithTeamAndChannelCounts, *Response, error) { policyJSON, err := json.Marshal(policy) if err != nil { return nil, nil, NewAppError("CreateDataRetentionPolicy", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.dataRetentionRoute()+"/policies", policyJSON) + r, err := c.DoAPIPostBytes(ctx, c.dataRetentionRoute()+"/policies", policyJSON) if err != nil { return nil, BuildResponse(r), err } @@ -6114,8 +6115,8 @@ func (c *Client4) CreateDataRetentionPolicy(policy *RetentionPolicyWithTeamAndCh } // DeleteDataRetentionPolicy will delete the granular data retention policy with the specified ID. -func (c *Client4) DeleteDataRetentionPolicy(policyID string) (*Response, error) { - r, err := c.DoAPIDelete(c.dataRetentionPolicyRoute(policyID)) +func (c *Client4) DeleteDataRetentionPolicy(ctx context.Context, policyID string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.dataRetentionPolicyRoute(policyID)) if err != nil { return BuildResponse(r), err } @@ -6125,12 +6126,12 @@ func (c *Client4) DeleteDataRetentionPolicy(policyID string) (*Response, error) // PatchDataRetentionPolicy will patch the granular data retention policy with the specified ID. // The Id field of `patch` must be non-empty. -func (c *Client4) PatchDataRetentionPolicy(patch *RetentionPolicyWithTeamAndChannelIDs) (*RetentionPolicyWithTeamAndChannelCounts, *Response, error) { +func (c *Client4) PatchDataRetentionPolicy(ctx context.Context, patch *RetentionPolicyWithTeamAndChannelIDs) (*RetentionPolicyWithTeamAndChannelCounts, *Response, error) { patchJSON, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchDataRetentionPolicy", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPatchBytes(c.dataRetentionPolicyRoute(patch.ID), patchJSON) + r, err := c.DoAPIPatchBytes(ctx, c.dataRetentionPolicyRoute(patch.ID), patchJSON) if err != nil { return nil, BuildResponse(r), err } @@ -6143,9 +6144,9 @@ func (c *Client4) PatchDataRetentionPolicy(patch *RetentionPolicyWithTeamAndChan } // GetTeamsForRetentionPolicy will get the teams to which the specified policy is currently applied. -func (c *Client4) GetTeamsForRetentionPolicy(policyID string, page, perPage int) (*TeamsWithCount, *Response, error) { +func (c *Client4) GetTeamsForRetentionPolicy(ctx context.Context, policyID string, page, perPage int) (*TeamsWithCount, *Response, error) { query := fmt.Sprintf("?page=%d&per_page=%d", page, perPage) - r, err := c.DoAPIGet(c.dataRetentionPolicyRoute(policyID)+"/teams"+query, "") + r, err := c.DoAPIGet(ctx, c.dataRetentionPolicyRoute(policyID)+"/teams"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6158,12 +6159,12 @@ func (c *Client4) GetTeamsForRetentionPolicy(policyID string, page, perPage int) } // SearchTeamsForRetentionPolicy will search the teams to which the specified policy is currently applied. -func (c *Client4) SearchTeamsForRetentionPolicy(policyID string, term string) ([]*Team, *Response, error) { +func (c *Client4) SearchTeamsForRetentionPolicy(ctx context.Context, policyID string, term string) ([]*Team, *Response, error) { body, err := json.Marshal(map[string]any{"term": term}) if err != nil { return nil, nil, NewAppError("SearchTeamsForRetentionPolicy", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.dataRetentionPolicyRoute(policyID)+"/teams/search", body) + r, err := c.DoAPIPostBytes(ctx, c.dataRetentionPolicyRoute(policyID)+"/teams/search", body) if err != nil { return nil, BuildResponse(r), err } @@ -6177,12 +6178,12 @@ func (c *Client4) SearchTeamsForRetentionPolicy(policyID string, term string) ([ // AddTeamsToRetentionPolicy will add the specified teams to the granular data retention policy // with the specified ID. -func (c *Client4) AddTeamsToRetentionPolicy(policyID string, teamIDs []string) (*Response, error) { +func (c *Client4) AddTeamsToRetentionPolicy(ctx context.Context, policyID string, teamIDs []string) (*Response, error) { body, err := json.Marshal(teamIDs) if err != nil { return nil, NewAppError("AddTeamsToRetentionPolicy", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.dataRetentionPolicyRoute(policyID)+"/teams", body) + r, err := c.DoAPIPostBytes(ctx, c.dataRetentionPolicyRoute(policyID)+"/teams", body) if err != nil { return BuildResponse(r), err } @@ -6192,12 +6193,12 @@ func (c *Client4) AddTeamsToRetentionPolicy(policyID string, teamIDs []string) ( // RemoveTeamsFromRetentionPolicy will remove the specified teams from the granular data retention policy // with the specified ID. -func (c *Client4) RemoveTeamsFromRetentionPolicy(policyID string, teamIDs []string) (*Response, error) { +func (c *Client4) RemoveTeamsFromRetentionPolicy(ctx context.Context, policyID string, teamIDs []string) (*Response, error) { body, err := json.Marshal(teamIDs) if err != nil { return nil, NewAppError("RemoveTeamsFromRetentionPolicy", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIDeleteBytes(c.dataRetentionPolicyRoute(policyID)+"/teams", body) + r, err := c.DoAPIDeleteBytes(ctx, c.dataRetentionPolicyRoute(policyID)+"/teams", body) if err != nil { return BuildResponse(r), err } @@ -6206,9 +6207,9 @@ func (c *Client4) RemoveTeamsFromRetentionPolicy(policyID string, teamIDs []stri } // GetChannelsForRetentionPolicy will get the channels to which the specified policy is currently applied. -func (c *Client4) GetChannelsForRetentionPolicy(policyID string, page, perPage int) (*ChannelsWithCount, *Response, error) { +func (c *Client4) GetChannelsForRetentionPolicy(ctx context.Context, policyID string, page, perPage int) (*ChannelsWithCount, *Response, error) { query := fmt.Sprintf("?page=%d&per_page=%d", page, perPage) - r, err := c.DoAPIGet(c.dataRetentionPolicyRoute(policyID)+"/channels"+query, "") + r, err := c.DoAPIGet(ctx, c.dataRetentionPolicyRoute(policyID)+"/channels"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6221,12 +6222,12 @@ func (c *Client4) GetChannelsForRetentionPolicy(policyID string, page, perPage i } // SearchChannelsForRetentionPolicy will search the channels to which the specified policy is currently applied. -func (c *Client4) SearchChannelsForRetentionPolicy(policyID string, term string) (ChannelListWithTeamData, *Response, error) { +func (c *Client4) SearchChannelsForRetentionPolicy(ctx context.Context, policyID string, term string) (ChannelListWithTeamData, *Response, error) { body, err := json.Marshal(map[string]any{"term": term}) if err != nil { return nil, nil, NewAppError("SearchChannelsForRetentionPolicy", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.dataRetentionPolicyRoute(policyID)+"/channels/search", body) + r, err := c.DoAPIPostBytes(ctx, c.dataRetentionPolicyRoute(policyID)+"/channels/search", body) if err != nil { return nil, BuildResponse(r), err } @@ -6240,12 +6241,12 @@ func (c *Client4) SearchChannelsForRetentionPolicy(policyID string, term string) // AddChannelsToRetentionPolicy will add the specified channels to the granular data retention policy // with the specified ID. -func (c *Client4) AddChannelsToRetentionPolicy(policyID string, channelIDs []string) (*Response, error) { +func (c *Client4) AddChannelsToRetentionPolicy(ctx context.Context, policyID string, channelIDs []string) (*Response, error) { body, err := json.Marshal(channelIDs) if err != nil { return nil, NewAppError("AddChannelsToRetentionPolicy", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.dataRetentionPolicyRoute(policyID)+"/channels", body) + r, err := c.DoAPIPostBytes(ctx, c.dataRetentionPolicyRoute(policyID)+"/channels", body) if err != nil { return BuildResponse(r), err } @@ -6255,12 +6256,12 @@ func (c *Client4) AddChannelsToRetentionPolicy(policyID string, channelIDs []str // RemoveChannelsFromRetentionPolicy will remove the specified channels from the granular data retention policy // with the specified ID. -func (c *Client4) RemoveChannelsFromRetentionPolicy(policyID string, channelIDs []string) (*Response, error) { +func (c *Client4) RemoveChannelsFromRetentionPolicy(ctx context.Context, policyID string, channelIDs []string) (*Response, error) { body, err := json.Marshal(channelIDs) if err != nil { return nil, NewAppError("RemoveChannelsFromRetentionPolicy", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIDeleteBytes(c.dataRetentionPolicyRoute(policyID)+"/channels", body) + r, err := c.DoAPIDeleteBytes(ctx, c.dataRetentionPolicyRoute(policyID)+"/channels", body) if err != nil { return BuildResponse(r), err } @@ -6269,8 +6270,8 @@ func (c *Client4) RemoveChannelsFromRetentionPolicy(policyID string, channelIDs } // GetTeamPoliciesForUser will get the data retention policies for the teams to which a user belongs. -func (c *Client4) GetTeamPoliciesForUser(userID string, offset, limit int) (*RetentionPolicyForTeamList, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userID)+"/data_retention/team_policies", "") +func (c *Client4) GetTeamPoliciesForUser(ctx context.Context, userID string, offset, limit int) (*RetentionPolicyForTeamList, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userID)+"/data_retention/team_policies", "") if err != nil { return nil, BuildResponse(r), err } @@ -6283,8 +6284,8 @@ func (c *Client4) GetTeamPoliciesForUser(userID string, offset, limit int) (*Ret } // GetChannelPoliciesForUser will get the data retention policies for the channels to which a user belongs. -func (c *Client4) GetChannelPoliciesForUser(userID string, offset, limit int) (*RetentionPolicyForChannelList, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userID)+"/data_retention/channel_policies", "") +func (c *Client4) GetChannelPoliciesForUser(ctx context.Context, userID string, offset, limit int) (*RetentionPolicyForChannelList, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userID)+"/data_retention/channel_policies", "") if err != nil { return nil, BuildResponse(r), err } @@ -6299,13 +6300,13 @@ func (c *Client4) GetChannelPoliciesForUser(userID string, offset, limit int) (* // Drafts Sections // UpsertDraft will create a new draft or update a draft if it already exists -func (c *Client4) UpsertDraft(draft *Draft) (*Draft, *Response, error) { +func (c *Client4) UpsertDraft(ctx context.Context, draft *Draft) (*Draft, *Response, error) { buf, err := json.Marshal(draft) if err != nil { return nil, nil, NewAppError("UpsertDraft", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.draftsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.draftsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -6320,8 +6321,8 @@ func (c *Client4) UpsertDraft(draft *Draft) (*Draft, *Response, error) { } // GetDrafts will get all drafts for a user -func (c *Client4) GetDrafts(userId, teamId string) ([]*Draft, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+c.teamRoute(teamId)+"/drafts", "") +func (c *Client4) GetDrafts(ctx context.Context, userId, teamId string) ([]*Draft, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+c.teamRoute(teamId)+"/drafts", "") if err != nil { return nil, BuildResponse(r), err } @@ -6334,8 +6335,8 @@ func (c *Client4) GetDrafts(userId, teamId string) ([]*Draft, *Response, error) return drafts, BuildResponse(r), nil } -func (c *Client4) DeleteDraft(userId, channelId, rootId string) (*Draft, *Response, error) { - r, err := c.DoAPIDelete(c.userRoute(userId) + c.channelRoute(channelId) + "/drafts") +func (c *Client4) DeleteDraft(ctx context.Context, userId, channelId, rootId string) (*Draft, *Response, error) { + r, err := c.DoAPIDelete(ctx, c.userRoute(userId)+c.channelRoute(channelId)+"/drafts") if err != nil { return nil, BuildResponse(r), err } @@ -6352,12 +6353,12 @@ func (c *Client4) DeleteDraft(userId, channelId, rootId string) (*Draft, *Respon // Commands Section // CreateCommand will create a new command if the user have the right permissions. -func (c *Client4) CreateCommand(cmd *Command) (*Command, *Response, error) { +func (c *Client4) CreateCommand(ctx context.Context, cmd *Command) (*Command, *Response, error) { buf, err := json.Marshal(cmd) if err != nil { return nil, nil, NewAppError("CreateCommand", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.commandsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.commandsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -6371,12 +6372,12 @@ func (c *Client4) CreateCommand(cmd *Command) (*Command, *Response, error) { } // UpdateCommand updates a command based on the provided Command struct. -func (c *Client4) UpdateCommand(cmd *Command) (*Command, *Response, error) { +func (c *Client4) UpdateCommand(ctx context.Context, cmd *Command) (*Command, *Response, error) { buf, err := json.Marshal(cmd) if err != nil { return nil, nil, NewAppError("UpdateCommand", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.commandRoute(cmd.Id), buf) + r, err := c.DoAPIPutBytes(ctx, c.commandRoute(cmd.Id), buf) if err != nil { return nil, BuildResponse(r), err } @@ -6389,13 +6390,13 @@ func (c *Client4) UpdateCommand(cmd *Command) (*Command, *Response, error) { } // MoveCommand moves a command to a different team. -func (c *Client4) MoveCommand(teamId string, commandId string) (*Response, error) { +func (c *Client4) MoveCommand(ctx context.Context, teamId string, commandId string) (*Response, error) { cmr := CommandMoveRequest{TeamId: teamId} buf, err := json.Marshal(cmr) if err != nil { return nil, NewAppError("MoveCommand", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.commandMoveRoute(commandId), buf) + r, err := c.DoAPIPutBytes(ctx, c.commandMoveRoute(commandId), buf) if err != nil { return BuildResponse(r), err } @@ -6404,8 +6405,8 @@ func (c *Client4) MoveCommand(teamId string, commandId string) (*Response, error } // DeleteCommand deletes a command based on the provided command id string. -func (c *Client4) DeleteCommand(commandId string) (*Response, error) { - r, err := c.DoAPIDelete(c.commandRoute(commandId)) +func (c *Client4) DeleteCommand(ctx context.Context, commandId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.commandRoute(commandId)) if err != nil { return BuildResponse(r), err } @@ -6414,9 +6415,9 @@ func (c *Client4) DeleteCommand(commandId string) (*Response, error) { } // ListCommands will retrieve a list of commands available in the team. -func (c *Client4) ListCommands(teamId string, customOnly bool) ([]*Command, *Response, error) { +func (c *Client4) ListCommands(ctx context.Context, teamId string, customOnly bool) ([]*Command, *Response, error) { query := fmt.Sprintf("?team_id=%v&custom_only=%v", teamId, customOnly) - r, err := c.DoAPIGet(c.commandsRoute()+query, "") + r, err := c.DoAPIGet(ctx, c.commandsRoute()+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6430,9 +6431,9 @@ func (c *Client4) ListCommands(teamId string, customOnly bool) ([]*Command, *Res } // ListCommandAutocompleteSuggestions will retrieve a list of suggestions for a userInput. -func (c *Client4) ListCommandAutocompleteSuggestions(userInput, teamId string) ([]AutocompleteSuggestion, *Response, error) { +func (c *Client4) ListCommandAutocompleteSuggestions(ctx context.Context, userInput, teamId string) ([]AutocompleteSuggestion, *Response, error) { query := fmt.Sprintf("/commands/autocomplete_suggestions?user_input=%v", userInput) - r, err := c.DoAPIGet(c.teamRoute(teamId)+query, "") + r, err := c.DoAPIGet(ctx, c.teamRoute(teamId)+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6445,9 +6446,9 @@ func (c *Client4) ListCommandAutocompleteSuggestions(userInput, teamId string) ( } // GetCommandById will retrieve a command by id. -func (c *Client4) GetCommandById(cmdId string) (*Command, *Response, error) { +func (c *Client4) GetCommandById(ctx context.Context, cmdId string) (*Command, *Response, error) { url := fmt.Sprintf("%s/%s", c.commandsRoute(), cmdId) - r, err := c.DoAPIGet(url, "") + r, err := c.DoAPIGet(ctx, url, "") if err != nil { return nil, BuildResponse(r), err } @@ -6460,7 +6461,7 @@ func (c *Client4) GetCommandById(cmdId string) (*Command, *Response, error) { } // ExecuteCommand executes a given slash command. -func (c *Client4) ExecuteCommand(channelId, command string) (*CommandResponse, *Response, error) { +func (c *Client4) ExecuteCommand(ctx context.Context, channelId, command string) (*CommandResponse, *Response, error) { commandArgs := &CommandArgs{ ChannelId: channelId, Command: command, @@ -6469,7 +6470,7 @@ func (c *Client4) ExecuteCommand(channelId, command string) (*CommandResponse, * if err != nil { return nil, nil, NewAppError("ExecuteCommand", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.commandsRoute()+"/execute", buf) + r, err := c.DoAPIPostBytes(ctx, c.commandsRoute()+"/execute", buf) if err != nil { return nil, BuildResponse(r), err } @@ -6484,7 +6485,7 @@ func (c *Client4) ExecuteCommand(channelId, command string) (*CommandResponse, * // ExecuteCommandWithTeam executes a given slash command against the specified team. // Use this when executing slash commands in a DM/GM, since the team id cannot be inferred in that case. -func (c *Client4) ExecuteCommandWithTeam(channelId, teamId, command string) (*CommandResponse, *Response, error) { +func (c *Client4) ExecuteCommandWithTeam(ctx context.Context, channelId, teamId, command string) (*CommandResponse, *Response, error) { commandArgs := &CommandArgs{ ChannelId: channelId, TeamId: teamId, @@ -6494,7 +6495,7 @@ func (c *Client4) ExecuteCommandWithTeam(channelId, teamId, command string) (*Co if err != nil { return nil, nil, NewAppError("ExecuteCommandWithTeam", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.commandsRoute()+"/execute", buf) + r, err := c.DoAPIPostBytes(ctx, c.commandsRoute()+"/execute", buf) if err != nil { return nil, BuildResponse(r), err } @@ -6508,8 +6509,8 @@ func (c *Client4) ExecuteCommandWithTeam(channelId, teamId, command string) (*Co } // ListAutocompleteCommands will retrieve a list of commands available in the team. -func (c *Client4) ListAutocompleteCommands(teamId string) ([]*Command, *Response, error) { - r, err := c.DoAPIGet(c.teamAutoCompleteCommandsRoute(teamId), "") +func (c *Client4) ListAutocompleteCommands(ctx context.Context, teamId string) ([]*Command, *Response, error) { + r, err := c.DoAPIGet(ctx, c.teamAutoCompleteCommandsRoute(teamId), "") if err != nil { return nil, BuildResponse(r), err } @@ -6522,8 +6523,8 @@ func (c *Client4) ListAutocompleteCommands(teamId string) ([]*Command, *Response } // RegenCommandToken will create a new token if the user have the right permissions. -func (c *Client4) RegenCommandToken(commandId string) (string, *Response, error) { - r, err := c.DoAPIPut(c.commandRoute(commandId)+"/regen_token", "") +func (c *Client4) RegenCommandToken(ctx context.Context, commandId string) (string, *Response, error) { + r, err := c.DoAPIPut(ctx, c.commandRoute(commandId)+"/regen_token", "") if err != nil { return "", BuildResponse(r), err } @@ -6534,8 +6535,8 @@ func (c *Client4) RegenCommandToken(commandId string) (string, *Response, error) // Status Section // GetUserStatus returns a user based on the provided user id string. -func (c *Client4) GetUserStatus(userId, etag string) (*Status, *Response, error) { - r, err := c.DoAPIGet(c.userStatusRoute(userId), etag) +func (c *Client4) GetUserStatus(ctx context.Context, userId, etag string) (*Status, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userStatusRoute(userId), etag) if err != nil { return nil, BuildResponse(r), err } @@ -6551,8 +6552,8 @@ func (c *Client4) GetUserStatus(userId, etag string) (*Status, *Response, error) } // GetUsersStatusesByIds returns a list of users status based on the provided user ids. -func (c *Client4) GetUsersStatusesByIds(userIds []string) ([]*Status, *Response, error) { - r, err := c.DoAPIPost(c.userStatusesRoute()+"/ids", ArrayToJSON(userIds)) +func (c *Client4) GetUsersStatusesByIds(ctx context.Context, userIds []string) ([]*Status, *Response, error) { + r, err := c.DoAPIPost(ctx, c.userStatusesRoute()+"/ids", ArrayToJSON(userIds)) if err != nil { return nil, BuildResponse(r), err } @@ -6565,12 +6566,12 @@ func (c *Client4) GetUsersStatusesByIds(userIds []string) ([]*Status, *Response, } // UpdateUserStatus sets a user's status based on the provided user id string. -func (c *Client4) UpdateUserStatus(userId string, userStatus *Status) (*Status, *Response, error) { +func (c *Client4) UpdateUserStatus(ctx context.Context, userId string, userStatus *Status) (*Status, *Response, error) { buf, err := json.Marshal(userStatus) if err != nil { return nil, nil, NewAppError("UpdateUserStatus", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.userStatusRoute(userId), buf) + r, err := c.DoAPIPutBytes(ctx, c.userStatusRoute(userId), buf) if err != nil { return nil, BuildResponse(r), err } @@ -6585,12 +6586,12 @@ func (c *Client4) UpdateUserStatus(userId string, userStatus *Status) (*Status, // UpdateUserCustomStatus sets a user's custom status based on the provided user id string. // The returned CustomStatus object is the same as the one passed, and it should be just // ignored. It's only kept to maintain compatibility. -func (c *Client4) UpdateUserCustomStatus(userId string, userCustomStatus *CustomStatus) (*CustomStatus, *Response, error) { +func (c *Client4) UpdateUserCustomStatus(ctx context.Context, userId string, userCustomStatus *CustomStatus) (*CustomStatus, *Response, error) { buf, err := json.Marshal(userCustomStatus) if err != nil { return nil, nil, NewAppError("UpdateUserCustomStatus", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.userStatusRoute(userId)+"/custom", buf) + r, err := c.DoAPIPutBytes(ctx, c.userStatusRoute(userId)+"/custom", buf) if err != nil { return nil, BuildResponse(r), err } @@ -6602,8 +6603,8 @@ func (c *Client4) UpdateUserCustomStatus(userId string, userCustomStatus *Custom } // RemoveUserCustomStatus remove a user's custom status based on the provided user id string. -func (c *Client4) RemoveUserCustomStatus(userId string) (*Response, error) { - r, err := c.DoAPIDelete(c.userStatusRoute(userId) + "/custom") +func (c *Client4) RemoveUserCustomStatus(ctx context.Context, userId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.userStatusRoute(userId)+"/custom") if err != nil { return BuildResponse(r), err } @@ -6612,8 +6613,8 @@ func (c *Client4) RemoveUserCustomStatus(userId string) (*Response, error) { } // RemoveRecentUserCustomStatus remove a recent user's custom status based on the provided user id string. -func (c *Client4) RemoveRecentUserCustomStatus(userId string) (*Response, error) { - r, err := c.DoAPIDelete(c.userStatusRoute(userId) + "/custom/recent") +func (c *Client4) RemoveRecentUserCustomStatus(ctx context.Context, userId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.userStatusRoute(userId)+"/custom/recent") if err != nil { return BuildResponse(r), err } @@ -6626,7 +6627,7 @@ func (c *Client4) RemoveRecentUserCustomStatus(userId string) (*Response, error) // CreateEmoji will save an emoji to the server if the current user has permission // to do so. If successful, the provided emoji will be returned with its Id field // filled in. Otherwise, an error will be returned. -func (c *Client4) CreateEmoji(emoji *Emoji, image []byte, filename string) (*Emoji, *Response, error) { +func (c *Client4) CreateEmoji(ctx context.Context, emoji *Emoji, image []byte, filename string) (*Emoji, *Response, error) { body := &bytes.Buffer{} writer := multipart.NewWriter(body) @@ -6653,13 +6654,13 @@ func (c *Client4) CreateEmoji(emoji *Emoji, image []byte, filename string) (*Emo return nil, nil, err } - return c.DoEmojiUploadFile(c.emojisRoute(), body.Bytes(), writer.FormDataContentType()) + return c.DoEmojiUploadFile(ctx, c.emojisRoute(), body.Bytes(), writer.FormDataContentType()) } // GetEmojiList returns a page of custom emoji on the system. -func (c *Client4) GetEmojiList(page, perPage int) ([]*Emoji, *Response, error) { +func (c *Client4) GetEmojiList(ctx context.Context, page, perPage int) ([]*Emoji, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.emojisRoute()+query, "") + r, err := c.DoAPIGet(ctx, c.emojisRoute()+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6674,9 +6675,9 @@ func (c *Client4) GetEmojiList(page, perPage int) ([]*Emoji, *Response, error) { // GetSortedEmojiList returns a page of custom emoji on the system sorted based on the sort // parameter, blank for no sorting and "name" to sort by emoji names. -func (c *Client4) GetSortedEmojiList(page, perPage int, sort string) ([]*Emoji, *Response, error) { +func (c *Client4) GetSortedEmojiList(ctx context.Context, page, perPage int, sort string) ([]*Emoji, *Response, error) { query := fmt.Sprintf("?page=%v&per_page=%v&sort=%v", page, perPage, sort) - r, err := c.DoAPIGet(c.emojisRoute()+query, "") + r, err := c.DoAPIGet(ctx, c.emojisRoute()+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6689,8 +6690,8 @@ func (c *Client4) GetSortedEmojiList(page, perPage int, sort string) ([]*Emoji, } // DeleteEmoji delete an custom emoji on the provided emoji id string. -func (c *Client4) DeleteEmoji(emojiId string) (*Response, error) { - r, err := c.DoAPIDelete(c.emojiRoute(emojiId)) +func (c *Client4) DeleteEmoji(ctx context.Context, emojiId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.emojiRoute(emojiId)) if err != nil { return BuildResponse(r), err } @@ -6699,8 +6700,8 @@ func (c *Client4) DeleteEmoji(emojiId string) (*Response, error) { } // GetEmoji returns a custom emoji based on the emojiId string. -func (c *Client4) GetEmoji(emojiId string) (*Emoji, *Response, error) { - r, err := c.DoAPIGet(c.emojiRoute(emojiId), "") +func (c *Client4) GetEmoji(ctx context.Context, emojiId string) (*Emoji, *Response, error) { + r, err := c.DoAPIGet(ctx, c.emojiRoute(emojiId), "") if err != nil { return nil, BuildResponse(r), err } @@ -6713,8 +6714,8 @@ func (c *Client4) GetEmoji(emojiId string) (*Emoji, *Response, error) { } // GetEmojiByName returns a custom emoji based on the name string. -func (c *Client4) GetEmojiByName(name string) (*Emoji, *Response, error) { - r, err := c.DoAPIGet(c.emojiByNameRoute(name), "") +func (c *Client4) GetEmojiByName(ctx context.Context, name string) (*Emoji, *Response, error) { + r, err := c.DoAPIGet(ctx, c.emojiByNameRoute(name), "") if err != nil { return nil, BuildResponse(r), err } @@ -6727,8 +6728,8 @@ func (c *Client4) GetEmojiByName(name string) (*Emoji, *Response, error) { } // GetEmojiImage returns the emoji image. -func (c *Client4) GetEmojiImage(emojiId string) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.emojiRoute(emojiId)+"/image", "") +func (c *Client4) GetEmojiImage(ctx context.Context, emojiId string) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.emojiRoute(emojiId)+"/image", "") if err != nil { return nil, BuildResponse(r), err } @@ -6743,12 +6744,12 @@ func (c *Client4) GetEmojiImage(emojiId string) ([]byte, *Response, error) { } // SearchEmoji returns a list of emoji matching some search criteria. -func (c *Client4) SearchEmoji(search *EmojiSearch) ([]*Emoji, *Response, error) { +func (c *Client4) SearchEmoji(ctx context.Context, search *EmojiSearch) ([]*Emoji, *Response, error) { buf, err := json.Marshal(search) if err != nil { return nil, nil, NewAppError("SearchEmoji", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.emojisRoute()+"/search", buf) + r, err := c.DoAPIPostBytes(ctx, c.emojisRoute()+"/search", buf) if err != nil { return nil, BuildResponse(r), err } @@ -6761,9 +6762,9 @@ func (c *Client4) SearchEmoji(search *EmojiSearch) ([]*Emoji, *Response, error) } // AutocompleteEmoji returns a list of emoji starting with or matching name. -func (c *Client4) AutocompleteEmoji(name string, etag string) ([]*Emoji, *Response, error) { +func (c *Client4) AutocompleteEmoji(ctx context.Context, name string, etag string) ([]*Emoji, *Response, error) { query := fmt.Sprintf("?name=%v", name) - r, err := c.DoAPIGet(c.emojisRoute()+"/autocomplete"+query, "") + r, err := c.DoAPIGet(ctx, c.emojisRoute()+"/autocomplete"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6778,12 +6779,12 @@ func (c *Client4) AutocompleteEmoji(name string, etag string) ([]*Emoji, *Respon // Reaction Section // SaveReaction saves an emoji reaction for a post. Returns the saved reaction if successful, otherwise an error will be returned. -func (c *Client4) SaveReaction(reaction *Reaction) (*Reaction, *Response, error) { +func (c *Client4) SaveReaction(ctx context.Context, reaction *Reaction) (*Reaction, *Response, error) { buf, err := json.Marshal(reaction) if err != nil { return nil, nil, NewAppError("SaveReaction", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.reactionsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.reactionsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -6796,8 +6797,8 @@ func (c *Client4) SaveReaction(reaction *Reaction) (*Reaction, *Response, error) } // GetReactions returns a list of reactions to a post. -func (c *Client4) GetReactions(postId string) ([]*Reaction, *Response, error) { - r, err := c.DoAPIGet(c.postRoute(postId)+"/reactions", "") +func (c *Client4) GetReactions(ctx context.Context, postId string) ([]*Reaction, *Response, error) { + r, err := c.DoAPIGet(ctx, c.postRoute(postId)+"/reactions", "") if err != nil { return nil, BuildResponse(r), err } @@ -6810,8 +6811,8 @@ func (c *Client4) GetReactions(postId string) ([]*Reaction, *Response, error) { } // DeleteReaction deletes reaction of a user in a post. -func (c *Client4) DeleteReaction(reaction *Reaction) (*Response, error) { - r, err := c.DoAPIDelete(c.userRoute(reaction.UserId) + c.postRoute(reaction.PostId) + fmt.Sprintf("/reactions/%v", reaction.EmojiName)) +func (c *Client4) DeleteReaction(ctx context.Context, reaction *Reaction) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.userRoute(reaction.UserId)+c.postRoute(reaction.PostId)+fmt.Sprintf("/reactions/%v", reaction.EmojiName)) if err != nil { return BuildResponse(r), err } @@ -6820,8 +6821,8 @@ func (c *Client4) DeleteReaction(reaction *Reaction) (*Response, error) { } // FetchBulkReactions returns a map of postIds and corresponding reactions -func (c *Client4) GetBulkReactions(postIds []string) (map[string][]*Reaction, *Response, error) { - r, err := c.DoAPIPost(c.postsRoute()+"/ids/reactions", ArrayToJSON(postIds)) +func (c *Client4) GetBulkReactions(ctx context.Context, postIds []string) (map[string][]*Reaction, *Response, error) { + r, err := c.DoAPIPost(ctx, c.postsRoute()+"/ids/reactions", ArrayToJSON(postIds)) if err != nil { return nil, BuildResponse(r), err } @@ -6833,9 +6834,9 @@ func (c *Client4) GetBulkReactions(postIds []string) (map[string][]*Reaction, *R return reactions, BuildResponse(r), nil } -func (c *Client4) GetTopReactionsForTeamSince(teamId string, timeRange string, page int, perPage int) (*TopReactionList, *Response, error) { +func (c *Client4) GetTopReactionsForTeamSince(ctx context.Context, teamId string, timeRange string, page int, perPage int) (*TopReactionList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) - r, err := c.DoAPIGet(c.teamRoute(teamId)+"/top/reactions"+query, "") + r, err := c.DoAPIGet(ctx, c.teamRoute(teamId)+"/top/reactions"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6847,14 +6848,14 @@ func (c *Client4) GetTopReactionsForTeamSince(teamId string, timeRange string, p return topReactions, BuildResponse(r), nil } -func (c *Client4) GetTopReactionsForUserSince(teamId string, timeRange string, page int, perPage int) (*TopReactionList, *Response, error) { +func (c *Client4) GetTopReactionsForUserSince(ctx context.Context, teamId string, timeRange string, page int, perPage int) (*TopReactionList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) if teamId != "" { query += fmt.Sprintf("&team_id=%v", teamId) } - r, err := c.DoAPIGet(c.usersRoute()+"/me/top/reactions"+query, "") + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/me/top/reactions"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6866,10 +6867,10 @@ func (c *Client4) GetTopReactionsForUserSince(teamId string, timeRange string, p return topReactions, BuildResponse(r), nil } -func (c *Client4) GetTopDMsForUserSince(timeRange string, page int, perPage int) (*TopDMList, *Response, error) { +func (c *Client4) GetTopDMsForUserSince(ctx context.Context, timeRange string, page int, perPage int) (*TopDMList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+"/me/top/dms"+query, "") + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/me/top/dms"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -6884,8 +6885,8 @@ func (c *Client4) GetTopDMsForUserSince(timeRange string, page int, perPage int) // Timezone Section // GetSupportedTimezone returns a page of supported timezones on the system. -func (c *Client4) GetSupportedTimezone() ([]string, *Response, error) { - r, err := c.DoAPIGet(c.timezonesRoute(), "") +func (c *Client4) GetSupportedTimezone(ctx context.Context) ([]string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.timezonesRoute(), "") if err != nil { return nil, BuildResponse(r), err } @@ -6898,11 +6899,11 @@ func (c *Client4) GetSupportedTimezone() ([]string, *Response, error) { // Open Graph Metadata Section // OpenGraph return the open graph metadata for a particular url if the site have the metadata. -func (c *Client4) OpenGraph(url string) (map[string]string, *Response, error) { +func (c *Client4) OpenGraph(ctx context.Context, url string) (map[string]string, *Response, error) { requestBody := make(map[string]string) requestBody["url"] = url - r, err := c.DoAPIPost(c.openGraphRoute(), MapToJSON(requestBody)) + r, err := c.DoAPIPost(ctx, c.openGraphRoute(), MapToJSON(requestBody)) if err != nil { return nil, BuildResponse(r), err } @@ -6913,8 +6914,8 @@ func (c *Client4) OpenGraph(url string) (map[string]string, *Response, error) { // Jobs Section // GetJob gets a single job. -func (c *Client4) GetJob(id string) (*Job, *Response, error) { - r, err := c.DoAPIGet(c.jobsRoute()+fmt.Sprintf("/%v", id), "") +func (c *Client4) GetJob(ctx context.Context, id string) (*Job, *Response, error) { + r, err := c.DoAPIGet(ctx, c.jobsRoute()+fmt.Sprintf("/%v", id), "") if err != nil { return nil, BuildResponse(r), err } @@ -6927,8 +6928,8 @@ func (c *Client4) GetJob(id string) (*Job, *Response, error) { } // GetJobs gets all jobs, sorted with the job that was created most recently first. -func (c *Client4) GetJobs(page int, perPage int) ([]*Job, *Response, error) { - r, err := c.DoAPIGet(c.jobsRoute()+fmt.Sprintf("?page=%v&per_page=%v", page, perPage), "") +func (c *Client4) GetJobs(ctx context.Context, page int, perPage int) ([]*Job, *Response, error) { + r, err := c.DoAPIGet(ctx, c.jobsRoute()+fmt.Sprintf("?page=%v&per_page=%v", page, perPage), "") if err != nil { return nil, BuildResponse(r), err } @@ -6941,8 +6942,8 @@ func (c *Client4) GetJobs(page int, perPage int) ([]*Job, *Response, error) { } // GetJobsByType gets all jobs of a given type, sorted with the job that was created most recently first. -func (c *Client4) GetJobsByType(jobType string, page int, perPage int) ([]*Job, *Response, error) { - r, err := c.DoAPIGet(c.jobsRoute()+fmt.Sprintf("/type/%v?page=%v&per_page=%v", jobType, page, perPage), "") +func (c *Client4) GetJobsByType(ctx context.Context, jobType string, page int, perPage int) ([]*Job, *Response, error) { + r, err := c.DoAPIGet(ctx, c.jobsRoute()+fmt.Sprintf("/type/%v?page=%v&per_page=%v", jobType, page, perPage), "") if err != nil { return nil, BuildResponse(r), err } @@ -6955,12 +6956,12 @@ func (c *Client4) GetJobsByType(jobType string, page int, perPage int) ([]*Job, } // CreateJob creates a job based on the provided job struct. -func (c *Client4) CreateJob(job *Job) (*Job, *Response, error) { +func (c *Client4) CreateJob(ctx context.Context, job *Job) (*Job, *Response, error) { buf, err := json.Marshal(job) if err != nil { return nil, nil, NewAppError("CreateJob", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.jobsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.jobsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -6973,8 +6974,8 @@ func (c *Client4) CreateJob(job *Job) (*Job, *Response, error) { } // CancelJob requests the cancellation of the job with the provided Id. -func (c *Client4) CancelJob(jobId string) (*Response, error) { - r, err := c.DoAPIPost(c.jobsRoute()+fmt.Sprintf("/%v/cancel", jobId), "") +func (c *Client4) CancelJob(ctx context.Context, jobId string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.jobsRoute()+fmt.Sprintf("/%v/cancel", jobId), "") if err != nil { return BuildResponse(r), err } @@ -6983,8 +6984,8 @@ func (c *Client4) CancelJob(jobId string) (*Response, error) { } // DownloadJob downloads the results of the job -func (c *Client4) DownloadJob(jobId string) ([]byte, *Response, error) { - r, err := c.DoAPIGet(c.jobsRoute()+fmt.Sprintf("/%v/download", jobId), "") +func (c *Client4) DownloadJob(ctx context.Context, jobId string) ([]byte, *Response, error) { + r, err := c.DoAPIGet(ctx, c.jobsRoute()+fmt.Sprintf("/%v/download", jobId), "") if err != nil { return nil, BuildResponse(r), err } @@ -7000,8 +7001,8 @@ func (c *Client4) DownloadJob(jobId string) ([]byte, *Response, error) { // Roles Section // GetAllRoles returns a list of all the roles. -func (c *Client4) GetAllRoles() ([]*Role, *Response, error) { - r, err := c.DoAPIGet(c.rolesRoute(), "") +func (c *Client4) GetAllRoles(ctx context.Context) ([]*Role, *Response, error) { + r, err := c.DoAPIGet(ctx, c.rolesRoute(), "") if err != nil { return nil, BuildResponse(r), err } @@ -7014,8 +7015,8 @@ func (c *Client4) GetAllRoles() ([]*Role, *Response, error) { } // GetRole gets a single role by ID. -func (c *Client4) GetRole(id string) (*Role, *Response, error) { - r, err := c.DoAPIGet(c.rolesRoute()+fmt.Sprintf("/%v", id), "") +func (c *Client4) GetRole(ctx context.Context, id string) (*Role, *Response, error) { + r, err := c.DoAPIGet(ctx, c.rolesRoute()+fmt.Sprintf("/%v", id), "") if err != nil { return nil, BuildResponse(r), err } @@ -7028,8 +7029,8 @@ func (c *Client4) GetRole(id string) (*Role, *Response, error) { } // GetRoleByName gets a single role by Name. -func (c *Client4) GetRoleByName(name string) (*Role, *Response, error) { - r, err := c.DoAPIGet(c.rolesRoute()+fmt.Sprintf("/name/%v", name), "") +func (c *Client4) GetRoleByName(ctx context.Context, name string) (*Role, *Response, error) { + r, err := c.DoAPIGet(ctx, c.rolesRoute()+fmt.Sprintf("/name/%v", name), "") if err != nil { return nil, BuildResponse(r), err } @@ -7042,8 +7043,8 @@ func (c *Client4) GetRoleByName(name string) (*Role, *Response, error) { } // GetRolesByNames returns a list of roles based on the provided role names. -func (c *Client4) GetRolesByNames(roleNames []string) ([]*Role, *Response, error) { - r, err := c.DoAPIPost(c.rolesRoute()+"/names", ArrayToJSON(roleNames)) +func (c *Client4) GetRolesByNames(ctx context.Context, roleNames []string) ([]*Role, *Response, error) { + r, err := c.DoAPIPost(ctx, c.rolesRoute()+"/names", ArrayToJSON(roleNames)) if err != nil { return nil, BuildResponse(r), err } @@ -7056,12 +7057,12 @@ func (c *Client4) GetRolesByNames(roleNames []string) ([]*Role, *Response, error } // PatchRole partially updates a role in the system. Any missing fields are not updated. -func (c *Client4) PatchRole(roleId string, patch *RolePatch) (*Role, *Response, error) { +func (c *Client4) PatchRole(ctx context.Context, roleId string, patch *RolePatch) (*Role, *Response, error) { buf, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchRole", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.rolesRoute()+fmt.Sprintf("/%v/patch", roleId), buf) + r, err := c.DoAPIPutBytes(ctx, c.rolesRoute()+fmt.Sprintf("/%v/patch", roleId), buf) if err != nil { return nil, BuildResponse(r), err } @@ -7076,12 +7077,12 @@ func (c *Client4) PatchRole(roleId string, patch *RolePatch) (*Role, *Response, // Schemes Section // CreateScheme creates a new Scheme. -func (c *Client4) CreateScheme(scheme *Scheme) (*Scheme, *Response, error) { +func (c *Client4) CreateScheme(ctx context.Context, scheme *Scheme) (*Scheme, *Response, error) { buf, err := json.Marshal(scheme) if err != nil { return nil, nil, NewAppError("CreateScheme", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.schemesRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.schemesRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -7094,8 +7095,8 @@ func (c *Client4) CreateScheme(scheme *Scheme) (*Scheme, *Response, error) { } // GetScheme gets a single scheme by ID. -func (c *Client4) GetScheme(id string) (*Scheme, *Response, error) { - r, err := c.DoAPIGet(c.schemeRoute(id), "") +func (c *Client4) GetScheme(ctx context.Context, id string) (*Scheme, *Response, error) { + r, err := c.DoAPIGet(ctx, c.schemeRoute(id), "") if err != nil { return nil, BuildResponse(r), err } @@ -7108,8 +7109,8 @@ func (c *Client4) GetScheme(id string) (*Scheme, *Response, error) { } // GetSchemes ets all schemes, sorted with the most recently created first, optionally filtered by scope. -func (c *Client4) GetSchemes(scope string, page int, perPage int) ([]*Scheme, *Response, error) { - r, err := c.DoAPIGet(c.schemesRoute()+fmt.Sprintf("?scope=%v&page=%v&per_page=%v", scope, page, perPage), "") +func (c *Client4) GetSchemes(ctx context.Context, scope string, page int, perPage int) ([]*Scheme, *Response, error) { + r, err := c.DoAPIGet(ctx, c.schemesRoute()+fmt.Sprintf("?scope=%v&page=%v&per_page=%v", scope, page, perPage), "") if err != nil { return nil, BuildResponse(r), err } @@ -7122,8 +7123,8 @@ func (c *Client4) GetSchemes(scope string, page int, perPage int) ([]*Scheme, *R } // DeleteScheme deletes a single scheme by ID. -func (c *Client4) DeleteScheme(id string) (*Response, error) { - r, err := c.DoAPIDelete(c.schemeRoute(id)) +func (c *Client4) DeleteScheme(ctx context.Context, id string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.schemeRoute(id)) if err != nil { return BuildResponse(r), err } @@ -7132,12 +7133,12 @@ func (c *Client4) DeleteScheme(id string) (*Response, error) { } // PatchScheme partially updates a scheme in the system. Any missing fields are not updated. -func (c *Client4) PatchScheme(id string, patch *SchemePatch) (*Scheme, *Response, error) { +func (c *Client4) PatchScheme(ctx context.Context, id string, patch *SchemePatch) (*Scheme, *Response, error) { buf, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchScheme", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.schemeRoute(id)+"/patch", buf) + r, err := c.DoAPIPutBytes(ctx, c.schemeRoute(id)+"/patch", buf) if err != nil { return nil, BuildResponse(r), err } @@ -7150,8 +7151,8 @@ func (c *Client4) PatchScheme(id string, patch *SchemePatch) (*Scheme, *Response } // GetTeamsForScheme gets the teams using this scheme, sorted alphabetically by display name. -func (c *Client4) GetTeamsForScheme(schemeId string, page int, perPage int) ([]*Team, *Response, error) { - r, err := c.DoAPIGet(c.schemeRoute(schemeId)+fmt.Sprintf("/teams?page=%v&per_page=%v", page, perPage), "") +func (c *Client4) GetTeamsForScheme(ctx context.Context, schemeId string, page int, perPage int) ([]*Team, *Response, error) { + r, err := c.DoAPIGet(ctx, c.schemeRoute(schemeId)+fmt.Sprintf("/teams?page=%v&per_page=%v", page, perPage), "") if err != nil { return nil, BuildResponse(r), err } @@ -7164,8 +7165,8 @@ func (c *Client4) GetTeamsForScheme(schemeId string, page int, perPage int) ([]* } // GetChannelsForScheme gets the channels using this scheme, sorted alphabetically by display name. -func (c *Client4) GetChannelsForScheme(schemeId string, page int, perPage int) (ChannelList, *Response, error) { - r, err := c.DoAPIGet(c.schemeRoute(schemeId)+fmt.Sprintf("/channels?page=%v&per_page=%v", page, perPage), "") +func (c *Client4) GetChannelsForScheme(ctx context.Context, schemeId string, page int, perPage int) (ChannelList, *Response, error) { + r, err := c.DoAPIGet(ctx, c.schemeRoute(schemeId)+fmt.Sprintf("/channels?page=%v&per_page=%v", page, perPage), "") if err != nil { return nil, BuildResponse(r), err } @@ -7182,15 +7183,15 @@ func (c *Client4) GetChannelsForScheme(schemeId string, page int, perPage int) ( // Plugin Section // UploadPlugin takes an io.Reader stream pointing to the contents of a .tar.gz plugin. -func (c *Client4) UploadPlugin(file io.Reader) (*Manifest, *Response, error) { - return c.uploadPlugin(file, false) +func (c *Client4) UploadPlugin(ctx context.Context, file io.Reader) (*Manifest, *Response, error) { + return c.uploadPlugin(ctx, file, false) } -func (c *Client4) UploadPluginForced(file io.Reader) (*Manifest, *Response, error) { - return c.uploadPlugin(file, true) +func (c *Client4) UploadPluginForced(ctx context.Context, file io.Reader) (*Manifest, *Response, error) { + return c.uploadPlugin(ctx, file, true) } -func (c *Client4) uploadPlugin(file io.Reader, force bool) (*Manifest, *Response, error) { +func (c *Client4) uploadPlugin(ctx context.Context, file io.Reader, force bool) (*Manifest, *Response, error) { body := new(bytes.Buffer) writer := multipart.NewWriter(body) @@ -7241,11 +7242,11 @@ func (c *Client4) uploadPlugin(file io.Reader, force bool) (*Manifest, *Response return &m, BuildResponse(rp), nil } -func (c *Client4) InstallPluginFromURL(downloadURL string, force bool) (*Manifest, *Response, error) { +func (c *Client4) InstallPluginFromURL(ctx context.Context, downloadURL string, force bool) (*Manifest, *Response, error) { forceStr := c.boolString(force) url := fmt.Sprintf("%s?plugin_download_url=%s&force=%s", c.pluginsRoute()+"/install_from_url", url.QueryEscape(downloadURL), forceStr) - r, err := c.DoAPIPost(url, "") + r, err := c.DoAPIPost(ctx, url, "") if err != nil { return nil, BuildResponse(r), err } @@ -7259,12 +7260,12 @@ func (c *Client4) InstallPluginFromURL(downloadURL string, force bool) (*Manifes } // InstallMarketplacePlugin will install marketplace plugin. -func (c *Client4) InstallMarketplacePlugin(request *InstallMarketplacePluginRequest) (*Manifest, *Response, error) { +func (c *Client4) InstallMarketplacePlugin(ctx context.Context, request *InstallMarketplacePluginRequest) (*Manifest, *Response, error) { buf, err := json.Marshal(request) if err != nil { return nil, nil, NewAppError("InstallMarketplacePlugin", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.pluginsRoute()+"/marketplace", string(buf)) + r, err := c.DoAPIPost(ctx, c.pluginsRoute()+"/marketplace", string(buf)) if err != nil { return nil, BuildResponse(r), err } @@ -7278,8 +7279,8 @@ func (c *Client4) InstallMarketplacePlugin(request *InstallMarketplacePluginRequ } // GetPlugins will return a list of plugin manifests for currently active plugins. -func (c *Client4) GetPlugins() (*PluginsResponse, *Response, error) { - r, err := c.DoAPIGet(c.pluginsRoute(), "") +func (c *Client4) GetPlugins(ctx context.Context) (*PluginsResponse, *Response, error) { + r, err := c.DoAPIGet(ctx, c.pluginsRoute(), "") if err != nil { return nil, BuildResponse(r), err } @@ -7294,8 +7295,8 @@ func (c *Client4) GetPlugins() (*PluginsResponse, *Response, error) { // GetPluginStatuses will return the plugins installed on any server in the cluster, for reporting // to the administrator via the system console. -func (c *Client4) GetPluginStatuses() (PluginStatuses, *Response, error) { - r, err := c.DoAPIGet(c.pluginsRoute()+"/statuses", "") +func (c *Client4) GetPluginStatuses(ctx context.Context) (PluginStatuses, *Response, error) { + r, err := c.DoAPIGet(ctx, c.pluginsRoute()+"/statuses", "") if err != nil { return nil, BuildResponse(r), err } @@ -7308,8 +7309,8 @@ func (c *Client4) GetPluginStatuses() (PluginStatuses, *Response, error) { } // RemovePlugin will disable and delete a plugin. -func (c *Client4) RemovePlugin(id string) (*Response, error) { - r, err := c.DoAPIDelete(c.pluginRoute(id)) +func (c *Client4) RemovePlugin(ctx context.Context, id string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.pluginRoute(id)) if err != nil { return BuildResponse(r), err } @@ -7318,8 +7319,8 @@ func (c *Client4) RemovePlugin(id string) (*Response, error) { } // GetWebappPlugins will return a list of plugins that the webapp should download. -func (c *Client4) GetWebappPlugins() ([]*Manifest, *Response, error) { - r, err := c.DoAPIGet(c.pluginsRoute()+"/webapp", "") +func (c *Client4) GetWebappPlugins(ctx context.Context) ([]*Manifest, *Response, error) { + r, err := c.DoAPIGet(ctx, c.pluginsRoute()+"/webapp", "") if err != nil { return nil, BuildResponse(r), err } @@ -7333,8 +7334,8 @@ func (c *Client4) GetWebappPlugins() ([]*Manifest, *Response, error) { } // EnablePlugin will enable an plugin installed. -func (c *Client4) EnablePlugin(id string) (*Response, error) { - r, err := c.DoAPIPost(c.pluginRoute(id)+"/enable", "") +func (c *Client4) EnablePlugin(ctx context.Context, id string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.pluginRoute(id)+"/enable", "") if err != nil { return BuildResponse(r), err } @@ -7343,8 +7344,8 @@ func (c *Client4) EnablePlugin(id string) (*Response, error) { } // DisablePlugin will disable an enabled plugin. -func (c *Client4) DisablePlugin(id string) (*Response, error) { - r, err := c.DoAPIPost(c.pluginRoute(id)+"/disable", "") +func (c *Client4) DisablePlugin(ctx context.Context, id string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.pluginRoute(id)+"/disable", "") if err != nil { return BuildResponse(r), err } @@ -7353,7 +7354,7 @@ func (c *Client4) DisablePlugin(id string) (*Response, error) { } // GetMarketplacePlugins will return a list of plugins that an admin can install. -func (c *Client4) GetMarketplacePlugins(filter *MarketplacePluginFilter) ([]*MarketplacePlugin, *Response, error) { +func (c *Client4) GetMarketplacePlugins(ctx context.Context, filter *MarketplacePluginFilter) ([]*MarketplacePlugin, *Response, error) { route := c.pluginsRoute() + "/marketplace" u, err := url.Parse(route) if err != nil { @@ -7362,7 +7363,7 @@ func (c *Client4) GetMarketplacePlugins(filter *MarketplacePluginFilter) ([]*Mar filter.ApplyToURL(u) - r, err := c.DoAPIGet(u.String(), "") + r, err := c.DoAPIGet(ctx, u.String(), "") if err != nil { return nil, BuildResponse(r), err } @@ -7377,13 +7378,13 @@ func (c *Client4) GetMarketplacePlugins(filter *MarketplacePluginFilter) ([]*Mar } // UpdateChannelScheme will update a channel's scheme. -func (c *Client4) UpdateChannelScheme(channelId, schemeId string) (*Response, error) { +func (c *Client4) UpdateChannelScheme(ctx context.Context, channelId, schemeId string) (*Response, error) { sip := &SchemeIDPatch{SchemeID: &schemeId} buf, err := json.Marshal(sip) if err != nil { return nil, NewAppError("UpdateChannelScheme", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.channelSchemeRoute(channelId), buf) + r, err := c.DoAPIPutBytes(ctx, c.channelSchemeRoute(channelId), buf) if err != nil { return BuildResponse(r), err } @@ -7392,13 +7393,13 @@ func (c *Client4) UpdateChannelScheme(channelId, schemeId string) (*Response, er } // UpdateTeamScheme will update a team's scheme. -func (c *Client4) UpdateTeamScheme(teamId, schemeId string) (*Response, error) { +func (c *Client4) UpdateTeamScheme(ctx context.Context, teamId, schemeId string) (*Response, error) { sip := &SchemeIDPatch{SchemeID: &schemeId} buf, err := json.Marshal(sip) if err != nil { return nil, NewAppError("UpdateTeamScheme", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.teamSchemeRoute(teamId), buf) + r, err := c.DoAPIPutBytes(ctx, c.teamSchemeRoute(teamId), buf) if err != nil { return BuildResponse(r), err } @@ -7407,9 +7408,9 @@ func (c *Client4) UpdateTeamScheme(teamId, schemeId string) (*Response, error) { } // GetRedirectLocation retrieves the value of the 'Location' header of an HTTP response for a given URL. -func (c *Client4) GetRedirectLocation(urlParam, etag string) (string, *Response, error) { +func (c *Client4) GetRedirectLocation(ctx context.Context, urlParam, etag string) (string, *Response, error) { url := fmt.Sprintf("%s?url=%s", c.redirectLocationRoute(), url.QueryEscape(urlParam)) - r, err := c.DoAPIGet(url, etag) + r, err := c.DoAPIGet(ctx, url, etag) if err != nil { return "", BuildResponse(r), err } @@ -7418,9 +7419,9 @@ func (c *Client4) GetRedirectLocation(urlParam, etag string) (string, *Response, } // SetServerBusy will mark the server as busy, which disables non-critical services for `secs` seconds. -func (c *Client4) SetServerBusy(secs int) (*Response, error) { +func (c *Client4) SetServerBusy(ctx context.Context, secs int) (*Response, error) { url := fmt.Sprintf("%s?seconds=%d", c.serverBusyRoute(), secs) - r, err := c.DoAPIPost(url, "") + r, err := c.DoAPIPost(ctx, url, "") if err != nil { return BuildResponse(r), err } @@ -7429,8 +7430,8 @@ func (c *Client4) SetServerBusy(secs int) (*Response, error) { } // ClearServerBusy will mark the server as not busy. -func (c *Client4) ClearServerBusy() (*Response, error) { - r, err := c.DoAPIDelete(c.serverBusyRoute()) +func (c *Client4) ClearServerBusy(ctx context.Context) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.serverBusyRoute()) if err != nil { return BuildResponse(r), err } @@ -7440,8 +7441,8 @@ func (c *Client4) ClearServerBusy() (*Response, error) { // GetServerBusy returns the current ServerBusyState including the time when a server marked busy // will automatically have the flag cleared. -func (c *Client4) GetServerBusy() (*ServerBusyState, *Response, error) { - r, err := c.DoAPIGet(c.serverBusyRoute(), "") +func (c *Client4) GetServerBusy(ctx context.Context) (*ServerBusyState, *Response, error) { + r, err := c.DoAPIGet(ctx, c.serverBusyRoute(), "") if err != nil { return nil, BuildResponse(r), err } @@ -7455,10 +7456,10 @@ func (c *Client4) GetServerBusy() (*ServerBusyState, *Response, error) { } // RegisterTermsOfServiceAction saves action performed by a user against a specific terms of service. -func (c *Client4) RegisterTermsOfServiceAction(userId, termsOfServiceId string, accepted bool) (*Response, error) { +func (c *Client4) RegisterTermsOfServiceAction(ctx context.Context, userId, termsOfServiceId string, accepted bool) (*Response, error) { url := c.userTermsOfServiceRoute(userId) data := map[string]any{"termsOfServiceId": termsOfServiceId, "accepted": accepted} - r, err := c.DoAPIPost(url, StringInterfaceToJSON(data)) + r, err := c.DoAPIPost(ctx, url, StringInterfaceToJSON(data)) if err != nil { return BuildResponse(r), err } @@ -7467,9 +7468,9 @@ func (c *Client4) RegisterTermsOfServiceAction(userId, termsOfServiceId string, } // GetTermsOfService fetches the latest terms of service -func (c *Client4) GetTermsOfService(etag string) (*TermsOfService, *Response, error) { +func (c *Client4) GetTermsOfService(ctx context.Context, etag string) (*TermsOfService, *Response, error) { url := c.termsOfServiceRoute() - r, err := c.DoAPIGet(url, etag) + r, err := c.DoAPIGet(ctx, url, etag) if err != nil { return nil, BuildResponse(r), err } @@ -7482,9 +7483,9 @@ func (c *Client4) GetTermsOfService(etag string) (*TermsOfService, *Response, er } // GetUserTermsOfService fetches user's latest terms of service action if the latest action was for acceptance. -func (c *Client4) GetUserTermsOfService(userId, etag string) (*UserTermsOfService, *Response, error) { +func (c *Client4) GetUserTermsOfService(ctx context.Context, userId, etag string) (*UserTermsOfService, *Response, error) { url := c.userTermsOfServiceRoute(userId) - r, err := c.DoAPIGet(url, etag) + r, err := c.DoAPIGet(ctx, url, etag) if err != nil { return nil, BuildResponse(r), err } @@ -7497,10 +7498,10 @@ func (c *Client4) GetUserTermsOfService(userId, etag string) (*UserTermsOfServic } // CreateTermsOfService creates new terms of service. -func (c *Client4) CreateTermsOfService(text, userId string) (*TermsOfService, *Response, error) { +func (c *Client4) CreateTermsOfService(ctx context.Context, text, userId string) (*TermsOfService, *Response, error) { url := c.termsOfServiceRoute() data := map[string]any{"text": text} - r, err := c.DoAPIPost(url, StringInterfaceToJSON(data)) + r, err := c.DoAPIPost(ctx, url, StringInterfaceToJSON(data)) if err != nil { return nil, BuildResponse(r), err } @@ -7512,8 +7513,8 @@ func (c *Client4) CreateTermsOfService(text, userId string) (*TermsOfService, *R return &tos, BuildResponse(r), nil } -func (c *Client4) GetGroup(groupID, etag string) (*Group, *Response, error) { - r, err := c.DoAPIGet(c.groupRoute(groupID), etag) +func (c *Client4) GetGroup(ctx context.Context, groupID, etag string) (*Group, *Response, error) { + r, err := c.DoAPIGet(ctx, c.groupRoute(groupID), etag) if err != nil { return nil, BuildResponse(r), err } @@ -7525,12 +7526,12 @@ func (c *Client4) GetGroup(groupID, etag string) (*Group, *Response, error) { return &g, BuildResponse(r), nil } -func (c *Client4) CreateGroup(group *Group) (*Group, *Response, error) { +func (c *Client4) CreateGroup(ctx context.Context, group *Group) (*Group, *Response, error) { groupJSON, err := json.Marshal(group) if err != nil { return nil, nil, NewAppError("CreateGroup", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes("/groups", groupJSON) + r, err := c.DoAPIPostBytes(ctx, "/groups", groupJSON) if err != nil { return nil, BuildResponse(r), err } @@ -7542,8 +7543,8 @@ func (c *Client4) CreateGroup(group *Group) (*Group, *Response, error) { return &p, BuildResponse(r), nil } -func (c *Client4) DeleteGroup(groupID string) (*Group, *Response, error) { - r, err := c.DoAPIDelete(c.groupRoute(groupID)) +func (c *Client4) DeleteGroup(ctx context.Context, groupID string) (*Group, *Response, error) { + r, err := c.DoAPIDelete(ctx, c.groupRoute(groupID)) if err != nil { return nil, BuildResponse(r), err } @@ -7555,8 +7556,8 @@ func (c *Client4) DeleteGroup(groupID string) (*Group, *Response, error) { return &p, BuildResponse(r), nil } -func (c *Client4) RestoreGroup(groupID string, etag string) (*Group, *Response, error) { - r, err := c.DoAPIPost(c.groupRoute(groupID)+"/restore", "") +func (c *Client4) RestoreGroup(ctx context.Context, groupID string, etag string) (*Group, *Response, error) { + r, err := c.DoAPIPost(ctx, c.groupRoute(groupID)+"/restore", "") if err != nil { return nil, BuildResponse(r), err } @@ -7568,12 +7569,12 @@ func (c *Client4) RestoreGroup(groupID string, etag string) (*Group, *Response, return &p, BuildResponse(r), nil } -func (c *Client4) PatchGroup(groupID string, patch *GroupPatch) (*Group, *Response, error) { +func (c *Client4) PatchGroup(ctx context.Context, groupID string, patch *GroupPatch) (*Group, *Response, error) { payload, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchGroup", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPut(c.groupRoute(groupID)+"/patch", string(payload)) + r, err := c.DoAPIPut(ctx, c.groupRoute(groupID)+"/patch", string(payload)) if err != nil { return nil, BuildResponse(r), err } @@ -7585,12 +7586,12 @@ func (c *Client4) PatchGroup(groupID string, patch *GroupPatch) (*Group, *Respon return &g, BuildResponse(r), nil } -func (c *Client4) UpsertGroupMembers(groupID string, userIds *GroupModifyMembers) ([]*GroupMember, *Response, error) { +func (c *Client4) UpsertGroupMembers(ctx context.Context, groupID string, userIds *GroupModifyMembers) ([]*GroupMember, *Response, error) { payload, err := json.Marshal(userIds) if err != nil { return nil, nil, NewAppError("UpsertGroupMembers", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.groupRoute(groupID)+"/members", payload) + r, err := c.DoAPIPostBytes(ctx, c.groupRoute(groupID)+"/members", payload) if err != nil { return nil, BuildResponse(r), err } @@ -7602,12 +7603,12 @@ func (c *Client4) UpsertGroupMembers(groupID string, userIds *GroupModifyMembers return g, BuildResponse(r), nil } -func (c *Client4) DeleteGroupMembers(groupID string, userIds *GroupModifyMembers) ([]*GroupMember, *Response, error) { +func (c *Client4) DeleteGroupMembers(ctx context.Context, groupID string, userIds *GroupModifyMembers) ([]*GroupMember, *Response, error) { payload, err := json.Marshal(userIds) if err != nil { return nil, nil, NewAppError("DeleteGroupMembers", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIDeleteBytes(c.groupRoute(groupID)+"/members", payload) + r, err := c.DoAPIDeleteBytes(ctx, c.groupRoute(groupID)+"/members", payload) if err != nil { return nil, BuildResponse(r), err } @@ -7619,13 +7620,13 @@ func (c *Client4) DeleteGroupMembers(groupID string, userIds *GroupModifyMembers return g, BuildResponse(r), nil } -func (c *Client4) LinkGroupSyncable(groupID, syncableID string, syncableType GroupSyncableType, patch *GroupSyncablePatch) (*GroupSyncable, *Response, error) { +func (c *Client4) LinkGroupSyncable(ctx context.Context, groupID, syncableID string, syncableType GroupSyncableType, patch *GroupSyncablePatch) (*GroupSyncable, *Response, error) { payload, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("LinkGroupSyncable", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } url := fmt.Sprintf("%s/link", c.groupSyncableRoute(groupID, syncableID, syncableType)) - r, err := c.DoAPIPost(url, string(payload)) + r, err := c.DoAPIPost(ctx, url, string(payload)) if err != nil { return nil, BuildResponse(r), err } @@ -7637,9 +7638,9 @@ func (c *Client4) LinkGroupSyncable(groupID, syncableID string, syncableType Gro return &gs, BuildResponse(r), nil } -func (c *Client4) UnlinkGroupSyncable(groupID, syncableID string, syncableType GroupSyncableType) (*Response, error) { +func (c *Client4) UnlinkGroupSyncable(ctx context.Context, groupID, syncableID string, syncableType GroupSyncableType) (*Response, error) { url := fmt.Sprintf("%s/link", c.groupSyncableRoute(groupID, syncableID, syncableType)) - r, err := c.DoAPIDelete(url) + r, err := c.DoAPIDelete(ctx, url) if err != nil { return BuildResponse(r), err } @@ -7647,8 +7648,8 @@ func (c *Client4) UnlinkGroupSyncable(groupID, syncableID string, syncableType G return BuildResponse(r), nil } -func (c *Client4) GetGroupSyncable(groupID, syncableID string, syncableType GroupSyncableType, etag string) (*GroupSyncable, *Response, error) { - r, err := c.DoAPIGet(c.groupSyncableRoute(groupID, syncableID, syncableType), etag) +func (c *Client4) GetGroupSyncable(ctx context.Context, groupID, syncableID string, syncableType GroupSyncableType, etag string) (*GroupSyncable, *Response, error) { + r, err := c.DoAPIGet(ctx, c.groupSyncableRoute(groupID, syncableID, syncableType), etag) if err != nil { return nil, BuildResponse(r), err } @@ -7660,8 +7661,8 @@ func (c *Client4) GetGroupSyncable(groupID, syncableID string, syncableType Grou return &gs, BuildResponse(r), nil } -func (c *Client4) GetGroupSyncables(groupID string, syncableType GroupSyncableType, etag string) ([]*GroupSyncable, *Response, error) { - r, err := c.DoAPIGet(c.groupSyncablesRoute(groupID, syncableType), etag) +func (c *Client4) GetGroupSyncables(ctx context.Context, groupID string, syncableType GroupSyncableType, etag string) ([]*GroupSyncable, *Response, error) { + r, err := c.DoAPIGet(ctx, c.groupSyncablesRoute(groupID, syncableType), etag) if err != nil { return nil, BuildResponse(r), err } @@ -7673,12 +7674,12 @@ func (c *Client4) GetGroupSyncables(groupID string, syncableType GroupSyncableTy return list, BuildResponse(r), nil } -func (c *Client4) PatchGroupSyncable(groupID, syncableID string, syncableType GroupSyncableType, patch *GroupSyncablePatch) (*GroupSyncable, *Response, error) { +func (c *Client4) PatchGroupSyncable(ctx context.Context, groupID, syncableID string, syncableType GroupSyncableType, patch *GroupSyncablePatch) (*GroupSyncable, *Response, error) { payload, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchGroupSyncable", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPut(c.groupSyncableRoute(groupID, syncableID, syncableType)+"/patch", string(payload)) + r, err := c.DoAPIPut(ctx, c.groupSyncableRoute(groupID, syncableID, syncableType)+"/patch", string(payload)) if err != nil { return nil, BuildResponse(r), err } @@ -7690,10 +7691,10 @@ func (c *Client4) PatchGroupSyncable(groupID, syncableID string, syncableType Gr return &gs, BuildResponse(r), nil } -func (c *Client4) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, page, perPage int, etag string) ([]*UserWithGroups, int64, *Response, error) { +func (c *Client4) TeamMembersMinusGroupMembers(ctx context.Context, teamID string, groupIDs []string, page, perPage int, etag string) ([]*UserWithGroups, int64, *Response, error) { groupIDStr := strings.Join(groupIDs, ",") query := fmt.Sprintf("?group_ids=%s&page=%d&per_page=%d", groupIDStr, page, perPage) - r, err := c.DoAPIGet(c.teamRoute(teamID)+"/members_minus_group_members"+query, etag) + r, err := c.DoAPIGet(ctx, c.teamRoute(teamID)+"/members_minus_group_members"+query, etag) if err != nil { return nil, 0, BuildResponse(r), err } @@ -7706,10 +7707,10 @@ func (c *Client4) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, return ugc.Users, ugc.Count, BuildResponse(r), nil } -func (c *Client4) ChannelMembersMinusGroupMembers(channelID string, groupIDs []string, page, perPage int, etag string) ([]*UserWithGroups, int64, *Response, error) { +func (c *Client4) ChannelMembersMinusGroupMembers(ctx context.Context, channelID string, groupIDs []string, page, perPage int, etag string) ([]*UserWithGroups, int64, *Response, error) { groupIDStr := strings.Join(groupIDs, ",") query := fmt.Sprintf("?group_ids=%s&page=%d&per_page=%d", groupIDStr, page, perPage) - r, err := c.DoAPIGet(c.channelRoute(channelID)+"/members_minus_group_members"+query, etag) + r, err := c.DoAPIGet(ctx, c.channelRoute(channelID)+"/members_minus_group_members"+query, etag) if err != nil { return nil, 0, BuildResponse(r), err } @@ -7721,12 +7722,12 @@ func (c *Client4) ChannelMembersMinusGroupMembers(channelID string, groupIDs []s return ugc.Users, ugc.Count, BuildResponse(r), nil } -func (c *Client4) PatchConfig(config *Config) (*Config, *Response, error) { +func (c *Client4) PatchConfig(ctx context.Context, config *Config) (*Config, *Response, error) { buf, err := json.Marshal(config) if err != nil { return nil, nil, NewAppError("PatchConfig", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.configRoute()+"/patch", buf) + r, err := c.DoAPIPutBytes(ctx, c.configRoute()+"/patch", buf) if err != nil { return nil, BuildResponse(r), err } @@ -7737,8 +7738,8 @@ func (c *Client4) PatchConfig(config *Config) (*Config, *Response, error) { return cfg, BuildResponse(r), d.Decode(&cfg) } -func (c *Client4) GetChannelModerations(channelID string, etag string) ([]*ChannelModeration, *Response, error) { - r, err := c.DoAPIGet(c.channelRoute(channelID)+"/moderations", etag) +func (c *Client4) GetChannelModerations(ctx context.Context, channelID string, etag string) ([]*ChannelModeration, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelRoute(channelID)+"/moderations", etag) if err != nil { return nil, BuildResponse(r), err } @@ -7752,13 +7753,13 @@ func (c *Client4) GetChannelModerations(channelID string, etag string) ([]*Chann return ch, BuildResponse(r), nil } -func (c *Client4) PatchChannelModerations(channelID string, patch []*ChannelModerationPatch) ([]*ChannelModeration, *Response, error) { +func (c *Client4) PatchChannelModerations(ctx context.Context, channelID string, patch []*ChannelModerationPatch) ([]*ChannelModeration, *Response, error) { payload, err := json.Marshal(patch) if err != nil { return nil, nil, NewAppError("PatchChannelModerations", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPut(c.channelRoute(channelID)+"/moderations/patch", string(payload)) + r, err := c.DoAPIPut(ctx, c.channelRoute(channelID)+"/moderations/patch", string(payload)) if err != nil { return nil, BuildResponse(r), err } @@ -7772,8 +7773,8 @@ func (c *Client4) PatchChannelModerations(channelID string, patch []*ChannelMode return ch, BuildResponse(r), nil } -func (c *Client4) GetKnownUsers() ([]string, *Response, error) { - r, err := c.DoAPIGet(c.usersRoute()+"/known", "") +func (c *Client4) GetKnownUsers(ctx context.Context) ([]string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.usersRoute()+"/known", "") if err != nil { return nil, BuildResponse(r), err } @@ -7784,12 +7785,12 @@ func (c *Client4) GetKnownUsers() ([]string, *Response, error) { } // PublishUserTyping publishes a user is typing websocket event based on the provided TypingRequest. -func (c *Client4) PublishUserTyping(userID string, typingRequest TypingRequest) (*Response, error) { +func (c *Client4) PublishUserTyping(ctx context.Context, userID string, typingRequest TypingRequest) (*Response, error) { buf, err := json.Marshal(typingRequest) if err != nil { return nil, NewAppError("PublishUserTyping", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.publishUserTypingRoute(userID), buf) + r, err := c.DoAPIPostBytes(ctx, c.publishUserTypingRoute(userID), buf) if err != nil { return BuildResponse(r), err } @@ -7797,8 +7798,8 @@ func (c *Client4) PublishUserTyping(userID string, typingRequest TypingRequest) return BuildResponse(r), nil } -func (c *Client4) GetChannelMemberCountsByGroup(channelID string, includeTimezones bool, etag string) ([]*ChannelMemberCountByGroup, *Response, error) { - r, err := c.DoAPIGet(c.channelRoute(channelID)+"/member_counts_by_group?include_timezones="+strconv.FormatBool(includeTimezones), etag) +func (c *Client4) GetChannelMemberCountsByGroup(ctx context.Context, channelID string, includeTimezones bool, etag string) ([]*ChannelMemberCountByGroup, *Response, error) { + r, err := c.DoAPIGet(ctx, c.channelRoute(channelID)+"/member_counts_by_group?include_timezones="+strconv.FormatBool(includeTimezones), etag) if err != nil { return nil, BuildResponse(r), err } @@ -7812,13 +7813,13 @@ func (c *Client4) GetChannelMemberCountsByGroup(channelID string, includeTimezon return ch, BuildResponse(r), nil } -func (c *Client4) RequestTrialLicenseWithExtraFields(trialRequest *TrialLicenseRequest) (*Response, error) { +func (c *Client4) RequestTrialLicenseWithExtraFields(ctx context.Context, trialRequest *TrialLicenseRequest) (*Response, error) { b, err := json.Marshal(trialRequest) if err != nil { return nil, NewAppError("RequestTrialLicense", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost("/trial-license", string(b)) + r, err := c.DoAPIPost(ctx, "/trial-license", string(b)) if err != nil { return BuildResponse(r), err } @@ -7829,12 +7830,12 @@ func (c *Client4) RequestTrialLicenseWithExtraFields(trialRequest *TrialLicenseR // RequestTrialLicense will request a trial license and install it in the server // DEPRECATED - USE RequestTrialLicenseWithExtraFields (this method remains for backwards compatibility) -func (c *Client4) RequestTrialLicense(users int) (*Response, error) { +func (c *Client4) RequestTrialLicense(ctx context.Context, users int) (*Response, error) { b, err := json.Marshal(map[string]any{"users": users, "terms_accepted": true}) if err != nil { return nil, NewAppError("RequestTrialLicense", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost("/trial-license", string(b)) + r, err := c.DoAPIPost(ctx, "/trial-license", string(b)) if err != nil { return BuildResponse(r), err } @@ -7843,8 +7844,8 @@ func (c *Client4) RequestTrialLicense(users int) (*Response, error) { } // GetGroupStats retrieves stats for a Mattermost Group -func (c *Client4) GetGroupStats(groupID string) (*GroupStats, *Response, error) { - r, err := c.DoAPIGet(c.groupRoute(groupID)+"/stats", "") +func (c *Client4) GetGroupStats(ctx context.Context, groupID string) (*GroupStats, *Response, error) { + r, err := c.DoAPIGet(ctx, c.groupRoute(groupID)+"/stats", "") if err != nil { return nil, BuildResponse(r), err } @@ -7856,9 +7857,9 @@ func (c *Client4) GetGroupStats(groupID string) (*GroupStats, *Response, error) return &gs, BuildResponse(r), nil } -func (c *Client4) GetSidebarCategoriesForTeamForUser(userID, teamID, etag string) (*OrderedSidebarCategories, *Response, error) { +func (c *Client4) GetSidebarCategoriesForTeamForUser(ctx context.Context, userID, teamID, etag string) (*OrderedSidebarCategories, *Response, error) { route := c.userCategoryRoute(userID, teamID) - r, err := c.DoAPIGet(route, etag) + r, err := c.DoAPIGet(ctx, route, etag) if err != nil { return nil, BuildResponse(r), err } @@ -7871,13 +7872,13 @@ func (c *Client4) GetSidebarCategoriesForTeamForUser(userID, teamID, etag string return cat, BuildResponse(r), nil } -func (c *Client4) CreateSidebarCategoryForTeamForUser(userID, teamID string, category *SidebarCategoryWithChannels) (*SidebarCategoryWithChannels, *Response, error) { +func (c *Client4) CreateSidebarCategoryForTeamForUser(ctx context.Context, userID, teamID string, category *SidebarCategoryWithChannels) (*SidebarCategoryWithChannels, *Response, error) { payload, err := json.Marshal(category) if err != nil { return nil, nil, NewAppError("CreateSidebarCategoryForTeamForUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } route := c.userCategoryRoute(userID, teamID) - r, err := c.DoAPIPostBytes(route, payload) + r, err := c.DoAPIPostBytes(ctx, route, payload) if err != nil { return nil, BuildResponse(r), err } @@ -7890,14 +7891,14 @@ func (c *Client4) CreateSidebarCategoryForTeamForUser(userID, teamID string, cat return cat, BuildResponse(r), nil } -func (c *Client4) UpdateSidebarCategoriesForTeamForUser(userID, teamID string, categories []*SidebarCategoryWithChannels) ([]*SidebarCategoryWithChannels, *Response, error) { +func (c *Client4) UpdateSidebarCategoriesForTeamForUser(ctx context.Context, userID, teamID string, categories []*SidebarCategoryWithChannels) ([]*SidebarCategoryWithChannels, *Response, error) { payload, err := json.Marshal(categories) if err != nil { return nil, nil, NewAppError("UpdateSidebarCategoriesForTeamForUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } route := c.userCategoryRoute(userID, teamID) - r, err := c.DoAPIPutBytes(route, payload) + r, err := c.DoAPIPutBytes(ctx, route, payload) if err != nil { return nil, BuildResponse(r), err } @@ -7912,9 +7913,9 @@ func (c *Client4) UpdateSidebarCategoriesForTeamForUser(userID, teamID string, c return cat, BuildResponse(r), nil } -func (c *Client4) GetSidebarCategoryOrderForTeamForUser(userID, teamID, etag string) ([]string, *Response, error) { +func (c *Client4) GetSidebarCategoryOrderForTeamForUser(ctx context.Context, userID, teamID, etag string) ([]string, *Response, error) { route := c.userCategoryRoute(userID, teamID) + "/order" - r, err := c.DoAPIGet(route, etag) + r, err := c.DoAPIGet(ctx, route, etag) if err != nil { return nil, BuildResponse(r), err } @@ -7922,13 +7923,13 @@ func (c *Client4) GetSidebarCategoryOrderForTeamForUser(userID, teamID, etag str return ArrayFromJSON(r.Body), BuildResponse(r), nil } -func (c *Client4) UpdateSidebarCategoryOrderForTeamForUser(userID, teamID string, order []string) ([]string, *Response, error) { +func (c *Client4) UpdateSidebarCategoryOrderForTeamForUser(ctx context.Context, userID, teamID string, order []string) ([]string, *Response, error) { payload, err := json.Marshal(order) if err != nil { return nil, nil, NewAppError("UpdateSidebarCategoryOrderForTeamForUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } route := c.userCategoryRoute(userID, teamID) + "/order" - r, err := c.DoAPIPutBytes(route, payload) + r, err := c.DoAPIPutBytes(ctx, route, payload) if err != nil { return nil, BuildResponse(r), err } @@ -7936,9 +7937,9 @@ func (c *Client4) UpdateSidebarCategoryOrderForTeamForUser(userID, teamID string return ArrayFromJSON(r.Body), BuildResponse(r), nil } -func (c *Client4) GetSidebarCategoryForTeamForUser(userID, teamID, categoryID, etag string) (*SidebarCategoryWithChannels, *Response, error) { +func (c *Client4) GetSidebarCategoryForTeamForUser(ctx context.Context, userID, teamID, categoryID, etag string) (*SidebarCategoryWithChannels, *Response, error) { route := c.userCategoryRoute(userID, teamID) + "/" + categoryID - r, err := c.DoAPIGet(route, etag) + r, err := c.DoAPIGet(ctx, route, etag) if err != nil { return nil, BuildResponse(r), err } @@ -7952,13 +7953,13 @@ func (c *Client4) GetSidebarCategoryForTeamForUser(userID, teamID, categoryID, e return cat, BuildResponse(r), nil } -func (c *Client4) UpdateSidebarCategoryForTeamForUser(userID, teamID, categoryID string, category *SidebarCategoryWithChannels) (*SidebarCategoryWithChannels, *Response, error) { +func (c *Client4) UpdateSidebarCategoryForTeamForUser(ctx context.Context, userID, teamID, categoryID string, category *SidebarCategoryWithChannels) (*SidebarCategoryWithChannels, *Response, error) { payload, err := json.Marshal(category) if err != nil { return nil, nil, NewAppError("UpdateSidebarCategoryForTeamForUser", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } route := c.userCategoryRoute(userID, teamID) + "/" + categoryID - r, err := c.DoAPIPutBytes(route, payload) + r, err := c.DoAPIPutBytes(ctx, route, payload) if err != nil { return nil, BuildResponse(r), err } @@ -7973,8 +7974,8 @@ func (c *Client4) UpdateSidebarCategoryForTeamForUser(userID, teamID, categoryID } // CheckIntegrity performs a database integrity check. -func (c *Client4) CheckIntegrity() ([]IntegrityCheckResult, *Response, error) { - r, err := c.DoAPIPost("/integrity", "") +func (c *Client4) CheckIntegrity(ctx context.Context) ([]IntegrityCheckResult, *Response, error) { + r, err := c.DoAPIPost(ctx, "/integrity", "") if err != nil { return nil, BuildResponse(r), err } @@ -7986,9 +7987,9 @@ func (c *Client4) CheckIntegrity() ([]IntegrityCheckResult, *Response, error) { return results, BuildResponse(r), nil } -func (c *Client4) GetNotices(lastViewed int64, teamId string, client NoticeClientType, clientVersion, locale, etag string) (NoticeMessages, *Response, error) { +func (c *Client4) GetNotices(ctx context.Context, lastViewed int64, teamId string, client NoticeClientType, clientVersion, locale, etag string) (NoticeMessages, *Response, error) { url := fmt.Sprintf("/system/notices/%s?lastViewed=%d&client=%s&clientVersion=%s&locale=%s", teamId, lastViewed, client, clientVersion, locale) - r, err := c.DoAPIGet(url, etag) + r, err := c.DoAPIGet(ctx, url, etag) if err != nil { return nil, BuildResponse(r), err } @@ -8000,8 +8001,8 @@ func (c *Client4) GetNotices(lastViewed int64, teamId string, client NoticeClien return notices, BuildResponse(r), nil } -func (c *Client4) MarkNoticesViewed(ids []string) (*Response, error) { - r, err := c.DoAPIPut("/system/notices/view", ArrayToJSON(ids)) +func (c *Client4) MarkNoticesViewed(ctx context.Context, ids []string) (*Response, error) { + r, err := c.DoAPIPut(ctx, "/system/notices/view", ArrayToJSON(ids)) if err != nil { return BuildResponse(r), err } @@ -8009,12 +8010,12 @@ func (c *Client4) MarkNoticesViewed(ids []string) (*Response, error) { return BuildResponse(r), nil } -func (c *Client4) CompleteOnboarding(request *CompleteOnboardingRequest) (*Response, error) { +func (c *Client4) CompleteOnboarding(ctx context.Context, request *CompleteOnboardingRequest) (*Response, error) { buf, err := json.Marshal(request) if err != nil { return nil, NewAppError("CompleteOnboarding", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.systemRoute()+"/onboarding/complete", string(buf)) + r, err := c.DoAPIPost(ctx, c.systemRoute()+"/onboarding/complete", string(buf)) if err != nil { return BuildResponse(r), err } @@ -8024,12 +8025,12 @@ func (c *Client4) CompleteOnboarding(request *CompleteOnboardingRequest) (*Respo } // CreateUpload creates a new upload session. -func (c *Client4) CreateUpload(us *UploadSession) (*UploadSession, *Response, error) { +func (c *Client4) CreateUpload(ctx context.Context, us *UploadSession) (*UploadSession, *Response, error) { buf, err := json.Marshal(us) if err != nil { return nil, nil, NewAppError("CreateUpload", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.uploadsRoute(), buf) + r, err := c.DoAPIPostBytes(ctx, c.uploadsRoute(), buf) if err != nil { return nil, BuildResponse(r), err } @@ -8043,8 +8044,8 @@ func (c *Client4) CreateUpload(us *UploadSession) (*UploadSession, *Response, er } // GetUpload returns the upload session for the specified uploadId. -func (c *Client4) GetUpload(uploadId string) (*UploadSession, *Response, error) { - r, err := c.DoAPIGet(c.uploadRoute(uploadId), "") +func (c *Client4) GetUpload(ctx context.Context, uploadId string) (*UploadSession, *Response, error) { + r, err := c.DoAPIGet(ctx, c.uploadRoute(uploadId), "") if err != nil { return nil, BuildResponse(r), err } @@ -8058,8 +8059,8 @@ func (c *Client4) GetUpload(uploadId string) (*UploadSession, *Response, error) // GetUploadsForUser returns the upload sessions created by the specified // userId. -func (c *Client4) GetUploadsForUser(userId string) ([]*UploadSession, *Response, error) { - r, err := c.DoAPIGet(c.userRoute(userId)+"/uploads", "") +func (c *Client4) GetUploadsForUser(ctx context.Context, userId string) ([]*UploadSession, *Response, error) { + r, err := c.DoAPIGet(ctx, c.userRoute(userId)+"/uploads", "") if err != nil { return nil, BuildResponse(r), err } @@ -8073,9 +8074,9 @@ func (c *Client4) GetUploadsForUser(userId string) ([]*UploadSession, *Response, // UploadData performs an upload. On success it returns // a FileInfo object. -func (c *Client4) UploadData(uploadId string, data io.Reader) (*FileInfo, *Response, error) { +func (c *Client4) UploadData(ctx context.Context, uploadId string, data io.Reader) (*FileInfo, *Response, error) { url := c.uploadRoute(uploadId) - r, err := c.DoAPIRequestReader("POST", c.APIURL+url, data, nil) + r, err := c.DoAPIRequestReader(ctx, "POST", c.APIURL+url, data, nil) if err != nil { return nil, BuildResponse(r), err } @@ -8090,9 +8091,9 @@ func (c *Client4) UploadData(uploadId string, data io.Reader) (*FileInfo, *Respo return &fi, BuildResponse(r), nil } -func (c *Client4) UpdatePassword(userId, currentPassword, newPassword string) (*Response, error) { +func (c *Client4) UpdatePassword(ctx context.Context, userId, currentPassword, newPassword string) (*Response, error) { requestBody := map[string]string{"current_password": currentPassword, "new_password": newPassword} - r, err := c.DoAPIPut(c.userRoute(userId)+"/password", MapToJSON(requestBody)) + r, err := c.DoAPIPut(ctx, c.userRoute(userId)+"/password", MapToJSON(requestBody)) if err != nil { return BuildResponse(r), err } @@ -8102,8 +8103,8 @@ func (c *Client4) UpdatePassword(userId, currentPassword, newPassword string) (* // Cloud Section -func (c *Client4) GetCloudProducts() ([]*Product, *Response, error) { - r, err := c.DoAPIGet(c.cloudRoute()+"/products", "") +func (c *Client4) GetCloudProducts(ctx context.Context) ([]*Product, *Response, error) { + r, err := c.DoAPIGet(ctx, c.cloudRoute()+"/products", "") if err != nil { return nil, BuildResponse(r), err } @@ -8115,8 +8116,8 @@ func (c *Client4) GetCloudProducts() ([]*Product, *Response, error) { return cloudProducts, BuildResponse(r), nil } -func (c *Client4) GetSelfHostedProducts() ([]*Product, *Response, error) { - r, err := c.DoAPIGet(c.cloudRoute()+"/products/selfhosted", "") +func (c *Client4) GetSelfHostedProducts(ctx context.Context) ([]*Product, *Response, error) { + r, err := c.DoAPIGet(ctx, c.cloudRoute()+"/products/selfhosted", "") if err != nil { return nil, BuildResponse(r), err } @@ -8128,8 +8129,8 @@ func (c *Client4) GetSelfHostedProducts() ([]*Product, *Response, error) { return products, BuildResponse(r), nil } -func (c *Client4) GetProductLimits() (*ProductLimits, *Response, error) { - r, err := c.DoAPIGet(c.cloudRoute()+"/limits", "") +func (c *Client4) GetProductLimits(ctx context.Context) (*ProductLimits, *Response, error) { + r, err := c.DoAPIGet(ctx, c.cloudRoute()+"/limits", "") if err != nil { return nil, BuildResponse(r), err } @@ -8141,8 +8142,8 @@ func (c *Client4) GetProductLimits() (*ProductLimits, *Response, error) { return productLimits, BuildResponse(r), nil } -func (c *Client4) CreateCustomerPayment() (*StripeSetupIntent, *Response, error) { - r, err := c.DoAPIPost(c.cloudRoute()+"/payment", "") +func (c *Client4) CreateCustomerPayment(ctx context.Context) (*StripeSetupIntent, *Response, error) { + r, err := c.DoAPIPost(ctx, c.cloudRoute()+"/payment", "") if err != nil { return nil, BuildResponse(r), err } @@ -8154,12 +8155,12 @@ func (c *Client4) CreateCustomerPayment() (*StripeSetupIntent, *Response, error) return setupIntent, BuildResponse(r), nil } -func (c *Client4) ConfirmCustomerPayment(confirmRequest *ConfirmPaymentMethodRequest) (*Response, error) { +func (c *Client4) ConfirmCustomerPayment(ctx context.Context, confirmRequest *ConfirmPaymentMethodRequest) (*Response, error) { json, err := json.Marshal(confirmRequest) if err != nil { return nil, NewAppError("ConfirmCustomerPayment", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.cloudRoute()+"/payment/confirm", json) + r, err := c.DoAPIPostBytes(ctx, c.cloudRoute()+"/payment/confirm", json) if err != nil { return BuildResponse(r), err } @@ -8168,12 +8169,12 @@ func (c *Client4) ConfirmCustomerPayment(confirmRequest *ConfirmPaymentMethodReq return BuildResponse(r), nil } -func (c *Client4) RequestCloudTrial(cloudTrialRequest *StartCloudTrialRequest) (*Subscription, *Response, error) { +func (c *Client4) RequestCloudTrial(ctx context.Context, cloudTrialRequest *StartCloudTrialRequest) (*Subscription, *Response, error) { payload, err := json.Marshal(cloudTrialRequest) if err != nil { return nil, nil, NewAppError("RequestCloudTrial", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.cloudRoute()+"/request-trial", payload) + r, err := c.DoAPIPutBytes(ctx, c.cloudRoute()+"/request-trial", payload) if err != nil { return nil, BuildResponse(r), err } @@ -8185,8 +8186,8 @@ func (c *Client4) RequestCloudTrial(cloudTrialRequest *StartCloudTrialRequest) ( return subscription, BuildResponse(r), nil } -func (c *Client4) ValidateWorkspaceBusinessEmail() (*Response, error) { - r, err := c.DoAPIPost(c.cloudRoute()+"/validate-workspace-business-email", "") +func (c *Client4) ValidateWorkspaceBusinessEmail(ctx context.Context) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.cloudRoute()+"/validate-workspace-business-email", "") if err != nil { return BuildResponse(r), err } @@ -8195,13 +8196,13 @@ func (c *Client4) ValidateWorkspaceBusinessEmail() (*Response, error) { return BuildResponse(r), nil } -func (c *Client4) NotifyAdmin(nr *NotifyAdminToUpgradeRequest) (int, error) { +func (c *Client4) NotifyAdmin(ctx context.Context, nr *NotifyAdminToUpgradeRequest) (int, error) { nrJSON, err := json.Marshal(nr) if err != nil { return 0, err } - r, err := c.DoAPIPost("/users/notify-admin", string(nrJSON)) + r, err := c.DoAPIPost(ctx, "/users/notify-admin", string(nrJSON)) if err != nil { return r.StatusCode, err } @@ -8211,13 +8212,13 @@ func (c *Client4) NotifyAdmin(nr *NotifyAdminToUpgradeRequest) (int, error) { return r.StatusCode, nil } -func (c *Client4) TriggerNotifyAdmin(nr *NotifyAdminToUpgradeRequest) (int, error) { +func (c *Client4) TriggerNotifyAdmin(ctx context.Context, nr *NotifyAdminToUpgradeRequest) (int, error) { nrJSON, err := json.Marshal(nr) if err != nil { return 0, err } - r, err := c.DoAPIPost("/users/trigger-notify-admin-posts", string(nrJSON)) + r, err := c.DoAPIPost(ctx, "/users/trigger-notify-admin-posts", string(nrJSON)) if err != nil { return r.StatusCode, err } @@ -8227,9 +8228,9 @@ func (c *Client4) TriggerNotifyAdmin(nr *NotifyAdminToUpgradeRequest) (int, erro return r.StatusCode, nil } -func (c *Client4) ValidateBusinessEmail(email *ValidateBusinessEmailRequest) (*Response, error) { +func (c *Client4) ValidateBusinessEmail(ctx context.Context, email *ValidateBusinessEmailRequest) (*Response, error) { payload, _ := json.Marshal(email) - r, err := c.DoAPIPostBytes(c.cloudRoute()+"/validate-business-email", payload) + r, err := c.DoAPIPostBytes(ctx, c.cloudRoute()+"/validate-business-email", payload) if err != nil { return BuildResponse(r), err } @@ -8238,8 +8239,8 @@ func (c *Client4) ValidateBusinessEmail(email *ValidateBusinessEmailRequest) (*R return BuildResponse(r), nil } -func (c *Client4) GetCloudCustomer() (*CloudCustomer, *Response, error) { - r, err := c.DoAPIGet(c.cloudRoute()+"/customer", "") +func (c *Client4) GetCloudCustomer(ctx context.Context) (*CloudCustomer, *Response, error) { + r, err := c.DoAPIGet(ctx, c.cloudRoute()+"/customer", "") if err != nil { return nil, BuildResponse(r), err } @@ -8251,8 +8252,8 @@ func (c *Client4) GetCloudCustomer() (*CloudCustomer, *Response, error) { return cloudCustomer, BuildResponse(r), nil } -func (c *Client4) GetSubscriptionStatus(licenseId string) (*SubscriptionLicenseSelfServeStatusResponse, *Response, error) { - r, err := c.DoAPIGet(fmt.Sprintf("%s%s?licenseID=%s", c.cloudRoute(), "/subscription/self-serve-status", licenseId), "") +func (c *Client4) GetSubscriptionStatus(ctx context.Context, licenseId string) (*SubscriptionLicenseSelfServeStatusResponse, *Response, error) { + r, err := c.DoAPIGet(ctx, fmt.Sprintf("%s%s?licenseID=%s", c.cloudRoute(), "/subscription/self-serve-status", licenseId), "") if err != nil { return nil, BuildResponse(r), err } @@ -8264,8 +8265,8 @@ func (c *Client4) GetSubscriptionStatus(licenseId string) (*SubscriptionLicenseS return status, BuildResponse(r), nil } -func (c *Client4) GetSubscription() (*Subscription, *Response, error) { - r, err := c.DoAPIGet(c.cloudRoute()+"/subscription", "") +func (c *Client4) GetSubscription(ctx context.Context) (*Subscription, *Response, error) { + r, err := c.DoAPIGet(ctx, c.cloudRoute()+"/subscription", "") if err != nil { return nil, BuildResponse(r), err } @@ -8277,8 +8278,8 @@ func (c *Client4) GetSubscription() (*Subscription, *Response, error) { return subscription, BuildResponse(r), nil } -func (c *Client4) GetInvoicesForSubscription() ([]*Invoice, *Response, error) { - r, err := c.DoAPIGet(c.cloudRoute()+"/subscription/invoices", "") +func (c *Client4) GetInvoicesForSubscription(ctx context.Context) ([]*Invoice, *Response, error) { + r, err := c.DoAPIGet(ctx, c.cloudRoute()+"/subscription/invoices", "") if err != nil { return nil, BuildResponse(r), err } @@ -8290,12 +8291,12 @@ func (c *Client4) GetInvoicesForSubscription() ([]*Invoice, *Response, error) { return invoices, BuildResponse(r), nil } -func (c *Client4) UpdateCloudCustomer(customerInfo *CloudCustomerInfo) (*CloudCustomer, *Response, error) { +func (c *Client4) UpdateCloudCustomer(ctx context.Context, customerInfo *CloudCustomerInfo) (*CloudCustomer, *Response, error) { customerBytes, err := json.Marshal(customerInfo) if err != nil { return nil, nil, NewAppError("UpdateCloudCustomer", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.cloudRoute()+"/customer", customerBytes) + r, err := c.DoAPIPutBytes(ctx, c.cloudRoute()+"/customer", customerBytes) if err != nil { return nil, BuildResponse(r), err } @@ -8307,12 +8308,12 @@ func (c *Client4) UpdateCloudCustomer(customerInfo *CloudCustomerInfo) (*CloudCu return customer, BuildResponse(r), nil } -func (c *Client4) UpdateCloudCustomerAddress(address *Address) (*CloudCustomer, *Response, error) { +func (c *Client4) UpdateCloudCustomerAddress(ctx context.Context, address *Address) (*CloudCustomer, *Response, error) { addressBytes, err := json.Marshal(address) if err != nil { return nil, nil, NewAppError("UpdateCloudCustomerAddress", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPutBytes(c.cloudRoute()+"/customer/address", addressBytes) + r, err := c.DoAPIPutBytes(ctx, c.cloudRoute()+"/customer/address", addressBytes) if err != nil { return nil, BuildResponse(r), err } @@ -8324,12 +8325,12 @@ func (c *Client4) UpdateCloudCustomerAddress(address *Address) (*CloudCustomer, return customer, BuildResponse(r), nil } -func (c *Client4) BootstrapSelfHostedSignup(req BootstrapSelfHostedSignupRequest) (*BootstrapSelfHostedSignupResponse, *Response, error) { +func (c *Client4) BootstrapSelfHostedSignup(ctx context.Context, req BootstrapSelfHostedSignupRequest) (*BootstrapSelfHostedSignupResponse, *Response, error) { reqBytes, err := json.Marshal(req) if err != nil { return nil, nil, NewAppError("BootstrapSelfHostedSignup", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.hostedCustomerRoute()+"/bootstrap", reqBytes) + r, err := c.DoAPIPostBytes(ctx, c.hostedCustomerRoute()+"/bootstrap", reqBytes) if err != nil { return nil, BuildResponse(r), err } @@ -8341,8 +8342,8 @@ func (c *Client4) BootstrapSelfHostedSignup(req BootstrapSelfHostedSignupRequest return res, BuildResponse(r), nil } -func (c *Client4) ListImports() ([]string, *Response, error) { - r, err := c.DoAPIGet(c.importsRoute(), "") +func (c *Client4) ListImports(ctx context.Context) ([]string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.importsRoute(), "") if err != nil { return nil, BuildResponse(r), err } @@ -8350,8 +8351,8 @@ func (c *Client4) ListImports() ([]string, *Response, error) { return ArrayFromJSON(r.Body), BuildResponse(r), nil } -func (c *Client4) ListExports() ([]string, *Response, error) { - r, err := c.DoAPIGet(c.exportsRoute(), "") +func (c *Client4) ListExports(ctx context.Context) ([]string, *Response, error) { + r, err := c.DoAPIGet(ctx, c.exportsRoute(), "") if err != nil { return nil, BuildResponse(r), err } @@ -8359,8 +8360,8 @@ func (c *Client4) ListExports() ([]string, *Response, error) { return ArrayFromJSON(r.Body), BuildResponse(r), nil } -func (c *Client4) DeleteExport(name string) (*Response, error) { - r, err := c.DoAPIDelete(c.exportRoute(name)) +func (c *Client4) DeleteExport(ctx context.Context, name string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.exportRoute(name)) if err != nil { return BuildResponse(r), err } @@ -8368,14 +8369,14 @@ func (c *Client4) DeleteExport(name string) (*Response, error) { return BuildResponse(r), nil } -func (c *Client4) DownloadExport(name string, wr io.Writer, offset int64) (int64, *Response, error) { +func (c *Client4) DownloadExport(ctx context.Context, name string, wr io.Writer, offset int64) (int64, *Response, error) { var headers map[string]string if offset > 0 { headers = map[string]string{ HeaderRange: fmt.Sprintf("bytes=%d-", offset), } } - r, err := c.DoAPIRequestWithHeaders(http.MethodGet, c.APIURL+c.exportRoute(name), "", headers) + r, err := c.DoAPIRequestWithHeaders(ctx, http.MethodGet, c.APIURL+c.exportRoute(name), "", headers) if err != nil { return 0, BuildResponse(r), err } @@ -8387,7 +8388,7 @@ func (c *Client4) DownloadExport(name string, wr io.Writer, offset int64) (int64 return n, BuildResponse(r), nil } -func (c *Client4) GetUserThreads(userId, teamId string, options GetUserThreadsOpts) (*Threads, *Response, error) { +func (c *Client4) GetUserThreads(ctx context.Context, userId, teamId string, options GetUserThreadsOpts) (*Threads, *Response, error) { v := url.Values{} if options.Since != 0 { v.Set("since", fmt.Sprintf("%d", options.Since)) @@ -8421,7 +8422,7 @@ func (c *Client4) GetUserThreads(userId, teamId string, options GetUserThreadsOp url += "?" + v.Encode() } - r, err := c.DoAPIGet(url, "") + r, err := c.DoAPIGet(ctx, url, "") if err != nil { return nil, BuildResponse(r), err } @@ -8433,12 +8434,12 @@ func (c *Client4) GetUserThreads(userId, teamId string, options GetUserThreadsOp return &threads, BuildResponse(r), nil } -func (c *Client4) GetUserThread(userId, teamId, threadId string, extended bool) (*ThreadResponse, *Response, error) { +func (c *Client4) GetUserThread(ctx context.Context, userId, teamId, threadId string, extended bool) (*ThreadResponse, *Response, error) { url := c.userThreadRoute(userId, teamId, threadId) if extended { url += "?extended=true" } - r, err := c.DoAPIGet(url, "") + r, err := c.DoAPIGet(ctx, url, "") if err != nil { return nil, BuildResponse(r), err } @@ -8450,8 +8451,8 @@ func (c *Client4) GetUserThread(userId, teamId, threadId string, extended bool) return &thread, BuildResponse(r), nil } -func (c *Client4) UpdateThreadsReadForUser(userId, teamId string) (*Response, error) { - r, err := c.DoAPIPut(fmt.Sprintf("%s/read", c.userThreadsRoute(userId, teamId)), "") +func (c *Client4) UpdateThreadsReadForUser(ctx context.Context, userId, teamId string) (*Response, error) { + r, err := c.DoAPIPut(ctx, fmt.Sprintf("%s/read", c.userThreadsRoute(userId, teamId)), "") if err != nil { return BuildResponse(r), err } @@ -8460,8 +8461,8 @@ func (c *Client4) UpdateThreadsReadForUser(userId, teamId string) (*Response, er return BuildResponse(r), nil } -func (c *Client4) SetThreadUnreadByPostId(userId, teamId, threadId, postId string) (*ThreadResponse, *Response, error) { - r, err := c.DoAPIPost(fmt.Sprintf("%s/set_unread/%s", c.userThreadRoute(userId, teamId, threadId), postId), "") +func (c *Client4) SetThreadUnreadByPostId(ctx context.Context, userId, teamId, threadId, postId string) (*ThreadResponse, *Response, error) { + r, err := c.DoAPIPost(ctx, fmt.Sprintf("%s/set_unread/%s", c.userThreadRoute(userId, teamId, threadId), postId), "") if err != nil { return nil, BuildResponse(r), err } @@ -8472,8 +8473,8 @@ func (c *Client4) SetThreadUnreadByPostId(userId, teamId, threadId, postId strin return &thread, BuildResponse(r), nil } -func (c *Client4) UpdateThreadReadForUser(userId, teamId, threadId string, timestamp int64) (*ThreadResponse, *Response, error) { - r, err := c.DoAPIPut(fmt.Sprintf("%s/read/%d", c.userThreadRoute(userId, teamId, threadId), timestamp), "") +func (c *Client4) UpdateThreadReadForUser(ctx context.Context, userId, teamId, threadId string, timestamp int64) (*ThreadResponse, *Response, error) { + r, err := c.DoAPIPut(ctx, fmt.Sprintf("%s/read/%d", c.userThreadRoute(userId, teamId, threadId), timestamp), "") if err != nil { return nil, BuildResponse(r), err } @@ -8484,13 +8485,13 @@ func (c *Client4) UpdateThreadReadForUser(userId, teamId, threadId string, times return &thread, BuildResponse(r), nil } -func (c *Client4) UpdateThreadFollowForUser(userId, teamId, threadId string, state bool) (*Response, error) { +func (c *Client4) UpdateThreadFollowForUser(ctx context.Context, userId, teamId, threadId string, state bool) (*Response, error) { var err error var r *http.Response if state { - r, err = c.DoAPIPut(c.userThreadRoute(userId, teamId, threadId)+"/following", "") + r, err = c.DoAPIPut(ctx, c.userThreadRoute(userId, teamId, threadId)+"/following", "") } else { - r, err = c.DoAPIDelete(c.userThreadRoute(userId, teamId, threadId) + "/following") + r, err = c.DoAPIDelete(ctx, c.userThreadRoute(userId, teamId, threadId)+"/following") } if err != nil { return BuildResponse(r), err @@ -8500,9 +8501,9 @@ func (c *Client4) UpdateThreadFollowForUser(userId, teamId, threadId string, sta return BuildResponse(r), nil } -func (c *Client4) GetAllSharedChannels(teamID string, page, perPage int) ([]*SharedChannel, *Response, error) { +func (c *Client4) GetAllSharedChannels(ctx context.Context, teamID string, page, perPage int) ([]*SharedChannel, *Response, error) { url := fmt.Sprintf("%s/%s?page=%d&per_page=%d", c.sharedChannelsRoute(), teamID, page, perPage) - r, err := c.DoAPIGet(url, "") + r, err := c.DoAPIGet(ctx, url, "") if err != nil { return nil, BuildResponse(r), err } @@ -8514,9 +8515,9 @@ func (c *Client4) GetAllSharedChannels(teamID string, page, perPage int) ([]*Sha return channels, BuildResponse(r), nil } -func (c *Client4) GetRemoteClusterInfo(remoteID string) (RemoteClusterInfo, *Response, error) { +func (c *Client4) GetRemoteClusterInfo(ctx context.Context, remoteID string) (RemoteClusterInfo, *Response, error) { url := fmt.Sprintf("%s/remote_info/%s", c.sharedChannelsRoute(), remoteID) - r, err := c.DoAPIGet(url, "") + r, err := c.DoAPIGet(ctx, url, "") if err != nil { return RemoteClusterInfo{}, BuildResponse(r), err } @@ -8528,10 +8529,10 @@ func (c *Client4) GetRemoteClusterInfo(remoteID string) (RemoteClusterInfo, *Res return rci, BuildResponse(r), nil } -func (c *Client4) GetAncillaryPermissions(subsectionPermissions []string) ([]string, *Response, error) { +func (c *Client4) GetAncillaryPermissions(ctx context.Context, subsectionPermissions []string) ([]string, *Response, error) { var returnedPermissions []string url := fmt.Sprintf("%s/ancillary?subsection_permissions=%s", c.permissionsRoute(), strings.Join(subsectionPermissions, ",")) - r, err := c.DoAPIGet(url, "") + r, err := c.DoAPIGet(ctx, url, "") if err != nil { return returnedPermissions, BuildResponse(r), err } @@ -8541,9 +8542,9 @@ func (c *Client4) GetAncillaryPermissions(subsectionPermissions []string) ([]str return returnedPermissions, BuildResponse(r), nil } -func (c *Client4) GetUsersWithInvalidEmails(page, perPage int) ([]*User, *Response, error) { +func (c *Client4) GetUsersWithInvalidEmails(ctx context.Context, page, perPage int) ([]*User, *Response, error) { query := fmt.Sprintf("/invalid_emails?page=%v&per_page=%v", page, perPage) - r, err := c.DoAPIGet(c.usersRoute()+query, "") + r, err := c.DoAPIGet(ctx, c.usersRoute()+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -8558,8 +8559,8 @@ func (c *Client4) GetUsersWithInvalidEmails(page, perPage int) ([]*User, *Respon return list, BuildResponse(r), nil } -func (c *Client4) GetAppliedSchemaMigrations() ([]AppliedMigration, *Response, error) { - r, err := c.DoAPIGet(c.systemRoute()+"/schema/version", "") +func (c *Client4) GetAppliedSchemaMigrations(ctx context.Context) ([]AppliedMigration, *Response, error) { + r, err := c.DoAPIGet(ctx, c.systemRoute()+"/schema/version", "") if err != nil { return nil, BuildResponse(r), err } @@ -8574,8 +8575,8 @@ func (c *Client4) GetAppliedSchemaMigrations() ([]AppliedMigration, *Response, e // Usage Section // GetPostsUsage returns rounded off total usage of posts for the instance -func (c *Client4) GetPostsUsage() (*PostsUsage, *Response, error) { - r, err := c.DoAPIGet(c.usageRoute()+"/posts", "") +func (c *Client4) GetPostsUsage(ctx context.Context) (*PostsUsage, *Response, error) { + r, err := c.DoAPIGet(ctx, c.usageRoute()+"/posts", "") if err != nil { return nil, BuildResponse(r), err } @@ -8588,8 +8589,8 @@ func (c *Client4) GetPostsUsage() (*PostsUsage, *Response, error) { // GetStorageUsage returns the file storage usage for the instance, // rounded down the most signigicant digit -func (c *Client4) GetStorageUsage() (*StorageUsage, *Response, error) { - r, err := c.DoAPIGet(c.usageRoute()+"/storage", "") +func (c *Client4) GetStorageUsage(ctx context.Context) (*StorageUsage, *Response, error) { + r, err := c.DoAPIGet(ctx, c.usageRoute()+"/storage", "") if err != nil { return nil, BuildResponse(r), err } @@ -8601,8 +8602,8 @@ func (c *Client4) GetStorageUsage() (*StorageUsage, *Response, error) { } // GetTeamsUsage returns total usage of teams for the instance -func (c *Client4) GetTeamsUsage() (*TeamsUsage, *Response, error) { - r, err := c.DoAPIGet(c.usageRoute()+"/teams", "") +func (c *Client4) GetTeamsUsage(ctx context.Context) (*TeamsUsage, *Response, error) { + r, err := c.DoAPIGet(ctx, c.usageRoute()+"/teams", "") if err != nil { return nil, BuildResponse(r), err } @@ -8613,9 +8614,9 @@ func (c *Client4) GetTeamsUsage() (*TeamsUsage, *Response, error) { return usage, BuildResponse(r), err } -func (c *Client4) GetNewTeamMembersSince(teamID string, timeRange string, page int, perPage int) (*NewTeamMembersList, *Response, error) { +func (c *Client4) GetNewTeamMembersSince(ctx context.Context, teamID string, timeRange string, page int, perPage int) (*NewTeamMembersList, *Response, error) { query := fmt.Sprintf("?time_range=%v&page=%v&per_page=%v", timeRange, page, perPage) - r, err := c.DoAPIGet(c.teamRoute(teamID)+"/top/team_members"+query, "") + r, err := c.DoAPIGet(ctx, c.teamRoute(teamID)+"/top/team_members"+query, "") if err != nil { return nil, BuildResponse(r), err } @@ -8627,8 +8628,8 @@ func (c *Client4) GetNewTeamMembersSince(teamID string, timeRange string, page i return newTeamMembersList, BuildResponse(r), nil } -func (c *Client4) SelfHostedSignupAvailable() (*Response, error) { - r, err := c.DoAPIGet(c.hostedCustomerRoute()+"/signup_available", "") +func (c *Client4) SelfHostedSignupAvailable(ctx context.Context) (*Response, error) { + r, err := c.DoAPIGet(ctx, c.hostedCustomerRoute()+"/signup_available", "") if err != nil { return BuildResponse(r), err @@ -8638,13 +8639,13 @@ func (c *Client4) SelfHostedSignupAvailable() (*Response, error) { return BuildResponse(r), nil } -func (c *Client4) SelfHostedSignupCustomer(form *SelfHostedCustomerForm) (*Response, *SelfHostedSignupCustomerResponse, error) { +func (c *Client4) SelfHostedSignupCustomer(ctx context.Context, form *SelfHostedCustomerForm) (*Response, *SelfHostedSignupCustomerResponse, error) { payloadBytes, err := json.Marshal(form) if err != nil { return nil, nil, NewAppError("SelfHostedSignupCustomer", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.hostedCustomerRoute()+"/customer", string(payloadBytes)) + r, err := c.DoAPIPost(ctx, c.hostedCustomerRoute()+"/customer", string(payloadBytes)) if err != nil { return BuildResponse(r), nil, err @@ -8664,13 +8665,13 @@ func (c *Client4) SelfHostedSignupCustomer(form *SelfHostedCustomerForm) (*Respo return BuildResponse(r), &response, nil } -func (c *Client4) SelfHostedSignupConfirm(form *SelfHostedConfirmPaymentMethodRequest) (*Response, *SelfHostedSignupConfirmClientResponse, error) { +func (c *Client4) SelfHostedSignupConfirm(ctx context.Context, form *SelfHostedConfirmPaymentMethodRequest) (*Response, *SelfHostedSignupConfirmClientResponse, error) { payloadBytes, err := json.Marshal(form) if err != nil { return nil, nil, NewAppError("SelfHostedSignupConfirm", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPost(c.hostedCustomerRoute()+"/confirm", string(payloadBytes)) + r, err := c.DoAPIPost(ctx, c.hostedCustomerRoute()+"/confirm", string(payloadBytes)) if err != nil { return BuildResponse(r), nil, err @@ -8693,8 +8694,8 @@ func (c *Client4) SelfHostedSignupConfirm(form *SelfHostedConfirmPaymentMethodRe return BuildResponse(r), &response, nil } -func (c *Client4) GetSelfHostedInvoices() (*Response, []*Invoice, error) { - r, err := c.DoAPIGet(c.hostedCustomerRoute()+"/invoices", "") +func (c *Client4) GetSelfHostedInvoices(ctx context.Context) (*Response, []*Invoice, error) { + r, err := c.DoAPIGet(ctx, c.hostedCustomerRoute()+"/invoices", "") if err != nil { return BuildResponse(r), nil, err @@ -8717,8 +8718,8 @@ func (c *Client4) GetSelfHostedInvoices() (*Response, []*Invoice, error) { return BuildResponse(r), invoices, nil } -func (c *Client4) GetPostInfo(postId string) (*PostInfo, *Response, error) { - r, err := c.DoAPIGet(c.postRoute(postId)+"/info", "") +func (c *Client4) GetPostInfo(ctx context.Context, postId string) (*PostInfo, *Response, error) { + r, err := c.DoAPIGet(ctx, c.postRoute(postId)+"/info", "") if err != nil { return nil, BuildResponse(r), err } @@ -8731,8 +8732,8 @@ func (c *Client4) GetPostInfo(postId string) (*PostInfo, *Response, error) { return info, BuildResponse(r), nil } -func (c *Client4) AcknowledgePost(postId, userId string) (*PostAcknowledgement, *Response, error) { - r, err := c.DoAPIPost(c.userRoute(userId)+c.postRoute(postId)+"/ack", "") +func (c *Client4) AcknowledgePost(ctx context.Context, postId, userId string) (*PostAcknowledgement, *Response, error) { + r, err := c.DoAPIPost(ctx, c.userRoute(userId)+c.postRoute(postId)+"/ack", "") if err != nil { return nil, BuildResponse(r), err } @@ -8744,8 +8745,8 @@ func (c *Client4) AcknowledgePost(postId, userId string) (*PostAcknowledgement, return ack, BuildResponse(r), nil } -func (c *Client4) UnacknowledgePost(postId, userId string) (*Response, error) { - r, err := c.DoAPIDelete(c.userRoute(userId) + c.postRoute(postId) + "/ack") +func (c *Client4) UnacknowledgePost(ctx context.Context, postId, userId string) (*Response, error) { + r, err := c.DoAPIDelete(ctx, c.userRoute(userId)+c.postRoute(postId)+"/ack") if err != nil { return BuildResponse(r), err } @@ -8753,8 +8754,8 @@ func (c *Client4) UnacknowledgePost(postId, userId string) (*Response, error) { return BuildResponse(r), nil } -func (c *Client4) AddUserToGroupSyncables(userID string) (*Response, error) { - r, err := c.DoAPIPost(c.ldapRoute()+"/users/"+userID+"/group_sync_memberships", "") +func (c *Client4) AddUserToGroupSyncables(ctx context.Context, userID string) (*Response, error) { + r, err := c.DoAPIPost(ctx, c.ldapRoute()+"/users/"+userID+"/group_sync_memberships", "") if err != nil { return BuildResponse(r), err } @@ -8762,8 +8763,8 @@ func (c *Client4) AddUserToGroupSyncables(userID string) (*Response, error) { return BuildResponse(r), nil } -func (c *Client4) CheckCWSConnection(userId string) (*Response, error) { - r, err := c.DoAPIGet(c.cloudRoute()+"/healthz", "") +func (c *Client4) CheckCWSConnection(ctx context.Context, userId string) (*Response, error) { + r, err := c.DoAPIGet(ctx, c.cloudRoute()+"/healthz", "") if err != nil { return BuildResponse(r), err @@ -8773,12 +8774,12 @@ func (c *Client4) CheckCWSConnection(userId string) (*Response, error) { return BuildResponse(r), nil } -func (c *Client4) SubmitTrueUpReview(req map[string]any) (*Response, error) { +func (c *Client4) SubmitTrueUpReview(ctx context.Context, req map[string]any) (*Response, error) { reqBytes, err := json.Marshal(req) if err != nil { return nil, NewAppError("SubmitTrueUpReview", "api.marshal_error", nil, "", http.StatusInternalServerError).Wrap(err) } - r, err := c.DoAPIPostBytes(c.licenseRoute()+"/review", reqBytes) + r, err := c.DoAPIPostBytes(ctx, c.licenseRoute()+"/review", reqBytes) if err != nil { return BuildResponse(r), nil } diff --git a/server/public/model/client4_test.go b/server/public/model/client4_test.go index bb9db34997..66b4f53140 100644 --- a/server/public/model/client4_test.go +++ b/server/public/model/client4_test.go @@ -4,11 +4,13 @@ package model import ( + "context" "encoding/json" "net/http" "net/http/httptest" "strings" "testing" + "time" "github.com/stretchr/testify/assert" ) @@ -73,7 +75,7 @@ func TestClient4CreatePost(t *testing.T) { })) client := NewAPIv4Client(server.URL) - _, resp, err := client.CreatePost(post) + _, resp, err := client.CreatePost(context.Background(), post) assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } @@ -100,7 +102,52 @@ func TestClient4SetToken(t *testing.T) { client := NewAPIv4Client(server.URL) client.SetToken(expected) - _, resp, err := client.GetMe("") + _, resp, err := client.GetMe(context.Background(), "") assert.NoError(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } + +func TestClient4RequestCancellation(t *testing.T) { + t.Run("cancel before making the reqeust", func(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + t.Fatal("request should not hit the server") + })) + + client := NewAPIv4Client(server.URL) + + ctx, cancel := context.WithCancel(context.Background()) + + cancel() + + _, resp, err := client.GetMe(ctx, "") + assert.Error(t, err) + assert.ErrorIs(t, err, context.Canceled) + assert.Nil(t, resp) + }) + + t.Run("cancel after making the reqeust", func(t *testing.T) { + + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + time.Sleep(100 * time.Millisecond) + t.Fatal("request should not hit the server") + })) + + client := NewAPIv4Client(server.URL) + + ctx, cancel := context.WithCancel(context.Background()) + + done := make(chan struct{}) + go func() { + _, resp, err := client.GetMe(ctx, "") + assert.Error(t, err) + assert.ErrorIs(t, err, context.Canceled) + assert.Nil(t, resp) + + done <- struct{}{} + + }() + cancel() + + <-done + }) +}