github.com/psyb0t/mattermost-server@v4.6.1-0.20180125161845-5503a1351abf+incompatible/app/auto_environment.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package app 5 6 import ( 7 "math/rand" 8 "time" 9 10 "github.com/mattermost/mattermost-server/model" 11 "github.com/mattermost/mattermost-server/utils" 12 ) 13 14 type TestEnvironment struct { 15 Teams []*model.Team 16 Environments []TeamEnvironment 17 } 18 19 func CreateTestEnvironmentWithTeams(a *App, client *model.Client, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, bool) { 20 rand.Seed(time.Now().UTC().UnixNano()) 21 22 teamCreator := NewAutoTeamCreator(client) 23 teamCreator.Fuzzy = fuzzy 24 teams, err := teamCreator.CreateTestTeams(rangeTeams) 25 if !err { 26 return TestEnvironment{}, false 27 } 28 29 environment := TestEnvironment{teams, make([]TeamEnvironment, len(teams))} 30 31 for i, team := range teams { 32 userCreator := NewAutoUserCreator(a, client, team) 33 userCreator.Fuzzy = fuzzy 34 randomUser, err := userCreator.createRandomUser() 35 if !err { 36 return TestEnvironment{}, false 37 } 38 client.LoginById(randomUser.Id, USER_PASSWORD) 39 client.SetTeamId(team.Id) 40 teamEnvironment, err := CreateTestEnvironmentInTeam(a, client, team, rangeChannels, rangeUsers, rangePosts, fuzzy) 41 if !err { 42 return TestEnvironment{}, false 43 } 44 environment.Environments[i] = teamEnvironment 45 } 46 47 return environment, true 48 } 49 50 func CreateTestEnvironmentInTeam(a *App, client *model.Client, team *model.Team, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, bool) { 51 rand.Seed(time.Now().UTC().UnixNano()) 52 53 // We need to create at least one user 54 if rangeUsers.Begin <= 0 { 55 rangeUsers.Begin = 1 56 } 57 58 userCreator := NewAutoUserCreator(a, client, team) 59 userCreator.Fuzzy = fuzzy 60 users, err := userCreator.CreateTestUsers(rangeUsers) 61 if !err { 62 return TeamEnvironment{}, false 63 } 64 usernames := make([]string, len(users)) 65 for i, user := range users { 66 usernames[i] = user.Username 67 } 68 69 channelCreator := NewAutoChannelCreator(client, team) 70 channelCreator.Fuzzy = fuzzy 71 channels, err := channelCreator.CreateTestChannels(rangeChannels) 72 73 // Have every user join every channel 74 for _, user := range users { 75 for _, channel := range channels { 76 client.LoginById(user.Id, USER_PASSWORD) 77 client.JoinChannel(channel.Id) 78 } 79 } 80 81 if !err { 82 return TeamEnvironment{}, false 83 } 84 85 numPosts := utils.RandIntFromRange(rangePosts) 86 numImages := utils.RandIntFromRange(rangePosts) / 4 87 for j := 0; j < numPosts; j++ { 88 user := users[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(users) - 1})] 89 client.LoginById(user.Id, USER_PASSWORD) 90 for i, channel := range channels { 91 postCreator := NewAutoPostCreator(client, channel.Id) 92 postCreator.HasImage = i < numImages 93 postCreator.Users = usernames 94 postCreator.Fuzzy = fuzzy 95 postCreator.CreateRandomPost() 96 } 97 } 98 99 return TeamEnvironment{users, channels}, true 100 }