MM-21976: Include cache layer to be tested (#13749)

Этот коммит содержится в:
Mario de Frutos Dieguez
2020-03-04 14:18:03 +01:00
коммит произвёл GitHub
родитель c9a0418a32
Коммит b162cf92cd
9 изменённых файлов: 88 добавлений и 34 удалений

Просмотреть файл

@@ -54,6 +54,9 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); passErr != nil {
return passErr
}
a.InvalidateCacheForUser(user.Id)
return err
}
@@ -65,6 +68,9 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
return passErr
}
}
a.InvalidateCacheForUser(user.Id)
return err
}
@@ -72,6 +78,8 @@ func (a *App) CheckPasswordAndAllCriteria(user *model.User, password string, mfa
return passErr
}
a.InvalidateCacheForUser(user.Id)
if err := a.CheckUserPostflightAuthenticationCriteria(user); err != nil {
return err
}
@@ -89,6 +97,9 @@ func (a *App) DoubleCheckPassword(user *model.User, password string) *model.AppE
if passErr := a.Srv().Store.User().UpdateFailedPasswordAttempts(user.Id, user.FailedAttempts+1); passErr != nil {
return passErr
}
a.InvalidateCacheForUser(user.Id)
return err
}
@@ -96,6 +107,8 @@ func (a *App) DoubleCheckPassword(user *model.User, password string) *model.AppE
return passErr
}
a.InvalidateCacheForUser(user.Id)
return nil
}

Просмотреть файл

