summaryrefslogtreecommitdiffstats
path: root/api/auto_environment.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/auto_environment.go')
-rw-r--r--api/auto_environment.go97
1 files changed, 97 insertions, 0 deletions
diff --git a/api/auto_environment.go b/api/auto_environment.go
new file mode 100644
index 000000000..68186ec6c
--- /dev/null
+++ b/api/auto_environment.go
@@ -0,0 +1,97 @@
+// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package api
+
+import (
+ "github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
+ "math/rand"
+ "time"
+)
+
+type TestEnvironment struct {
+ Teams []*model.Team
+ Environments []TeamEnvironment
+}
+
+func CreateTestEnvironmentWithTeams(client *model.Client, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, bool) {
+ rand.Seed(time.Now().UTC().UnixNano())
+
+ teamCreator := NewAutoTeamCreator(client)
+ teamCreator.Fuzzy = fuzzy
+ teams, err := teamCreator.CreateTestTeams(rangeTeams)
+ if err != true {
+ return TestEnvironment{}, false
+ }
+
+ environment := TestEnvironment{teams, make([]TeamEnvironment, len(teams))}
+
+ for i, team := range teams {
+ userCreator := NewAutoUserCreator(client, team.Id)
+ userCreator.Fuzzy = fuzzy
+ randomUser, err := userCreator.createRandomUser()
+ if err != true {
+ return TestEnvironment{}, false
+ }
+ client.LoginById(randomUser.Id, USER_PASSWORD)
+ teamEnvironment, err := CreateTestEnvironmentInTeam(client, team.Id, rangeChannels, rangeUsers, rangePosts, fuzzy)
+ if err != true {
+ return TestEnvironment{}, false
+ }
+ environment.Environments[i] = teamEnvironment
+ }
+
+ return environment, true
+}
+
+func CreateTestEnvironmentInTeam(client *model.Client, teamID string, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, bool) {
+ rand.Seed(time.Now().UTC().UnixNano())
+
+ // We need to create at least one user
+ if rangeUsers.Begin <= 0 {
+ rangeUsers.Begin = 1
+ }
+
+ userCreator := NewAutoUserCreator(client, teamID)
+ userCreator.Fuzzy = fuzzy
+ users, err := userCreator.CreateTestUsers(rangeUsers)
+ if err != true {
+ return TeamEnvironment{}, false
+ }
+ usernames := make([]string, len(users))
+ for i, user := range users {
+ usernames[i] = user.Username
+ }
+
+ channelCreator := NewAutoChannelCreator(client, teamID)
+ channelCreator.Fuzzy = fuzzy
+ channels, err := channelCreator.CreateTestChannels(rangeChannels)
+
+ // Have every user join every channel
+ for _, user := range users {
+ for _, channel := range channels {
+ client.LoginById(user.Id, USER_PASSWORD)
+ client.JoinChannel(channel.Id)
+ }
+ }
+
+ if err != true {
+ return TeamEnvironment{}, false
+ }
+ numPosts := utils.RandIntFromRange(rangePosts)
+ numImages := utils.RandIntFromRange(rangePosts) / 4
+ for j := 0; j < numPosts; j++ {
+ user := users[utils.RandIntFromRange(utils.Range{0, len(users) - 1})]
+ client.LoginById(user.Id, USER_PASSWORD)
+ for i, channel := range channels {
+ postCreator := NewAutoPostCreator(client, channel.Id)
+ postCreator.HasImage = i < numImages
+ postCreator.Users = usernames
+ postCreator.Fuzzy = fuzzy
+ postCreator.CreateRandomPost()
+ }
+ }
+
+ return TeamEnvironment{users, channels}, true
+}