mirror of
https://github.com/mattermost/focalboard.git
synced 2024-12-24 13:43:12 +02:00
605c0079eb
* skeleton lifecycle * bare minimum to satisfy mm-server import * added boards_imports.go * move boards_imports.go to correct package * bump mmserver version; remove replace in go.mod; use module workspaces; remove logger service * rename product.go --> boards.go * add FileInfoStore and Cloud services for product; create minimal pluginAPI interfaces for all packages * rename Boards -> BoardsProduct * compile success * remove hooks service; guard for nil BoardsApp * update to latest mmserver ver * upgrade mmserver to master tip * upgrade mmserver to master tip * bump plugin-api to master tip * fix users service * fix OnActivate crash; normalize AppError returns * fileBackend interface for server/app * feature flag * bump mmserver version * fix linter errors * make go.work when linting * fix go.work creation for CI * add execute flag for script * fix more linter errors * always create a go.work * fix ci go.work * OS agnostic go.work generator * fix path * fix path again * partially disable cypress test * fix case Id --> ID * bump mmserver version * include in go.work for dev * addressed review comments. Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
143 lines
3.5 KiB
Go
143 lines
3.5 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package boards
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/golang/mock/gomock"
|
|
"github.com/mattermost/focalboard/server/server"
|
|
"github.com/mattermost/focalboard/server/services/config"
|
|
"github.com/mattermost/focalboard/server/services/permissions/localpermissions"
|
|
"github.com/mattermost/focalboard/server/services/store/mockstore"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/mattermost/mattermost-server/v6/model"
|
|
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
|
)
|
|
|
|
type TestHelperMockStore struct {
|
|
Server *server.Server
|
|
Store *mockstore.MockStore
|
|
}
|
|
|
|
func SetupTestHelperMockStore(t *testing.T) (*TestHelperMockStore, func()) {
|
|
th := &TestHelperMockStore{}
|
|
|
|
origUnitTesting := os.Getenv("FOCALBOARD_UNIT_TESTING")
|
|
os.Setenv("FOCALBOARD_UNIT_TESTING", "1")
|
|
|
|
ctrl := gomock.NewController(t)
|
|
mockStore := mockstore.NewMockStore(ctrl)
|
|
|
|
tearDown := func() {
|
|
defer ctrl.Finish()
|
|
os.Setenv("FOCALBOARD_UNIT_TESTING", origUnitTesting)
|
|
}
|
|
|
|
th.Server = newTestServerMock(mockStore)
|
|
th.Store = mockStore
|
|
|
|
return th, tearDown
|
|
}
|
|
|
|
func newTestServerMock(mockStore *mockstore.MockStore) *server.Server {
|
|
config := &config.Configuration{
|
|
EnableDataRetention: false,
|
|
DataRetentionDays: 10,
|
|
FilesDriver: "local",
|
|
FilesPath: "./files",
|
|
WebPath: "/",
|
|
}
|
|
|
|
logger := mlog.CreateConsoleTestLogger(true, mlog.LvlDebug)
|
|
|
|
mockStore.EXPECT().GetTeam(gomock.Any()).Return(nil, nil).AnyTimes()
|
|
mockStore.EXPECT().UpsertTeamSignupToken(gomock.Any()).AnyTimes()
|
|
mockStore.EXPECT().GetSystemSettings().AnyTimes()
|
|
mockStore.EXPECT().SetSystemSetting(gomock.Any(), gomock.Any()).AnyTimes()
|
|
|
|
permissionsService := localpermissions.New(mockStore, logger)
|
|
|
|
srv, err := server.New(server.Params{
|
|
Cfg: config,
|
|
DBStore: mockStore,
|
|
Logger: logger,
|
|
PermissionsService: permissionsService,
|
|
})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return srv
|
|
}
|
|
|
|
func TestRunDataRetention(t *testing.T) {
|
|
th, tearDown := SetupTestHelperMockStore(t)
|
|
defer tearDown()
|
|
|
|
b := &BoardsApp{
|
|
server: th.Server,
|
|
logger: mlog.CreateConsoleTestLogger(true, mlog.LvlError),
|
|
}
|
|
|
|
now := time.Now().UnixNano()
|
|
|
|
t.Run("test null license", func(t *testing.T) {
|
|
th.Store.EXPECT().GetLicense().Return(nil)
|
|
_, err := b.RunDataRetention(now, 10)
|
|
assert.NotNil(t, err)
|
|
assert.Equal(t, ErrInsufficientLicense, err)
|
|
})
|
|
|
|
t.Run("test invalid license", func(t *testing.T) {
|
|
falseValue := false
|
|
|
|
th.Store.EXPECT().GetLicense().Return(
|
|
&model.License{
|
|
Features: &model.Features{
|
|
DataRetention: &falseValue,
|
|
},
|
|
},
|
|
)
|
|
_, err := b.RunDataRetention(now, 10)
|
|
assert.NotNil(t, err)
|
|
assert.Equal(t, ErrInsufficientLicense, err)
|
|
})
|
|
|
|
t.Run("test valid license, invalid config", func(t *testing.T) {
|
|
trueValue := true
|
|
th.Store.EXPECT().GetLicense().Return(
|
|
&model.License{
|
|
Features: &model.Features{
|
|
DataRetention: &trueValue,
|
|
},
|
|
})
|
|
|
|
count, err := b.RunDataRetention(now, 10)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, int64(0), count)
|
|
})
|
|
|
|
t.Run("test valid license, valid config", func(t *testing.T) {
|
|
trueValue := true
|
|
th.Store.EXPECT().GetLicense().Return(
|
|
&model.License{
|
|
Features: &model.Features{
|
|
DataRetention: &trueValue,
|
|
},
|
|
})
|
|
|
|
th.Store.EXPECT().RunDataRetention(gomock.Any(), int64(10)).Return(int64(100), nil)
|
|
b.server.Config().EnableDataRetention = true
|
|
|
|
count, err := b.RunDataRetention(now, 10)
|
|
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, int64(100), count)
|
|
})
|
|
}
|