@@ -12,6 +12,7 @@ import (
"github.com/stretchr/testify/mock"
"github.com/mattermost/mattermost-server/v5/model"
"github.com/mattermost/mattermost-server/v5/store/localcachelayer"
"github.com/mattermost/mattermost-server/v5/store/sqlstore"
"github.com/mattermost/mattermost-server/v5/store/storetest/mocks"
"github.com/mattermost/mattermost-server/v5/utils"
@@ -125,7 +126,7 @@ func TestEnsureInstallationDate(t *testing.T) {
for _, tc := range tt {
t.Run(tc.Name, func(t *testing.T) {
sqlStore := th.App.Srv().Store.User().(*sqlstore.SqlUserStore)
sqlStore := th.App.Srv().Store.User().(localcachelayer.LocalCacheUserStore).UserStore.(*sqlstore.SqlUserStore)
sqlStore.GetMaster().Exec("DELETE FROM Users")
for _, createAt := range tc.UsersCreationDates {

Просмотреть файл

@@ -17,6 +17,7 @@ import (
"github.com/mattermost/mattermost-server/v5/mlog"
"github.com/mattermost/mattermost-server/v5/model"
"github.com/mattermost/mattermost-server/v5/store"
"github.com/mattermost/mattermost-server/v5/store/localcachelayer"
"github.com/mattermost/mattermost-server/v5/store/storetest/mocks"
"github.com/mattermost/mattermost-server/v5/testlib"
"github.com/mattermost/mattermost-server/v5/utils"
@@ -35,9 +36,11 @@ type TestHelper struct {
SystemAdminUser *model.User
tempWorkspace string
IncludeCacheLayer bool
}
func setupTestHelper(dbStore store.Store, enterprise bool, tb testing.TB, configSet func(*model.Config)) *TestHelper {
func setupTestHelper(dbStore store.Store, enterprise bool, includeCacheLayer bool, tb testing.TB, configSet func(*model.Config)) *TestHelper {
tempWorkspace, err := ioutil.TempDir("", "apptest")
if err != nil {
panic(err)
@@ -66,9 +69,15 @@ func setupTestHelper(dbStore store.Store, enterprise bool, tb testing.TB, config
panic(err)
}
if includeCacheLayer {
// Adds the cache layer to the test store
s.Store = localcachelayer.NewLocalCacheLayer(s.Store, s.Metrics, s.Cluster, s.CacheProvider)
}
th := &TestHelper{
App: s.FakeApp(),
Server: s,
App: s.FakeApp(),
Server: s,
IncludeCacheLayer: includeCacheLayer,
}
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.TeamSettings.MaxUsersPerTeam = 50 })
@@ -113,7 +122,7 @@ func SetupEnterprise(tb testing.TB) *TestHelper {
dbStore.DropAllTables()
dbStore.MarkSystemRanUnitTests()
return setupTestHelper(dbStore, true, tb, nil)
return setupTestHelper(dbStore, true, true, tb, nil)
}
func Setup(tb testing.TB) *TestHelper {
@@ -124,12 +133,12 @@ func Setup(tb testing.TB) *TestHelper {
dbStore.DropAllTables()
dbStore.MarkSystemRanUnitTests()
return setupTestHelper(dbStore, false, tb, nil)
return setupTestHelper(dbStore, false, true, tb, nil)
}
func SetupWithStoreMock(tb testing.TB) *TestHelper {
mockStore := testlib.GetMockStoreForSetupFunctions()
th := setupTestHelper(mockStore, false, tb, nil)
th := setupTestHelper(mockStore, false, false, tb, nil)
emptyMockStore := mocks.Store{}
emptyMockStore.On("Close").Return(nil)
th.App.Srv().Store = &emptyMockStore
@@ -138,7 +147,7 @@ func SetupWithStoreMock(tb testing.TB) *TestHelper {
func SetupEnterpriseWithStoreMock(tb testing.TB) *TestHelper {
mockStore := testlib.GetMockStoreForSetupFunctions()
th := setupTestHelper(mockStore, true, tb, nil)
th := setupTestHelper(mockStore, true, false, tb, nil)
emptyMockStore := mocks.Store{}
emptyMockStore.On("Close").Return(nil)
th.App.Srv().Store = &emptyMockStore
@@ -153,7 +162,7 @@ func SetupWithCustomConfig(tb testing.TB, configSet func(*model.Config)) *TestHe
dbStore.DropAllTables()
dbStore.MarkSystemRanUnitTests()
return setupTestHelper(dbStore, false, tb, configSet)
return setupTestHelper(dbStore, false, true, tb, configSet)
}
var initBasicOnce sync.Once
@@ -543,6 +552,10 @@ func (me *TestHelper) ShutdownApp() {
}
func (me *TestHelper) TearDown() {
if me.IncludeCacheLayer {
// Clean all the caches
me.App.InvalidateAllCaches()
}
me.ShutdownApp()
if err := recover(); err != nil {
panic(err)

Просмотреть файл

@@ -298,6 +298,7 @@ func TestAddUserToTeamByToken(t *testing.T) {
guestEmail := rguest.Email
rguest.Email = "test@restricted.com"
_, err := th.App.Srv().Store.User().Update(rguest, false)
th.App.InvalidateCacheForUser(rguest.Id)
require.Nil(t, err)
require.Nil(t, th.App.Srv().Store.Token().Save(token))
_, err = th.App.AddUserToTeamByToken(rguest.Id, token.Token)

Просмотреть файл

@@ -1279,6 +1279,8 @@ func (a *App) UpdatePassword(user *model.User, newPassword string) *model.AppErr
return model.NewAppError("UpdatePassword", "api.user.update_password.failed.app_error", nil, err.Error(), http.StatusInternalServerError)
}
a.InvalidateCacheForUser(user.Id)
return nil
}
@@ -1681,11 +1683,12 @@ func (a *App) GetTotalUsersStats(viewRestrictions *model.ViewUsersRestrictions)
}
func (a *App) VerifyUserEmail(userId, email string) *model.AppError {
_, err := a.Srv().Store.User().VerifyEmail(userId, email)
if err != nil {
if _, err := a.Srv().Store.User().VerifyEmail(userId, email); err != nil {
return err
}
a.InvalidateCacheForUser(userId)
user, err := a.GetUser(userId)
if err != nil {