Simplify request generation in store tests (#25422)

This commit is contained in:
Ben Schumacher 2023-11-16 09:51:18 +01:00 committed by GitHub
parent 51715d5ed6
commit afb48219c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 1666 additions and 1752 deletions

View File

@ -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()
}

View File

@ -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)

View File

@ -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)
})
}

View File

@ -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))
})
}
}

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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(),

View File

@ -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(),

View File

@ -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,

View File

@ -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)

View File

@ -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{

View File

@ -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

View File

@ -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{}

View File

@ -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))

View File

@ -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")

View File

@ -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.

View File

@ -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(),

View File

@ -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)

View File

@ -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)

View File

@ -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)
}

View File

@ -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")
}

View File

@ -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",

View File

@ -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,

View File

@ -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)

View File

@ -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

View File

@ -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()

View File

@ -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()

View File

@ -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()

View File

@ -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{

View File

@ -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",

View File

@ -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

View File

@ -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{

View File

@ -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",

View File

@ -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",

View File

@ -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(),

View File

@ -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 {

View File

@ -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)
}

View File

@ -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(),

View File

@ -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,

View File

@ -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"}

View File

@ -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

View File

@ -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{}

View File

@ -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{

View File

@ -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++ {

View File

@ -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{

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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(),

View File

@ -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()