Merge branch 'master' into mark-as-unread
Этот коммит содержится в:
@@ -1,203 +0,0 @@
|
||||
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package store
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/mattermost/mattermost-server/einterfaces"
|
||||
)
|
||||
|
||||
type LayeredStoreDatabaseLayer interface {
|
||||
LayeredStoreSupplier
|
||||
Store
|
||||
}
|
||||
|
||||
type LayeredStore struct {
|
||||
TmpContext context.Context
|
||||
DatabaseLayer LayeredStoreDatabaseLayer
|
||||
LocalCacheLayer *LocalCacheSupplier
|
||||
LayerChainHead LayeredStoreSupplier
|
||||
}
|
||||
|
||||
func NewLayeredStore(db LayeredStoreDatabaseLayer, metrics einterfaces.MetricsInterface, cluster einterfaces.ClusterInterface) Store {
|
||||
store := &LayeredStore{
|
||||
TmpContext: context.TODO(),
|
||||
DatabaseLayer: db,
|
||||
LocalCacheLayer: NewLocalCacheSupplier(metrics, cluster),
|
||||
}
|
||||
|
||||
// Setup the chain
|
||||
store.LocalCacheLayer.SetChainNext(store.DatabaseLayer)
|
||||
store.LayerChainHead = store.LocalCacheLayer
|
||||
|
||||
return store
|
||||
}
|
||||
|
||||
type QueryFunction func(LayeredStoreSupplier) *LayeredStoreSupplierResult
|
||||
|
||||
func (s *LayeredStore) GetCurrentSchemaVersion() string {
|
||||
return s.DatabaseLayer.GetCurrentSchemaVersion()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Team() TeamStore {
|
||||
return s.DatabaseLayer.Team()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Channel() ChannelStore {
|
||||
return s.DatabaseLayer.Channel()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Post() PostStore {
|
||||
return s.DatabaseLayer.Post()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) User() UserStore {
|
||||
return s.DatabaseLayer.User()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Bot() BotStore {
|
||||
return s.DatabaseLayer.Bot()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Audit() AuditStore {
|
||||
return s.DatabaseLayer.Audit()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) ClusterDiscovery() ClusterDiscoveryStore {
|
||||
return s.DatabaseLayer.ClusterDiscovery()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Compliance() ComplianceStore {
|
||||
return s.DatabaseLayer.Compliance()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Session() SessionStore {
|
||||
return s.DatabaseLayer.Session()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) OAuth() OAuthStore {
|
||||
return s.DatabaseLayer.OAuth()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) System() SystemStore {
|
||||
return s.DatabaseLayer.System()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Webhook() WebhookStore {
|
||||
return s.DatabaseLayer.Webhook()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Command() CommandStore {
|
||||
return s.DatabaseLayer.Command()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) CommandWebhook() CommandWebhookStore {
|
||||
return s.DatabaseLayer.CommandWebhook()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Preference() PreferenceStore {
|
||||
return s.DatabaseLayer.Preference()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) License() LicenseStore {
|
||||
return s.DatabaseLayer.License()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Token() TokenStore {
|
||||
return s.DatabaseLayer.Token()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Emoji() EmojiStore {
|
||||
return s.DatabaseLayer.Emoji()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Status() StatusStore {
|
||||
return s.DatabaseLayer.Status()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) FileInfo() FileInfoStore {
|
||||
return s.DatabaseLayer.FileInfo()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Reaction() ReactionStore {
|
||||
return s.DatabaseLayer.Reaction()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Job() JobStore {
|
||||
return s.DatabaseLayer.Job()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) UserAccessToken() UserAccessTokenStore {
|
||||
return s.DatabaseLayer.UserAccessToken()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) ChannelMemberHistory() ChannelMemberHistoryStore {
|
||||
return s.DatabaseLayer.ChannelMemberHistory()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Plugin() PluginStore {
|
||||
return s.DatabaseLayer.Plugin()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Role() RoleStore {
|
||||
return s.DatabaseLayer.Role()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) TermsOfService() TermsOfServiceStore {
|
||||
return s.DatabaseLayer.TermsOfService()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) UserTermsOfService() UserTermsOfServiceStore {
|
||||
return s.DatabaseLayer.UserTermsOfService()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Scheme() SchemeStore {
|
||||
return s.DatabaseLayer.Scheme()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Group() GroupStore {
|
||||
return s.DatabaseLayer.Group()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) LinkMetadata() LinkMetadataStore {
|
||||
return s.DatabaseLayer.LinkMetadata()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) MarkSystemRanUnitTests() {
|
||||
s.DatabaseLayer.MarkSystemRanUnitTests()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) Close() {
|
||||
s.DatabaseLayer.Close()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) LockToMaster() {
|
||||
s.DatabaseLayer.LockToMaster()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) UnlockFromMaster() {
|
||||
s.DatabaseLayer.UnlockFromMaster()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) DropAllTables() {
|
||||
defer s.LocalCacheLayer.Invalidate()
|
||||
s.DatabaseLayer.DropAllTables()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) TotalMasterDbConnections() int {
|
||||
return s.DatabaseLayer.TotalMasterDbConnections()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) TotalReadDbConnections() int {
|
||||
return s.DatabaseLayer.TotalReadDbConnections()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) TotalSearchDbConnections() int {
|
||||
return s.DatabaseLayer.TotalSearchDbConnections()
|
||||
}
|
||||
|
||||
func (s *LayeredStore) CheckIntegrity() <-chan IntegrityCheckResult {
|
||||
return s.DatabaseLayer.CheckIntegrity()
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package store
|
||||
|
||||
type LayeredStoreHint int
|
||||
|
||||
const (
|
||||
LSH_NO_CACHE LayeredStoreHint = iota
|
||||
LSH_MASTER_ONLY
|
||||
)
|
||||
@@ -1,20 +0,0 @@
|
||||
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package store
|
||||
|
||||
type LayeredStoreSupplierResult struct {
|
||||
StoreResult
|
||||
}
|
||||
|
||||
func NewSupplierResult() *LayeredStoreSupplierResult {
|
||||
return &LayeredStoreSupplierResult{}
|
||||
}
|
||||
|
||||
type LayeredStoreSupplier interface {
|
||||
//
|
||||
// Control
|
||||
//
|
||||
SetChainNext(LayeredStoreSupplier)
|
||||
Next() LayeredStoreSupplier
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package store
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/mattermost/mattermost-server/einterfaces"
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
)
|
||||
|
||||
const (
|
||||
CLEAR_CACHE_MESSAGE_DATA = ""
|
||||
)
|
||||
|
||||
type LocalCacheSupplier struct {
|
||||
next LayeredStoreSupplier
|
||||
metrics einterfaces.MetricsInterface
|
||||
cluster einterfaces.ClusterInterface
|
||||
}
|
||||
|
||||
// Caching Interface
|
||||
type ObjectCache interface {
|
||||
AddWithExpiresInSecs(key, value interface{}, expireAtSecs int64)
|
||||
AddWithDefaultExpires(key, value interface{})
|
||||
Purge()
|
||||
Get(key interface{}) (value interface{}, ok bool)
|
||||
Remove(key interface{})
|
||||
Len() int
|
||||
Name() string
|
||||
GetInvalidateClusterEvent() string
|
||||
}
|
||||
|
||||
func NewLocalCacheSupplier(metrics einterfaces.MetricsInterface, cluster einterfaces.ClusterInterface) *LocalCacheSupplier {
|
||||
supplier := &LocalCacheSupplier{
|
||||
metrics: metrics,
|
||||
cluster: cluster,
|
||||
}
|
||||
|
||||
return supplier
|
||||
}
|
||||
|
||||
func (s *LocalCacheSupplier) SetChainNext(next LayeredStoreSupplier) {
|
||||
s.next = next
|
||||
}
|
||||
|
||||
func (s *LocalCacheSupplier) Next() LayeredStoreSupplier {
|
||||
return s.next
|
||||
}
|
||||
|
||||
func (s *LocalCacheSupplier) doStandardAddToCache(ctx context.Context, cache ObjectCache, key string, result *LayeredStoreSupplierResult, hints ...LayeredStoreHint) {
|
||||
if result.Err == nil && result.Data != nil {
|
||||
cache.AddWithDefaultExpires(key, result.Data)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *LocalCacheSupplier) doInvalidateCacheCluster(cache ObjectCache, key string) {
|
||||
cache.Remove(key)
|
||||
if s.cluster != nil {
|
||||
msg := &model.ClusterMessage{
|
||||
Event: cache.GetInvalidateClusterEvent(),
|
||||
SendType: model.CLUSTER_SEND_BEST_EFFORT,
|
||||
Data: key,
|
||||
}
|
||||
s.cluster.SendClusterMessage(msg)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *LocalCacheSupplier) doClearCacheCluster(cache ObjectCache) {
|
||||
cache.Purge()
|
||||
if s.cluster != nil {
|
||||
msg := &model.ClusterMessage{
|
||||
Event: cache.GetInvalidateClusterEvent(),
|
||||
SendType: model.CLUSTER_SEND_BEST_EFFORT,
|
||||
Data: CLEAR_CACHE_MESSAGE_DATA,
|
||||
}
|
||||
s.cluster.SendClusterMessage(msg)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *LocalCacheSupplier) Invalidate() {
|
||||
}
|
||||
@@ -58,7 +58,7 @@ func initStores() {
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
st.SqlSupplier = sqlstore.NewSqlSupplier(*st.SqlSettings, nil)
|
||||
st.Store = NewLocalCacheLayer(store.NewLayeredStore(st.SqlSupplier, nil, nil), nil, nil)
|
||||
st.Store = NewLocalCacheLayer(st.SqlSupplier, nil, nil)
|
||||
st.Store.DropAllTables()
|
||||
st.Store.MarkSystemRanUnitTests()
|
||||
}()
|
||||
|
||||
@@ -362,7 +362,7 @@ func TestCheckIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckParentChildIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
t.Run("should receive an error", func(t *testing.T) {
|
||||
config := relationalCheckConfig{
|
||||
parentName: "NotValid",
|
||||
@@ -379,7 +379,7 @@ func TestCheckParentChildIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckChannelsCommandWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -407,7 +407,7 @@ func TestCheckChannelsCommandWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckChannelsChannelMemberHistoryIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -437,7 +437,7 @@ func TestCheckChannelsChannelMemberHistoryIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckChannelsChannelMembersIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -465,7 +465,7 @@ func TestCheckChannelsChannelMembersIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckChannelsIncomingWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -493,7 +493,7 @@ func TestCheckChannelsIncomingWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckChannelsOutgoingWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -523,7 +523,7 @@ func TestCheckChannelsOutgoingWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckChannelsPostsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -550,7 +550,7 @@ func TestCheckChannelsPostsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckCommandsCommandWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -578,7 +578,7 @@ func TestCheckCommandsCommandWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckPostsFileInfoIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -605,7 +605,7 @@ func TestCheckPostsFileInfoIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckPostsPostsParentIdIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -637,7 +637,7 @@ func TestCheckPostsPostsParentIdIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckPostsPostsRootIdIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -667,7 +667,7 @@ func TestCheckPostsPostsRootIdIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckPostsReactionsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -694,7 +694,7 @@ func TestCheckPostsReactionsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckSchemesChannelsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -725,7 +725,7 @@ func TestCheckSchemesChannelsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckSchemesTeamsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -756,7 +756,7 @@ func TestCheckSchemesTeamsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckSessionsAuditsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -787,7 +787,7 @@ func TestCheckSessionsAuditsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckTeamsChannelsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -814,7 +814,7 @@ func TestCheckTeamsChannelsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckTeamsCommandsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -842,7 +842,7 @@ func TestCheckTeamsCommandsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckTeamsIncomingWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -870,7 +870,7 @@ func TestCheckTeamsIncomingWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckTeamsOutgoingWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -898,7 +898,7 @@ func TestCheckTeamsOutgoingWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckTeamsTeamMembersIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -926,7 +926,7 @@ func TestCheckTeamsTeamMembersIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersAuditsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -956,7 +956,7 @@ func TestCheckUsersAuditsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersCommandWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -984,7 +984,7 @@ func TestCheckUsersCommandWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersChannelsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1011,7 +1011,7 @@ func TestCheckUsersChannelsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersChannelMemberHistoryIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1041,7 +1041,7 @@ func TestCheckUsersChannelMemberHistoryIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersChannelMembersIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1071,7 +1071,7 @@ func TestCheckUsersChannelMembersIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersCommandsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1099,7 +1099,7 @@ func TestCheckUsersCommandsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersCompliancesIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1129,7 +1129,7 @@ func TestCheckUsersCompliancesIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersEmojiIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1159,7 +1159,7 @@ func TestCheckUsersEmojiIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersFileInfoIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1188,7 +1188,7 @@ func TestCheckUsersFileInfoIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersIncomingWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1216,7 +1216,7 @@ func TestCheckUsersIncomingWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersOAuthAccessDataIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1246,7 +1246,7 @@ func TestCheckUsersOAuthAccessDataIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersOAuthAppsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1276,7 +1276,7 @@ func TestCheckUsersOAuthAppsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersOAuthAuthDataIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1306,7 +1306,7 @@ func TestCheckUsersOAuthAuthDataIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersOutgoingWebhooksIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1334,7 +1334,7 @@ func TestCheckUsersOutgoingWebhooksIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersPostsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1361,7 +1361,7 @@ func TestCheckUsersPostsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersPreferencesIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1390,7 +1390,7 @@ func TestCheckUsersPreferencesIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersReactionsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1419,7 +1419,7 @@ func TestCheckUsersReactionsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersSessionsIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1447,7 +1447,7 @@ func TestCheckUsersSessionsIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersStatusIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1476,7 +1476,7 @@ func TestCheckUsersStatusIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersTeamMembersIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
@@ -1506,7 +1506,7 @@ func TestCheckUsersTeamMembersIntegrity(t *testing.T) {
|
||||
|
||||
func TestCheckUsersUserAccessTokensIntegrity(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
supplier := ss.(*store.LayeredStore).DatabaseLayer.(*SqlSupplier)
|
||||
supplier := ss.(*SqlSupplier)
|
||||
dbmap := supplier.GetMaster()
|
||||
|
||||
t.Run("should generate a report with no records", func(t *testing.T) {
|
||||
|
||||
@@ -70,7 +70,7 @@ func initStores() {
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
st.SqlSupplier = NewSqlSupplier(*st.SqlSettings, nil)
|
||||
st.Store = store.NewLayeredStore(st.SqlSupplier, nil, nil)
|
||||
st.Store = st.SqlSupplier
|
||||
st.Store.DropAllTables()
|
||||
st.Store.MarkSystemRanUnitTests()
|
||||
}()
|
||||
|
||||
@@ -67,7 +67,7 @@ const (
|
||||
EXIT_DOES_COLUMN_EXISTS_SQLITE = 138
|
||||
)
|
||||
|
||||
type SqlSupplierOldStores struct {
|
||||
type SqlSupplierStores struct {
|
||||
team store.TeamStore
|
||||
channel store.ChannelStore
|
||||
post store.PostStore
|
||||
@@ -106,11 +106,10 @@ type SqlSupplier struct {
|
||||
// See https://github.com/mattermost/mattermost-server/pull/7281
|
||||
rrCounter int64
|
||||
srCounter int64
|
||||
next store.LayeredStoreSupplier
|
||||
master *gorp.DbMap
|
||||
replicas []*gorp.DbMap
|
||||
searchReplicas []*gorp.DbMap
|
||||
oldStores SqlSupplierOldStores
|
||||
stores SqlSupplierStores
|
||||
settings *model.SqlSettings
|
||||
lockedToMaster bool
|
||||
}
|
||||
@@ -124,37 +123,37 @@ func NewSqlSupplier(settings model.SqlSettings, metrics einterfaces.MetricsInter
|
||||
|
||||
supplier.initConnection()
|
||||
|
||||
supplier.oldStores.team = NewSqlTeamStore(supplier, metrics)
|
||||
supplier.oldStores.channel = NewSqlChannelStore(supplier, metrics)
|
||||
supplier.oldStores.post = NewSqlPostStore(supplier, metrics)
|
||||
supplier.oldStores.user = NewSqlUserStore(supplier, metrics)
|
||||
supplier.oldStores.bot = NewSqlBotStore(supplier, metrics)
|
||||
supplier.oldStores.audit = NewSqlAuditStore(supplier)
|
||||
supplier.oldStores.cluster = NewSqlClusterDiscoveryStore(supplier)
|
||||
supplier.oldStores.compliance = NewSqlComplianceStore(supplier)
|
||||
supplier.oldStores.session = NewSqlSessionStore(supplier)
|
||||
supplier.oldStores.oauth = NewSqlOAuthStore(supplier)
|
||||
supplier.oldStores.system = NewSqlSystemStore(supplier)
|
||||
supplier.oldStores.webhook = NewSqlWebhookStore(supplier, metrics)
|
||||
supplier.oldStores.command = NewSqlCommandStore(supplier)
|
||||
supplier.oldStores.commandWebhook = NewSqlCommandWebhookStore(supplier)
|
||||
supplier.oldStores.preference = NewSqlPreferenceStore(supplier)
|
||||
supplier.oldStores.license = NewSqlLicenseStore(supplier)
|
||||
supplier.oldStores.token = NewSqlTokenStore(supplier)
|
||||
supplier.oldStores.emoji = NewSqlEmojiStore(supplier, metrics)
|
||||
supplier.oldStores.status = NewSqlStatusStore(supplier)
|
||||
supplier.oldStores.fileInfo = NewSqlFileInfoStore(supplier, metrics)
|
||||
supplier.oldStores.job = NewSqlJobStore(supplier)
|
||||
supplier.oldStores.userAccessToken = NewSqlUserAccessTokenStore(supplier)
|
||||
supplier.oldStores.channelMemberHistory = NewSqlChannelMemberHistoryStore(supplier)
|
||||
supplier.oldStores.plugin = NewSqlPluginStore(supplier)
|
||||
supplier.oldStores.TermsOfService = NewSqlTermsOfServiceStore(supplier, metrics)
|
||||
supplier.oldStores.UserTermsOfService = NewSqlUserTermsOfServiceStore(supplier)
|
||||
supplier.oldStores.linkMetadata = NewSqlLinkMetadataStore(supplier)
|
||||
supplier.oldStores.reaction = NewSqlReactionStore(supplier)
|
||||
supplier.oldStores.role = NewSqlRoleStore(supplier)
|
||||
supplier.oldStores.scheme = NewSqlSchemeStore(supplier)
|
||||
supplier.oldStores.group = NewSqlGroupStore(supplier)
|
||||
supplier.stores.team = NewSqlTeamStore(supplier, metrics)
|
||||
supplier.stores.channel = NewSqlChannelStore(supplier, metrics)
|
||||
supplier.stores.post = NewSqlPostStore(supplier, metrics)
|
||||
supplier.stores.user = NewSqlUserStore(supplier, metrics)
|
||||
supplier.stores.bot = NewSqlBotStore(supplier, metrics)
|
||||
supplier.stores.audit = NewSqlAuditStore(supplier)
|
||||
supplier.stores.cluster = NewSqlClusterDiscoveryStore(supplier)
|
||||
supplier.stores.compliance = NewSqlComplianceStore(supplier)
|
||||
supplier.stores.session = NewSqlSessionStore(supplier)
|
||||
supplier.stores.oauth = NewSqlOAuthStore(supplier)
|
||||
supplier.stores.system = NewSqlSystemStore(supplier)
|
||||
supplier.stores.webhook = NewSqlWebhookStore(supplier, metrics)
|
||||
supplier.stores.command = NewSqlCommandStore(supplier)
|
||||
supplier.stores.commandWebhook = NewSqlCommandWebhookStore(supplier)
|
||||
supplier.stores.preference = NewSqlPreferenceStore(supplier)
|
||||
supplier.stores.license = NewSqlLicenseStore(supplier)
|
||||
supplier.stores.token = NewSqlTokenStore(supplier)
|
||||
supplier.stores.emoji = NewSqlEmojiStore(supplier, metrics)
|
||||
supplier.stores.status = NewSqlStatusStore(supplier)
|
||||
supplier.stores.fileInfo = NewSqlFileInfoStore(supplier, metrics)
|
||||
supplier.stores.job = NewSqlJobStore(supplier)
|
||||
supplier.stores.userAccessToken = NewSqlUserAccessTokenStore(supplier)
|
||||
supplier.stores.channelMemberHistory = NewSqlChannelMemberHistoryStore(supplier)
|
||||
supplier.stores.plugin = NewSqlPluginStore(supplier)
|
||||
supplier.stores.TermsOfService = NewSqlTermsOfServiceStore(supplier, metrics)
|
||||
supplier.stores.UserTermsOfService = NewSqlUserTermsOfServiceStore(supplier)
|
||||
supplier.stores.linkMetadata = NewSqlLinkMetadataStore(supplier)
|
||||
supplier.stores.reaction = NewSqlReactionStore(supplier)
|
||||
supplier.stores.role = NewSqlRoleStore(supplier)
|
||||
supplier.stores.scheme = NewSqlSchemeStore(supplier)
|
||||
supplier.stores.group = NewSqlGroupStore(supplier)
|
||||
|
||||
err := supplier.GetMaster().CreateTablesIfNotExists()
|
||||
if err != nil {
|
||||
@@ -170,46 +169,37 @@ func NewSqlSupplier(settings model.SqlSettings, metrics einterfaces.MetricsInter
|
||||
os.Exit(EXIT_GENERIC_FAILURE)
|
||||
}
|
||||
|
||||
supplier.oldStores.team.(*SqlTeamStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.channel.(*SqlChannelStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.post.(*SqlPostStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.user.(*SqlUserStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.bot.(*SqlBotStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.audit.(*SqlAuditStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.compliance.(*SqlComplianceStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.session.(*SqlSessionStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.oauth.(*SqlOAuthStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.system.(*SqlSystemStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.webhook.(*SqlWebhookStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.command.(*SqlCommandStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.commandWebhook.(*SqlCommandWebhookStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.preference.(*SqlPreferenceStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.license.(*SqlLicenseStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.token.(*SqlTokenStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.emoji.(*SqlEmojiStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.status.(*SqlStatusStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.fileInfo.(*SqlFileInfoStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.job.(*SqlJobStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.userAccessToken.(*SqlUserAccessTokenStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.plugin.(*SqlPluginStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.TermsOfService.(SqlTermsOfServiceStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.UserTermsOfService.(SqlUserTermsOfServiceStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.linkMetadata.(*SqlLinkMetadataStore).CreateIndexesIfNotExists()
|
||||
supplier.oldStores.group.(*SqlGroupStore).CreateIndexesIfNotExists()
|
||||
|
||||
supplier.oldStores.preference.(*SqlPreferenceStore).DeleteUnusedFeatures()
|
||||
supplier.stores.team.(*SqlTeamStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.channel.(*SqlChannelStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.post.(*SqlPostStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.user.(*SqlUserStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.bot.(*SqlBotStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.audit.(*SqlAuditStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.compliance.(*SqlComplianceStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.session.(*SqlSessionStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.oauth.(*SqlOAuthStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.system.(*SqlSystemStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.webhook.(*SqlWebhookStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.command.(*SqlCommandStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.commandWebhook.(*SqlCommandWebhookStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.preference.(*SqlPreferenceStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.license.(*SqlLicenseStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.token.(*SqlTokenStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.emoji.(*SqlEmojiStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.status.(*SqlStatusStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.fileInfo.(*SqlFileInfoStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.job.(*SqlJobStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.userAccessToken.(*SqlUserAccessTokenStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.plugin.(*SqlPluginStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.TermsOfService.(SqlTermsOfServiceStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.UserTermsOfService.(SqlUserTermsOfServiceStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.linkMetadata.(*SqlLinkMetadataStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.group.(*SqlGroupStore).CreateIndexesIfNotExists()
|
||||
supplier.stores.preference.(*SqlPreferenceStore).DeleteUnusedFeatures()
|
||||
|
||||
return supplier
|
||||
}
|
||||
|
||||
func (s *SqlSupplier) SetChainNext(next store.LayeredStoreSupplier) {
|
||||
s.next = next
|
||||
}
|
||||
|
||||
func (s *SqlSupplier) Next() store.LayeredStoreSupplier {
|
||||
return s.next
|
||||
}
|
||||
|
||||
func setupConnection(con_type string, dataSource string, settings *model.SqlSettings) *gorp.DbMap {
|
||||
db, err := dbsql.Open(*settings.DriverName, dataSource)
|
||||
if err != nil {
|
||||
@@ -930,127 +920,127 @@ func (ss *SqlSupplier) UnlockFromMaster() {
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Team() store.TeamStore {
|
||||
return ss.oldStores.team
|
||||
return ss.stores.team
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Channel() store.ChannelStore {
|
||||
return ss.oldStores.channel
|
||||
return ss.stores.channel
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Post() store.PostStore {
|
||||
return ss.oldStores.post
|
||||
return ss.stores.post
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) User() store.UserStore {
|
||||
return ss.oldStores.user
|
||||
return ss.stores.user
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Bot() store.BotStore {
|
||||
return ss.oldStores.bot
|
||||
return ss.stores.bot
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Session() store.SessionStore {
|
||||
return ss.oldStores.session
|
||||
return ss.stores.session
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Audit() store.AuditStore {
|
||||
return ss.oldStores.audit
|
||||
return ss.stores.audit
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) ClusterDiscovery() store.ClusterDiscoveryStore {
|
||||
return ss.oldStores.cluster
|
||||
return ss.stores.cluster
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Compliance() store.ComplianceStore {
|
||||
return ss.oldStores.compliance
|
||||
return ss.stores.compliance
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) OAuth() store.OAuthStore {
|
||||
return ss.oldStores.oauth
|
||||
return ss.stores.oauth
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) System() store.SystemStore {
|
||||
return ss.oldStores.system
|
||||
return ss.stores.system
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Webhook() store.WebhookStore {
|
||||
return ss.oldStores.webhook
|
||||
return ss.stores.webhook
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Command() store.CommandStore {
|
||||
return ss.oldStores.command
|
||||
return ss.stores.command
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) CommandWebhook() store.CommandWebhookStore {
|
||||
return ss.oldStores.commandWebhook
|
||||
return ss.stores.commandWebhook
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Preference() store.PreferenceStore {
|
||||
return ss.oldStores.preference
|
||||
return ss.stores.preference
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) License() store.LicenseStore {
|
||||
return ss.oldStores.license
|
||||
return ss.stores.license
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Token() store.TokenStore {
|
||||
return ss.oldStores.token
|
||||
return ss.stores.token
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Emoji() store.EmojiStore {
|
||||
return ss.oldStores.emoji
|
||||
return ss.stores.emoji
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Status() store.StatusStore {
|
||||
return ss.oldStores.status
|
||||
return ss.stores.status
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) FileInfo() store.FileInfoStore {
|
||||
return ss.oldStores.fileInfo
|
||||
return ss.stores.fileInfo
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Reaction() store.ReactionStore {
|
||||
return ss.oldStores.reaction
|
||||
return ss.stores.reaction
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Job() store.JobStore {
|
||||
return ss.oldStores.job
|
||||
return ss.stores.job
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) UserAccessToken() store.UserAccessTokenStore {
|
||||
return ss.oldStores.userAccessToken
|
||||
return ss.stores.userAccessToken
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) ChannelMemberHistory() store.ChannelMemberHistoryStore {
|
||||
return ss.oldStores.channelMemberHistory
|
||||
return ss.stores.channelMemberHistory
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Plugin() store.PluginStore {
|
||||
return ss.oldStores.plugin
|
||||
return ss.stores.plugin
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Role() store.RoleStore {
|
||||
return ss.oldStores.role
|
||||
return ss.stores.role
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) TermsOfService() store.TermsOfServiceStore {
|
||||
return ss.oldStores.TermsOfService
|
||||
return ss.stores.TermsOfService
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) UserTermsOfService() store.UserTermsOfServiceStore {
|
||||
return ss.oldStores.UserTermsOfService
|
||||
return ss.stores.UserTermsOfService
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Scheme() store.SchemeStore {
|
||||
return ss.oldStores.scheme
|
||||
return ss.stores.scheme
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) Group() store.GroupStore {
|
||||
return ss.oldStores.group
|
||||
return ss.stores.group
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) LinkMetadata() store.LinkMetadataStore {
|
||||
return ss.oldStores.linkMetadata
|
||||
return ss.stores.linkMetadata
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) DropAllTables() {
|
||||
|
||||
@@ -12,7 +12,7 @@ import (
|
||||
|
||||
func TestStoreUpgrade(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
sqlStore := ss.(*store.LayeredStore).DatabaseLayer.(SqlStore)
|
||||
sqlStore := ss.(SqlStore)
|
||||
|
||||
t.Run("invalid currentModelVersion", func(t *testing.T) {
|
||||
err := UpgradeDatabase(sqlStore, "notaversion")
|
||||
@@ -81,7 +81,7 @@ func TestStoreUpgrade(t *testing.T) {
|
||||
|
||||
func TestSaveSchemaVersion(t *testing.T) {
|
||||
StoreTest(t, func(t *testing.T, ss store.Store) {
|
||||
sqlStore := ss.(*store.LayeredStore).DatabaseLayer.(SqlStore)
|
||||
sqlStore := ss.(SqlStore)
|
||||
|
||||
t.Run("set earliest version", func(t *testing.T) {
|
||||
saveSchemaVersion(sqlStore, VERSION_3_0_0)
|
||||
|
||||
@@ -30,33 +30,26 @@ func testEmojiSaveDelete(t *testing.T, ss store.Store) {
|
||||
Name: model.NewId(),
|
||||
}
|
||||
|
||||
if _, err := ss.Emoji().Save(emoji1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err := ss.Emoji().Save(emoji1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if len(emoji1.Id) != 26 {
|
||||
t.Fatal("should've set id for emoji")
|
||||
}
|
||||
assert.Len(t, emoji1.Id, 26, "should've set id for emoji")
|
||||
|
||||
emoji2 := model.Emoji{
|
||||
CreatorId: model.NewId(),
|
||||
Name: emoji1.Name,
|
||||
}
|
||||
if _, err := ss.Emoji().Save(&emoji2); err == nil {
|
||||
t.Fatal("shouldn't be able to save emoji with duplicate name")
|
||||
}
|
||||
_, err = ss.Emoji().Save(&emoji2)
|
||||
require.NotNil(t, err, "shouldn't be able to save emoji with duplicate name")
|
||||
|
||||
if err := ss.Emoji().Delete(emoji1, time.Now().Unix()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Emoji().Delete(emoji1, time.Now().Unix())
|
||||
require.Nil(t, err)
|
||||
|
||||
if _, err := ss.Emoji().Save(&emoji2); err != nil {
|
||||
t.Fatal("should be able to save emoji with duplicate name now that original has been deleted", err)
|
||||
}
|
||||
_, err = ss.Emoji().Save(&emoji2)
|
||||
require.Nil(t, err, "should be able to save emoji with duplicate name now that original has been deleted")
|
||||
|
||||
if err := ss.Emoji().Delete(&emoji2, time.Now().Unix()+1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Emoji().Delete(&emoji2, time.Now().Unix()+1)
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
||||
func testEmojiGet(t *testing.T, ss store.Store) {
|
||||
@@ -88,15 +81,13 @@ func testEmojiGet(t *testing.T, ss store.Store) {
|
||||
}()
|
||||
|
||||
for _, emoji := range emojis {
|
||||
if _, err := ss.Emoji().Get(emoji.Id, false); err != nil {
|
||||
t.Fatalf("failed to get emoji with id %v: %v", emoji.Id, err)
|
||||
}
|
||||
_, err := ss.Emoji().Get(emoji.Id, false)
|
||||
require.Nilf(t, err, "failed to get emoji with id %v", emoji.Id)
|
||||
}
|
||||
|
||||
for _, emoji := range emojis {
|
||||
if _, err := ss.Emoji().Get(emoji.Id, true); err != nil {
|
||||
t.Fatalf("failed to get emoji with id %v: %v", emoji.Id, err)
|
||||
}
|
||||
_, err := ss.Emoji().Get(emoji.Id, true)
|
||||
require.Nilf(t, err, "failed to get emoji with id %v", emoji.Id)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,9 +175,8 @@ func testEmojiGetByName(t *testing.T, ss store.Store) {
|
||||
}()
|
||||
|
||||
for _, emoji := range emojis {
|
||||
if _, err := ss.Emoji().GetByName(emoji.Name, true); err != nil {
|
||||
t.Fatalf("failed to get emoji with name %v: %v", emoji.Name, err)
|
||||
}
|
||||
_, err := ss.Emoji().GetByName(emoji.Name, true)
|
||||
require.Nilf(t, err, "failed to get emoji with name %v", emoji.Name)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,35 +209,28 @@ func testEmojiGetMultipleByName(t *testing.T, ss store.Store) {
|
||||
}()
|
||||
|
||||
t.Run("one emoji", func(t *testing.T) {
|
||||
if received, err := ss.Emoji().GetMultipleByName([]string{emojis[0].Name}); err != nil {
|
||||
t.Fatal("could not get emoji", err)
|
||||
} else if len(received) != 1 || *received[0] != emojis[0] {
|
||||
t.Fatal("got incorrect emoji")
|
||||
}
|
||||
received, err := ss.Emoji().GetMultipleByName([]string{emojis[0].Name})
|
||||
require.Nilf(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) {
|
||||
if received, err := ss.Emoji().GetMultipleByName([]string{emojis[0].Name, emojis[1].Name, emojis[2].Name}); err != nil {
|
||||
t.Fatal("could not get emojis", err)
|
||||
} else if len(received) != 3 {
|
||||
t.Fatal("got incorrect emojis")
|
||||
}
|
||||
received, err := ss.Emoji().GetMultipleByName([]string{emojis[0].Name, emojis[1].Name, emojis[2].Name})
|
||||
require.Nil(t, err, "could not get emojis")
|
||||
require.Len(t, received, 3, "got incorrect emojis")
|
||||
})
|
||||
|
||||
t.Run("one nonexistent emoji", func(t *testing.T) {
|
||||
if received, err := ss.Emoji().GetMultipleByName([]string{"ab"}); err != nil {
|
||||
t.Fatal("could not get emoji", err)
|
||||
} else if len(received) != 0 {
|
||||
t.Fatal("got incorrect emoji")
|
||||
}
|
||||
received, err := ss.Emoji().GetMultipleByName([]string{"ab"})
|
||||
require.Nilf(t, err, "%v, could not get emoji", err)
|
||||
require.Len(t, received, 0, "got incorrect emoji")
|
||||
})
|
||||
|
||||
t.Run("multiple emojis with nonexistent names", func(t *testing.T) {
|
||||
if received, err := ss.Emoji().GetMultipleByName([]string{emojis[0].Name, emojis[1].Name, emojis[2].Name, "abcd", "1234"}); err != nil {
|
||||
t.Fatal("could not get emojis", err)
|
||||
} else if len(received) != 3 {
|
||||
t.Fatal("got incorrect emojis")
|
||||
}
|
||||
received, err := ss.Emoji().GetMultipleByName([]string{emojis[0].Name, emojis[1].Name, emojis[2].Name, "abcd", "1234"})
|
||||
require.Nil(t, err, "could not get emojis")
|
||||
require.Len(t, received, 3, "got incorrect emojis")
|
||||
})
|
||||
}
|
||||
|
||||
@@ -292,9 +275,7 @@ func testEmojiGetList(t *testing.T, ss store.Store) {
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
t.Fatalf("failed to get emoji with id %v", emoji.Id)
|
||||
}
|
||||
require.Truef(t, found, "failed to get emoji with id %v", emoji.Id)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,38 +328,34 @@ func testEmojiSearch(t *testing.T, ss store.Store) {
|
||||
|
||||
shouldFind := []bool{true, false, false, false}
|
||||
|
||||
if result, err := ss.Emoji().Search("blargh", true, 100); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
for i, emoji := range emojis {
|
||||
found := false
|
||||
result, err := ss.Emoji().Search("blargh", true, 100)
|
||||
require.Nil(t, err)
|
||||
for i, emoji := range emojis {
|
||||
found := false
|
||||
|
||||
for _, savedEmoji := range result {
|
||||
if emoji.Id == savedEmoji.Id {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
for _, savedEmoji := range result {
|
||||
if emoji.Id == savedEmoji.Id {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
|
||||
assert.Equal(t, shouldFind[i], found, emoji.Name)
|
||||
}
|
||||
|
||||
assert.Equal(t, shouldFind[i], found, emoji.Name)
|
||||
}
|
||||
|
||||
shouldFind = []bool{true, true, true, false}
|
||||
if result, err := ss.Emoji().Search("blargh", false, 100); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
for i, emoji := range emojis {
|
||||
found := false
|
||||
result, err = ss.Emoji().Search("blargh", false, 100)
|
||||
require.Nil(t, err)
|
||||
for i, emoji := range emojis {
|
||||
found := false
|
||||
|
||||
for _, savedEmoji := range result {
|
||||
if emoji.Id == savedEmoji.Id {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
for _, savedEmoji := range result {
|
||||
if emoji.Id == savedEmoji.Id {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
|
||||
assert.Equal(t, shouldFind[i], found, emoji.Name)
|
||||
}
|
||||
|
||||
assert.Equal(t, shouldFind[i], found, emoji.Name)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,629 +0,0 @@
|
||||
// Code generated by mockery v1.0.0. DO NOT EDIT.
|
||||
|
||||
// Regenerate this file using `make store-mocks`.
|
||||
|
||||
package mocks
|
||||
|
||||
import (
|
||||
store "github.com/mattermost/mattermost-server/store"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
// LayeredStoreDatabaseLayer is an autogenerated mock type for the LayeredStoreDatabaseLayer type
|
||||
type LayeredStoreDatabaseLayer struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
// Audit provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Audit() store.AuditStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.AuditStore
|
||||
if rf, ok := ret.Get(0).(func() store.AuditStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.AuditStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Bot provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Bot() store.BotStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.BotStore
|
||||
if rf, ok := ret.Get(0).(func() store.BotStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.BotStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Channel provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Channel() store.ChannelStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.ChannelStore
|
||||
if rf, ok := ret.Get(0).(func() store.ChannelStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.ChannelStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// ChannelMemberHistory provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) ChannelMemberHistory() store.ChannelMemberHistoryStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.ChannelMemberHistoryStore
|
||||
if rf, ok := ret.Get(0).(func() store.ChannelMemberHistoryStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.ChannelMemberHistoryStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// CheckIntegrity provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) CheckIntegrity() <-chan store.IntegrityCheckResult {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 <-chan store.IntegrityCheckResult
|
||||
if rf, ok := ret.Get(0).(func() <-chan store.IntegrityCheckResult); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(<-chan store.IntegrityCheckResult)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Close provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Close() {
|
||||
_m.Called()
|
||||
}
|
||||
|
||||
// ClusterDiscovery provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) ClusterDiscovery() store.ClusterDiscoveryStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.ClusterDiscoveryStore
|
||||
if rf, ok := ret.Get(0).(func() store.ClusterDiscoveryStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.ClusterDiscoveryStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Command provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Command() store.CommandStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.CommandStore
|
||||
if rf, ok := ret.Get(0).(func() store.CommandStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.CommandStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// CommandWebhook provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) CommandWebhook() store.CommandWebhookStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.CommandWebhookStore
|
||||
if rf, ok := ret.Get(0).(func() store.CommandWebhookStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.CommandWebhookStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Compliance provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Compliance() store.ComplianceStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.ComplianceStore
|
||||
if rf, ok := ret.Get(0).(func() store.ComplianceStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.ComplianceStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// DropAllTables provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) DropAllTables() {
|
||||
_m.Called()
|
||||
}
|
||||
|
||||
// Emoji provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Emoji() store.EmojiStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.EmojiStore
|
||||
if rf, ok := ret.Get(0).(func() store.EmojiStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.EmojiStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// FileInfo provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) FileInfo() store.FileInfoStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.FileInfoStore
|
||||
if rf, ok := ret.Get(0).(func() store.FileInfoStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.FileInfoStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// GetCurrentSchemaVersion provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) GetCurrentSchemaVersion() string {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 string
|
||||
if rf, ok := ret.Get(0).(func() string); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
r0 = ret.Get(0).(string)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Group provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Group() store.GroupStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.GroupStore
|
||||
if rf, ok := ret.Get(0).(func() store.GroupStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.GroupStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Job provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Job() store.JobStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.JobStore
|
||||
if rf, ok := ret.Get(0).(func() store.JobStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.JobStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// License provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) License() store.LicenseStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.LicenseStore
|
||||
if rf, ok := ret.Get(0).(func() store.LicenseStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.LicenseStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// LinkMetadata provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) LinkMetadata() store.LinkMetadataStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.LinkMetadataStore
|
||||
if rf, ok := ret.Get(0).(func() store.LinkMetadataStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.LinkMetadataStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// LockToMaster provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) LockToMaster() {
|
||||
_m.Called()
|
||||
}
|
||||
|
||||
// MarkSystemRanUnitTests provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) MarkSystemRanUnitTests() {
|
||||
_m.Called()
|
||||
}
|
||||
|
||||
// Next provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Next() store.LayeredStoreSupplier {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.LayeredStoreSupplier
|
||||
if rf, ok := ret.Get(0).(func() store.LayeredStoreSupplier); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.LayeredStoreSupplier)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// OAuth provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) OAuth() store.OAuthStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.OAuthStore
|
||||
if rf, ok := ret.Get(0).(func() store.OAuthStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.OAuthStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Plugin provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Plugin() store.PluginStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.PluginStore
|
||||
if rf, ok := ret.Get(0).(func() store.PluginStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.PluginStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Post provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Post() store.PostStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.PostStore
|
||||
if rf, ok := ret.Get(0).(func() store.PostStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.PostStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Preference provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Preference() store.PreferenceStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.PreferenceStore
|
||||
if rf, ok := ret.Get(0).(func() store.PreferenceStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.PreferenceStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Reaction provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Reaction() store.ReactionStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.ReactionStore
|
||||
if rf, ok := ret.Get(0).(func() store.ReactionStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.ReactionStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Role provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Role() store.RoleStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.RoleStore
|
||||
if rf, ok := ret.Get(0).(func() store.RoleStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.RoleStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Scheme provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Scheme() store.SchemeStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.SchemeStore
|
||||
if rf, ok := ret.Get(0).(func() store.SchemeStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.SchemeStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Session provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Session() store.SessionStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.SessionStore
|
||||
if rf, ok := ret.Get(0).(func() store.SessionStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.SessionStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// SetChainNext provides a mock function with given fields: _a0
|
||||
func (_m *LayeredStoreDatabaseLayer) SetChainNext(_a0 store.LayeredStoreSupplier) {
|
||||
_m.Called(_a0)
|
||||
}
|
||||
|
||||
// Status provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Status() store.StatusStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.StatusStore
|
||||
if rf, ok := ret.Get(0).(func() store.StatusStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.StatusStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// System provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) System() store.SystemStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.SystemStore
|
||||
if rf, ok := ret.Get(0).(func() store.SystemStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.SystemStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Team provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Team() store.TeamStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.TeamStore
|
||||
if rf, ok := ret.Get(0).(func() store.TeamStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.TeamStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// TermsOfService provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) TermsOfService() store.TermsOfServiceStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.TermsOfServiceStore
|
||||
if rf, ok := ret.Get(0).(func() store.TermsOfServiceStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.TermsOfServiceStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Token provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Token() store.TokenStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.TokenStore
|
||||
if rf, ok := ret.Get(0).(func() store.TokenStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.TokenStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// TotalMasterDbConnections provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) TotalMasterDbConnections() int {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 int
|
||||
if rf, ok := ret.Get(0).(func() int); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
r0 = ret.Get(0).(int)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// TotalReadDbConnections provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) TotalReadDbConnections() int {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 int
|
||||
if rf, ok := ret.Get(0).(func() int); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
r0 = ret.Get(0).(int)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// TotalSearchDbConnections provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) TotalSearchDbConnections() int {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 int
|
||||
if rf, ok := ret.Get(0).(func() int); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
r0 = ret.Get(0).(int)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// UnlockFromMaster provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) UnlockFromMaster() {
|
||||
_m.Called()
|
||||
}
|
||||
|
||||
// User provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) User() store.UserStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.UserStore
|
||||
if rf, ok := ret.Get(0).(func() store.UserStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.UserStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// UserAccessToken provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) UserAccessToken() store.UserAccessTokenStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.UserAccessTokenStore
|
||||
if rf, ok := ret.Get(0).(func() store.UserAccessTokenStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.UserAccessTokenStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// UserTermsOfService provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) UserTermsOfService() store.UserTermsOfServiceStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.UserTermsOfServiceStore
|
||||
if rf, ok := ret.Get(0).(func() store.UserTermsOfServiceStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.UserTermsOfServiceStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Webhook provides a mock function with given fields:
|
||||
func (_m *LayeredStoreDatabaseLayer) Webhook() store.WebhookStore {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.WebhookStore
|
||||
if rf, ok := ret.Get(0).(func() store.WebhookStore); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.WebhookStore)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
// Code generated by mockery v1.0.0. DO NOT EDIT.
|
||||
|
||||
// Regenerate this file using `make store-mocks`.
|
||||
|
||||
package mocks
|
||||
|
||||
import (
|
||||
store "github.com/mattermost/mattermost-server/store"
|
||||
mock "github.com/stretchr/testify/mock"
|
||||
)
|
||||
|
||||
// LayeredStoreSupplier is an autogenerated mock type for the LayeredStoreSupplier type
|
||||
type LayeredStoreSupplier struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
// Next provides a mock function with given fields:
|
||||
func (_m *LayeredStoreSupplier) Next() store.LayeredStoreSupplier {
|
||||
ret := _m.Called()
|
||||
|
||||
var r0 store.LayeredStoreSupplier
|
||||
if rf, ok := ret.Get(0).(func() store.LayeredStoreSupplier); ok {
|
||||
r0 = rf()
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.LayeredStoreSupplier)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// SetChainNext provides a mock function with given fields: _a0
|
||||
func (_m *LayeredStoreSupplier) SetChainNext(_a0 store.LayeredStoreSupplier) {
|
||||
_m.Called(_a0)
|
||||
}
|
||||
@@ -69,18 +69,15 @@ func testTeamStoreSave(t *testing.T, ss store.Store) {
|
||||
o1.Email = MakeEmail()
|
||||
o1.Type = model.TEAM_OPEN
|
||||
|
||||
if _, err := ss.Team().Save(&o1); err != nil {
|
||||
t.Fatal("couldn't save item", err)
|
||||
}
|
||||
_, err := ss.Team().Save(&o1)
|
||||
require.Nil(t, err, "couldn't save item")
|
||||
|
||||
if _, err := ss.Team().Save(&o1); err == nil {
|
||||
t.Fatal("shouldn't be able to update from save")
|
||||
}
|
||||
_, err = ss.Team().Save(&o1)
|
||||
require.NotNil(t, err, "shouldn't be able to update from save")
|
||||
|
||||
o1.Id = ""
|
||||
if _, err := ss.Team().Save(&o1); err == nil {
|
||||
t.Fatal("should be unique domain")
|
||||
}
|
||||
_, err = ss.Team().Save(&o1)
|
||||
require.NotNil(t, err, "should be unique domain")
|
||||
}
|
||||
|
||||
func testTeamStoreUpdate(t *testing.T, ss store.Store) {
|
||||
@@ -89,25 +86,21 @@ func testTeamStoreUpdate(t *testing.T, ss store.Store) {
|
||||
o1.Name = "z-z-z" + model.NewId() + "b"
|
||||
o1.Email = MakeEmail()
|
||||
o1.Type = model.TEAM_OPEN
|
||||
if _, err := ss.Team().Save(&o1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err := ss.Team().Save(&o1)
|
||||
require.Nil(t, err)
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
if _, err := ss.Team().Update(&o1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err = ss.Team().Update(&o1)
|
||||
require.Nil(t, err)
|
||||
|
||||
o1.Id = "missing"
|
||||
if _, err := ss.Team().Update(&o1); err == nil {
|
||||
t.Fatal("Update should have failed because of missing key")
|
||||
}
|
||||
_, err = ss.Team().Update(&o1)
|
||||
require.NotNil(t, err, "Update should have failed because of missing key")
|
||||
|
||||
o1.Id = model.NewId()
|
||||
if _, err := ss.Team().Update(&o1); err == nil {
|
||||
t.Fatal("Update should have faile because id change")
|
||||
}
|
||||
_, err = ss.Team().Update(&o1)
|
||||
require.NotNil(t, err, "Update should have faile because id change")
|
||||
}
|
||||
|
||||
func testTeamStoreGet(t *testing.T, ss store.Store) {
|
||||
@@ -134,21 +127,15 @@ func testTeamStoreGetByName(t *testing.T, ss store.Store) {
|
||||
o1.Email = MakeEmail()
|
||||
o1.Type = model.TEAM_OPEN
|
||||
|
||||
if _, err := ss.Team().Save(&o1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err := ss.Team().Save(&o1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if team, err := ss.Team().GetByName(o1.Name); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if team.ToJson() != o1.ToJson() {
|
||||
t.Fatal("invalid returned team")
|
||||
}
|
||||
}
|
||||
team, err := ss.Team().GetByName(o1.Name)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, *team, o1, "invalid returned team")
|
||||
|
||||
if _, err := ss.Team().GetByName(""); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Team().GetByName("")
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
}
|
||||
|
||||
func testTeamStoreSearchAll(t *testing.T, ss store.Store) {
|
||||
@@ -363,9 +350,7 @@ func testTeamStoreGetByInviteId(t *testing.T, ss store.Store) {
|
||||
o1.InviteId = model.NewId()
|
||||
|
||||
save1, err := ss.Team().Save(&o1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
require.Nil(t, err)
|
||||
|
||||
o2 := model.Team{}
|
||||
o2.DisplayName = "DisplayName"
|
||||
@@ -373,17 +358,12 @@ func testTeamStoreGetByInviteId(t *testing.T, ss store.Store) {
|
||||
o2.Email = MakeEmail()
|
||||
o2.Type = model.TEAM_OPEN
|
||||
|
||||
if r1, err := ss.Team().GetByInviteId(save1.InviteId); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if r1.ToJson() != o1.ToJson() {
|
||||
t.Fatal("invalid returned team")
|
||||
}
|
||||
}
|
||||
r1, err := ss.Team().GetByInviteId(save1.InviteId)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, *r1, o1, "invalid returned team")
|
||||
|
||||
if _, err := ss.Team().GetByInviteId(""); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Team().GetByInviteId("")
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
}
|
||||
|
||||
func testTeamStoreByUserId(t *testing.T, ss store.Store) {
|
||||
@@ -400,18 +380,10 @@ func testTeamStoreByUserId(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Team().SaveMember(m1, -1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if teams, err := ss.Team().GetTeamsByUserId(m1.UserId); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if len(teams) == 0 {
|
||||
t.Fatal("Should return a team")
|
||||
}
|
||||
|
||||
if teams[0].Id != o1.Id {
|
||||
t.Fatal("should be a member")
|
||||
}
|
||||
|
||||
}
|
||||
teams, err := ss.Team().GetTeamsByUserId(m1.UserId)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, teams, 1, "Should return a team")
|
||||
require.Equal(t, teams[0].Id, o1.Id, "should be a member")
|
||||
}
|
||||
|
||||
func testGetAllTeamListing(t *testing.T, ss store.Store) {
|
||||
@@ -449,19 +421,13 @@ func testGetAllTeamListing(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Team().Save(&o4)
|
||||
require.Nil(t, err)
|
||||
|
||||
if teams, err := ss.Team().GetAllTeamListing(); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
for _, team := range teams {
|
||||
if !team.AllowOpenInvite {
|
||||
t.Fatal("should have returned team with AllowOpenInvite as true")
|
||||
}
|
||||
}
|
||||
|
||||
if len(teams) == 0 {
|
||||
t.Fatal("failed team listing")
|
||||
}
|
||||
teams, err := ss.Team().GetAllTeamListing()
|
||||
require.Nil(t, err)
|
||||
for _, team := range teams {
|
||||
require.True(t, team.AllowOpenInvite, "should have returned team with AllowOpenInvite as true")
|
||||
}
|
||||
|
||||
require.NotEmpty(t, teams, "failed team listing")
|
||||
}
|
||||
|
||||
func testGetAllTeamPageListing(t *testing.T, ss store.Store) {
|
||||
@@ -505,14 +471,10 @@ func testGetAllTeamPageListing(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
for _, team := range teams {
|
||||
if !team.AllowOpenInvite {
|
||||
t.Fatal("should have returned team with AllowOpenInvite as true")
|
||||
}
|
||||
require.True(t, team.AllowOpenInvite, "should have returned team with AllowOpenInvite as true")
|
||||
}
|
||||
|
||||
if len(teams) > 10 {
|
||||
t.Fatal("should have returned max of 10 teams")
|
||||
}
|
||||
require.LessOrEqual(t, len(teams), 10, "should have returned max of 10 teams")
|
||||
|
||||
o5 := model.Team{}
|
||||
o5.DisplayName = "DisplayName"
|
||||
@@ -527,27 +489,19 @@ func testGetAllTeamPageListing(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
for _, team := range teams {
|
||||
if !team.AllowOpenInvite {
|
||||
t.Fatal("should have returned team with AllowOpenInvite as true")
|
||||
}
|
||||
require.True(t, team.AllowOpenInvite, "should have returned team with AllowOpenInvite as true")
|
||||
}
|
||||
|
||||
if len(teams) > 4 {
|
||||
t.Fatal("should have returned max of 4 teams")
|
||||
}
|
||||
require.LessOrEqual(t, len(teams), 4, "should have returned max of 4 teams")
|
||||
|
||||
teams, err = ss.Team().GetAllTeamPageListing(1, 1)
|
||||
require.Nil(t, err)
|
||||
|
||||
for _, team := range teams {
|
||||
if !team.AllowOpenInvite {
|
||||
t.Fatal("should have returned team with AllowOpenInvite as true")
|
||||
}
|
||||
require.True(t, team.AllowOpenInvite, "should have returned team with AllowOpenInvite as true")
|
||||
}
|
||||
|
||||
if len(teams) > 1 {
|
||||
t.Fatal("should have returned max of 1 team")
|
||||
}
|
||||
require.LessOrEqual(t, len(teams), 1, "should have returned max of 1 team")
|
||||
}
|
||||
|
||||
func testGetAllPrivateTeamListing(t *testing.T, ss store.Store) {
|
||||
@@ -585,18 +539,12 @@ func testGetAllPrivateTeamListing(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Team().Save(&o4)
|
||||
require.Nil(t, err)
|
||||
|
||||
if teams, err := ss.Team().GetAllPrivateTeamListing(); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
for _, team := range teams {
|
||||
if team.AllowOpenInvite {
|
||||
t.Fatal("should have returned team with AllowOpenInvite as false")
|
||||
}
|
||||
}
|
||||
teams, err := ss.Team().GetAllPrivateTeamListing()
|
||||
require.Nil(t, err)
|
||||
require.NotEmpty(t, teams, "failed team listing")
|
||||
|
||||
if len(teams) == 0 {
|
||||
t.Fatal("failed team listing")
|
||||
}
|
||||
for _, team := range teams {
|
||||
require.False(t, team.AllowOpenInvite, "should have returned team with AllowOpenInvite as false")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -637,20 +585,14 @@ func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Team().Save(&o4)
|
||||
require.Nil(t, err)
|
||||
|
||||
if teams, listErr := ss.Team().GetAllPrivateTeamPageListing(0, 10); listErr != nil {
|
||||
t.Fatal(listErr)
|
||||
} else {
|
||||
for _, team := range teams {
|
||||
if team.AllowOpenInvite {
|
||||
t.Fatal("should have returned team with AllowOpenInvite as false")
|
||||
}
|
||||
}
|
||||
|
||||
if len(teams) > 10 {
|
||||
t.Fatal("should have returned max of 10 teams")
|
||||
}
|
||||
teams, listErr := ss.Team().GetAllPrivateTeamPageListing(0, 10)
|
||||
require.Nil(t, listErr)
|
||||
for _, team := range teams {
|
||||
require.False(t, team.AllowOpenInvite, "should have returned team with AllowOpenInvite as false")
|
||||
}
|
||||
|
||||
require.LessOrEqual(t, len(teams), 10, "should have returned max of 10 teams")
|
||||
|
||||
o5 := model.Team{}
|
||||
o5.DisplayName = "DisplayName"
|
||||
o5.Name = "z-z-z" + model.NewId() + "b"
|
||||
@@ -660,33 +602,21 @@ func testGetAllPrivateTeamPageListing(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Team().Save(&o5)
|
||||
require.Nil(t, err)
|
||||
|
||||
if teams, listErr := ss.Team().GetAllPrivateTeamPageListing(0, 4); listErr != nil {
|
||||
t.Fatal(listErr)
|
||||
} else {
|
||||
for _, team := range teams {
|
||||
if team.AllowOpenInvite {
|
||||
t.Fatal("should have returned team with AllowOpenInvite as false")
|
||||
}
|
||||
}
|
||||
|
||||
if len(teams) > 4 {
|
||||
t.Fatal("should have returned max of 4 teams")
|
||||
}
|
||||
teams, listErr = ss.Team().GetAllPrivateTeamPageListing(0, 4)
|
||||
require.Nil(t, listErr)
|
||||
for _, team := range teams {
|
||||
require.False(t, team.AllowOpenInvite, "should have returned team with AllowOpenInvite as false")
|
||||
}
|
||||
|
||||
if teams, listErr := ss.Team().GetAllPrivateTeamPageListing(1, 1); listErr != nil {
|
||||
t.Fatal(listErr)
|
||||
} else {
|
||||
for _, team := range teams {
|
||||
if team.AllowOpenInvite {
|
||||
t.Fatal("should have returned team with AllowOpenInvite as false")
|
||||
}
|
||||
}
|
||||
require.LessOrEqual(t, len(teams), 4, "should have returned max of 4 teams")
|
||||
|
||||
if len(teams) > 1 {
|
||||
t.Fatal("should have returned max of 1 team")
|
||||
}
|
||||
teams, listErr = ss.Team().GetAllPrivateTeamPageListing(1, 1)
|
||||
require.Nil(t, listErr)
|
||||
for _, team := range teams {
|
||||
require.False(t, team.AllowOpenInvite, "should have returned team with AllowOpenInvite as false")
|
||||
}
|
||||
|
||||
require.LessOrEqual(t, len(teams), 1, "should have returned max of 1 team")
|
||||
}
|
||||
|
||||
func testGetAllPublicTeamPageListing(t *testing.T, ss store.Store) {
|
||||
@@ -767,9 +697,8 @@ func testDelete(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Team().Save(&o2)
|
||||
require.Nil(t, err)
|
||||
|
||||
if r1 := ss.Team().PermanentDelete(o1.Id); r1 != nil {
|
||||
t.Fatal(r1)
|
||||
}
|
||||
r1 := ss.Team().PermanentDelete(o1.Id)
|
||||
require.Nil(t, r1)
|
||||
}
|
||||
|
||||
func testPublicTeamCount(t *testing.T, ss store.Store) {
|
||||
@@ -852,13 +781,9 @@ func testTeamCount(t *testing.T, ss store.Store) {
|
||||
_, err := ss.Team().Save(&o1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if teamCount, err := ss.Team().AnalyticsTeamCount(); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if teamCount == 0 {
|
||||
t.Fatal("should be at least 1 team")
|
||||
}
|
||||
}
|
||||
teamCount, err := ss.Team().AnalyticsTeamCount()
|
||||
require.Nil(t, err)
|
||||
require.NotEqual(t, 0, int(teamCount), "should be at least 1 team")
|
||||
}
|
||||
|
||||
func testTeamMembers(t *testing.T, ss store.Store) {
|
||||
@@ -880,47 +805,33 @@ func testTeamMembers(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
assert.Len(t, ms, 2)
|
||||
|
||||
if ms, err = ss.Team().GetMembers(teamId2, 0, 100, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
ms, err = ss.Team().GetMembers(teamId2, 0, 100, nil)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, ms, 1)
|
||||
require.Equal(t, m3.UserId, ms[0].UserId)
|
||||
|
||||
require.Len(t, ms, 1)
|
||||
require.Equal(t, m3.UserId, ms[0].UserId)
|
||||
}
|
||||
ms, err = ss.Team().GetTeamsForUser(m1.UserId)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, ms, 1)
|
||||
require.Equal(t, m1.TeamId, ms[0].TeamId)
|
||||
|
||||
if ms, err = ss.Team().GetTeamsForUser(m1.UserId); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
err = ss.Team().RemoveMember(teamId1, m1.UserId)
|
||||
require.Nil(t, err)
|
||||
|
||||
require.Len(t, ms, 1)
|
||||
require.Equal(t, m1.TeamId, ms[0].TeamId)
|
||||
}
|
||||
|
||||
if err = ss.Team().RemoveMember(teamId1, m1.UserId); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if ms, err = ss.Team().GetMembers(teamId1, 0, 100, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
|
||||
require.Len(t, ms, 1)
|
||||
require.Equal(t, m2.UserId, ms[0].UserId)
|
||||
}
|
||||
ms, err = ss.Team().GetMembers(teamId1, 0, 100, nil)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, ms, 1)
|
||||
require.Equal(t, m2.UserId, ms[0].UserId)
|
||||
|
||||
_, err = ss.Team().SaveMember(m1, -1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if err = ss.Team().RemoveAllMembersByTeam(teamId1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Team().RemoveAllMembersByTeam(teamId1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if ms, err = ss.Team().GetMembers(teamId1, 0, 100, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
|
||||
require.Len(t, ms, 0)
|
||||
}
|
||||
ms, err = ss.Team().GetMembers(teamId1, 0, 100, nil)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, ms, 0)
|
||||
|
||||
uid := model.NewId()
|
||||
m4 := &model.TeamMember{TeamId: teamId1, UserId: uid}
|
||||
@@ -930,23 +841,16 @@ func testTeamMembers(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Team().SaveMember(m5, -1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if ms, err = ss.Team().GetTeamsForUser(uid); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
ms, err = ss.Team().GetTeamsForUser(uid)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, ms, 2)
|
||||
|
||||
require.Len(t, ms, 2)
|
||||
}
|
||||
err = ss.Team().RemoveAllMembersByUser(uid)
|
||||
require.Nil(t, err)
|
||||
|
||||
if err = ss.Team().RemoveAllMembersByUser(uid); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if ms, err = ss.Team().GetTeamsForUser(m1.UserId); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
|
||||
require.Len(t, ms, 0)
|
||||
}
|
||||
ms, err = ss.Team().GetTeamsForUser(m1.UserId)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, ms, 0)
|
||||
}
|
||||
|
||||
func testTeamMembersWithPagination(t *testing.T, ss store.Store) {
|
||||
@@ -1044,11 +948,9 @@ func testSaveTeamMemberMaxMembers(t *testing.T, ss store.Store) {
|
||||
}(userIds[i])
|
||||
}
|
||||
|
||||
if totalMemberCount, err := ss.Team().GetTotalMemberCount(team.Id, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if int(totalMemberCount) != maxUsersPerTeam {
|
||||
t.Fatalf("should start with 5 team members, had %v instead", totalMemberCount)
|
||||
}
|
||||
totalMemberCount, err := ss.Team().GetTotalMemberCount(team.Id, nil)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int(totalMemberCount), maxUsersPerTeam, "should start with 5 team members, had %v instead", totalMemberCount)
|
||||
|
||||
user, err := ss.User().Save(&model.User{
|
||||
Username: model.NewId(),
|
||||
@@ -1060,47 +962,36 @@ func testSaveTeamMemberMaxMembers(t *testing.T, ss store.Store) {
|
||||
ss.User().PermanentDelete(newUserId)
|
||||
}()
|
||||
|
||||
if _, err = ss.Team().SaveMember(&model.TeamMember{
|
||||
_, err = ss.Team().SaveMember(&model.TeamMember{
|
||||
TeamId: team.Id,
|
||||
UserId: newUserId,
|
||||
}, maxUsersPerTeam); err == nil {
|
||||
t.Fatal("shouldn't be able to save member when at maximum members per team")
|
||||
}
|
||||
}, maxUsersPerTeam)
|
||||
require.NotNil(t, err, "shouldn't be able to save member when at maximum members per team")
|
||||
|
||||
if totalMemberCount, teamErr := ss.Team().GetTotalMemberCount(team.Id, nil); teamErr != nil {
|
||||
t.Fatal(teamErr)
|
||||
} else if int(totalMemberCount) != maxUsersPerTeam {
|
||||
t.Fatalf("should still have 5 team members, had %v instead", totalMemberCount)
|
||||
}
|
||||
totalMemberCount, teamErr := ss.Team().GetTotalMemberCount(team.Id, nil)
|
||||
require.Nil(t, teamErr)
|
||||
require.Equal(t, maxUsersPerTeam, int(totalMemberCount), "should still have 5 team members, had %v instead", totalMemberCount)
|
||||
|
||||
// Leaving the team from the UI sets DeleteAt instead of using TeamStore.RemoveMember
|
||||
if _, teamErr := ss.Team().UpdateMember(&model.TeamMember{
|
||||
_, teamErr = ss.Team().UpdateMember(&model.TeamMember{
|
||||
TeamId: team.Id,
|
||||
UserId: userIds[0],
|
||||
DeleteAt: 1234,
|
||||
}); teamErr != nil {
|
||||
panic(teamErr)
|
||||
}
|
||||
})
|
||||
require.Nil(t, teamErr)
|
||||
|
||||
if totalMemberCount, teamErr := ss.Team().GetTotalMemberCount(team.Id, nil); teamErr != nil {
|
||||
t.Fatal(teamErr)
|
||||
} else if int(totalMemberCount) != maxUsersPerTeam-1 {
|
||||
t.Fatalf("should now only have 4 team members, had %v instead", totalMemberCount)
|
||||
}
|
||||
totalMemberCount, teamErr = ss.Team().GetTotalMemberCount(team.Id, nil)
|
||||
require.Nil(t, teamErr)
|
||||
require.Equal(t, maxUsersPerTeam-1, int(totalMemberCount), "should now only have 4 team members, had %v instead", totalMemberCount)
|
||||
|
||||
if _, err = ss.Team().SaveMember(&model.TeamMember{TeamId: team.Id, UserId: newUserId}, maxUsersPerTeam); err != nil {
|
||||
t.Fatal("should've been able to save new member after deleting one", err)
|
||||
} else {
|
||||
defer func(userId string) {
|
||||
ss.Team().RemoveMember(team.Id, userId)
|
||||
}(newUserId)
|
||||
}
|
||||
_, err = ss.Team().SaveMember(&model.TeamMember{TeamId: team.Id, UserId: newUserId}, maxUsersPerTeam)
|
||||
require.Nil(t, err, "should've been able to save new member after deleting one")
|
||||
|
||||
if totalMemberCount, teamErr := ss.Team().GetTotalMemberCount(team.Id, nil); teamErr != nil {
|
||||
t.Fatal(teamErr)
|
||||
} else if int(totalMemberCount) != maxUsersPerTeam {
|
||||
t.Fatalf("should have 5 team members again, had %v instead", totalMemberCount)
|
||||
}
|
||||
defer ss.Team().RemoveMember(team.Id, newUserId)
|
||||
|
||||
totalMemberCount, teamErr = ss.Team().GetTotalMemberCount(team.Id, nil)
|
||||
require.Nil(t, teamErr)
|
||||
require.Equal(t, maxUsersPerTeam, int(totalMemberCount), "should have 5 team members again, had %v instead", totalMemberCount)
|
||||
|
||||
// Deactivating a user should make them stop counting against max members
|
||||
user2, err := ss.User().Get(userIds[1])
|
||||
@@ -1115,13 +1006,10 @@ func testSaveTeamMemberMaxMembers(t *testing.T, ss store.Store) {
|
||||
})
|
||||
require.Nil(t, err)
|
||||
newUserId2 := user.Id
|
||||
if _, err := ss.Team().SaveMember(&model.TeamMember{TeamId: team.Id, UserId: newUserId2}, maxUsersPerTeam); err != nil {
|
||||
t.Fatal("should've been able to save new member after deleting one", err)
|
||||
} else {
|
||||
defer func(userId string) {
|
||||
ss.Team().RemoveMember(team.Id, userId)
|
||||
}(newUserId2)
|
||||
}
|
||||
_, err = ss.Team().SaveMember(&model.TeamMember{TeamId: team.Id, UserId: newUserId2}, maxUsersPerTeam)
|
||||
require.Nil(t, err, "should've been able to save new member after deleting one")
|
||||
|
||||
defer ss.Team().RemoveMember(team.Id, newUserId2)
|
||||
}
|
||||
|
||||
func testGetTeamMember(t *testing.T, ss store.Store) {
|
||||
@@ -1132,26 +1020,18 @@ func testGetTeamMember(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
var rm1 *model.TeamMember
|
||||
if rm1, err = ss.Team().GetMember(m1.TeamId, m1.UserId); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
rm1, err = ss.Team().GetMember(m1.TeamId, m1.UserId)
|
||||
require.Nil(t, err)
|
||||
|
||||
if rm1.TeamId != m1.TeamId {
|
||||
t.Fatal("bad team id")
|
||||
}
|
||||
require.Equal(t, rm1.TeamId, m1.TeamId, "bad team id")
|
||||
|
||||
if rm1.UserId != m1.UserId {
|
||||
t.Fatal("bad user id")
|
||||
}
|
||||
}
|
||||
require.Equal(t, rm1.UserId, m1.UserId, "bad user id")
|
||||
|
||||
if _, err = ss.Team().GetMember(m1.TeamId, ""); err == nil {
|
||||
t.Fatal("empty user id - should have failed")
|
||||
}
|
||||
_, err = ss.Team().GetMember(m1.TeamId, "")
|
||||
require.NotNil(t, err, "empty user id - should have failed")
|
||||
|
||||
if _, err = ss.Team().GetMember("", m1.UserId); err == nil {
|
||||
t.Fatal("empty team id - should have failed")
|
||||
}
|
||||
_, err = ss.Team().GetMember("", m1.UserId)
|
||||
require.NotNil(t, err, "empty team id - should have failed")
|
||||
|
||||
// Test with a custom team scheme.
|
||||
s2 := &model.Scheme{
|
||||
@@ -1204,36 +1084,24 @@ func testGetTeamMembersByIds(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
var r []*model.TeamMember
|
||||
if r, err = ss.Team().GetMembersByIds(m1.TeamId, []string{m1.UserId}, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
rm1 := r[0]
|
||||
r, err = ss.Team().GetMembersByIds(m1.TeamId, []string{m1.UserId}, nil)
|
||||
require.Nil(t, err)
|
||||
rm1 := r[0]
|
||||
|
||||
if rm1.TeamId != m1.TeamId {
|
||||
t.Fatal("bad team id")
|
||||
}
|
||||
|
||||
if rm1.UserId != m1.UserId {
|
||||
t.Fatal("bad user id")
|
||||
}
|
||||
}
|
||||
require.Equal(t, rm1.TeamId, m1.TeamId, "bad team id")
|
||||
require.Equal(t, rm1.UserId, m1.UserId, "bad user id")
|
||||
|
||||
m2 := &model.TeamMember{TeamId: teamId1, UserId: model.NewId()}
|
||||
_, err = ss.Team().SaveMember(m2, -1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if rm, err := ss.Team().GetMembersByIds(m1.TeamId, []string{m1.UserId, m2.UserId, model.NewId()}, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
rm, err := ss.Team().GetMembersByIds(m1.TeamId, []string{m1.UserId, m2.UserId, model.NewId()}, nil)
|
||||
require.Nil(t, err)
|
||||
|
||||
if len(rm) != 2 {
|
||||
t.Fatal("return wrong number of results")
|
||||
}
|
||||
}
|
||||
require.Len(t, rm, 2, "return wrong number of results")
|
||||
|
||||
if _, err := ss.Team().GetMembersByIds(m1.TeamId, []string{}, nil); err == nil {
|
||||
t.Fatal("empty user ids - should have failed")
|
||||
}
|
||||
_, err = ss.Team().GetMembersByIds(m1.TeamId, []string{}, nil)
|
||||
require.NotNil(t, err, "empty user ids - should have failed")
|
||||
}
|
||||
|
||||
func testTeamStoreMemberCount(t *testing.T, ss store.Store) {
|
||||
@@ -1258,42 +1126,26 @@ func testTeamStoreMemberCount(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
|
||||
var totalMemberCount int64
|
||||
if totalMemberCount, err = ss.Team().GetTotalMemberCount(teamId1, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if totalMemberCount != 2 {
|
||||
t.Fatal("wrong count")
|
||||
}
|
||||
}
|
||||
totalMemberCount, err = ss.Team().GetTotalMemberCount(teamId1, nil)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, int(totalMemberCount), 2, "wrong count")
|
||||
|
||||
var result int64
|
||||
if result, err = ss.Team().GetActiveMemberCount(teamId1, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if result != 1 {
|
||||
t.Fatal("wrong count")
|
||||
}
|
||||
}
|
||||
result, err = ss.Team().GetActiveMemberCount(teamId1, nil)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, 1, int(result), "wrong count")
|
||||
|
||||
m3 := &model.TeamMember{TeamId: teamId1, UserId: model.NewId()}
|
||||
_, err = ss.Team().SaveMember(m3, -1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if totalMemberCount, err := ss.Team().GetTotalMemberCount(teamId1, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if totalMemberCount != 2 {
|
||||
t.Fatal("wrong count")
|
||||
}
|
||||
}
|
||||
totalMemberCount, err = ss.Team().GetTotalMemberCount(teamId1, nil)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, 2, int(totalMemberCount), "wrong count")
|
||||
|
||||
if result, err := ss.Team().GetActiveMemberCount(teamId1, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if result != 1 {
|
||||
t.Fatal("wrong count")
|
||||
}
|
||||
}
|
||||
result, err = ss.Team().GetActiveMemberCount(teamId1, nil)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, 1, int(result), "wrong count")
|
||||
}
|
||||
|
||||
func testGetChannelUnreadsForAllTeams(t *testing.T, ss store.Store) {
|
||||
@@ -1323,48 +1175,35 @@ func testGetChannelUnreadsForAllTeams(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Channel().SaveMember(cm2)
|
||||
require.Nil(t, err)
|
||||
|
||||
if ms1, err := ss.Team().GetChannelUnreadsForAllTeams("", uid); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
membersMap := make(map[string]bool)
|
||||
for i := range ms1 {
|
||||
id := ms1[i].TeamId
|
||||
if _, ok := membersMap[id]; !ok {
|
||||
membersMap[id] = true
|
||||
}
|
||||
}
|
||||
if len(membersMap) != 2 {
|
||||
t.Fatal("Should be the unreads for all the teams")
|
||||
ms1, err := ss.Team().GetChannelUnreadsForAllTeams("", uid)
|
||||
require.Nil(t, err)
|
||||
membersMap := make(map[string]bool)
|
||||
for i := range ms1 {
|
||||
id := ms1[i].TeamId
|
||||
if _, ok := membersMap[id]; !ok {
|
||||
membersMap[id] = true
|
||||
}
|
||||
}
|
||||
require.Len(t, membersMap, 2, "Should be the unreads for all the teams")
|
||||
|
||||
if ms1[0].MsgCount != 10 {
|
||||
t.Fatal("subtraction failed")
|
||||
require.Equal(t, 10, int(ms1[0].MsgCount), "subtraction failed")
|
||||
|
||||
ms2, err := ss.Team().GetChannelUnreadsForAllTeams(teamId1, uid)
|
||||
require.Nil(t, err)
|
||||
membersMap = make(map[string]bool)
|
||||
for i := range ms2 {
|
||||
id := ms2[i].TeamId
|
||||
if _, ok := membersMap[id]; !ok {
|
||||
membersMap[id] = true
|
||||
}
|
||||
}
|
||||
|
||||
if ms2, err := ss.Team().GetChannelUnreadsForAllTeams(teamId1, uid); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
membersMap := make(map[string]bool)
|
||||
for i := range ms2 {
|
||||
id := ms2[i].TeamId
|
||||
if _, ok := membersMap[id]; !ok {
|
||||
membersMap[id] = true
|
||||
}
|
||||
}
|
||||
require.Len(t, membersMap, 1, "Should be the unreads for just one team")
|
||||
|
||||
if len(membersMap) != 1 {
|
||||
t.Fatal("Should be the unreads for just one team")
|
||||
}
|
||||
require.Equal(t, 10, int(ms2[0].MsgCount), "subtraction failed")
|
||||
|
||||
if ms2[0].MsgCount != 10 {
|
||||
t.Fatal("subtraction failed")
|
||||
}
|
||||
}
|
||||
|
||||
if err := ss.Team().RemoveAllMembersByUser(uid); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Team().RemoveAllMembersByUser(uid)
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
||||
func testGetChannelUnreadsForTeam(t *testing.T, ss store.Store) {
|
||||
@@ -1390,17 +1229,11 @@ func testGetChannelUnreadsForTeam(t *testing.T, ss store.Store) {
|
||||
_, err = ss.Channel().SaveMember(cm2)
|
||||
require.Nil(t, err)
|
||||
|
||||
if ms, err := ss.Team().GetChannelUnreadsForTeam(m1.TeamId, m1.UserId); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if len(ms) != 2 {
|
||||
t.Fatal("wrong length")
|
||||
}
|
||||
ms, err := ss.Team().GetChannelUnreadsForTeam(m1.TeamId, m1.UserId)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, ms, 2, "wrong length")
|
||||
|
||||
if ms[0].MsgCount != 10 {
|
||||
t.Fatal("subtraction failed")
|
||||
}
|
||||
}
|
||||
require.Equal(t, 10, int(ms[0].MsgCount), "subtraction failed")
|
||||
}
|
||||
|
||||
func testUpdateLastTeamIconUpdate(t *testing.T, ss store.Store) {
|
||||
@@ -1419,16 +1252,13 @@ func testUpdateLastTeamIconUpdate(t *testing.T, ss store.Store) {
|
||||
|
||||
curTime := model.GetMillis()
|
||||
|
||||
if err = ss.Team().UpdateLastTeamIconUpdate(o1.Id, curTime); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Team().UpdateLastTeamIconUpdate(o1.Id, curTime)
|
||||
require.Nil(t, err)
|
||||
|
||||
ro1, err := ss.Team().Get(o1.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
if ro1.LastTeamIconUpdate <= lastTeamIconUpdateInitial {
|
||||
t.Fatal("LastTeamIconUpdate not updated")
|
||||
}
|
||||
require.Greater(t, ro1.LastTeamIconUpdate, lastTeamIconUpdateInitial, "LastTeamIconUpdate not updated")
|
||||
}
|
||||
|
||||
func testGetTeamsByScheme(t *testing.T, ss store.Store) {
|
||||
|
||||
@@ -43,13 +43,11 @@ func TestWebhookStore(t *testing.T, ss store.Store) {
|
||||
func testWebhookStoreSaveIncoming(t *testing.T, ss store.Store) {
|
||||
o1 := buildIncomingWebhook()
|
||||
|
||||
if _, err := ss.Webhook().SaveIncoming(o1); err != nil {
|
||||
t.Fatal("couldn't save item", err)
|
||||
}
|
||||
_, err := ss.Webhook().SaveIncoming(o1)
|
||||
require.Nil(t, err, "couldn't save item")
|
||||
|
||||
if _, err := ss.Webhook().SaveIncoming(o1); err == nil {
|
||||
t.Fatal("shouldn't be able to update from save")
|
||||
}
|
||||
_, err = ss.Webhook().SaveIncoming(o1)
|
||||
require.NotNil(t, err, "shouldn't be able to update from save")
|
||||
}
|
||||
|
||||
func testWebhookStoreUpdateIncoming(t *testing.T, ss store.Store) {
|
||||
@@ -58,9 +56,7 @@ func testWebhookStoreUpdateIncoming(t *testing.T, ss store.Store) {
|
||||
|
||||
o1 := buildIncomingWebhook()
|
||||
o1, err = ss.Webhook().SaveIncoming(o1)
|
||||
if err != nil {
|
||||
t.Fatal("unable to save webhook", err)
|
||||
}
|
||||
require.Nil(t, err, "unable to save webhook")
|
||||
|
||||
previousUpdatedAt := o1.UpdateAt
|
||||
|
||||
@@ -70,14 +66,9 @@ func testWebhookStoreUpdateIncoming(t *testing.T, ss store.Store) {
|
||||
webhook, err := ss.Webhook().UpdateIncoming(o1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if webhook.UpdateAt == previousUpdatedAt {
|
||||
t.Fatal("should have updated the UpdatedAt of the hook")
|
||||
}
|
||||
|
||||
if webhook.DisplayName != "TestHook" {
|
||||
t.Fatal("display name is not updated")
|
||||
}
|
||||
require.NotEqual(t, webhook.UpdateAt, previousUpdatedAt, "should have updated the UpdatedAt of the hook")
|
||||
|
||||
require.Equal(t, "TestHook", webhook.DisplayName, "display name is not updated")
|
||||
}
|
||||
|
||||
func testWebhookStoreGetIncoming(t *testing.T, ss store.Store) {
|
||||
@@ -85,33 +76,25 @@ func testWebhookStoreGetIncoming(t *testing.T, ss store.Store) {
|
||||
|
||||
o1 := buildIncomingWebhook()
|
||||
o1, err = ss.Webhook().SaveIncoming(o1)
|
||||
if err != nil {
|
||||
t.Fatal("unable to save webhook", err)
|
||||
}
|
||||
require.Nil(t, err, "unable to save webhook")
|
||||
|
||||
webhook, err := ss.Webhook().GetIncoming(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
webhook, err = ss.Webhook().GetIncoming(o1.Id, true)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if _, err = ss.Webhook().GetIncoming("123", false); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Webhook().GetIncoming("123", false)
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
|
||||
if _, err = ss.Webhook().GetIncoming("123", true); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Webhook().GetIncoming("123", true)
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
|
||||
if _, err = ss.Webhook().GetIncoming("123", true); err.StatusCode != http.StatusNotFound {
|
||||
t.Fatal("Should have set the status as not found for missing id")
|
||||
}
|
||||
_, err = ss.Webhook().GetIncoming("123", true)
|
||||
require.NotNil(t, err)
|
||||
require.Equal(t, err.StatusCode, http.StatusNotFound, "Should have set the status as not found for missing id")
|
||||
}
|
||||
|
||||
func testWebhookStoreGetIncomingList(t *testing.T, ss store.Store) {
|
||||
@@ -122,31 +105,22 @@ func testWebhookStoreGetIncomingList(t *testing.T, ss store.Store) {
|
||||
|
||||
var err *model.AppError
|
||||
o1, err = ss.Webhook().SaveIncoming(o1)
|
||||
if err != nil {
|
||||
t.Fatal("unable to save webhook", err)
|
||||
}
|
||||
require.Nil(t, err, "unable to save webhook")
|
||||
|
||||
if hooks, err := ss.Webhook().GetIncomingList(0, 1000); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
found := false
|
||||
for _, hook := range hooks {
|
||||
if hook.Id == o1.Id {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
t.Fatal("missing webhook")
|
||||
}
|
||||
}
|
||||
hooks, err := ss.Webhook().GetIncomingList(0, 1000)
|
||||
require.Nil(t, err)
|
||||
|
||||
if hooks, err := ss.Webhook().GetIncomingList(0, 1); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if len(hooks) != 1 {
|
||||
t.Fatal("only 1 should be returned")
|
||||
found := false
|
||||
for _, hook := range hooks {
|
||||
if hook.Id == o1.Id {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
require.True(t, found, "missing webhook")
|
||||
|
||||
hooks, err = ss.Webhook().GetIncomingList(0, 1)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, hooks, 1, "only 1 should be returned")
|
||||
}
|
||||
|
||||
func testWebhookStoreGetIncomingListByUser(t *testing.T, ss store.Store) {
|
||||
@@ -179,21 +153,13 @@ func testWebhookStoreGetIncomingByTeam(t *testing.T, ss store.Store) {
|
||||
o1, err = ss.Webhook().SaveIncoming(o1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if hooks, err := ss.Webhook().GetIncomingByTeam(o1.TeamId, 0, 100); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if hooks[0].CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
}
|
||||
hooks, err := ss.Webhook().GetIncomingByTeam(o1.TeamId, 0, 100)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, hooks[0].CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if hooks, err := ss.Webhook().GetIncomingByTeam("123", 0, 100); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if len(hooks) != 0 {
|
||||
t.Fatal("no webhooks should have returned")
|
||||
}
|
||||
}
|
||||
hooks, err = ss.Webhook().GetIncomingByTeam("123", 0, 100)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, hooks, 0, "no webhooks should have returned")
|
||||
}
|
||||
|
||||
func TestWebhookStoreGetIncomingByTeamByUser(t *testing.T, ss store.Store) {
|
||||
@@ -232,23 +198,15 @@ func TestWebhookStoreGetIncomingByChannel(t *testing.T, ss store.Store) {
|
||||
o1 := buildIncomingWebhook()
|
||||
|
||||
o1, err := ss.Webhook().SaveIncoming(o1)
|
||||
if err != nil {
|
||||
t.Fatal("unable to save webhook")
|
||||
}
|
||||
require.Nil(t, err, "unable to save webhook")
|
||||
|
||||
webhooks, err := ss.Webhook().GetIncomingByChannel(o1.ChannelId)
|
||||
require.Nil(t, err)
|
||||
if webhooks[0].CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhooks[0].CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if webhooks, err = ss.Webhook().GetIncomingByChannel("123"); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if len(webhooks) != 0 {
|
||||
t.Fatal("no webhooks should have returned")
|
||||
}
|
||||
}
|
||||
webhooks, err = ss.Webhook().GetIncomingByChannel("123")
|
||||
require.Nil(t, err)
|
||||
require.Len(t, webhooks, 0, "no webhooks should have returned")
|
||||
}
|
||||
|
||||
func testWebhookStoreDeleteIncoming(t *testing.T, ss store.Store) {
|
||||
@@ -256,19 +214,14 @@ func testWebhookStoreDeleteIncoming(t *testing.T, ss store.Store) {
|
||||
|
||||
o1 := buildIncomingWebhook()
|
||||
o1, err = ss.Webhook().SaveIncoming(o1)
|
||||
if err != nil {
|
||||
t.Fatal("unable to save webhook", err)
|
||||
}
|
||||
require.Nil(t, err, "unable to save webhook")
|
||||
|
||||
webhook, err := ss.Webhook().GetIncoming(o1.Id, true)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if err = ss.Webhook().DeleteIncoming(o1.Id, model.GetMillis()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Webhook().DeleteIncoming(o1.Id, model.GetMillis())
|
||||
require.Nil(t, err)
|
||||
|
||||
webhook, err = ss.Webhook().GetIncoming(o1.Id, true)
|
||||
require.NotNil(t, err)
|
||||
@@ -279,23 +232,17 @@ func testWebhookStoreDeleteIncomingByChannel(t *testing.T, ss store.Store) {
|
||||
|
||||
o1 := buildIncomingWebhook()
|
||||
o1, err = ss.Webhook().SaveIncoming(o1)
|
||||
if err != nil {
|
||||
t.Fatal("unable to save webhook", err)
|
||||
}
|
||||
require.Nil(t, err, "unable to save webhook")
|
||||
|
||||
webhook, err := ss.Webhook().GetIncoming(o1.Id, true)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if err = ss.Webhook().PermanentDeleteIncomingByChannel(o1.ChannelId); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Webhook().PermanentDeleteIncomingByChannel(o1.ChannelId)
|
||||
require.Nil(t, err)
|
||||
|
||||
if _, err = ss.Webhook().GetIncoming(o1.Id, true); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Webhook().GetIncoming(o1.Id, true)
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
}
|
||||
|
||||
func testWebhookStoreDeleteIncomingByUser(t *testing.T, ss store.Store) {
|
||||
@@ -303,23 +250,17 @@ func testWebhookStoreDeleteIncomingByUser(t *testing.T, ss store.Store) {
|
||||
|
||||
o1 := buildIncomingWebhook()
|
||||
o1, err = ss.Webhook().SaveIncoming(o1)
|
||||
if err != nil {
|
||||
t.Fatal("unable to save webhook", err)
|
||||
}
|
||||
require.Nil(t, err, "unable to save webhook")
|
||||
|
||||
webhook, err := ss.Webhook().GetIncoming(o1.Id, true)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if err = ss.Webhook().PermanentDeleteIncomingByUser(o1.UserId); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Webhook().PermanentDeleteIncomingByUser(o1.UserId)
|
||||
require.Nil(t, err)
|
||||
|
||||
if _, err = ss.Webhook().GetIncoming(o1.Id, true); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Webhook().GetIncoming(o1.Id, true)
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
}
|
||||
|
||||
func buildIncomingWebhook() *model.IncomingWebhook {
|
||||
@@ -340,13 +281,11 @@ func testWebhookStoreSaveOutgoing(t *testing.T, ss store.Store) {
|
||||
o1.Username = "test-user-name"
|
||||
o1.IconURL = "http://nowhere.com/icon"
|
||||
|
||||
if _, err := ss.Webhook().SaveOutgoing(&o1); err != nil {
|
||||
t.Fatal("couldn't save item", err)
|
||||
}
|
||||
_, err := ss.Webhook().SaveOutgoing(&o1)
|
||||
require.Nil(t, err, "couldn't save item")
|
||||
|
||||
if _, err := ss.Webhook().SaveOutgoing(&o1); err == nil {
|
||||
t.Fatal("shouldn't be able to update from save")
|
||||
}
|
||||
_, err = ss.Webhook().SaveOutgoing(&o1)
|
||||
require.NotNil(t, err, "shouldn't be able to update from save")
|
||||
}
|
||||
|
||||
func testWebhookStoreGetOutgoing(t *testing.T, ss store.Store) {
|
||||
@@ -362,13 +301,10 @@ func testWebhookStoreGetOutgoing(t *testing.T, ss store.Store) {
|
||||
|
||||
webhook, err := ss.Webhook().GetOutgoing(o1.Id)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if _, err := ss.Webhook().GetOutgoing("123"); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Webhook().GetOutgoing("123")
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
}
|
||||
|
||||
func testWebhookStoreGetOutgoingListByUser(t *testing.T, ss store.Store) {
|
||||
@@ -412,38 +348,28 @@ func testWebhookStoreGetOutgoingList(t *testing.T, ss store.Store) {
|
||||
|
||||
o2, _ = ss.Webhook().SaveOutgoing(o2)
|
||||
|
||||
if r1, err := ss.Webhook().GetOutgoingList(0, 1000); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
hooks := r1
|
||||
found1 := false
|
||||
found2 := false
|
||||
r1, err := ss.Webhook().GetOutgoingList(0, 1000)
|
||||
require.Nil(t, err)
|
||||
hooks := r1
|
||||
found1 := false
|
||||
found2 := false
|
||||
|
||||
for _, hook := range hooks {
|
||||
if hook.CreateAt != o1.CreateAt {
|
||||
found1 = true
|
||||
}
|
||||
|
||||
if hook.CreateAt != o2.CreateAt {
|
||||
found2 = true
|
||||
}
|
||||
for _, hook := range hooks {
|
||||
if hook.CreateAt != o1.CreateAt {
|
||||
found1 = true
|
||||
}
|
||||
|
||||
if !found1 {
|
||||
t.Fatal("missing hook1")
|
||||
}
|
||||
if !found2 {
|
||||
t.Fatal("missing hook2")
|
||||
if hook.CreateAt != o2.CreateAt {
|
||||
found2 = true
|
||||
}
|
||||
}
|
||||
|
||||
if result, err := ss.Webhook().GetOutgoingList(0, 2); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if len(result) != 2 {
|
||||
t.Fatal("wrong number of hooks returned")
|
||||
}
|
||||
}
|
||||
require.True(t, found1, "missing hook1")
|
||||
require.True(t, found2, "missing hook2")
|
||||
|
||||
result, err := ss.Webhook().GetOutgoingList(0, 2)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, result, 2, "wrong number of hooks returned")
|
||||
}
|
||||
|
||||
func testWebhookStoreGetOutgoingByChannel(t *testing.T, ss store.Store) {
|
||||
@@ -455,21 +381,13 @@ func testWebhookStoreGetOutgoingByChannel(t *testing.T, ss store.Store) {
|
||||
|
||||
o1, _ = ss.Webhook().SaveOutgoing(o1)
|
||||
|
||||
if r1, err := ss.Webhook().GetOutgoingByChannel(o1.ChannelId, 0, 100); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if r1[0].CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
}
|
||||
r1, err := ss.Webhook().GetOutgoingByChannel(o1.ChannelId, 0, 100)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, r1[0].CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if result, err := ss.Webhook().GetOutgoingByChannel("123", -1, -1); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if len(result) != 0 {
|
||||
t.Fatal("no webhooks should have returned")
|
||||
}
|
||||
}
|
||||
result, err := ss.Webhook().GetOutgoingByChannel("123", -1, -1)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, result, 0, "no webhooks should have returned")
|
||||
}
|
||||
|
||||
func testWebhookStoreGetOutgoingByChannelByUser(t *testing.T, ss store.Store) {
|
||||
@@ -520,21 +438,13 @@ func testWebhookStoreGetOutgoingByTeam(t *testing.T, ss store.Store) {
|
||||
|
||||
o1, _ = ss.Webhook().SaveOutgoing(o1)
|
||||
|
||||
if r1, err := ss.Webhook().GetOutgoingByTeam(o1.TeamId, 0, 100); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if r1[0].CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
}
|
||||
r1, err := ss.Webhook().GetOutgoingByTeam(o1.TeamId, 0, 100)
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, r1[0].CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if result, err := ss.Webhook().GetOutgoingByTeam("123", -1, -1); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if len(result) != 0 {
|
||||
t.Fatal("no webhooks should have returned")
|
||||
}
|
||||
}
|
||||
result, err := ss.Webhook().GetOutgoingByTeam("123", -1, -1)
|
||||
require.Nil(t, err)
|
||||
require.Len(t, result, 0, "no webhooks should have returned")
|
||||
}
|
||||
|
||||
func testWebhookStoreGetOutgoingByTeamByUser(t *testing.T, ss store.Store) {
|
||||
@@ -589,17 +499,13 @@ func testWebhookStoreDeleteOutgoing(t *testing.T, ss store.Store) {
|
||||
|
||||
webhook, err := ss.Webhook().GetOutgoing(o1.Id)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if err := ss.Webhook().DeleteOutgoing(o1.Id, model.GetMillis()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Webhook().DeleteOutgoing(o1.Id, model.GetMillis())
|
||||
require.Nil(t, err)
|
||||
|
||||
if _, err := ss.Webhook().GetOutgoing(o1.Id); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Webhook().GetOutgoing(o1.Id)
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
}
|
||||
|
||||
func testWebhookStoreDeleteOutgoingByChannel(t *testing.T, ss store.Store) {
|
||||
@@ -613,17 +519,13 @@ func testWebhookStoreDeleteOutgoingByChannel(t *testing.T, ss store.Store) {
|
||||
|
||||
webhook, err := ss.Webhook().GetOutgoing(o1.Id)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if err := ss.Webhook().PermanentDeleteOutgoingByChannel(o1.ChannelId); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Webhook().PermanentDeleteOutgoingByChannel(o1.ChannelId)
|
||||
require.Nil(t, err)
|
||||
|
||||
if _, err := ss.Webhook().GetOutgoing(o1.Id); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Webhook().GetOutgoing(o1.Id)
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
}
|
||||
|
||||
func testWebhookStoreDeleteOutgoingByUser(t *testing.T, ss store.Store) {
|
||||
@@ -637,17 +539,13 @@ func testWebhookStoreDeleteOutgoingByUser(t *testing.T, ss store.Store) {
|
||||
|
||||
webhook, err := ss.Webhook().GetOutgoing(o1.Id)
|
||||
require.Nil(t, err)
|
||||
if webhook.CreateAt != o1.CreateAt {
|
||||
t.Fatal("invalid returned webhook")
|
||||
}
|
||||
require.Equal(t, webhook.CreateAt, o1.CreateAt, "invalid returned webhook")
|
||||
|
||||
if err := ss.Webhook().PermanentDeleteOutgoingByUser(o1.CreatorId); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = ss.Webhook().PermanentDeleteOutgoingByUser(o1.CreatorId)
|
||||
require.Nil(t, err)
|
||||
|
||||
if _, err := ss.Webhook().GetOutgoing(o1.Id); err == nil {
|
||||
t.Fatal("Missing id should have failed")
|
||||
}
|
||||
_, err = ss.Webhook().GetOutgoing(o1.Id)
|
||||
require.NotNil(t, err, "Missing id should have failed")
|
||||
}
|
||||
|
||||
func testWebhookStoreUpdateOutgoing(t *testing.T, ss store.Store) {
|
||||
@@ -664,9 +562,8 @@ func testWebhookStoreUpdateOutgoing(t *testing.T, ss store.Store) {
|
||||
o1.Token = model.NewId()
|
||||
o1.Username = "another-test-user-name"
|
||||
|
||||
if _, err := ss.Webhook().UpdateOutgoing(o1); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err := ss.Webhook().UpdateOutgoing(o1)
|
||||
require.Nil(t, err)
|
||||
}
|
||||
|
||||
func testWebhookStoreCountIncoming(t *testing.T, ss store.Store) {
|
||||
@@ -678,13 +575,9 @@ func testWebhookStoreCountIncoming(t *testing.T, ss store.Store) {
|
||||
_, _ = ss.Webhook().SaveIncoming(o1)
|
||||
|
||||
c, err := ss.Webhook().AnalyticsIncomingCount("")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
require.Nil(t, err)
|
||||
|
||||
if c == 0 {
|
||||
t.Fatal("should have at least 1 incoming hook")
|
||||
}
|
||||
require.NotEqual(t, 0, c, "should have at least 1 incoming hook")
|
||||
}
|
||||
|
||||
func testWebhookStoreCountOutgoing(t *testing.T, ss store.Store) {
|
||||
@@ -696,11 +589,7 @@ func testWebhookStoreCountOutgoing(t *testing.T, ss store.Store) {
|
||||
|
||||
ss.Webhook().SaveOutgoing(o1)
|
||||
|
||||
if r, err := ss.Webhook().AnalyticsOutgoingCount(""); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if r == 0 {
|
||||
t.Fatal("should have at least 1 outgoing hook")
|
||||
}
|
||||
}
|
||||
r, err := ss.Webhook().AnalyticsOutgoingCount("")
|
||||
require.Nil(t, err)
|
||||
require.NotEqual(t, 0, r, "should have at least 1 outgoing hook")
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user