From afb48219c0d925f12db19e3ccc81830de2a54702 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Thu, 16 Nov 2023 09:51:18 +0100 Subject: [PATCH] Simplify request generation in store tests (#25422) --- .../plugin_api_tests/test_db_driver/main.go | 12 +- .../jobs/batch_migration_worker_test.go | 11 +- .../store/localcachelayer/emoji_layer_test.go | 78 ++--- .../store/localcachelayer/layer_test.go | 13 +- .../channels/store/sqlstore/integrity_test.go | 90 +++-- .../store/sqlstore/preference_store_test.go | 3 +- server/channels/store/sqlstore/store_test.go | 15 +- .../channels/store/storetest/audit_store.go | 7 +- server/channels/store/storetest/bot_store.go | 23 +- .../storetest/channel_member_history_store.go | 31 +- .../channels/store/storetest/channel_store.go | 327 +++++++++--------- .../storetest/channel_store_categories.go | 252 +++++++------- .../storetest/cluster_discovery_store.go | 23 +- .../channels/store/storetest/command_store.go | 39 ++- .../store/storetest/command_webhook_store.go | 7 +- .../store/storetest/compliance_store.go | 118 +++---- .../store/storetest/desktop_tokens_store.go | 23 +- .../channels/store/storetest/draft_store.go | 73 ++-- .../channels/store/storetest/emoji_store.go | 46 ++- .../store/storetest/file_info_store.go | 63 ++-- .../channels/store/storetest/group_store.go | 233 ++++++------- server/channels/store/storetest/job_store.go | 108 +++--- .../channels/store/storetest/license_store.go | 16 +- .../store/storetest/link_metadata_store.go | 15 +- .../store/storetest/notify_admin_store.go | 33 +- .../channels/store/storetest/oauth_store.go | 68 ++-- .../channels/store/storetest/plugin_store.go | 99 +++--- .../storetest/post_acknowledgements_store.go | 15 +- .../post_persistent_notification_store.go | 15 +- .../store/storetest/post_priority_store.go | 7 +- server/channels/store/storetest/post_store.go | 171 ++++----- .../store/storetest/preference_store.go | 39 ++- .../store/storetest/product_notices_store.go | 15 +- .../store/storetest/reaction_store.go | 39 ++- .../store/storetest/remote_cluster_store.go | 35 +- .../store/storetest/retention_policy_store.go | 81 ++--- server/channels/store/storetest/role_store.go | 41 ++- .../channels/store/storetest/scheme_store.go | 35 +- .../channels/store/storetest/session_store.go | 190 +++++----- .../store/storetest/shared_channel_store.go | 99 +++--- .../channels/store/storetest/status_store.go | 15 +- .../channels/store/storetest/system_store.go | 27 +- server/channels/store/storetest/team_store.go | 240 +++++++------ .../store/storetest/terms_of_service_store.go | 15 +- .../channels/store/storetest/thread_store.go | 35 +- .../channels/store/storetest/tokens_store.go | 7 +- .../store/storetest/true_up_review_store.go | 15 +- .../store/storetest/upload_session_store.go | 32 +- .../storetest/user_access_token_store.go | 36 +- server/channels/store/storetest/user_store.go | 270 +++++++-------- .../store/storetest/user_terms_of_service.go | 15 +- .../channels/store/storetest/webhook_store.go | 103 +++--- 52 files changed, 1666 insertions(+), 1752 deletions(-) diff --git a/server/channels/app/plugin_api_tests/test_db_driver/main.go b/server/channels/app/plugin_api_tests/test_db_driver/main.go index bbf50f4267..aef6f76fc5 100644 --- a/server/channels/app/plugin_api_tests/test_db_driver/main.go +++ b/server/channels/app/plugin_api_tests/test_db_driver/main.go @@ -10,6 +10,7 @@ import ( "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/plugin" "github.com/mattermost/mattermost/server/public/shared/driver" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/app/plugin_api_tests" "github.com/mattermost/mattermost/server/v8/channels/store/sqlstore" "github.com/mattermost/mattermost/server/v8/channels/store/storetest" @@ -29,6 +30,7 @@ func (p *MyPlugin) OnConfigurationChange() error { } func (p *MyPlugin) MessageWillBePosted(_ *plugin.Context, _ *model.Post) (*model.Post, string) { + rctx := request.TestContext(p.t) settings := p.API.GetUnsanitizedConfig().SqlSettings settings.Trace = model.NewBool(false) store, err := sqlstore.New(settings, nil) @@ -43,11 +45,11 @@ func (p *MyPlugin) MessageWillBePosted(_ *plugin.Context, _ *model.Post) (*model wrapper := sqlstore.NewStoreTestWrapper(store) // Testing with a handful of stores - storetest.TestPostStore(p.t, store, wrapper) - storetest.TestUserStore(p.t, store, wrapper) - storetest.TestTeamStore(p.t, store) - storetest.TestChannelStore(p.t, store, wrapper) - storetest.TestBotStore(p.t, store, wrapper) + storetest.TestPostStore(p.t, rctx, store, wrapper) + storetest.TestUserStore(p.t, rctx, store, wrapper) + storetest.TestTeamStore(p.t, rctx, store) + storetest.TestChannelStore(p.t, rctx, store, wrapper) + storetest.TestBotStore(p.t, rctx, store, wrapper) store.GetMasterX().Close() } diff --git a/server/channels/jobs/batch_migration_worker_test.go b/server/channels/jobs/batch_migration_worker_test.go index d569ca85cf..a7467c5b0c 100644 --- a/server/channels/jobs/batch_migration_worker_test.go +++ b/server/channels/jobs/batch_migration_worker_test.go @@ -9,8 +9,6 @@ import ( "time" "github.com/mattermost/mattermost/server/public/model" - "github.com/mattermost/mattermost/server/public/shared/mlog" - "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/jobs" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/stretchr/testify/assert" @@ -75,8 +73,7 @@ func TestBatchMigrationWorker(t *testing.T) { ) th.Server.Jobs.RegisterJobType(migrationKey, worker, nil) - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - job, appErr := th.Server.Jobs.CreateJob(ctx, migrationKey, nil) + job, appErr := th.Server.Jobs.CreateJob(th.Context, migrationKey, nil) require.Nil(t, appErr) done := make(chan bool) @@ -112,8 +109,7 @@ func TestBatchMigrationWorker(t *testing.T) { t.Helper() require.Eventuallyf(t, func() bool { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - actualJob, appErr := th.Server.Jobs.GetJob(ctx, job.Id) + actualJob, appErr := th.Server.Jobs.GetJob(th.Context, job.Id) require.Nil(t, appErr) require.Equal(t, job.Id, actualJob.Id) @@ -122,8 +118,7 @@ func TestBatchMigrationWorker(t *testing.T) { } assertJobReset := func(t *testing.T, th *TestHelper, job *model.Job) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - actualJob, appErr := th.Server.Jobs.GetJob(ctx, job.Id) + actualJob, appErr := th.Server.Jobs.GetJob(th.Context, job.Id) require.Nil(t, appErr) assert.Empty(t, actualJob.Progress) assert.Empty(t, actualJob.Data) diff --git a/server/channels/store/localcachelayer/emoji_layer_test.go b/server/channels/store/localcachelayer/emoji_layer_test.go index 1258982e1d..c7b990e5ce 100644 --- a/server/channels/store/localcachelayer/emoji_layer_test.go +++ b/server/channels/store/localcachelayer/emoji_layer_test.go @@ -20,57 +20,56 @@ func TestEmojiStore(t *testing.T) { } func TestEmojiStoreCache(t *testing.T) { + rctx := request.TestContext(t) + fakeEmoji := model.Emoji{Id: "123", Name: "name123"} fakeEmoji2 := model.Emoji{Id: "321", Name: "name321"} ctxEmoji := model.Emoji{Id: "master", Name: "name123"} t.Run("first call by id not cached, second cached and returning same data", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - emoji, err := cachedStore.Emoji().Get(c, "123", true) + emoji, err := cachedStore.Emoji().Get(rctx, "123", true) require.NoError(t, err) assert.Equal(t, emoji, &fakeEmoji) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 1) - emoji, err = cachedStore.Emoji().Get(c, "123", true) + emoji, err = cachedStore.Emoji().Get(rctx, "123", true) require.NoError(t, err) assert.Equal(t, emoji, &fakeEmoji) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 1) }) t.Run("GetByName: first call by name not cached, second cached and returning same data", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - emoji, err := cachedStore.Emoji().GetByName(c, "name123", true) + emoji, err := cachedStore.Emoji().GetByName(rctx, "name123", true) require.NoError(t, err) assert.Equal(t, emoji, &fakeEmoji) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 1) - emoji, err = cachedStore.Emoji().GetByName(c, "name123", true) + emoji, err = cachedStore.Emoji().GetByName(rctx, "name123", true) require.NoError(t, err) assert.Equal(t, emoji, &fakeEmoji) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 1) }) t.Run("GetMultipleByName: first call by name not cached, second cached and returning same data", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - emojis, err := cachedStore.Emoji().GetMultipleByName(c, []string{"name123"}) + emojis, err := cachedStore.Emoji().GetMultipleByName(rctx, []string{"name123"}) require.NoError(t, err) require.Len(t, emojis, 1) assert.Equal(t, emojis[0], &fakeEmoji) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetMultipleByName", 1) - emojis, err = cachedStore.Emoji().GetMultipleByName(c, []string{"name123"}) + emojis, err = cachedStore.Emoji().GetMultipleByName(rctx, []string{"name123"}) require.NoError(t, err) require.Len(t, emojis, 1) assert.Equal(t, emojis[0], &fakeEmoji) @@ -78,19 +77,18 @@ func TestEmojiStoreCache(t *testing.T) { }) t.Run("GetMultipleByName: multiple elements", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - emojis, err := cachedStore.Emoji().GetMultipleByName(c, []string{"name123", "name321"}) + emojis, err := cachedStore.Emoji().GetMultipleByName(rctx, []string{"name123", "name321"}) require.NoError(t, err) require.Len(t, emojis, 2) assert.Equal(t, emojis[0], &fakeEmoji) assert.Equal(t, emojis[1], &fakeEmoji2) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetMultipleByName", 1) - emojis, err = cachedStore.Emoji().GetMultipleByName(c, []string{"name123"}) + emojis, err = cachedStore.Emoji().GetMultipleByName(rctx, []string{"name123"}) require.NoError(t, err) require.Len(t, emojis, 1) assert.Equal(t, emojis[0], &fakeEmoji) @@ -98,142 +96,132 @@ func TestEmojiStoreCache(t *testing.T) { }) t.Run("first call by id not cached, second force not cached", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().Get(c, "123", true) + cachedStore.Emoji().Get(rctx, "123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 1) - cachedStore.Emoji().Get(c, "123", false) + cachedStore.Emoji().Get(rctx, "123", false) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 2) }) t.Run("first call by name not cached, second force not cached", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().GetByName(c, "name123", true) + cachedStore.Emoji().GetByName(rctx, "name123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 1) - cachedStore.Emoji().GetByName(c, "name123", false) + cachedStore.Emoji().GetByName(rctx, "name123", false) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 2) }) t.Run("first call by id force not cached, second not cached, third cached", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().Get(c, "123", false) + cachedStore.Emoji().Get(rctx, "123", false) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 1) - cachedStore.Emoji().Get(c, "123", true) + cachedStore.Emoji().Get(rctx, "123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 2) - cachedStore.Emoji().Get(c, "123", true) + cachedStore.Emoji().Get(rctx, "123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 2) }) t.Run("first call by name force not cached, second not cached, third cached", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().GetByName(c, "name123", false) + cachedStore.Emoji().GetByName(rctx, "name123", false) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 1) - cachedStore.Emoji().GetByName(c, "name123", true) + cachedStore.Emoji().GetByName(rctx, "name123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 2) - cachedStore.Emoji().GetByName(c, "name123", true) + cachedStore.Emoji().GetByName(rctx, "name123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 2) }) t.Run("first call by id, second call by name and GetMultipleByName cached", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().Get(c, "123", true) + cachedStore.Emoji().Get(rctx, "123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 1) - cachedStore.Emoji().GetByName(c, "name123", true) + cachedStore.Emoji().GetByName(rctx, "name123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 0) - cachedStore.Emoji().GetMultipleByName(c, []string{"name123"}) + cachedStore.Emoji().GetMultipleByName(rctx, []string{"name123"}) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetMultipleByName", 0) }) t.Run("first call by name, second call by id cached", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().GetByName(c, "name123", true) + cachedStore.Emoji().GetByName(rctx, "name123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 1) - cachedStore.Emoji().Get(c, "123", true) + cachedStore.Emoji().Get(rctx, "123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 0) }) t.Run("first call by id not cached, invalidate, and then not cached again", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().Get(c, "123", true) + cachedStore.Emoji().Get(rctx, "123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 1) cachedStore.Emoji().Delete(&fakeEmoji, 0) - cachedStore.Emoji().Get(c, "123", true) + cachedStore.Emoji().Get(rctx, "123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 2) }) t.Run("call by id, use master", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().Get(c, "master", true) + cachedStore.Emoji().Get(rctx, "master", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 1) cachedStore.Emoji().Delete(&ctxEmoji, 0) - cachedStore.Emoji().Get(c, "master", true) + cachedStore.Emoji().Get(rctx, "master", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "Get", 2) }) t.Run("first call by name not cached, invalidate, and then not cached again", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().GetByName(c, "name123", true) + cachedStore.Emoji().GetByName(rctx, "name123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 1) cachedStore.Emoji().Delete(&fakeEmoji, 0) - cachedStore.Emoji().GetByName(c, "name123", true) + cachedStore.Emoji().GetByName(rctx, "name123", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 2) }) t.Run("call by name, use master", func(t *testing.T) { - c := request.TestContext(t) mockStore := getMockStore(t) mockCacheProvider := getMockCacheProvider() cachedStore, err := NewLocalCacheLayer(mockStore, nil, nil, mockCacheProvider) require.NoError(t, err) - cachedStore.Emoji().GetByName(c, "master", true) + cachedStore.Emoji().GetByName(rctx, "master", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 1) cachedStore.Emoji().Delete(&ctxEmoji, 0) - cachedStore.Emoji().GetByName(c, "master", true) + cachedStore.Emoji().GetByName(rctx, "master", true) mockStore.Emoji().(*mocks.EmojiStore).AssertNumberOfCalls(t, "GetByName", 2) }) } diff --git a/server/channels/store/localcachelayer/layer_test.go b/server/channels/store/localcachelayer/layer_test.go index ddbf6686ab..d5c30f9738 100644 --- a/server/channels/store/localcachelayer/layer_test.go +++ b/server/channels/store/localcachelayer/layer_test.go @@ -9,6 +9,7 @@ import ( "testing" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/store/sqlstore" "github.com/mattermost/mattermost/server/v8/channels/store/storetest" @@ -31,7 +32,7 @@ func newStoreType(name, driver string) *storeType { } } -func StoreTest(t *testing.T, f func(*testing.T, store.Store)) { +func StoreTest(t *testing.T, f func(*testing.T, request.CTX, store.Store)) { defer func() { if err := recover(); err != nil { tearDownStores() @@ -40,16 +41,18 @@ func StoreTest(t *testing.T, f func(*testing.T, store.Store)) { }() for _, st := range storeTypes { st := st + rctx := request.TestContext(t) + t.Run(st.Name, func(t *testing.T) { if testing.Short() { t.SkipNow() } - f(t, st.Store) + f(t, rctx, st.Store) }) } } -func StoreTestWithSqlStore(t *testing.T, f func(*testing.T, store.Store, storetest.SqlStore)) { +func StoreTestWithSqlStore(t *testing.T, f func(*testing.T, request.CTX, store.Store, storetest.SqlStore)) { defer func() { if err := recover(); err != nil { tearDownStores() @@ -58,11 +61,13 @@ func StoreTestWithSqlStore(t *testing.T, f func(*testing.T, store.Store, storete }() for _, st := range storeTypes { st := st + rctx := request.TestContext(t) + t.Run(st.Name, func(t *testing.T) { if testing.Short() { t.SkipNow() } - f(t, st.Store, sqlstore.NewStoreTestWrapper(st.SqlStore)) + f(t, rctx, st.Store, sqlstore.NewStoreTestWrapper(st.SqlStore)) }) } } diff --git a/server/channels/store/sqlstore/integrity_test.go b/server/channels/store/sqlstore/integrity_test.go index 492a271a51..cf7e5d013a 100644 --- a/server/channels/store/sqlstore/integrity_test.go +++ b/server/channels/store/sqlstore/integrity_test.go @@ -378,7 +378,7 @@ func createUserAccessToken(ss store.Store, userId string) *model.UserAccessToken } func TestCheckIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { ss.DropAllTables() t.Run("generate reports with no records", func(t *testing.T) { results := ss.CheckIntegrity() @@ -396,7 +396,7 @@ func TestCheckIntegrity(t *testing.T) { } func TestCheckParentChildIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) t.Run("should receive an error", func(t *testing.T) { config := relationalCheckConfig{ @@ -413,7 +413,7 @@ func TestCheckParentChildIntegrity(t *testing.T) { } func TestCheckChannelsCommandWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -440,7 +440,7 @@ func TestCheckChannelsCommandWebhooksIntegrity(t *testing.T) { } func TestCheckChannelsChannelMemberHistoryIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -471,7 +471,7 @@ func TestCheckChannelsChannelMemberHistoryIntegrity(t *testing.T) { } func TestCheckChannelsChannelMembersIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -499,7 +499,7 @@ func TestCheckChannelsChannelMembersIntegrity(t *testing.T) { } func TestCheckChannelsIncomingWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -527,7 +527,7 @@ func TestCheckChannelsIncomingWebhooksIntegrity(t *testing.T) { } func TestCheckChannelsOutgoingWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -557,7 +557,7 @@ func TestCheckChannelsOutgoingWebhooksIntegrity(t *testing.T) { } func TestCheckChannelsPostsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -584,7 +584,7 @@ func TestCheckChannelsPostsIntegrity(t *testing.T) { } func TestCheckCommandsCommandWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -612,7 +612,7 @@ func TestCheckCommandsCommandWebhooksIntegrity(t *testing.T) { } func TestCheckPostsFileInfoIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -640,7 +640,7 @@ func TestCheckPostsFileInfoIntegrity(t *testing.T) { } func TestCheckPostsPostsRootIdIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -673,7 +673,7 @@ func TestCheckPostsPostsRootIdIntegrity(t *testing.T) { } func TestCheckPostsReactionsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -700,7 +700,7 @@ func TestCheckPostsReactionsIntegrity(t *testing.T) { } func TestCheckSchemesChannelsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -731,7 +731,7 @@ func TestCheckSchemesChannelsIntegrity(t *testing.T) { } func TestCheckSchemesTeamsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -762,8 +762,7 @@ func TestCheckSchemesTeamsIntegrity(t *testing.T) { } func TestCheckSessionsAuditsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { - c := request.TestContext(t) + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -776,7 +775,7 @@ func TestCheckSessionsAuditsIntegrity(t *testing.T) { t.Run("should generate a report with one record", func(t *testing.T) { userId := model.NewId() - session := createSession(c, ss, model.NewId()) + session := createSession(rctx, ss, model.NewId()) sessionId := session.Id audit := createAudit(ss, userId, sessionId) dbmap.Exec(`DELETE FROM Sessions WHERE Id=?`, session.Id) @@ -794,7 +793,7 @@ func TestCheckSessionsAuditsIntegrity(t *testing.T) { } func TestCheckTeamsChannelsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -870,7 +869,7 @@ func TestCheckTeamsChannelsIntegrity(t *testing.T) { } func TestCheckTeamsCommandsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -898,7 +897,7 @@ func TestCheckTeamsCommandsIntegrity(t *testing.T) { } func TestCheckTeamsIncomingWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -926,7 +925,7 @@ func TestCheckTeamsIncomingWebhooksIntegrity(t *testing.T) { } func TestCheckTeamsOutgoingWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -954,7 +953,7 @@ func TestCheckTeamsOutgoingWebhooksIntegrity(t *testing.T) { } func TestCheckTeamsTeamMembersIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -982,7 +981,7 @@ func TestCheckTeamsTeamMembersIntegrity(t *testing.T) { } func TestCheckUsersAuditsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1012,7 +1011,7 @@ func TestCheckUsersAuditsIntegrity(t *testing.T) { } func TestCheckUsersCommandWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1040,7 +1039,7 @@ func TestCheckUsersCommandWebhooksIntegrity(t *testing.T) { } func TestCheckUsersChannelsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1067,7 +1066,7 @@ func TestCheckUsersChannelsIntegrity(t *testing.T) { } func TestCheckUsersChannelMemberHistoryIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1097,7 +1096,7 @@ func TestCheckUsersChannelMemberHistoryIntegrity(t *testing.T) { } func TestCheckUsersChannelMembersIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1127,7 +1126,7 @@ func TestCheckUsersChannelMembersIntegrity(t *testing.T) { } func TestCheckUsersCommandsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1155,7 +1154,7 @@ func TestCheckUsersCommandsIntegrity(t *testing.T) { } func TestCheckUsersCompliancesIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1185,7 +1184,7 @@ func TestCheckUsersCompliancesIntegrity(t *testing.T) { } func TestCheckUsersEmojiIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1215,7 +1214,7 @@ func TestCheckUsersEmojiIntegrity(t *testing.T) { } func TestCheckUsersFileInfoIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1245,7 +1244,7 @@ func TestCheckUsersFileInfoIntegrity(t *testing.T) { } func TestCheckUsersIncomingWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1273,7 +1272,7 @@ func TestCheckUsersIncomingWebhooksIntegrity(t *testing.T) { } func TestCheckUsersOAuthAccessDataIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1303,7 +1302,7 @@ func TestCheckUsersOAuthAccessDataIntegrity(t *testing.T) { } func TestCheckUsersOAuthAppsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1333,7 +1332,7 @@ func TestCheckUsersOAuthAppsIntegrity(t *testing.T) { } func TestCheckUsersOAuthAuthDataIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1363,7 +1362,7 @@ func TestCheckUsersOAuthAuthDataIntegrity(t *testing.T) { } func TestCheckUsersOutgoingWebhooksIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1391,7 +1390,7 @@ func TestCheckUsersOutgoingWebhooksIntegrity(t *testing.T) { } func TestCheckUsersPostsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1418,7 +1417,7 @@ func TestCheckUsersPostsIntegrity(t *testing.T) { } func TestCheckUsersPreferencesIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1464,7 +1463,7 @@ func TestCheckUsersPreferencesIntegrity(t *testing.T) { } func TestCheckUsersReactionsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1493,8 +1492,7 @@ func TestCheckUsersReactionsIntegrity(t *testing.T) { } func TestCheckUsersSessionsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { - c := request.TestContext(t) + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1507,7 +1505,7 @@ func TestCheckUsersSessionsIntegrity(t *testing.T) { t.Run("should generate a report with one record", func(t *testing.T) { userId := model.NewId() - session := createSession(c, ss, userId) + session := createSession(rctx, ss, userId) result := checkUsersSessionsIntegrity(store) require.NoError(t, result.Err) data := result.Data.(model.RelationalIntegrityCheckData) @@ -1522,7 +1520,7 @@ func TestCheckUsersSessionsIntegrity(t *testing.T) { } func TestCheckUsersStatusIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1551,7 +1549,7 @@ func TestCheckUsersStatusIntegrity(t *testing.T) { } func TestCheckUsersTeamMembersIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1581,7 +1579,7 @@ func TestCheckUsersTeamMembersIntegrity(t *testing.T) { } func TestCheckUsersUserAccessTokensIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() @@ -1611,7 +1609,7 @@ func TestCheckUsersUserAccessTokensIntegrity(t *testing.T) { } func TestCheckThreadsTeamsIntegrity(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { store := ss.(*SqlStore) dbmap := store.GetMasterX() diff --git a/server/channels/store/sqlstore/preference_store_test.go b/server/channels/store/sqlstore/preference_store_test.go index 98c4ed96e0..8e04794af4 100644 --- a/server/channels/store/sqlstore/preference_store_test.go +++ b/server/channels/store/sqlstore/preference_store_test.go @@ -9,6 +9,7 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/store/storetest" ) @@ -18,7 +19,7 @@ func TestPreferenceStore(t *testing.T) { } func TestDeleteUnusedFeatures(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { userId1 := model.NewId() userId2 := model.NewId() category := model.PreferenceCategoryAdvancedSettings diff --git a/server/channels/store/sqlstore/store_test.go b/server/channels/store/sqlstore/store_test.go index 84e9c7ca94..68bcfbcaf1 100644 --- a/server/channels/store/sqlstore/store_test.go +++ b/server/channels/store/sqlstore/store_test.go @@ -24,6 +24,7 @@ import ( "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/plugin/plugintest/mock" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/db" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/store/searchtest" @@ -47,7 +48,7 @@ func newStoreType(name, driver string) *storeType { } } -func StoreTest(t *testing.T, f func(*testing.T, store.Store)) { +func StoreTest(t *testing.T, f func(*testing.T, request.CTX, store.Store)) { defer func() { if err := recover(); err != nil { tearDownStores() @@ -56,11 +57,13 @@ func StoreTest(t *testing.T, f func(*testing.T, store.Store)) { }() for _, st := range storeTypes { st := st + rctx := request.TestContext(t) + t.Run(st.Name, func(t *testing.T) { if testing.Short() { t.SkipNow() } - f(t, st.Store) + f(t, rctx, st.Store) }) } } @@ -83,7 +86,7 @@ func StoreTestWithSearchTestEngine(t *testing.T, f func(*testing.T, store.Store, } } -func StoreTestWithSqlStore(t *testing.T, f func(*testing.T, store.Store, storetest.SqlStore)) { +func StoreTestWithSqlStore(t *testing.T, f func(*testing.T, request.CTX, store.Store, storetest.SqlStore)) { defer func() { if err := recover(); err != nil { tearDownStores() @@ -92,11 +95,13 @@ func StoreTestWithSqlStore(t *testing.T, f func(*testing.T, store.Store, storete }() for _, st := range storeTypes { st := st + rctx := request.TestContext(t) + t.Run(st.Name, func(t *testing.T) { if testing.Short() { t.SkipNow() } - f(t, st.Store, &StoreTestWrapper{st.SqlStore}) + f(t, rctx, st.Store, &StoreTestWrapper{st.SqlStore}) }) } } @@ -803,7 +808,7 @@ func makeSqlSettings(driver string) (*model.SqlSettings, error) { } func TestExecNoTimeout(t *testing.T) { - StoreTest(t, func(t *testing.T, ss store.Store) { + StoreTest(t, func(t *testing.T, rctx request.CTX, ss store.Store) { sqlStore := ss.(*SqlStore) var query string timeout := sqlStore.masterX.queryTimeout diff --git a/server/channels/store/storetest/audit_store.go b/server/channels/store/storetest/audit_store.go index a70abf32d1..9ad40f3891 100644 --- a/server/channels/store/storetest/audit_store.go +++ b/server/channels/store/storetest/audit_store.go @@ -11,14 +11,15 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestAuditStore(t *testing.T, ss store.Store) { - t.Run("", func(t *testing.T) { testAuditStore(t, ss) }) +func TestAuditStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("", func(t *testing.T) { testAuditStore(t, rctx, ss) }) } -func testAuditStore(t *testing.T, ss store.Store) { +func testAuditStore(t *testing.T, rctx request.CTX, ss store.Store) { audit := &model.Audit{UserId: model.NewId(), IpAddress: "ipaddress", Action: "Action"} require.NoError(t, ss.Audit().Save(audit)) time.Sleep(100 * time.Millisecond) diff --git a/server/channels/store/storetest/bot_store.go b/server/channels/store/storetest/bot_store.go index 47e79bba67..17419733c9 100644 --- a/server/channels/store/storetest/bot_store.go +++ b/server/channels/store/storetest/bot_store.go @@ -10,6 +10,7 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) @@ -24,15 +25,15 @@ func makeBotWithUser(t *testing.T, ss store.Store, bot *model.Bot) (*model.Bot, return bot, user } -func TestBotStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("Get", func(t *testing.T) { testBotStoreGet(t, ss, s) }) - t.Run("GetAll", func(t *testing.T) { testBotStoreGetAll(t, ss, s) }) - t.Run("Save", func(t *testing.T) { testBotStoreSave(t, ss) }) - t.Run("Update", func(t *testing.T) { testBotStoreUpdate(t, ss) }) - t.Run("PermanentDelete", func(t *testing.T) { testBotStorePermanentDelete(t, ss) }) +func TestBotStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("Get", func(t *testing.T) { testBotStoreGet(t, rctx, ss, s) }) + t.Run("GetAll", func(t *testing.T) { testBotStoreGetAll(t, rctx, ss, s) }) + t.Run("Save", func(t *testing.T) { testBotStoreSave(t, rctx, ss) }) + t.Run("Update", func(t *testing.T) { testBotStoreUpdate(t, rctx, ss) }) + t.Run("PermanentDelete", func(t *testing.T) { testBotStorePermanentDelete(t, rctx, ss) }) } -func testBotStoreGet(t *testing.T, ss store.Store, s SqlStore) { +func testBotStoreGet(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { deletedBot, _ := makeBotWithUser(t, ss, &model.Bot{ Username: "deleted_bot", Description: "A deleted bot", @@ -117,7 +118,7 @@ func testBotStoreGet(t *testing.T, ss store.Store, s SqlStore) { }) } -func testBotStoreGetAll(t *testing.T, ss store.Store, s SqlStore) { +func testBotStoreGetAll(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { OwnerId1 := model.NewId() OwnerId2 := model.NewId() @@ -310,7 +311,7 @@ func testBotStoreGetAll(t *testing.T, ss store.Store, s SqlStore) { }) } -func testBotStoreSave(t *testing.T, ss store.Store) { +func testBotStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("invalid bot", func(t *testing.T) { bot := &model.Bot{ UserId: model.NewId(), @@ -358,7 +359,7 @@ func testBotStoreSave(t *testing.T, ss store.Store) { }) } -func testBotStoreUpdate(t *testing.T, ss store.Store) { +func testBotStoreUpdate(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("invalid bot should fail to update", func(t *testing.T) { existingBot, _ := makeBotWithUser(t, ss, &model.Bot{ Username: "existing_bot", @@ -440,7 +441,7 @@ func testBotStoreUpdate(t *testing.T, ss store.Store) { }) } -func testBotStorePermanentDelete(t *testing.T, ss store.Store) { +func testBotStorePermanentDelete(t *testing.T, rctx request.CTX, ss store.Store) { b1, _ := makeBotWithUser(t, ss, &model.Bot{ Username: "b1", OwnerId: model.NewId(), diff --git a/server/channels/store/storetest/channel_member_history_store.go b/server/channels/store/storetest/channel_member_history_store.go index 825a2b3acd..74b548d857 100644 --- a/server/channels/store/storetest/channel_member_history_store.go +++ b/server/channels/store/storetest/channel_member_history_store.go @@ -12,20 +12,21 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestChannelMemberHistoryStore(t *testing.T, ss store.Store) { - t.Run("TestLogJoinEvent", func(t *testing.T) { testLogJoinEvent(t, ss) }) - t.Run("TestLogLeaveEvent", func(t *testing.T) { testLogLeaveEvent(t, ss) }) - t.Run("TestGetUsersInChannelAtChannelMemberHistory", func(t *testing.T) { testGetUsersInChannelAtChannelMemberHistory(t, ss) }) - t.Run("TestGetUsersInChannelAtChannelMembers", func(t *testing.T) { testGetUsersInChannelAtChannelMembers(t, ss) }) - t.Run("TestPermanentDeleteBatch", func(t *testing.T) { testPermanentDeleteBatch(t, ss) }) - t.Run("TestPermanentDeleteBatchForRetentionPolicies", func(t *testing.T) { testPermanentDeleteBatchForRetentionPolicies(t, ss) }) - t.Run("TestGetChannelsLeftSince", func(t *testing.T) { testGetChannelsLeftSince(t, ss) }) +func TestChannelMemberHistoryStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("TestLogJoinEvent", func(t *testing.T) { testLogJoinEvent(t, rctx, ss) }) + t.Run("TestLogLeaveEvent", func(t *testing.T) { testLogLeaveEvent(t, rctx, ss) }) + t.Run("TestGetUsersInChannelAtChannelMemberHistory", func(t *testing.T) { testGetUsersInChannelAtChannelMemberHistory(t, rctx, ss) }) + t.Run("TestGetUsersInChannelAtChannelMembers", func(t *testing.T) { testGetUsersInChannelAtChannelMembers(t, rctx, ss) }) + t.Run("TestPermanentDeleteBatch", func(t *testing.T) { testPermanentDeleteBatch(t, rctx, ss) }) + t.Run("TestPermanentDeleteBatchForRetentionPolicies", func(t *testing.T) { testPermanentDeleteBatchForRetentionPolicies(t, rctx, ss) }) + t.Run("TestGetChannelsLeftSince", func(t *testing.T) { testGetChannelsLeftSince(t, rctx, ss) }) } -func testLogJoinEvent(t *testing.T, ss store.Store) { +func testLogJoinEvent(t *testing.T, rctx request.CTX, ss store.Store) { // create a test channel ch := model.Channel{ TeamId: model.NewId(), @@ -51,7 +52,7 @@ func testLogJoinEvent(t *testing.T, ss store.Store) { assert.NoError(t, err) } -func testLogLeaveEvent(t *testing.T, ss store.Store) { +func testLogLeaveEvent(t *testing.T, rctx request.CTX, ss store.Store) { // create a test channel ch := model.Channel{ TeamId: model.NewId(), @@ -80,7 +81,7 @@ func testLogLeaveEvent(t *testing.T, ss store.Store) { assert.NoError(t, err) } -func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) { +func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, rctx request.CTX, ss store.Store) { // create a test channel ch := &model.Channel{ TeamId: model.NewId(), @@ -176,7 +177,7 @@ func testGetUsersInChannelAtChannelMemberHistory(t *testing.T, ss store.Store) { assert.Empty(t, channelMembers) } -func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) { +func testGetUsersInChannelAtChannelMembers(t *testing.T, rctx request.CTX, ss store.Store) { // create a test channel channel := &model.Channel{ TeamId: model.NewId(), @@ -288,7 +289,7 @@ func testGetUsersInChannelAtChannelMembers(t *testing.T, ss store.Store) { assert.Equal(t, leaveTime+200, *channelMembers[0].LeaveTime) } -func testPermanentDeleteBatch(t *testing.T, ss store.Store) { +func testPermanentDeleteBatch(t *testing.T, rctx request.CTX, ss store.Store) { // create a test channel channel := &model.Channel{ TeamId: model.NewId(), @@ -348,7 +349,7 @@ func testPermanentDeleteBatch(t *testing.T, ss store.Store) { assert.Equal(t, user2.Id, channelMembers[0].UserId) } -func testPermanentDeleteBatchForRetentionPolicies(t *testing.T, ss store.Store) { +func testPermanentDeleteBatchForRetentionPolicies(t *testing.T, rctx request.CTX, ss store.Store) { const limit = 1000 team, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", @@ -394,7 +395,7 @@ func testPermanentDeleteBatchForRetentionPolicies(t *testing.T, ss store.Store) require.Equal(t, 0, len(rows)) } -func testGetChannelsLeftSince(t *testing.T, ss store.Store) { +func testGetChannelsLeftSince(t *testing.T, rctx request.CTX, ss store.Store) { team, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", Name: "team" + model.NewId(), diff --git a/server/channels/store/storetest/channel_store.go b/server/channels/store/storetest/channel_store.go index cc61e22c9d..956d767313 100644 --- a/server/channels/store/storetest/channel_store.go +++ b/server/channels/store/storetest/channel_store.go @@ -20,6 +20,7 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/public/shared/timezones" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/utils" @@ -41,7 +42,7 @@ type SqlXExecutor interface { Select(dest any, query string, args ...any) error } -func cleanupChannels(t *testing.T, ss store.Store) { +func cleanupChannels(t *testing.T, rctx request.CTX, ss store.Store) { list, err := ss.Channel().GetAllChannels(0, 100000, store.ChannelSearchOpts{IncludeDeleted: true}) require.NoError(t, err, "error cleaning all channels", err) for _, channel := range list { @@ -64,95 +65,95 @@ func channelMemberToJSON(t *testing.T, cm *model.ChannelMember) string { return string(js) } -func TestChannelStore(t *testing.T, ss store.Store, s SqlStore) { +func TestChannelStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { createDefaultRoles(ss) - t.Run("Save", func(t *testing.T) { testChannelStoreSave(t, ss) }) - t.Run("SaveDirectChannel", func(t *testing.T) { testChannelStoreSaveDirectChannel(t, ss, s) }) - t.Run("CreateDirectChannel", func(t *testing.T) { testChannelStoreCreateDirectChannel(t, ss) }) - t.Run("Update", func(t *testing.T) { testChannelStoreUpdate(t, ss) }) - t.Run("GetChannelUnread", func(t *testing.T) { testGetChannelUnread(t, ss) }) - t.Run("Get", func(t *testing.T) { testChannelStoreGet(t, ss, s) }) - t.Run("GetMany", func(t *testing.T) { testChannelStoreGetMany(t, ss, s) }) - t.Run("GetChannelsByIds", func(t *testing.T) { testChannelStoreGetChannelsByIds(t, ss) }) - t.Run("GetChannelsWithTeamDataByIds", func(t *testing.T) { testGetChannelsWithTeamDataByIds(t, ss) }) - t.Run("GetForPost", func(t *testing.T) { testChannelStoreGetForPost(t, ss) }) - t.Run("Restore", func(t *testing.T) { testChannelStoreRestore(t, ss) }) - t.Run("Delete", func(t *testing.T) { testChannelStoreDelete(t, ss) }) - t.Run("GetByName", func(t *testing.T) { testChannelStoreGetByName(t, ss) }) - t.Run("GetByNames", func(t *testing.T) { testChannelStoreGetByNames(t, ss) }) - t.Run("GetByNamesIncludeDeleted", func(t *testing.T) { testChannelStoreGetByNamesIncludeDeleted(t, ss) }) - t.Run("GetDeletedByName", func(t *testing.T) { testChannelStoreGetDeletedByName(t, ss) }) - t.Run("GetDeleted", func(t *testing.T) { testChannelStoreGetDeleted(t, ss) }) - t.Run("ChannelMemberStore", func(t *testing.T) { testChannelMemberStore(t, ss) }) - t.Run("SaveMember", func(t *testing.T) { testChannelSaveMember(t, ss) }) - t.Run("SaveMultipleMembers", func(t *testing.T) { testChannelSaveMultipleMembers(t, ss) }) - t.Run("UpdateMember", func(t *testing.T) { testChannelUpdateMember(t, ss) }) - t.Run("UpdateMemberNotifyProps", func(t *testing.T) { testChannelUpdateMemberNotifyProps(t, ss) }) - t.Run("UpdateMultipleMembers", func(t *testing.T) { testChannelUpdateMultipleMembers(t, ss) }) - t.Run("RemoveMember", func(t *testing.T) { testChannelRemoveMember(t, ss) }) - t.Run("RemoveMembers", func(t *testing.T) { testChannelRemoveMembers(t, ss) }) - t.Run("ChannelDeleteMemberStore", func(t *testing.T) { testChannelDeleteMemberStore(t, ss) }) - t.Run("GetChannels", func(t *testing.T) { testChannelStoreGetChannels(t, ss) }) - t.Run("GetChannelsByUser", func(t *testing.T) { testChannelStoreGetChannelsByUser(t, ss) }) - t.Run("GetAllChannels", func(t *testing.T) { testChannelStoreGetAllChannels(t, ss, s) }) - t.Run("GetMoreChannels", func(t *testing.T) { testChannelStoreGetMoreChannels(t, ss) }) - t.Run("GetPrivateChannelsForTeam", func(t *testing.T) { testChannelStoreGetPrivateChannelsForTeam(t, ss) }) - t.Run("GetPublicChannelsForTeam", func(t *testing.T) { testChannelStoreGetPublicChannelsForTeam(t, ss) }) - t.Run("GetPublicChannelsByIdsForTeam", func(t *testing.T) { testChannelStoreGetPublicChannelsByIdsForTeam(t, ss) }) - t.Run("GetChannelCounts", func(t *testing.T) { testChannelStoreGetChannelCounts(t, ss) }) - t.Run("GetMembersForUser", func(t *testing.T) { testChannelStoreGetMembersForUser(t, ss) }) - t.Run("GetMembersForUserWithPagination", func(t *testing.T) { testChannelStoreGetMembersForUserWithPagination(t, ss) }) - t.Run("CountPostsAfter", func(t *testing.T) { testCountPostsAfter(t, ss) }) - t.Run("CountUrgentPostsAfter", func(t *testing.T) { testCountUrgentPostsAfter(t, ss) }) - t.Run("UpdateLastViewedAt", func(t *testing.T) { testChannelStoreUpdateLastViewedAt(t, ss) }) - t.Run("IncrementMentionCount", func(t *testing.T) { testChannelStoreIncrementMentionCount(t, ss) }) - t.Run("UpdateChannelMember", func(t *testing.T) { testUpdateChannelMember(t, ss) }) - t.Run("GetMember", func(t *testing.T) { testGetMember(t, ss) }) - t.Run("GetMemberForPost", func(t *testing.T) { testChannelStoreGetMemberForPost(t, ss) }) - t.Run("GetMemberCount", func(t *testing.T) { testGetMemberCount(t, ss) }) - t.Run("GetMemberCountsByGroup", func(t *testing.T) { testGetMemberCountsByGroup(t, ss) }) - t.Run("GetGuestCount", func(t *testing.T) { testGetGuestCount(t, ss) }) - t.Run("SearchMore", func(t *testing.T) { testChannelStoreSearchMore(t, ss) }) - t.Run("SearchInTeam", func(t *testing.T) { testChannelStoreSearchInTeam(t, ss) }) - t.Run("Autocomplete", func(t *testing.T) { testAutocomplete(t, ss, s) }) - t.Run("SearchArchivedInTeam", func(t *testing.T) { testChannelStoreSearchArchivedInTeam(t, ss, s) }) - t.Run("SearchForUserInTeam", func(t *testing.T) { testChannelStoreSearchForUserInTeam(t, ss) }) - t.Run("SearchAllChannels", func(t *testing.T) { testChannelStoreSearchAllChannels(t, ss) }) - t.Run("GetMembersByIds", func(t *testing.T) { testChannelStoreGetMembersByIds(t, ss) }) - t.Run("GetMembersByChannelIds", func(t *testing.T) { testChannelStoreGetMembersByChannelIds(t, ss) }) - t.Run("GetMembersInfoByChannelIds", func(t *testing.T) { testChannelStoreGetMembersInfoByChannelIds(t, ss) }) - t.Run("SearchGroupChannels", func(t *testing.T) { testChannelStoreSearchGroupChannels(t, ss) }) - t.Run("AnalyticsDeletedTypeCount", func(t *testing.T) { testChannelStoreAnalyticsDeletedTypeCount(t, ss) }) - t.Run("GetPinnedPosts", func(t *testing.T) { testChannelStoreGetPinnedPosts(t, ss) }) - t.Run("GetPinnedPostCount", func(t *testing.T) { testChannelStoreGetPinnedPostCount(t, ss) }) - t.Run("MaxChannelsPerTeam", func(t *testing.T) { testChannelStoreMaxChannelsPerTeam(t, ss) }) - t.Run("GetChannelsByScheme", func(t *testing.T) { testChannelStoreGetChannelsByScheme(t, ss) }) - t.Run("MigrateChannelMembers", func(t *testing.T) { testChannelStoreMigrateChannelMembers(t, ss) }) - t.Run("ResetAllChannelSchemes", func(t *testing.T) { testResetAllChannelSchemes(t, ss) }) - t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testChannelStoreClearAllCustomRoleAssignments(t, ss) }) - t.Run("MaterializedPublicChannels", func(t *testing.T) { testMaterializedPublicChannels(t, ss, s) }) - t.Run("GetAllChannelsForExportAfter", func(t *testing.T) { testChannelStoreGetAllChannelsForExportAfter(t, ss) }) - t.Run("GetChannelMembersForExport", func(t *testing.T) { testChannelStoreGetChannelMembersForExport(t, ss) }) - t.Run("RemoveAllDeactivatedMembers", func(t *testing.T) { testChannelStoreRemoveAllDeactivatedMembers(t, ss, s) }) - t.Run("ExportAllDirectChannels", func(t *testing.T) { testChannelStoreExportAllDirectChannels(t, ss, s) }) - t.Run("ExportAllDirectChannelsExcludePrivateAndPublic", func(t *testing.T) { testChannelStoreExportAllDirectChannelsExcludePrivateAndPublic(t, ss, s) }) - t.Run("ExportAllDirectChannelsDeletedChannel", func(t *testing.T) { testChannelStoreExportAllDirectChannelsDeletedChannel(t, ss, s) }) - t.Run("GetChannelsBatchForIndexing", func(t *testing.T) { testChannelStoreGetChannelsBatchForIndexing(t, ss) }) - t.Run("GroupSyncedChannelCount", func(t *testing.T) { testGroupSyncedChannelCount(t, ss) }) - t.Run("CreateInitialSidebarCategories", func(t *testing.T) { testCreateInitialSidebarCategories(t, ss) }) - t.Run("CreateSidebarCategory", func(t *testing.T) { testCreateSidebarCategory(t, ss) }) - t.Run("GetSidebarCategory", func(t *testing.T) { testGetSidebarCategory(t, ss, s) }) - t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, ss) }) - t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, ss) }) - t.Run("DeleteSidebarCategory", func(t *testing.T) { testDeleteSidebarCategory(t, ss, s) }) - t.Run("UpdateSidebarChannelsByPreferences", func(t *testing.T) { testUpdateSidebarChannelsByPreferences(t, ss) }) - t.Run("SetShared", func(t *testing.T) { testSetShared(t, ss) }) - t.Run("GetTeamForChannel", func(t *testing.T) { testGetTeamForChannel(t, ss) }) - t.Run("GetChannelsWithUnreadsAndWithMentions", func(t *testing.T) { testGetChannelsWithUnreadsAndWithMentions(t, ss) }) + t.Run("Save", func(t *testing.T) { testChannelStoreSave(t, rctx, ss) }) + t.Run("SaveDirectChannel", func(t *testing.T) { testChannelStoreSaveDirectChannel(t, rctx, ss, s) }) + t.Run("CreateDirectChannel", func(t *testing.T) { testChannelStoreCreateDirectChannel(t, rctx, ss) }) + t.Run("Update", func(t *testing.T) { testChannelStoreUpdate(t, rctx, ss) }) + t.Run("GetChannelUnread", func(t *testing.T) { testGetChannelUnread(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testChannelStoreGet(t, rctx, ss, s) }) + t.Run("GetMany", func(t *testing.T) { testChannelStoreGetMany(t, rctx, ss, s) }) + t.Run("GetChannelsByIds", func(t *testing.T) { testChannelStoreGetChannelsByIds(t, rctx, ss) }) + t.Run("GetChannelsWithTeamDataByIds", func(t *testing.T) { testGetChannelsWithTeamDataByIds(t, rctx, ss) }) + t.Run("GetForPost", func(t *testing.T) { testChannelStoreGetForPost(t, rctx, ss) }) + t.Run("Restore", func(t *testing.T) { testChannelStoreRestore(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testChannelStoreDelete(t, rctx, ss) }) + t.Run("GetByName", func(t *testing.T) { testChannelStoreGetByName(t, rctx, ss) }) + t.Run("GetByNames", func(t *testing.T) { testChannelStoreGetByNames(t, rctx, ss) }) + t.Run("GetByNamesIncludeDeleted", func(t *testing.T) { testChannelStoreGetByNamesIncludeDeleted(t, rctx, ss) }) + t.Run("GetDeletedByName", func(t *testing.T) { testChannelStoreGetDeletedByName(t, rctx, ss) }) + t.Run("GetDeleted", func(t *testing.T) { testChannelStoreGetDeleted(t, rctx, ss) }) + t.Run("ChannelMemberStore", func(t *testing.T) { testChannelMemberStore(t, rctx, ss) }) + t.Run("SaveMember", func(t *testing.T) { testChannelSaveMember(t, rctx, ss) }) + t.Run("SaveMultipleMembers", func(t *testing.T) { testChannelSaveMultipleMembers(t, rctx, ss) }) + t.Run("UpdateMember", func(t *testing.T) { testChannelUpdateMember(t, rctx, ss) }) + t.Run("UpdateMemberNotifyProps", func(t *testing.T) { testChannelUpdateMemberNotifyProps(t, rctx, ss) }) + t.Run("UpdateMultipleMembers", func(t *testing.T) { testChannelUpdateMultipleMembers(t, rctx, ss) }) + t.Run("RemoveMember", func(t *testing.T) { testChannelRemoveMember(t, rctx, ss) }) + t.Run("RemoveMembers", func(t *testing.T) { testChannelRemoveMembers(t, rctx, ss) }) + t.Run("ChannelDeleteMemberStore", func(t *testing.T) { testChannelDeleteMemberStore(t, rctx, ss) }) + t.Run("GetChannels", func(t *testing.T) { testChannelStoreGetChannels(t, rctx, ss) }) + t.Run("GetChannelsByUser", func(t *testing.T) { testChannelStoreGetChannelsByUser(t, rctx, ss) }) + t.Run("GetAllChannels", func(t *testing.T) { testChannelStoreGetAllChannels(t, rctx, ss, s) }) + t.Run("GetMoreChannels", func(t *testing.T) { testChannelStoreGetMoreChannels(t, rctx, ss) }) + t.Run("GetPrivateChannelsForTeam", func(t *testing.T) { testChannelStoreGetPrivateChannelsForTeam(t, rctx, ss) }) + t.Run("GetPublicChannelsForTeam", func(t *testing.T) { testChannelStoreGetPublicChannelsForTeam(t, rctx, ss) }) + t.Run("GetPublicChannelsByIdsForTeam", func(t *testing.T) { testChannelStoreGetPublicChannelsByIdsForTeam(t, rctx, ss) }) + t.Run("GetChannelCounts", func(t *testing.T) { testChannelStoreGetChannelCounts(t, rctx, ss) }) + t.Run("GetMembersForUser", func(t *testing.T) { testChannelStoreGetMembersForUser(t, rctx, ss) }) + t.Run("GetMembersForUserWithPagination", func(t *testing.T) { testChannelStoreGetMembersForUserWithPagination(t, rctx, ss) }) + t.Run("CountPostsAfter", func(t *testing.T) { testCountPostsAfter(t, rctx, ss) }) + t.Run("CountUrgentPostsAfter", func(t *testing.T) { testCountUrgentPostsAfter(t, rctx, ss) }) + t.Run("UpdateLastViewedAt", func(t *testing.T) { testChannelStoreUpdateLastViewedAt(t, rctx, ss) }) + t.Run("IncrementMentionCount", func(t *testing.T) { testChannelStoreIncrementMentionCount(t, rctx, ss) }) + t.Run("UpdateChannelMember", func(t *testing.T) { testUpdateChannelMember(t, rctx, ss) }) + t.Run("GetMember", func(t *testing.T) { testGetMember(t, rctx, ss) }) + t.Run("GetMemberForPost", func(t *testing.T) { testChannelStoreGetMemberForPost(t, rctx, ss) }) + t.Run("GetMemberCount", func(t *testing.T) { testGetMemberCount(t, rctx, ss) }) + t.Run("GetMemberCountsByGroup", func(t *testing.T) { testGetMemberCountsByGroup(t, rctx, ss) }) + t.Run("GetGuestCount", func(t *testing.T) { testGetGuestCount(t, rctx, ss) }) + t.Run("SearchMore", func(t *testing.T) { testChannelStoreSearchMore(t, rctx, ss) }) + t.Run("SearchInTeam", func(t *testing.T) { testChannelStoreSearchInTeam(t, rctx, ss) }) + t.Run("Autocomplete", func(t *testing.T) { testAutocomplete(t, rctx, ss, s) }) + t.Run("SearchArchivedInTeam", func(t *testing.T) { testChannelStoreSearchArchivedInTeam(t, rctx, ss, s) }) + t.Run("SearchForUserInTeam", func(t *testing.T) { testChannelStoreSearchForUserInTeam(t, rctx, ss) }) + t.Run("SearchAllChannels", func(t *testing.T) { testChannelStoreSearchAllChannels(t, rctx, ss) }) + t.Run("GetMembersByIds", func(t *testing.T) { testChannelStoreGetMembersByIds(t, rctx, ss) }) + t.Run("GetMembersByChannelIds", func(t *testing.T) { testChannelStoreGetMembersByChannelIds(t, rctx, ss) }) + t.Run("GetMembersInfoByChannelIds", func(t *testing.T) { testChannelStoreGetMembersInfoByChannelIds(t, rctx, ss) }) + t.Run("SearchGroupChannels", func(t *testing.T) { testChannelStoreSearchGroupChannels(t, rctx, ss) }) + t.Run("AnalyticsDeletedTypeCount", func(t *testing.T) { testChannelStoreAnalyticsDeletedTypeCount(t, rctx, ss) }) + t.Run("GetPinnedPosts", func(t *testing.T) { testChannelStoreGetPinnedPosts(t, rctx, ss) }) + t.Run("GetPinnedPostCount", func(t *testing.T) { testChannelStoreGetPinnedPostCount(t, rctx, ss) }) + t.Run("MaxChannelsPerTeam", func(t *testing.T) { testChannelStoreMaxChannelsPerTeam(t, rctx, ss) }) + t.Run("GetChannelsByScheme", func(t *testing.T) { testChannelStoreGetChannelsByScheme(t, rctx, ss) }) + t.Run("MigrateChannelMembers", func(t *testing.T) { testChannelStoreMigrateChannelMembers(t, rctx, ss) }) + t.Run("ResetAllChannelSchemes", func(t *testing.T) { testResetAllChannelSchemes(t, rctx, ss) }) + t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testChannelStoreClearAllCustomRoleAssignments(t, rctx, ss) }) + t.Run("MaterializedPublicChannels", func(t *testing.T) { testMaterializedPublicChannels(t, rctx, ss, s) }) + t.Run("GetAllChannelsForExportAfter", func(t *testing.T) { testChannelStoreGetAllChannelsForExportAfter(t, rctx, ss) }) + t.Run("GetChannelMembersForExport", func(t *testing.T) { testChannelStoreGetChannelMembersForExport(t, rctx, ss) }) + t.Run("RemoveAllDeactivatedMembers", func(t *testing.T) { testChannelStoreRemoveAllDeactivatedMembers(t, rctx, ss, s) }) + t.Run("ExportAllDirectChannels", func(t *testing.T) { testChannelStoreExportAllDirectChannels(t, rctx, ss, s) }) + t.Run("ExportAllDirectChannelsExcludePrivateAndPublic", func(t *testing.T) { testChannelStoreExportAllDirectChannelsExcludePrivateAndPublic(t, rctx, ss, s) }) + t.Run("ExportAllDirectChannelsDeletedChannel", func(t *testing.T) { testChannelStoreExportAllDirectChannelsDeletedChannel(t, rctx, ss, s) }) + t.Run("GetChannelsBatchForIndexing", func(t *testing.T) { testChannelStoreGetChannelsBatchForIndexing(t, rctx, ss) }) + t.Run("GroupSyncedChannelCount", func(t *testing.T) { testGroupSyncedChannelCount(t, rctx, ss) }) + t.Run("CreateInitialSidebarCategories", func(t *testing.T) { testCreateInitialSidebarCategories(t, rctx, ss) }) + t.Run("CreateSidebarCategory", func(t *testing.T) { testCreateSidebarCategory(t, rctx, ss) }) + t.Run("GetSidebarCategory", func(t *testing.T) { testGetSidebarCategory(t, rctx, ss, s) }) + t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, rctx, ss) }) + t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, rctx, ss) }) + t.Run("DeleteSidebarCategory", func(t *testing.T) { testDeleteSidebarCategory(t, rctx, ss, s) }) + t.Run("UpdateSidebarChannelsByPreferences", func(t *testing.T) { testUpdateSidebarChannelsByPreferences(t, rctx, ss) }) + t.Run("SetShared", func(t *testing.T) { testSetShared(t, rctx, ss) }) + t.Run("GetTeamForChannel", func(t *testing.T) { testGetTeamForChannel(t, rctx, ss) }) + t.Run("GetChannelsWithUnreadsAndWithMentions", func(t *testing.T) { testGetChannelsWithUnreadsAndWithMentions(t, rctx, ss) }) } -func testChannelStoreSave(t *testing.T, ss store.Store) { +func testChannelStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() o1 := model.Channel{} @@ -203,7 +204,7 @@ func testChannelStoreSave(t *testing.T, ss store.Store) { require.True(t, errors.As(nErr, &cErr)) } -func testChannelStoreSaveDirectChannel(t *testing.T, ss store.Store, s SqlStore) { +func testChannelStoreSaveDirectChannel(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() o1 := model.Channel{} @@ -293,7 +294,7 @@ func testChannelStoreSaveDirectChannel(t *testing.T, ss store.Store, s SqlStore) s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreCreateDirectChannel(t *testing.T, ss store.Store) { +func testChannelStoreCreateDirectChannel(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{} u1.Email = MakeEmail() u1.Nickname = model.NewId() @@ -322,7 +323,7 @@ func testChannelStoreCreateDirectChannel(t *testing.T, ss store.Store) { require.Len(t, members, 2, "should have saved 2 members") } -func testChannelStoreUpdate(t *testing.T, ss store.Store) { +func testChannelStoreUpdate(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Name" @@ -367,7 +368,7 @@ func testChannelStoreUpdate(t *testing.T, ss store.Store) { require.Equal(t, invalidInputErr.Field, "Name") } -func testGetChannelUnread(t *testing.T, ss store.Store) { +func testGetChannelUnread(t *testing.T, rctx request.CTX, ss store.Store) { teamId1 := model.NewId() teamId2 := model.NewId() @@ -419,7 +420,7 @@ func testGetChannelUnread(t *testing.T, ss store.Store) { require.EqualValues(t, 10, ch2.MsgCount, "wrong MsgCount for channel 2") } -func testChannelStoreGet(t *testing.T, ss store.Store, s SqlStore) { +func testChannelStoreGet(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Name" @@ -494,7 +495,7 @@ func testChannelStoreGet(t *testing.T, ss store.Store, s SqlStore) { s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreGetMany(t *testing.T, ss store.Store, s SqlStore) { +func testChannelStoreGetMany(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { o1, nErr := ss.Channel().Save(&model.Channel{ TeamId: model.NewId(), DisplayName: "Name", @@ -528,7 +529,7 @@ func testChannelStoreGetMany(t *testing.T, ss store.Store, s SqlStore) { s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreGetChannelsByIds(t *testing.T, ss store.Store) { +func testChannelStoreGetChannelsByIds(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Name" @@ -607,7 +608,7 @@ func testChannelStoreGetChannelsByIds(t *testing.T, ss store.Store) { }) } -func testGetChannelsWithTeamDataByIds(t *testing.T, ss store.Store) { +func testGetChannelsWithTeamDataByIds(t *testing.T, rctx request.CTX, ss store.Store) { t1 := &model.Team{ DisplayName: "DisplayName", Name: NewTestId(), @@ -692,7 +693,7 @@ func testGetChannelsWithTeamDataByIds(t *testing.T, ss store.Store) { } } -func testChannelStoreGetForPost(t *testing.T, ss store.Store) { +func testChannelStoreGetForPost(t *testing.T, rctx request.CTX, ss store.Store) { ch := &model.Channel{ TeamId: model.NewId(), DisplayName: "Name", @@ -714,7 +715,7 @@ func testChannelStoreGetForPost(t *testing.T, ss store.Store) { require.Equal(t, o1.Id, channel.Id, "incorrect channel returned") } -func testChannelStoreRestore(t *testing.T, ss store.Store) { +func testChannelStoreRestore(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Channel1" @@ -736,7 +737,7 @@ func testChannelStoreRestore(t *testing.T, ss store.Store) { require.EqualValues(t, 0, c.DeleteAt, "should have been restored") } -func testChannelStoreDelete(t *testing.T, ss store.Store) { +func testChannelStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Channel1" @@ -821,7 +822,7 @@ func testChannelStoreDelete(t *testing.T, ss store.Store) { require.NoError(t, nErr, nErr) } -func testChannelStoreGetByName(t *testing.T, ss store.Store) { +func testChannelStoreGetByName(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Name" @@ -853,7 +854,7 @@ func testChannelStoreGetByName(t *testing.T, ss store.Store) { require.Error(t, err, "Deleted channel should not be returned by GetByName()") } -func testChannelStoreGetByNames(t *testing.T, ss store.Store) { +func testChannelStoreGetByNames(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{ TeamId: model.NewId(), DisplayName: "Name", @@ -919,7 +920,7 @@ func testChannelStoreGetByNames(t *testing.T, ss store.Store) { assert.Empty(t, channels) } -func testChannelStoreGetByNamesIncludeDeleted(t *testing.T, ss store.Store) { +func testChannelStoreGetByNamesIncludeDeleted(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{ TeamId: model.NewId(), DisplayName: "Name", @@ -966,7 +967,7 @@ func testChannelStoreGetByNamesIncludeDeleted(t *testing.T, ss store.Store) { } } -func testChannelStoreGetDeletedByName(t *testing.T, ss store.Store) { +func testChannelStoreGetDeletedByName(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Name" @@ -989,7 +990,7 @@ func testChannelStoreGetDeletedByName(t *testing.T, ss store.Store) { require.Error(t, nErr, "missing id should have failed") } -func testChannelStoreGetDeleted(t *testing.T, ss store.Store) { +func testChannelStoreGetDeleted(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Channel1" @@ -1046,7 +1047,7 @@ func testChannelStoreGetDeleted(t *testing.T, ss store.Store) { require.Len(t, list, 1, "wrong list length") } -func testChannelMemberStore(t *testing.T, ss store.Store) { +func testChannelMemberStore(t *testing.T, rctx request.CTX, ss store.Store) { c1 := &model.Channel{} c1.TeamId = model.NewId() c1.DisplayName = "NameName" @@ -1134,7 +1135,7 @@ func testChannelMemberStore(t *testing.T, ss store.Store) { assert.EqualValues(t, 0, c1t4.ExtraUpdateAt, "ExtraUpdateAt should be 0") } -func testChannelSaveMember(t *testing.T, ss store.Store) { +func testChannelSaveMember(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) defaultNotifyProps := model.GetDefaultChannelNotifyProps() @@ -1641,7 +1642,7 @@ func testChannelSaveMember(t *testing.T, ss store.Store) { }) } -func testChannelSaveMultipleMembers(t *testing.T, ss store.Store) { +func testChannelSaveMultipleMembers(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -2190,7 +2191,7 @@ func testChannelSaveMultipleMembers(t *testing.T, ss store.Store) { }) } -func testChannelUpdateMember(t *testing.T, ss store.Store) { +func testChannelUpdateMember(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) defaultNotifyProps := model.GetDefaultChannelNotifyProps() @@ -2695,7 +2696,7 @@ func testChannelUpdateMember(t *testing.T, ss store.Store) { }) } -func testChannelUpdateMultipleMembers(t *testing.T, ss store.Store) { +func testChannelUpdateMultipleMembers(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -3231,7 +3232,7 @@ func testChannelUpdateMultipleMembers(t *testing.T, ss store.Store) { }) } -func testChannelUpdateMemberNotifyProps(t *testing.T, ss store.Store) { +func testChannelUpdateMemberNotifyProps(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) defaultNotifyProps := model.GetDefaultChannelNotifyProps() @@ -3281,7 +3282,7 @@ func testChannelUpdateMemberNotifyProps(t *testing.T, ss store.Store) { }) } -func testChannelRemoveMember(t *testing.T, ss store.Store) { +func testChannelRemoveMember(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -3328,7 +3329,7 @@ func testChannelRemoveMember(t *testing.T, ss store.Store) { }) } -func testChannelRemoveMembers(t *testing.T, ss store.Store) { +func testChannelRemoveMembers(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -3383,7 +3384,7 @@ func testChannelRemoveMembers(t *testing.T, ss store.Store) { }) } -func testChannelDeleteMemberStore(t *testing.T, ss store.Store) { +func testChannelDeleteMemberStore(t *testing.T, rctx request.CTX, ss store.Store) { c1 := &model.Channel{} c1.TeamId = model.NewId() c1.DisplayName = "NameName" @@ -3447,7 +3448,7 @@ func testChannelDeleteMemberStore(t *testing.T, ss store.Store) { require.EqualValues(t, 0, count, "should have removed all members") } -func testChannelStoreGetChannels(t *testing.T, ss store.Store) { +func testChannelStoreGetChannels(t *testing.T, rctx request.CTX, ss store.Store) { team := model.NewId() o1 := &model.Channel{} o1.TeamId = team @@ -3620,7 +3621,7 @@ func testChannelStoreGetChannels(t *testing.T, ss store.Store) { ss.Channel().InvalidateAllChannelMembersForUser(m1.UserId) } -func testChannelStoreGetChannelsByUser(t *testing.T, ss store.Store) { +func testChannelStoreGetChannelsByUser(t *testing.T, rctx request.CTX, ss store.Store) { team := model.NewId() team2 := model.NewId() o1 := model.Channel{} @@ -3711,8 +3712,8 @@ func testChannelStoreGetChannelsByUser(t *testing.T, ss store.Store) { require.ElementsMatch(t, []string{o1.Id, o3.Id}, []string{list[0].Id, list[1].Id}, "channels did not match") } -func testChannelStoreGetAllChannels(t *testing.T, ss store.Store, s SqlStore) { - cleanupChannels(t, ss) +func testChannelStoreGetAllChannels(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + cleanupChannels(t, rctx, ss) t1 := model.Team{} t1.DisplayName = "Name" @@ -3857,7 +3858,7 @@ func testChannelStoreGetAllChannels(t *testing.T, ss store.Store, s SqlStore) { s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreGetMoreChannels(t *testing.T, ss store.Store) { +func testChannelStoreGetMoreChannels(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() otherTeamId := model.NewId() userId := model.NewId() @@ -4011,7 +4012,7 @@ func testChannelStoreGetMoreChannels(t *testing.T, ss store.Store) { }) } -func testChannelStoreGetPrivateChannelsForTeam(t *testing.T, ss store.Store) { +func testChannelStoreGetPrivateChannelsForTeam(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() // p1 is a private channel on the team @@ -4103,7 +4104,7 @@ func testChannelStoreGetPrivateChannelsForTeam(t *testing.T, ss store.Store) { }) } -func testChannelStoreGetPublicChannelsForTeam(t *testing.T, ss store.Store) { +func testChannelStoreGetPublicChannelsForTeam(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() // o1 is a public channel on the team @@ -4195,7 +4196,7 @@ func testChannelStoreGetPublicChannelsForTeam(t *testing.T, ss store.Store) { }) } -func testChannelStoreGetPublicChannelsByIdsForTeam(t *testing.T, ss store.Store) { +func testChannelStoreGetPublicChannelsByIdsForTeam(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() // oc1 is a public channel on the team @@ -4277,7 +4278,7 @@ func testChannelStoreGetPublicChannelsByIdsForTeam(t *testing.T, ss store.Store) }) } -func testChannelStoreGetChannelCounts(t *testing.T, ss store.Store) { +func testChannelStoreGetChannelCounts(t *testing.T, rctx request.CTX, ss store.Store) { o2 := model.Channel{} o2.TeamId = model.NewId() o2.DisplayName = "Channel2" @@ -4321,7 +4322,7 @@ func testChannelStoreGetChannelCounts(t *testing.T, ss store.Store) { require.Len(t, counts.UpdateTimes, 1, "wrong number of update times") } -func testChannelStoreGetMembersForUser(t *testing.T, ss store.Store) { +func testChannelStoreGetMembersForUser(t *testing.T, rctx request.CTX, ss store.Store) { t1 := model.Team{} t1.DisplayName = "Name" t1.Name = NewTestId() @@ -4418,7 +4419,7 @@ func testChannelStoreGetMembersForUser(t *testing.T, ss store.Store) { }) } -func testChannelStoreGetMembersForUserWithPagination(t *testing.T, ss store.Store) { +func testChannelStoreGetMembersForUserWithPagination(t *testing.T, rctx request.CTX, ss store.Store) { t1 := model.Team{ DisplayName: "team1", Name: NewTestId(), @@ -4483,7 +4484,7 @@ func testChannelStoreGetMembersForUserWithPagination(t *testing.T, ss store.Stor assert.Len(t, members, 1) } -func testCountPostsAfter(t *testing.T, ss store.Store) { +func testCountPostsAfter(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should count all posts with or without the given user ID", func(t *testing.T) { userId1 := model.NewId() userId2 := model.NewId() @@ -4635,7 +4636,7 @@ func testCountPostsAfter(t *testing.T, ss store.Store) { }) } -func testCountUrgentPostsAfter(t *testing.T, ss store.Store) { +func testCountUrgentPostsAfter(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should count all posts with or without the given user ID", func(t *testing.T) { userId1 := model.NewId() userId2 := model.NewId() @@ -4710,7 +4711,7 @@ func testCountUrgentPostsAfter(t *testing.T, ss store.Store) { }) } -func testChannelStoreUpdateLastViewedAt(t *testing.T, ss store.Store) { +func testChannelStoreUpdateLastViewedAt(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Channel1" @@ -4772,7 +4773,7 @@ func testChannelStoreUpdateLastViewedAt(t *testing.T, ss store.Store) { require.NoError(t, err, "failed to update") } -func testChannelStoreIncrementMentionCount(t *testing.T, ss store.Store) { +func testChannelStoreIncrementMentionCount(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "Channel1" @@ -4802,7 +4803,7 @@ func testChannelStoreIncrementMentionCount(t *testing.T, ss store.Store) { require.NoError(t, err, "failed to update") } -func testUpdateChannelMember(t *testing.T, ss store.Store) { +func testUpdateChannelMember(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() c1 := &model.Channel{ @@ -4831,7 +4832,7 @@ func testUpdateChannelMember(t *testing.T, ss store.Store) { require.Error(t, err, "bad user id - should fail") } -func testGetMember(t *testing.T, ss store.Store) { +func testGetMember(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() c1 := &model.Channel{ @@ -4895,7 +4896,7 @@ func testGetMember(t *testing.T, ss store.Store) { ss.Channel().InvalidateCacheForChannelMembersNotifyProps(c2.Id) } -func testChannelStoreGetMemberForPost(t *testing.T, ss store.Store) { +func testChannelStoreGetMemberForPost(t *testing.T, rctx request.CTX, ss store.Store) { ch := &model.Channel{ TeamId: model.NewId(), DisplayName: "Name", @@ -4928,7 +4929,7 @@ func testChannelStoreGetMemberForPost(t *testing.T, ss store.Store) { require.Error(t, err, "shouldn't have returned a member") } -func testGetMemberCount(t *testing.T, ss store.Store) { +func testGetMemberCount(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() c1 := model.Channel{ @@ -5036,7 +5037,7 @@ func testGetMemberCount(t *testing.T, ss store.Store) { require.EqualValuesf(t, 2, count, "got incorrect member count %v", count) } -func testGetMemberCountsByGroup(t *testing.T, ss store.Store) { +func testGetMemberCountsByGroup(t *testing.T, rctx request.CTX, ss store.Store) { var memberCounts []*model.ChannelMemberCountByGroup teamId := model.NewId() g1 := &model.Group{ @@ -5251,7 +5252,7 @@ func testGetMemberCountsByGroup(t *testing.T, ss store.Store) { }) } -func testGetGuestCount(t *testing.T, ss store.Store) { +func testGetGuestCount(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() c1 := model.Channel{ @@ -5373,7 +5374,7 @@ func testGetGuestCount(t *testing.T, ss store.Store) { }) } -func testChannelStoreSearchMore(t *testing.T, ss store.Store) { +func testChannelStoreSearchMore(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() otherTeamId := model.NewId() @@ -5542,7 +5543,7 @@ func (s ByChannelDisplayName) Less(i, j int) bool { return s[i].Id < s[j].Id } -func testChannelStoreSearchArchivedInTeam(t *testing.T, ss store.Store, s SqlStore) { +func testChannelStoreSearchArchivedInTeam(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() userId := model.NewId() o1 := model.Channel{} @@ -5583,7 +5584,7 @@ func testChannelStoreSearchArchivedInTeam(t *testing.T, ss store.Store, s SqlSto }) } -func testChannelStoreSearchInTeam(t *testing.T, ss store.Store) { +func testChannelStoreSearchInTeam(t *testing.T, rctx request.CTX, ss store.Store) { teamID := model.NewId() otherTeamID := model.NewId() @@ -5802,7 +5803,7 @@ func testChannelStoreSearchInTeam(t *testing.T, ss store.Store) { } } -func testAutocomplete(t *testing.T, ss store.Store, s SqlStore) { +func testAutocomplete(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { t1 := &model.Team{ DisplayName: "t1", Name: NewTestId(), @@ -6014,7 +6015,7 @@ func testAutocomplete(t *testing.T, ss store.Store, s SqlStore) { s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreSearchForUserInTeam(t *testing.T, ss store.Store) { +func testChannelStoreSearchForUserInTeam(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() teamId := model.NewId() otherTeamId := model.NewId() @@ -6120,8 +6121,8 @@ func testChannelStoreSearchForUserInTeam(t *testing.T, ss store.Store) { }) } -func testChannelStoreSearchAllChannels(t *testing.T, ss store.Store) { - cleanupChannels(t, ss) +func testChannelStoreSearchAllChannels(t *testing.T, rctx request.CTX, ss store.Store) { + cleanupChannels(t, rctx, ss) t1 := model.Team{} t1.DisplayName = "Name" @@ -6378,7 +6379,7 @@ func testChannelStoreSearchAllChannels(t *testing.T, ss store.Store) { } } -func testChannelStoreGetMembersByIds(t *testing.T, ss store.Store) { +func testChannelStoreGetMembersByIds(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "ChannelA" @@ -6412,7 +6413,7 @@ func testChannelStoreGetMembersByIds(t *testing.T, ss store.Store) { require.Len(t, members, 0) } -func testChannelStoreGetMembersByChannelIds(t *testing.T, ss store.Store) { +func testChannelStoreGetMembersByChannelIds(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() // Create a couple channels and add the user to them @@ -6470,7 +6471,7 @@ func testChannelStoreGetMembersByChannelIds(t *testing.T, ss store.Store) { }) } -func testChannelStoreGetMembersInfoByChannelIds(t *testing.T, ss store.Store) { +func testChannelStoreGetMembersInfoByChannelIds(t *testing.T, rctx request.CTX, ss store.Store) { u, err := ss.User().Save(&model.User{ Username: "user.test", Email: MakeEmail(), @@ -6526,7 +6527,7 @@ func testChannelStoreGetMembersInfoByChannelIds(t *testing.T, ss store.Store) { }) } -func testChannelStoreSearchGroupChannels(t *testing.T, ss store.Store) { +func testChannelStoreSearchGroupChannels(t *testing.T, rctx request.CTX, ss store.Store) { // Users u1 := &model.User{} u1.Username = "user.one" @@ -6680,7 +6681,7 @@ func testChannelStoreSearchGroupChannels(t *testing.T, ss store.Store) { } } -func testChannelStoreAnalyticsDeletedTypeCount(t *testing.T, ss store.Store) { +func testChannelStoreAnalyticsDeletedTypeCount(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Channel{} o1.TeamId = model.NewId() o1.DisplayName = "ChannelA" @@ -6760,7 +6761,7 @@ func testChannelStoreAnalyticsDeletedTypeCount(t *testing.T, ss store.Store) { assert.Equal(t, directStartCount+1, count, "Wrong direct channel deleted count.") } -func testChannelStoreGetPinnedPosts(t *testing.T, ss store.Store) { +func testChannelStoreGetPinnedPosts(t *testing.T, rctx request.CTX, ss store.Store) { ch1 := &model.Channel{ TeamId: model.NewId(), DisplayName: "Name", @@ -6853,7 +6854,7 @@ func testChannelStoreGetPinnedPosts(t *testing.T, ss store.Store) { }) } -func testChannelStoreGetPinnedPostCount(t *testing.T, ss store.Store) { +func testChannelStoreGetPinnedPostCount(t *testing.T, rctx request.CTX, ss store.Store) { ch1 := &model.Channel{ TeamId: model.NewId(), DisplayName: "Name", @@ -6913,7 +6914,7 @@ func testChannelStoreGetPinnedPostCount(t *testing.T, ss store.Store) { require.EqualValues(t, 0, count, "should return 0") } -func testChannelStoreMaxChannelsPerTeam(t *testing.T, ss store.Store) { +func testChannelStoreMaxChannelsPerTeam(t *testing.T, rctx request.CTX, ss store.Store) { channel := &model.Channel{ TeamId: model.NewId(), DisplayName: "Channel", @@ -6930,7 +6931,7 @@ func testChannelStoreMaxChannelsPerTeam(t *testing.T, ss store.Store) { assert.NoError(t, nErr) } -func testChannelStoreGetChannelsByScheme(t *testing.T, ss store.Store) { +func testChannelStoreGetChannelsByScheme(t *testing.T, rctx request.CTX, ss store.Store) { // Create some schemes. s1 := &model.Scheme{ DisplayName: model.NewId(), @@ -6995,7 +6996,7 @@ func testChannelStoreGetChannelsByScheme(t *testing.T, ss store.Store) { assert.Empty(t, d3) } -func testChannelStoreMigrateChannelMembers(t *testing.T, ss store.Store) { +func testChannelStoreMigrateChannelMembers(t *testing.T, rctx request.CTX, ss store.Store) { s1 := model.NewId() c1 := &model.Channel{ TeamId: model.NewId(), @@ -7067,7 +7068,7 @@ func testChannelStoreMigrateChannelMembers(t *testing.T, ss store.Store) { assert.False(t, cm3b.SchemeAdmin) } -func testResetAllChannelSchemes(t *testing.T, ss store.Store) { +func testResetAllChannelSchemes(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Scheme{ Name: model.NewId(), DisplayName: model.NewId(), @@ -7109,7 +7110,7 @@ func testResetAllChannelSchemes(t *testing.T, ss store.Store) { assert.Equal(t, "", *c2.SchemeId) } -func testChannelStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) { +func testChannelStoreClearAllCustomRoleAssignments(t *testing.T, rctx request.CTX, ss store.Store) { c := &model.Channel{ TeamId: model.NewId(), DisplayName: "Name", @@ -7174,7 +7175,7 @@ func testChannelStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) // testMaterializedPublicChannels tests edge cases involving the triggers and stored procedures // that materialize the PublicChannels table. -func testMaterializedPublicChannels(t *testing.T, ss store.Store, s SqlStore) { +func testMaterializedPublicChannels(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() // o1 is a public channel on the team @@ -7330,7 +7331,7 @@ func testMaterializedPublicChannels(t *testing.T, ss store.Store, s SqlStore) { }) } -func testChannelStoreGetAllChannelsForExportAfter(t *testing.T, ss store.Store) { +func testChannelStoreGetAllChannelsForExportAfter(t *testing.T, rctx request.CTX, ss store.Store) { t1 := model.Team{} t1.DisplayName = "Name" t1.Name = NewTestId() @@ -7362,7 +7363,7 @@ func testChannelStoreGetAllChannelsForExportAfter(t *testing.T, ss store.Store) assert.True(t, found) } -func testChannelStoreGetChannelMembersForExport(t *testing.T, ss store.Store) { +func testChannelStoreGetChannelMembersForExport(t *testing.T, rctx request.CTX, ss store.Store) { t1 := model.Team{} t1.DisplayName = "Name" t1.Name = NewTestId() @@ -7418,7 +7419,7 @@ func testChannelStoreGetChannelMembersForExport(t *testing.T, ss store.Store) { assert.Equal(t, u1.Id, cmfe1.UserId) } -func testChannelStoreRemoveAllDeactivatedMembers(t *testing.T, ss store.Store, s SqlStore) { +func testChannelStoreRemoveAllDeactivatedMembers(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { // Set up all the objects needed in the store. t1 := model.Team{} t1.DisplayName = "Name" @@ -7509,7 +7510,7 @@ func testChannelStoreRemoveAllDeactivatedMembers(t *testing.T, ss store.Store, s s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreExportAllDirectChannels(t *testing.T, ss store.Store, s SqlStore) { +func testChannelStoreExportAllDirectChannels(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() o1 := model.Channel{} @@ -7566,7 +7567,7 @@ func testChannelStoreExportAllDirectChannels(t *testing.T, ss store.Store, s Sql s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreExportAllDirectChannelsExcludePrivateAndPublic(t *testing.T, ss store.Store, s SqlStore) { +func testChannelStoreExportAllDirectChannelsExcludePrivateAndPublic(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() o1 := model.Channel{} @@ -7628,7 +7629,7 @@ func testChannelStoreExportAllDirectChannelsExcludePrivateAndPublic(t *testing.T s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreExportAllDirectChannelsDeletedChannel(t *testing.T, ss store.Store, s SqlStore) { +func testChannelStoreExportAllDirectChannelsDeletedChannel(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() o1 := model.Channel{} @@ -7678,7 +7679,7 @@ func testChannelStoreExportAllDirectChannelsDeletedChannel(t *testing.T, ss stor s.GetMasterX().Exec("TRUNCATE Channels") } -func testChannelStoreGetChannelsBatchForIndexing(t *testing.T, ss store.Store) { +func testChannelStoreGetChannelsBatchForIndexing(t *testing.T, rctx request.CTX, ss store.Store) { // Set up all the objects needed c1 := &model.Channel{} c1.DisplayName = "Channel1" @@ -7744,7 +7745,7 @@ func testChannelStoreGetChannelsBatchForIndexing(t *testing.T, ss store.Store) { assert.Len(t, channels, 0) } -func testGroupSyncedChannelCount(t *testing.T, ss store.Store) { +func testGroupSyncedChannelCount(t *testing.T, rctx request.CTX, ss store.Store) { channel1, nErr := ss.Channel().Save(&model.Channel{ DisplayName: model.NewId(), Name: model.NewId(), @@ -7778,7 +7779,7 @@ func testGroupSyncedChannelCount(t *testing.T, ss store.Store) { require.GreaterOrEqual(t, countAfter, count+1) } -func testSetShared(t *testing.T, ss store.Store) { +func testSetShared(t *testing.T, rctx request.CTX, ss store.Store) { channel := &model.Channel{ TeamId: model.NewId(), DisplayName: "test_share_flag", @@ -7808,7 +7809,7 @@ func testSetShared(t *testing.T, ss store.Store) { }) } -func testGetTeamForChannel(t *testing.T, ss store.Store) { +func testGetTeamForChannel(t *testing.T, rctx request.CTX, ss store.Store) { team, err := ss.Team().Save(&model.Team{ Name: "myteam", DisplayName: "DisplayName", @@ -7835,7 +7836,7 @@ func testGetTeamForChannel(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testGetChannelsWithUnreadsAndWithMentions(t *testing.T, ss store.Store) { +func testGetChannelsWithUnreadsAndWithMentions(t *testing.T, rctx request.CTX, ss store.Store) { setupMembership := func( pushProp string, withUnreads bool, diff --git a/server/channels/store/storetest/channel_store_categories.go b/server/channels/store/storetest/channel_store_categories.go index 7af70208f1..32e510c32c 100644 --- a/server/channels/store/storetest/channel_store_categories.go +++ b/server/channels/store/storetest/channel_store_categories.go @@ -17,19 +17,19 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestChannelStoreCategories(t *testing.T, ss store.Store, s SqlStore) { - t.Run("CreateInitialSidebarCategories", func(t *testing.T) { testCreateInitialSidebarCategories(t, ss) }) - t.Run("CreateSidebarCategory", func(t *testing.T) { testCreateSidebarCategory(t, ss) }) - t.Run("GetSidebarCategory", func(t *testing.T) { testGetSidebarCategory(t, ss, s) }) - t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, ss) }) - t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, ss) }) - t.Run("ClearSidebarOnTeamLeave", func(t *testing.T) { testClearSidebarOnTeamLeave(t, ss, s) }) - t.Run("DeleteSidebarCategory", func(t *testing.T) { testDeleteSidebarCategory(t, ss, s) }) - t.Run("UpdateSidebarChannelsByPreferences", func(t *testing.T) { testUpdateSidebarChannelsByPreferences(t, ss) }) - t.Run("SidebarCategoryDeadlock", func(t *testing.T) { testSidebarCategoryDeadlock(t, ss) }) +func TestChannelStoreCategories(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("CreateInitialSidebarCategories", func(t *testing.T) { testCreateInitialSidebarCategories(t, rctx, ss) }) + t.Run("CreateSidebarCategory", func(t *testing.T) { testCreateSidebarCategory(t, rctx, ss) }) + t.Run("GetSidebarCategory", func(t *testing.T) { testGetSidebarCategory(t, rctx, ss, s) }) + t.Run("GetSidebarCategories", func(t *testing.T) { testGetSidebarCategories(t, rctx, ss) }) + t.Run("UpdateSidebarCategories", func(t *testing.T) { testUpdateSidebarCategories(t, rctx, ss) }) + t.Run("ClearSidebarOnTeamLeave", func(t *testing.T) { testClearSidebarOnTeamLeave(t, rctx, ss, s) }) + t.Run("DeleteSidebarCategory", func(t *testing.T) { testDeleteSidebarCategory(t, rctx, ss, s) }) + t.Run("UpdateSidebarChannelsByPreferences", func(t *testing.T) { testUpdateSidebarChannelsByPreferences(t, rctx, ss) }) + t.Run("SidebarCategoryDeadlock", func(t *testing.T) { testSidebarCategoryDeadlock(t, rctx, ss) }) } -func setupTeam(t *testing.T, ss store.Store, userIds ...string) *model.Team { +func setupTeam(t *testing.T, rctx request.CTX, ss store.Store, userIds ...string) *model.Team { team, err := ss.Team().Save(&model.Team{ DisplayName: "Name", Name: NewTestId(), @@ -53,20 +53,18 @@ func setupTeam(t *testing.T, ss store.Store, userIds ...string) *model.Team { return team } -func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testCreateInitialSidebarCategories(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should create initial favorites/channels/DMs categories", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) assert.NoError(t, nErr) require.Len(t, res.Categories, 3) assert.Equal(t, model.SidebarCategoryFavorites, res.Categories[0].Type) @@ -82,17 +80,17 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { userId := model.NewId() userId2 := model.NewId() - team := setupTeam(t, ss, userId, userId2) + team := setupTeam(t, rctx, ss, userId, userId2) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) - res, nErr = ss.Channel().CreateInitialSidebarCategories(c, userId2, opts) + res, nErr = ss.Channel().CreateInitialSidebarCategories(rctx, userId2, opts) assert.NoError(t, nErr) assert.Len(t, res.Categories, 3) assert.Equal(t, model.SidebarCategoryFavorites, res.Categories[0].Type) @@ -107,14 +105,14 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { t.Run("should create initial favorites/channels/DMs categories on different teams", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) - team2 := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) + team2 := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -122,7 +120,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { TeamID: team2.Id, ExcludeTeam: false, } - res, nErr = ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr = ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) assert.NoError(t, nErr) assert.Len(t, res.Categories, 3) assert.Equal(t, model.SidebarCategoryFavorites, res.Categories[0].Type) @@ -137,13 +135,13 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { t.Run("shouldn't create additional categories when ones already exist", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -152,7 +150,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { require.Equal(t, res, initialCategories) // Calling CreateInitialSidebarCategories a second time shouldn't create any new categories - res, nErr = ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr = ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) assert.NoError(t, nErr) assert.NotEmpty(t, res) @@ -164,7 +162,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { t.Run("shouldn't create additional categories when ones already exist even when ran simultaneously", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) var wg sync.WaitGroup @@ -178,7 +176,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - _, _ = ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + _, _ = ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) }() } @@ -192,7 +190,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { t.Run("should populate the Favorites category with regular channels", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Set up two channels, one favorited and one not channel1, nErr := ss.Channel().Save(&model.Channel{ @@ -236,7 +234,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - categories, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + categories, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.Len(t, categories.Categories, 3) assert.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) @@ -253,7 +251,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { t.Run("should populate the Favorites category in alphabetical order", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Set up two channels channel1, nErr := ss.Channel().Save(&model.Channel{ @@ -305,7 +303,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - categories, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + categories, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.Len(t, categories.Categories, 3) assert.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) @@ -320,7 +318,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { t.Run("should populate the Favorites category with DMs and GMs", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) otherUserId1 := model.NewId() otherUserId2 := model.NewId() @@ -373,7 +371,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - categories, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + categories, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.Len(t, categories.Categories, 3) assert.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) @@ -390,8 +388,8 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { t.Run("should not populate the Favorites category with channels from other teams", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) - team2 := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) + team2 := setupTeam(t, rctx, ss, userId) // Set up a channel on another team and favorite it channel1, nErr := ss.Channel().Save(&model.Channel{ @@ -422,7 +420,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - categories, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + categories, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.Len(t, categories.Categories, 3) assert.Equal(t, model.SidebarCategoryFavorites, categories.Categories[0].Type) @@ -437,9 +435,7 @@ func testCreateInitialSidebarCategories(t *testing.T, ss store.Store) { }) } -func testCreateSidebarCategory(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testCreateSidebarCategory(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Creating category without initial categories should fail", func(t *testing.T) { userId := model.NewId() teamId := model.NewId() @@ -459,13 +455,13 @@ func testCreateSidebarCategory(t *testing.T, ss store.Store) { t.Run("should place the new category second if Favorites comes first", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -489,13 +485,13 @@ func testCreateSidebarCategory(t *testing.T, ss store.Store) { t.Run("should place the new category first if Favorites is not first", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -530,13 +526,13 @@ func testCreateSidebarCategory(t *testing.T, ss store.Store) { t.Run("should create the category with its channels", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -572,13 +568,13 @@ func testCreateSidebarCategory(t *testing.T, ss store.Store) { t.Run("should remove any channels from their previous categories", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -637,13 +633,13 @@ func testCreateSidebarCategory(t *testing.T, ss store.Store) { t.Run("should store the correct sorting value", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) // Create the category @@ -667,12 +663,10 @@ func testCreateSidebarCategory(t *testing.T, ss store.Store) { }) } -func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { - c := request.TestContext(t) - +func testGetSidebarCategory(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { t.Run("should return a custom category with its Channels field set", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) channelId1 := model.NewId() channelId2 := model.NewId() @@ -682,7 +676,7 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -709,14 +703,14 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { t.Run("should return any orphaned channels with the Channels category", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories and find the channels category opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -777,14 +771,14 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { t.Run("shouldn't return orphaned channels on another team with the Channels category", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories and find the channels category opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -820,14 +814,14 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { t.Run("shouldn't return non-orphaned channels with the Channels category", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } // Create the initial categories and find the channels category - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -887,14 +881,14 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { t.Run("should return any orphaned DM channels with the Direct Messages category", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories and find the DMs category opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -932,14 +926,14 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { t.Run("should return any orphaned GM channels with the Direct Messages category", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories and find the DMs category opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -974,14 +968,14 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { t.Run("should return orphaned DM channels in the DMs category which are in a custom category on another team", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories and find the DMs category opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1010,12 +1004,12 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { require.NoError(t, nErr) // Create another team and assign the DM to a custom category on that team - otherTeam := setupTeam(t, ss, userId) + otherTeam := setupTeam(t, rctx, ss, userId) opts = &store.SidebarCategorySearchOpts{ TeamID: otherTeam.Id, ExcludeTeam: false, } - res, nErr = ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr = ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1037,18 +1031,16 @@ func testGetSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { }) } -func testGetSidebarCategories(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testGetSidebarCategories(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should return channels in the same order between different ways of getting categories", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1081,13 +1073,13 @@ func testGetSidebarCategories(t *testing.T, ss store.Store) { t.Run("should not return categories for teams deleted, or no longer a member", func(t *testing.T) { userId := model.NewId() - teamMember1 := setupTeam(t, ss, userId) - teamMember2 := setupTeam(t, ss, userId) - teamDeleted := setupTeam(t, ss, userId) + teamMember1 := setupTeam(t, rctx, ss, userId) + teamMember2 := setupTeam(t, rctx, ss, userId) + teamDeleted := setupTeam(t, rctx, ss, userId) teamDeleted.DeleteAt = model.GetMillis() ss.Team().Update(teamDeleted) - teamNotMember := setupTeam(t, ss) - teamDeletedMember := setupTeam(t, ss, userId) + teamNotMember := setupTeam(t, rctx, ss) + teamDeletedMember := setupTeam(t, rctx, ss, userId) members, err := ss.Team().GetMembersByIds(teamDeletedMember.Id, []string{userId}, nil) require.NoError(t, err) @@ -1105,7 +1097,7 @@ func testGetSidebarCategories(t *testing.T, ss store.Store) { } for _, id := range teamIds { - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, &store.SidebarCategorySearchOpts{TeamID: id}) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, &store.SidebarCategorySearchOpts{TeamID: id}) require.NoError(t, nErr) require.NotEmpty(t, res) } @@ -1140,19 +1132,17 @@ func testGetSidebarCategories(t *testing.T, ss store.Store) { }) } -func testUpdateSidebarCategories(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUpdateSidebarCategories(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("ensure the query to update SidebarCategories hasn't been polluted by UpdateSidebarCategoryOrder", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, err := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, err := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, err) require.NotEmpty(t, res) @@ -1183,14 +1173,14 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("categories should be returned in their original order", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, err := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, err := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, err) require.NotEmpty(t, res) @@ -1215,13 +1205,13 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("should silently fail to update read only fields", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1285,14 +1275,14 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("should add and remove favorites preferences based on the Favorites category", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories and find the favorites category opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1350,14 +1340,14 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("should add and remove favorites preferences for DMs", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create the initial categories and find the favorites category opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1420,15 +1410,15 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("should add and remove favorites preferences, even if the channel is already favorited in preferences", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) - team2 := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) + team2 := setupTeam(t, rctx, ss, userId) // Create the initial categories and find the favorites categories in each team opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1442,7 +1432,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { TeamID: team2.Id, ExcludeTeam: false, } - res, nErr = ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr = ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1530,14 +1520,14 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("should not affect other users' favorites preferences", func(t *testing.T) { userId := model.NewId() userId2 := model.NewId() - team := setupTeam(t, ss, userId, userId2) + team := setupTeam(t, rctx, ss, userId, userId2) // Create the initial categories and find the favorites category opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1550,7 +1540,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { require.Equal(t, model.SidebarCategoryChannels, channelsCategory.Type) // Create the other users' categories - res, nErr = ss.Channel().CreateInitialSidebarCategories(c, userId2, opts) + res, nErr = ss.Channel().CreateInitialSidebarCategories(rctx, userId2, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1673,7 +1663,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("channels removed from Channels or DMs categories should be re-added", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Create some channels channel, nErr := ss.Channel().Save(&model.Channel{ @@ -1710,7 +1700,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1746,7 +1736,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("should be able to move DMs into and out of custom categories", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) otherUserId := model.NewId() dmChannel, nErr := ss.Channel().SaveDirectChannel( @@ -1769,7 +1759,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1840,7 +1830,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("should successfully move channels between categories", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Join a channel channel, nErr := ss.Channel().Save(&model.Channel{ @@ -1861,7 +1851,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1908,7 +1898,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { t.Run("should correctly return the original categories that were modified", func(t *testing.T) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) // Join a channel channel, nErr := ss.Channel().Save(&model.Channel{ @@ -1929,7 +1919,7 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -1983,17 +1973,15 @@ func testUpdateSidebarCategories(t *testing.T, ss store.Store) { }) } -func setupInitialSidebarCategories(t *testing.T, ss store.Store) (string, string) { - c := request.TestContext(t) - +func setupInitialSidebarCategories(t *testing.T, rctx request.CTX, ss store.Store) (string, string) { userId := model.NewId() - team := setupTeam(t, ss, userId) + team := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team.Id, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -2004,11 +1992,9 @@ func setupInitialSidebarCategories(t *testing.T, ss store.Store) (string, string return userId, team.Id } -func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { - c := request.TestContext(t) - +func testClearSidebarOnTeamLeave(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { t.Run("should delete all sidebar categories and channels on the team", func(t *testing.T) { - userId, teamId := setupInitialSidebarCategories(t, ss) + userId, teamId := setupInitialSidebarCategories(t, rctx, ss) user := &model.User{ Id: userId, @@ -2057,7 +2043,7 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { }) t.Run("should not delete sidebar categories and channels on another the team", func(t *testing.T) { - userId, teamId := setupInitialSidebarCategories(t, ss) + userId, teamId := setupInitialSidebarCategories(t, rctx, ss) user := &model.User{ Id: userId, @@ -2106,7 +2092,7 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { }) t.Run("MM-30314 should not delete channels on another team under specific circumstances", func(t *testing.T) { - userId, teamId := setupInitialSidebarCategories(t, ss) + userId, teamId := setupInitialSidebarCategories(t, rctx, ss) user := &model.User{ Id: userId, @@ -2116,13 +2102,13 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { } // Create a second team and set up the sidebar categories for it - team2 := setupTeam(t, ss, userId) + team2 := setupTeam(t, rctx, ss, userId) opts := &store.SidebarCategorySearchOpts{ TeamID: team2.Id, ExcludeTeam: false, } - res, err := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, err := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, err) require.NotEmpty(t, res) @@ -2192,9 +2178,9 @@ func testClearSidebarOnTeamLeave(t *testing.T, ss store.Store, s SqlStore) { }) } -func testDeleteSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { +func testDeleteSidebarCategory(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { t.Run("should correctly remove an empty category", func(t *testing.T) { - userId, teamId := setupInitialSidebarCategories(t, ss) + userId, teamId := setupInitialSidebarCategories(t, rctx, ss) defer ss.User().PermanentDelete(userId) newCategory, err := ss.Channel().CreateSidebarCategory(userId, teamId, &model.SidebarCategoryWithChannels{}) @@ -2216,7 +2202,7 @@ func testDeleteSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { }) t.Run("should correctly remove a category and its channels", func(t *testing.T) { - userId, teamId := setupInitialSidebarCategories(t, ss) + userId, teamId := setupInitialSidebarCategories(t, rctx, ss) defer ss.User().PermanentDelete(userId) user := &model.User{ @@ -2284,7 +2270,7 @@ func testDeleteSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { }) t.Run("should not allow you to remove non-custom categories", func(t *testing.T) { - userId, teamId := setupInitialSidebarCategories(t, ss) + userId, teamId := setupInitialSidebarCategories(t, rctx, ss) defer ss.User().PermanentDelete(userId) res, err := ss.Channel().GetSidebarCategoriesForTeamForUser(userId, teamId) require.NoError(t, err) @@ -2304,9 +2290,7 @@ func testDeleteSidebarCategory(t *testing.T, ss store.Store, s SqlStore) { }) } -func testUpdateSidebarChannelsByPreferences(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUpdateSidebarChannelsByPreferences(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Should be able to update sidebar channels", func(t *testing.T) { userId := model.NewId() teamId := model.NewId() @@ -2315,7 +2299,7 @@ func testUpdateSidebarChannelsByPreferences(t *testing.T, ss store.Store) { TeamID: teamId, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) require.NoError(t, nErr) require.NotEmpty(t, res) @@ -2344,7 +2328,7 @@ func testUpdateSidebarChannelsByPreferences(t *testing.T, ss store.Store) { TeamID: teamId, ExcludeTeam: false, } - res, nErr := ss.Channel().CreateInitialSidebarCategories(c, userId, opts) + res, nErr := ss.Channel().CreateInitialSidebarCategories(rctx, userId, opts) assert.NoError(t, nErr) require.NotEmpty(t, res) @@ -2363,11 +2347,9 @@ func testUpdateSidebarChannelsByPreferences(t *testing.T, ss store.Store) { // testSidebarCategoryDeadlock tries to delete and update a category at the same time // in the hope of triggering a deadlock. This is a best-effort test case, and is not guaranteed // to catch a bug. -func testSidebarCategoryDeadlock(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSidebarCategoryDeadlock(t *testing.T, rctx request.CTX, ss store.Store) { userID := model.NewId() - team := setupTeam(t, ss, userID) + team := setupTeam(t, rctx, ss, userID) // Join a channel channel, err := ss.Channel().Save(&model.Channel{ @@ -2388,7 +2370,7 @@ func testSidebarCategoryDeadlock(t *testing.T, ss store.Store) { TeamID: team.Id, ExcludeTeam: false, } - res, err := ss.Channel().CreateInitialSidebarCategories(c, userID, opts) + res, err := ss.Channel().CreateInitialSidebarCategories(rctx, userID, opts) require.NoError(t, err) require.NotEmpty(t, res) diff --git a/server/channels/store/storetest/cluster_discovery_store.go b/server/channels/store/storetest/cluster_discovery_store.go index 5096a41933..cd53e2606a 100644 --- a/server/channels/store/storetest/cluster_discovery_store.go +++ b/server/channels/store/storetest/cluster_discovery_store.go @@ -11,18 +11,19 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestClusterDiscoveryStore(t *testing.T, ss store.Store) { - t.Run("", func(t *testing.T) { testClusterDiscoveryStore(t, ss) }) - t.Run("Delete", func(t *testing.T) { testClusterDiscoveryStoreDelete(t, ss) }) - t.Run("LastPing", func(t *testing.T) { testClusterDiscoveryStoreLastPing(t, ss) }) - t.Run("Exists", func(t *testing.T) { testClusterDiscoveryStoreExists(t, ss) }) - t.Run("ClusterDiscoveryGetStore", func(t *testing.T) { testClusterDiscoveryGetStore(t, ss) }) +func TestClusterDiscoveryStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("", func(t *testing.T) { testClusterDiscoveryStore(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testClusterDiscoveryStoreDelete(t, rctx, ss) }) + t.Run("LastPing", func(t *testing.T) { testClusterDiscoveryStoreLastPing(t, rctx, ss) }) + t.Run("Exists", func(t *testing.T) { testClusterDiscoveryStoreExists(t, rctx, ss) }) + t.Run("ClusterDiscoveryGetStore", func(t *testing.T) { testClusterDiscoveryGetStore(t, rctx, ss) }) } -func testClusterDiscoveryStore(t *testing.T, ss store.Store) { +func testClusterDiscoveryStore(t *testing.T, rctx request.CTX, ss store.Store) { discovery := &model.ClusterDiscovery{ ClusterName: "cluster_name", Hostname: "hostname" + model.NewId(), @@ -36,7 +37,7 @@ func testClusterDiscoveryStore(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testClusterDiscoveryStoreDelete(t *testing.T, ss store.Store) { +func testClusterDiscoveryStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { discovery := &model.ClusterDiscovery{ ClusterName: "cluster_name", Hostname: "hostname" + model.NewId(), @@ -50,7 +51,7 @@ func testClusterDiscoveryStoreDelete(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testClusterDiscoveryStoreLastPing(t *testing.T, ss store.Store) { +func testClusterDiscoveryStoreLastPing(t *testing.T, rctx request.CTX, ss store.Store) { discovery := &model.ClusterDiscovery{ ClusterName: "cluster_name_lastPing", Hostname: "hostname" + model.NewId(), @@ -86,7 +87,7 @@ func testClusterDiscoveryStoreLastPing(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testClusterDiscoveryStoreExists(t *testing.T, ss store.Store) { +func testClusterDiscoveryStoreExists(t *testing.T, rctx request.CTX, ss store.Store) { discovery := &model.ClusterDiscovery{ ClusterName: "cluster_name_Exists", Hostname: "hostname" + model.NewId(), @@ -107,7 +108,7 @@ func testClusterDiscoveryStoreExists(t *testing.T, ss store.Store) { assert.False(t, val) } -func testClusterDiscoveryGetStore(t *testing.T, ss store.Store) { +func testClusterDiscoveryGetStore(t *testing.T, rctx request.CTX, ss store.Store) { testType1 := model.NewId() discovery1 := &model.ClusterDiscovery{ diff --git a/server/channels/store/storetest/command_store.go b/server/channels/store/storetest/command_store.go index 5f42fca494..269dfe7788 100644 --- a/server/channels/store/storetest/command_store.go +++ b/server/channels/store/storetest/command_store.go @@ -10,22 +10,23 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestCommandStore(t *testing.T, ss store.Store) { - t.Run("Save", func(t *testing.T) { testCommandStoreSave(t, ss) }) - t.Run("Get", func(t *testing.T) { testCommandStoreGet(t, ss) }) - t.Run("GetByTeam", func(t *testing.T) { testCommandStoreGetByTeam(t, ss) }) - t.Run("GetByTrigger", func(t *testing.T) { testCommandStoreGetByTrigger(t, ss) }) - t.Run("Delete", func(t *testing.T) { testCommandStoreDelete(t, ss) }) - t.Run("DeleteByTeam", func(t *testing.T) { testCommandStoreDeleteByTeam(t, ss) }) - t.Run("DeleteByUser", func(t *testing.T) { testCommandStoreDeleteByUser(t, ss) }) - t.Run("Update", func(t *testing.T) { testCommandStoreUpdate(t, ss) }) - t.Run("CommandCount", func(t *testing.T) { testCommandCount(t, ss) }) +func TestCommandStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("Save", func(t *testing.T) { testCommandStoreSave(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testCommandStoreGet(t, rctx, ss) }) + t.Run("GetByTeam", func(t *testing.T) { testCommandStoreGetByTeam(t, rctx, ss) }) + t.Run("GetByTrigger", func(t *testing.T) { testCommandStoreGetByTrigger(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testCommandStoreDelete(t, rctx, ss) }) + t.Run("DeleteByTeam", func(t *testing.T) { testCommandStoreDeleteByTeam(t, rctx, ss) }) + t.Run("DeleteByUser", func(t *testing.T) { testCommandStoreDeleteByUser(t, rctx, ss) }) + t.Run("Update", func(t *testing.T) { testCommandStoreUpdate(t, rctx, ss) }) + t.Run("CommandCount", func(t *testing.T) { testCommandCount(t, rctx, ss) }) } -func testCommandStoreSave(t *testing.T, ss store.Store) { +func testCommandStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost @@ -40,7 +41,7 @@ func testCommandStoreSave(t *testing.T, ss store.Store) { require.Error(t, err, "shouldn't be able to update from save") } -func testCommandStoreGet(t *testing.T, ss store.Store) { +func testCommandStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost @@ -61,7 +62,7 @@ func testCommandStoreGet(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testCommandStoreGetByTeam(t *testing.T, ss store.Store) { +func testCommandStoreGetByTeam(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost @@ -82,7 +83,7 @@ func testCommandStoreGetByTeam(t *testing.T, ss store.Store) { require.Empty(t, result, "no commands should have returned") } -func testCommandStoreGetByTrigger(t *testing.T, ss store.Store) { +func testCommandStoreGetByTrigger(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost @@ -117,7 +118,7 @@ func testCommandStoreGetByTrigger(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testCommandStoreDelete(t *testing.T, ss store.Store) { +func testCommandStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost @@ -141,7 +142,7 @@ func testCommandStoreDelete(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testCommandStoreDeleteByTeam(t *testing.T, ss store.Store) { +func testCommandStoreDeleteByTeam(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost @@ -165,7 +166,7 @@ func testCommandStoreDeleteByTeam(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testCommandStoreDeleteByUser(t *testing.T, ss store.Store) { +func testCommandStoreDeleteByUser(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost @@ -189,7 +190,7 @@ func testCommandStoreDeleteByUser(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testCommandStoreUpdate(t *testing.T, ss store.Store) { +func testCommandStoreUpdate(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost @@ -211,7 +212,7 @@ func testCommandStoreUpdate(t *testing.T, ss store.Store) { require.Error(t, err) } -func testCommandCount(t *testing.T, ss store.Store) { +func testCommandCount(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Command{} o1.CreatorId = model.NewId() o1.Method = model.CommandMethodPost diff --git a/server/channels/store/storetest/command_webhook_store.go b/server/channels/store/storetest/command_webhook_store.go index 059abe43b8..7b2414ff9a 100644 --- a/server/channels/store/storetest/command_webhook_store.go +++ b/server/channels/store/storetest/command_webhook_store.go @@ -11,14 +11,15 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestCommandWebhookStore(t *testing.T, ss store.Store) { - t.Run("", func(t *testing.T) { testCommandWebhookStore(t, ss) }) +func TestCommandWebhookStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("", func(t *testing.T) { testCommandWebhookStore(t, rctx, ss) }) } -func testCommandWebhookStore(t *testing.T, ss store.Store) { +func testCommandWebhookStore(t *testing.T, rctx request.CTX, ss store.Store) { cws := ss.CommandWebhook() h1 := &model.CommandWebhook{} diff --git a/server/channels/store/storetest/compliance_store.go b/server/channels/store/storetest/compliance_store.go index ec581ca938..e0138533e5 100644 --- a/server/channels/store/storetest/compliance_store.go +++ b/server/channels/store/storetest/compliance_store.go @@ -16,7 +16,7 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/store" ) -func cleanupStoreState(t *testing.T, ss store.Store) { +func cleanupStoreState(t *testing.T, rctx request.CTX, ss store.Store) { //remove existing users allUsers, err := ss.User().GetAll() require.NoError(t, err, "error cleaning all test users", err) @@ -46,21 +46,21 @@ func cleanupStoreState(t *testing.T, ss store.Store) { } } -func TestComplianceStore(t *testing.T, ss store.Store) { - t.Run("", func(t *testing.T) { testComplianceStore(t, ss) }) - t.Run("ComplianceExport", func(t *testing.T) { testComplianceExport(t, ss) }) - t.Run("ComplianceExportDirectMessages", func(t *testing.T) { testComplianceExportDirectMessages(t, ss) }) - t.Run("MessageExportPublicChannel", func(t *testing.T) { testMessageExportPublicChannel(t, ss) }) - t.Run("MessageExportPrivateChannel", func(t *testing.T) { testMessageExportPrivateChannel(t, ss) }) - t.Run("MessageExportDirectMessageChannel", func(t *testing.T) { testMessageExportDirectMessageChannel(t, ss) }) - t.Run("MessageExportGroupMessageChannel", func(t *testing.T) { testMessageExportGroupMessageChannel(t, ss) }) - t.Run("MessageEditExportMessage", func(t *testing.T) { testEditExportMessage(t, ss) }) - t.Run("MessageEditAfterExportMessage", func(t *testing.T) { testEditAfterExportMessage(t, ss) }) - t.Run("MessageDeleteExportMessage", func(t *testing.T) { testDeleteExportMessage(t, ss) }) - t.Run("MessageDeleteAfterExportMessage", func(t *testing.T) { testDeleteAfterExportMessage(t, ss) }) +func TestComplianceStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("", func(t *testing.T) { testComplianceStore(t, rctx, ss) }) + t.Run("ComplianceExport", func(t *testing.T) { testComplianceExport(t, rctx, ss) }) + t.Run("ComplianceExportDirectMessages", func(t *testing.T) { testComplianceExportDirectMessages(t, rctx, ss) }) + t.Run("MessageExportPublicChannel", func(t *testing.T) { testMessageExportPublicChannel(t, rctx, ss) }) + t.Run("MessageExportPrivateChannel", func(t *testing.T) { testMessageExportPrivateChannel(t, rctx, ss) }) + t.Run("MessageExportDirectMessageChannel", func(t *testing.T) { testMessageExportDirectMessageChannel(t, rctx, ss) }) + t.Run("MessageExportGroupMessageChannel", func(t *testing.T) { testMessageExportGroupMessageChannel(t, rctx, ss) }) + t.Run("MessageEditExportMessage", func(t *testing.T) { testEditExportMessage(t, rctx, ss) }) + t.Run("MessageEditAfterExportMessage", func(t *testing.T) { testEditAfterExportMessage(t, rctx, ss) }) + t.Run("MessageDeleteExportMessage", func(t *testing.T) { testDeleteExportMessage(t, rctx, ss) }) + t.Run("MessageDeleteAfterExportMessage", func(t *testing.T) { testDeleteAfterExportMessage(t, rctx, ss) }) } -func testComplianceStore(t *testing.T, ss store.Store) { +func testComplianceStore(t *testing.T, rctx request.CTX, ss store.Store) { compliance1 := &model.Compliance{Desc: "Audit for federal subpoena case #22443", UserId: model.NewId(), Status: model.ComplianceStatusFailed, StartAt: model.GetMillis() - 1, EndAt: model.GetMillis() + 1, Type: model.ComplianceTypeAdhoc} _, err := ss.Compliance().Save(compliance1) require.NoError(t, err) @@ -97,7 +97,7 @@ func testComplianceStore(t *testing.T, ss store.Store) { require.Equal(t, compliance2.Status, rc2.Status) } -func testComplianceExport(t *testing.T, ss store.Store) { +func testComplianceExport(t *testing.T, rctx request.CTX, ss store.Store) { time.Sleep(100 * time.Millisecond) const ( limit = 30000 @@ -229,8 +229,8 @@ func testComplianceExport(t *testing.T, ss store.Store) { }) } -func testComplianceExportDirectMessages(t *testing.T, ss store.Store) { - defer cleanupStoreState(t, ss) +func testComplianceExportDirectMessages(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) time.Sleep(100 * time.Millisecond) const ( @@ -395,14 +395,12 @@ func testComplianceExportDirectMessages(t *testing.T, ss store.Store) { }) } -func testMessageExportPublicChannel(t *testing.T, ss store.Store) { - c := request.TestContext(t) - - defer cleanupStoreState(t, ss) +func testMessageExportPublicChannel(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) // get the starting number of message export entries startTime := model.GetMillis() - messages, _, err := ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) + messages, _, err := ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) require.NoError(t, err) assert.Equal(t, 0, len(messages)) @@ -472,7 +470,7 @@ func testMessageExportPublicChannel(t *testing.T, ss store.Store) { // fetch the message exports for both posts that user1 sent messageExportMap := map[string]model.MessageExport{} - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) require.NoError(t, err) assert.Equal(t, 2, len(messages)) @@ -501,14 +499,12 @@ func testMessageExportPublicChannel(t *testing.T, ss store.Store) { assert.Equal(t, user1.Username, *messageExportMap[post2.Id].Username) } -func testMessageExportPrivateChannel(t *testing.T, ss store.Store) { - c := request.TestContext(t) - - defer cleanupStoreState(t, ss) +func testMessageExportPrivateChannel(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) // get the starting number of message export entries startTime := model.GetMillis() - messages, _, err := ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) + messages, _, err := ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) require.NoError(t, err) assert.Equal(t, 0, len(messages)) @@ -578,7 +574,7 @@ func testMessageExportPrivateChannel(t *testing.T, ss store.Store) { // fetch the message exports for both posts that user1 sent messageExportMap := map[string]model.MessageExport{} - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) require.NoError(t, err) assert.Equal(t, 2, len(messages)) @@ -609,14 +605,12 @@ func testMessageExportPrivateChannel(t *testing.T, ss store.Store) { assert.Equal(t, user1.Username, *messageExportMap[post2.Id].Username) } -func testMessageExportDirectMessageChannel(t *testing.T, ss store.Store) { - c := request.TestContext(t) - - defer cleanupStoreState(t, ss) +func testMessageExportDirectMessageChannel(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) // get the starting number of message export entries startTime := model.GetMillis() - messages, _, err := ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) + messages, _, err := ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) require.NoError(t, err) assert.Equal(t, 0, len(messages)) @@ -671,7 +665,7 @@ func testMessageExportDirectMessageChannel(t *testing.T, ss store.Store) { // fetch the message export for the post that user1 sent messageExportMap := map[string]model.MessageExport{} - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) require.NoError(t, err) assert.Equal(t, 1, len(messages)) @@ -692,14 +686,12 @@ func testMessageExportDirectMessageChannel(t *testing.T, ss store.Store) { assert.Equal(t, user1.Username, *messageExportMap[post.Id].Username) } -func testMessageExportGroupMessageChannel(t *testing.T, ss store.Store) { - c := request.TestContext(t) - - defer cleanupStoreState(t, ss) +func testMessageExportGroupMessageChannel(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) // get the starting number of message export entries startTime := model.GetMillis() - messages, _, err := ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) + messages, _, err := ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) require.NoError(t, err) assert.Equal(t, 0, len(messages)) @@ -771,7 +763,7 @@ func testMessageExportGroupMessageChannel(t *testing.T, ss store.Store) { // fetch the message export for the post that user1 sent messageExportMap := map[string]model.MessageExport{} - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 10}, 10) require.NoError(t, err) assert.Equal(t, 1, len(messages)) @@ -792,14 +784,12 @@ func testMessageExportGroupMessageChannel(t *testing.T, ss store.Store) { } // post,edit,export -func testEditExportMessage(t *testing.T, ss store.Store) { - c := request.TestContext(t) - - defer cleanupStoreState(t, ss) +func testEditExportMessage(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) // get the starting number of message export entries startTime := model.GetMillis() - messages, _, err := ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) + messages, _, err := ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 0, len(messages)) @@ -854,7 +844,7 @@ func testEditExportMessage(t *testing.T, ss store.Store) { require.NoError(t, err) // fetch the message exports from the start - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 2, len(messages)) @@ -887,13 +877,11 @@ func testEditExportMessage(t *testing.T, ss store.Store) { } // post, export, edit, export -func testEditAfterExportMessage(t *testing.T, ss store.Store) { - c := request.TestContext(t) - - defer cleanupStoreState(t, ss) +func testEditAfterExportMessage(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) // get the starting number of message export entries startTime := model.GetMillis() - messages, _, err := ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) + messages, _, err := ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 0, len(messages)) @@ -941,7 +929,7 @@ func testEditAfterExportMessage(t *testing.T, ss store.Store) { require.NoError(t, err) // fetch the message exports from the start - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 1, len(messages)) @@ -967,7 +955,7 @@ func testEditAfterExportMessage(t *testing.T, ss store.Store) { require.NoError(t, err) // fetch the message exports after edit - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: postEditTime - 1}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: postEditTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 2, len(messages)) @@ -1000,13 +988,11 @@ func testEditAfterExportMessage(t *testing.T, ss store.Store) { } // post, delete, export -func testDeleteExportMessage(t *testing.T, ss store.Store) { - c := request.TestContext(t) - - defer cleanupStoreState(t, ss) +func testDeleteExportMessage(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) // get the starting number of message export entries startTime := model.GetMillis() - messages, _, err := ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) + messages, _, err := ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 0, len(messages)) @@ -1059,7 +1045,7 @@ func testDeleteExportMessage(t *testing.T, ss store.Store) { require.NoError(t, err) // fetch the message exports from the start - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 1, len(messages)) @@ -1087,13 +1073,11 @@ func testDeleteExportMessage(t *testing.T, ss store.Store) { } // post,export,delete,export -func testDeleteAfterExportMessage(t *testing.T, ss store.Store) { - c := request.TestContext(t) - - defer cleanupStoreState(t, ss) +func testDeleteAfterExportMessage(t *testing.T, rctx request.CTX, ss store.Store) { + defer cleanupStoreState(t, rctx, ss) // get the starting number of message export entries startTime := model.GetMillis() - messages, _, err := ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) + messages, _, err := ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 0, len(messages)) @@ -1141,7 +1125,7 @@ func testDeleteAfterExportMessage(t *testing.T, ss store.Store) { require.NoError(t, err) // fetch the message exports from the start - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: startTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 1, len(messages)) @@ -1164,7 +1148,7 @@ func testDeleteAfterExportMessage(t *testing.T, ss store.Store) { require.NoError(t, err) // fetch the message exports after delete - messages, _, err = ss.Compliance().MessageExport(c, model.MessageExportCursor{LastPostUpdateAt: postDeleteTime - 1}, 10) + messages, _, err = ss.Compliance().MessageExport(rctx, model.MessageExportCursor{LastPostUpdateAt: postDeleteTime - 1}, 10) require.NoError(t, err) assert.Equal(t, 1, len(messages)) diff --git a/server/channels/store/storetest/desktop_tokens_store.go b/server/channels/store/storetest/desktop_tokens_store.go index 30a9ab1645..dd62657b75 100644 --- a/server/channels/store/storetest/desktop_tokens_store.go +++ b/server/channels/store/storetest/desktop_tokens_store.go @@ -6,20 +6,21 @@ package storetest import ( "testing" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) -func TestDesktopTokensStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("GetUserId", func(t *testing.T) { testGetUserId(t, ss) }) - t.Run("Insert", func(t *testing.T) { testInsert(t, ss) }) - t.Run("Delete", func(t *testing.T) { testDeleteToken(t, ss) }) - t.Run("DeleteByUserId", func(t *testing.T) { testDeleteByUserId(t, ss) }) - t.Run("DeleteOlderThan", func(t *testing.T) { testDeleteOlderThan(t, ss) }) +func TestDesktopTokensStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("GetUserId", func(t *testing.T) { testGetUserId(t, rctx, ss) }) + t.Run("Insert", func(t *testing.T) { testInsert(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testDeleteToken(t, rctx, ss) }) + t.Run("DeleteByUserId", func(t *testing.T) { testDeleteByUserId(t, rctx, ss) }) + t.Run("DeleteOlderThan", func(t *testing.T) { testDeleteOlderThan(t, rctx, ss) }) } -func testGetUserId(t *testing.T, ss store.Store) { +func testGetUserId(t *testing.T, rctx request.CTX, ss store.Store) { err := ss.DesktopTokens().Insert("token_with_id", 1000, "user_id") require.NoError(t, err) @@ -37,7 +38,7 @@ func testGetUserId(t *testing.T, ss store.Store) { }) } -func testInsert(t *testing.T, ss store.Store) { +func testInsert(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("insert", func(t *testing.T) { err := ss.DesktopTokens().Insert("token", 1000, "user_id") assert.NoError(t, err) @@ -53,7 +54,7 @@ func testInsert(t *testing.T, ss store.Store) { }) } -func testDeleteToken(t *testing.T, ss store.Store) { +func testDeleteToken(t *testing.T, rctx request.CTX, ss store.Store) { err := ss.DesktopTokens().Insert("deleteable_token", 3000, "user_id") require.NoError(t, err) @@ -70,7 +71,7 @@ func testDeleteToken(t *testing.T, ss store.Store) { }) } -func testDeleteByUserId(t *testing.T, ss store.Store) { +func testDeleteByUserId(t *testing.T, rctx request.CTX, ss store.Store) { err := ss.DesktopTokens().Insert("deleteable_token_2", 4000, "deleteable_user_id") require.NoError(t, err) @@ -87,7 +88,7 @@ func testDeleteByUserId(t *testing.T, ss store.Store) { }) } -func testDeleteOlderThan(t *testing.T, ss store.Store) { +func testDeleteOlderThan(t *testing.T, rctx request.CTX, ss store.Store) { err := ss.DesktopTokens().Insert("deleteable_token_old", 1000, "deleteable_user_id") require.NoError(t, err) err = ss.DesktopTokens().Insert("deleteable_token_new", 5000, "deleteable_user_id") diff --git a/server/channels/store/storetest/draft_store.go b/server/channels/store/storetest/draft_store.go index 7ccc387107..3b38d9a34c 100644 --- a/server/channels/store/storetest/draft_store.go +++ b/server/channels/store/storetest/draft_store.go @@ -11,20 +11,21 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestDraftStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("SaveDraft", func(t *testing.T) { testSaveDraft(t, ss) }) - t.Run("UpdateDraft", func(t *testing.T) { testUpdateDraft(t, ss) }) - t.Run("DeleteDraft", func(t *testing.T) { testDeleteDraft(t, ss) }) - t.Run("GetDraft", func(t *testing.T) { testGetDraft(t, ss) }) - t.Run("GetDraftsForUser", func(t *testing.T) { testGetDraftsForUser(t, ss) }) - t.Run("GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration", func(t *testing.T) { testGetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(t, ss) }) - t.Run("DeleteEmptyDraftsByCreateAtAndUserId", func(t *testing.T) { testDeleteEmptyDraftsByCreateAtAndUserId(t, ss) }) +func TestDraftStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("SaveDraft", func(t *testing.T) { testSaveDraft(t, rctx, ss) }) + t.Run("UpdateDraft", func(t *testing.T) { testUpdateDraft(t, rctx, ss) }) + t.Run("DeleteDraft", func(t *testing.T) { testDeleteDraft(t, rctx, ss) }) + t.Run("GetDraft", func(t *testing.T) { testGetDraft(t, rctx, ss) }) + t.Run("GetDraftsForUser", func(t *testing.T) { testGetDraftsForUser(t, rctx, ss) }) + t.Run("GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration", func(t *testing.T) { testGetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(t, rctx, ss) }) + t.Run("DeleteEmptyDraftsByCreateAtAndUserId", func(t *testing.T) { testDeleteEmptyDraftsByCreateAtAndUserId(t, rctx, ss) }) } -func testSaveDraft(t *testing.T, ss store.Store) { +func testSaveDraft(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{ Id: model.NewId(), } @@ -89,7 +90,7 @@ func testSaveDraft(t *testing.T, ss store.Store) { }) } -func testUpdateDraft(t *testing.T, ss store.Store) { +func testUpdateDraft(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{ Id: model.NewId(), } @@ -146,7 +147,7 @@ func testUpdateDraft(t *testing.T, ss store.Store) { }) } -func testDeleteDraft(t *testing.T, ss store.Store) { +func testDeleteDraft(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{ Id: model.NewId(), } @@ -215,7 +216,7 @@ func testDeleteDraft(t *testing.T, ss store.Store) { }) } -func testGetDraft(t *testing.T, ss store.Store) { +func testGetDraft(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{ Id: model.NewId(), } @@ -280,7 +281,7 @@ func testGetDraft(t *testing.T, ss store.Store) { }) } -func testGetDraftsForUser(t *testing.T, ss store.Store) { +func testGetDraftsForUser(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{ Id: model.NewId(), } @@ -337,7 +338,7 @@ func testGetDraftsForUser(t *testing.T, ss store.Store) { }) } -func clearDrafts(t *testing.T, ss store.Store) { +func clearDrafts(t *testing.T, rctx request.CTX, ss store.Store) { t.Helper() _, err := ss.GetInternalMasterDB().Exec("DELETE FROM Drafts") @@ -370,7 +371,7 @@ func makeDrafts(t *testing.T, ss store.Store, count int, message string) { } } -func countDraftPages(t *testing.T, ss store.Store) int { +func countDraftPages(t *testing.T, rctx request.CTX, ss store.Store) int { t.Helper() pages := 0 @@ -400,43 +401,43 @@ func countDraftPages(t *testing.T, ss store.Store) int { return pages } -func testGetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(t *testing.T, ss store.Store) { +func testGetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("no drafts", func(t *testing.T) { - clearDrafts(t, ss) + clearDrafts(t, rctx, ss) createAt, userId, err := ss.Draft().GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(0, "") require.NoError(t, err) assert.EqualValues(t, 0, createAt) assert.Equal(t, "", userId) - assert.Equal(t, 0, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 0, countDraftPages(t, rctx, ss), "incorrect number of pages") }) t.Run("single page", func(t *testing.T) { - clearDrafts(t, ss) + clearDrafts(t, rctx, ss) makeDrafts(t, ss, 100, model.NewRandomString(16)) - assert.Equal(t, 1, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 1, countDraftPages(t, rctx, ss), "incorrect number of pages") }) t.Run("multiple pages", func(t *testing.T) { - clearDrafts(t, ss) + clearDrafts(t, rctx, ss) makeDrafts(t, ss, 300, model.NewRandomString(16)) - assert.Equal(t, 3, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 3, countDraftPages(t, rctx, ss), "incorrect number of pages") }) } -func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { +func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("nil parameters", func(t *testing.T) { - clearDrafts(t, ss) + clearDrafts(t, rctx, ss) err := ss.Draft().DeleteEmptyDraftsByCreateAtAndUserId(0, "") require.NoError(t, err) }) t.Run("delete single page, all empty", func(t *testing.T) { - clearDrafts(t, ss) + clearDrafts(t, rctx, ss) makeDrafts(t, ss, 100, "") createAt, userId := int64(0), "" @@ -446,7 +447,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { require.NoError(t, err) createAt, userId = nextCreateAt, nextUserId - assert.Equal(t, 0, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 0, countDraftPages(t, rctx, ss), "incorrect number of pages") nextCreateAt, nextUserId, err = ss.Draft().GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(createAt, userId) require.NoError(t, err) @@ -455,7 +456,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { }) t.Run("delete multiple pages, all empty", func(t *testing.T) { - clearDrafts(t, ss) + clearDrafts(t, rctx, ss) makeDrafts(t, ss, 300, "") createAt, userId := int64(0), "" @@ -465,7 +466,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { require.NoError(t, err) createAt, userId = nextCreateAt, nextUserId - assert.Equal(t, 2, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 2, countDraftPages(t, rctx, ss), "incorrect number of pages") nextCreateAt, nextUserId, err = ss.Draft().GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(createAt, userId) require.NoError(t, err) @@ -473,7 +474,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { require.NoError(t, err) createAt, userId = nextCreateAt, nextUserId - assert.Equal(t, 1, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 1, countDraftPages(t, rctx, ss), "incorrect number of pages") nextCreateAt, nextUserId, err = ss.Draft().GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(createAt, userId) require.NoError(t, err) @@ -481,7 +482,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { require.NoError(t, err) createAt, userId = nextCreateAt, nextUserId - assert.Equal(t, 0, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 0, countDraftPages(t, rctx, ss), "incorrect number of pages") nextCreateAt, nextUserId, err = ss.Draft().GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(createAt, userId) require.NoError(t, err) @@ -490,7 +491,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { }) t.Run("delete multiple pages, some empty", func(t *testing.T) { - clearDrafts(t, ss) + clearDrafts(t, rctx, ss) makeDrafts(t, ss, 50, "") makeDrafts(t, ss, 50, "message") makeDrafts(t, ss, 50, "") @@ -503,7 +504,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { makeDrafts(t, ss, 50, "message") // Verify initially 5 pages - assert.Equal(t, 5, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 5, countDraftPages(t, rctx, ss), "incorrect number of pages") createAt, userId := int64(0), "" @@ -514,7 +515,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { createAt, userId = nextCreateAt, nextUserId // Only deleted 50, so still 5 pages - assert.Equal(t, 5, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 5, countDraftPages(t, rctx, ss), "incorrect number of pages") nextCreateAt, nextUserId, err = ss.Draft().GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(createAt, userId) require.NoError(t, err) @@ -523,7 +524,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { createAt, userId = nextCreateAt, nextUserId // Now deleted 100, so down to 4 pages - assert.Equal(t, 4, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 4, countDraftPages(t, rctx, ss), "incorrect number of pages") nextCreateAt, nextUserId, err = ss.Draft().GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(createAt, userId) require.NoError(t, err) @@ -532,7 +533,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { createAt, userId = nextCreateAt, nextUserId // Only deleted 150 now, so still 4 pages - assert.Equal(t, 4, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 4, countDraftPages(t, rctx, ss), "incorrect number of pages") nextCreateAt, nextUserId, err = ss.Draft().GetLastCreateAtAndUserIdValuesForEmptyDraftsMigration(createAt, userId) require.NoError(t, err) @@ -541,7 +542,7 @@ func testDeleteEmptyDraftsByCreateAtAndUserId(t *testing.T, ss store.Store) { createAt, userId = nextCreateAt, nextUserId // Now deleted all 200 empty messages, so down to 3 pages - assert.Equal(t, 3, countDraftPages(t, ss), "incorrect number of pages") + assert.Equal(t, 3, countDraftPages(t, rctx, ss), "incorrect number of pages") // Keep going through all pages to verify nothing else gets deleted. diff --git a/server/channels/store/storetest/emoji_store.go b/server/channels/store/storetest/emoji_store.go index 8e9446000f..dac6575856 100644 --- a/server/channels/store/storetest/emoji_store.go +++ b/server/channels/store/storetest/emoji_store.go @@ -15,16 +15,16 @@ import ( "github.com/stretchr/testify/require" ) -func TestEmojiStore(t *testing.T, ss store.Store) { - t.Run("EmojiSaveDelete", func(t *testing.T) { testEmojiSaveDelete(t, ss) }) - t.Run("EmojiGet", func(t *testing.T) { testEmojiGet(t, ss) }) - t.Run("EmojiGetByName", func(t *testing.T) { testEmojiGetByName(t, ss) }) - t.Run("EmojiGetMultipleByName", func(t *testing.T) { testEmojiGetMultipleByName(t, ss) }) - t.Run("EmojiGetList", func(t *testing.T) { testEmojiGetList(t, ss) }) - t.Run("EmojiSearch", func(t *testing.T) { testEmojiSearch(t, ss) }) +func TestEmojiStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("EmojiSaveDelete", func(t *testing.T) { testEmojiSaveDelete(t, rctx, ss) }) + t.Run("EmojiGet", func(t *testing.T) { testEmojiGet(t, rctx, ss) }) + t.Run("EmojiGetByName", func(t *testing.T) { testEmojiGetByName(t, rctx, ss) }) + t.Run("EmojiGetMultipleByName", func(t *testing.T) { testEmojiGetMultipleByName(t, rctx, ss) }) + t.Run("EmojiGetList", func(t *testing.T) { testEmojiGetList(t, rctx, ss) }) + t.Run("EmojiSearch", func(t *testing.T) { testEmojiSearch(t, rctx, ss) }) } -func testEmojiSaveDelete(t *testing.T, ss store.Store) { +func testEmojiSaveDelete(t *testing.T, rctx request.CTX, ss store.Store) { emoji1 := &model.Emoji{ CreatorId: model.NewId(), Name: model.NewId(), @@ -52,9 +52,7 @@ func testEmojiSaveDelete(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testEmojiGet(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testEmojiGet(t *testing.T, rctx request.CTX, ss store.Store) { emojis := []model.Emoji{ { CreatorId: model.NewId(), @@ -83,19 +81,17 @@ func testEmojiGet(t *testing.T, ss store.Store) { }() for _, emoji := range emojis { - _, err := ss.Emoji().Get(c, emoji.Id, false) + _, err := ss.Emoji().Get(rctx, emoji.Id, false) require.NoErrorf(t, err, "failed to get emoji with id %v", emoji.Id) } for _, emoji := range emojis { - _, err := ss.Emoji().Get(c, emoji.Id, true) + _, err := ss.Emoji().Get(rctx, emoji.Id, true) require.NoErrorf(t, err, "failed to get emoji with id %v", emoji.Id) } } -func testEmojiGetByName(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testEmojiGetByName(t *testing.T, rctx request.CTX, ss store.Store) { emojis := []model.Emoji{ { CreatorId: model.NewId(), @@ -124,14 +120,12 @@ func testEmojiGetByName(t *testing.T, ss store.Store) { }() for _, emoji := range emojis { - _, err := ss.Emoji().GetByName(c, emoji.Name, true) + _, err := ss.Emoji().GetByName(rctx, emoji.Name, true) require.NoErrorf(t, err, "failed to get emoji with name %v", emoji.Name) } } -func testEmojiGetMultipleByName(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testEmojiGetMultipleByName(t *testing.T, rctx request.CTX, ss store.Store) { emojis := []model.Emoji{ { CreatorId: model.NewId(), @@ -160,32 +154,32 @@ func testEmojiGetMultipleByName(t *testing.T, ss store.Store) { }() t.Run("one emoji", func(t *testing.T) { - received, err := ss.Emoji().GetMultipleByName(c, []string{emojis[0].Name}) + received, err := ss.Emoji().GetMultipleByName(rctx, []string{emojis[0].Name}) require.NoError(t, err, "could not get emoji") require.Len(t, received, 1, "got incorrect emoji") require.Equal(t, *received[0], emojis[0], "got incorrect emoji") }) t.Run("multiple emojis", func(t *testing.T) { - received, err := ss.Emoji().GetMultipleByName(c, []string{emojis[0].Name, emojis[1].Name, emojis[2].Name}) + received, err := ss.Emoji().GetMultipleByName(rctx, []string{emojis[0].Name, emojis[1].Name, emojis[2].Name}) require.NoError(t, err, "could not get emojis") require.Len(t, received, 3, "got incorrect emojis") }) t.Run("one nonexistent emoji", func(t *testing.T) { - received, err := ss.Emoji().GetMultipleByName(c, []string{"ab"}) + received, err := ss.Emoji().GetMultipleByName(rctx, []string{"ab"}) require.NoError(t, err, "could not get emoji", err) require.Empty(t, received, "got incorrect emoji") }) t.Run("multiple emojis with nonexistent names", func(t *testing.T) { - received, err := ss.Emoji().GetMultipleByName(c, []string{emojis[0].Name, emojis[1].Name, emojis[2].Name, "abcd", "1234"}) + received, err := ss.Emoji().GetMultipleByName(rctx, []string{emojis[0].Name, emojis[1].Name, emojis[2].Name, "abcd", "1234"}) require.NoError(t, err, "could not get emojis") require.Len(t, received, 3, "got incorrect emojis") }) } -func testEmojiGetList(t *testing.T, ss store.Store) { +func testEmojiGetList(t *testing.T, rctx request.CTX, ss store.Store) { emojis := []model.Emoji{ { CreatorId: model.NewId(), @@ -243,7 +237,7 @@ func testEmojiGetList(t *testing.T, ss store.Store) { assert.Equal(t, emojis[2].Name, remojis[1].Name) } -func testEmojiSearch(t *testing.T, ss store.Store) { +func testEmojiSearch(t *testing.T, rctx request.CTX, ss store.Store) { emojis := []model.Emoji{ { CreatorId: model.NewId(), diff --git a/server/channels/store/storetest/file_info_store.go b/server/channels/store/storetest/file_info_store.go index 5dc6f67bc1..0ce099e868 100644 --- a/server/channels/store/storetest/file_info_store.go +++ b/server/channels/store/storetest/file_info_store.go @@ -10,6 +10,7 @@ import ( "time" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/utils" @@ -17,28 +18,28 @@ import ( "github.com/stretchr/testify/require" ) -func TestFileInfoStore(t *testing.T, ss store.Store, s SqlStore) { +func TestFileInfoStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { t.Cleanup(func() { s.GetMasterX().Exec("TRUNCATE FileInfo") }) - t.Run("FileInfoSaveGet", func(t *testing.T) { testFileInfoSaveGet(t, ss) }) - t.Run("FileInfoSaveGetByPath", func(t *testing.T) { testFileInfoSaveGetByPath(t, ss) }) - t.Run("FileInfoGetForPost", func(t *testing.T) { testFileInfoGetForPost(t, ss) }) - t.Run("FileInfoGetForUser", func(t *testing.T) { testFileInfoGetForUser(t, ss) }) - t.Run("FileInfoGetWithOptions", func(t *testing.T) { testFileInfoGetWithOptions(t, ss) }) - t.Run("FileInfoAttachToPost", func(t *testing.T) { testFileInfoAttachToPost(t, ss) }) - t.Run("FileInfoDeleteForPost", func(t *testing.T) { testFileInfoDeleteForPost(t, ss) }) - t.Run("FileInfoPermanentDelete", func(t *testing.T) { testFileInfoPermanentDelete(t, ss) }) - t.Run("FileInfoPermanentDeleteBatch", func(t *testing.T) { testFileInfoPermanentDeleteBatch(t, ss) }) - t.Run("FileInfoPermanentDeleteByUser", func(t *testing.T) { testFileInfoPermanentDeleteByUser(t, ss) }) - t.Run("FileInfoUpdateMinipreview", func(t *testing.T) { testFileInfoUpdateMinipreview(t, ss) }) - t.Run("GetFilesBatchForIndexing", func(t *testing.T) { testFileInfoStoreGetFilesBatchForIndexing(t, ss) }) - t.Run("CountAll", func(t *testing.T) { testFileInfoStoreCountAll(t, ss) }) - t.Run("GetStorageUsage", func(t *testing.T) { testFileInfoGetStorageUsage(t, ss) }) - t.Run("GetUptoNSizeFileTime", func(t *testing.T) { testGetUptoNSizeFileTime(t, ss, s) }) + t.Run("FileInfoSaveGet", func(t *testing.T) { testFileInfoSaveGet(t, rctx, ss) }) + t.Run("FileInfoSaveGetByPath", func(t *testing.T) { testFileInfoSaveGetByPath(t, rctx, ss) }) + t.Run("FileInfoGetForPost", func(t *testing.T) { testFileInfoGetForPost(t, rctx, ss) }) + t.Run("FileInfoGetForUser", func(t *testing.T) { testFileInfoGetForUser(t, rctx, ss) }) + t.Run("FileInfoGetWithOptions", func(t *testing.T) { testFileInfoGetWithOptions(t, rctx, ss) }) + t.Run("FileInfoAttachToPost", func(t *testing.T) { testFileInfoAttachToPost(t, rctx, ss) }) + t.Run("FileInfoDeleteForPost", func(t *testing.T) { testFileInfoDeleteForPost(t, rctx, ss) }) + t.Run("FileInfoPermanentDelete", func(t *testing.T) { testFileInfoPermanentDelete(t, rctx, ss) }) + t.Run("FileInfoPermanentDeleteBatch", func(t *testing.T) { testFileInfoPermanentDeleteBatch(t, rctx, ss) }) + t.Run("FileInfoPermanentDeleteByUser", func(t *testing.T) { testFileInfoPermanentDeleteByUser(t, rctx, ss) }) + t.Run("FileInfoUpdateMinipreview", func(t *testing.T) { testFileInfoUpdateMinipreview(t, rctx, ss) }) + t.Run("GetFilesBatchForIndexing", func(t *testing.T) { testFileInfoStoreGetFilesBatchForIndexing(t, rctx, ss) }) + t.Run("CountAll", func(t *testing.T) { testFileInfoStoreCountAll(t, rctx, ss) }) + t.Run("GetStorageUsage", func(t *testing.T) { testFileInfoGetStorageUsage(t, rctx, ss) }) + t.Run("GetUptoNSizeFileTime", func(t *testing.T) { testGetUptoNSizeFileTime(t, rctx, ss, s) }) } -func testFileInfoSaveGet(t *testing.T, ss store.Store) { +func testFileInfoSaveGet(t *testing.T, rctx request.CTX, ss store.Store) { info := &model.FileInfo{ CreatorId: model.NewId(), Path: "file.txt", @@ -71,7 +72,7 @@ func testFileInfoSaveGet(t *testing.T, ss store.Store) { }() } -func testFileInfoSaveGetByPath(t *testing.T, ss store.Store) { +func testFileInfoSaveGetByPath(t *testing.T, rctx request.CTX, ss store.Store) { info := &model.FileInfo{ CreatorId: model.NewId(), Path: fmt.Sprintf("%v/file.txt", model.NewId()), @@ -103,7 +104,7 @@ func testFileInfoSaveGetByPath(t *testing.T, ss store.Store) { }() } -func testFileInfoGetForPost(t *testing.T, ss store.Store) { +func testFileInfoGetForPost(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() postId := model.NewId() channelId := model.NewId() @@ -225,7 +226,7 @@ func testFileInfoGetForPost(t *testing.T, ss store.Store) { } } -func testFileInfoGetForUser(t *testing.T, ss store.Store) { +func testFileInfoGetForUser(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() userId2 := model.NewId() postId := model.NewId() @@ -276,7 +277,7 @@ func testFileInfoGetForUser(t *testing.T, ss store.Store) { assert.Len(t, userPosts, 1) } -func testFileInfoGetWithOptions(t *testing.T, ss store.Store) { +func testFileInfoGetWithOptions(t *testing.T, rctx request.CTX, ss store.Store) { makePost := func(chId string, user string) *model.Post { post := model.Post{} post.ChannelId = chId @@ -422,7 +423,7 @@ func (a byFileInfoId) Len() int { return len(a) } func (a byFileInfoId) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a byFileInfoId) Less(i, j int) bool { return a[i].Id < a[j].Id } -func testFileInfoAttachToPost(t *testing.T, ss store.Store) { +func testFileInfoAttachToPost(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should attach files", func(t *testing.T) { userId := model.NewId() postId := model.NewId() @@ -520,7 +521,7 @@ func testFileInfoAttachToPost(t *testing.T, ss store.Store) { }) } -func testFileInfoDeleteForPost(t *testing.T, ss store.Store) { +func testFileInfoDeleteForPost(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() postId := model.NewId() channelId := model.NewId() @@ -570,7 +571,7 @@ func testFileInfoDeleteForPost(t *testing.T, ss store.Store) { assert.Empty(t, infos) } -func testFileInfoPermanentDelete(t *testing.T, ss store.Store) { +func testFileInfoPermanentDelete(t *testing.T, rctx request.CTX, ss store.Store) { info, err := ss.FileInfo().Save(&model.FileInfo{ PostId: model.NewId(), ChannelId: model.NewId(), @@ -583,7 +584,7 @@ func testFileInfoPermanentDelete(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testFileInfoPermanentDeleteBatch(t *testing.T, ss store.Store) { +func testFileInfoPermanentDeleteBatch(t *testing.T, rctx request.CTX, ss store.Store) { postId := model.NewId() channelId := model.NewId() @@ -626,7 +627,7 @@ func testFileInfoPermanentDeleteBatch(t *testing.T, ss store.Store) { assert.Len(t, postFiles, 1) } -func testFileInfoPermanentDeleteByUser(t *testing.T, ss store.Store) { +func testFileInfoPermanentDeleteByUser(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() postId := model.NewId() channelId := model.NewId() @@ -643,7 +644,7 @@ func testFileInfoPermanentDeleteByUser(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testFileInfoUpdateMinipreview(t *testing.T, ss store.Store) { +func testFileInfoUpdateMinipreview(t *testing.T, rctx request.CTX, ss store.Store) { info := &model.FileInfo{ CreatorId: model.NewId(), Path: "image.png", @@ -676,7 +677,7 @@ func testFileInfoUpdateMinipreview(t *testing.T, ss store.Store) { require.Equal(t, *tinfo.MiniPreview, miniPreview) } -func testFileInfoStoreGetFilesBatchForIndexing(t *testing.T, ss store.Store) { +func testFileInfoStoreGetFilesBatchForIndexing(t *testing.T, rctx request.CTX, ss store.Store) { c1 := &model.Channel{} c1.TeamId = model.NewId() c1.DisplayName = "Channel1" @@ -774,7 +775,7 @@ func testFileInfoStoreGetFilesBatchForIndexing(t *testing.T, ss store.Store) { require.Len(t, r, 0, "Expected 0 posts in results. Got %v", len(r)) } -func testFileInfoStoreCountAll(t *testing.T, ss store.Store) { +func testFileInfoStoreCountAll(t *testing.T, rctx request.CTX, ss store.Store) { _, err := ss.FileInfo().PermanentDeleteBatch(model.GetMillis(), 100000) require.NoError(t, err) f1, err := ss.FileInfo().Save(&model.FileInfo{ @@ -811,7 +812,7 @@ func testFileInfoStoreCountAll(t *testing.T, ss store.Store) { require.Equal(t, int64(2), count) } -func testFileInfoGetStorageUsage(t *testing.T, ss store.Store) { +func testFileInfoGetStorageUsage(t *testing.T, rctx request.CTX, ss store.Store) { _, err := ss.FileInfo().PermanentDeleteBatch(model.GetMillis(), 100000) require.NoError(t, err) @@ -857,7 +858,7 @@ func testFileInfoGetStorageUsage(t *testing.T, ss store.Store) { require.Equal(t, int64(30), usage) } -func testGetUptoNSizeFileTime(t *testing.T, ss store.Store, s SqlStore) { +func testGetUptoNSizeFileTime(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { t.Skip("MM-53905") _, err := ss.FileInfo().GetUptoNSizeFileTime(0) diff --git a/server/channels/store/storetest/group_store.go b/server/channels/store/storetest/group_store.go index 2e51beda2e..c30db4b662 100644 --- a/server/channels/store/storetest/group_store.go +++ b/server/channels/store/storetest/group_store.go @@ -16,87 +16,88 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" pUtils "github.com/mattermost/mattermost/server/public/utils" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestGroupStore(t *testing.T, ss store.Store) { - t.Run("Create", func(t *testing.T) { testGroupStoreCreate(t, ss) }) - t.Run("CreateWithUserIds", func(t *testing.T) { testGroupCreateWithUserIds(t, ss) }) +func TestGroupStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("Create", func(t *testing.T) { testGroupStoreCreate(t, rctx, ss) }) + t.Run("CreateWithUserIds", func(t *testing.T) { testGroupCreateWithUserIds(t, rctx, ss) }) - t.Run("Get", func(t *testing.T) { testGroupStoreGet(t, ss) }) - t.Run("GetByName", func(t *testing.T) { testGroupStoreGetByName(t, ss) }) - t.Run("GetByIDs", func(t *testing.T) { testGroupStoreGetByIDs(t, ss) }) - t.Run("GetByRemoteID", func(t *testing.T) { testGroupStoreGetByRemoteID(t, ss) }) - t.Run("GetAllBySource", func(t *testing.T) { testGroupStoreGetAllByType(t, ss) }) - t.Run("GetByUser", func(t *testing.T) { testGroupStoreGetByUser(t, ss) }) - t.Run("Update", func(t *testing.T) { testGroupStoreUpdate(t, ss) }) - t.Run("Delete", func(t *testing.T) { testGroupStoreDelete(t, ss) }) - t.Run("Restore", func(t *testing.T) { testGroupStoreRestore(t, ss) }) + t.Run("Get", func(t *testing.T) { testGroupStoreGet(t, rctx, ss) }) + t.Run("GetByName", func(t *testing.T) { testGroupStoreGetByName(t, rctx, ss) }) + t.Run("GetByIDs", func(t *testing.T) { testGroupStoreGetByIDs(t, rctx, ss) }) + t.Run("GetByRemoteID", func(t *testing.T) { testGroupStoreGetByRemoteID(t, rctx, ss) }) + t.Run("GetAllBySource", func(t *testing.T) { testGroupStoreGetAllByType(t, rctx, ss) }) + t.Run("GetByUser", func(t *testing.T) { testGroupStoreGetByUser(t, rctx, ss) }) + t.Run("Update", func(t *testing.T) { testGroupStoreUpdate(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testGroupStoreDelete(t, rctx, ss) }) + t.Run("Restore", func(t *testing.T) { testGroupStoreRestore(t, rctx, ss) }) - t.Run("GetMemberUsers", func(t *testing.T) { testGroupGetMemberUsers(t, ss) }) - t.Run("GetMemberUsersPage", func(t *testing.T) { testGroupGetMemberUsersPage(t, ss) }) - t.Run("GetMemberUsersSortedPage", func(t *testing.T) { testGroupGetMemberUsersSortedPage(t, ss) }) + t.Run("GetMemberUsers", func(t *testing.T) { testGroupGetMemberUsers(t, rctx, ss) }) + t.Run("GetMemberUsersPage", func(t *testing.T) { testGroupGetMemberUsersPage(t, rctx, ss) }) + t.Run("GetMemberUsersSortedPage", func(t *testing.T) { testGroupGetMemberUsersSortedPage(t, rctx, ss) }) - t.Run("GetMemberUsersInTeam", func(t *testing.T) { testGroupGetMemberUsersInTeam(t, ss) }) - t.Run("GetMemberUsersNotInChannel", func(t *testing.T) { testGroupGetMemberUsersNotInChannel(t, ss) }) + t.Run("GetMemberUsersInTeam", func(t *testing.T) { testGroupGetMemberUsersInTeam(t, rctx, ss) }) + t.Run("GetMemberUsersNotInChannel", func(t *testing.T) { testGroupGetMemberUsersNotInChannel(t, rctx, ss) }) - t.Run("UpsertMember", func(t *testing.T) { testUpsertMember(t, ss) }) - t.Run("UpsertMembers", func(t *testing.T) { testUpsertMembers(t, ss) }) - t.Run("DeleteMember", func(t *testing.T) { testGroupDeleteMember(t, ss) }) - t.Run("DeleteMembers", func(t *testing.T) { testGroupDeleteMembers(t, ss) }) - t.Run("PermanentDeleteMembersByUser", func(t *testing.T) { testGroupPermanentDeleteMembersByUser(t, ss) }) + t.Run("UpsertMember", func(t *testing.T) { testUpsertMember(t, rctx, ss) }) + t.Run("UpsertMembers", func(t *testing.T) { testUpsertMembers(t, rctx, ss) }) + t.Run("DeleteMember", func(t *testing.T) { testGroupDeleteMember(t, rctx, ss) }) + t.Run("DeleteMembers", func(t *testing.T) { testGroupDeleteMembers(t, rctx, ss) }) + t.Run("PermanentDeleteMembersByUser", func(t *testing.T) { testGroupPermanentDeleteMembersByUser(t, rctx, ss) }) - t.Run("CreateGroupSyncable", func(t *testing.T) { testCreateGroupSyncable(t, ss) }) - t.Run("GetGroupSyncable", func(t *testing.T) { testGetGroupSyncable(t, ss) }) - t.Run("GetAllGroupSyncablesByGroupId", func(t *testing.T) { testGetAllGroupSyncablesByGroup(t, ss) }) - t.Run("UpdateGroupSyncable", func(t *testing.T) { testUpdateGroupSyncable(t, ss) }) - t.Run("DeleteGroupSyncable", func(t *testing.T) { testDeleteGroupSyncable(t, ss) }) + t.Run("CreateGroupSyncable", func(t *testing.T) { testCreateGroupSyncable(t, rctx, ss) }) + t.Run("GetGroupSyncable", func(t *testing.T) { testGetGroupSyncable(t, rctx, ss) }) + t.Run("GetAllGroupSyncablesByGroupId", func(t *testing.T) { testGetAllGroupSyncablesByGroup(t, rctx, ss) }) + t.Run("UpdateGroupSyncable", func(t *testing.T) { testUpdateGroupSyncable(t, rctx, ss) }) + t.Run("DeleteGroupSyncable", func(t *testing.T) { testDeleteGroupSyncable(t, rctx, ss) }) - t.Run("TeamMembersToAdd", func(t *testing.T) { testTeamMembersToAdd(t, ss) }) - t.Run("TeamMembersToAdd_SingleTeam", func(t *testing.T) { testTeamMembersToAddSingleTeam(t, ss) }) + t.Run("TeamMembersToAdd", func(t *testing.T) { testTeamMembersToAdd(t, rctx, ss) }) + t.Run("TeamMembersToAdd_SingleTeam", func(t *testing.T) { testTeamMembersToAddSingleTeam(t, rctx, ss) }) - t.Run("ChannelMembersToAdd", func(t *testing.T) { testChannelMembersToAdd(t, ss) }) - t.Run("ChannelMembersToAdd_SingleChannel", func(t *testing.T) { testChannelMembersToAddSingleChannel(t, ss) }) + t.Run("ChannelMembersToAdd", func(t *testing.T) { testChannelMembersToAdd(t, rctx, ss) }) + t.Run("ChannelMembersToAdd_SingleChannel", func(t *testing.T) { testChannelMembersToAddSingleChannel(t, rctx, ss) }) - t.Run("TeamMembersToRemove", func(t *testing.T) { testTeamMembersToRemove(t, ss) }) - t.Run("TeamMembersToRemove_SingleTeam", func(t *testing.T) { testTeamMembersToRemoveSingleTeam(t, ss) }) + t.Run("TeamMembersToRemove", func(t *testing.T) { testTeamMembersToRemove(t, rctx, ss) }) + t.Run("TeamMembersToRemove_SingleTeam", func(t *testing.T) { testTeamMembersToRemoveSingleTeam(t, rctx, ss) }) - t.Run("ChannelMembersToRemove", func(t *testing.T) { testChannelMembersToRemove(t, ss) }) - t.Run("ChannelMembersToRemove_SingleChannel", func(t *testing.T) { testChannelMembersToRemoveSingleChannel(t, ss) }) + t.Run("ChannelMembersToRemove", func(t *testing.T) { testChannelMembersToRemove(t, rctx, ss) }) + t.Run("ChannelMembersToRemove_SingleChannel", func(t *testing.T) { testChannelMembersToRemoveSingleChannel(t, rctx, ss) }) - t.Run("GetGroupsByChannel", func(t *testing.T) { testGetGroupsByChannel(t, ss) }) - t.Run("GetGroupsAssociatedToChannelsByTeam", func(t *testing.T) { testGetGroupsAssociatedToChannelsByTeam(t, ss) }) - t.Run("GetGroupsByTeam", func(t *testing.T) { testGetGroupsByTeam(t, ss) }) + t.Run("GetGroupsByChannel", func(t *testing.T) { testGetGroupsByChannel(t, rctx, ss) }) + t.Run("GetGroupsAssociatedToChannelsByTeam", func(t *testing.T) { testGetGroupsAssociatedToChannelsByTeam(t, rctx, ss) }) + t.Run("GetGroupsByTeam", func(t *testing.T) { testGetGroupsByTeam(t, rctx, ss) }) - t.Run("GetGroups", func(t *testing.T) { testGetGroups(t, ss) }) + t.Run("GetGroups", func(t *testing.T) { testGetGroups(t, rctx, ss) }) - t.Run("TeamMembersMinusGroupMembers", func(t *testing.T) { testTeamMembersMinusGroupMembers(t, ss) }) - t.Run("ChannelMembersMinusGroupMembers", func(t *testing.T) { testChannelMembersMinusGroupMembers(t, ss) }) + t.Run("TeamMembersMinusGroupMembers", func(t *testing.T) { testTeamMembersMinusGroupMembers(t, rctx, ss) }) + t.Run("ChannelMembersMinusGroupMembers", func(t *testing.T) { testChannelMembersMinusGroupMembers(t, rctx, ss) }) - t.Run("GetMemberCount", func(t *testing.T) { groupTestGetMemberCount(t, ss) }) + t.Run("GetMemberCount", func(t *testing.T) { groupTestGetMemberCount(t, rctx, ss) }) - t.Run("AdminRoleGroupsForSyncableMember_Channel", func(t *testing.T) { groupTestAdminRoleGroupsForSyncableMemberChannel(t, ss) }) - t.Run("AdminRoleGroupsForSyncableMember_Team", func(t *testing.T) { groupTestAdminRoleGroupsForSyncableMemberTeam(t, ss) }) - t.Run("PermittedSyncableAdmins_Team", func(t *testing.T) { groupTestPermittedSyncableAdminsTeam(t, ss) }) - t.Run("PermittedSyncableAdmins_Channel", func(t *testing.T) { groupTestPermittedSyncableAdminsChannel(t, ss) }) - t.Run("UpdateMembersRole_Team", func(t *testing.T) { groupTestpUpdateMembersRoleTeam(t, ss) }) - t.Run("UpdateMembersRole_Channel", func(t *testing.T) { groupTestpUpdateMembersRoleChannel(t, ss) }) + t.Run("AdminRoleGroupsForSyncableMember_Channel", func(t *testing.T) { groupTestAdminRoleGroupsForSyncableMemberChannel(t, rctx, ss) }) + t.Run("AdminRoleGroupsForSyncableMember_Team", func(t *testing.T) { groupTestAdminRoleGroupsForSyncableMemberTeam(t, rctx, ss) }) + t.Run("PermittedSyncableAdmins_Team", func(t *testing.T) { groupTestPermittedSyncableAdminsTeam(t, rctx, ss) }) + t.Run("PermittedSyncableAdmins_Channel", func(t *testing.T) { groupTestPermittedSyncableAdminsChannel(t, rctx, ss) }) + t.Run("UpdateMembersRole_Team", func(t *testing.T) { groupTestpUpdateMembersRoleTeam(t, rctx, ss) }) + t.Run("UpdateMembersRole_Channel", func(t *testing.T) { groupTestpUpdateMembersRoleChannel(t, rctx, ss) }) - t.Run("GroupCount", func(t *testing.T) { groupTestGroupCount(t, ss) }) - t.Run("GroupTeamCount", func(t *testing.T) { groupTestGroupTeamCount(t, ss) }) - t.Run("GroupChannelCount", func(t *testing.T) { groupTestGroupChannelCount(t, ss) }) - t.Run("GroupMemberCount", func(t *testing.T) { groupTestGroupMemberCount(t, ss) }) - t.Run("DistinctGroupMemberCount", func(t *testing.T) { groupTestDistinctGroupMemberCount(t, ss) }) - t.Run("GroupCountWithAllowReference", func(t *testing.T) { groupTestGroupCountWithAllowReference(t, ss) }) + t.Run("GroupCount", func(t *testing.T) { groupTestGroupCount(t, rctx, ss) }) + t.Run("GroupTeamCount", func(t *testing.T) { groupTestGroupTeamCount(t, rctx, ss) }) + t.Run("GroupChannelCount", func(t *testing.T) { groupTestGroupChannelCount(t, rctx, ss) }) + t.Run("GroupMemberCount", func(t *testing.T) { groupTestGroupMemberCount(t, rctx, ss) }) + t.Run("DistinctGroupMemberCount", func(t *testing.T) { groupTestDistinctGroupMemberCount(t, rctx, ss) }) + t.Run("GroupCountWithAllowReference", func(t *testing.T) { groupTestGroupCountWithAllowReference(t, rctx, ss) }) - t.Run("GetMember", func(t *testing.T) { groupTestGetMember(t, ss) }) - t.Run("GetNonMemberUsersPage", func(t *testing.T) { groupTestGetNonMemberUsersPage(t, ss) }) + t.Run("GetMember", func(t *testing.T) { groupTestGetMember(t, rctx, ss) }) + t.Run("GetNonMemberUsersPage", func(t *testing.T) { groupTestGetNonMemberUsersPage(t, rctx, ss) }) - t.Run("DistinctGroupMemberCountForSource", func(t *testing.T) { groupTestDistinctGroupMemberCountForSource(t, ss) }) + t.Run("DistinctGroupMemberCountForSource", func(t *testing.T) { groupTestDistinctGroupMemberCountForSource(t, rctx, ss) }) } -func testGroupStoreCreate(t *testing.T, ss store.Store) { +func testGroupStoreCreate(t *testing.T, rctx request.CTX, ss store.Store) { // Save a new group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -198,7 +199,7 @@ func testGroupStoreCreate(t *testing.T, ss store.Store) { require.Equal(t, g7.IsValidForCreate().Id, "model.group.name.invalid_chars.app_error") } -func testGroupCreateWithUserIds(t *testing.T, ss store.Store) { +func testGroupCreateWithUserIds(t *testing.T, rctx request.CTX, ss store.Store) { // Create user 1 u1 := &model.User{ Email: MakeEmail(), @@ -363,7 +364,7 @@ func testGroupCreateWithUserIds(t *testing.T, ss store.Store) { require.Equal(t, store.NewErrNotFound("User", "1234uid"), err) } -func testGroupStoreGet(t *testing.T, ss store.Store) { +func testGroupStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { // Create a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -395,7 +396,7 @@ func testGroupStoreGet(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testGroupStoreGetByName(t *testing.T, ss store.Store) { +func testGroupStoreGetByName(t *testing.T, rctx request.CTX, ss store.Store) { // Create a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -431,7 +432,7 @@ func testGroupStoreGetByName(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testGroupStoreGetByIDs(t *testing.T, ss store.Store) { +func testGroupStoreGetByIDs(t *testing.T, rctx request.CTX, ss store.Store) { var group1 *model.Group var group2 *model.Group @@ -464,7 +465,7 @@ func testGroupStoreGetByIDs(t *testing.T, ss store.Store) { require.True(t, groups[0].Id != groups[1].Id) } -func testGroupStoreGetByRemoteID(t *testing.T, ss store.Store) { +func testGroupStoreGetByRemoteID(t *testing.T, rctx request.CTX, ss store.Store) { // Create a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -496,7 +497,7 @@ func testGroupStoreGetByRemoteID(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testGroupStoreGetAllByType(t *testing.T, ss store.Store) { +func testGroupStoreGetAllByType(t *testing.T, rctx request.CTX, ss store.Store) { numGroups := 10 groups := []*model.Group{} @@ -531,7 +532,7 @@ func testGroupStoreGetAllByType(t *testing.T, ss store.Store) { } } -func testGroupStoreGetByUser(t *testing.T, ss store.Store) { +func testGroupStoreGetByUser(t *testing.T, rctx request.CTX, ss store.Store) { // Save a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -601,7 +602,7 @@ func testGroupStoreGetByUser(t *testing.T, ss store.Store) { assert.Equal(t, 0, len(groups)) } -func testGroupStoreUpdate(t *testing.T, ss store.Store) { +func testGroupStoreUpdate(t *testing.T, rctx request.CTX, ss store.Store) { // Save a new group g1 := &model.Group{ Name: model.NewString("g1-test"), @@ -694,7 +695,7 @@ func testGroupStoreUpdate(t *testing.T, ss store.Store) { require.Zero(t, d4.DeleteAt) } -func testGroupStoreDelete(t *testing.T, ss store.Store) { +func testGroupStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { // Save a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -743,7 +744,7 @@ func testGroupStoreDelete(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testGroupStoreRestore(t *testing.T, ss store.Store) { +func testGroupStoreRestore(t *testing.T, rctx request.CTX, ss store.Store) { // Save a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -796,7 +797,7 @@ func testGroupStoreRestore(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testGroupGetMemberUsers(t *testing.T, ss store.Store) { +func testGroupGetMemberUsers(t *testing.T, rctx request.CTX, ss store.Store) { // Save a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -848,7 +849,7 @@ func testGroupGetMemberUsers(t *testing.T, ss store.Store) { require.Equal(t, 1, len(groupMembers)) } -func testGroupGetMemberUsersPage(t *testing.T, ss store.Store) { +func testGroupGetMemberUsersPage(t *testing.T, rctx request.CTX, ss store.Store) { // Save a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -922,7 +923,7 @@ func testGroupGetMemberUsersPage(t *testing.T, ss store.Store) { require.Equal(t, 2, len(groupMembers)) } -func testGroupGetMemberUsersSortedPage(t *testing.T, ss store.Store) { +func testGroupGetMemberUsersSortedPage(t *testing.T, rctx request.CTX, ss store.Store) { // Save a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -1003,7 +1004,7 @@ func testGroupGetMemberUsersSortedPage(t *testing.T, ss store.Store) { require.ElementsMatch(t, []*model.User{user2}, groupMembers) } -func testGroupGetMemberUsersInTeam(t *testing.T, ss store.Store) { +func testGroupGetMemberUsersInTeam(t *testing.T, rctx request.CTX, ss store.Store) { // Save a team team := &model.Team{ DisplayName: "Name", @@ -1089,7 +1090,7 @@ func testGroupGetMemberUsersInTeam(t *testing.T, ss store.Store) { require.Equal(t, 3, len(groupMembers)) } -func testGroupGetMemberUsersNotInChannel(t *testing.T, ss store.Store) { +func testGroupGetMemberUsersNotInChannel(t *testing.T, rctx request.CTX, ss store.Store) { // Save a team team := &model.Team{ DisplayName: "Name", @@ -1228,7 +1229,7 @@ func testGroupGetMemberUsersNotInChannel(t *testing.T, ss store.Store) { require.Equal(t, 0, len(groupMembers)) } -func testUpsertMember(t *testing.T, ss store.Store) { +func testUpsertMember(t *testing.T, rctx request.CTX, ss store.Store) { // Create group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -1289,7 +1290,7 @@ func testUpsertMember(t *testing.T, ss store.Store) { require.Equal(t, beforeRestoreCount+1, afterRestoreCount) } -func testUpsertMembers(t *testing.T, ss store.Store) { +func testUpsertMembers(t *testing.T, rctx request.CTX, ss store.Store) { // Create group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -1355,7 +1356,7 @@ func testUpsertMembers(t *testing.T, ss store.Store) { require.Equal(t, beforeRestoreCount+1, afterRestoreCount) } -func testGroupDeleteMember(t *testing.T, ss store.Store) { +func testGroupDeleteMember(t *testing.T, rctx request.CTX, ss store.Store) { // Create group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -1400,7 +1401,7 @@ func testGroupDeleteMember(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testGroupDeleteMembers(t *testing.T, ss store.Store) { +func testGroupDeleteMembers(t *testing.T, rctx request.CTX, ss store.Store) { // Create user u1 := &model.User{ Email: MakeEmail(), @@ -1443,7 +1444,7 @@ func testGroupDeleteMembers(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr)) } -func testGroupPermanentDeleteMembersByUser(t *testing.T, ss store.Store) { +func testGroupPermanentDeleteMembersByUser(t *testing.T, rctx request.CTX, ss store.Store) { var g *model.Group var groups []*model.Group numberOfGroups := 5 @@ -1479,7 +1480,7 @@ func testGroupPermanentDeleteMembersByUser(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testCreateGroupSyncable(t *testing.T, ss store.Store) { +func testCreateGroupSyncable(t *testing.T, rctx request.CTX, ss store.Store) { // Invalid GroupID _, err := ss.Group().CreateGroupSyncable(model.NewGroupTeam("x", model.NewId(), false)) var appErr *model.AppError @@ -1521,7 +1522,7 @@ func testCreateGroupSyncable(t *testing.T, ss store.Store) { require.Zero(t, d1.DeleteAt) } -func testGetGroupSyncable(t *testing.T, ss store.Store) { +func testGetGroupSyncable(t *testing.T, rctx request.CTX, ss store.Store) { // Create a group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -1563,7 +1564,7 @@ func testGetGroupSyncable(t *testing.T, ss store.Store) { require.Zero(t, gt1.DeleteAt) } -func testGetAllGroupSyncablesByGroup(t *testing.T, ss store.Store) { +func testGetAllGroupSyncablesByGroup(t *testing.T, rctx request.CTX, ss store.Store) { numGroupSyncables := 10 // Create group @@ -1622,7 +1623,7 @@ func testGetAllGroupSyncablesByGroup(t *testing.T, ss store.Store) { } } -func testUpdateGroupSyncable(t *testing.T, ss store.Store) { +func testUpdateGroupSyncable(t *testing.T, rctx request.CTX, ss store.Store) { // Create Group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -1690,7 +1691,7 @@ func testUpdateGroupSyncable(t *testing.T, ss store.Store) { require.Zero(t, d4.DeleteAt) } -func testDeleteGroupSyncable(t *testing.T, ss store.Store) { +func testDeleteGroupSyncable(t *testing.T, rctx request.CTX, ss store.Store) { // Create Group g1 := &model.Group{ Name: model.NewString(model.NewId()), @@ -1746,7 +1747,7 @@ func testDeleteGroupSyncable(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &invErr)) } -func testTeamMembersToAdd(t *testing.T, ss store.Store) { +func testTeamMembersToAdd(t *testing.T, rctx request.CTX, ss store.Store) { // Create Group group, err := ss.Group().Create(&model.Group{ Name: model.NewString(model.NewId()), @@ -1925,7 +1926,7 @@ func testTeamMembersToAdd(t *testing.T, ss store.Store) { require.Len(t, teamMembers, 1) } -func testTeamMembersToAddSingleTeam(t *testing.T, ss store.Store) { +func testTeamMembersToAddSingleTeam(t *testing.T, rctx request.CTX, ss store.Store) { group1, err := ss.Group().Create(&model.Group{ Name: model.NewString(model.NewId()), DisplayName: "TeamMembersToAdd Test Group", @@ -2015,7 +2016,7 @@ func testTeamMembersToAddSingleTeam(t *testing.T, ss store.Store) { require.Len(t, teamMembers, 1) } -func testChannelMembersToAdd(t *testing.T, ss store.Store) { +func testChannelMembersToAdd(t *testing.T, rctx request.CTX, ss store.Store) { // Create Group group, err := ss.Group().Create(&model.Group{ Name: model.NewString(model.NewId()), @@ -2192,7 +2193,7 @@ func testChannelMembersToAdd(t *testing.T, ss store.Store) { require.Len(t, channelMembers, 1) } -func testChannelMembersToAddSingleChannel(t *testing.T, ss store.Store) { +func testChannelMembersToAddSingleChannel(t *testing.T, rctx request.CTX, ss store.Store) { group1, err := ss.Group().Create(&model.Group{ Name: model.NewString(model.NewId()), DisplayName: "TeamMembersToAdd Test Group", @@ -2272,8 +2273,8 @@ func testChannelMembersToAddSingleChannel(t *testing.T, ss store.Store) { require.Len(t, channelMembers, 1) } -func testTeamMembersToRemove(t *testing.T, ss store.Store) { - data := pendingMemberRemovalsDataSetup(t, ss) +func testTeamMembersToRemove(t *testing.T, rctx request.CTX, ss store.Store) { + data := pendingMemberRemovalsDataSetup(t, rctx, ss) // one result when both users are in the group (for user C) teamMembers, err := ss.Group().TeamMembersToRemove(nil) @@ -2347,7 +2348,7 @@ func testTeamMembersToRemove(t *testing.T, ss store.Store) { require.NoError(t, nErr) } -func testTeamMembersToRemoveSingleTeam(t *testing.T, ss store.Store) { +func testTeamMembersToRemoveSingleTeam(t *testing.T, rctx request.CTX, ss store.Store) { user1 := &model.User{ Email: MakeEmail(), Username: model.NewId(), @@ -2424,8 +2425,8 @@ func testTeamMembersToRemoveSingleTeam(t *testing.T, ss store.Store) { require.Len(t, teamMembers, 1) } -func testChannelMembersToRemove(t *testing.T, ss store.Store) { - data := pendingMemberRemovalsDataSetup(t, ss) +func testChannelMembersToRemove(t *testing.T, rctx request.CTX, ss store.Store) { + data := pendingMemberRemovalsDataSetup(t, rctx, ss) // one result when both users are in the group (for user C) channelMembers, err := ss.Group().ChannelMembersToRemove(nil) @@ -2499,7 +2500,7 @@ func testChannelMembersToRemove(t *testing.T, ss store.Store) { require.NoError(t, nErr) } -func testChannelMembersToRemoveSingleChannel(t *testing.T, ss store.Store) { +func testChannelMembersToRemoveSingleChannel(t *testing.T, rctx request.CTX, ss store.Store) { user1 := &model.User{ Email: MakeEmail(), Username: model.NewId(), @@ -2579,7 +2580,7 @@ type removalsData struct { Group *model.Group } -func pendingMemberRemovalsDataSetup(t *testing.T, ss store.Store) *removalsData { +func pendingMemberRemovalsDataSetup(t *testing.T, rctx request.CTX, ss store.Store) *removalsData { // create group group, err := ss.Group().Create(&model.Group{ Name: model.NewString(model.NewId()), @@ -2732,7 +2733,7 @@ func pendingMemberRemovalsDataSetup(t *testing.T, ss store.Store) *removalsData } } -func testGetGroupsByChannel(t *testing.T, ss store.Store) { +func testGetGroupsByChannel(t *testing.T, rctx request.CTX, ss store.Store) { // Create Channel1 channel1 := &model.Channel{ TeamId: model.NewId(), @@ -2966,7 +2967,7 @@ func testGetGroupsByChannel(t *testing.T, ss store.Store) { } } -func testGetGroupsAssociatedToChannelsByTeam(t *testing.T, ss store.Store) { +func testGetGroupsAssociatedToChannelsByTeam(t *testing.T, rctx request.CTX, ss store.Store) { // Create Team1 team1 := &model.Team{ DisplayName: "Team1", @@ -3209,7 +3210,7 @@ func testGetGroupsAssociatedToChannelsByTeam(t *testing.T, ss store.Store) { } } -func testGetGroupsByTeam(t *testing.T, ss store.Store) { +func testGetGroupsByTeam(t *testing.T, rctx request.CTX, ss store.Store) { // Create Team1 team1 := &model.Team{ DisplayName: "Team1", @@ -3455,7 +3456,7 @@ func testGetGroupsByTeam(t *testing.T, ss store.Store) { } } -func testGetGroups(t *testing.T, ss store.Store) { +func testGetGroups(t *testing.T, rctx request.CTX, ss store.Store) { // Create Team1 team1 := &model.Team{ DisplayName: "Team1", @@ -3993,7 +3994,7 @@ func testGetGroups(t *testing.T, ss store.Store) { } } -func testTeamMembersMinusGroupMembers(t *testing.T, ss store.Store) { +func testTeamMembersMinusGroupMembers(t *testing.T, rctx request.CTX, ss store.Store) { const numberOfGroups = 3 const numberOfUsers = 4 @@ -4149,7 +4150,7 @@ func testTeamMembersMinusGroupMembers(t *testing.T, ss store.Store) { } } -func testChannelMembersMinusGroupMembers(t *testing.T, ss store.Store) { +func testChannelMembersMinusGroupMembers(t *testing.T, rctx request.CTX, ss store.Store) { const numberOfGroups = 3 const numberOfUsers = 4 @@ -4312,7 +4313,7 @@ func testChannelMembersMinusGroupMembers(t *testing.T, ss store.Store) { } } -func groupTestGetMemberCount(t *testing.T, ss store.Store) { +func groupTestGetMemberCount(t *testing.T, rctx request.CTX, ss store.Store) { group := &model.Group{ Name: model.NewString(model.NewId()), DisplayName: model.NewId(), @@ -4350,7 +4351,7 @@ func groupTestGetMemberCount(t *testing.T, ss store.Store) { require.Equal(t, int64(1), count) } -func groupTestAdminRoleGroupsForSyncableMemberChannel(t *testing.T, ss store.Store) { +func groupTestAdminRoleGroupsForSyncableMemberChannel(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{ Email: MakeEmail(), Username: model.NewId(), @@ -4438,7 +4439,7 @@ func groupTestAdminRoleGroupsForSyncableMemberChannel(t *testing.T, ss store.Sto require.ElementsMatch(t, []string{}, actualGroupIDs) } -func groupTestAdminRoleGroupsForSyncableMemberTeam(t *testing.T, ss store.Store) { +func groupTestAdminRoleGroupsForSyncableMemberTeam(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{ Email: MakeEmail(), Username: model.NewId(), @@ -4525,7 +4526,7 @@ func groupTestAdminRoleGroupsForSyncableMemberTeam(t *testing.T, ss store.Store) require.ElementsMatch(t, []string{}, actualGroupIDs) } -func groupTestPermittedSyncableAdminsTeam(t *testing.T, ss store.Store) { +func groupTestPermittedSyncableAdminsTeam(t *testing.T, rctx request.CTX, ss store.Store) { user1 := &model.User{ Email: MakeEmail(), Username: model.NewId(), @@ -4631,7 +4632,7 @@ func groupTestPermittedSyncableAdminsTeam(t *testing.T, ss store.Store) { require.ElementsMatch(t, []string{user3.Id}, actualUserIDs) } -func groupTestPermittedSyncableAdminsChannel(t *testing.T, ss store.Store) { +func groupTestPermittedSyncableAdminsChannel(t *testing.T, rctx request.CTX, ss store.Store) { user1 := &model.User{ Email: MakeEmail(), Username: model.NewId(), @@ -4738,7 +4739,7 @@ func groupTestPermittedSyncableAdminsChannel(t *testing.T, ss store.Store) { require.ElementsMatch(t, []string{user3.Id}, actualUserIDs) } -func groupTestpUpdateMembersRoleTeam(t *testing.T, ss store.Store) { +func groupTestpUpdateMembersRoleTeam(t *testing.T, rctx request.CTX, ss store.Store) { team := &model.Team{ DisplayName: "Name", Description: "Some description", @@ -4842,7 +4843,7 @@ func groupTestpUpdateMembersRoleTeam(t *testing.T, ss store.Store) { } } -func groupTestpUpdateMembersRoleChannel(t *testing.T, ss store.Store) { +func groupTestpUpdateMembersRoleChannel(t *testing.T, rctx request.CTX, ss store.Store) { channel := &model.Channel{ TeamId: model.NewId(), DisplayName: "A Name", @@ -4952,7 +4953,7 @@ func groupTestpUpdateMembersRoleChannel(t *testing.T, ss store.Store) { } } -func groupTestGroupCount(t *testing.T, ss store.Store) { +func groupTestGroupCount(t *testing.T, rctx request.CTX, ss store.Store) { group1, err := ss.Group().Create(&model.Group{ Name: model.NewString(model.NewId()), DisplayName: model.NewId(), @@ -4980,7 +4981,7 @@ func groupTestGroupCount(t *testing.T, ss store.Store) { require.GreaterOrEqual(t, countAfter, count+1) } -func groupTestGroupTeamCount(t *testing.T, ss store.Store) { +func groupTestGroupTeamCount(t *testing.T, rctx request.CTX, ss store.Store) { team, err := ss.Team().Save(&model.Team{ DisplayName: model.NewId(), Description: model.NewId(), @@ -5028,7 +5029,7 @@ func groupTestGroupTeamCount(t *testing.T, ss store.Store) { require.GreaterOrEqual(t, countAfter, count+1) } -func groupTestGroupChannelCount(t *testing.T, ss store.Store) { +func groupTestGroupChannelCount(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := ss.Channel().Save(&model.Channel{ TeamId: model.NewId(), DisplayName: model.NewId(), @@ -5073,7 +5074,7 @@ func groupTestGroupChannelCount(t *testing.T, ss store.Store) { require.GreaterOrEqual(t, countAfter, count+1) } -func groupTestGroupMemberCount(t *testing.T, ss store.Store) { +func groupTestGroupMemberCount(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{ Email: fmt.Sprintf("test.%s@localhost", model.NewId()), Username: model.NewId(), @@ -5114,7 +5115,7 @@ func groupTestGroupMemberCount(t *testing.T, ss store.Store) { require.GreaterOrEqual(t, countAfter, count+1) } -func groupTestDistinctGroupMemberCount(t *testing.T, ss store.Store) { +func groupTestDistinctGroupMemberCount(t *testing.T, rctx request.CTX, ss store.Store) { group1, err := ss.Group().Create(&model.Group{ Name: model.NewString(model.NewId()), DisplayName: model.NewId(), @@ -5172,7 +5173,7 @@ func groupTestDistinctGroupMemberCount(t *testing.T, ss store.Store) { require.GreaterOrEqual(t, countAfter2, countAfter1) } -func groupTestGroupCountWithAllowReference(t *testing.T, ss store.Store) { +func groupTestGroupCountWithAllowReference(t *testing.T, rctx request.CTX, ss store.Store) { initialCount, err := ss.Group().GroupCountWithAllowReference() require.NoError(t, err) @@ -5204,7 +5205,7 @@ func groupTestGroupCountWithAllowReference(t *testing.T, ss store.Store) { require.Greater(t, countAfter, count) } -func groupTestGetMember(t *testing.T, ss store.Store) { +func groupTestGetMember(t *testing.T, rctx request.CTX, ss store.Store) { g1 := &model.Group{ Name: model.NewString(model.NewId()), DisplayName: model.NewId(), @@ -5241,7 +5242,7 @@ func groupTestGetMember(t *testing.T, ss store.Store) { require.Nil(t, member) } -func groupTestGetNonMemberUsersPage(t *testing.T, ss store.Store) { +func groupTestGetNonMemberUsersPage(t *testing.T, rctx request.CTX, ss store.Store) { g1 := &model.Group{ Name: model.NewString(model.NewId()), DisplayName: model.NewId(), @@ -5283,7 +5284,7 @@ func groupTestGetNonMemberUsersPage(t *testing.T, ss store.Store) { require.Nil(t, users) } -func groupTestDistinctGroupMemberCountForSource(t *testing.T, ss store.Store) { +func groupTestDistinctGroupMemberCountForSource(t *testing.T, rctx request.CTX, ss store.Store) { // get the before counts customGroupCountBefore, err := ss.Group().DistinctGroupMemberCountForSource(model.GroupSourceCustom) require.NoError(t, err) diff --git a/server/channels/store/storetest/job_store.go b/server/channels/store/storetest/job_store.go index 52b8571da5..6f9988bb61 100644 --- a/server/channels/store/storetest/job_store.go +++ b/server/channels/store/storetest/job_store.go @@ -11,33 +11,30 @@ import ( "github.com/lib/pq" "github.com/mattermost/mattermost/server/public/model" - "github.com/mattermost/mattermost/server/public/shared/mlog" "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) -func TestJobStore(t *testing.T, ss store.Store) { - t.Run("JobSaveGet", func(t *testing.T) { testJobSaveGet(t, ss) }) - t.Run("JobSaveOnce", func(t *testing.T) { testJobSaveOnce(t, ss) }) - t.Run("JobGetAllByType", func(t *testing.T) { testJobGetAllByType(t, ss) }) - t.Run("JobGetAllByTypeAndStatus", func(t *testing.T) { testJobGetAllByTypeAndStatus(t, ss) }) - t.Run("JobGetAllByTypePage", func(t *testing.T) { testJobGetAllByTypePage(t, ss) }) - t.Run("JobGetAllByTypesPage", func(t *testing.T) { testJobGetAllByTypesPage(t, ss) }) - t.Run("JobGetAllByStatus", func(t *testing.T) { testJobGetAllByStatus(t, ss) }) - t.Run("GetNewestJobByStatusAndType", func(t *testing.T) { testJobStoreGetNewestJobByStatusAndType(t, ss) }) - t.Run("GetNewestJobByStatusesAndType", func(t *testing.T) { testJobStoreGetNewestJobByStatusesAndType(t, ss) }) - t.Run("GetCountByStatusAndType", func(t *testing.T) { testJobStoreGetCountByStatusAndType(t, ss) }) - t.Run("JobUpdateOptimistically", func(t *testing.T) { testJobUpdateOptimistically(t, ss) }) - t.Run("JobUpdateStatusUpdateStatusOptimistically", func(t *testing.T) { testJobUpdateStatusUpdateStatusOptimistically(t, ss) }) - t.Run("JobDelete", func(t *testing.T) { testJobDelete(t, ss) }) - t.Run("JobCleanup", func(t *testing.T) { testJobCleanup(t, ss) }) +func TestJobStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("JobSaveGet", func(t *testing.T) { testJobSaveGet(t, rctx, ss) }) + t.Run("JobSaveOnce", func(t *testing.T) { testJobSaveOnce(t, rctx, ss) }) + t.Run("JobGetAllByType", func(t *testing.T) { testJobGetAllByType(t, rctx, ss) }) + t.Run("JobGetAllByTypeAndStatus", func(t *testing.T) { testJobGetAllByTypeAndStatus(t, rctx, ss) }) + t.Run("JobGetAllByTypePage", func(t *testing.T) { testJobGetAllByTypePage(t, rctx, ss) }) + t.Run("JobGetAllByTypesPage", func(t *testing.T) { testJobGetAllByTypesPage(t, rctx, ss) }) + t.Run("JobGetAllByStatus", func(t *testing.T) { testJobGetAllByStatus(t, rctx, ss) }) + t.Run("GetNewestJobByStatusAndType", func(t *testing.T) { testJobStoreGetNewestJobByStatusAndType(t, rctx, ss) }) + t.Run("GetNewestJobByStatusesAndType", func(t *testing.T) { testJobStoreGetNewestJobByStatusesAndType(t, rctx, ss) }) + t.Run("GetCountByStatusAndType", func(t *testing.T) { testJobStoreGetCountByStatusAndType(t, rctx, ss) }) + t.Run("JobUpdateOptimistically", func(t *testing.T) { testJobUpdateOptimistically(t, rctx, ss) }) + t.Run("JobUpdateStatusUpdateStatusOptimistically", func(t *testing.T) { testJobUpdateStatusUpdateStatusOptimistically(t, rctx, ss) }) + t.Run("JobDelete", func(t *testing.T) { testJobDelete(t, rctx, ss) }) + t.Run("JobCleanup", func(t *testing.T) { testJobCleanup(t, rctx, ss) }) } -func testJobSaveGet(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - +func testJobSaveGet(t *testing.T, rctx request.CTX, ss store.Store) { job := &model.Job{ Id: model.NewId(), Type: model.NewId(), @@ -54,13 +51,13 @@ func testJobSaveGet(t *testing.T, ss store.Store) { defer ss.Job().Delete(job.Id) - received, err := ss.Job().Get(ctx, job.Id) + received, err := ss.Job().Get(rctx, job.Id) require.NoError(t, err) require.Equal(t, job.Id, received.Id, "received incorrect job after save") require.Equal(t, "12345", received.Data["Total"]) } -func testJobSaveOnce(t *testing.T, ss store.Store) { +func testJobSaveOnce(t *testing.T, rctx request.CTX, ss store.Store) { var wg sync.WaitGroup ids := make([]string, 2) @@ -105,9 +102,7 @@ func testJobSaveOnce(t *testing.T, ss store.Store) { } } -func testJobGetAllByType(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - +func testJobGetAllByType(t *testing.T, rctx request.CTX, ss store.Store) { jobType := model.NewId() jobs := []*model.Job{ @@ -131,15 +126,13 @@ func testJobGetAllByType(t *testing.T, ss store.Store) { defer ss.Job().Delete(job.Id) } - received, err := ss.Job().GetAllByType(ctx, jobType) + received, err := ss.Job().GetAllByType(rctx, jobType) require.NoError(t, err) require.Len(t, received, 2) require.ElementsMatch(t, []string{jobs[0].Id, jobs[1].Id}, []string{received[0].Id, received[1].Id}) } -func testJobGetAllByTypeAndStatus(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - +func testJobGetAllByTypeAndStatus(t *testing.T, rctx request.CTX, ss store.Store) { jobType := model.NewId() jobs := []*model.Job{ @@ -161,15 +154,13 @@ func testJobGetAllByTypeAndStatus(t *testing.T, ss store.Store) { defer ss.Job().Delete(job.Id) } - received, err := ss.Job().GetAllByTypeAndStatus(ctx, jobType, model.JobStatusPending) + received, err := ss.Job().GetAllByTypeAndStatus(rctx, jobType, model.JobStatusPending) require.NoError(t, err) require.Len(t, received, 2) require.ElementsMatch(t, []string{jobs[0].Id, jobs[1].Id}, []string{received[0].Id, received[1].Id}) } -func testJobGetAllByTypePage(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - +func testJobGetAllByTypePage(t *testing.T, rctx request.CTX, ss store.Store) { jobType := model.NewId() jobs := []*model.Job{ @@ -201,21 +192,19 @@ func testJobGetAllByTypePage(t *testing.T, ss store.Store) { defer ss.Job().Delete(job.Id) } - received, err := ss.Job().GetAllByTypePage(ctx, jobType, 0, 2) + received, err := ss.Job().GetAllByTypePage(rctx, jobType, 0, 2) require.NoError(t, err) require.Len(t, received, 2) require.Equal(t, received[0].Id, jobs[2].Id, "should've received newest job first") require.Equal(t, received[1].Id, jobs[0].Id, "should've received second newest job second") - received, err = ss.Job().GetAllByTypePage(ctx, jobType, 2, 2) + received, err = ss.Job().GetAllByTypePage(rctx, jobType, 2, 2) require.NoError(t, err) require.Len(t, received, 1) require.Equal(t, received[0].Id, jobs[1].Id, "should've received oldest job last") } -func testJobGetAllByTypesPage(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - +func testJobGetAllByTypesPage(t *testing.T, rctx request.CTX, ss store.Store) { jobType := model.NewId() jobType2 := model.NewId() @@ -250,7 +239,7 @@ func testJobGetAllByTypesPage(t *testing.T, ss store.Store) { // test return all jobTypes := []string{jobType, jobType2} - received, err := ss.Job().GetAllByTypesPage(ctx, jobTypes, 0, 4) + received, err := ss.Job().GetAllByTypesPage(rctx, jobTypes, 0, 4) require.NoError(t, err) require.Len(t, received, 3) require.Equal(t, received[0].Id, jobs[2].Id, "should've received newest job first") @@ -258,21 +247,19 @@ func testJobGetAllByTypesPage(t *testing.T, ss store.Store) { // test paging jobTypes = []string{jobType, jobType2} - received, err = ss.Job().GetAllByTypesPage(ctx, jobTypes, 0, 2) + received, err = ss.Job().GetAllByTypesPage(rctx, jobTypes, 0, 2) require.NoError(t, err) require.Len(t, received, 2) require.Equal(t, received[0].Id, jobs[2].Id, "should've received newest job first") require.Equal(t, received[1].Id, jobs[0].Id, "should've received second newest job second") - received, err = ss.Job().GetAllByTypesPage(ctx, jobTypes, 2, 2) + received, err = ss.Job().GetAllByTypesPage(rctx, jobTypes, 2, 2) require.NoError(t, err) require.Len(t, received, 1) require.Equal(t, received[0].Id, jobs[1].Id, "should've received oldest job last") } -func testJobGetAllByStatus(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - +func testJobGetAllByStatus(t *testing.T, rctx request.CTX, ss store.Store) { jobType := model.NewId() status := model.NewId() @@ -312,7 +299,7 @@ func testJobGetAllByStatus(t *testing.T, ss store.Store) { defer ss.Job().Delete(job.Id) } - received, err := ss.Job().GetAllByStatus(ctx, status) + received, err := ss.Job().GetAllByStatus(rctx, status) require.NoError(t, err) require.Len(t, received, 3) require.Equal(t, received[0].Id, jobs[1].Id) @@ -321,7 +308,7 @@ func testJobGetAllByStatus(t *testing.T, ss store.Store) { require.Equal(t, "data", received[1].Data["test"], "should've received job data field back as saved") } -func testJobStoreGetNewestJobByStatusAndType(t *testing.T, ss store.Store) { +func testJobStoreGetNewestJobByStatusAndType(t *testing.T, rctx request.CTX, ss store.Store) { jobType1 := model.NewId() jobType2 := model.NewId() status1 := model.NewId() @@ -371,7 +358,7 @@ func testJobStoreGetNewestJobByStatusAndType(t *testing.T, ss store.Store) { assert.Nil(t, received) } -func testJobStoreGetNewestJobByStatusesAndType(t *testing.T, ss store.Store) { +func testJobStoreGetNewestJobByStatusesAndType(t *testing.T, rctx request.CTX, ss store.Store) { jobType1 := model.NewId() jobType2 := model.NewId() status1 := model.NewId() @@ -435,7 +422,7 @@ func testJobStoreGetNewestJobByStatusesAndType(t *testing.T, ss store.Store) { assert.Nil(t, received) } -func testJobStoreGetCountByStatusAndType(t *testing.T, ss store.Store) { +func testJobStoreGetCountByStatusAndType(t *testing.T, rctx request.CTX, ss store.Store) { jobType1 := model.NewId() jobType2 := model.NewId() status1 := model.NewId() @@ -491,9 +478,7 @@ func testJobStoreGetCountByStatusAndType(t *testing.T, ss store.Store) { assert.EqualValues(t, 1, count) } -func testJobUpdateOptimistically(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - +func testJobUpdateOptimistically(t *testing.T, rctx request.CTX, ss store.Store) { job := &model.Job{ Id: model.NewId(), Type: model.JobTypeDataRetention, @@ -521,7 +506,7 @@ func testJobUpdateOptimistically(t *testing.T, ss store.Store) { require.NoError(t, err) require.True(t, updated) - updatedJob, err := ss.Job().Get(ctx, job.Id) + updatedJob, err := ss.Job().Get(rctx, job.Id) require.NoError(t, err) require.Equal(t, updatedJob.Type, job.Type) @@ -532,8 +517,7 @@ func testJobUpdateOptimistically(t *testing.T, ss store.Store) { require.Equal(t, updatedJob.Data["Foo"], job.Data["Foo"]) } -func testJobUpdateStatusUpdateStatusOptimistically(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) +func testJobUpdateStatusUpdateStatusOptimistically(t *testing.T, rctx request.CTX, ss store.Store) { job := &model.Job{ Id: model.NewId(), Type: model.JobTypeDataRetention, @@ -563,7 +547,7 @@ func testJobUpdateStatusUpdateStatusOptimistically(t *testing.T, ss store.Store) require.NoError(t, err) require.False(t, updated) - received, err = ss.Job().Get(ctx, job.Id) + received, err = ss.Job().Get(rctx, job.Id) require.NoError(t, err) require.Equal(t, model.JobStatusPending, received.Status) @@ -576,7 +560,7 @@ func testJobUpdateStatusUpdateStatusOptimistically(t *testing.T, ss store.Store) require.True(t, updated, "should have succeeded") var startAtSet int64 - received, err = ss.Job().Get(ctx, job.Id) + received, err = ss.Job().Get(rctx, job.Id) require.NoError(t, err) require.Equal(t, model.JobStatusInProgress, received.Status) require.NotEqual(t, 0, received.StartAt) @@ -590,14 +574,14 @@ func testJobUpdateStatusUpdateStatusOptimistically(t *testing.T, ss store.Store) require.NoError(t, err) require.True(t, updated, "should have succeeded") - received, err = ss.Job().Get(ctx, job.Id) + received, err = ss.Job().Get(rctx, job.Id) require.NoError(t, err) require.Equal(t, model.JobStatusSuccess, received.Status) require.Equal(t, startAtSet, received.StartAt) require.Greater(t, received.LastActivityAt, lastUpdateAt) } -func testJobDelete(t *testing.T, ss store.Store) { +func testJobDelete(t *testing.T, rctx request.CTX, ss store.Store) { job, err := ss.Job().Save(&model.Job{Id: model.NewId()}) require.NoError(t, err) @@ -605,9 +589,7 @@ func testJobDelete(t *testing.T, ss store.Store) { assert.NoError(t, err) } -func testJobCleanup(t *testing.T, ss store.Store) { - ctx := request.EmptyContext(mlog.CreateConsoleTestLogger(t)) - +func testJobCleanup(t *testing.T, rctx request.CTX, ss store.Store) { now := model.GetMillis() ids := make([]string, 0, 10) for i := 0; i < 10; i++ { @@ -621,7 +603,7 @@ func testJobCleanup(t *testing.T, ss store.Store) { defer ss.Job().Delete(job.Id) } - jobs, err := ss.Job().GetAllByStatus(ctx, model.JobStatusPending) + jobs, err := ss.Job().GetAllByStatus(rctx, model.JobStatusPending) require.NoError(t, err) assert.Len(t, jobs, 10) @@ -629,7 +611,7 @@ func testJobCleanup(t *testing.T, ss store.Store) { require.NoError(t, err) // Should not clean up pending jobs - jobs, err = ss.Job().GetAllByStatus(ctx, model.JobStatusPending) + jobs, err = ss.Job().GetAllByStatus(rctx, model.JobStatusPending) require.NoError(t, err) assert.Len(t, jobs, 10) @@ -642,7 +624,7 @@ func testJobCleanup(t *testing.T, ss store.Store) { require.NoError(t, err) // Should clean up now - jobs, err = ss.Job().GetAllByStatus(ctx, model.JobStatusSuccess) + jobs, err = ss.Job().GetAllByStatus(rctx, model.JobStatusSuccess) require.NoError(t, err) assert.Len(t, jobs, 0) } diff --git a/server/channels/store/storetest/license_store.go b/server/channels/store/storetest/license_store.go index d991e4a2a5..40a0c14fb4 100644 --- a/server/channels/store/storetest/license_store.go +++ b/server/channels/store/storetest/license_store.go @@ -13,12 +13,12 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestLicenseStore(t *testing.T, ss store.Store) { - t.Run("Save", func(t *testing.T) { testLicenseStoreSave(t, ss) }) - t.Run("Get", func(t *testing.T) { testLicenseStoreGet(t, ss) }) +func TestLicenseStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("Save", func(t *testing.T) { testLicenseStoreSave(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testLicenseStoreGet(t, rctx, ss) }) } -func testLicenseStoreSave(t *testing.T, ss store.Store) { +func testLicenseStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { l1 := model.LicenseRecord{} l1.Id = model.NewId() l1.Bytes = "junk" @@ -35,9 +35,7 @@ func testLicenseStoreSave(t *testing.T, ss store.Store) { require.Error(t, err, "should fail on invalid license") } -func testLicenseStoreGet(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testLicenseStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { l1 := model.LicenseRecord{} l1.Id = model.NewId() l1.Bytes = "junk" @@ -45,11 +43,11 @@ func testLicenseStoreGet(t *testing.T, ss store.Store) { err := ss.License().Save(&l1) require.NoError(t, err) - record, err := ss.License().Get(c, l1.Id) + record, err := ss.License().Get(rctx, l1.Id) require.NoError(t, err, "couldn't get license") require.Equal(t, record.Bytes, l1.Bytes, "license bytes didn't match") - _, err = ss.License().Get(c, "missing") + _, err = ss.License().Get(rctx, "missing") require.Error(t, err, "should fail on get license") } diff --git a/server/channels/store/storetest/link_metadata_store.go b/server/channels/store/storetest/link_metadata_store.go index 8bcf76a741..f32c3a2027 100644 --- a/server/channels/store/storetest/link_metadata_store.go +++ b/server/channels/store/storetest/link_metadata_store.go @@ -14,6 +14,7 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) @@ -25,13 +26,13 @@ func getNextLinkMetadataTimestamp() int64 { return linkMetadataTimestamp } -func TestLinkMetadataStore(t *testing.T, ss store.Store) { - t.Run("Save", func(t *testing.T) { testLinkMetadataStoreSave(t, ss) }) - t.Run("Get", func(t *testing.T) { testLinkMetadataStoreGet(t, ss) }) - t.Run("Types", func(t *testing.T) { testLinkMetadataStoreTypes(t, ss) }) +func TestLinkMetadataStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("Save", func(t *testing.T) { testLinkMetadataStoreSave(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testLinkMetadataStoreGet(t, rctx, ss) }) + t.Run("Types", func(t *testing.T) { testLinkMetadataStoreTypes(t, rctx, ss) }) } -func testLinkMetadataStoreSave(t *testing.T, ss store.Store) { +func testLinkMetadataStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should save item", func(t *testing.T) { metadata := &model.LinkMetadata{ URL: "http://example.com", @@ -122,7 +123,7 @@ func testLinkMetadataStoreSave(t *testing.T, ss store.Store) { }) } -func testLinkMetadataStoreGet(t *testing.T, ss store.Store) { +func testLinkMetadataStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should get value", func(t *testing.T) { metadata := &model.LinkMetadata{ URL: "http://example.com", @@ -178,7 +179,7 @@ func testLinkMetadataStoreGet(t *testing.T, ss store.Store) { }) } -func testLinkMetadataStoreTypes(t *testing.T, ss store.Store) { +func testLinkMetadataStoreTypes(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should save and get image metadata", func(t *testing.T) { metadata := &model.LinkMetadata{ URL: "http://example.com", diff --git a/server/channels/store/storetest/notify_admin_store.go b/server/channels/store/storetest/notify_admin_store.go index b13980d237..f2e58616ba 100644 --- a/server/channels/store/storetest/notify_admin_store.go +++ b/server/channels/store/storetest/notify_admin_store.go @@ -10,20 +10,21 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) const PluginIdJenkins = "jenkins" -func TestNotifyAdminStore(t *testing.T, ss store.Store) { - t.Run("Save", func(t *testing.T) { testNotifyAdminStoreSave(t, ss) }) - t.Run("testGetDataByUserIdAndFeature", func(t *testing.T) { testGetDataByUserIdAndFeature(t, ss) }) - t.Run("testGet", func(t *testing.T) { testGet(t, ss) }) - t.Run("testDeleteBefore", func(t *testing.T) { testDeleteBefore(t, ss) }) - t.Run("testUpdate", func(t *testing.T) { testUpdate(t, ss) }) +func TestNotifyAdminStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("Save", func(t *testing.T) { testNotifyAdminStoreSave(t, rctx, ss) }) + t.Run("testGetDataByUserIdAndFeature", func(t *testing.T) { testGetDataByUserIdAndFeature(t, rctx, ss) }) + t.Run("testGet", func(t *testing.T) { testGet(t, rctx, ss) }) + t.Run("testDeleteBefore", func(t *testing.T) { testDeleteBefore(t, rctx, ss) }) + t.Run("testUpdate", func(t *testing.T) { testUpdate(t, rctx, ss) }) } -func tearDown(t *testing.T, ss store.Store) { +func tearDown(t *testing.T, rctx request.CTX, ss store.Store) { err := ss.NotifyAdmin().DeleteBefore(true, model.GetMillis()+model.GetMillis()) require.NoError(t, err) @@ -31,7 +32,7 @@ func tearDown(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testNotifyAdminStoreSave(t *testing.T, ss store.Store) { +func testNotifyAdminStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { d1 := &model.NotifyAdminData{ UserId: model.NewId(), RequiredPlan: model.LicenseShortSkuProfessional, @@ -78,10 +79,10 @@ func testNotifyAdminStoreSave(t *testing.T, ss store.Store) { _, err = ss.NotifyAdmin().Save(d6) require.Error(t, err) - tearDown(t, ss) + tearDown(t, rctx, ss) } -func testGet(t *testing.T, ss store.Store) { +func testGet(t *testing.T, rctx request.CTX, ss store.Store) { userId1 := model.NewId() d1 := &model.NotifyAdminData{ UserId: userId1, @@ -118,10 +119,10 @@ func testGet(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, len(trialRequests), 2) - tearDown(t, ss) + tearDown(t, rctx, ss) } -func testGetDataByUserIdAndFeature(t *testing.T, ss store.Store) { +func testGetDataByUserIdAndFeature(t *testing.T, rctx request.CTX, ss store.Store) { userId1 := model.NewId() d1 := &model.NotifyAdminData{ UserId: userId1, @@ -147,10 +148,10 @@ func testGetDataByUserIdAndFeature(t *testing.T, ss store.Store) { require.Equal(t, len(user1Request), 1) require.Equal(t, user1Request[0].RequiredFeature, model.PaidFeatureAllProfessionalfeatures) - tearDown(t, ss) + tearDown(t, rctx, ss) } -func testUpdate(t *testing.T, ss store.Store) { +func testUpdate(t *testing.T, rctx request.CTX, ss store.Store) { userId1 := model.NewId() d1 := &model.NotifyAdminData{ UserId: userId1, @@ -169,10 +170,10 @@ func testUpdate(t *testing.T, ss store.Store) { require.Equal(t, len(userRequest), 1) require.Equal(t, userRequest[0].SentAt, sql.NullInt64{Int64: 100, Valid: true}) - tearDown(t, ss) + tearDown(t, rctx, ss) } -func testDeleteBefore(t *testing.T, ss store.Store) { +func testDeleteBefore(t *testing.T, rctx request.CTX, ss store.Store) { userId1 := model.NewId() d1 := &model.NotifyAdminData{ UserId: userId1, diff --git a/server/channels/store/storetest/oauth_store.go b/server/channels/store/storetest/oauth_store.go index 6dd12ba13c..2973be6d0b 100644 --- a/server/channels/store/storetest/oauth_store.go +++ b/server/channels/store/storetest/oauth_store.go @@ -14,25 +14,25 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestOAuthStore(t *testing.T, ss store.Store) { - t.Run("SaveApp", func(t *testing.T) { testOAuthStoreSaveApp(t, ss) }) - t.Run("GetApp", func(t *testing.T) { testOAuthStoreGetApp(t, ss) }) - t.Run("UpdateApp", func(t *testing.T) { testOAuthStoreUpdateApp(t, ss) }) - t.Run("SaveAccessData", func(t *testing.T) { testOAuthStoreSaveAccessData(t, ss) }) - t.Run("OAuthUpdateAccessData", func(t *testing.T) { testOAuthUpdateAccessData(t, ss) }) - t.Run("GetAccessData", func(t *testing.T) { testOAuthStoreGetAccessData(t, ss) }) - t.Run("RemoveAccessData", func(t *testing.T) { testOAuthStoreRemoveAccessData(t, ss) }) - t.Run("RemoveAllAccessData", func(t *testing.T) { testOAuthStoreRemoveAllAccessData(t, ss) }) - t.Run("SaveAuthData", func(t *testing.T) { testOAuthStoreSaveAuthData(t, ss) }) - t.Run("GetAuthData", func(t *testing.T) { testOAuthStoreGetAuthData(t, ss) }) - t.Run("RemoveAuthData", func(t *testing.T) { testOAuthStoreRemoveAuthData(t, ss) }) - t.Run("RemoveAuthDataByUser", func(t *testing.T) { testOAuthStoreRemoveAuthDataByUser(t, ss) }) - t.Run("OAuthGetAuthorizedApps", func(t *testing.T) { testOAuthGetAuthorizedApps(t, ss) }) - t.Run("OAuthGetAccessDataByUserForApp", func(t *testing.T) { testOAuthGetAccessDataByUserForApp(t, ss) }) - t.Run("DeleteApp", func(t *testing.T) { testOAuthStoreDeleteApp(t, ss) }) +func TestOAuthStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("SaveApp", func(t *testing.T) { testOAuthStoreSaveApp(t, rctx, ss) }) + t.Run("GetApp", func(t *testing.T) { testOAuthStoreGetApp(t, rctx, ss) }) + t.Run("UpdateApp", func(t *testing.T) { testOAuthStoreUpdateApp(t, rctx, ss) }) + t.Run("SaveAccessData", func(t *testing.T) { testOAuthStoreSaveAccessData(t, rctx, ss) }) + t.Run("OAuthUpdateAccessData", func(t *testing.T) { testOAuthUpdateAccessData(t, rctx, ss) }) + t.Run("GetAccessData", func(t *testing.T) { testOAuthStoreGetAccessData(t, rctx, ss) }) + t.Run("RemoveAccessData", func(t *testing.T) { testOAuthStoreRemoveAccessData(t, rctx, ss) }) + t.Run("RemoveAllAccessData", func(t *testing.T) { testOAuthStoreRemoveAllAccessData(t, rctx, ss) }) + t.Run("SaveAuthData", func(t *testing.T) { testOAuthStoreSaveAuthData(t, rctx, ss) }) + t.Run("GetAuthData", func(t *testing.T) { testOAuthStoreGetAuthData(t, rctx, ss) }) + t.Run("RemoveAuthData", func(t *testing.T) { testOAuthStoreRemoveAuthData(t, rctx, ss) }) + t.Run("RemoveAuthDataByUser", func(t *testing.T) { testOAuthStoreRemoveAuthDataByUser(t, rctx, ss) }) + t.Run("OAuthGetAuthorizedApps", func(t *testing.T) { testOAuthGetAuthorizedApps(t, rctx, ss) }) + t.Run("OAuthGetAccessDataByUserForApp", func(t *testing.T) { testOAuthGetAccessDataByUserForApp(t, rctx, ss) }) + t.Run("DeleteApp", func(t *testing.T) { testOAuthStoreDeleteApp(t, rctx, ss) }) } -func testOAuthStoreSaveApp(t *testing.T, ss store.Store) { +func testOAuthStoreSaveApp(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.OAuthApp{} a1.CreatorId = model.NewId() a1.CallbackUrls = []string{"https://nowhere.com"} @@ -60,7 +60,7 @@ func testOAuthStoreSaveApp(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testOAuthStoreGetApp(t *testing.T, ss store.Store) { +func testOAuthStoreGetApp(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.OAuthApp{} a1.CreatorId = model.NewId() a1.Name = "TestApp" + model.NewId() @@ -88,7 +88,7 @@ func testOAuthStoreGetApp(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testOAuthStoreUpdateApp(t *testing.T, ss store.Store) { +func testOAuthStoreUpdateApp(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.OAuthApp{} a1.CreatorId = model.NewId() a1.Name = "TestApp" + model.NewId() @@ -123,7 +123,7 @@ func testOAuthStoreUpdateApp(t *testing.T, ss store.Store) { require.NotEqual(t, ua.CreatorId, "12345678901234567890123456", "creator id should not have updated") } -func testOAuthStoreSaveAccessData(t *testing.T, ss store.Store) { +func testOAuthStoreSaveAccessData(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AccessData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -140,7 +140,7 @@ func testOAuthStoreSaveAccessData(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testOAuthUpdateAccessData(t *testing.T, ss store.Store) { +func testOAuthUpdateAccessData(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AccessData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -170,7 +170,7 @@ func testOAuthUpdateAccessData(t *testing.T, ss store.Store) { require.NotEqual(t, ra1.RefreshToken, refreshToken, "refresh tokens didn't match") } -func testOAuthStoreGetAccessData(t *testing.T, ss store.Store) { +func testOAuthStoreGetAccessData(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AccessData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -204,7 +204,7 @@ func testOAuthStoreGetAccessData(t *testing.T, ss store.Store) { assert.Equal(t, a1.RefreshToken, ra1.RefreshToken, "tokens didn't match") } -func testOAuthStoreRemoveAccessData(t *testing.T, ss store.Store) { +func testOAuthStoreRemoveAccessData(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AccessData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -221,7 +221,7 @@ func testOAuthStoreRemoveAccessData(t *testing.T, ss store.Store) { require.Nil(t, result, "did not delete access token") } -func testOAuthStoreRemoveAllAccessData(t *testing.T, ss store.Store) { +func testOAuthStoreRemoveAllAccessData(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AccessData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -238,7 +238,7 @@ func testOAuthStoreRemoveAllAccessData(t *testing.T, ss store.Store) { require.Nil(t, result, "did not delete access token") } -func testOAuthStoreSaveAuthData(t *testing.T, ss store.Store) { +func testOAuthStoreSaveAuthData(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AuthData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -248,7 +248,7 @@ func testOAuthStoreSaveAuthData(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testOAuthStoreGetAuthData(t *testing.T, ss store.Store) { +func testOAuthStoreGetAuthData(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AuthData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -261,7 +261,7 @@ func testOAuthStoreGetAuthData(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testOAuthStoreRemoveAuthData(t *testing.T, ss store.Store) { +func testOAuthStoreRemoveAuthData(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AuthData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -277,7 +277,7 @@ func testOAuthStoreRemoveAuthData(t *testing.T, ss store.Store) { require.Error(t, err, "should have errored - auth code removed") } -func testOAuthStoreRemoveAuthDataByUser(t *testing.T, ss store.Store) { +func testOAuthStoreRemoveAuthDataByUser(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.AuthData{} a1.ClientId = model.NewId() a1.UserId = model.NewId() @@ -290,7 +290,7 @@ func testOAuthStoreRemoveAuthDataByUser(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testOAuthGetAuthorizedApps(t *testing.T, ss store.Store) { +func testOAuthGetAuthorizedApps(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.OAuthApp{} a1.CreatorId = model.NewId() a1.Name = "TestApp" + model.NewId() @@ -318,7 +318,7 @@ func testOAuthGetAuthorizedApps(t *testing.T, ss store.Store) { assert.NotEqual(t, len(apps), 0, "It should have return apps") } -func testOAuthGetAccessDataByUserForApp(t *testing.T, ss store.Store) { +func testOAuthGetAccessDataByUserForApp(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.OAuthApp{} a1.CreatorId = model.NewId() a1.Name = "TestApp" + model.NewId() @@ -356,9 +356,7 @@ func testOAuthGetAccessDataByUserForApp(t *testing.T, ss store.Store) { assert.NotEqual(t, len(accessData), 0, "It should have return access data") } -func testOAuthStoreDeleteApp(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testOAuthStoreDeleteApp(t *testing.T, rctx request.CTX, ss store.Store) { a1 := model.OAuthApp{} a1.CreatorId = model.NewId() a1.Name = "TestApp" + model.NewId() @@ -376,7 +374,7 @@ func testOAuthStoreDeleteApp(t *testing.T, ss store.Store) { s1.Token = model.NewId() s1.IsOAuth = true - s1, nErr := ss.Session().Save(c, s1) + s1, nErr := ss.Session().Save(rctx, s1) require.NoError(t, nErr) ad1 := model.AccessData{} @@ -392,7 +390,7 @@ func testOAuthStoreDeleteApp(t *testing.T, ss store.Store) { err = ss.OAuth().DeleteApp(a1.Id) require.NoError(t, err) - _, nErr = ss.Session().Get(c, s1.Token) + _, nErr = ss.Session().Get(rctx, s1.Token) require.Error(t, nErr, "should error - session should be deleted") _, err = ss.OAuth().GetAccessData(s1.Token) diff --git a/server/channels/store/storetest/plugin_store.go b/server/channels/store/storetest/plugin_store.go index d3d416fd7f..9f757d1c83 100644 --- a/server/channels/store/storetest/plugin_store.go +++ b/server/channels/store/storetest/plugin_store.go @@ -11,22 +11,23 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestPluginStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("SaveOrUpdate", func(t *testing.T) { testPluginSaveOrUpdate(t, ss) }) - t.Run("CompareAndSet", func(t *testing.T) { testPluginCompareAndSet(t, ss) }) - t.Run("CompareAndDelete", func(t *testing.T) { testPluginCompareAndDelete(t, ss) }) - t.Run("SetWithOptions", func(t *testing.T) { testPluginSetWithOptions(t, ss) }) - t.Run("Get", func(t *testing.T) { testPluginGet(t, ss) }) - t.Run("Delete", func(t *testing.T) { testPluginDelete(t, ss) }) - t.Run("DeleteAllForPlugin", func(t *testing.T) { testPluginDeleteAllForPlugin(t, ss) }) - t.Run("DeleteAllExpired", func(t *testing.T) { testPluginDeleteAllExpired(t, ss) }) - t.Run("List", func(t *testing.T) { testPluginList(t, ss) }) +func TestPluginStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("SaveOrUpdate", func(t *testing.T) { testPluginSaveOrUpdate(t, rctx, ss) }) + t.Run("CompareAndSet", func(t *testing.T) { testPluginCompareAndSet(t, rctx, ss) }) + t.Run("CompareAndDelete", func(t *testing.T) { testPluginCompareAndDelete(t, rctx, ss) }) + t.Run("SetWithOptions", func(t *testing.T) { testPluginSetWithOptions(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testPluginGet(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testPluginDelete(t, rctx, ss) }) + t.Run("DeleteAllForPlugin", func(t *testing.T) { testPluginDeleteAllForPlugin(t, rctx, ss) }) + t.Run("DeleteAllExpired", func(t *testing.T) { testPluginDeleteAllExpired(t, rctx, ss) }) + t.Run("List", func(t *testing.T) { testPluginList(t, rctx, ss) }) } -func setupKVs(t *testing.T, ss store.Store) (string, func()) { +func setupKVs(t *testing.T, rctx request.CTX, ss store.Store) (string, func()) { pluginId := model.NewId() otherPluginId := model.NewId() @@ -63,9 +64,9 @@ func setupKVs(t *testing.T, ss store.Store) (string, func()) { } } -func doTestPluginSaveOrUpdate(t *testing.T, ss store.Store, doer func(kv *model.PluginKeyValue) (*model.PluginKeyValue, error)) { +func doTestPluginSaveOrUpdate(t *testing.T, rctx request.CTX, ss store.Store, doer func(kv *model.PluginKeyValue) (*model.PluginKeyValue, error)) { t.Run("invalid kv", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() kv := &model.PluginKeyValue{ @@ -84,7 +85,7 @@ func doTestPluginSaveOrUpdate(t *testing.T, ss store.Store, doer func(kv *model. }) t.Run("new key", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -114,7 +115,7 @@ func doTestPluginSaveOrUpdate(t *testing.T, ss store.Store, doer func(kv *model. }) t.Run("nil value for new key", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -146,7 +147,7 @@ func doTestPluginSaveOrUpdate(t *testing.T, ss store.Store, doer func(kv *model. }) t.Run("existing key", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -182,7 +183,7 @@ func doTestPluginSaveOrUpdate(t *testing.T, ss store.Store, doer func(kv *model. }) t.Run("nil value for existing key", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -219,17 +220,17 @@ func doTestPluginSaveOrUpdate(t *testing.T, ss store.Store, doer func(kv *model. }) } -func testPluginSaveOrUpdate(t *testing.T, ss store.Store) { - doTestPluginSaveOrUpdate(t, ss, func(kv *model.PluginKeyValue) (*model.PluginKeyValue, error) { +func testPluginSaveOrUpdate(t *testing.T, rctx request.CTX, ss store.Store) { + doTestPluginSaveOrUpdate(t, rctx, ss, func(kv *model.PluginKeyValue) (*model.PluginKeyValue, error) { return ss.Plugin().SaveOrUpdate(kv) }) } // doTestPluginCompareAndSet exercises the CompareAndSet functionality, but abstracts the actual // call to same to allow reuse with SetWithOptions -func doTestPluginCompareAndSet(t *testing.T, ss store.Store, compareAndSet func(kv *model.PluginKeyValue, oldValue []byte) (bool, error)) { +func doTestPluginCompareAndSet(t *testing.T, rctx request.CTX, ss store.Store, compareAndSet func(kv *model.PluginKeyValue, oldValue []byte) (bool, error)) { t.Run("invalid kv", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() kv := &model.PluginKeyValue{ @@ -310,7 +311,7 @@ func doTestPluginCompareAndSet(t *testing.T, ss store.Store, compareAndSet func( // Non-existent keys and expired keys should behave identically. for description, setup := range map[string]func(t *testing.T) (*model.PluginKeyValue, func()){ "non-existent key": func(t *testing.T) (*model.PluginKeyValue, func()) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) kv := &model.PluginKeyValue{ PluginId: pluginId, @@ -322,7 +323,7 @@ func doTestPluginCompareAndSet(t *testing.T, ss store.Store, compareAndSet func( return kv, tearDown }, "expired key": func(t *testing.T) (*model.PluginKeyValue, func()) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) expiredKV := &model.PluginKeyValue{ PluginId: pluginId, @@ -398,7 +399,7 @@ func doTestPluginCompareAndSet(t *testing.T, ss store.Store, compareAndSet func( t.Run("existing key", func(t *testing.T) { setup := func(t *testing.T) (*model.PluginKeyValue, func()) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) existingKV := &model.PluginKeyValue{ PluginId: pluginId, @@ -524,15 +525,15 @@ func doTestPluginCompareAndSet(t *testing.T, ss store.Store, compareAndSet func( }) } -func testPluginCompareAndSet(t *testing.T, ss store.Store) { - doTestPluginCompareAndSet(t, ss, func(kv *model.PluginKeyValue, oldValue []byte) (bool, error) { +func testPluginCompareAndSet(t *testing.T, rctx request.CTX, ss store.Store) { + doTestPluginCompareAndSet(t, rctx, ss, func(kv *model.PluginKeyValue, oldValue []byte) (bool, error) { return ss.Plugin().CompareAndSet(kv, oldValue) }) } -func testPluginCompareAndDelete(t *testing.T, ss store.Store) { +func testPluginCompareAndDelete(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("invalid kv", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() kv := &model.PluginKeyValue{ @@ -551,7 +552,7 @@ func testPluginCompareAndDelete(t *testing.T, ss store.Store) { }) t.Run("non-existent key should fail", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -580,7 +581,7 @@ func testPluginCompareAndDelete(t *testing.T, ss store.Store) { }) t.Run("expired key should fail", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -612,7 +613,7 @@ func testPluginCompareAndDelete(t *testing.T, ss store.Store) { }) t.Run("existing key should fail given different old value", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -636,7 +637,7 @@ func testPluginCompareAndDelete(t *testing.T, ss store.Store) { }) t.Run("existing key should succeed given same old value", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -660,9 +661,9 @@ func testPluginCompareAndDelete(t *testing.T, ss store.Store) { }) } -func testPluginSetWithOptions(t *testing.T, ss store.Store) { +func testPluginSetWithOptions(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("invalid options", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() pluginId := "" @@ -682,7 +683,7 @@ func testPluginSetWithOptions(t *testing.T, ss store.Store) { }) t.Run("invalid kv", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() pluginId := "" @@ -699,7 +700,7 @@ func testPluginSetWithOptions(t *testing.T, ss store.Store) { }) t.Run("atomic", func(t *testing.T) { - doTestPluginCompareAndSet(t, ss, func(kv *model.PluginKeyValue, oldValue []byte) (bool, error) { + doTestPluginCompareAndSet(t, rctx, ss, func(kv *model.PluginKeyValue, oldValue []byte) (bool, error) { now := model.GetMillis() options := model.PluginKVSetOptions{ Atomic: true, @@ -715,7 +716,7 @@ func testPluginSetWithOptions(t *testing.T, ss store.Store) { }) t.Run("non-atomic", func(t *testing.T) { - doTestPluginSaveOrUpdate(t, ss, func(kv *model.PluginKeyValue) (*model.PluginKeyValue, error) { + doTestPluginSaveOrUpdate(t, rctx, ss, func(kv *model.PluginKeyValue) (*model.PluginKeyValue, error) { now := model.GetMillis() options := model.PluginKVSetOptions{ Atomic: false, @@ -734,7 +735,7 @@ func testPluginSetWithOptions(t *testing.T, ss store.Store) { }) } -func testPluginGet(t *testing.T, ss store.Store) { +func testPluginGet(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("no matching key value", func(t *testing.T) { pluginId := model.NewId() key := model.NewId() @@ -881,9 +882,9 @@ func testPluginGet(t *testing.T, ss store.Store) { }) } -func testPluginDelete(t *testing.T, ss store.Store) { +func testPluginDelete(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("no matching key value", func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -918,7 +919,7 @@ func testPluginDelete(t *testing.T, ss store.Store) { for _, testCase := range testCases { t.Run(testCase.description, func(t *testing.T) { - pluginId, tearDown := setupKVs(t, ss) + pluginId, tearDown := setupKVs(t, rctx, ss) defer tearDown() key := model.NewId() @@ -947,7 +948,7 @@ func testPluginDelete(t *testing.T, ss store.Store) { } } -func testPluginDeleteAllForPlugin(t *testing.T, ss store.Store) { +func testPluginDeleteAllForPlugin(t *testing.T, rctx request.CTX, ss store.Store) { setupKVsForDeleteAll := func(t *testing.T) (string, func()) { pluginId := model.NewId() otherPluginId := model.NewId() @@ -1015,7 +1016,7 @@ func testPluginDeleteAllForPlugin(t *testing.T, ss store.Store) { }) } -func testPluginDeleteAllExpired(t *testing.T, ss store.Store) { +func testPluginDeleteAllExpired(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("no keys", func(t *testing.T) { err := ss.Plugin().DeleteAllExpired() require.NoError(t, err) @@ -1206,9 +1207,9 @@ func testPluginDeleteAllExpired(t *testing.T, ss store.Store) { }) } -func testPluginList(t *testing.T, ss store.Store) { +func testPluginList(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("no key values", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() // Ignore the pluginId setup by setupKVs @@ -1219,7 +1220,7 @@ func testPluginList(t *testing.T, ss store.Store) { }) t.Run("single key", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() // Ignore the pluginId setup by setupKVs @@ -1241,7 +1242,7 @@ func testPluginList(t *testing.T, ss store.Store) { }) t.Run("multiple keys", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() // Ignore the pluginId setup by setupKVs @@ -1278,7 +1279,7 @@ func testPluginList(t *testing.T, ss store.Store) { }) t.Run("multiple keys, some expiring", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() // Ignore the pluginId setup by setupKVs @@ -1328,7 +1329,7 @@ func testPluginList(t *testing.T, ss store.Store) { }) t.Run("offsets and limits", func(t *testing.T) { - _, tearDown := setupKVs(t, ss) + _, tearDown := setupKVs(t, rctx, ss) defer tearDown() // Ignore the pluginId setup by setupKVs diff --git a/server/channels/store/storetest/post_acknowledgements_store.go b/server/channels/store/storetest/post_acknowledgements_store.go index 8392fb5c34..3fccbf7a33 100644 --- a/server/channels/store/storetest/post_acknowledgements_store.go +++ b/server/channels/store/storetest/post_acknowledgements_store.go @@ -9,16 +9,17 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestPostAcknowledgementsStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("Save", func(t *testing.T) { testPostAcknowledgementsStoreSave(t, ss) }) - t.Run("GetForPost", func(t *testing.T) { testPostAcknowledgementsStoreGetForPost(t, ss) }) - t.Run("GetForPosts", func(t *testing.T) { testPostAcknowledgementsStoreGetForPosts(t, ss) }) +func TestPostAcknowledgementsStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("Save", func(t *testing.T) { testPostAcknowledgementsStoreSave(t, rctx, ss) }) + t.Run("GetForPost", func(t *testing.T) { testPostAcknowledgementsStoreGetForPost(t, rctx, ss) }) + t.Run("GetForPosts", func(t *testing.T) { testPostAcknowledgementsStoreGetForPosts(t, rctx, ss) }) } -func testPostAcknowledgementsStoreSave(t *testing.T, ss store.Store) { +func testPostAcknowledgementsStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { userId1 := model.NewId() p1 := model.Post{} @@ -61,7 +62,7 @@ func testPostAcknowledgementsStoreSave(t *testing.T, ss store.Store) { }) } -func testPostAcknowledgementsStoreGetForPost(t *testing.T, ss store.Store) { +func testPostAcknowledgementsStoreGetForPost(t *testing.T, rctx request.CTX, ss store.Store) { userId1 := model.NewId() userId2 := model.NewId() userId3 := model.NewId() @@ -112,7 +113,7 @@ func testPostAcknowledgementsStoreGetForPost(t *testing.T, ss store.Store) { }) } -func testPostAcknowledgementsStoreGetForPosts(t *testing.T, ss store.Store) { +func testPostAcknowledgementsStoreGetForPosts(t *testing.T, rctx request.CTX, ss store.Store) { userId1 := model.NewId() userId2 := model.NewId() userId3 := model.NewId() diff --git a/server/channels/store/storetest/post_persistent_notification_store.go b/server/channels/store/storetest/post_persistent_notification_store.go index 1c8bb54ad2..a27f900c86 100644 --- a/server/channels/store/storetest/post_persistent_notification_store.go +++ b/server/channels/store/storetest/post_persistent_notification_store.go @@ -8,18 +8,19 @@ import ( "time" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) -func TestPostPersistentNotificationStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("Get", func(t *testing.T) { testPostPersistentNotificationStoreGet(t, ss) }) - t.Run("Delete", func(t *testing.T) { testPostPersistentNotificationStoreDelete(t, ss) }) - t.Run("UpdateLastSentAt", func(t *testing.T) { testPostPersistentNotificationStoreUpdateLastSentAt(t, ss) }) +func TestPostPersistentNotificationStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("Get", func(t *testing.T) { testPostPersistentNotificationStoreGet(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testPostPersistentNotificationStoreDelete(t, rctx, ss) }) + t.Run("UpdateLastSentAt", func(t *testing.T) { testPostPersistentNotificationStoreUpdateLastSentAt(t, rctx, ss) }) } -func testPostPersistentNotificationStoreGet(t *testing.T, ss store.Store) { +func testPostPersistentNotificationStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { p1 := model.Post{} p1.ChannelId = model.NewId() p1.UserId = model.NewId() @@ -141,7 +142,7 @@ func testPostPersistentNotificationStoreGet(t *testing.T, ss store.Store) { }) } -func testPostPersistentNotificationStoreUpdateLastSentAt(t *testing.T, ss store.Store) { +func testPostPersistentNotificationStoreUpdateLastSentAt(t *testing.T, rctx request.CTX, ss store.Store) { p1 := model.Post{} p1.ChannelId = model.NewId() p1.UserId = model.NewId() @@ -193,7 +194,7 @@ func testPostPersistentNotificationStoreUpdateLastSentAt(t *testing.T, ss store. assert.WithinDuration(t, now, model.GetTimeForMillis(pn[0].LastSentAt), delta) } -func testPostPersistentNotificationStoreDelete(t *testing.T, ss store.Store) { +func testPostPersistentNotificationStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Delete", func(t *testing.T) { p1 := model.Post{} p1.ChannelId = model.NewId() diff --git a/server/channels/store/storetest/post_priority_store.go b/server/channels/store/storetest/post_priority_store.go index 858b28c7fe..61bf4dcf69 100644 --- a/server/channels/store/storetest/post_priority_store.go +++ b/server/channels/store/storetest/post_priority_store.go @@ -12,14 +12,15 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestPostPriorityStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("GetForPost", func(t *testing.T) { testPostPriorityStoreGetForPost(t, ss) }) +func TestPostPriorityStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("GetForPost", func(t *testing.T) { testPostPriorityStoreGetForPost(t, rctx, ss) }) } -func testPostPriorityStoreGetForPost(t *testing.T, ss store.Store) { +func testPostPriorityStoreGetForPost(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Save post priority when in post's metadata", func(t *testing.T) { p1 := model.Post{} p1.ChannelId = model.NewId() diff --git a/server/channels/store/storetest/post_store.go b/server/channels/store/storetest/post_store.go index 50f4a86fa3..4606eeefc6 100644 --- a/server/channels/store/storetest/post_store.go +++ b/server/channels/store/storetest/post_store.go @@ -16,56 +16,57 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/utils" ) -func TestPostStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("SaveMultiple", func(t *testing.T) { testPostStoreSaveMultiple(t, ss) }) - t.Run("Save", func(t *testing.T) { testPostStoreSave(t, ss) }) - t.Run("SaveAndUpdateChannelMsgCounts", func(t *testing.T) { testPostStoreSaveChannelMsgCounts(t, ss) }) - t.Run("Get", func(t *testing.T) { testPostStoreGet(t, ss) }) - t.Run("GetSingle", func(t *testing.T) { testPostStoreGetSingle(t, ss) }) - t.Run("Update", func(t *testing.T) { testPostStoreUpdate(t, ss) }) - t.Run("Delete", func(t *testing.T) { testPostStoreDelete(t, ss) }) - t.Run("PermDelete1Level", func(t *testing.T) { testPostStorePermDelete1Level(t, ss) }) - t.Run("PermDelete1Level2", func(t *testing.T) { testPostStorePermDelete1Level2(t, ss) }) - t.Run("GetWithChildren", func(t *testing.T) { testPostStoreGetWithChildren(t, ss) }) - t.Run("GetPostsWithDetails", func(t *testing.T) { testPostStoreGetPostsWithDetails(t, ss) }) - t.Run("GetPostsBeforeAfter", func(t *testing.T) { testPostStoreGetPostsBeforeAfter(t, ss) }) - t.Run("GetPostsSince", func(t *testing.T) { testPostStoreGetPostsSince(t, ss) }) - t.Run("GetPosts", func(t *testing.T) { testPostStoreGetPosts(t, ss) }) - t.Run("GetPostBeforeAfter", func(t *testing.T) { testPostStoreGetPostBeforeAfter(t, ss) }) - t.Run("UserCountsWithPostsByDay", func(t *testing.T) { testUserCountsWithPostsByDay(t, ss) }) - t.Run("PostCountsByDuration", func(t *testing.T) { testPostCountsByDay(t, ss) }) - t.Run("PostCounts", func(t *testing.T) { testPostCounts(t, ss) }) - t.Run("GetFlaggedPostsForTeam", func(t *testing.T) { testPostStoreGetFlaggedPostsForTeam(t, ss, s) }) - t.Run("GetFlaggedPosts", func(t *testing.T) { testPostStoreGetFlaggedPosts(t, ss) }) - t.Run("GetFlaggedPostsForChannel", func(t *testing.T) { testPostStoreGetFlaggedPostsForChannel(t, ss) }) - t.Run("GetPostsCreatedAt", func(t *testing.T) { testPostStoreGetPostsCreatedAt(t, ss) }) - t.Run("Overwrite", func(t *testing.T) { testPostStoreOverwrite(t, ss) }) - t.Run("OverwriteMultiple", func(t *testing.T) { testPostStoreOverwriteMultiple(t, ss) }) - t.Run("GetPostsByIds", func(t *testing.T) { testPostStoreGetPostsByIds(t, ss) }) - t.Run("GetPostsBatchForIndexing", func(t *testing.T) { testPostStoreGetPostsBatchForIndexing(t, ss) }) - t.Run("PermanentDeleteBatch", func(t *testing.T) { testPostStorePermanentDeleteBatch(t, ss) }) - t.Run("GetOldest", func(t *testing.T) { testPostStoreGetOldest(t, ss) }) - t.Run("TestGetMaxPostSize", func(t *testing.T) { testGetMaxPostSize(t, ss) }) - t.Run("GetParentsForExportAfter", func(t *testing.T) { testPostStoreGetParentsForExportAfter(t, ss) }) - t.Run("GetRepliesForExport", func(t *testing.T) { testPostStoreGetRepliesForExport(t, ss) }) - t.Run("GetDirectPostParentsForExportAfter", func(t *testing.T) { testPostStoreGetDirectPostParentsForExportAfter(t, ss, s) }) - t.Run("GetDirectPostParentsForExportAfterDeleted", func(t *testing.T) { testPostStoreGetDirectPostParentsForExportAfterDeleted(t, ss, s) }) - t.Run("GetDirectPostParentsForExportAfterBatched", func(t *testing.T) { testPostStoreGetDirectPostParentsForExportAfterBatched(t, ss, s) }) - t.Run("GetForThread", func(t *testing.T) { testPostStoreGetForThread(t, ss) }) - t.Run("HasAutoResponsePostByUserSince", func(t *testing.T) { testHasAutoResponsePostByUserSince(t, ss) }) - t.Run("GetPostsSinceForSync", func(t *testing.T) { testGetPostsSinceForSync(t, ss, s) }) - t.Run("SetPostReminder", func(t *testing.T) { testSetPostReminder(t, ss, s) }) - t.Run("GetPostReminders", func(t *testing.T) { testGetPostReminders(t, ss, s) }) - t.Run("GetPostReminderMetadata", func(t *testing.T) { testGetPostReminderMetadata(t, ss, s) }) - t.Run("GetNthRecentPostTime", func(t *testing.T) { testGetNthRecentPostTime(t, ss) }) - t.Run("GetEditHistoryForPost", func(t *testing.T) { testGetEditHistoryForPost(t, ss) }) +func TestPostStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("SaveMultiple", func(t *testing.T) { testPostStoreSaveMultiple(t, rctx, ss) }) + t.Run("Save", func(t *testing.T) { testPostStoreSave(t, rctx, ss) }) + t.Run("SaveAndUpdateChannelMsgCounts", func(t *testing.T) { testPostStoreSaveChannelMsgCounts(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testPostStoreGet(t, rctx, ss) }) + t.Run("GetSingle", func(t *testing.T) { testPostStoreGetSingle(t, rctx, ss) }) + t.Run("Update", func(t *testing.T) { testPostStoreUpdate(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testPostStoreDelete(t, rctx, ss) }) + t.Run("PermDelete1Level", func(t *testing.T) { testPostStorePermDelete1Level(t, rctx, ss) }) + t.Run("PermDelete1Level2", func(t *testing.T) { testPostStorePermDelete1Level2(t, rctx, ss) }) + t.Run("GetWithChildren", func(t *testing.T) { testPostStoreGetWithChildren(t, rctx, ss) }) + t.Run("GetPostsWithDetails", func(t *testing.T) { testPostStoreGetPostsWithDetails(t, rctx, ss) }) + t.Run("GetPostsBeforeAfter", func(t *testing.T) { testPostStoreGetPostsBeforeAfter(t, rctx, ss) }) + t.Run("GetPostsSince", func(t *testing.T) { testPostStoreGetPostsSince(t, rctx, ss) }) + t.Run("GetPosts", func(t *testing.T) { testPostStoreGetPosts(t, rctx, ss) }) + t.Run("GetPostBeforeAfter", func(t *testing.T) { testPostStoreGetPostBeforeAfter(t, rctx, ss) }) + t.Run("UserCountsWithPostsByDay", func(t *testing.T) { testUserCountsWithPostsByDay(t, rctx, ss) }) + t.Run("PostCountsByDuration", func(t *testing.T) { testPostCountsByDay(t, rctx, ss) }) + t.Run("PostCounts", func(t *testing.T) { testPostCounts(t, rctx, ss) }) + t.Run("GetFlaggedPostsForTeam", func(t *testing.T) { testPostStoreGetFlaggedPostsForTeam(t, rctx, ss, s) }) + t.Run("GetFlaggedPosts", func(t *testing.T) { testPostStoreGetFlaggedPosts(t, rctx, ss) }) + t.Run("GetFlaggedPostsForChannel", func(t *testing.T) { testPostStoreGetFlaggedPostsForChannel(t, rctx, ss) }) + t.Run("GetPostsCreatedAt", func(t *testing.T) { testPostStoreGetPostsCreatedAt(t, rctx, ss) }) + t.Run("Overwrite", func(t *testing.T) { testPostStoreOverwrite(t, rctx, ss) }) + t.Run("OverwriteMultiple", func(t *testing.T) { testPostStoreOverwriteMultiple(t, rctx, ss) }) + t.Run("GetPostsByIds", func(t *testing.T) { testPostStoreGetPostsByIds(t, rctx, ss) }) + t.Run("GetPostsBatchForIndexing", func(t *testing.T) { testPostStoreGetPostsBatchForIndexing(t, rctx, ss) }) + t.Run("PermanentDeleteBatch", func(t *testing.T) { testPostStorePermanentDeleteBatch(t, rctx, ss) }) + t.Run("GetOldest", func(t *testing.T) { testPostStoreGetOldest(t, rctx, ss) }) + t.Run("TestGetMaxPostSize", func(t *testing.T) { testGetMaxPostSize(t, rctx, ss) }) + t.Run("GetParentsForExportAfter", func(t *testing.T) { testPostStoreGetParentsForExportAfter(t, rctx, ss) }) + t.Run("GetRepliesForExport", func(t *testing.T) { testPostStoreGetRepliesForExport(t, rctx, ss) }) + t.Run("GetDirectPostParentsForExportAfter", func(t *testing.T) { testPostStoreGetDirectPostParentsForExportAfter(t, rctx, ss, s) }) + t.Run("GetDirectPostParentsForExportAfterDeleted", func(t *testing.T) { testPostStoreGetDirectPostParentsForExportAfterDeleted(t, rctx, ss, s) }) + t.Run("GetDirectPostParentsForExportAfterBatched", func(t *testing.T) { testPostStoreGetDirectPostParentsForExportAfterBatched(t, rctx, ss, s) }) + t.Run("GetForThread", func(t *testing.T) { testPostStoreGetForThread(t, rctx, ss) }) + t.Run("HasAutoResponsePostByUserSince", func(t *testing.T) { testHasAutoResponsePostByUserSince(t, rctx, ss) }) + t.Run("GetPostsSinceForSync", func(t *testing.T) { testGetPostsSinceForSync(t, rctx, ss, s) }) + t.Run("SetPostReminder", func(t *testing.T) { testSetPostReminder(t, rctx, ss, s) }) + t.Run("GetPostReminders", func(t *testing.T) { testGetPostReminders(t, rctx, ss, s) }) + t.Run("GetPostReminderMetadata", func(t *testing.T) { testGetPostReminderMetadata(t, rctx, ss, s) }) + t.Run("GetNthRecentPostTime", func(t *testing.T) { testGetNthRecentPostTime(t, rctx, ss) }) + t.Run("GetEditHistoryForPost", func(t *testing.T) { testGetEditHistoryForPost(t, rctx, ss) }) } -func testPostStoreSave(t *testing.T, ss store.Store) { +func testPostStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Save post", func(t *testing.T) { o1 := model.Post{} o1.ChannelId = model.NewId() @@ -265,7 +266,7 @@ func testPostStoreSave(t *testing.T, ss store.Store) { }) } -func testPostStoreSaveMultiple(t *testing.T, ss store.Store) { +func testPostStoreSaveMultiple(t *testing.T, rctx request.CTX, ss store.Store) { p1 := model.Post{} p1.ChannelId = model.NewId() p1.UserId = model.NewId() @@ -577,7 +578,7 @@ func testPostStoreSaveMultiple(t *testing.T, ss store.Store) { }) } -func testPostStoreSaveChannelMsgCounts(t *testing.T, ss store.Store) { +func testPostStoreSaveChannelMsgCounts(t *testing.T, rctx request.CTX, ss store.Store) { c1 := &model.Channel{Name: model.NewId(), DisplayName: "posttestchannel", Type: model.ChannelTypeOpen, TeamId: model.NewId()} _, err := ss.Channel().Save(c1, 1000000) require.NoError(t, err) @@ -623,7 +624,7 @@ func testPostStoreSaveChannelMsgCounts(t *testing.T, ss store.Store) { assert.Equal(t, oldLastPostAt, c1.LastPostAt, "LastPostAt should not update for old message save") } -func testPostStoreGet(t *testing.T, ss store.Store) { +func testPostStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -657,7 +658,7 @@ func testPostStoreGet(t *testing.T, ss store.Store) { require.Error(t, err, "should fail for blank post ids") } -func testPostStoreGetForThread(t *testing.T, ss store.Store) { +func testPostStoreGetForThread(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Post thread is followed", func(t *testing.T) { teamId := model.NewId() channel, err := ss.Channel().Save(&model.Channel{ @@ -889,7 +890,7 @@ func testPostStoreGetForThread(t *testing.T, ss store.Store) { }) } -func testPostStoreGetSingle(t *testing.T, ss store.Store) { +func testPostStoreGetSingle(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -957,7 +958,7 @@ func testPostStoreGetSingle(t *testing.T, ss store.Store) { require.Error(t, err, "Missing id should have failed") } -func testPostStoreUpdate(t *testing.T, ss store.Store) { +func testPostStoreUpdate(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -1071,7 +1072,7 @@ func testPostStoreUpdate(t *testing.T, ss store.Store) { require.Len(t, ro4a.FileIds, 1, "Failed to set FileIds") } -func testPostStoreDelete(t *testing.T, ss store.Store) { +func testPostStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("single post, no replies", func(t *testing.T) { teamId := model.NewId() channel, err := ss.Channel().Save(&model.Channel{ @@ -1394,7 +1395,7 @@ func testPostStoreDelete(t *testing.T, ss store.Store) { }) } -func testPostStorePermDelete1Level(t *testing.T, ss store.Store) { +func testPostStorePermDelete1Level(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -1565,7 +1566,7 @@ func testPostStorePermDelete1Level(t *testing.T, ss store.Store) { require.Error(t, err, "Deleted id should have failed") } -func testPostStorePermDelete1Level2(t *testing.T, ss store.Store) { +func testPostStorePermDelete1Level2(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -1618,7 +1619,7 @@ func testPostStorePermDelete1Level2(t *testing.T, ss store.Store) { require.NoError(t, err, "Deleted id should have failed") } -func testPostStoreGetWithChildren(t *testing.T, ss store.Store) { +func testPostStoreGetWithChildren(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -1673,7 +1674,7 @@ func testPostStoreGetWithChildren(t *testing.T, ss store.Store) { require.Len(t, pl.Posts, 1, "invalid returned post") } -func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) { +func testPostStoreGetPostsWithDetails(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -1776,7 +1777,7 @@ func testPostStoreGetPostsWithDetails(t *testing.T, ss store.Store) { assert.Equal(t, 7, len(r3.Order)) } -func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) { +func testPostStoreGetPostsBeforeAfter(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("without threads", func(t *testing.T) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ @@ -2206,7 +2207,7 @@ func testPostStoreGetPostsBeforeAfter(t *testing.T, ss store.Store) { }) } -func testPostStoreGetPostsSince(t *testing.T, ss store.Store) { +func testPostStoreGetPostsSince(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should return posts created after the given time", func(t *testing.T) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ @@ -2356,7 +2357,7 @@ func testPostStoreGetPostsSince(t *testing.T, ss store.Store) { }) } -func testPostStoreGetPosts(t *testing.T, ss store.Store) { +func testPostStoreGetPosts(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -2544,7 +2545,7 @@ func testPostStoreGetPosts(t *testing.T, ss store.Store) { }) } -func testPostStoreGetPostBeforeAfter(t *testing.T, ss store.Store) { +func testPostStoreGetPostBeforeAfter(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -2661,7 +2662,7 @@ func testPostStoreGetPostBeforeAfter(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testUserCountsWithPostsByDay(t *testing.T, ss store.Store) { +func testUserCountsWithPostsByDay(t *testing.T, rctx request.CTX, ss store.Store) { t1 := &model.Team{} t1.DisplayName = "DisplayName" t1.Name = NewTestId() @@ -2720,7 +2721,7 @@ func testUserCountsWithPostsByDay(t *testing.T, ss store.Store) { require.Equal(t, float64(1), row2.Value, "wrong value") } -func testPostCountsByDay(t *testing.T, ss store.Store) { +func testPostCountsByDay(t *testing.T, rctx request.CTX, ss store.Store) { t1 := &model.Team{} t1.DisplayName = "DisplayName" t1.Name = NewTestId() @@ -2832,7 +2833,7 @@ func testPostCountsByDay(t *testing.T, ss store.Store) { assert.Equal(t, float64(1), r1[0].Value) } -func testPostCounts(t *testing.T, ss store.Store) { +func testPostCounts(t *testing.T, rctx request.CTX, ss store.Store) { now := time.Now() twentyMinAgo := now.Add(-20 * time.Minute).UnixMilli() fifteenMinAgo := now.Add(-15 * time.Minute).UnixMilli() @@ -2995,7 +2996,7 @@ func testPostCounts(t *testing.T, ss store.Store) { assert.Equal(t, int64(3), c) } -func testPostStoreGetFlaggedPostsForTeam(t *testing.T, ss store.Store, s SqlStore) { +func testPostStoreGetFlaggedPostsForTeam(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { c1 := &model.Channel{} c1.TeamId = model.NewId() c1.DisplayName = "Channel1" @@ -3214,7 +3215,7 @@ func testPostStoreGetFlaggedPostsForTeam(t *testing.T, ss store.Store, s SqlStor s.GetMasterX().Exec("TRUNCATE Channels") } -func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) { +func testPostStoreGetFlaggedPosts(t *testing.T, rctx request.CTX, ss store.Store) { c1 := &model.Channel{} c1.TeamId = model.NewId() c1.DisplayName = "Channel1" @@ -3354,7 +3355,7 @@ func testPostStoreGetFlaggedPosts(t *testing.T, ss store.Store) { require.Len(t, r4.Order, 2, "should have 2 posts") } -func testPostStoreGetFlaggedPostsForChannel(t *testing.T, ss store.Store) { +func testPostStoreGetFlaggedPostsForChannel(t *testing.T, rctx request.CTX, ss store.Store) { c1 := &model.Channel{} c1.TeamId = model.NewId() c1.DisplayName = "Channel1" @@ -3504,7 +3505,7 @@ func testPostStoreGetFlaggedPostsForChannel(t *testing.T, ss store.Store) { require.Len(t, r.Order, 0, "should have 0 posts") } -func testPostStoreGetPostsCreatedAt(t *testing.T, ss store.Store) { +func testPostStoreGetPostsCreatedAt(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -3561,7 +3562,7 @@ func testPostStoreGetPostsCreatedAt(t *testing.T, ss store.Store) { assert.Equal(t, 2, len(r1)) } -func testPostStoreOverwriteMultiple(t *testing.T, ss store.Store) { +func testPostStoreOverwriteMultiple(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -3711,7 +3712,7 @@ func testPostStoreOverwriteMultiple(t *testing.T, ss store.Store) { }) } -func testPostStoreOverwrite(t *testing.T, ss store.Store) { +func testPostStoreOverwrite(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -3828,7 +3829,7 @@ func testPostStoreOverwrite(t *testing.T, ss store.Store) { }) } -func testPostStoreGetPostsByIds(t *testing.T, ss store.Store) { +func testPostStoreGetPostsByIds(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -3889,7 +3890,7 @@ func testPostStoreGetPostsByIds(t *testing.T, ss store.Store) { require.Len(t, posts, 3, "Expected 3 posts in results. Got %v", len(posts)) } -func testPostStoreGetPostsBatchForIndexing(t *testing.T, ss store.Store) { +func testPostStoreGetPostsBatchForIndexing(t *testing.T, rctx request.CTX, ss store.Store) { c1 := &model.Channel{} c1.TeamId = model.NewId() c1.DisplayName = "Channel1" @@ -3949,7 +3950,7 @@ func testPostStoreGetPostsBatchForIndexing(t *testing.T, ss store.Store) { require.Len(t, r, 0, "Expected 0 post in results. Got %v", len(r)) } -func testPostStorePermanentDeleteBatch(t *testing.T, ss store.Store) { +func testPostStorePermanentDeleteBatch(t *testing.T, rctx request.CTX, ss store.Store) { team, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", Name: "team" + model.NewId(), @@ -4201,7 +4202,7 @@ func testPostStorePermanentDeleteBatch(t *testing.T, ss store.Store) { }) } -func testPostStoreGetOldest(t *testing.T, ss store.Store) { +func testPostStoreGetOldest(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ TeamId: teamId, @@ -4241,12 +4242,12 @@ func testPostStoreGetOldest(t *testing.T, ss store.Store) { assert.EqualValues(t, o2.Id, r1.Id) } -func testGetMaxPostSize(t *testing.T, ss store.Store) { +func testGetMaxPostSize(t *testing.T, rctx request.CTX, ss store.Store) { assert.Equal(t, model.PostMessageMaxRunesV2, ss.Post().GetMaxPostSize()) assert.Equal(t, model.PostMessageMaxRunesV2, ss.Post().GetMaxPostSize()) } -func testPostStoreGetParentsForExportAfter(t *testing.T, ss store.Store) { +func testPostStoreGetParentsForExportAfter(t *testing.T, rctx request.CTX, ss store.Store) { t1 := model.Team{} t1.DisplayName = "Name" t1.Name = NewTestId() @@ -4338,7 +4339,7 @@ func testPostStoreGetParentsForExportAfter(t *testing.T, ss store.Store) { }) } -func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) { +func testPostStoreGetRepliesForExport(t *testing.T, rctx request.CTX, ss store.Store) { t1 := model.Team{} t1.DisplayName = "Name" t1.Name = NewTestId() @@ -4404,7 +4405,7 @@ func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) { assert.Equal(t, reply1.Username, u1.Username) } -func testPostStoreGetDirectPostParentsForExportAfter(t *testing.T, ss store.Store, s SqlStore) { +func testPostStoreGetDirectPostParentsForExportAfter(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() o1 := model.Channel{} @@ -4458,7 +4459,7 @@ func testPostStoreGetDirectPostParentsForExportAfter(t *testing.T, ss store.Stor s.GetMasterX().Exec("TRUNCATE Channels") } -func testPostStoreGetDirectPostParentsForExportAfterDeleted(t *testing.T, ss store.Store, s SqlStore) { +func testPostStoreGetDirectPostParentsForExportAfterDeleted(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() o1 := model.Channel{} @@ -4524,7 +4525,7 @@ func testPostStoreGetDirectPostParentsForExportAfterDeleted(t *testing.T, ss sto s.GetMasterX().Exec("TRUNCATE Channels") } -func testPostStoreGetDirectPostParentsForExportAfterBatched(t *testing.T, ss store.Store, s SqlStore) { +func testPostStoreGetDirectPostParentsForExportAfterBatched(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamId := model.NewId() o1 := model.Channel{} @@ -4600,7 +4601,7 @@ func testPostStoreGetDirectPostParentsForExportAfterBatched(t *testing.T, ss sto s.GetMasterX().Exec("TRUNCATE Channels") } -func testHasAutoResponsePostByUserSince(t *testing.T, ss store.Store) { +func testHasAutoResponsePostByUserSince(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should return posts created after the given time", func(t *testing.T) { teamId := model.NewId() channel1, err := ss.Channel().Save(&model.Channel{ @@ -4654,7 +4655,7 @@ func testHasAutoResponsePostByUserSince(t *testing.T, ss store.Store) { }) } -func testGetPostsSinceForSync(t *testing.T, ss store.Store, s SqlStore) { +func testGetPostsSinceForSync(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { // create some posts. channelID := model.NewId() remoteID := model.NewString(model.NewId()) @@ -4757,7 +4758,7 @@ func testGetPostsSinceForSync(t *testing.T, ss store.Store, s SqlStore) { }) } -func testSetPostReminder(t *testing.T, ss store.Store, s SqlStore) { +func testSetPostReminder(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { // Basic userID := NewTestId() @@ -4799,7 +4800,7 @@ func testSetPostReminder(t *testing.T, ss store.Store, s SqlStore) { assert.Equal(t, reminder, &out) } -func testGetPostReminders(t *testing.T, ss store.Store, s SqlStore) { +func testGetPostReminders(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { times := []int64{100, 101, 102} for _, tt := range times { userID := NewTestId() @@ -4837,7 +4838,7 @@ func testGetPostReminders(t *testing.T, ss store.Store, s SqlStore) { require.Len(t, reminders, 0) } -func testGetPostReminderMetadata(t *testing.T, ss store.Store, s SqlStore) { +func testGetPostReminderMetadata(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { team := &model.Team{ Name: "teamname", DisplayName: "display", @@ -4917,7 +4918,7 @@ func getPostIds(posts []*model.Post, morePosts ...*model.Post) []string { return ids } -func testGetNthRecentPostTime(t *testing.T, ss store.Store) { +func testGetNthRecentPostTime(t *testing.T, rctx request.CTX, ss store.Store) { _, err := ss.Post().GetNthRecentPostTime(0) assert.Error(t, err) _, err = ss.Post().GetNthRecentPostTime(-1) @@ -5012,7 +5013,7 @@ func testGetNthRecentPostTime(t *testing.T, ss store.Store) { assert.IsType(t, &store.ErrNotFound{}, err) } -func testGetEditHistoryForPost(t *testing.T, ss store.Store) { +func testGetEditHistoryForPost(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("should return edit history for post", func(t *testing.T) { // create a post post := &model.Post{ diff --git a/server/channels/store/storetest/preference_store.go b/server/channels/store/storetest/preference_store.go index 76f1a4eb44..4d391133d7 100644 --- a/server/channels/store/storetest/preference_store.go +++ b/server/channels/store/storetest/preference_store.go @@ -10,22 +10,23 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestPreferenceStore(t *testing.T, ss store.Store) { - t.Run("PreferenceSave", func(t *testing.T) { testPreferenceSave(t, ss) }) - t.Run("PreferenceGet", func(t *testing.T) { testPreferenceGet(t, ss) }) - t.Run("PreferenceGetCategory", func(t *testing.T) { testPreferenceGetCategory(t, ss) }) - t.Run("PreferenceGetAll", func(t *testing.T) { testPreferenceGetAll(t, ss) }) - t.Run("PreferenceDeleteByUser", func(t *testing.T) { testPreferenceDeleteByUser(t, ss) }) - t.Run("PreferenceDelete", func(t *testing.T) { testPreferenceDelete(t, ss) }) - t.Run("PreferenceDeleteCategory", func(t *testing.T) { testPreferenceDeleteCategory(t, ss) }) - t.Run("PreferenceDeleteCategoryAndName", func(t *testing.T) { testPreferenceDeleteCategoryAndName(t, ss) }) - t.Run("PreferenceDeleteOrphanedRows", func(t *testing.T) { testPreferenceDeleteOrphanedRows(t, ss) }) +func TestPreferenceStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("PreferenceSave", func(t *testing.T) { testPreferenceSave(t, rctx, ss) }) + t.Run("PreferenceGet", func(t *testing.T) { testPreferenceGet(t, rctx, ss) }) + t.Run("PreferenceGetCategory", func(t *testing.T) { testPreferenceGetCategory(t, rctx, ss) }) + t.Run("PreferenceGetAll", func(t *testing.T) { testPreferenceGetAll(t, rctx, ss) }) + t.Run("PreferenceDeleteByUser", func(t *testing.T) { testPreferenceDeleteByUser(t, rctx, ss) }) + t.Run("PreferenceDelete", func(t *testing.T) { testPreferenceDelete(t, rctx, ss) }) + t.Run("PreferenceDeleteCategory", func(t *testing.T) { testPreferenceDeleteCategory(t, rctx, ss) }) + t.Run("PreferenceDeleteCategoryAndName", func(t *testing.T) { testPreferenceDeleteCategoryAndName(t, rctx, ss) }) + t.Run("PreferenceDeleteOrphanedRows", func(t *testing.T) { testPreferenceDeleteOrphanedRows(t, rctx, ss) }) } -func testPreferenceSave(t *testing.T, ss store.Store) { +func testPreferenceSave(t *testing.T, rctx request.CTX, ss store.Store) { id := model.NewId() preferences := model.Preferences{ @@ -61,7 +62,7 @@ func testPreferenceSave(t *testing.T, ss store.Store) { } } -func testPreferenceGet(t *testing.T, ss store.Store) { +func testPreferenceGet(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() category := model.PreferenceCategoryDirectChannelShow name := model.NewId() @@ -101,7 +102,7 @@ func testPreferenceGet(t *testing.T, ss store.Store) { require.Error(t, err, "no error on getting a missing preference") } -func testPreferenceGetCategory(t *testing.T, ss store.Store) { +func testPreferenceGetCategory(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() category := model.PreferenceCategoryDirectChannelShow name := model.NewId() @@ -150,7 +151,7 @@ func testPreferenceGetCategory(t *testing.T, ss store.Store) { require.Equal(t, 0, len(preferencesByCategory), "shouldn't have got any preferences") } -func testPreferenceGetAll(t *testing.T, ss store.Store) { +func testPreferenceGetAll(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() category := model.PreferenceCategoryDirectChannelShow name := model.NewId() @@ -193,7 +194,7 @@ func testPreferenceGetAll(t *testing.T, ss store.Store) { } } -func testPreferenceDeleteByUser(t *testing.T, ss store.Store) { +func testPreferenceDeleteByUser(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() category := model.PreferenceCategoryDirectChannelShow name := model.NewId() @@ -231,7 +232,7 @@ func testPreferenceDeleteByUser(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testPreferenceDelete(t *testing.T, ss store.Store) { +func testPreferenceDelete(t *testing.T, rctx request.CTX, ss store.Store) { preference := model.Preference{ UserId: model.NewId(), Category: model.PreferenceCategoryDirectChannelShow, @@ -253,7 +254,7 @@ func testPreferenceDelete(t *testing.T, ss store.Store) { assert.Empty(t, preferences, "should've returned no preferences") } -func testPreferenceDeleteCategory(t *testing.T, ss store.Store) { +func testPreferenceDeleteCategory(t *testing.T, rctx request.CTX, ss store.Store) { category := model.NewId() userId := model.NewId() @@ -286,7 +287,7 @@ func testPreferenceDeleteCategory(t *testing.T, ss store.Store) { assert.Empty(t, preferences, "should've returned no preferences") } -func testPreferenceDeleteCategoryAndName(t *testing.T, ss store.Store) { +func testPreferenceDeleteCategoryAndName(t *testing.T, rctx request.CTX, ss store.Store) { category := model.NewId() name := model.NewId() userId := model.NewId() @@ -329,7 +330,7 @@ func testPreferenceDeleteCategoryAndName(t *testing.T, ss store.Store) { assert.Empty(t, preferences, "should've returned no preference") } -func testPreferenceDeleteOrphanedRows(t *testing.T, ss store.Store) { +func testPreferenceDeleteOrphanedRows(t *testing.T, rctx request.CTX, ss store.Store) { const limit = 1000 team, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", diff --git a/server/channels/store/storetest/product_notices_store.go b/server/channels/store/storetest/product_notices_store.go index b68ab2ee56..006893d53c 100644 --- a/server/channels/store/storetest/product_notices_store.go +++ b/server/channels/store/storetest/product_notices_store.go @@ -9,16 +9,17 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestProductNoticesStore(t *testing.T, ss store.Store) { - t.Run("TestAddViewed", func(t *testing.T) { testAddViewed(t, ss) }) - t.Run("TestUpdateViewed", func(t *testing.T) { testUpdateViewed(t, ss) }) - t.Run("TestClearOld", func(t *testing.T) { testClearOld(t, ss) }) +func TestProductNoticesStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("TestAddViewed", func(t *testing.T) { testAddViewed(t, rctx, ss) }) + t.Run("TestUpdateViewed", func(t *testing.T) { testUpdateViewed(t, rctx, ss) }) + t.Run("TestClearOld", func(t *testing.T) { testClearOld(t, rctx, ss) }) } -func testAddViewed(t *testing.T, ss store.Store) { +func testAddViewed(t *testing.T, rctx request.CTX, ss store.Store) { notices := []string{"noticeA", "noticeB"} defer ss.ProductNotices().Clear(notices) @@ -32,7 +33,7 @@ func testAddViewed(t *testing.T, ss store.Store) { require.Len(t, res, 2) } -func testUpdateViewed(t *testing.T, ss store.Store) { +func testUpdateViewed(t *testing.T, rctx request.CTX, ss store.Store) { noticesA := []string{"noticeA", "noticeB"} noticesB := []string{"noticeB", "noticeC"} defer ss.ProductNotices().Clear(noticesA) @@ -57,7 +58,7 @@ func testUpdateViewed(t *testing.T, ss store.Store) { require.GreaterOrEqual(t, res[1].Timestamp, res[0].Timestamp) } -func testClearOld(t *testing.T, ss store.Store) { +func testClearOld(t *testing.T, rctx request.CTX, ss store.Store) { noticesA := []string{"noticeA", "noticeB"} defer ss.ProductNotices().Clear(noticesA) // mark two notices diff --git a/server/channels/store/storetest/reaction_store.go b/server/channels/store/storetest/reaction_store.go index 72792d39e2..f3ae24e12d 100644 --- a/server/channels/store/storetest/reaction_store.go +++ b/server/channels/store/storetest/reaction_store.go @@ -14,23 +14,24 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/store/retrylayer" ) -func TestReactionStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("ReactionSave", func(t *testing.T) { testReactionSave(t, ss) }) - t.Run("ReactionDelete", func(t *testing.T) { testReactionDelete(t, ss) }) - t.Run("ReactionGetForPost", func(t *testing.T) { testReactionGetForPost(t, ss) }) - t.Run("ReactionGetForPostSince", func(t *testing.T) { testReactionGetForPostSince(t, ss, s) }) - t.Run("ReactionDeleteAllWithEmojiName", func(t *testing.T) { testReactionDeleteAllWithEmojiName(t, ss, s) }) - t.Run("PermanentDeleteByUser", func(t *testing.T) { testPermanentDeleteByUser(t, ss) }) - t.Run("PermanentDeleteBatch", func(t *testing.T) { testReactionStorePermanentDeleteBatch(t, ss) }) - t.Run("ReactionBulkGetForPosts", func(t *testing.T) { testReactionBulkGetForPosts(t, ss) }) - t.Run("ReactionDeadlock", func(t *testing.T) { testReactionDeadlock(t, ss) }) +func TestReactionStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("ReactionSave", func(t *testing.T) { testReactionSave(t, rctx, ss) }) + t.Run("ReactionDelete", func(t *testing.T) { testReactionDelete(t, rctx, ss) }) + t.Run("ReactionGetForPost", func(t *testing.T) { testReactionGetForPost(t, rctx, ss) }) + t.Run("ReactionGetForPostSince", func(t *testing.T) { testReactionGetForPostSince(t, rctx, ss, s) }) + t.Run("ReactionDeleteAllWithEmojiName", func(t *testing.T) { testReactionDeleteAllWithEmojiName(t, rctx, ss, s) }) + t.Run("PermanentDeleteByUser", func(t *testing.T) { testPermanentDeleteByUser(t, rctx, ss) }) + t.Run("PermanentDeleteBatch", func(t *testing.T) { testReactionStorePermanentDeleteBatch(t, rctx, ss) }) + t.Run("ReactionBulkGetForPosts", func(t *testing.T) { testReactionBulkGetForPosts(t, rctx, ss) }) + t.Run("ReactionDeadlock", func(t *testing.T) { testReactionDeadlock(t, rctx, ss) }) } -func testReactionSave(t *testing.T, ss store.Store) { +func testReactionSave(t *testing.T, rctx request.CTX, ss store.Store) { post, err := ss.Post().Save(&model.Post{ ChannelId: model.NewId(), UserId: model.NewId(), @@ -131,7 +132,7 @@ func testReactionSave(t *testing.T, ss store.Store) { }) } -func testReactionDelete(t *testing.T, ss store.Store) { +func testReactionDelete(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Delete", func(t *testing.T) { post, err := ss.Post().Save(&model.Post{ ChannelId: model.NewId(), @@ -201,7 +202,7 @@ func testReactionDelete(t *testing.T, ss store.Store) { }) } -func testReactionGetForPost(t *testing.T, ss store.Store) { +func testReactionGetForPost(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() // create post post, err := ss.Post().Save(&model.Post{ @@ -303,7 +304,7 @@ func testReactionGetForPost(t *testing.T, ss store.Store) { } } -func testReactionGetForPostSince(t *testing.T, ss store.Store, s SqlStore) { +func testReactionGetForPostSince(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { now := model.GetMillis() later := now + 1800000 // add 30 minutes remoteId := model.NewId() @@ -467,7 +468,7 @@ func forceNULL(reaction *model.Reaction, s SqlStore) error { return nil } -func testReactionDeleteAllWithEmojiName(t *testing.T, ss store.Store, s SqlStore) { +func testReactionDeleteAllWithEmojiName(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { emojiToDelete := model.NewId() post, err1 := ss.Post().Save(&model.Post{ @@ -561,7 +562,7 @@ func testReactionDeleteAllWithEmojiName(t *testing.T, ss store.Store, s SqlStore assert.False(t, postList.Posts[post3.Id].HasReactions, "post shouldn't have reactions any more") } -func testPermanentDeleteByUser(t *testing.T, ss store.Store) { +func testPermanentDeleteByUser(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() post, err1 := ss.Post().Save(&model.Post{ ChannelId: model.NewId(), @@ -646,7 +647,7 @@ func testPermanentDeleteByUser(t *testing.T, ss store.Store) { assert.False(t, postList.Posts[post3.Id].HasReactions, "post shouldn't have reactions any more") } -func testReactionStorePermanentDeleteBatch(t *testing.T, ss store.Store) { +func testReactionStorePermanentDeleteBatch(t *testing.T, rctx request.CTX, ss store.Store) { const limit = 1000 team, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", @@ -727,7 +728,7 @@ func testReactionStorePermanentDeleteBatch(t *testing.T, ss store.Store) { require.Len(t, returned, 1, "reactions for newer post should not have been deleted") } -func testReactionBulkGetForPosts(t *testing.T, ss store.Store) { +func testReactionBulkGetForPosts(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() post, _ := ss.Post().Save(&model.Post{ ChannelId: model.NewId(), @@ -806,7 +807,7 @@ func testReactionBulkGetForPosts(t *testing.T, ss store.Store) { // testReactionDeadlock is a best-case attempt to recreate the deadlock scenario. // It at least deadlocks 2 times out of 5. -func testReactionDeadlock(t *testing.T, ss store.Store) { +func testReactionDeadlock(t *testing.T, rctx request.CTX, ss store.Store) { ss = retrylayer.New(ss) post, err := ss.Post().Save(&model.Post{ diff --git a/server/channels/store/storetest/remote_cluster_store.go b/server/channels/store/storetest/remote_cluster_store.go index 02d062cce9..1c772fc049 100644 --- a/server/channels/store/storetest/remote_cluster_store.go +++ b/server/channels/store/storetest/remote_cluster_store.go @@ -8,24 +8,25 @@ import ( "testing" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) -func TestRemoteClusterStore(t *testing.T, ss store.Store) { - t.Run("RemoteClusterGetAllInChannel", func(t *testing.T) { testRemoteClusterGetAllInChannel(t, ss) }) - t.Run("RemoteClusterGetAllNotInChannel", func(t *testing.T) { testRemoteClusterGetAllNotInChannel(t, ss) }) - t.Run("RemoteClusterSave", func(t *testing.T) { testRemoteClusterSave(t, ss) }) - t.Run("RemoteClusterDelete", func(t *testing.T) { testRemoteClusterDelete(t, ss) }) - t.Run("RemoteClusterGet", func(t *testing.T) { testRemoteClusterGet(t, ss) }) - t.Run("RemoteClusterGetAll", func(t *testing.T) { testRemoteClusterGetAll(t, ss) }) - t.Run("RemoteClusterGetByTopic", func(t *testing.T) { testRemoteClusterGetByTopic(t, ss) }) - t.Run("RemoteClusterUpdateTopics", func(t *testing.T) { testRemoteClusterUpdateTopics(t, ss) }) +func TestRemoteClusterStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("RemoteClusterGetAllInChannel", func(t *testing.T) { testRemoteClusterGetAllInChannel(t, rctx, ss) }) + t.Run("RemoteClusterGetAllNotInChannel", func(t *testing.T) { testRemoteClusterGetAllNotInChannel(t, rctx, ss) }) + t.Run("RemoteClusterSave", func(t *testing.T) { testRemoteClusterSave(t, rctx, ss) }) + t.Run("RemoteClusterDelete", func(t *testing.T) { testRemoteClusterDelete(t, rctx, ss) }) + t.Run("RemoteClusterGet", func(t *testing.T) { testRemoteClusterGet(t, rctx, ss) }) + t.Run("RemoteClusterGetAll", func(t *testing.T) { testRemoteClusterGetAll(t, rctx, ss) }) + t.Run("RemoteClusterGetByTopic", func(t *testing.T) { testRemoteClusterGetByTopic(t, rctx, ss) }) + t.Run("RemoteClusterUpdateTopics", func(t *testing.T) { testRemoteClusterUpdateTopics(t, rctx, ss) }) } -func testRemoteClusterSave(t *testing.T, ss store.Store) { +func testRemoteClusterSave(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Save", func(t *testing.T) { rc := &model.RemoteCluster{ Name: "some_remote", @@ -60,7 +61,7 @@ func testRemoteClusterSave(t *testing.T, ss store.Store) { }) } -func testRemoteClusterDelete(t *testing.T, ss store.Store) { +func testRemoteClusterDelete(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Delete", func(t *testing.T) { rc := &model.RemoteCluster{ Name: "shortlived_remote", @@ -82,7 +83,7 @@ func testRemoteClusterDelete(t *testing.T, ss store.Store) { }) } -func testRemoteClusterGet(t *testing.T, ss store.Store) { +func testRemoteClusterGet(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Get", func(t *testing.T) { rc := &model.RemoteCluster{ Name: "shortlived_remote_2", @@ -103,7 +104,7 @@ func testRemoteClusterGet(t *testing.T, ss store.Store) { }) } -func testRemoteClusterGetAll(t *testing.T, ss store.Store) { +func testRemoteClusterGetAll(t *testing.T, rctx request.CTX, ss store.Store) { require.NoError(t, clearRemoteClusters(ss)) userId := model.NewId() @@ -208,7 +209,7 @@ func testRemoteClusterGetAll(t *testing.T, ss store.Store) { }) } -func testRemoteClusterGetAllInChannel(t *testing.T, ss store.Store) { +func testRemoteClusterGetAllInChannel(t *testing.T, rctx request.CTX, ss store.Store) { require.NoError(t, clearRemoteClusters(ss)) now := model.GetMillis() @@ -316,7 +317,7 @@ func testRemoteClusterGetAllInChannel(t *testing.T, ss store.Store) { }) } -func testRemoteClusterGetAllNotInChannel(t *testing.T, ss store.Store) { +func testRemoteClusterGetAllNotInChannel(t *testing.T, rctx request.CTX, ss store.Store) { require.NoError(t, clearRemoteClusters(ss)) userId := model.NewId() @@ -421,7 +422,7 @@ func getIds(remotes []*model.RemoteCluster) []string { return ids } -func testRemoteClusterGetByTopic(t *testing.T, ss store.Store) { +func testRemoteClusterGetByTopic(t *testing.T, rctx request.CTX, ss store.Store) { require.NoError(t, clearRemoteClusters(ss)) rcData := []*model.RemoteCluster{ @@ -466,7 +467,7 @@ func testRemoteClusterGetByTopic(t *testing.T, ss store.Store) { } } -func testRemoteClusterUpdateTopics(t *testing.T, ss store.Store) { +func testRemoteClusterUpdateTopics(t *testing.T, rctx request.CTX, ss store.Store) { remoteId := model.NewId() rc := &model.RemoteCluster{ DisplayName: "Blap Inc", diff --git a/server/channels/store/storetest/retention_policy_store.go b/server/channels/store/storetest/retention_policy_store.go index 9eab6fad5a..f3b41ff9ad 100644 --- a/server/channels/store/storetest/retention_policy_store.go +++ b/server/channels/store/storetest/retention_policy_store.go @@ -11,23 +11,24 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestRetentionPolicyStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("Save", func(t *testing.T) { testRetentionPolicyStoreSave(t, ss, s) }) - t.Run("Patch", func(t *testing.T) { testRetentionPolicyStorePatch(t, ss, s) }) - t.Run("Get", func(t *testing.T) { testRetentionPolicyStoreGet(t, ss, s) }) - t.Run("GetCount", func(t *testing.T) { testRetentionPolicyStoreGetCount(t, ss, s) }) - t.Run("Delete", func(t *testing.T) { testRetentionPolicyStoreDelete(t, ss, s) }) - t.Run("GetChannels", func(t *testing.T) { testRetentionPolicyStoreGetChannels(t, ss, s) }) - t.Run("AddChannels", func(t *testing.T) { testRetentionPolicyStoreAddChannels(t, ss, s) }) - t.Run("RemoveChannels", func(t *testing.T) { testRetentionPolicyStoreRemoveChannels(t, ss, s) }) - t.Run("GetTeams", func(t *testing.T) { testRetentionPolicyStoreGetTeams(t, ss, s) }) - t.Run("AddTeams", func(t *testing.T) { testRetentionPolicyStoreAddTeams(t, ss, s) }) - t.Run("RemoveTeams", func(t *testing.T) { testRetentionPolicyStoreRemoveTeams(t, ss, s) }) - t.Run("RemoveOrphanedRows", func(t *testing.T) { testRetentionPolicyStoreRemoveOrphanedRows(t, ss, s) }) - t.Run("GetPoliciesForUser", func(t *testing.T) { testRetentionPolicyStoreGetPoliciesForUser(t, ss, s) }) +func TestRetentionPolicyStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("Save", func(t *testing.T) { testRetentionPolicyStoreSave(t, rctx, ss, s) }) + t.Run("Patch", func(t *testing.T) { testRetentionPolicyStorePatch(t, rctx, ss, s) }) + t.Run("Get", func(t *testing.T) { testRetentionPolicyStoreGet(t, rctx, ss, s) }) + t.Run("GetCount", func(t *testing.T) { testRetentionPolicyStoreGetCount(t, rctx, ss, s) }) + t.Run("Delete", func(t *testing.T) { testRetentionPolicyStoreDelete(t, rctx, ss, s) }) + t.Run("GetChannels", func(t *testing.T) { testRetentionPolicyStoreGetChannels(t, rctx, ss, s) }) + t.Run("AddChannels", func(t *testing.T) { testRetentionPolicyStoreAddChannels(t, rctx, ss, s) }) + t.Run("RemoveChannels", func(t *testing.T) { testRetentionPolicyStoreRemoveChannels(t, rctx, ss, s) }) + t.Run("GetTeams", func(t *testing.T) { testRetentionPolicyStoreGetTeams(t, rctx, ss, s) }) + t.Run("AddTeams", func(t *testing.T) { testRetentionPolicyStoreAddTeams(t, rctx, ss, s) }) + t.Run("RemoveTeams", func(t *testing.T) { testRetentionPolicyStoreRemoveTeams(t, rctx, ss, s) }) + t.Run("RemoveOrphanedRows", func(t *testing.T) { testRetentionPolicyStoreRemoveOrphanedRows(t, rctx, ss, s) }) + t.Run("GetPoliciesForUser", func(t *testing.T) { testRetentionPolicyStoreGetPoliciesForUser(t, rctx, ss, s) }) } func getRetentionPolicyWithTeamAndChannelIds(t *testing.T, ss store.Store, policyID string) *model.RetentionPolicyWithTeamAndChannelIDs { @@ -138,7 +139,7 @@ func createTeamsForRetentionPolicy(t *testing.T, ss store.Store, numTeams int) ( return } -func createTeamsAndChannelsForRetentionPolicy(t *testing.T, ss store.Store) (teamIDs, channelIDs []string) { +func createTeamsAndChannelsForRetentionPolicy(t *testing.T, rctx request.CTX, ss store.Store) (teamIDs, channelIDs []string) { teamIDs = createTeamsForRetentionPolicy(t, ss, 2) channels1 := createChannelsForRetentionPolicy(t, ss, teamIDs[0], 1) channels2 := createChannelsForRetentionPolicy(t, ss, teamIDs[1], 2) @@ -197,7 +198,7 @@ func restoreRetentionPolicy(t *testing.T, ss store.Store, policy *model.Retentio checkRetentionPolicyLikeThisExists(t, ss, policy) } -func testRetentionPolicyStoreSave(t *testing.T, ss store.Store, s SqlStore) { +func testRetentionPolicyStoreSave(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { defer cleanupRetentionPolicyTest(s) t.Run("teams and channels are nil", func(t *testing.T) { @@ -211,7 +212,7 @@ func testRetentionPolicyStoreSave(t *testing.T, ss store.Store, s SqlStore) { checkRetentionPolicyLikeThisExists(t, ss, policy) }) t.Run("some teams and channels are specified", func(t *testing.T) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 3", teamIDs, channelIDs) checkRetentionPolicyLikeThisExists(t, ss, policy) @@ -228,8 +229,8 @@ func testRetentionPolicyStoreSave(t *testing.T, ss store.Store, s SqlStore) { }) } -func testRetentionPolicyStorePatch(t *testing.T, ss store.Store, s SqlStore) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) +func testRetentionPolicyStorePatch(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 1", teamIDs, channelIDs) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) @@ -322,7 +323,7 @@ func testRetentionPolicyStorePatch(t *testing.T, ss store.Store, s SqlStore) { }) } -func testRetentionPolicyStoreGet(t *testing.T, ss store.Store, s SqlStore) { +func testRetentionPolicyStoreGet(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { t.Run("get none", func(t *testing.T) { retrievedPolicies, err := ss.RetentionPolicy().GetAll(0, 10) require.NoError(t, err) @@ -333,7 +334,7 @@ func testRetentionPolicyStoreGet(t *testing.T, ss store.Store, s SqlStore) { // create multiple policies policiesWithCounts := make([]*model.RetentionPolicyWithTeamAndChannelCounts, 0) for i := 0; i < 3; i++ { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) policyWithIds := createRetentionPolicyWithTeamAndChannelIds( "Policy "+strconv.Itoa(i+1), teamIDs, channelIDs) @@ -361,7 +362,7 @@ func testRetentionPolicyStoreGet(t *testing.T, ss store.Store, s SqlStore) { }) t.Run("get all with same display name", func(t *testing.T) { for i := 0; i < 5; i++ { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) proposal := createRetentionPolicyWithTeamAndChannelIds( "Policy Name", teamIDs, channelIDs) @@ -380,7 +381,7 @@ func testRetentionPolicyStoreGet(t *testing.T, ss store.Store, s SqlStore) { }) } -func testRetentionPolicyStoreGetCount(t *testing.T, ss store.Store, s SqlStore) { +func testRetentionPolicyStoreGetCount(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { defer cleanupRetentionPolicyTest(s) t.Run("no policies", func(t *testing.T) { @@ -398,8 +399,8 @@ func testRetentionPolicyStoreGetCount(t *testing.T, ss store.Store, s SqlStore) }) } -func testRetentionPolicyStoreDelete(t *testing.T, ss store.Store, s SqlStore) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) +func testRetentionPolicyStoreDelete(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 1", teamIDs, channelIDs) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) @@ -414,7 +415,7 @@ func testRetentionPolicyStoreDelete(t *testing.T, ss store.Store, s SqlStore) { }) } -func testRetentionPolicyStoreGetChannels(t *testing.T, ss store.Store, s SqlStore) { +func testRetentionPolicyStoreGetChannels(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { defer cleanupRetentionPolicyTest(s) t.Run("no channels", func(t *testing.T) { @@ -424,7 +425,7 @@ func testRetentionPolicyStoreGetChannels(t *testing.T, ss store.Store, s SqlStor require.Len(t, channels, 0) }) t.Run("some channels", func(t *testing.T) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 2", teamIDs, channelIDs) channels, err := ss.RetentionPolicy().GetChannels(policy.ID, 0, len(channelIDs)) @@ -440,8 +441,8 @@ func testRetentionPolicyStoreGetChannels(t *testing.T, ss store.Store, s SqlStor }) } -func testRetentionPolicyStoreAddChannels(t *testing.T, ss store.Store, s SqlStore) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) +func testRetentionPolicyStoreAddChannels(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 1", teamIDs, channelIDs) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) @@ -475,8 +476,8 @@ func testRetentionPolicyStoreAddChannels(t *testing.T, ss store.Store, s SqlStor }) } -func testRetentionPolicyStoreRemoveChannels(t *testing.T, ss store.Store, s SqlStore) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) +func testRetentionPolicyStoreRemoveChannels(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 1", teamIDs, channelIDs) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) @@ -510,7 +511,7 @@ func testRetentionPolicyStoreRemoveChannels(t *testing.T, ss store.Store, s SqlS }) } -func testRetentionPolicyStoreGetTeams(t *testing.T, ss store.Store, s SqlStore) { +func testRetentionPolicyStoreGetTeams(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { defer cleanupRetentionPolicyTest(s) t.Run("no teams", func(t *testing.T) { @@ -520,7 +521,7 @@ func testRetentionPolicyStoreGetTeams(t *testing.T, ss store.Store, s SqlStore) require.Len(t, teams, 0) }) t.Run("some teams", func(t *testing.T) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 2", teamIDs, channelIDs) teams, err := ss.RetentionPolicy().GetTeams(policy.ID, 0, len(teamIDs)) @@ -536,8 +537,8 @@ func testRetentionPolicyStoreGetTeams(t *testing.T, ss store.Store, s SqlStore) }) } -func testRetentionPolicyStoreAddTeams(t *testing.T, ss store.Store, s SqlStore) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) +func testRetentionPolicyStoreAddTeams(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 1", teamIDs, channelIDs) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) @@ -571,8 +572,8 @@ func testRetentionPolicyStoreAddTeams(t *testing.T, ss store.Store, s SqlStore) }) } -func testRetentionPolicyStoreRemoveTeams(t *testing.T, ss store.Store, s SqlStore) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) +func testRetentionPolicyStoreRemoveTeams(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 1", teamIDs, channelIDs) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) @@ -606,8 +607,8 @@ func testRetentionPolicyStoreRemoveTeams(t *testing.T, ss store.Store, s SqlStor }) } -func testRetentionPolicyStoreGetPoliciesForUser(t *testing.T, ss store.Store, s SqlStore) { - teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, ss) +func testRetentionPolicyStoreGetPoliciesForUser(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + teamIDs, channelIDs := createTeamsAndChannelsForRetentionPolicy(t, rctx, ss) saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 1", teamIDs, channelIDs) defer deleteTeamsAndChannels(ss, teamIDs, channelIDs) @@ -662,7 +663,7 @@ func testRetentionPolicyStoreGetPoliciesForUser(t *testing.T, ss store.Store, s }) } -func testRetentionPolicyStoreRemoveOrphanedRows(t *testing.T, ss store.Store, s SqlStore) { +func testRetentionPolicyStoreRemoveOrphanedRows(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamID := createTeamsForRetentionPolicy(t, ss, 1)[0] channelID := createChannelsForRetentionPolicy(t, ss, teamID, 1)[0] policy := saveRetentionPolicyWithTeamAndChannelIds(t, ss, "Policy 1", diff --git a/server/channels/store/storetest/role_store.go b/server/channels/store/storetest/role_store.go index efbaf6f58b..1f517dea26 100644 --- a/server/channels/store/storetest/role_store.go +++ b/server/channels/store/storetest/role_store.go @@ -12,22 +12,25 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestRoleStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("Save", func(t *testing.T) { testRoleStoreSave(t, ss) }) - t.Run("Get", func(t *testing.T) { testRoleStoreGet(t, ss) }) - t.Run("GetAll", func(t *testing.T) { testRoleStoreGetAll(t, ss) }) - t.Run("GetByName", func(t *testing.T) { testRoleStoreGetByName(t, ss) }) - t.Run("GetNames", func(t *testing.T) { testRoleStoreGetByNames(t, ss) }) - t.Run("Delete", func(t *testing.T) { testRoleStoreDelete(t, ss) }) - t.Run("PermanentDeleteAll", func(t *testing.T) { testRoleStorePermanentDeleteAll(t, ss) }) - t.Run("LowerScopedChannelSchemeRoles_AllChannelSchemeRoles", func(t *testing.T) { testRoleStoreLowerScopedChannelSchemeRoles(t, ss) }) - t.Run("ChannelHigherScopedPermissionsBlankTeamSchemeChannelGuest", func(t *testing.T) { testRoleStoreChannelHigherScopedPermissionsBlankTeamSchemeChannelGuest(t, ss, s) }) +func TestRoleStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("Save", func(t *testing.T) { testRoleStoreSave(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testRoleStoreGet(t, rctx, ss) }) + t.Run("GetAll", func(t *testing.T) { testRoleStoreGetAll(t, rctx, ss) }) + t.Run("GetByName", func(t *testing.T) { testRoleStoreGetByName(t, rctx, ss) }) + t.Run("GetNames", func(t *testing.T) { testRoleStoreGetByNames(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testRoleStoreDelete(t, rctx, ss) }) + t.Run("PermanentDeleteAll", func(t *testing.T) { testRoleStorePermanentDeleteAll(t, rctx, ss) }) + t.Run("LowerScopedChannelSchemeRoles_AllChannelSchemeRoles", func(t *testing.T) { testRoleStoreLowerScopedChannelSchemeRoles(t, rctx, ss) }) + t.Run("ChannelHigherScopedPermissionsBlankTeamSchemeChannelGuest", func(t *testing.T) { + testRoleStoreChannelHigherScopedPermissionsBlankTeamSchemeChannelGuest(t, rctx, ss, s) + }) } -func testRoleStoreSave(t *testing.T, ss store.Store) { +func testRoleStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { // Save a new role. r1 := &model.Role{ Name: model.NewId(), @@ -100,7 +103,7 @@ func testRoleStoreSave(t *testing.T, ss store.Store) { assert.Error(t, err) } -func testRoleStoreGetAll(t *testing.T, ss store.Store) { +func testRoleStoreGetAll(t *testing.T, rctx request.CTX, ss store.Store) { prev, err := ss.Role().GetAll() require.NoError(t, err) prevCount := len(prev) @@ -140,7 +143,7 @@ func testRoleStoreGetAll(t *testing.T, ss store.Store) { assert.Len(t, data, prevCount+2) } -func testRoleStoreGet(t *testing.T, ss store.Store) { +func testRoleStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { // Save a role to test with. r1 := &model.Role{ Name: model.NewId(), @@ -173,7 +176,7 @@ func testRoleStoreGet(t *testing.T, ss store.Store) { assert.Error(t, err) } -func testRoleStoreGetByName(t *testing.T, ss store.Store) { +func testRoleStoreGetByName(t *testing.T, rctx request.CTX, ss store.Store) { // Save a role to test with. r1 := &model.Role{ Name: model.NewId(), @@ -206,7 +209,7 @@ func testRoleStoreGetByName(t *testing.T, ss store.Store) { assert.Error(t, err) } -func testRoleStoreGetByNames(t *testing.T, ss store.Store) { +func testRoleStoreGetByNames(t *testing.T, rctx request.CTX, ss store.Store) { // Save some roles to test with. r1 := &model.Role{ Name: model.NewId(), @@ -279,7 +282,7 @@ func testRoleStoreGetByNames(t *testing.T, ss store.Store) { assert.NotContains(t, roles6, d3) } -func testRoleStoreDelete(t *testing.T, ss store.Store) { +func testRoleStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { // Save a role to test with. r1 := &model.Role{ Name: model.NewId(), @@ -319,7 +322,7 @@ func testRoleStoreDelete(t *testing.T, ss store.Store) { assert.Error(t, err) } -func testRoleStorePermanentDeleteAll(t *testing.T, ss store.Store) { +func testRoleStorePermanentDeleteAll(t *testing.T, rctx request.CTX, ss store.Store) { r1 := &model.Role{ Name: model.NewId(), DisplayName: model.NewId(), @@ -361,7 +364,7 @@ func testRoleStorePermanentDeleteAll(t *testing.T, ss store.Store) { assert.Empty(t, roles) } -func testRoleStoreLowerScopedChannelSchemeRoles(t *testing.T, ss store.Store) { +func testRoleStoreLowerScopedChannelSchemeRoles(t *testing.T, rctx request.CTX, ss store.Store) { createDefaultRoles(ss) teamScheme1 := &model.Scheme{ @@ -517,7 +520,7 @@ func testRoleStoreLowerScopedChannelSchemeRoles(t *testing.T, ss store.Store) { }) } -func testRoleStoreChannelHigherScopedPermissionsBlankTeamSchemeChannelGuest(t *testing.T, ss store.Store, s SqlStore) { +func testRoleStoreChannelHigherScopedPermissionsBlankTeamSchemeChannelGuest(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { teamScheme := &model.Scheme{ DisplayName: model.NewId(), Name: model.NewId(), diff --git a/server/channels/store/storetest/scheme_store.go b/server/channels/store/storetest/scheme_store.go index fb7de168a9..045a0b47bd 100644 --- a/server/channels/store/storetest/scheme_store.go +++ b/server/channels/store/storetest/scheme_store.go @@ -11,20 +11,21 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestSchemeStore(t *testing.T, ss store.Store) { +func TestSchemeStore(t *testing.T, rctx request.CTX, ss store.Store) { createDefaultRoles(ss) - t.Run("Save", func(t *testing.T) { testSchemeStoreSave(t, ss) }) - t.Run("Get", func(t *testing.T) { testSchemeStoreGet(t, ss) }) - t.Run("GetAllPage", func(t *testing.T) { testSchemeStoreGetAllPage(t, ss) }) - t.Run("Delete", func(t *testing.T) { testSchemeStoreDelete(t, ss) }) - t.Run("PermanentDeleteAll", func(t *testing.T) { testSchemeStorePermanentDeleteAll(t, ss) }) - t.Run("GetByName", func(t *testing.T) { testSchemeStoreGetByName(t, ss) }) - t.Run("CountByScope", func(t *testing.T) { testSchemeStoreCountByScope(t, ss) }) - t.Run("CountWithoutPermission", func(t *testing.T) { testCountWithoutPermission(t, ss) }) + t.Run("Save", func(t *testing.T) { testSchemeStoreSave(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testSchemeStoreGet(t, rctx, ss) }) + t.Run("GetAllPage", func(t *testing.T) { testSchemeStoreGetAllPage(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testSchemeStoreDelete(t, rctx, ss) }) + t.Run("PermanentDeleteAll", func(t *testing.T) { testSchemeStorePermanentDeleteAll(t, rctx, ss) }) + t.Run("GetByName", func(t *testing.T) { testSchemeStoreGetByName(t, rctx, ss) }) + t.Run("CountByScope", func(t *testing.T) { testSchemeStoreCountByScope(t, rctx, ss) }) + t.Run("CountWithoutPermission", func(t *testing.T) { testCountWithoutPermission(t, rctx, ss) }) } func createDefaultRoles(ss store.Store) { @@ -115,7 +116,7 @@ func createDefaultRoles(ss store.Store) { }) } -func testSchemeStoreSave(t *testing.T, ss store.Store) { +func testSchemeStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { // Save a new scheme. s1 := &model.Scheme{ DisplayName: model.NewId(), @@ -206,7 +207,7 @@ func testSchemeStoreSave(t *testing.T, ss store.Store) { assert.Error(t, err) } -func testSchemeStoreGet(t *testing.T, ss store.Store) { +func testSchemeStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { // Save a scheme to test with. s1 := &model.Scheme{ DisplayName: model.NewId(), @@ -242,7 +243,7 @@ func testSchemeStoreGet(t *testing.T, ss store.Store) { assert.Error(t, err) } -func testSchemeStoreGetByName(t *testing.T, ss store.Store) { +func testSchemeStoreGetByName(t *testing.T, rctx request.CTX, ss store.Store) { // Save a scheme to test with. s1 := &model.Scheme{ DisplayName: model.NewId(), @@ -278,7 +279,7 @@ func testSchemeStoreGetByName(t *testing.T, ss store.Store) { assert.Error(t, err) } -func testSchemeStoreGetAllPage(t *testing.T, ss store.Store) { +func testSchemeStoreGetAllPage(t *testing.T, rctx request.CTX, ss store.Store) { // Save a scheme to test with. schemes := []*model.Scheme{ { @@ -343,7 +344,7 @@ func testSchemeStoreGetAllPage(t *testing.T, ss store.Store) { } } -func testSchemeStoreDelete(t *testing.T, ss store.Store) { +func testSchemeStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { // Save a new scheme. s1 := &model.Scheme{ DisplayName: model.NewId(), @@ -490,7 +491,7 @@ func testSchemeStoreDelete(t *testing.T, ss store.Store) { assert.Equal(t, "", *c6.SchemeId) } -func testSchemeStorePermanentDeleteAll(t *testing.T, ss store.Store) { +func testSchemeStorePermanentDeleteAll(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Scheme{ Name: model.NewId(), DisplayName: model.NewId(), @@ -524,7 +525,7 @@ func testSchemeStorePermanentDeleteAll(t *testing.T, ss store.Store) { assert.Empty(t, schemes) } -func testSchemeStoreCountByScope(t *testing.T, ss store.Store) { +func testSchemeStoreCountByScope(t *testing.T, rctx request.CTX, ss store.Store) { testCounts := func(expectedTeamCount, expectedChannelCount int) { actualCount, err := ss.Scheme().CountByScope(model.SchemeScopeTeam) require.NoError(t, err) @@ -557,7 +558,7 @@ func testSchemeStoreCountByScope(t *testing.T, ss store.Store) { testCounts(2, 2) } -func testCountWithoutPermission(t *testing.T, ss store.Store) { +func testCountWithoutPermission(t *testing.T, rctx request.CTX, ss store.Store) { perm := model.PermissionCreatePost.Id createScheme := func(scope string) *model.Scheme { diff --git a/server/channels/store/storetest/session_store.go b/server/channels/store/storetest/session_store.go index 5503a6d58a..5fbe4d7fea 100644 --- a/server/channels/store/storetest/session_store.go +++ b/server/channels/store/storetest/session_store.go @@ -18,59 +18,55 @@ const ( TenMinutes = 600000 ) -func TestSessionStore(t *testing.T, ss store.Store) { +func TestSessionStore(t *testing.T, rctx request.CTX, ss store.Store) { // Run serially to prevent interfering with other tests - testSessionCleanup(t, ss) + testSessionCleanup(t, rctx, ss) - t.Run("Save", func(t *testing.T) { testSessionStoreSave(t, ss) }) - t.Run("SessionGet", func(t *testing.T) { testSessionGet(t, ss) }) - t.Run("SessionGetWithDeviceId", func(t *testing.T) { testSessionGetWithDeviceId(t, ss) }) - t.Run("SessionRemove", func(t *testing.T) { testSessionRemove(t, ss) }) - t.Run("SessionRemoveAll", func(t *testing.T) { testSessionRemoveAll(t, ss) }) - t.Run("SessionRemoveByUser", func(t *testing.T) { testSessionRemoveByUser(t, ss) }) - t.Run("SessionRemoveToken", func(t *testing.T) { testSessionRemoveToken(t, ss) }) - t.Run("SessionUpdateDeviceId", func(t *testing.T) { testSessionUpdateDeviceId(t, ss) }) - t.Run("SessionUpdateDeviceId2", func(t *testing.T) { testSessionUpdateDeviceId2(t, ss) }) - t.Run("UpdateExpiresAt", func(t *testing.T) { testSessionStoreUpdateExpiresAt(t, ss) }) - t.Run("UpdateLastActivityAt", func(t *testing.T) { testSessionStoreUpdateLastActivityAt(t, ss) }) - t.Run("SessionCount", func(t *testing.T) { testSessionCount(t, ss) }) - t.Run("GetSessionsExpired", func(t *testing.T) { testGetSessionsExpired(t, ss) }) - t.Run("UpdateExpiredNotify", func(t *testing.T) { testUpdateExpiredNotify(t, ss) }) + t.Run("Save", func(t *testing.T) { testSessionStoreSave(t, rctx, ss) }) + t.Run("SessionGet", func(t *testing.T) { testSessionGet(t, rctx, ss) }) + t.Run("SessionGetWithDeviceId", func(t *testing.T) { testSessionGetWithDeviceId(t, rctx, ss) }) + t.Run("SessionRemove", func(t *testing.T) { testSessionRemove(t, rctx, ss) }) + t.Run("SessionRemoveAll", func(t *testing.T) { testSessionRemoveAll(t, rctx, ss) }) + t.Run("SessionRemoveByUser", func(t *testing.T) { testSessionRemoveByUser(t, rctx, ss) }) + t.Run("SessionRemoveToken", func(t *testing.T) { testSessionRemoveToken(t, rctx, ss) }) + t.Run("SessionUpdateDeviceId", func(t *testing.T) { testSessionUpdateDeviceId(t, rctx, ss) }) + t.Run("SessionUpdateDeviceId2", func(t *testing.T) { testSessionUpdateDeviceId2(t, rctx, ss) }) + t.Run("UpdateExpiresAt", func(t *testing.T) { testSessionStoreUpdateExpiresAt(t, rctx, ss) }) + t.Run("UpdateLastActivityAt", func(t *testing.T) { testSessionStoreUpdateLastActivityAt(t, rctx, ss) }) + t.Run("SessionCount", func(t *testing.T) { testSessionCount(t, rctx, ss) }) + t.Run("GetSessionsExpired", func(t *testing.T) { testGetSessionsExpired(t, rctx, ss) }) + t.Run("UpdateExpiredNotify", func(t *testing.T) { testUpdateExpiredNotify(t, rctx, ss) }) } -func testSessionStoreSave(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - _, err := ss.Session().Save(c, s1) + _, err := ss.Session().Save(rctx, s1) require.NoError(t, err) } -func testSessionGet(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionGet(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) s2 := &model.Session{} s2.UserId = s1.UserId - _, err = ss.Session().Save(c, s2) + _, err = ss.Session().Save(rctx, s2) require.NoError(t, err) s3 := &model.Session{} s3.UserId = s1.UserId s3.ExpiresAt = 1 - _, err = ss.Session().Save(c, s3) + _, err = ss.Session().Save(rctx, s3) require.NoError(t, err) - session, err := ss.Session().Get(c, s1.Id) + session, err := ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.Equal(t, session.Id, s1.Id, "should match") @@ -79,23 +75,21 @@ func testSessionGet(t *testing.T, ss store.Store) { err = ss.Session().UpdateProps(session) require.NoError(t, err) - session2, err := ss.Session().Get(c, session.Id) + session2, err := ss.Session().Get(rctx, session.Id) require.NoError(t, err) require.Equal(t, session.Props, session2.Props, "should match") - data, err := ss.Session().GetSessions(c, s1.UserId) + data, err := ss.Session().GetSessions(rctx, s1.UserId) require.NoError(t, err) require.Len(t, data, 3, "should match len") } -func testSessionGetWithDeviceId(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionGetWithDeviceId(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() s1.ExpiresAt = model.GetMillis() + 10000 - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) s2 := &model.Session{} @@ -103,7 +97,7 @@ func testSessionGetWithDeviceId(t *testing.T, ss store.Store) { s2.DeviceId = model.NewId() s2.ExpiresAt = model.GetMillis() + 10000 - _, err = ss.Session().Save(c, s2) + _, err = ss.Session().Save(rctx, s2) require.NoError(t, err) s3 := &model.Session{} @@ -111,7 +105,7 @@ func testSessionGetWithDeviceId(t *testing.T, ss store.Store) { s3.ExpiresAt = 1 s3.DeviceId = model.NewId() - _, err = ss.Session().Save(c, s3) + _, err = ss.Session().Save(rctx, s3) require.NoError(t, err) data, err := ss.Session().GetSessionsWithActiveDeviceIds(s1.UserId) @@ -119,97 +113,87 @@ func testSessionGetWithDeviceId(t *testing.T, ss store.Store) { require.Len(t, data, 1, "should match len") } -func testSessionRemove(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionRemove(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) - session, err := ss.Session().Get(c, s1.Id) + session, err := ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.Equal(t, session.Id, s1.Id, "should match") removeErr := ss.Session().Remove(s1.Id) require.NoError(t, removeErr) - _, err = ss.Session().Get(c, s1.Id) + _, err = ss.Session().Get(rctx, s1.Id) require.Error(t, err, "should have been removed") } -func testSessionRemoveAll(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionRemoveAll(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) - session, err := ss.Session().Get(c, s1.Id) + session, err := ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.Equal(t, session.Id, s1.Id, "should match") removeErr := ss.Session().RemoveAllSessions() require.NoError(t, removeErr) - _, err = ss.Session().Get(c, s1.Id) + _, err = ss.Session().Get(rctx, s1.Id) require.Error(t, err, "should have been removed") } -func testSessionRemoveByUser(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionRemoveByUser(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) - session, err := ss.Session().Get(c, s1.Id) + session, err := ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.Equal(t, session.Id, s1.Id, "should match") deleteErr := ss.Session().PermanentDeleteSessionsByUser(s1.UserId) require.NoError(t, deleteErr) - _, err = ss.Session().Get(c, s1.Id) + _, err = ss.Session().Get(rctx, s1.Id) require.Error(t, err, "should have been removed") } -func testSessionRemoveToken(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionRemoveToken(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) - session, err := ss.Session().Get(c, s1.Id) + session, err := ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.Equal(t, session.Id, s1.Id, "should match") removeErr := ss.Session().Remove(s1.Token) require.NoError(t, removeErr) - _, err = ss.Session().Get(c, s1.Id) + _, err = ss.Session().Get(rctx, s1.Id) require.Error(t, err, "should have been removed") - data, err := ss.Session().GetSessions(c, s1.UserId) + data, err := ss.Session().GetSessions(rctx, s1.UserId) require.NoError(t, err) require.Empty(t, data, "should match len") } -func testSessionUpdateDeviceId(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionUpdateDeviceId(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) _, err = ss.Session().UpdateDeviceId(s1.Id, model.PushNotifyApple+":1234567890", s1.ExpiresAt) @@ -218,20 +202,18 @@ func testSessionUpdateDeviceId(t *testing.T, ss store.Store) { s2 := &model.Session{} s2.UserId = model.NewId() - s2, err = ss.Session().Save(c, s2) + s2, err = ss.Session().Save(rctx, s2) require.NoError(t, err) _, err = ss.Session().UpdateDeviceId(s2.Id, model.PushNotifyApple+":1234567890", s1.ExpiresAt) require.NoError(t, err) } -func testSessionUpdateDeviceId2(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionUpdateDeviceId2(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) _, err = ss.Session().UpdateDeviceId(s1.Id, model.PushNotifyAppleReactNative+":1234567890", s1.ExpiresAt) @@ -240,55 +222,49 @@ func testSessionUpdateDeviceId2(t *testing.T, ss store.Store) { s2 := &model.Session{} s2.UserId = model.NewId() - s2, err = ss.Session().Save(c, s2) + s2, err = ss.Session().Save(rctx, s2) require.NoError(t, err) _, err = ss.Session().UpdateDeviceId(s2.Id, model.PushNotifyAppleReactNative+":1234567890", s1.ExpiresAt) require.NoError(t, err) } -func testSessionStoreUpdateExpiresAt(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionStoreUpdateExpiresAt(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) err = ss.Session().UpdateExpiresAt(s1.Id, 1234567890) require.NoError(t, err) - session, err := ss.Session().Get(c, s1.Id) + session, err := ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.EqualValues(t, session.ExpiresAt, 1234567890, "ExpiresAt not updated correctly") } -func testSessionStoreUpdateLastActivityAt(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionStoreUpdateLastActivityAt(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) err = ss.Session().UpdateLastActivityAt(s1.Id, 1234567890) require.NoError(t, err) - session, err := ss.Session().Get(c, s1.Id) + session, err := ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.EqualValues(t, session.LastActivityAt, 1234567890, "LastActivityAt not updated correctly") } -func testSessionCount(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionCount(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() s1.ExpiresAt = model.GetMillis() + 100000 - _, err := ss.Session().Save(c, s1) + _, err := ss.Session().Save(rctx, s1) require.NoError(t, err) count, err := ss.Session().AnalyticsSessionCount() @@ -296,52 +272,50 @@ func testSessionCount(t *testing.T, ss store.Store) { require.NotZero(t, count, "should have at least 1 session") } -func testSessionCleanup(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testSessionCleanup(t *testing.T, rctx request.CTX, ss store.Store) { now := model.GetMillis() s1 := &model.Session{} s1.UserId = model.NewId() s1.ExpiresAt = 0 // never expires - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) s2 := &model.Session{} s2.UserId = s1.UserId s2.ExpiresAt = now + 1000000 // expires in the future - s2, err = ss.Session().Save(c, s2) + s2, err = ss.Session().Save(rctx, s2) require.NoError(t, err) s3 := &model.Session{} s3.UserId = model.NewId() s3.ExpiresAt = 1 // expired - s3, err = ss.Session().Save(c, s3) + s3, err = ss.Session().Save(rctx, s3) require.NoError(t, err) s4 := &model.Session{} s4.UserId = model.NewId() s4.ExpiresAt = 2 // expired - s4, err = ss.Session().Save(c, s4) + s4, err = ss.Session().Save(rctx, s4) require.NoError(t, err) err = ss.Session().Cleanup(now, 1) require.NoError(t, err) - _, err = ss.Session().Get(c, s1.Id) + _, err = ss.Session().Get(rctx, s1.Id) assert.NoError(t, err) - _, err = ss.Session().Get(c, s2.Id) + _, err = ss.Session().Get(rctx, s2.Id) assert.NoError(t, err) - _, err = ss.Session().Get(c, s3.Id) + _, err = ss.Session().Get(rctx, s3.Id) assert.Error(t, err) - _, err = ss.Session().Get(c, s4.Id) + _, err = ss.Session().Get(rctx, s4.Id) assert.Error(t, err) removeErr := ss.Session().Remove(s1.Id) @@ -351,9 +325,7 @@ func testSessionCleanup(t *testing.T, ss store.Store) { require.NoError(t, removeErr) } -func testGetSessionsExpired(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testGetSessionsExpired(t *testing.T, rctx request.CTX, ss store.Store) { now := model.GetMillis() // Clear existing sessions. @@ -364,34 +336,34 @@ func testGetSessionsExpired(t *testing.T, ss store.Store) { s1.UserId = model.NewId() s1.DeviceId = model.NewId() s1.ExpiresAt = 0 // never expires - _, err = ss.Session().Save(c, s1) + _, err = ss.Session().Save(rctx, s1) require.NoError(t, err) s2 := &model.Session{} s2.UserId = model.NewId() s2.DeviceId = model.NewId() s2.ExpiresAt = now - TenMinutes // expired within threshold - s2, err = ss.Session().Save(c, s2) + s2, err = ss.Session().Save(rctx, s2) require.NoError(t, err) s3 := &model.Session{} s3.UserId = model.NewId() s3.DeviceId = model.NewId() s3.ExpiresAt = now - (TenMinutes * 100) // expired outside threshold - _, err = ss.Session().Save(c, s3) + _, err = ss.Session().Save(rctx, s3) require.NoError(t, err) s4 := &model.Session{} s4.UserId = model.NewId() s4.ExpiresAt = now - TenMinutes // expired within threshold, but not mobile - s4, err = ss.Session().Save(c, s4) + s4, err = ss.Session().Save(rctx, s4) require.NoError(t, err) s5 := &model.Session{} s5.UserId = model.NewId() s5.DeviceId = model.NewId() s5.ExpiresAt = now + (TenMinutes * 100000) // not expired - _, err = ss.Session().Save(c, s5) + _, err = ss.Session().Save(rctx, s5) require.NoError(t, err) sessions, err := ss.Session().GetSessionsExpired(TenMinutes*2, true, true) // mobile only @@ -408,29 +380,27 @@ func testGetSessionsExpired(t *testing.T, ss store.Store) { } } -func testUpdateExpiredNotify(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUpdateExpiredNotify(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Session{} s1.UserId = model.NewId() s1.DeviceId = model.NewId() s1.ExpiresAt = model.GetMillis() + TenMinutes - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) - session, err := ss.Session().Get(c, s1.Id) + session, err := ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.False(t, session.ExpiredNotify) err = ss.Session().UpdateExpiredNotify(session.Id, true) require.NoError(t, err) - session, err = ss.Session().Get(c, s1.Id) + session, err = ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.True(t, session.ExpiredNotify) err = ss.Session().UpdateExpiredNotify(session.Id, false) require.NoError(t, err) - session, err = ss.Session().Get(c, s1.Id) + session, err = ss.Session().Get(rctx, s1.Id) require.NoError(t, err) require.False(t, session.ExpiredNotify) } diff --git a/server/channels/store/storetest/shared_channel_store.go b/server/channels/store/storetest/shared_channel_store.go index f56b52d88f..6c885394c3 100644 --- a/server/channels/store/storetest/shared_channel_store.go +++ b/server/channels/store/storetest/shared_channel_store.go @@ -12,40 +12,41 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestSharedChannelStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("SaveSharedChannel", func(t *testing.T) { testSaveSharedChannel(t, ss) }) - t.Run("GetSharedChannel", func(t *testing.T) { testGetSharedChannel(t, ss) }) - t.Run("HasSharedChannel", func(t *testing.T) { testHasSharedChannel(t, ss) }) - t.Run("GetSharedChannels", func(t *testing.T) { testGetSharedChannels(t, ss) }) - t.Run("UpdateSharedChannel", func(t *testing.T) { testUpdateSharedChannel(t, ss) }) - t.Run("DeleteSharedChannel", func(t *testing.T) { testDeleteSharedChannel(t, ss) }) +func TestSharedChannelStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("SaveSharedChannel", func(t *testing.T) { testSaveSharedChannel(t, rctx, ss) }) + t.Run("GetSharedChannel", func(t *testing.T) { testGetSharedChannel(t, rctx, ss) }) + t.Run("HasSharedChannel", func(t *testing.T) { testHasSharedChannel(t, rctx, ss) }) + t.Run("GetSharedChannels", func(t *testing.T) { testGetSharedChannels(t, rctx, ss) }) + t.Run("UpdateSharedChannel", func(t *testing.T) { testUpdateSharedChannel(t, rctx, ss) }) + t.Run("DeleteSharedChannel", func(t *testing.T) { testDeleteSharedChannel(t, rctx, ss) }) - t.Run("SaveSharedChannelRemote", func(t *testing.T) { testSaveSharedChannelRemote(t, ss) }) - t.Run("UpdateSharedChannelRemote", func(t *testing.T) { testUpdateSharedChannelRemote(t, ss) }) - t.Run("GetSharedChannelRemote", func(t *testing.T) { testGetSharedChannelRemote(t, ss) }) - t.Run("GetSharedChannelRemoteByIds", func(t *testing.T) { testGetSharedChannelRemoteByIds(t, ss) }) - t.Run("GetSharedChannelRemotes", func(t *testing.T) { testGetSharedChannelRemotes(t, ss) }) - t.Run("HasRemote", func(t *testing.T) { testHasRemote(t, ss) }) - t.Run("GetRemoteForUser", func(t *testing.T) { testGetRemoteForUser(t, ss) }) - t.Run("UpdateSharedChannelRemoteNextSyncAt", func(t *testing.T) { testUpdateSharedChannelRemoteCursor(t, ss) }) - t.Run("DeleteSharedChannelRemote", func(t *testing.T) { testDeleteSharedChannelRemote(t, ss) }) + t.Run("SaveSharedChannelRemote", func(t *testing.T) { testSaveSharedChannelRemote(t, rctx, ss) }) + t.Run("UpdateSharedChannelRemote", func(t *testing.T) { testUpdateSharedChannelRemote(t, rctx, ss) }) + t.Run("GetSharedChannelRemote", func(t *testing.T) { testGetSharedChannelRemote(t, rctx, ss) }) + t.Run("GetSharedChannelRemoteByIds", func(t *testing.T) { testGetSharedChannelRemoteByIds(t, rctx, ss) }) + t.Run("GetSharedChannelRemotes", func(t *testing.T) { testGetSharedChannelRemotes(t, rctx, ss) }) + t.Run("HasRemote", func(t *testing.T) { testHasRemote(t, rctx, ss) }) + t.Run("GetRemoteForUser", func(t *testing.T) { testGetRemoteForUser(t, rctx, ss) }) + t.Run("UpdateSharedChannelRemoteNextSyncAt", func(t *testing.T) { testUpdateSharedChannelRemoteCursor(t, rctx, ss) }) + t.Run("DeleteSharedChannelRemote", func(t *testing.T) { testDeleteSharedChannelRemote(t, rctx, ss) }) - t.Run("SaveSharedChannelUser", func(t *testing.T) { testSaveSharedChannelUser(t, ss) }) - t.Run("GetSharedChannelSingleUser", func(t *testing.T) { testGetSingleSharedChannelUser(t, ss) }) - t.Run("GetSharedChannelUser", func(t *testing.T) { testGetSharedChannelUser(t, ss) }) - t.Run("GetSharedChannelUsersForSync", func(t *testing.T) { testGetSharedChannelUsersForSync(t, ss) }) - t.Run("UpdateSharedChannelUserLastSyncAt", func(t *testing.T) { testUpdateSharedChannelUserLastSyncAt(t, ss) }) + t.Run("SaveSharedChannelUser", func(t *testing.T) { testSaveSharedChannelUser(t, rctx, ss) }) + t.Run("GetSharedChannelSingleUser", func(t *testing.T) { testGetSingleSharedChannelUser(t, rctx, ss) }) + t.Run("GetSharedChannelUser", func(t *testing.T) { testGetSharedChannelUser(t, rctx, ss) }) + t.Run("GetSharedChannelUsersForSync", func(t *testing.T) { testGetSharedChannelUsersForSync(t, rctx, ss) }) + t.Run("UpdateSharedChannelUserLastSyncAt", func(t *testing.T) { testUpdateSharedChannelUserLastSyncAt(t, rctx, ss) }) - t.Run("SaveSharedChannelAttachment", func(t *testing.T) { testSaveSharedChannelAttachment(t, ss) }) - t.Run("UpsertSharedChannelAttachment", func(t *testing.T) { testUpsertSharedChannelAttachment(t, ss) }) - t.Run("GetSharedChannelAttachment", func(t *testing.T) { testGetSharedChannelAttachment(t, ss) }) - t.Run("UpdateSharedChannelAttachmentLastSyncAt", func(t *testing.T) { testUpdateSharedChannelAttachmentLastSyncAt(t, ss) }) + t.Run("SaveSharedChannelAttachment", func(t *testing.T) { testSaveSharedChannelAttachment(t, rctx, ss) }) + t.Run("UpsertSharedChannelAttachment", func(t *testing.T) { testUpsertSharedChannelAttachment(t, rctx, ss) }) + t.Run("GetSharedChannelAttachment", func(t *testing.T) { testGetSharedChannelAttachment(t, rctx, ss) }) + t.Run("UpdateSharedChannelAttachmentLastSyncAt", func(t *testing.T) { testUpdateSharedChannelAttachmentLastSyncAt(t, rctx, ss) }) } -func testSaveSharedChannel(t *testing.T, ss store.Store) { +func testSaveSharedChannel(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Save shared channel (home)", func(t *testing.T) { channel, err := createTestChannel(ss, "test_save") require.NoError(t, err) @@ -123,7 +124,7 @@ func testSaveSharedChannel(t *testing.T, ss store.Store) { }) } -func testGetSharedChannel(t *testing.T, ss store.Store) { +func testGetSharedChannel(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_get") require.NoError(t, err) @@ -154,7 +155,7 @@ func testGetSharedChannel(t *testing.T, ss store.Store) { }) } -func testHasSharedChannel(t *testing.T, ss store.Store) { +func testHasSharedChannel(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_get") require.NoError(t, err) @@ -182,7 +183,7 @@ func testHasSharedChannel(t *testing.T, ss store.Store) { }) } -func testGetSharedChannels(t *testing.T, ss store.Store) { +func testGetSharedChannels(t *testing.T, rctx request.CTX, ss store.Store) { require.NoError(t, clearSharedChannels(ss)) user, err := createTestUser(ss, "gary.goodspeed") require.NoError(t, err) @@ -326,7 +327,7 @@ func testGetSharedChannels(t *testing.T, ss store.Store) { }) } -func testUpdateSharedChannel(t *testing.T, ss store.Store) { +func testUpdateSharedChannel(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_update") require.NoError(t, err) @@ -370,7 +371,7 @@ func testUpdateSharedChannel(t *testing.T, ss store.Store) { }) } -func testDeleteSharedChannel(t *testing.T, ss store.Store) { +func testDeleteSharedChannel(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_delete") require.NoError(t, err) @@ -423,7 +424,7 @@ func testDeleteSharedChannel(t *testing.T, ss store.Store) { }) } -func testSaveSharedChannelRemote(t *testing.T, ss store.Store) { +func testSaveSharedChannelRemote(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Save shared channel remote", func(t *testing.T) { channel, err := createTestChannel(ss, "test_save_remote") require.NoError(t, err) @@ -464,7 +465,7 @@ func testSaveSharedChannelRemote(t *testing.T, ss store.Store) { }) } -func testUpdateSharedChannelRemote(t *testing.T, ss store.Store) { +func testUpdateSharedChannelRemote(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Update shared channel remote", func(t *testing.T) { channel, err := createTestChannel(ss, "test_update_remote") require.NoError(t, err) @@ -511,7 +512,7 @@ func testUpdateSharedChannelRemote(t *testing.T, ss store.Store) { }) } -func testGetSharedChannelRemote(t *testing.T, ss store.Store) { +func testGetSharedChannelRemote(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_remote_get") require.NoError(t, err) @@ -541,7 +542,7 @@ func testGetSharedChannelRemote(t *testing.T, ss store.Store) { }) } -func testGetSharedChannelRemoteByIds(t *testing.T, ss store.Store) { +func testGetSharedChannelRemoteByIds(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_remote_get_by_ids") require.NoError(t, err) @@ -571,7 +572,7 @@ func testGetSharedChannelRemoteByIds(t *testing.T, ss store.Store) { }) } -func testGetSharedChannelRemotes(t *testing.T, ss store.Store) { +func testGetSharedChannelRemotes(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_remotes_get2") require.NoError(t, err) @@ -654,7 +655,7 @@ func testGetSharedChannelRemotes(t *testing.T, ss store.Store) { }) } -func testHasRemote(t *testing.T, ss store.Store) { +func testHasRemote(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_remotes_get2") require.NoError(t, err) @@ -695,7 +696,7 @@ func testHasRemote(t *testing.T, ss store.Store) { }) } -func testGetRemoteForUser(t *testing.T, ss store.Store) { +func testGetRemoteForUser(t *testing.T, rctx request.CTX, ss store.Store) { // add remotes, and users to simulated shared channels. teamId := model.NewId() channel, err := createSharedTestChannel(ss, "share_test_channel", true, nil) @@ -751,7 +752,7 @@ func testGetRemoteForUser(t *testing.T, ss store.Store) { }) } -func testUpdateSharedChannelRemoteCursor(t *testing.T, ss store.Store) { +func testUpdateSharedChannelRemoteCursor(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_remote_update_next_sync_at") require.NoError(t, err) @@ -788,7 +789,7 @@ func testUpdateSharedChannelRemoteCursor(t *testing.T, ss store.Store) { }) } -func testDeleteSharedChannelRemote(t *testing.T, ss store.Store) { +func testDeleteSharedChannelRemote(t *testing.T, rctx request.CTX, ss store.Store) { channel, err := createTestChannel(ss, "test_remote_delete") require.NoError(t, err) @@ -898,7 +899,7 @@ func clearSharedChannels(ss store.Store) error { return nil } -func testSaveSharedChannelUser(t *testing.T, ss store.Store) { +func testSaveSharedChannelUser(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Save shared channel user", func(t *testing.T) { scUser := &model.SharedChannelUser{ UserId: model.NewId(), @@ -934,7 +935,7 @@ func testSaveSharedChannelUser(t *testing.T, ss store.Store) { }) } -func testGetSingleSharedChannelUser(t *testing.T, ss store.Store) { +func testGetSingleSharedChannelUser(t *testing.T, rctx request.CTX, ss store.Store) { scUser := &model.SharedChannelUser{ UserId: model.NewId(), RemoteId: model.NewId(), @@ -961,7 +962,7 @@ func testGetSingleSharedChannelUser(t *testing.T, ss store.Store) { }) } -func testGetSharedChannelUser(t *testing.T, ss store.Store) { +func testGetSharedChannelUser(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() for i := 0; i < 10; i++ { scUser := &model.SharedChannelUser{ @@ -988,7 +989,7 @@ func testGetSharedChannelUser(t *testing.T, ss store.Store) { }) } -func testGetSharedChannelUsersForSync(t *testing.T, ss store.Store) { +func testGetSharedChannelUsersForSync(t *testing.T, rctx request.CTX, ss store.Store) { channelID := model.NewId() remoteID := model.NewId() earlier := model.GetMillis() - 300000 @@ -1067,7 +1068,7 @@ func testGetSharedChannelUsersForSync(t *testing.T, ss store.Store) { }) } -func testUpdateSharedChannelUserLastSyncAt(t *testing.T, ss store.Store) { +func testUpdateSharedChannelUserLastSyncAt(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Username: model.NewId(), Email: model.NewId() + "@example.com", @@ -1127,7 +1128,7 @@ func testUpdateSharedChannelUserLastSyncAt(t *testing.T, ss store.Store) { }) } -func testSaveSharedChannelAttachment(t *testing.T, ss store.Store) { +func testSaveSharedChannelAttachment(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Save shared channel attachment", func(t *testing.T) { attachment := &model.SharedChannelAttachment{ FileId: model.NewId(), @@ -1162,7 +1163,7 @@ func testSaveSharedChannelAttachment(t *testing.T, ss store.Store) { }) } -func testUpsertSharedChannelAttachment(t *testing.T, ss store.Store) { +func testUpsertSharedChannelAttachment(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Upsert new shared channel attachment", func(t *testing.T) { attachment := &model.SharedChannelAttachment{ FileId: model.NewId(), @@ -1224,7 +1225,7 @@ func testUpsertSharedChannelAttachment(t *testing.T, ss store.Store) { }) } -func testGetSharedChannelAttachment(t *testing.T, ss store.Store) { +func testGetSharedChannelAttachment(t *testing.T, rctx request.CTX, ss store.Store) { attachment := &model.SharedChannelAttachment{ FileId: model.NewId(), RemoteId: model.NewId(), @@ -1250,7 +1251,7 @@ func testGetSharedChannelAttachment(t *testing.T, ss store.Store) { }) } -func testUpdateSharedChannelAttachmentLastSyncAt(t *testing.T, ss store.Store) { +func testUpdateSharedChannelAttachmentLastSyncAt(t *testing.T, rctx request.CTX, ss store.Store) { attachment := &model.SharedChannelAttachment{ FileId: model.NewId(), RemoteId: model.NewId(), diff --git a/server/channels/store/storetest/status_store.go b/server/channels/store/storetest/status_store.go index 494d973b40..4f1c43c915 100644 --- a/server/channels/store/storetest/status_store.go +++ b/server/channels/store/storetest/status_store.go @@ -10,16 +10,17 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestStatusStore(t *testing.T, ss store.Store) { - t.Run("", func(t *testing.T) { testStatusStore(t, ss) }) - t.Run("ActiveUserCount", func(t *testing.T) { testActiveUserCount(t, ss) }) - t.Run("UpdateExpiredDNDStatuses", func(t *testing.T) { testUpdateExpiredDNDStatuses(t, ss) }) +func TestStatusStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("", func(t *testing.T) { testStatusStore(t, rctx, ss) }) + t.Run("ActiveUserCount", func(t *testing.T) { testActiveUserCount(t, rctx, ss) }) + t.Run("UpdateExpiredDNDStatuses", func(t *testing.T) { testUpdateExpiredDNDStatuses(t, rctx, ss) }) } -func testStatusStore(t *testing.T, ss store.Store) { +func testStatusStore(t *testing.T, rctx request.CTX, ss store.Store) { status := &model.Status{UserId: model.NewId(), Status: model.StatusOnline, Manual: false, LastActivityAt: 0, ActiveChannel: ""} require.NoError(t, ss.Status().SaveOrUpdate(status)) @@ -49,7 +50,7 @@ func testStatusStore(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testActiveUserCount(t *testing.T, ss store.Store) { +func testActiveUserCount(t *testing.T, rctx request.CTX, ss store.Store) { status := &model.Status{UserId: model.NewId(), Status: model.StatusOnline, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""} require.NoError(t, ss.Status().SaveOrUpdate(status)) @@ -64,7 +65,7 @@ func (s ByUserId) Len() int { return len(s) } func (s ByUserId) Swap(i, j int) { s[i], s[j] = s[j], s[i] } func (s ByUserId) Less(i, j int) bool { return s[i].UserId < s[j].UserId } -func testUpdateExpiredDNDStatuses(t *testing.T, ss store.Store) { +func testUpdateExpiredDNDStatuses(t *testing.T, rctx request.CTX, ss store.Store) { userID := NewTestId() status := &model.Status{UserId: userID, Status: model.StatusDnd, Manual: true, diff --git a/server/channels/store/storetest/system_store.go b/server/channels/store/storetest/system_store.go index 2513b37a59..055dec2954 100644 --- a/server/channels/store/storetest/system_store.go +++ b/server/channels/store/storetest/system_store.go @@ -11,21 +11,22 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestSystemStore(t *testing.T, ss store.Store) { - t.Run("", func(t *testing.T) { testSystemStore(t, ss) }) - t.Run("SaveOrUpdate", func(t *testing.T) { testSystemStoreSaveOrUpdate(t, ss) }) - t.Run("PermanentDeleteByName", func(t *testing.T) { testSystemStorePermanentDeleteByName(t, ss) }) +func TestSystemStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("", func(t *testing.T) { testSystemStore(t, rctx, ss) }) + t.Run("SaveOrUpdate", func(t *testing.T) { testSystemStoreSaveOrUpdate(t, rctx, ss) }) + t.Run("PermanentDeleteByName", func(t *testing.T) { testSystemStorePermanentDeleteByName(t, rctx, ss) }) t.Run("InsertIfExists", func(t *testing.T) { - testInsertIfExists(t, ss) + testInsertIfExists(t, rctx, ss) }) - t.Run("SaveOrUpdateWithWarnMetricHandling", func(t *testing.T) { testSystemStoreSaveOrUpdateWithWarnMetricHandling(t, ss) }) - t.Run("GetByNameNoEntries", func(t *testing.T) { testSystemStoreGetByNameNoEntries(t, ss) }) + t.Run("SaveOrUpdateWithWarnMetricHandling", func(t *testing.T) { testSystemStoreSaveOrUpdateWithWarnMetricHandling(t, rctx, ss) }) + t.Run("GetByNameNoEntries", func(t *testing.T) { testSystemStoreGetByNameNoEntries(t, rctx, ss) }) } -func testSystemStore(t *testing.T, ss store.Store) { +func testSystemStore(t *testing.T, rctx request.CTX, ss store.Store) { system := &model.System{Name: model.NewId(), Value: "value"} err := ss.System().Save(system) require.NoError(t, err) @@ -52,7 +53,7 @@ func testSystemStore(t *testing.T, ss store.Store) { require.Equal(t, system.Value, rsystem.Value) } -func testSystemStoreSaveOrUpdate(t *testing.T, ss store.Store) { +func testSystemStoreSaveOrUpdate(t *testing.T, rctx request.CTX, ss store.Store) { system := &model.System{Name: model.NewId(), Value: "value"} err := ss.System().SaveOrUpdate(system) @@ -72,7 +73,7 @@ func testSystemStoreSaveOrUpdate(t *testing.T, ss store.Store) { assert.Equal(t, system.Value, res.Value) } -func testSystemStoreSaveOrUpdateWithWarnMetricHandling(t *testing.T, ss store.Store) { +func testSystemStoreSaveOrUpdateWithWarnMetricHandling(t *testing.T, rctx request.CTX, ss store.Store) { system := &model.System{Name: model.NewId(), Value: "value"} err := ss.System().SaveOrUpdateWithWarnMetricHandling(system) @@ -99,7 +100,7 @@ func testSystemStoreSaveOrUpdateWithWarnMetricHandling(t *testing.T, ss store.St assert.Equal(t, val1, val2) } -func testSystemStoreGetByNameNoEntries(t *testing.T, ss store.Store) { +func testSystemStoreGetByNameNoEntries(t *testing.T, rctx request.CTX, ss store.Store) { res, nErr := ss.System().GetByName(model.SystemFirstAdminVisitMarketplace) _, ok := nErr.(*store.ErrNotFound) require.Error(t, nErr) @@ -107,7 +108,7 @@ func testSystemStoreGetByNameNoEntries(t *testing.T, ss store.Store) { assert.Nil(t, res) } -func testSystemStorePermanentDeleteByName(t *testing.T, ss store.Store) { +func testSystemStorePermanentDeleteByName(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.System{Name: model.NewId(), Value: "value"} s2 := &model.System{Name: model.NewId(), Value: "value"} @@ -141,7 +142,7 @@ func testSystemStorePermanentDeleteByName(t *testing.T, ss store.Store) { assert.Error(t, err) } -func testInsertIfExists(t *testing.T, ss store.Store) { +func testInsertIfExists(t *testing.T, rctx request.CTX, ss store.Store) { t.Run("Serial", func(t *testing.T) { s1 := &model.System{Name: model.SystemClusterEncryptionKey, Value: "somekey"} diff --git a/server/channels/store/storetest/team_store.go b/server/channels/store/storetest/team_store.go index 08e089e218..b3432bb68b 100644 --- a/server/channels/store/storetest/team_store.go +++ b/server/channels/store/storetest/team_store.go @@ -18,7 +18,7 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/store" ) -func cleanupTeamStore(t *testing.T, ss store.Store) { +func cleanupTeamStore(t *testing.T, rctx request.CTX, ss store.Store) { allTeams, err := ss.Team().GetAll() for _, team := range allTeams { ss.Team().PermanentDelete(team.Id) @@ -26,58 +26,58 @@ func cleanupTeamStore(t *testing.T, ss store.Store) { assert.NoError(t, err) } -func TestTeamStore(t *testing.T, ss store.Store) { +func TestTeamStore(t *testing.T, rctx request.CTX, ss store.Store) { createDefaultRoles(ss) - t.Run("Save", func(t *testing.T) { testTeamStoreSave(t, ss) }) - t.Run("Update", func(t *testing.T) { testTeamStoreUpdate(t, ss) }) - t.Run("Get", func(t *testing.T) { testTeamStoreGet(t, ss) }) - t.Run("GetMany", func(t *testing.T) { testTeamStoreGetMany(t, ss) }) - t.Run("GetByName", func(t *testing.T) { testTeamStoreGetByName(t, ss) }) - t.Run("GetByNames", func(t *testing.T) { testTeamStoreGetByNames(t, ss) }) - t.Run("SearchAll", func(t *testing.T) { testTeamStoreSearchAll(t, ss) }) - t.Run("SearchOpen", func(t *testing.T) { testTeamStoreSearchOpen(t, ss) }) - t.Run("SearchPrivate", func(t *testing.T) { testTeamStoreSearchPrivate(t, ss) }) - t.Run("GetByInviteId", func(t *testing.T) { testTeamStoreGetByInviteId(t, ss) }) - t.Run("ByUserId", func(t *testing.T) { testTeamStoreByUserId(t, ss) }) - t.Run("GetAllTeamListing", func(t *testing.T) { testGetAllTeamListing(t, ss) }) - t.Run("GetAllTeamPage", func(t *testing.T) { testTeamStoreGetAllPage(t, ss) }) - t.Run("GetAllTeamPageListing", func(t *testing.T) { testGetAllTeamPageListing(t, ss) }) - t.Run("GetAllPrivateTeamListing", func(t *testing.T) { testGetAllPrivateTeamListing(t, ss) }) - t.Run("GetAllPrivateTeamPageListing", func(t *testing.T) { testGetAllPrivateTeamPageListing(t, ss) }) - t.Run("GetAllPublicTeamPageListing", func(t *testing.T) { testGetAllPublicTeamPageListing(t, ss) }) - t.Run("Delete", func(t *testing.T) { testDelete(t, ss) }) - t.Run("TeamCount", func(t *testing.T) { testTeamCount(t, ss) }) - t.Run("TeamPublicCount", func(t *testing.T) { testPublicTeamCount(t, ss) }) - t.Run("TeamPrivateCount", func(t *testing.T) { testPrivateTeamCount(t, ss) }) - t.Run("TeamMembers", func(t *testing.T) { testTeamMembers(t, ss) }) - t.Run("TestGetMembers", func(t *testing.T) { testGetMembers(t, ss) }) - t.Run("SaveMember", func(t *testing.T) { testTeamSaveMember(t, ss) }) - t.Run("SaveMultipleMembers", func(t *testing.T) { testTeamSaveMultipleMembers(t, ss) }) - t.Run("UpdateMember", func(t *testing.T) { testTeamUpdateMember(t, ss) }) - t.Run("UpdateMultipleMembers", func(t *testing.T) { testTeamUpdateMultipleMembers(t, ss) }) - t.Run("RemoveMember", func(t *testing.T) { testTeamRemoveMember(t, ss) }) - t.Run("RemoveMembers", func(t *testing.T) { testTeamRemoveMembers(t, ss) }) - t.Run("SaveTeamMemberMaxMembers", func(t *testing.T) { testSaveTeamMemberMaxMembers(t, ss) }) - t.Run("GetTeamMember", func(t *testing.T) { testGetTeamMember(t, ss) }) - t.Run("GetTeamMembersByIds", func(t *testing.T) { testGetTeamMembersByIds(t, ss) }) - t.Run("MemberCount", func(t *testing.T) { testTeamStoreMemberCount(t, ss) }) - t.Run("GetChannelUnreadsForAllTeams", func(t *testing.T) { testGetChannelUnreadsForAllTeams(t, ss) }) - t.Run("GetChannelUnreadsForTeam", func(t *testing.T) { testGetChannelUnreadsForTeam(t, ss) }) - t.Run("UpdateLastTeamIconUpdate", func(t *testing.T) { testUpdateLastTeamIconUpdate(t, ss) }) - t.Run("GetTeamsByScheme", func(t *testing.T) { testGetTeamsByScheme(t, ss) }) - t.Run("MigrateTeamMembers", func(t *testing.T) { testTeamStoreMigrateTeamMembers(t, ss) }) - t.Run("ResetAllTeamSchemes", func(t *testing.T) { testResetAllTeamSchemes(t, ss) }) - t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testTeamStoreClearAllCustomRoleAssignments(t, ss) }) - t.Run("AnalyticsGetTeamCountForScheme", func(t *testing.T) { testTeamStoreAnalyticsGetTeamCountForScheme(t, ss) }) - t.Run("GetAllForExportAfter", func(t *testing.T) { testTeamStoreGetAllForExportAfter(t, ss) }) - t.Run("GetTeamMembersForExport", func(t *testing.T) { testTeamStoreGetTeamMembersForExport(t, ss) }) - t.Run("GetTeamsForUserWithPagination", func(t *testing.T) { testTeamMembersWithPagination(t, ss) }) - t.Run("GroupSyncedTeamCount", func(t *testing.T) { testGroupSyncedTeamCount(t, ss) }) - t.Run("GetCommonTeamIDsForMultipleUsers", func(t *testing.T) { testGetCommonTeamIDsForMultipleUsers(t, ss) }) + t.Run("Save", func(t *testing.T) { testTeamStoreSave(t, rctx, ss) }) + t.Run("Update", func(t *testing.T) { testTeamStoreUpdate(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testTeamStoreGet(t, rctx, ss) }) + t.Run("GetMany", func(t *testing.T) { testTeamStoreGetMany(t, rctx, ss) }) + t.Run("GetByName", func(t *testing.T) { testTeamStoreGetByName(t, rctx, ss) }) + t.Run("GetByNames", func(t *testing.T) { testTeamStoreGetByNames(t, rctx, ss) }) + t.Run("SearchAll", func(t *testing.T) { testTeamStoreSearchAll(t, rctx, ss) }) + t.Run("SearchOpen", func(t *testing.T) { testTeamStoreSearchOpen(t, rctx, ss) }) + t.Run("SearchPrivate", func(t *testing.T) { testTeamStoreSearchPrivate(t, rctx, ss) }) + t.Run("GetByInviteId", func(t *testing.T) { testTeamStoreGetByInviteId(t, rctx, ss) }) + t.Run("ByUserId", func(t *testing.T) { testTeamStoreByUserId(t, rctx, ss) }) + t.Run("GetAllTeamListing", func(t *testing.T) { testGetAllTeamListing(t, rctx, ss) }) + t.Run("GetAllTeamPage", func(t *testing.T) { testTeamStoreGetAllPage(t, rctx, ss) }) + t.Run("GetAllTeamPageListing", func(t *testing.T) { testGetAllTeamPageListing(t, rctx, ss) }) + t.Run("GetAllPrivateTeamListing", func(t *testing.T) { testGetAllPrivateTeamListing(t, rctx, ss) }) + t.Run("GetAllPrivateTeamPageListing", func(t *testing.T) { testGetAllPrivateTeamPageListing(t, rctx, ss) }) + t.Run("GetAllPublicTeamPageListing", func(t *testing.T) { testGetAllPublicTeamPageListing(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testDelete(t, rctx, ss) }) + t.Run("TeamCount", func(t *testing.T) { testTeamCount(t, rctx, ss) }) + t.Run("TeamPublicCount", func(t *testing.T) { testPublicTeamCount(t, rctx, ss) }) + t.Run("TeamPrivateCount", func(t *testing.T) { testPrivateTeamCount(t, rctx, ss) }) + t.Run("TeamMembers", func(t *testing.T) { testTeamMembers(t, rctx, ss) }) + t.Run("TestGetMembers", func(t *testing.T) { testGetMembers(t, rctx, ss) }) + t.Run("SaveMember", func(t *testing.T) { testTeamSaveMember(t, rctx, ss) }) + t.Run("SaveMultipleMembers", func(t *testing.T) { testTeamSaveMultipleMembers(t, rctx, ss) }) + t.Run("UpdateMember", func(t *testing.T) { testTeamUpdateMember(t, rctx, ss) }) + t.Run("UpdateMultipleMembers", func(t *testing.T) { testTeamUpdateMultipleMembers(t, rctx, ss) }) + t.Run("RemoveMember", func(t *testing.T) { testTeamRemoveMember(t, rctx, ss) }) + t.Run("RemoveMembers", func(t *testing.T) { testTeamRemoveMembers(t, rctx, ss) }) + t.Run("SaveTeamMemberMaxMembers", func(t *testing.T) { testSaveTeamMemberMaxMembers(t, rctx, ss) }) + t.Run("GetTeamMember", func(t *testing.T) { testGetTeamMember(t, rctx, ss) }) + t.Run("GetTeamMembersByIds", func(t *testing.T) { testGetTeamMembersByIds(t, rctx, ss) }) + t.Run("MemberCount", func(t *testing.T) { testTeamStoreMemberCount(t, rctx, ss) }) + t.Run("GetChannelUnreadsForAllTeams", func(t *testing.T) { testGetChannelUnreadsForAllTeams(t, rctx, ss) }) + t.Run("GetChannelUnreadsForTeam", func(t *testing.T) { testGetChannelUnreadsForTeam(t, rctx, ss) }) + t.Run("UpdateLastTeamIconUpdate", func(t *testing.T) { testUpdateLastTeamIconUpdate(t, rctx, ss) }) + t.Run("GetTeamsByScheme", func(t *testing.T) { testGetTeamsByScheme(t, rctx, ss) }) + t.Run("MigrateTeamMembers", func(t *testing.T) { testTeamStoreMigrateTeamMembers(t, rctx, ss) }) + t.Run("ResetAllTeamSchemes", func(t *testing.T) { testResetAllTeamSchemes(t, rctx, ss) }) + t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testTeamStoreClearAllCustomRoleAssignments(t, rctx, ss) }) + t.Run("AnalyticsGetTeamCountForScheme", func(t *testing.T) { testTeamStoreAnalyticsGetTeamCountForScheme(t, rctx, ss) }) + t.Run("GetAllForExportAfter", func(t *testing.T) { testTeamStoreGetAllForExportAfter(t, rctx, ss) }) + t.Run("GetTeamMembersForExport", func(t *testing.T) { testTeamStoreGetTeamMembersForExport(t, rctx, ss) }) + t.Run("GetTeamsForUserWithPagination", func(t *testing.T) { testTeamMembersWithPagination(t, rctx, ss) }) + t.Run("GroupSyncedTeamCount", func(t *testing.T) { testGroupSyncedTeamCount(t, rctx, ss) }) + t.Run("GetCommonTeamIDsForMultipleUsers", func(t *testing.T) { testGetCommonTeamIDsForMultipleUsers(t, rctx, ss) }) } -func testTeamStoreSave(t *testing.T, ss store.Store) { +func testTeamStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -95,7 +95,7 @@ func testTeamStoreSave(t *testing.T, ss store.Store) { require.Error(t, err, "should be unique domain") } -func testTeamStoreUpdate(t *testing.T, ss store.Store) { +func testTeamStoreUpdate(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -118,7 +118,7 @@ func testTeamStoreUpdate(t *testing.T, ss store.Store) { require.Error(t, err, "Update should have faile because id change") } -func testTeamStoreGet(t *testing.T, ss store.Store) { +func testTeamStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -135,7 +135,7 @@ func testTeamStoreGet(t *testing.T, ss store.Store) { require.Error(t, err, "Missing id should have failed") } -func testTeamStoreGetMany(t *testing.T, ss store.Store) { +func testTeamStoreGetMany(t *testing.T, rctx request.CTX, ss store.Store) { o1, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", Name: NewTestId(), @@ -166,7 +166,7 @@ func testTeamStoreGetMany(t *testing.T, ss store.Store) { assert.True(t, errors.As(err, &nfErr)) } -func testTeamStoreGetByNames(t *testing.T, ss store.Store) { +func testTeamStoreGetByNames(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -219,7 +219,7 @@ func testTeamStoreGetByNames(t *testing.T, ss store.Store) { }) } -func testTeamStoreGetByName(t *testing.T, ss store.Store) { +func testTeamStoreGetByName(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -247,8 +247,8 @@ func testTeamStoreGetByName(t *testing.T, ss store.Store) { }) } -func testTeamStoreSearchAll(t *testing.T, ss store.Store) { - cleanupTeamStore(t, ss) +func testTeamStoreSearchAll(t *testing.T, rctx request.CTX, ss store.Store) { + cleanupTeamStore(t, rctx, ss) o := model.Team{} o.DisplayName = "ADisplayName" + NewTestId() @@ -436,7 +436,7 @@ func testTeamStoreSearchAll(t *testing.T, ss store.Store) { } } -func testTeamStoreSearchOpen(t *testing.T, ss store.Store) { +func testTeamStoreSearchOpen(t *testing.T, rctx request.CTX, ss store.Store) { o := model.Team{} o.DisplayName = "ADisplayName" + NewTestId() o.Name = NewTestId() @@ -542,7 +542,7 @@ func testTeamStoreSearchOpen(t *testing.T, ss store.Store) { } } -func testTeamStoreSearchPrivate(t *testing.T, ss store.Store) { +func testTeamStoreSearchPrivate(t *testing.T, rctx request.CTX, ss store.Store) { o := model.Team{} o.DisplayName = "ADisplayName" + NewTestId() o.Name = NewTestId() @@ -648,7 +648,7 @@ func testTeamStoreSearchPrivate(t *testing.T, ss store.Store) { } } -func testTeamStoreGetByInviteId(t *testing.T, ss store.Store) { +func testTeamStoreGetByInviteId(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -667,7 +667,7 @@ func testTeamStoreGetByInviteId(t *testing.T, ss store.Store) { require.Error(t, err, "Missing id should have failed") } -func testTeamStoreByUserId(t *testing.T, ss store.Store) { +func testTeamStoreByUserId(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -687,7 +687,7 @@ func testTeamStoreByUserId(t *testing.T, ss store.Store) { require.Equal(t, teams[0].Id, o1.Id, "should be a member") } -func testTeamStoreGetAllPage(t *testing.T, ss store.Store) { +func testTeamStoreGetAllPage(t *testing.T, rctx request.CTX, ss store.Store) { o := model.Team{} o.DisplayName = "ADisplayName" + model.NewId() o.Name = "zz" + model.NewId() + "a" @@ -745,7 +745,7 @@ func testTeamStoreGetAllPage(t *testing.T, ss store.Store) { require.True(t, found) } -func testGetAllTeamListing(t *testing.T, ss store.Store) { +func testGetAllTeamListing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -789,7 +789,7 @@ func testGetAllTeamListing(t *testing.T, ss store.Store) { require.NotEmpty(t, teams, "failed team listing") } -func testGetAllTeamPageListing(t *testing.T, ss store.Store) { +func testGetAllTeamPageListing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -865,7 +865,7 @@ func testGetAllTeamPageListing(t *testing.T, ss store.Store) { require.LessOrEqual(t, len(teams), 1, "should have returned max of 1 team") } -func testGetAllPrivateTeamListing(t *testing.T, ss store.Store) { +func testGetAllPrivateTeamListing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -909,7 +909,7 @@ func testGetAllPrivateTeamListing(t *testing.T, ss store.Store) { } } -func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) { +func testGetAllPrivateTeamPageListing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -982,8 +982,8 @@ func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) { require.LessOrEqual(t, len(teams), 1, "should have returned max of 1 team") } -func testGetAllPublicTeamPageListing(t *testing.T, ss store.Store) { - cleanupTeamStore(t, ss) +func testGetAllPublicTeamPageListing(t *testing.T, rctx request.CTX, ss store.Store) { + cleanupTeamStore(t, rctx, ss) o1 := model.Team{} o1.DisplayName = "DisplayName1" @@ -1044,7 +1044,7 @@ func testGetAllPublicTeamPageListing(t *testing.T, ss store.Store) { assert.NoError(t, err) } -func testDelete(t *testing.T, ss store.Store) { +func testDelete(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -1066,8 +1066,8 @@ func testDelete(t *testing.T, ss store.Store) { require.NoError(t, r1) } -func testPublicTeamCount(t *testing.T, ss store.Store) { - cleanupTeamStore(t, ss) +func testPublicTeamCount(t *testing.T, rctx request.CTX, ss store.Store) { + cleanupTeamStore(t, rctx, ss) o1 := model.Team{} o1.DisplayName = "DisplayName" @@ -1101,8 +1101,8 @@ func testPublicTeamCount(t *testing.T, ss store.Store) { require.Equal(t, int64(2), teamCount, "should only be 1 team") } -func testPrivateTeamCount(t *testing.T, ss store.Store) { - cleanupTeamStore(t, ss) +func testPrivateTeamCount(t *testing.T, rctx request.CTX, ss store.Store) { + cleanupTeamStore(t, rctx, ss) o1 := model.Team{} o1.DisplayName = "DisplayName" @@ -1136,7 +1136,7 @@ func testPrivateTeamCount(t *testing.T, ss store.Store) { require.Equal(t, int64(2), teamCount, "should only be 1 team") } -func testTeamCount(t *testing.T, ss store.Store) { +func testTeamCount(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.Team{} o1.DisplayName = "DisplayName" o1.Name = NewTestId() @@ -1168,7 +1168,7 @@ func testTeamCount(t *testing.T, ss store.Store) { require.Equal(t, countNotIncludingDeleted+1, countIncludingDeleted) } -func testGetMembers(t *testing.T, ss store.Store) { +func testGetMembers(t *testing.T, rctx request.CTX, ss store.Store) { // Each user should have a mention count of exactly 1 in the DB at this point. t.Run("Test GetMembers Order By UserID", func(t *testing.T) { teamId1 := model.NewId() @@ -1299,9 +1299,7 @@ func testGetMembers(t *testing.T, ss store.Store) { }) } -func testTeamMembers(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testTeamMembers(t *testing.T, rctx request.CTX, ss store.Store) { teamId1 := model.NewId() teamId2 := model.NewId() @@ -1321,7 +1319,7 @@ func testTeamMembers(t *testing.T, ss store.Store) { require.Len(t, ms, 1) require.Equal(t, m3.UserId, ms[0].UserId) - ms, err = ss.Team().GetTeamsForUser(c, m1.UserId, "", true) + ms, err = ss.Team().GetTeamsForUser(rctx, m1.UserId, "", true) require.NoError(t, err) require.Len(t, ms, 1) require.Equal(t, m1.TeamId, ms[0].TeamId) @@ -1350,11 +1348,11 @@ func testTeamMembers(t *testing.T, ss store.Store) { _, nErr = ss.Team().SaveMultipleMembers([]*model.TeamMember{m4, m5}, -1) require.NoError(t, nErr) - ms, err = ss.Team().GetTeamsForUser(c, uid, "", true) + ms, err = ss.Team().GetTeamsForUser(rctx, uid, "", true) require.NoError(t, err) require.Len(t, ms, 2) - ms, err = ss.Team().GetTeamsForUser(c, uid, teamId2, true) + ms, err = ss.Team().GetTeamsForUser(rctx, uid, teamId2, true) require.NoError(t, err) require.Len(t, ms, 1) @@ -1362,23 +1360,23 @@ func testTeamMembers(t *testing.T, ss store.Store) { _, err = ss.Team().UpdateMember(m4) require.NoError(t, err) - ms, err = ss.Team().GetTeamsForUser(c, uid, "", true) + ms, err = ss.Team().GetTeamsForUser(rctx, uid, "", true) require.NoError(t, err) require.Len(t, ms, 2) - ms, err = ss.Team().GetTeamsForUser(c, uid, "", false) + ms, err = ss.Team().GetTeamsForUser(rctx, uid, "", false) require.NoError(t, err) require.Len(t, ms, 1) nErr = ss.Team().RemoveAllMembersByUser(uid) require.NoError(t, nErr) - ms, err = ss.Team().GetTeamsForUser(c, m1.UserId, "", true) + ms, err = ss.Team().GetTeamsForUser(rctx, m1.UserId, "", true) require.NoError(t, err) require.Empty(t, ms) } -func testTeamSaveMember(t *testing.T, ss store.Store) { +func testTeamSaveMember(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -1714,7 +1712,7 @@ func testTeamSaveMember(t *testing.T, ss store.Store) { }) } -func testTeamSaveMultipleMembers(t *testing.T, ss store.Store) { +func testTeamSaveMultipleMembers(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -2093,7 +2091,7 @@ func testTeamSaveMultipleMembers(t *testing.T, ss store.Store) { }) } -func testTeamUpdateMember(t *testing.T, ss store.Store) { +func testTeamUpdateMember(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) @@ -2399,7 +2397,7 @@ func testTeamUpdateMember(t *testing.T, ss store.Store) { }) } -func testTeamUpdateMultipleMembers(t *testing.T, ss store.Store) { +func testTeamUpdateMultipleMembers(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -2722,7 +2720,7 @@ func testTeamUpdateMultipleMembers(t *testing.T, ss store.Store) { }) } -func testTeamRemoveMember(t *testing.T, ss store.Store) { +func testTeamRemoveMember(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -2768,7 +2766,7 @@ func testTeamRemoveMember(t *testing.T, ss store.Store) { }) } -func testTeamRemoveMembers(t *testing.T, ss store.Store) { +func testTeamRemoveMembers(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) require.NoError(t, err) u2, err := ss.User().Save(&model.User{Username: model.NewId(), Email: MakeEmail()}) @@ -2823,7 +2821,7 @@ func testTeamRemoveMembers(t *testing.T, ss store.Store) { }) } -func testTeamMembersWithPagination(t *testing.T, ss store.Store) { +func testTeamMembersWithPagination(t *testing.T, rctx request.CTX, ss store.Store) { teamId1 := model.NewId() teamId2 := model.NewId() @@ -2873,7 +2871,7 @@ func testTeamMembersWithPagination(t *testing.T, ss store.Store) { require.Empty(t, result) } -func testSaveTeamMemberMaxMembers(t *testing.T, ss store.Store) { +func testSaveTeamMemberMaxMembers(t *testing.T, rctx request.CTX, ss store.Store) { maxUsersPerTeam := 5 team, errSave := ss.Team().Save(&model.Team{ @@ -2975,9 +2973,7 @@ func testSaveTeamMemberMaxMembers(t *testing.T, ss store.Store) { defer ss.Team().RemoveMember(team.Id, newUserId2) } -func testGetTeamMember(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testGetTeamMember(t *testing.T, rctx request.CTX, ss store.Store) { teamId1 := model.NewId() m1 := &model.TeamMember{TeamId: teamId1, UserId: model.NewId()} @@ -2985,17 +2981,17 @@ func testGetTeamMember(t *testing.T, ss store.Store) { require.NoError(t, nErr) var rm1 *model.TeamMember - rm1, err := ss.Team().GetMember(c, m1.TeamId, m1.UserId) + rm1, err := ss.Team().GetMember(rctx, m1.TeamId, m1.UserId) require.NoError(t, err) require.Equal(t, rm1.TeamId, m1.TeamId, "bad team id") require.Equal(t, rm1.UserId, m1.UserId, "bad user id") - _, err = ss.Team().GetMember(c, m1.TeamId, "") + _, err = ss.Team().GetMember(rctx, m1.TeamId, "") require.Error(t, err, "empty user id - should have failed") - _, err = ss.Team().GetMember(c, "", m1.UserId) + _, err = ss.Team().GetMember(rctx, "", m1.UserId) require.Error(t, err, "empty team id - should have failed") // Test with a custom team scheme. @@ -3025,7 +3021,7 @@ func testGetTeamMember(t *testing.T, ss store.Store) { _, nErr = ss.Team().SaveMember(m2, -1) require.NoError(t, nErr) - m3, err := ss.Team().GetMember(c, m2.TeamId, m2.UserId) + m3, err := ss.Team().GetMember(rctx, m2.TeamId, m2.UserId) require.NoError(t, err) t.Log(m3) @@ -3035,13 +3031,13 @@ func testGetTeamMember(t *testing.T, ss store.Store) { _, nErr = ss.Team().SaveMember(m4, -1) require.NoError(t, nErr) - m5, err := ss.Team().GetMember(c, m4.TeamId, m4.UserId) + m5, err := ss.Team().GetMember(rctx, m4.TeamId, m4.UserId) require.NoError(t, err) assert.Equal(t, s2.DefaultTeamGuestRole, m5.Roles) } -func testGetTeamMembersByIds(t *testing.T, ss store.Store) { +func testGetTeamMembersByIds(t *testing.T, rctx request.CTX, ss store.Store) { teamId1 := model.NewId() m1 := &model.TeamMember{TeamId: teamId1, UserId: model.NewId()} @@ -3069,7 +3065,7 @@ func testGetTeamMembersByIds(t *testing.T, ss store.Store) { require.Error(t, err, "empty user ids - should have failed") } -func testTeamStoreMemberCount(t *testing.T, ss store.Store) { +func testTeamStoreMemberCount(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{} u1.Email = MakeEmail() _, err := ss.User().Save(u1) @@ -3113,7 +3109,7 @@ func testTeamStoreMemberCount(t *testing.T, ss store.Store) { require.Equal(t, 1, int(result), "wrong count") } -func testGetChannelUnreadsForAllTeams(t *testing.T, ss store.Store) { +func testGetChannelUnreadsForAllTeams(t *testing.T, rctx request.CTX, ss store.Store) { teamId1 := model.NewId() teamId2 := model.NewId() @@ -3171,7 +3167,7 @@ func testGetChannelUnreadsForAllTeams(t *testing.T, ss store.Store) { require.NoError(t, nErr) } -func testGetChannelUnreadsForTeam(t *testing.T, ss store.Store) { +func testGetChannelUnreadsForTeam(t *testing.T, rctx request.CTX, ss store.Store) { teamId1 := model.NewId() uid := model.NewId() @@ -3201,7 +3197,7 @@ func testGetChannelUnreadsForTeam(t *testing.T, ss store.Store) { require.Equal(t, 10, int(ms[0].MsgCount), "subtraction failed") } -func testUpdateLastTeamIconUpdate(t *testing.T, ss store.Store) { +func testUpdateLastTeamIconUpdate(t *testing.T, rctx request.CTX, ss store.Store) { // team icon initially updated a second ago lastTeamIconUpdateInitial := model.GetMillis() - 1000 @@ -3225,7 +3221,7 @@ func testUpdateLastTeamIconUpdate(t *testing.T, ss store.Store) { require.Greater(t, ro1.LastTeamIconUpdate, lastTeamIconUpdateInitial, "LastTeamIconUpdate not updated") } -func testGetTeamsByScheme(t *testing.T, ss store.Store) { +func testGetTeamsByScheme(t *testing.T, rctx request.CTX, ss store.Store) { // Create some schemes. s1 := &model.Scheme{ DisplayName: NewTestId(), @@ -3295,9 +3291,7 @@ func testGetTeamsByScheme(t *testing.T, ss store.Store) { assert.Empty(t, d) } -func testTeamStoreMigrateTeamMembers(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testTeamStoreMigrateTeamMembers(t *testing.T, rctx request.CTX, ss store.Store) { s1 := model.NewId() t1 := &model.Team{ DisplayName: "Name", @@ -3347,26 +3341,26 @@ func testTeamStoreMigrateTeamMembers(t *testing.T, ss store.Store) { } } - tm1b, err := ss.Team().GetMember(c, tm1.TeamId, tm1.UserId) + tm1b, err := ss.Team().GetMember(rctx, tm1.TeamId, tm1.UserId) assert.NoError(t, err) assert.Equal(t, "", tm1b.ExplicitRoles) assert.True(t, tm1b.SchemeUser) assert.True(t, tm1b.SchemeAdmin) - tm2b, err := ss.Team().GetMember(c, tm2.TeamId, tm2.UserId) + tm2b, err := ss.Team().GetMember(rctx, tm2.TeamId, tm2.UserId) assert.NoError(t, err) assert.Equal(t, "", tm2b.ExplicitRoles) assert.True(t, tm2b.SchemeUser) assert.False(t, tm2b.SchemeAdmin) - tm3b, err := ss.Team().GetMember(c, tm3.TeamId, tm3.UserId) + tm3b, err := ss.Team().GetMember(rctx, tm3.TeamId, tm3.UserId) assert.NoError(t, err) assert.Equal(t, "something_else", tm3b.ExplicitRoles) assert.False(t, tm3b.SchemeUser) assert.False(t, tm3b.SchemeAdmin) } -func testResetAllTeamSchemes(t *testing.T, ss store.Store) { +func testResetAllTeamSchemes(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Scheme{ Name: NewTestId(), DisplayName: NewTestId(), @@ -3413,9 +3407,7 @@ func testResetAllTeamSchemes(t *testing.T, ss store.Store) { assert.Equal(t, "", *t2.SchemeId) } -func testTeamStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testTeamStoreClearAllCustomRoleAssignments(t *testing.T, rctx request.CTX, ss store.Store) { m1 := &model.TeamMember{ TeamId: model.NewId(), UserId: model.NewId(), @@ -3442,24 +3434,24 @@ func testTeamStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) { require.NoError(t, (ss.Team().ClearAllCustomRoleAssignments())) - r1, err := ss.Team().GetMember(c, m1.TeamId, m1.UserId) + r1, err := ss.Team().GetMember(rctx, m1.TeamId, m1.UserId) require.NoError(t, err) assert.Equal(t, m1.ExplicitRoles, r1.Roles) - r2, err := ss.Team().GetMember(c, m2.TeamId, m2.UserId) + r2, err := ss.Team().GetMember(rctx, m2.TeamId, m2.UserId) require.NoError(t, err) assert.Equal(t, "team_user team_admin", r2.Roles) - r3, err := ss.Team().GetMember(c, m3.TeamId, m3.UserId) + r3, err := ss.Team().GetMember(rctx, m3.TeamId, m3.UserId) require.NoError(t, err) assert.Equal(t, m3.ExplicitRoles, r3.Roles) - r4, err := ss.Team().GetMember(c, m4.TeamId, m4.UserId) + r4, err := ss.Team().GetMember(rctx, m4.TeamId, m4.UserId) require.NoError(t, err) assert.Equal(t, "", r4.Roles) } -func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { +func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, rctx request.CTX, ss store.Store) { s1 := &model.Scheme{ DisplayName: NewTestId(), Name: NewTestId(), @@ -3530,7 +3522,7 @@ func testTeamStoreAnalyticsGetTeamCountForScheme(t *testing.T, ss store.Store) { assert.Equal(t, int64(2), count5) } -func testTeamStoreGetAllForExportAfter(t *testing.T, ss store.Store) { +func testTeamStoreGetAllForExportAfter(t *testing.T, rctx request.CTX, ss store.Store) { t1 := model.Team{} t1.DisplayName = "Name" t1.Name = NewTestId() @@ -3554,7 +3546,7 @@ func testTeamStoreGetAllForExportAfter(t *testing.T, ss store.Store) { assert.True(t, found) } -func testTeamStoreGetTeamMembersForExport(t *testing.T, ss store.Store) { +func testTeamStoreGetTeamMembersForExport(t *testing.T, rctx request.CTX, ss store.Store) { t1 := model.Team{} t1.DisplayName = "Name" t1.Name = NewTestId() @@ -3591,7 +3583,7 @@ func testTeamStoreGetTeamMembersForExport(t *testing.T, ss store.Store) { assert.Equal(t, t1.Name, tmfe1.TeamName) } -func testGroupSyncedTeamCount(t *testing.T, ss store.Store) { +func testGroupSyncedTeamCount(t *testing.T, rctx request.CTX, ss store.Store) { team1, err := ss.Team().Save(&model.Team{ DisplayName: NewTestId(), Name: NewTestId(), @@ -3627,7 +3619,7 @@ func testGroupSyncedTeamCount(t *testing.T, ss store.Store) { require.GreaterOrEqual(t, countAfter, count+1) } -func testGetCommonTeamIDsForMultipleUsers(t *testing.T, ss store.Store) { +func testGetCommonTeamIDsForMultipleUsers(t *testing.T, rctx request.CTX, ss store.Store) { // Creating teams // Team 1 diff --git a/server/channels/store/storetest/terms_of_service_store.go b/server/channels/store/storetest/terms_of_service_store.go index 328e03920b..affeeff42d 100644 --- a/server/channels/store/storetest/terms_of_service_store.go +++ b/server/channels/store/storetest/terms_of_service_store.go @@ -10,13 +10,14 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestTermsOfServiceStore(t *testing.T, ss store.Store) { - t.Run("TestSaveTermsOfService", func(t *testing.T) { testSaveTermsOfService(t, ss) }) - t.Run("TestGetLatestTermsOfService", func(t *testing.T) { testGetLatestTermsOfService(t, ss) }) - t.Run("TestGetTermsOfService", func(t *testing.T) { testGetTermsOfService(t, ss) }) +func TestTermsOfServiceStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("TestSaveTermsOfService", func(t *testing.T) { testSaveTermsOfService(t, rctx, ss) }) + t.Run("TestGetLatestTermsOfService", func(t *testing.T) { testGetLatestTermsOfService(t, rctx, ss) }) + t.Run("TestGetTermsOfService", func(t *testing.T) { testGetTermsOfService(t, rctx, ss) }) } func cleanUpTOS(ss store.Store) { @@ -29,7 +30,7 @@ func cleanUpTOS(ss store.Store) { ss.DropAllTables() } -func testSaveTermsOfService(t *testing.T, ss store.Store) { +func testSaveTermsOfService(t *testing.T, rctx request.CTX, ss store.Store) { t.Cleanup(func() { cleanUpTOS(ss) }) u1 := model.User{} @@ -48,7 +49,7 @@ func testSaveTermsOfService(t *testing.T, ss store.Store) { require.NotEqual(t, savedTermsOfService.CreateAt, 0, "Create at should have been populated") } -func testGetLatestTermsOfService(t *testing.T, ss store.Store) { +func testGetLatestTermsOfService(t *testing.T, rctx request.CTX, ss store.Store) { t.Cleanup(func() { cleanUpTOS(ss) }) u1 := model.User{} @@ -68,7 +69,7 @@ func testGetLatestTermsOfService(t *testing.T, ss store.Store) { assert.Equal(t, termsOfService.UserId, fetchedTermsOfService.UserId) } -func testGetTermsOfService(t *testing.T, ss store.Store) { +func testGetTermsOfService(t *testing.T, rctx request.CTX, ss store.Store) { t.Cleanup(func() { cleanUpTOS(ss) }) u1 := model.User{} diff --git a/server/channels/store/storetest/thread_store.go b/server/channels/store/storetest/thread_store.go index d215c39ee6..a90481d90a 100644 --- a/server/channels/store/storetest/thread_store.go +++ b/server/channels/store/storetest/thread_store.go @@ -13,25 +13,26 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestThreadStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("ThreadStorePopulation", func(t *testing.T) { testThreadStorePopulation(t, ss) }) +func TestThreadStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("ThreadStorePopulation", func(t *testing.T) { testThreadStorePopulation(t, rctx, ss) }) t.Run("ThreadStorePermanentDeleteBatchForRetentionPolicies", func(t *testing.T) { - testThreadStorePermanentDeleteBatchForRetentionPolicies(t, ss) + testThreadStorePermanentDeleteBatchForRetentionPolicies(t, rctx, ss) }) t.Run("ThreadStorePermanentDeleteBatchThreadMembershipsForRetentionPolicies", func(t *testing.T) { - testThreadStorePermanentDeleteBatchThreadMembershipsForRetentionPolicies(t, ss, s) + testThreadStorePermanentDeleteBatchThreadMembershipsForRetentionPolicies(t, rctx, ss, s) }) - t.Run("GetTeamsUnreadForUser", func(t *testing.T) { testGetTeamsUnreadForUser(t, ss) }) - t.Run("GetVarious", func(t *testing.T) { testVarious(t, ss) }) - t.Run("MarkAllAsReadByChannels", func(t *testing.T) { testMarkAllAsReadByChannels(t, ss) }) - t.Run("MarkAllAsReadByTeam", func(t *testing.T) { testMarkAllAsReadByTeam(t, ss) }) - t.Run("DeleteMembershipsForChannel", func(t *testing.T) { testDeleteMembershipsForChannel(t, ss) }) + t.Run("GetTeamsUnreadForUser", func(t *testing.T) { testGetTeamsUnreadForUser(t, rctx, ss) }) + t.Run("GetVarious", func(t *testing.T) { testVarious(t, rctx, ss) }) + t.Run("MarkAllAsReadByChannels", func(t *testing.T) { testMarkAllAsReadByChannels(t, rctx, ss) }) + t.Run("MarkAllAsReadByTeam", func(t *testing.T) { testMarkAllAsReadByTeam(t, rctx, ss) }) + t.Run("DeleteMembershipsForChannel", func(t *testing.T) { testDeleteMembershipsForChannel(t, rctx, ss) }) } -func testThreadStorePopulation(t *testing.T, ss store.Store) { +func testThreadStorePopulation(t *testing.T, rctx request.CTX, ss store.Store) { makeSomePosts := func(urgent bool) []*model.Post { u1 := model.User{ Email: MakeEmail(), @@ -490,7 +491,7 @@ func threadStoreCreateReply(t *testing.T, ss store.Store, channelID, postID, use return reply } -func testThreadStorePermanentDeleteBatchForRetentionPolicies(t *testing.T, ss store.Store) { +func testThreadStorePermanentDeleteBatchForRetentionPolicies(t *testing.T, rctx request.CTX, ss store.Store) { const limit = 1000 team, err := ss.Team().Save(&model.Team{ DisplayName: "DisplayName", @@ -564,7 +565,7 @@ func testThreadStorePermanentDeleteBatchForRetentionPolicies(t *testing.T, ss st assert.Nil(t, thread, "thread should have been deleted by team policy") } -func testThreadStorePermanentDeleteBatchThreadMembershipsForRetentionPolicies(t *testing.T, ss store.Store, s SqlStore) { +func testThreadStorePermanentDeleteBatchThreadMembershipsForRetentionPolicies(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { const limit = 1000 userID := model.NewId() createThreadMembership := func(userID, postID string) *model.ThreadMembership { @@ -662,7 +663,7 @@ func testThreadStorePermanentDeleteBatchThreadMembershipsForRetentionPolicies(t require.Error(t, err, "thread membership should have been deleted because thread no longer exists") } -func testGetTeamsUnreadForUser(t *testing.T, ss store.Store) { +func testGetTeamsUnreadForUser(t *testing.T, rctx request.CTX, ss store.Store) { userID := model.NewId() createThreadMembership := func(userID, postID string) { t.Helper() @@ -776,7 +777,7 @@ func (a byPostId) Len() int { return len(a) } func (a byPostId) Swap(i, j int) { a[i], a[j] = a[j], a[i] } func (a byPostId) Less(i, j int) bool { return a[i].Id < a[j].Id } -func testVarious(t *testing.T, ss store.Store) { +func testVarious(t *testing.T, rctx request.CTX, ss store.Store) { createThreadMembership := func(userID, postID string, isMention bool) { t.Helper() @@ -1203,7 +1204,7 @@ func testVarious(t *testing.T, ss store.Store) { }) } -func testMarkAllAsReadByChannels(t *testing.T, ss store.Store) { +func testMarkAllAsReadByChannels(t *testing.T, rctx request.CTX, ss store.Store) { postingUserId := model.NewId() userAID := model.NewId() userBID := model.NewId() @@ -1347,7 +1348,7 @@ func testMarkAllAsReadByChannels(t *testing.T, ss store.Store) { }) } -func testMarkAllAsReadByTeam(t *testing.T, ss store.Store) { +func testMarkAllAsReadByTeam(t *testing.T, rctx request.CTX, ss store.Store) { createThreadMembership := func(userID, postID string) { t.Helper() opts := store.ThreadMembershipOpts{ @@ -1573,7 +1574,7 @@ func testMarkAllAsReadByTeam(t *testing.T, ss store.Store) { }) } -func testDeleteMembershipsForChannel(t *testing.T, ss store.Store) { +func testDeleteMembershipsForChannel(t *testing.T, rctx request.CTX, ss store.Store) { createThreadMembership := func(userID, postID string) (*model.ThreadMembership, func()) { t.Helper() opts := store.ThreadMembershipOpts{ diff --git a/server/channels/store/storetest/tokens_store.go b/server/channels/store/storetest/tokens_store.go index 26d6de7a46..931f574111 100644 --- a/server/channels/store/storetest/tokens_store.go +++ b/server/channels/store/storetest/tokens_store.go @@ -10,14 +10,15 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestTokensStore(t *testing.T, ss store.Store) { - t.Run("TokensCleanup", func(t *testing.T) { testTokensCleanup(t, ss) }) +func TestTokensStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("TokensCleanup", func(t *testing.T) { testTokensCleanup(t, rctx, ss) }) } -func testTokensCleanup(t *testing.T, ss store.Store) { +func testTokensCleanup(t *testing.T, rctx request.CTX, ss store.Store) { now := model.GetMillis() for i := 0; i < 10; i++ { diff --git a/server/channels/store/storetest/true_up_review_store.go b/server/channels/store/storetest/true_up_review_store.go index e48e7c6ea9..2d4756128b 100644 --- a/server/channels/store/storetest/true_up_review_store.go +++ b/server/channels/store/storetest/true_up_review_store.go @@ -10,17 +10,18 @@ import ( "github.com/stretchr/testify/assert" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" "github.com/mattermost/mattermost/server/v8/channels/utils" ) -func TestTrueUpReviewStatusStore(t *testing.T, ss store.Store, s SqlStore) { - t.Run("CreateTrueUpReviewStatusRecord", func(t *testing.T) { testCreateTrueUpReviewStatus(t, ss) }) - t.Run("GetTrueUpReviewStatus", func(t *testing.T) { testGetTrueUpReviewStatus(t, ss) }) - t.Run("Update", func(t *testing.T) { testUpdateTrueUpReviewStatus(t, ss) }) +func TestTrueUpReviewStatusStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { + t.Run("CreateTrueUpReviewStatusRecord", func(t *testing.T) { testCreateTrueUpReviewStatus(t, rctx, ss) }) + t.Run("GetTrueUpReviewStatus", func(t *testing.T) { testGetTrueUpReviewStatus(t, rctx, ss) }) + t.Run("Update", func(t *testing.T) { testUpdateTrueUpReviewStatus(t, rctx, ss) }) } -func testCreateTrueUpReviewStatus(t *testing.T, ss store.Store) { +func testCreateTrueUpReviewStatus(t *testing.T, rctx request.CTX, ss store.Store) { now := time.Date(time.Now().Year(), time.January, 1, 0, 0, 0, 0, time.Local) reviewStatus := model.TrueUpReviewStatus{ @@ -37,7 +38,7 @@ func testCreateTrueUpReviewStatus(t *testing.T, ss store.Store) { }) } -func testGetTrueUpReviewStatus(t *testing.T, ss store.Store) { +func testGetTrueUpReviewStatus(t *testing.T, rctx request.CTX, ss store.Store) { now := time.Date(time.Now().Year(), time.August, 1, 0, 0, 0, 0, time.Local) dueDate := utils.GetNextTrueUpReviewDueDate(now).UnixMilli() @@ -58,7 +59,7 @@ func testGetTrueUpReviewStatus(t *testing.T, ss store.Store) { }) } -func testUpdateTrueUpReviewStatus(t *testing.T, ss store.Store) { +func testUpdateTrueUpReviewStatus(t *testing.T, rctx request.CTX, ss store.Store) { now := time.Date(time.Now().Year(), time.April, 1, 0, 0, 0, 0, time.Local) reviewStatus := model.TrueUpReviewStatus{ diff --git a/server/channels/store/storetest/upload_session_store.go b/server/channels/store/storetest/upload_session_store.go index accb0b0e38..b2eb645f8c 100644 --- a/server/channels/store/storetest/upload_session_store.go +++ b/server/channels/store/storetest/upload_session_store.go @@ -14,16 +14,14 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestUploadSessionStore(t *testing.T, ss store.Store) { - t.Run("UploadSessionStoreSaveGet", func(t *testing.T) { testUploadSessionStoreSaveGet(t, ss) }) - t.Run("UploadSessionStoreUpdate", func(t *testing.T) { testUploadSessionStoreUpdate(t, ss) }) - t.Run("UploadSessionStoreGetForUser", func(t *testing.T) { testUploadSessionStoreGetForUser(t, ss) }) - t.Run("UploadSessionStoreDelete", func(t *testing.T) { testUploadSessionStoreDelete(t, ss) }) +func TestUploadSessionStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("UploadSessionStoreSaveGet", func(t *testing.T) { testUploadSessionStoreSaveGet(t, rctx, ss) }) + t.Run("UploadSessionStoreUpdate", func(t *testing.T) { testUploadSessionStoreUpdate(t, rctx, ss) }) + t.Run("UploadSessionStoreGetForUser", func(t *testing.T) { testUploadSessionStoreGetForUser(t, rctx, ss) }) + t.Run("UploadSessionStoreDelete", func(t *testing.T) { testUploadSessionStoreDelete(t, rctx, ss) }) } -func testUploadSessionStoreSaveGet(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUploadSessionStoreSaveGet(t *testing.T, rctx request.CTX, ss store.Store) { var session *model.UploadSession t.Run("saving nil session should fail", func(t *testing.T) { @@ -55,22 +53,20 @@ func testUploadSessionStoreSaveGet(t *testing.T, ss store.Store) { }) t.Run("getting non-existing session should fail", func(t *testing.T) { - us, err := ss.UploadSession().Get(c, "fake") + us, err := ss.UploadSession().Get(rctx, "fake") require.Error(t, err) require.Nil(t, us) }) t.Run("getting existing session should succeed", func(t *testing.T) { - us, err := ss.UploadSession().Get(c, session.Id) + us, err := ss.UploadSession().Get(rctx, session.Id) require.NoError(t, err) require.NotNil(t, us) require.Equal(t, session, us) }) } -func testUploadSessionStoreUpdate(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUploadSessionStoreUpdate(t *testing.T, rctx request.CTX, ss store.Store) { session := &model.UploadSession{ Type: model.UploadTypeAttachment, UserId: model.NewId(), @@ -105,14 +101,14 @@ func testUploadSessionStoreUpdate(t *testing.T, ss store.Store) { err = ss.UploadSession().Update(us) require.NoError(t, err) - updated, err := ss.UploadSession().Get(c, us.Id) + updated, err := ss.UploadSession().Get(rctx, us.Id) require.NoError(t, err) require.NotNil(t, us) require.Equal(t, us, updated) }) } -func testUploadSessionStoreGetForUser(t *testing.T, ss store.Store) { +func testUploadSessionStoreGetForUser(t *testing.T, rctx request.CTX, ss store.Store) { userId := model.NewId() sessions := []*model.UploadSession{ @@ -179,9 +175,7 @@ func testUploadSessionStoreGetForUser(t *testing.T, ss store.Store) { }) } -func testUploadSessionStoreDelete(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUploadSessionStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { session := &model.UploadSession{ Id: model.NewId(), Type: model.UploadTypeAttachment, @@ -206,7 +200,7 @@ func testUploadSessionStoreDelete(t *testing.T, ss store.Store) { err = ss.UploadSession().Delete(session.Id) require.NoError(t, err) - us, err = ss.UploadSession().Get(c, us.Id) + us, err = ss.UploadSession().Get(rctx, us.Id) require.Error(t, err) require.Nil(t, us) require.IsType(t, &store.ErrNotFound{}, err) diff --git a/server/channels/store/storetest/user_access_token_store.go b/server/channels/store/storetest/user_access_token_store.go index a3aed42617..7855fef966 100644 --- a/server/channels/store/storetest/user_access_token_store.go +++ b/server/channels/store/storetest/user_access_token_store.go @@ -13,15 +13,13 @@ import ( "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestUserAccessTokenStore(t *testing.T, ss store.Store) { - t.Run("UserAccessTokenSaveGetDelete", func(t *testing.T) { testUserAccessTokenSaveGetDelete(t, ss) }) - t.Run("UserAccessTokenDisableEnable", func(t *testing.T) { testUserAccessTokenDisableEnable(t, ss) }) - t.Run("UserAccessTokenSearch", func(t *testing.T) { testUserAccessTokenSearch(t, ss) }) +func TestUserAccessTokenStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("UserAccessTokenSaveGetDelete", func(t *testing.T) { testUserAccessTokenSaveGetDelete(t, rctx, ss) }) + t.Run("UserAccessTokenDisableEnable", func(t *testing.T) { testUserAccessTokenDisableEnable(t, rctx, ss) }) + t.Run("UserAccessTokenSearch", func(t *testing.T) { testUserAccessTokenSearch(t, rctx, ss) }) } -func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUserAccessTokenSaveGetDelete(t *testing.T, rctx request.CTX, ss store.Store) { uat := &model.UserAccessToken{ Token: model.NewId(), UserId: model.NewId(), @@ -32,7 +30,7 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { s1.UserId = uat.UserId s1.Token = uat.Token - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) _, nErr := ss.UserAccessToken().Save(uat) @@ -60,7 +58,7 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { nErr = ss.UserAccessToken().Delete(uat.Id) require.NoError(t, nErr) - _, err = ss.Session().Get(c, s1.Token) + _, err = ss.Session().Get(rctx, s1.Token) require.Error(t, err, "should error - session should be deleted") _, nErr = ss.UserAccessToken().GetByToken(s1.Token) @@ -70,7 +68,7 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { s2.UserId = uat.UserId s2.Token = uat.Token - s2, err = ss.Session().Save(c, s2) + s2, err = ss.Session().Save(rctx, s2) require.NoError(t, err) _, nErr = ss.UserAccessToken().Save(uat) @@ -79,16 +77,14 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { nErr = ss.UserAccessToken().DeleteAllForUser(uat.UserId) require.NoError(t, nErr) - _, err = ss.Session().Get(c, s2.Token) + _, err = ss.Session().Get(rctx, s2.Token) require.Error(t, err, "should error - session should be deleted") _, nErr = ss.UserAccessToken().GetByToken(s2.Token) require.Error(t, nErr, "should error - access token should be deleted") } -func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUserAccessTokenDisableEnable(t *testing.T, rctx request.CTX, ss store.Store) { uat := &model.UserAccessToken{ Token: model.NewId(), UserId: model.NewId(), @@ -99,7 +95,7 @@ func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) { s1.UserId = uat.UserId s1.Token = uat.Token - s1, err := ss.Session().Save(c, s1) + s1, err := ss.Session().Save(rctx, s1) require.NoError(t, err) _, nErr := ss.UserAccessToken().Save(uat) @@ -108,23 +104,21 @@ func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) { nErr = ss.UserAccessToken().UpdateTokenDisable(uat.Id) require.NoError(t, nErr) - _, err = ss.Session().Get(c, s1.Token) + _, err = ss.Session().Get(rctx, s1.Token) require.Error(t, err, "should error - session should be deleted") s2 := &model.Session{} s2.UserId = uat.UserId s2.Token = uat.Token - _, err = ss.Session().Save(c, s2) + _, err = ss.Session().Save(rctx, s2) require.NoError(t, err) nErr = ss.UserAccessToken().UpdateTokenEnable(uat.Id) require.NoError(t, nErr) } -func testUserAccessTokenSearch(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUserAccessTokenSearch(t *testing.T, rctx request.CTX, ss store.Store) { u1 := model.User{} u1.Email = MakeEmail() u1.Username = model.NewId() @@ -142,7 +136,7 @@ func testUserAccessTokenSearch(t *testing.T, ss store.Store) { s1.UserId = uat.UserId s1.Token = uat.Token - _, nErr := ss.Session().Save(c, s1) + _, nErr := ss.Session().Save(rctx, s1) require.NoError(t, nErr) _, nErr = ss.UserAccessToken().Save(uat) diff --git a/server/channels/store/storetest/user_store.go b/server/channels/store/storetest/user_store.go index 1ef6601ab0..dc45871e8a 100644 --- a/server/channels/store/storetest/user_store.go +++ b/server/channels/store/storetest/user_store.go @@ -28,7 +28,7 @@ func cleanupStatusStore(t *testing.T, s SqlStore) { require.NoError(t, execerr) } -func TestUserStore(t *testing.T, ss store.Store, s SqlStore) { +func TestUserStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { users, err := ss.User().GetAll() require.NoError(t, err, "failed cleaning up test users") @@ -37,68 +37,68 @@ func TestUserStore(t *testing.T, ss store.Store, s SqlStore) { require.NoError(t, err, "failed cleaning up test user %s", u.Username) } - t.Run("IsEmpty", func(t *testing.T) { testIsEmpty(t, ss) }) - t.Run("Count", func(t *testing.T) { testCount(t, ss) }) - t.Run("AnalyticsActiveCount", func(t *testing.T) { testUserStoreAnalyticsActiveCount(t, ss, s) }) - t.Run("AnalyticsActiveCountForPeriod", func(t *testing.T) { testUserStoreAnalyticsActiveCountForPeriod(t, ss, s) }) - t.Run("AnalyticsGetInactiveUsersCount", func(t *testing.T) { testUserStoreAnalyticsGetInactiveUsersCount(t, ss) }) - t.Run("AnalyticsGetSystemAdminCount", func(t *testing.T) { testUserStoreAnalyticsGetSystemAdminCount(t, ss) }) - t.Run("AnalyticsGetGuestCount", func(t *testing.T) { testUserStoreAnalyticsGetGuestCount(t, ss) }) - t.Run("AnalyticsGetExternalUsers", func(t *testing.T) { testUserStoreAnalyticsGetExternalUsers(t, ss) }) - t.Run("Save", func(t *testing.T) { testUserStoreSave(t, ss) }) - t.Run("Update", func(t *testing.T) { testUserStoreUpdate(t, ss) }) - t.Run("UpdateUpdateAt", func(t *testing.T) { testUserStoreUpdateUpdateAt(t, ss) }) - t.Run("UpdateFailedPasswordAttempts", func(t *testing.T) { testUserStoreUpdateFailedPasswordAttempts(t, ss) }) - t.Run("Get", func(t *testing.T) { testUserStoreGet(t, ss) }) - t.Run("GetAllUsingAuthService", func(t *testing.T) { testGetAllUsingAuthService(t, ss) }) - t.Run("GetAllProfiles", func(t *testing.T) { testUserStoreGetAllProfiles(t, ss) }) - t.Run("GetProfiles", func(t *testing.T) { testUserStoreGetProfiles(t, ss) }) - t.Run("GetProfilesInChannel", func(t *testing.T) { testUserStoreGetProfilesInChannel(t, ss) }) - t.Run("GetProfilesInChannelByStatus", func(t *testing.T) { testUserStoreGetProfilesInChannelByStatus(t, ss, s) }) - t.Run("GetProfilesInChannelByAdmin", func(t *testing.T) { testUserStoreGetProfilesInChannelByAdmin(t, ss, s) }) - t.Run("GetProfilesWithoutTeam", func(t *testing.T) { testUserStoreGetProfilesWithoutTeam(t, ss) }) - t.Run("GetAllProfilesInChannel", func(t *testing.T) { testUserStoreGetAllProfilesInChannel(t, ss) }) - t.Run("GetProfilesNotInChannel", func(t *testing.T) { testUserStoreGetProfilesNotInChannel(t, ss) }) - t.Run("GetProfilesByIds", func(t *testing.T) { testUserStoreGetProfilesByIds(t, ss) }) - t.Run("GetProfileByGroupChannelIdsForUser", func(t *testing.T) { testUserStoreGetProfileByGroupChannelIdsForUser(t, ss) }) - t.Run("GetProfilesByUsernames", func(t *testing.T) { testUserStoreGetProfilesByUsernames(t, ss) }) - t.Run("GetSystemAdminProfiles", func(t *testing.T) { testUserStoreGetSystemAdminProfiles(t, ss) }) - t.Run("GetByEmail", func(t *testing.T) { testUserStoreGetByEmail(t, ss) }) - t.Run("GetByAuthData", func(t *testing.T) { testUserStoreGetByAuthData(t, ss) }) - t.Run("GetByUsername", func(t *testing.T) { testUserStoreGetByUsername(t, ss) }) - t.Run("GetForLogin", func(t *testing.T) { testUserStoreGetForLogin(t, ss) }) - t.Run("UpdatePassword", func(t *testing.T) { testUserStoreUpdatePassword(t, ss) }) - t.Run("Delete", func(t *testing.T) { testUserStoreDelete(t, ss) }) - t.Run("UpdateAuthData", func(t *testing.T) { testUserStoreUpdateAuthData(t, ss) }) - t.Run("ResetAuthDataToEmailForUsers", func(t *testing.T) { testUserStoreResetAuthDataToEmailForUsers(t, ss) }) - t.Run("UserUnreadCount", func(t *testing.T) { testUserUnreadCount(t, ss) }) - t.Run("UpdateMfaSecret", func(t *testing.T) { testUserStoreUpdateMfaSecret(t, ss) }) - t.Run("UpdateMfaActive", func(t *testing.T) { testUserStoreUpdateMfaActive(t, ss) }) - t.Run("GetRecentlyActiveUsersForTeam", func(t *testing.T) { testUserStoreGetRecentlyActiveUsersForTeam(t, ss, s) }) - t.Run("GetNewUsersForTeam", func(t *testing.T) { testUserStoreGetNewUsersForTeam(t, ss) }) - t.Run("Search", func(t *testing.T) { testUserStoreSearch(t, ss) }) - t.Run("SearchNotInChannel", func(t *testing.T) { testUserStoreSearchNotInChannel(t, ss) }) - t.Run("SearchInChannel", func(t *testing.T) { testUserStoreSearchInChannel(t, ss) }) - t.Run("SearchNotInTeam", func(t *testing.T) { testUserStoreSearchNotInTeam(t, ss) }) - t.Run("SearchWithoutTeam", func(t *testing.T) { testUserStoreSearchWithoutTeam(t, ss) }) - t.Run("SearchInGroup", func(t *testing.T) { testUserStoreSearchInGroup(t, ss) }) - t.Run("SearchNotInGroup", func(t *testing.T) { testUserStoreSearchNotInGroup(t, ss) }) - t.Run("GetProfilesNotInTeam", func(t *testing.T) { testUserStoreGetProfilesNotInTeam(t, ss) }) - t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testUserStoreClearAllCustomRoleAssignments(t, ss) }) - t.Run("GetAllAfter", func(t *testing.T) { testUserStoreGetAllAfter(t, ss) }) - t.Run("GetUsersBatchForIndexing", func(t *testing.T) { testUserStoreGetUsersBatchForIndexing(t, ss) }) - t.Run("GetTeamGroupUsers", func(t *testing.T) { testUserStoreGetTeamGroupUsers(t, ss) }) - t.Run("GetChannelGroupUsers", func(t *testing.T) { testUserStoreGetChannelGroupUsers(t, ss) }) - t.Run("PromoteGuestToUser", func(t *testing.T) { testUserStorePromoteGuestToUser(t, ss) }) - t.Run("DemoteUserToGuest", func(t *testing.T) { testUserStoreDemoteUserToGuest(t, ss) }) - t.Run("DeactivateGuests", func(t *testing.T) { testDeactivateGuests(t, ss) }) - t.Run("ResetLastPictureUpdate", func(t *testing.T) { testUserStoreResetLastPictureUpdate(t, ss) }) - t.Run("GetKnownUsers", func(t *testing.T) { testGetKnownUsers(t, ss) }) - t.Run("GetUsersWithInvalidEmails", func(t *testing.T) { testGetUsersWithInvalidEmails(t, ss) }) - t.Run("UpdateLastLogin", func(t *testing.T) { testUpdateLastLogin(t, ss) }) + t.Run("IsEmpty", func(t *testing.T) { testIsEmpty(t, rctx, ss) }) + t.Run("Count", func(t *testing.T) { testCount(t, rctx, ss) }) + t.Run("AnalyticsActiveCount", func(t *testing.T) { testUserStoreAnalyticsActiveCount(t, rctx, ss, s) }) + t.Run("AnalyticsActiveCountForPeriod", func(t *testing.T) { testUserStoreAnalyticsActiveCountForPeriod(t, rctx, ss, s) }) + t.Run("AnalyticsGetInactiveUsersCount", func(t *testing.T) { testUserStoreAnalyticsGetInactiveUsersCount(t, rctx, ss) }) + t.Run("AnalyticsGetSystemAdminCount", func(t *testing.T) { testUserStoreAnalyticsGetSystemAdminCount(t, rctx, ss) }) + t.Run("AnalyticsGetGuestCount", func(t *testing.T) { testUserStoreAnalyticsGetGuestCount(t, rctx, ss) }) + t.Run("AnalyticsGetExternalUsers", func(t *testing.T) { testUserStoreAnalyticsGetExternalUsers(t, rctx, ss) }) + t.Run("Save", func(t *testing.T) { testUserStoreSave(t, rctx, ss) }) + t.Run("Update", func(t *testing.T) { testUserStoreUpdate(t, rctx, ss) }) + t.Run("UpdateUpdateAt", func(t *testing.T) { testUserStoreUpdateUpdateAt(t, rctx, ss) }) + t.Run("UpdateFailedPasswordAttempts", func(t *testing.T) { testUserStoreUpdateFailedPasswordAttempts(t, rctx, ss) }) + t.Run("Get", func(t *testing.T) { testUserStoreGet(t, rctx, ss) }) + t.Run("GetAllUsingAuthService", func(t *testing.T) { testGetAllUsingAuthService(t, rctx, ss) }) + t.Run("GetAllProfiles", func(t *testing.T) { testUserStoreGetAllProfiles(t, rctx, ss) }) + t.Run("GetProfiles", func(t *testing.T) { testUserStoreGetProfiles(t, rctx, ss) }) + t.Run("GetProfilesInChannel", func(t *testing.T) { testUserStoreGetProfilesInChannel(t, rctx, ss) }) + t.Run("GetProfilesInChannelByStatus", func(t *testing.T) { testUserStoreGetProfilesInChannelByStatus(t, rctx, ss, s) }) + t.Run("GetProfilesInChannelByAdmin", func(t *testing.T) { testUserStoreGetProfilesInChannelByAdmin(t, rctx, ss, s) }) + t.Run("GetProfilesWithoutTeam", func(t *testing.T) { testUserStoreGetProfilesWithoutTeam(t, rctx, ss) }) + t.Run("GetAllProfilesInChannel", func(t *testing.T) { testUserStoreGetAllProfilesInChannel(t, rctx, ss) }) + t.Run("GetProfilesNotInChannel", func(t *testing.T) { testUserStoreGetProfilesNotInChannel(t, rctx, ss) }) + t.Run("GetProfilesByIds", func(t *testing.T) { testUserStoreGetProfilesByIds(t, rctx, ss) }) + t.Run("GetProfileByGroupChannelIdsForUser", func(t *testing.T) { testUserStoreGetProfileByGroupChannelIdsForUser(t, rctx, ss) }) + t.Run("GetProfilesByUsernames", func(t *testing.T) { testUserStoreGetProfilesByUsernames(t, rctx, ss) }) + t.Run("GetSystemAdminProfiles", func(t *testing.T) { testUserStoreGetSystemAdminProfiles(t, rctx, ss) }) + t.Run("GetByEmail", func(t *testing.T) { testUserStoreGetByEmail(t, rctx, ss) }) + t.Run("GetByAuthData", func(t *testing.T) { testUserStoreGetByAuthData(t, rctx, ss) }) + t.Run("GetByUsername", func(t *testing.T) { testUserStoreGetByUsername(t, rctx, ss) }) + t.Run("GetForLogin", func(t *testing.T) { testUserStoreGetForLogin(t, rctx, ss) }) + t.Run("UpdatePassword", func(t *testing.T) { testUserStoreUpdatePassword(t, rctx, ss) }) + t.Run("Delete", func(t *testing.T) { testUserStoreDelete(t, rctx, ss) }) + t.Run("UpdateAuthData", func(t *testing.T) { testUserStoreUpdateAuthData(t, rctx, ss) }) + t.Run("ResetAuthDataToEmailForUsers", func(t *testing.T) { testUserStoreResetAuthDataToEmailForUsers(t, rctx, ss) }) + t.Run("UserUnreadCount", func(t *testing.T) { testUserUnreadCount(t, rctx, ss) }) + t.Run("UpdateMfaSecret", func(t *testing.T) { testUserStoreUpdateMfaSecret(t, rctx, ss) }) + t.Run("UpdateMfaActive", func(t *testing.T) { testUserStoreUpdateMfaActive(t, rctx, ss) }) + t.Run("GetRecentlyActiveUsersForTeam", func(t *testing.T) { testUserStoreGetRecentlyActiveUsersForTeam(t, rctx, ss, s) }) + t.Run("GetNewUsersForTeam", func(t *testing.T) { testUserStoreGetNewUsersForTeam(t, rctx, ss) }) + t.Run("Search", func(t *testing.T) { testUserStoreSearch(t, rctx, ss) }) + t.Run("SearchNotInChannel", func(t *testing.T) { testUserStoreSearchNotInChannel(t, rctx, ss) }) + t.Run("SearchInChannel", func(t *testing.T) { testUserStoreSearchInChannel(t, rctx, ss) }) + t.Run("SearchNotInTeam", func(t *testing.T) { testUserStoreSearchNotInTeam(t, rctx, ss) }) + t.Run("SearchWithoutTeam", func(t *testing.T) { testUserStoreSearchWithoutTeam(t, rctx, ss) }) + t.Run("SearchInGroup", func(t *testing.T) { testUserStoreSearchInGroup(t, rctx, ss) }) + t.Run("SearchNotInGroup", func(t *testing.T) { testUserStoreSearchNotInGroup(t, rctx, ss) }) + t.Run("GetProfilesNotInTeam", func(t *testing.T) { testUserStoreGetProfilesNotInTeam(t, rctx, ss) }) + t.Run("ClearAllCustomRoleAssignments", func(t *testing.T) { testUserStoreClearAllCustomRoleAssignments(t, rctx, ss) }) + t.Run("GetAllAfter", func(t *testing.T) { testUserStoreGetAllAfter(t, rctx, ss) }) + t.Run("GetUsersBatchForIndexing", func(t *testing.T) { testUserStoreGetUsersBatchForIndexing(t, rctx, ss) }) + t.Run("GetTeamGroupUsers", func(t *testing.T) { testUserStoreGetTeamGroupUsers(t, rctx, ss) }) + t.Run("GetChannelGroupUsers", func(t *testing.T) { testUserStoreGetChannelGroupUsers(t, rctx, ss) }) + t.Run("PromoteGuestToUser", func(t *testing.T) { testUserStorePromoteGuestToUser(t, rctx, ss) }) + t.Run("DemoteUserToGuest", func(t *testing.T) { testUserStoreDemoteUserToGuest(t, rctx, ss) }) + t.Run("DeactivateGuests", func(t *testing.T) { testDeactivateGuests(t, rctx, ss) }) + t.Run("ResetLastPictureUpdate", func(t *testing.T) { testUserStoreResetLastPictureUpdate(t, rctx, ss) }) + t.Run("GetKnownUsers", func(t *testing.T) { testGetKnownUsers(t, rctx, ss) }) + t.Run("GetUsersWithInvalidEmails", func(t *testing.T) { testGetUsersWithInvalidEmails(t, rctx, ss) }) + t.Run("UpdateLastLogin", func(t *testing.T) { testUpdateLastLogin(t, rctx, ss) }) } -func testUserStoreSave(t *testing.T, ss store.Store) { +func testUserStoreSave(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() maxUsersPerTeam := 50 @@ -170,7 +170,7 @@ func testUserStoreSave(t *testing.T, ss store.Store) { require.Error(t, nErr, "should be the limit") } -func testUserStoreUpdate(t *testing.T, ss store.Store) { +func testUserStoreUpdate(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Email: MakeEmail(), } @@ -260,7 +260,7 @@ func testUserStoreUpdate(t *testing.T, ss store.Store) { require.Error(t, err, "auto responder message size should not be greater than maxPostSize") } -func testUserStoreUpdateUpdateAt(t *testing.T, ss store.Store) { +func testUserStoreUpdateUpdateAt(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{} u1.Email = MakeEmail() _, err := ss.User().Save(u1) @@ -280,7 +280,7 @@ func testUserStoreUpdateUpdateAt(t *testing.T, ss store.Store) { require.Less(t, u1.UpdateAt, user.UpdateAt, "UpdateAt not updated correctly") } -func testUserStoreUpdateFailedPasswordAttempts(t *testing.T, ss store.Store) { +func testUserStoreUpdateFailedPasswordAttempts(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{} u1.Email = MakeEmail() _, err := ss.User().Save(u1) @@ -297,7 +297,7 @@ func testUserStoreUpdateFailedPasswordAttempts(t *testing.T, ss store.Store) { require.Equal(t, 3, user.FailedAttempts, "FailedAttempts not updated correctly") } -func testUserStoreGet(t *testing.T, ss store.Store) { +func testUserStoreGet(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Email: MakeEmail(), } @@ -345,7 +345,7 @@ func testUserStoreGet(t *testing.T, ss store.Store) { }) } -func testGetAllUsingAuthService(t *testing.T, ss store.Store) { +func testGetAllUsingAuthService(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -413,7 +413,7 @@ func sanitized(user *model.User) *model.User { return clonedUser } -func testUserStoreGetAllProfiles(t *testing.T, ss store.Store) { +func testUserStoreGetAllProfiles(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{ Email: MakeEmail(), Username: "u1" + model.NewId(), @@ -673,7 +673,7 @@ func testUserStoreGetAllProfiles(t *testing.T, ss store.Store) { }) } -func testUserStoreGetProfiles(t *testing.T, ss store.Store) { +func testUserStoreGetProfiles(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -842,7 +842,7 @@ func testUserStoreGetProfiles(t *testing.T, ss store.Store) { }) } -func testUserStoreGetProfilesInChannel(t *testing.T, ss store.Store) { +func testUserStoreGetProfilesInChannel(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -1036,7 +1036,7 @@ func testUserStoreGetProfilesInChannel(t *testing.T, ss store.Store) { }) } -func testUserStoreGetProfilesInChannelByAdmin(t *testing.T, ss store.Store, s SqlStore) { +func testUserStoreGetProfilesInChannelByAdmin(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { cleanupStatusStore(t, s) teamId := model.NewId() @@ -1114,7 +1114,7 @@ func testUserStoreGetProfilesInChannelByAdmin(t *testing.T, ss store.Store, s Sq }) } -func testUserStoreGetProfilesInChannelByStatus(t *testing.T, ss store.Store, s SqlStore) { +func testUserStoreGetProfilesInChannelByStatus(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { cleanupStatusStore(t, s) teamId := model.NewId() @@ -1275,7 +1275,7 @@ func testUserStoreGetProfilesInChannelByStatus(t *testing.T, ss store.Store, s S }) } -func testUserStoreGetProfilesWithoutTeam(t *testing.T, ss store.Store) { +func testUserStoreGetProfilesWithoutTeam(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -1342,7 +1342,7 @@ func testUserStoreGetProfilesWithoutTeam(t *testing.T, ss store.Store) { }) } -func testUserStoreGetAllProfilesInChannel(t *testing.T, ss store.Store) { +func testUserStoreGetAllProfilesInChannel(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -1468,7 +1468,7 @@ func testUserStoreGetAllProfilesInChannel(t *testing.T, ss store.Store) { ss.User().InvalidateProfilesInChannelCache(c2.Id) } -func testUserStoreGetProfilesNotInChannel(t *testing.T, ss store.Store) { +func testUserStoreGetProfilesNotInChannel(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -1630,7 +1630,7 @@ func testUserStoreGetProfilesNotInChannel(t *testing.T, ss store.Store) { }) } -func testUserStoreGetProfilesByIds(t *testing.T, ss store.Store) { +func testUserStoreGetProfilesByIds(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -1717,7 +1717,7 @@ func testUserStoreGetProfilesByIds(t *testing.T, ss store.Store) { }) } -func testUserStoreGetProfileByGroupChannelIdsForUser(t *testing.T, ss store.Store) { +func testUserStoreGetProfileByGroupChannelIdsForUser(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{ Email: MakeEmail(), Username: "u1" + model.NewId(), @@ -1839,7 +1839,7 @@ func testUserStoreGetProfileByGroupChannelIdsForUser(t *testing.T, ss store.Stor } } -func testUserStoreGetProfilesByUsernames(t *testing.T, ss store.Store) { +func testUserStoreGetProfilesByUsernames(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() team2Id := model.NewId() @@ -1909,7 +1909,7 @@ func testUserStoreGetProfilesByUsernames(t *testing.T, ss store.Store) { }) } -func testUserStoreGetSystemAdminProfiles(t *testing.T, ss store.Store) { +func testUserStoreGetSystemAdminProfiles(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -1959,7 +1959,7 @@ func testUserStoreGetSystemAdminProfiles(t *testing.T, ss store.Store) { }) } -func testUserStoreGetByEmail(t *testing.T, ss store.Store) { +func testUserStoreGetByEmail(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -2026,7 +2026,7 @@ func testUserStoreGetByEmail(t *testing.T, ss store.Store) { }) } -func testUserStoreGetByAuthData(t *testing.T, ss store.Store) { +func testUserStoreGetByAuthData(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() auth1 := model.NewId() auth3 := model.NewId() @@ -2106,7 +2106,7 @@ func testUserStoreGetByAuthData(t *testing.T, ss store.Store) { }) } -func testUserStoreGetByUsername(t *testing.T, ss store.Store) { +func testUserStoreGetByUsername(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -2177,7 +2177,7 @@ func testUserStoreGetByUsername(t *testing.T, ss store.Store) { }) } -func testUserStoreGetForLogin(t *testing.T, ss store.Store) { +func testUserStoreGetForLogin(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() auth := model.NewId() auth2 := model.NewId() @@ -2280,7 +2280,7 @@ func testUserStoreGetForLogin(t *testing.T, ss store.Store) { }) } -func testUserStoreUpdatePassword(t *testing.T, ss store.Store) { +func testUserStoreUpdatePassword(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1 := &model.User{} @@ -2301,7 +2301,7 @@ func testUserStoreUpdatePassword(t *testing.T, ss store.Store) { require.Equal(t, user.Password, hashedPassword, "Password was not updated correctly") } -func testUserStoreDelete(t *testing.T, ss store.Store) { +func testUserStoreDelete(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{} u1.Email = MakeEmail() _, err := ss.User().Save(u1) @@ -2314,7 +2314,7 @@ func testUserStoreDelete(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testUserStoreUpdateAuthData(t *testing.T, ss store.Store) { +func testUserStoreUpdateAuthData(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1 := &model.User{} @@ -2338,7 +2338,7 @@ func testUserStoreUpdateAuthData(t *testing.T, ss store.Store) { require.Equal(t, "", user.Password, "Password was not cleared properly") } -func testUserStoreResetAuthDataToEmailForUsers(t *testing.T, ss store.Store) { +func testUserStoreResetAuthDataToEmailForUsers(t *testing.T, rctx request.CTX, ss store.Store) { user := &model.User{} user.Username = "user1" + model.NewId() user.Email = MakeEmail() @@ -2387,7 +2387,7 @@ func testUserStoreResetAuthDataToEmailForUsers(t *testing.T, ss store.Store) { require.Equal(t, 1, numAffected) } -func testUserUnreadCount(t *testing.T, ss store.Store) { +func testUserUnreadCount(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() c1 := model.Channel{} @@ -2517,7 +2517,7 @@ func testUserUnreadCount(t *testing.T, ss store.Store) { require.Equal(t, int64(2), badge, "should have 2 unread messages for that channel") } -func testUserStoreUpdateMfaSecret(t *testing.T, ss store.Store) { +func testUserStoreUpdateMfaSecret(t *testing.T, rctx request.CTX, ss store.Store) { u1 := model.User{} u1.Email = MakeEmail() _, err := ss.User().Save(&u1) @@ -2532,7 +2532,7 @@ func testUserStoreUpdateMfaSecret(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testUserStoreUpdateMfaActive(t *testing.T, ss store.Store) { +func testUserStoreUpdateMfaActive(t *testing.T, rctx request.CTX, ss store.Store) { u1 := model.User{} u1.Email = MakeEmail() _, err := ss.User().Save(&u1) @@ -2552,7 +2552,7 @@ func testUserStoreUpdateMfaActive(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testUserStoreGetRecentlyActiveUsersForTeam(t *testing.T, ss store.Store, s SqlStore) { +func testUserStoreGetRecentlyActiveUsersForTeam(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { cleanupStatusStore(t, s) teamId := model.NewId() @@ -2628,7 +2628,7 @@ func testUserStoreGetRecentlyActiveUsersForTeam(t *testing.T, ss store.Store, s }) } -func testUserStoreGetNewUsersForTeam(t *testing.T, ss store.Store) { +func testUserStoreGetNewUsersForTeam(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() teamId2 := model.NewId() @@ -2727,7 +2727,7 @@ func assertUsers(t *testing.T, expected, actual []*model.User) { } } -func testUserStoreSearch(t *testing.T, ss store.Store) { +func testUserStoreSearch(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Username: "jimbo1" + model.NewId(), FirstName: "Tim", @@ -2874,7 +2874,7 @@ func testUserStoreSearch(t *testing.T, ss store.Store) { } } -func testUserStoreSearchNotInChannel(t *testing.T, ss store.Store) { +func testUserStoreSearchNotInChannel(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Username: "jimbo1" + model.NewId(), FirstName: "Tim", @@ -3100,7 +3100,7 @@ func testUserStoreSearchNotInChannel(t *testing.T, ss store.Store) { } } -func testUserStoreSearchInChannel(t *testing.T, ss store.Store) { +func testUserStoreSearchInChannel(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Username: "jimbo1" + model.NewId(), FirstName: "Tim", @@ -3334,7 +3334,7 @@ func testUserStoreSearchInChannel(t *testing.T, ss store.Store) { } } -func testUserStoreSearchNotInTeam(t *testing.T, ss store.Store) { +func testUserStoreSearchNotInTeam(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Username: "jimbo1" + model.NewId(), FirstName: "Tim", @@ -3526,7 +3526,7 @@ func testUserStoreSearchNotInTeam(t *testing.T, ss store.Store) { } } -func testUserStoreSearchWithoutTeam(t *testing.T, ss store.Store) { +func testUserStoreSearchWithoutTeam(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Username: "jimbo1" + model.NewId(), FirstName: "Tim", @@ -3631,7 +3631,7 @@ func testUserStoreSearchWithoutTeam(t *testing.T, ss store.Store) { } } -func testUserStoreSearchInGroup(t *testing.T, ss store.Store) { +func testUserStoreSearchInGroup(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Username: "jimbo1" + model.NewId(), FirstName: "Tim", @@ -3774,7 +3774,7 @@ func testUserStoreSearchInGroup(t *testing.T, ss store.Store) { } } -func testUserStoreSearchNotInGroup(t *testing.T, ss store.Store) { +func testUserStoreSearchNotInGroup(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{ Username: "jimbo1" + model.NewId(), FirstName: "Tim", @@ -3906,7 +3906,7 @@ func testUserStoreSearchNotInGroup(t *testing.T, ss store.Store) { } } -func testCount(t *testing.T, ss store.Store) { +func testCount(t *testing.T, rctx request.CTX, ss store.Store) { // Regular teamId := model.NewId() channelId := model.NewId() @@ -4266,7 +4266,7 @@ func testCount(t *testing.T, ss store.Store) { } } -func testUserStoreAnalyticsActiveCount(t *testing.T, ss store.Store, s SqlStore) { +func testUserStoreAnalyticsActiveCount(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { cleanupStatusStore(t, s) // Create 5 users statuses u0, u1, u2, u3, u4. @@ -4350,7 +4350,7 @@ func testUserStoreAnalyticsActiveCount(t *testing.T, ss store.Store, s SqlStore) assert.Equal(t, int64(4), count) } -func testUserStoreAnalyticsActiveCountForPeriod(t *testing.T, ss store.Store, s SqlStore) { +func testUserStoreAnalyticsActiveCountForPeriod(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) { cleanupStatusStore(t, s) // Create 5 users statuses u0, u1, u2, u3, u4. @@ -4432,7 +4432,7 @@ func testUserStoreAnalyticsActiveCountForPeriod(t *testing.T, ss store.Store, s assert.Equal(t, int64(2), count) } -func testUserStoreAnalyticsGetInactiveUsersCount(t *testing.T, ss store.Store) { +func testUserStoreAnalyticsGetInactiveUsersCount(t *testing.T, rctx request.CTX, ss store.Store) { u1 := &model.User{} u1.Email = MakeEmail() _, err := ss.User().Save(u1) @@ -4454,7 +4454,7 @@ func testUserStoreAnalyticsGetInactiveUsersCount(t *testing.T, ss store.Store) { require.Equal(t, count, newCount-1, "Expected 1 more inactive users but found otherwise.") } -func testUserStoreAnalyticsGetSystemAdminCount(t *testing.T, ss store.Store) { +func testUserStoreAnalyticsGetSystemAdminCount(t *testing.T, rctx request.CTX, ss store.Store) { countBefore, err := ss.User().AnalyticsGetSystemAdminCount() require.NoError(t, err) @@ -4481,7 +4481,7 @@ func testUserStoreAnalyticsGetSystemAdminCount(t *testing.T, ss store.Store) { require.Equal(t, countBefore+1, result, "Did not get the expected number of system admins.") } -func testUserStoreAnalyticsGetGuestCount(t *testing.T, ss store.Store) { +func testUserStoreAnalyticsGetGuestCount(t *testing.T, rctx request.CTX, ss store.Store) { countBefore, err := ss.User().AnalyticsGetGuestCount() require.NoError(t, err) @@ -4517,7 +4517,7 @@ func testUserStoreAnalyticsGetGuestCount(t *testing.T, ss store.Store) { require.Equal(t, countBefore+1, result, "Did not get the expected number of guests.") } -func testUserStoreAnalyticsGetExternalUsers(t *testing.T, ss store.Store) { +func testUserStoreAnalyticsGetExternalUsers(t *testing.T, rctx request.CTX, ss store.Store) { localHostDomain := "mattermost.com" result, err := ss.User().AnalyticsGetExternalUsers(localHostDomain) require.NoError(t, err) @@ -4555,7 +4555,7 @@ func testUserStoreAnalyticsGetExternalUsers(t *testing.T, ss store.Store) { assert.True(t, result) } -func testUserStoreGetProfilesNotInTeam(t *testing.T, ss store.Store) { +func testUserStoreGetProfilesNotInTeam(t *testing.T, rctx request.CTX, ss store.Store) { team, err := ss.Team().Save(&model.Team{ DisplayName: "Team", Name: NewTestId(), @@ -4761,7 +4761,7 @@ func testUserStoreGetProfilesNotInTeam(t *testing.T, ss store.Store) { }) } -func testUserStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) { +func testUserStoreClearAllCustomRoleAssignments(t *testing.T, rctx request.CTX, ss store.Store) { u1 := model.User{ Email: MakeEmail(), Username: model.NewId(), @@ -4815,7 +4815,7 @@ func testUserStoreClearAllCustomRoleAssignments(t *testing.T, ss store.Store) { assert.Equal(t, "", r4.Roles) } -func testUserStoreGetAllAfter(t *testing.T, ss store.Store) { +func testUserStoreGetAllAfter(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{ Email: MakeEmail(), Username: model.NewId(), @@ -4866,7 +4866,7 @@ func testUserStoreGetAllAfter(t *testing.T, ss store.Store) { }) } -func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) { +func testUserStoreGetUsersBatchForIndexing(t *testing.T, rctx request.CTX, ss store.Store) { // Set up all the objects needed t1, err := ss.Team().Save(&model.Team{ DisplayName: "Team1", @@ -5001,7 +5001,7 @@ func testUserStoreGetUsersBatchForIndexing(t *testing.T, ss store.Store) { assert.Len(t, res2List, 0) } -func testUserStoreGetTeamGroupUsers(t *testing.T, ss store.Store) { +func testUserStoreGetTeamGroupUsers(t *testing.T, rctx request.CTX, ss store.Store) { // create team id := model.NewId() team, err := ss.Team().Save(&model.Team{ @@ -5123,7 +5123,7 @@ func testUserStoreGetTeamGroupUsers(t *testing.T, ss store.Store) { requireNUsers(2) } -func testUserStoreGetChannelGroupUsers(t *testing.T, ss store.Store) { +func testUserStoreGetChannelGroupUsers(t *testing.T, rctx request.CTX, ss store.Store) { // create channel id := model.NewId() channel, nErr := ss.Channel().Save(&model.Channel{ @@ -5245,9 +5245,7 @@ func testUserStoreGetChannelGroupUsers(t *testing.T, ss store.Store) { requireNUsers(2) } -func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUserStorePromoteGuestToUser(t *testing.T, rctx request.CTX, ss store.Store) { // create users t.Run("Must do nothing with regular user", func(t *testing.T) { id := model.NewId() @@ -5284,7 +5282,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { require.Equal(t, "system_user", updatedUser.Roles) require.True(t, user.UpdateAt < updatedUser.UpdateAt) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.False(t, updatedTeamMember.SchemeGuest) require.True(t, updatedTeamMember.SchemeUser) @@ -5329,7 +5327,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_user system_admin", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.False(t, updatedTeamMember.SchemeGuest) require.True(t, updatedTeamMember.SchemeUser) @@ -5385,7 +5383,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_user", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.False(t, updatedTeamMember.SchemeGuest) require.True(t, updatedTeamMember.SchemeUser) @@ -5425,7 +5423,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_user", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.False(t, updatedTeamMember.SchemeGuest) require.True(t, updatedTeamMember.SchemeUser) @@ -5470,7 +5468,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_user custom_role", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.False(t, updatedTeamMember.SchemeGuest) require.True(t, updatedTeamMember.SchemeUser) @@ -5536,7 +5534,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_user", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId1, user1.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId1, user1.Id) require.NoError(t, nErr) require.False(t, updatedTeamMember.SchemeGuest) require.True(t, updatedTeamMember.SchemeUser) @@ -5550,7 +5548,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_guest", notUpdatedUser.Roles) - notUpdatedTeamMember, nErr := ss.Team().GetMember(c, teamId2, user2.Id) + notUpdatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId2, user2.Id) require.NoError(t, nErr) require.True(t, notUpdatedTeamMember.SchemeGuest) require.False(t, notUpdatedTeamMember.SchemeUser) @@ -5562,9 +5560,7 @@ func testUserStorePromoteGuestToUser(t *testing.T, ss store.Store) { }) } -func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { - c := request.TestContext(t) - +func testUserStoreDemoteUserToGuest(t *testing.T, rctx request.CTX, ss store.Store) { // create users t.Run("Must do nothing with guest", func(t *testing.T) { id := model.NewId() @@ -5599,7 +5595,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { require.Equal(t, "system_guest", updatedUser.Roles) require.True(t, user.UpdateAt < updatedUser.UpdateAt) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, updatedUser.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, updatedUser.Id) require.NoError(t, nErr) require.True(t, updatedTeamMember.SchemeGuest) require.False(t, updatedTeamMember.SchemeUser) @@ -5642,7 +5638,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_guest", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.True(t, updatedTeamMember.SchemeGuest) require.False(t, updatedTeamMember.SchemeUser) @@ -5694,7 +5690,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_guest", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.True(t, updatedTeamMember.SchemeGuest) require.False(t, updatedTeamMember.SchemeUser) @@ -5732,7 +5728,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_guest", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.True(t, updatedTeamMember.SchemeGuest) require.False(t, updatedTeamMember.SchemeUser) @@ -5775,7 +5771,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_guest", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId, user.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId, user.Id) require.NoError(t, nErr) require.True(t, updatedTeamMember.SchemeGuest) require.False(t, updatedTeamMember.SchemeUser) @@ -5839,7 +5835,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_guest", updatedUser.Roles) - updatedTeamMember, nErr := ss.Team().GetMember(c, teamId1, user1.Id) + updatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId1, user1.Id) require.NoError(t, nErr) require.True(t, updatedTeamMember.SchemeGuest) require.False(t, updatedTeamMember.SchemeUser) @@ -5853,7 +5849,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, "system_user", notUpdatedUser.Roles) - notUpdatedTeamMember, nErr := ss.Team().GetMember(c, teamId2, user2.Id) + notUpdatedTeamMember, nErr := ss.Team().GetMember(rctx, teamId2, user2.Id) require.NoError(t, nErr) require.False(t, notUpdatedTeamMember.SchemeGuest) require.True(t, notUpdatedTeamMember.SchemeUser) @@ -5865,7 +5861,7 @@ func testUserStoreDemoteUserToGuest(t *testing.T, ss store.Store) { }) } -func testDeactivateGuests(t *testing.T, ss store.Store) { +func testDeactivateGuests(t *testing.T, rctx request.CTX, ss store.Store) { // create users t.Run("Must disable all guests and no regular user or already deactivated users", func(t *testing.T) { guest1Random := model.NewId() @@ -5943,7 +5939,7 @@ func testDeactivateGuests(t *testing.T, ss store.Store) { }) } -func testUserStoreResetLastPictureUpdate(t *testing.T, ss store.Store) { +func testUserStoreResetLastPictureUpdate(t *testing.T, rctx request.CTX, ss store.Store) { startTime := model.GetMillis() u1 := &model.User{} u1.Email = MakeEmail() @@ -5976,7 +5972,7 @@ func testUserStoreResetLastPictureUpdate(t *testing.T, ss store.Store) { assert.Less(t, user2.LastPictureUpdate, -startTime) } -func testGetKnownUsers(t *testing.T, ss store.Store) { +func testGetKnownUsers(t *testing.T, rctx request.CTX, ss store.Store) { teamId := model.NewId() u1, err := ss.User().Save(&model.User{ @@ -6107,7 +6103,7 @@ func testGetKnownUsers(t *testing.T, ss store.Store) { }) } -func testIsEmpty(t *testing.T, ss store.Store) { +func testIsEmpty(t *testing.T, rctx request.CTX, ss store.Store) { ok, err := ss.User().IsEmpty(false) require.NoError(t, err) require.True(t, ok) @@ -6157,7 +6153,7 @@ func testIsEmpty(t *testing.T, ss store.Store) { require.True(t, ok) } -func testGetUsersWithInvalidEmails(t *testing.T, ss store.Store) { +func testGetUsersWithInvalidEmails(t *testing.T, rctx request.CTX, ss store.Store) { u1, err := ss.User().Save(&model.User{ Email: "ben@invalid.mattermost.com", Username: "u1" + model.NewId(), @@ -6171,7 +6167,7 @@ func testGetUsersWithInvalidEmails(t *testing.T, ss store.Store) { assert.Len(t, users, 1) } -func testUpdateLastLogin(t *testing.T, ss store.Store) { +func testUpdateLastLogin(t *testing.T, rctx request.CTX, ss store.Store) { u1 := model.User{} u1.Email = MakeEmail() _, err := ss.User().Save(&u1) diff --git a/server/channels/store/storetest/user_terms_of_service.go b/server/channels/store/storetest/user_terms_of_service.go index 3ffe1d7c0b..b962c9abf1 100644 --- a/server/channels/store/storetest/user_terms_of_service.go +++ b/server/channels/store/storetest/user_terms_of_service.go @@ -11,16 +11,17 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestUserTermsOfServiceStore(t *testing.T, ss store.Store) { - t.Run("TestSaveUserTermsOfService", func(t *testing.T) { testSaveUserTermsOfService(t, ss) }) - t.Run("TestGetByUserTermsOfService", func(t *testing.T) { testGetByUserTermsOfService(t, ss) }) - t.Run("TestDeleteUserTermsOfService", func(t *testing.T) { testDeleteUserTermsOfService(t, ss) }) +func TestUserTermsOfServiceStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("TestSaveUserTermsOfService", func(t *testing.T) { testSaveUserTermsOfService(t, rctx, ss) }) + t.Run("TestGetByUserTermsOfService", func(t *testing.T) { testGetByUserTermsOfService(t, rctx, ss) }) + t.Run("TestDeleteUserTermsOfService", func(t *testing.T) { testDeleteUserTermsOfService(t, rctx, ss) }) } -func testSaveUserTermsOfService(t *testing.T, ss store.Store) { +func testSaveUserTermsOfService(t *testing.T, rctx request.CTX, ss store.Store) { userTermsOfService := &model.UserTermsOfService{ UserId: model.NewId(), TermsOfServiceId: model.NewId(), @@ -45,7 +46,7 @@ func testSaveUserTermsOfService(t *testing.T, ss store.Store) { assert.NotEmpty(t, savedUserTermsOfService.CreateAt) } -func testGetByUserTermsOfService(t *testing.T, ss store.Store) { +func testGetByUserTermsOfService(t *testing.T, rctx request.CTX, ss store.Store) { userTermsOfService := &model.UserTermsOfService{ UserId: model.NewId(), TermsOfServiceId: model.NewId(), @@ -61,7 +62,7 @@ func testGetByUserTermsOfService(t *testing.T, ss store.Store) { assert.NotEmpty(t, fetchedUserTermsOfService.CreateAt) } -func testDeleteUserTermsOfService(t *testing.T, ss store.Store) { +func testDeleteUserTermsOfService(t *testing.T, rctx request.CTX, ss store.Store) { userTermsOfService := &model.UserTermsOfService{ UserId: model.NewId(), TermsOfServiceId: model.NewId(), diff --git a/server/channels/store/storetest/webhook_store.go b/server/channels/store/storetest/webhook_store.go index 9a0e4707fe..3cc18098e1 100644 --- a/server/channels/store/storetest/webhook_store.go +++ b/server/channels/store/storetest/webhook_store.go @@ -11,38 +11,39 @@ import ( "github.com/stretchr/testify/require" "github.com/mattermost/mattermost/server/public/model" + "github.com/mattermost/mattermost/server/public/shared/request" "github.com/mattermost/mattermost/server/v8/channels/store" ) -func TestWebhookStore(t *testing.T, ss store.Store) { - t.Run("SaveIncoming", func(t *testing.T) { testWebhookStoreSaveIncoming(t, ss) }) - t.Run("UpdateIncoming", func(t *testing.T) { testWebhookStoreUpdateIncoming(t, ss) }) - t.Run("GetIncoming", func(t *testing.T) { testWebhookStoreGetIncoming(t, ss) }) - t.Run("GetIncomingList", func(t *testing.T) { testWebhookStoreGetIncomingList(t, ss) }) - t.Run("GetIncomingListByUser", func(t *testing.T) { testWebhookStoreGetIncomingListByUser(t, ss) }) - t.Run("GetIncomingByTeam", func(t *testing.T) { testWebhookStoreGetIncomingByTeam(t, ss) }) - t.Run("GetIncomingByTeamByUser", func(t *testing.T) { TestWebhookStoreGetIncomingByTeamByUser(t, ss) }) - t.Run("GetIncomingByTeamByChannel", func(t *testing.T) { testWebhookStoreGetIncomingByChannel(t, ss) }) - t.Run("DeleteIncoming", func(t *testing.T) { testWebhookStoreDeleteIncoming(t, ss) }) - t.Run("DeleteIncomingByChannel", func(t *testing.T) { testWebhookStoreDeleteIncomingByChannel(t, ss) }) - t.Run("DeleteIncomingByUser", func(t *testing.T) { testWebhookStoreDeleteIncomingByUser(t, ss) }) - t.Run("SaveOutgoing", func(t *testing.T) { testWebhookStoreSaveOutgoing(t, ss) }) - t.Run("GetOutgoing", func(t *testing.T) { testWebhookStoreGetOutgoing(t, ss) }) - t.Run("GetOutgoingList", func(t *testing.T) { testWebhookStoreGetOutgoingList(t, ss) }) - t.Run("GetOutgoingListByUser", func(t *testing.T) { testWebhookStoreGetOutgoingListByUser(t, ss) }) - t.Run("GetOutgoingByChannel", func(t *testing.T) { testWebhookStoreGetOutgoingByChannel(t, ss) }) - t.Run("GetOutgoingByChannelByUser", func(t *testing.T) { testWebhookStoreGetOutgoingByChannelByUser(t, ss) }) - t.Run("GetOutgoingByTeam", func(t *testing.T) { testWebhookStoreGetOutgoingByTeam(t, ss) }) - t.Run("GetOutgoingByTeamByUser", func(t *testing.T) { testWebhookStoreGetOutgoingByTeamByUser(t, ss) }) - t.Run("DeleteOutgoing", func(t *testing.T) { testWebhookStoreDeleteOutgoing(t, ss) }) - t.Run("DeleteOutgoingByChannel", func(t *testing.T) { testWebhookStoreDeleteOutgoingByChannel(t, ss) }) - t.Run("DeleteOutgoingByUser", func(t *testing.T) { testWebhookStoreDeleteOutgoingByUser(t, ss) }) - t.Run("UpdateOutgoing", func(t *testing.T) { testWebhookStoreUpdateOutgoing(t, ss) }) - t.Run("CountIncoming", func(t *testing.T) { testWebhookStoreCountIncoming(t, ss) }) - t.Run("CountOutgoing", func(t *testing.T) { testWebhookStoreCountOutgoing(t, ss) }) +func TestWebhookStore(t *testing.T, rctx request.CTX, ss store.Store) { + t.Run("SaveIncoming", func(t *testing.T) { testWebhookStoreSaveIncoming(t, rctx, ss) }) + t.Run("UpdateIncoming", func(t *testing.T) { testWebhookStoreUpdateIncoming(t, rctx, ss) }) + t.Run("GetIncoming", func(t *testing.T) { testWebhookStoreGetIncoming(t, rctx, ss) }) + t.Run("GetIncomingList", func(t *testing.T) { testWebhookStoreGetIncomingList(t, rctx, ss) }) + t.Run("GetIncomingListByUser", func(t *testing.T) { testWebhookStoreGetIncomingListByUser(t, rctx, ss) }) + t.Run("GetIncomingByTeam", func(t *testing.T) { testWebhookStoreGetIncomingByTeam(t, rctx, ss) }) + t.Run("GetIncomingByTeamByUser", func(t *testing.T) { TestWebhookStoreGetIncomingByTeamByUser(t, rctx, ss) }) + t.Run("GetIncomingByTeamByChannel", func(t *testing.T) { testWebhookStoreGetIncomingByChannel(t, rctx, ss) }) + t.Run("DeleteIncoming", func(t *testing.T) { testWebhookStoreDeleteIncoming(t, rctx, ss) }) + t.Run("DeleteIncomingByChannel", func(t *testing.T) { testWebhookStoreDeleteIncomingByChannel(t, rctx, ss) }) + t.Run("DeleteIncomingByUser", func(t *testing.T) { testWebhookStoreDeleteIncomingByUser(t, rctx, ss) }) + t.Run("SaveOutgoing", func(t *testing.T) { testWebhookStoreSaveOutgoing(t, rctx, ss) }) + t.Run("GetOutgoing", func(t *testing.T) { testWebhookStoreGetOutgoing(t, rctx, ss) }) + t.Run("GetOutgoingList", func(t *testing.T) { testWebhookStoreGetOutgoingList(t, rctx, ss) }) + t.Run("GetOutgoingListByUser", func(t *testing.T) { testWebhookStoreGetOutgoingListByUser(t, rctx, ss) }) + t.Run("GetOutgoingByChannel", func(t *testing.T) { testWebhookStoreGetOutgoingByChannel(t, rctx, ss) }) + t.Run("GetOutgoingByChannelByUser", func(t *testing.T) { testWebhookStoreGetOutgoingByChannelByUser(t, rctx, ss) }) + t.Run("GetOutgoingByTeam", func(t *testing.T) { testWebhookStoreGetOutgoingByTeam(t, rctx, ss) }) + t.Run("GetOutgoingByTeamByUser", func(t *testing.T) { testWebhookStoreGetOutgoingByTeamByUser(t, rctx, ss) }) + t.Run("DeleteOutgoing", func(t *testing.T) { testWebhookStoreDeleteOutgoing(t, rctx, ss) }) + t.Run("DeleteOutgoingByChannel", func(t *testing.T) { testWebhookStoreDeleteOutgoingByChannel(t, rctx, ss) }) + t.Run("DeleteOutgoingByUser", func(t *testing.T) { testWebhookStoreDeleteOutgoingByUser(t, rctx, ss) }) + t.Run("UpdateOutgoing", func(t *testing.T) { testWebhookStoreUpdateOutgoing(t, rctx, ss) }) + t.Run("CountIncoming", func(t *testing.T) { testWebhookStoreCountIncoming(t, rctx, ss) }) + t.Run("CountOutgoing", func(t *testing.T) { testWebhookStoreCountOutgoing(t, rctx, ss) }) } -func testWebhookStoreSaveIncoming(t *testing.T, ss store.Store) { +func testWebhookStoreSaveIncoming(t *testing.T, rctx request.CTX, ss store.Store) { o1 := buildIncomingWebhook() _, err := ss.Webhook().SaveIncoming(o1) @@ -52,7 +53,7 @@ func testWebhookStoreSaveIncoming(t *testing.T, ss store.Store) { require.Error(t, err, "shouldn't be able to update from save") } -func testWebhookStoreUpdateIncoming(t *testing.T, ss store.Store) { +func testWebhookStoreUpdateIncoming(t *testing.T, rctx request.CTX, ss store.Store) { var err error o1 := buildIncomingWebhook() @@ -72,7 +73,7 @@ func testWebhookStoreUpdateIncoming(t *testing.T, ss store.Store) { require.Equal(t, "TestHook", webhook.DisplayName, "display name is not updated") } -func testWebhookStoreGetIncoming(t *testing.T, ss store.Store) { +func testWebhookStoreGetIncoming(t *testing.T, rctx request.CTX, ss store.Store) { var err error o1 := buildIncomingWebhook() @@ -99,7 +100,7 @@ func testWebhookStoreGetIncoming(t *testing.T, ss store.Store) { require.True(t, errors.As(err, &nfErr), "Should have set the status as not found for missing id") } -func testWebhookStoreGetIncomingList(t *testing.T, ss store.Store) { +func testWebhookStoreGetIncomingList(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.IncomingWebhook{} o1.ChannelId = model.NewId() o1.UserId = model.NewId() @@ -125,7 +126,7 @@ func testWebhookStoreGetIncomingList(t *testing.T, ss store.Store) { require.Len(t, hooks, 1, "only 1 should be returned") } -func testWebhookStoreGetIncomingListByUser(t *testing.T, ss store.Store) { +func testWebhookStoreGetIncomingListByUser(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.IncomingWebhook{} o1.ChannelId = model.NewId() o1.UserId = model.NewId() @@ -148,7 +149,7 @@ func testWebhookStoreGetIncomingListByUser(t *testing.T, ss store.Store) { }) } -func testWebhookStoreGetIncomingByTeam(t *testing.T, ss store.Store) { +func testWebhookStoreGetIncomingByTeam(t *testing.T, rctx request.CTX, ss store.Store) { var err error o1 := buildIncomingWebhook() @@ -164,7 +165,7 @@ func testWebhookStoreGetIncomingByTeam(t *testing.T, ss store.Store) { require.Empty(t, hooks, "no webhooks should have returned") } -func TestWebhookStoreGetIncomingByTeamByUser(t *testing.T, ss store.Store) { +func TestWebhookStoreGetIncomingByTeamByUser(t *testing.T, rctx request.CTX, ss store.Store) { var err error o1 := buildIncomingWebhook() @@ -196,7 +197,7 @@ func TestWebhookStoreGetIncomingByTeamByUser(t *testing.T, ss store.Store) { }) } -func testWebhookStoreGetIncomingByChannel(t *testing.T, ss store.Store) { +func testWebhookStoreGetIncomingByChannel(t *testing.T, rctx request.CTX, ss store.Store) { o1 := buildIncomingWebhook() o1, err := ss.Webhook().SaveIncoming(o1) @@ -211,7 +212,7 @@ func testWebhookStoreGetIncomingByChannel(t *testing.T, ss store.Store) { require.Empty(t, webhooks, "no webhooks should have returned") } -func testWebhookStoreDeleteIncoming(t *testing.T, ss store.Store) { +func testWebhookStoreDeleteIncoming(t *testing.T, rctx request.CTX, ss store.Store) { var err error o1 := buildIncomingWebhook() @@ -229,7 +230,7 @@ func testWebhookStoreDeleteIncoming(t *testing.T, ss store.Store) { require.Error(t, err) } -func testWebhookStoreDeleteIncomingByChannel(t *testing.T, ss store.Store) { +func testWebhookStoreDeleteIncomingByChannel(t *testing.T, rctx request.CTX, ss store.Store) { var err error o1 := buildIncomingWebhook() @@ -247,7 +248,7 @@ func testWebhookStoreDeleteIncomingByChannel(t *testing.T, ss store.Store) { require.Error(t, err, "Missing id should have failed") } -func testWebhookStoreDeleteIncomingByUser(t *testing.T, ss store.Store) { +func testWebhookStoreDeleteIncomingByUser(t *testing.T, rctx request.CTX, ss store.Store) { var err error o1 := buildIncomingWebhook() @@ -274,7 +275,7 @@ func buildIncomingWebhook() *model.IncomingWebhook { return o1 } -func testWebhookStoreSaveOutgoing(t *testing.T, ss store.Store) { +func testWebhookStoreSaveOutgoing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -290,7 +291,7 @@ func testWebhookStoreSaveOutgoing(t *testing.T, ss store.Store) { require.Error(t, err, "shouldn't be able to update from save") } -func testWebhookStoreGetOutgoing(t *testing.T, ss store.Store) { +func testWebhookStoreGetOutgoing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -309,7 +310,7 @@ func testWebhookStoreGetOutgoing(t *testing.T, ss store.Store) { require.Error(t, err, "Missing id should have failed") } -func testWebhookStoreGetOutgoingListByUser(t *testing.T, ss store.Store) { +func testWebhookStoreGetOutgoingListByUser(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -333,7 +334,7 @@ func testWebhookStoreGetOutgoingListByUser(t *testing.T, ss store.Store) { }) } -func testWebhookStoreGetOutgoingList(t *testing.T, ss store.Store) { +func testWebhookStoreGetOutgoingList(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -374,7 +375,7 @@ func testWebhookStoreGetOutgoingList(t *testing.T, ss store.Store) { require.Len(t, result, 2, "wrong number of hooks returned") } -func testWebhookStoreGetOutgoingByChannel(t *testing.T, ss store.Store) { +func testWebhookStoreGetOutgoingByChannel(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -392,7 +393,7 @@ func testWebhookStoreGetOutgoingByChannel(t *testing.T, ss store.Store) { require.Empty(t, result, "no webhooks should have returned") } -func testWebhookStoreGetOutgoingByChannelByUser(t *testing.T, ss store.Store) { +func testWebhookStoreGetOutgoingByChannelByUser(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -431,7 +432,7 @@ func testWebhookStoreGetOutgoingByChannelByUser(t *testing.T, ss store.Store) { }) } -func testWebhookStoreGetOutgoingByTeam(t *testing.T, ss store.Store) { +func testWebhookStoreGetOutgoingByTeam(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -449,7 +450,7 @@ func testWebhookStoreGetOutgoingByTeam(t *testing.T, ss store.Store) { require.Empty(t, result, "no webhooks should have returned") } -func testWebhookStoreGetOutgoingByTeamByUser(t *testing.T, ss store.Store) { +func testWebhookStoreGetOutgoingByTeamByUser(t *testing.T, rctx request.CTX, ss store.Store) { var err error o1 := &model.OutgoingWebhook{} @@ -490,7 +491,7 @@ func testWebhookStoreGetOutgoingByTeamByUser(t *testing.T, ss store.Store) { }) } -func testWebhookStoreDeleteOutgoing(t *testing.T, ss store.Store) { +func testWebhookStoreDeleteOutgoing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -510,7 +511,7 @@ func testWebhookStoreDeleteOutgoing(t *testing.T, ss store.Store) { require.Error(t, err, "Missing id should have failed") } -func testWebhookStoreDeleteOutgoingByChannel(t *testing.T, ss store.Store) { +func testWebhookStoreDeleteOutgoingByChannel(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -530,7 +531,7 @@ func testWebhookStoreDeleteOutgoingByChannel(t *testing.T, ss store.Store) { require.Error(t, err, "Missing id should have failed") } -func testWebhookStoreDeleteOutgoingByUser(t *testing.T, ss store.Store) { +func testWebhookStoreDeleteOutgoingByUser(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -550,7 +551,7 @@ func testWebhookStoreDeleteOutgoingByUser(t *testing.T, ss store.Store) { require.Error(t, err, "Missing id should have failed") } -func testWebhookStoreUpdateOutgoing(t *testing.T, ss store.Store) { +func testWebhookStoreUpdateOutgoing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId() @@ -568,7 +569,7 @@ func testWebhookStoreUpdateOutgoing(t *testing.T, ss store.Store) { require.NoError(t, err) } -func testWebhookStoreCountIncoming(t *testing.T, ss store.Store) { +func testWebhookStoreCountIncoming(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.IncomingWebhook{} o1.ChannelId = model.NewId() o1.UserId = model.NewId() @@ -582,7 +583,7 @@ func testWebhookStoreCountIncoming(t *testing.T, ss store.Store) { require.NotEqual(t, 0, c, "should have at least 1 incoming hook") } -func testWebhookStoreCountOutgoing(t *testing.T, ss store.Store) { +func testWebhookStoreCountOutgoing(t *testing.T, rctx request.CTX, ss store.Store) { o1 := &model.OutgoingWebhook{} o1.ChannelId = model.NewId() o1.CreatorId = model.NewId()