// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. package app import ( "time" "github.com/mattermost/platform/model" "github.com/mattermost/platform/utils" l4g "github.com/alecthomas/log4go" ) type TestHelper struct { BasicTeam *model.Team BasicUser *model.User BasicUser2 *model.User BasicChannel *model.Channel BasicPost *model.Post } func (a *App) SetupEnterprise() *TestHelper { if a.Srv == nil { utils.TranslationsPreInit() utils.LoadConfig("config.json") utils.InitTranslations(utils.Cfg.LocalizationSettings) *utils.Cfg.TeamSettings.MaxUsersPerTeam = 50 *utils.Cfg.RateLimitSettings.Enable = false utils.DisableDebugLogForTest() utils.License().Features.SetDefaults() a.NewServer() a.InitStores() a.StartServer() utils.InitHTML() utils.EnableDebugLogForTest() a.Srv.Store.MarkSystemRanUnitTests() *utils.Cfg.TeamSettings.EnableOpenServer = true } return &TestHelper{} } func (a *App) Setup() *TestHelper { if a.Srv == nil { utils.TranslationsPreInit() utils.LoadConfig("config.json") utils.InitTranslations(utils.Cfg.LocalizationSettings) *utils.Cfg.TeamSettings.MaxUsersPerTeam = 50 *utils.Cfg.RateLimitSettings.Enable = false utils.DisableDebugLogForTest() a.NewServer() a.InitStores() a.StartServer() utils.InitHTML() utils.EnableDebugLogForTest() a.Srv.Store.MarkSystemRanUnitTests() *utils.Cfg.TeamSettings.EnableOpenServer = true } return &TestHelper{} } func (me *TestHelper) InitBasic() *TestHelper { me.BasicTeam = me.CreateTeam() me.BasicUser = me.CreateUser() Global().LinkUserToTeam(me.BasicUser, me.BasicTeam) me.BasicUser2 = me.CreateUser() Global().LinkUserToTeam(me.BasicUser2, me.BasicTeam) me.BasicChannel = me.CreateChannel(me.BasicTeam) me.BasicPost = me.CreatePost(me.BasicChannel) return me } func (me *TestHelper) MakeUsername() string { return "un_" + model.NewId() } func (me *TestHelper) MakeEmail() string { return "success_" + model.NewId() + "@simulator.amazonses.com" } func (me *TestHelper) CreateTeam() *model.Team { id := model.NewId() team := &model.Team{ DisplayName: "dn_" + id, Name: "name" + id, Email: "success+" + id + "@simulator.amazonses.com", Type: model.TEAM_OPEN, } utils.DisableDebugLogForTest() var err *model.AppError if team, err = Global().CreateTeam(team); err != nil { l4g.Error(err.Error()) l4g.Close() time.Sleep(time.Second) panic(err) } utils.EnableDebugLogForTest() return team } func (me *TestHelper) CreateUser() *model.User { id := model.NewId() user := &model.User{ Email: "success+" + id + "@simulator.amazonses.com", Username: "un_" + id, Nickname: "nn_" + id, Password: "Password1", EmailVerified: true, } utils.DisableDebugLogForTest() var err *model.AppError if user, err = Global().CreateUser(user); err != nil { l4g.Error(err.Error()) l4g.Close() time.Sleep(time.Second) panic(err) } utils.EnableDebugLogForTest() return user } func (me *TestHelper) CreateChannel(team *model.Team) *model.Channel { return me.createChannel(team, model.CHANNEL_OPEN) } func (me *TestHelper) CreatePrivateChannel(team *model.Team) *model.Channel { return me.createChannel(team, model.CHANNEL_PRIVATE) } func (me *TestHelper) createChannel(team *model.Team, channelType string) *model.Channel { id := model.NewId() channel := &model.Channel{ DisplayName: "dn_" + id, Name: "name_" + id, Type: channelType, TeamId: team.Id, CreatorId: me.BasicUser.Id, } utils.DisableDebugLogForTest() var err *model.AppError if channel, err = Global().CreateChannel(channel, true); err != nil { l4g.Error(err.Error()) l4g.Close() time.Sleep(time.Second) panic(err) } utils.EnableDebugLogForTest() return channel } func (me *TestHelper) CreatePost(channel *model.Channel) *model.Post { id := model.NewId() post := &model.Post{ UserId: me.BasicUser.Id, ChannelId: channel.Id, Message: "message_" + id, } utils.DisableDebugLogForTest() var err *model.AppError if post, err = Global().CreatePost(post, channel, false); err != nil { l4g.Error(err.Error()) l4g.Close() time.Sleep(time.Second) panic(err) } utils.EnableDebugLogForTest() return post } func (a *App) LinkUserToTeam(user *model.User, team *model.Team) { utils.DisableDebugLogForTest() err := a.JoinUserToTeam(team, user, "") if err != nil { l4g.Error(err.Error()) l4g.Close() time.Sleep(time.Second) panic(err) } utils.EnableDebugLogForTest() } func (a *App) TearDown() { if a.Srv != nil { a.StopServer() } }