коммит произвёл
GitHub
родитель
e88ba85d60
Коммит
4582823f87
@@ -32,7 +32,7 @@ func NewAutoChannelCreator(client *model.Client4, team *model.Team) *AutoChannel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoChannelCreator) createRandomChannel() (*model.Channel, bool) {
|
func (cfg *AutoChannelCreator) createRandomChannel() (*model.Channel, error) {
|
||||||
var displayName string
|
var displayName string
|
||||||
if cfg.Fuzzy {
|
if cfg.Fuzzy {
|
||||||
displayName = utils.FuzzName()
|
displayName = utils.FuzzName()
|
||||||
@@ -50,24 +50,22 @@ func (cfg *AutoChannelCreator) createRandomChannel() (*model.Channel, bool) {
|
|||||||
println(cfg.client.GetTeamRoute(cfg.team.Id))
|
println(cfg.client.GetTeamRoute(cfg.team.Id))
|
||||||
channel, resp := cfg.client.CreateChannel(channel)
|
channel, resp := cfg.client.CreateChannel(channel)
|
||||||
if resp.Error != nil {
|
if resp.Error != nil {
|
||||||
println(resp.Error.Error())
|
return nil, resp.Error
|
||||||
println(resp.Error.DetailedError)
|
|
||||||
return nil, false
|
|
||||||
}
|
}
|
||||||
return channel, true
|
return channel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoChannelCreator) CreateTestChannels(num utils.Range) ([]*model.Channel, bool) {
|
func (cfg *AutoChannelCreator) CreateTestChannels(num utils.Range) ([]*model.Channel, error) {
|
||||||
numChannels := utils.RandIntFromRange(num)
|
numChannels := utils.RandIntFromRange(num)
|
||||||
channels := make([]*model.Channel, numChannels)
|
channels := make([]*model.Channel, numChannels)
|
||||||
|
|
||||||
for i := 0; i < numChannels; i++ {
|
for i := 0; i < numChannels; i++ {
|
||||||
var err bool
|
var err error
|
||||||
channels[i], err = cfg.createRandomChannel()
|
channels[i], err = cfg.createRandomChannel()
|
||||||
if !err {
|
if err != nil {
|
||||||
return channels, false
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return channels, true
|
return channels, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ type TestEnvironment struct {
|
|||||||
Environments []TeamEnvironment
|
Environments []TeamEnvironment
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateTestEnvironmentWithTeams(a *App, client *model.Client4, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, bool) {
|
func CreateTestEnvironmentWithTeams(a *App, client *model.Client4, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, error) {
|
||||||
rand.Seed(time.Now().UTC().UnixNano())
|
rand.Seed(time.Now().UTC().UnixNano())
|
||||||
|
|
||||||
teamCreator := NewAutoTeamCreator(client)
|
teamCreator := NewAutoTeamCreator(client)
|
||||||
teamCreator.Fuzzy = fuzzy
|
teamCreator.Fuzzy = fuzzy
|
||||||
teams, err := teamCreator.CreateTestTeams(rangeTeams)
|
teams, err := teamCreator.CreateTestTeams(rangeTeams)
|
||||||
if !err {
|
if err != nil {
|
||||||
return TestEnvironment{}, false
|
return TestEnvironment{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
environment := TestEnvironment{teams, make([]TeamEnvironment, len(teams))}
|
environment := TestEnvironment{teams, make([]TeamEnvironment, len(teams))}
|
||||||
@@ -32,21 +32,21 @@ func CreateTestEnvironmentWithTeams(a *App, client *model.Client4, rangeTeams ut
|
|||||||
userCreator := NewAutoUserCreator(a, client, team)
|
userCreator := NewAutoUserCreator(a, client, team)
|
||||||
userCreator.Fuzzy = fuzzy
|
userCreator.Fuzzy = fuzzy
|
||||||
randomUser, err := userCreator.createRandomUser()
|
randomUser, err := userCreator.createRandomUser()
|
||||||
if !err {
|
if err != nil {
|
||||||
return TestEnvironment{}, false
|
return TestEnvironment{}, err
|
||||||
}
|
}
|
||||||
client.LoginById(randomUser.Id, USER_PASSWORD)
|
client.LoginById(randomUser.Id, USER_PASSWORD)
|
||||||
teamEnvironment, err := CreateTestEnvironmentInTeam(a, client, team, rangeChannels, rangeUsers, rangePosts, fuzzy)
|
teamEnvironment, err := CreateTestEnvironmentInTeam(a, client, team, rangeChannels, rangeUsers, rangePosts, fuzzy)
|
||||||
if !err {
|
if err != nil {
|
||||||
return TestEnvironment{}, false
|
return TestEnvironment{}, err
|
||||||
}
|
}
|
||||||
environment.Environments[i] = teamEnvironment
|
environment.Environments[i] = teamEnvironment
|
||||||
}
|
}
|
||||||
|
|
||||||
return environment, true
|
return environment, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateTestEnvironmentInTeam(a *App, client *model.Client4, team *model.Team, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, bool) {
|
func CreateTestEnvironmentInTeam(a *App, client *model.Client4, team *model.Team, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, error) {
|
||||||
rand.Seed(time.Now().UTC().UnixNano())
|
rand.Seed(time.Now().UTC().UnixNano())
|
||||||
|
|
||||||
// We need to create at least one user
|
// We need to create at least one user
|
||||||
@@ -57,8 +57,8 @@ func CreateTestEnvironmentInTeam(a *App, client *model.Client4, team *model.Team
|
|||||||
userCreator := NewAutoUserCreator(a, client, team)
|
userCreator := NewAutoUserCreator(a, client, team)
|
||||||
userCreator.Fuzzy = fuzzy
|
userCreator.Fuzzy = fuzzy
|
||||||
users, err := userCreator.CreateTestUsers(rangeUsers)
|
users, err := userCreator.CreateTestUsers(rangeUsers)
|
||||||
if !err {
|
if err != nil {
|
||||||
return TeamEnvironment{}, false
|
return TeamEnvironment{}, nil
|
||||||
}
|
}
|
||||||
usernames := make([]string, len(users))
|
usernames := make([]string, len(users))
|
||||||
for i, user := range users {
|
for i, user := range users {
|
||||||
@@ -68,32 +68,45 @@ func CreateTestEnvironmentInTeam(a *App, client *model.Client4, team *model.Team
|
|||||||
channelCreator := NewAutoChannelCreator(client, team)
|
channelCreator := NewAutoChannelCreator(client, team)
|
||||||
channelCreator.Fuzzy = fuzzy
|
channelCreator.Fuzzy = fuzzy
|
||||||
channels, err := channelCreator.CreateTestChannels(rangeChannels)
|
channels, err := channelCreator.CreateTestChannels(rangeChannels)
|
||||||
|
if err != nil {
|
||||||
|
return TeamEnvironment{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Have every user join every channel
|
// Have every user join every channel
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
for _, channel := range channels {
|
for _, channel := range channels {
|
||||||
client.LoginById(user.Id, USER_PASSWORD)
|
_, resp := client.LoginById(user.Id, USER_PASSWORD)
|
||||||
client.AddChannelMember(channel.Id, user.Id)
|
if resp.Error != nil {
|
||||||
}
|
return TeamEnvironment{}, resp.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
if !err {
|
_, resp = client.AddChannelMember(channel.Id, user.Id)
|
||||||
return TeamEnvironment{}, false
|
if resp.Error != nil {
|
||||||
|
return TeamEnvironment{}, resp.Error
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
numPosts := utils.RandIntFromRange(rangePosts)
|
numPosts := utils.RandIntFromRange(rangePosts)
|
||||||
numImages := utils.RandIntFromRange(rangePosts) / 4
|
numImages := utils.RandIntFromRange(rangePosts) / 4
|
||||||
for j := 0; j < numPosts; j++ {
|
for j := 0; j < numPosts; j++ {
|
||||||
user := users[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(users) - 1})]
|
user := users[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(users) - 1})]
|
||||||
client.LoginById(user.Id, USER_PASSWORD)
|
_, resp := client.LoginById(user.Id, USER_PASSWORD)
|
||||||
|
if resp.Error != nil {
|
||||||
|
return TeamEnvironment{}, resp.Error
|
||||||
|
}
|
||||||
|
|
||||||
for i, channel := range channels {
|
for i, channel := range channels {
|
||||||
postCreator := NewAutoPostCreator(client, channel.Id)
|
postCreator := NewAutoPostCreator(client, channel.Id)
|
||||||
postCreator.HasImage = i < numImages
|
postCreator.HasImage = i < numImages
|
||||||
postCreator.Users = usernames
|
postCreator.Users = usernames
|
||||||
postCreator.Fuzzy = fuzzy
|
postCreator.Fuzzy = fuzzy
|
||||||
postCreator.CreateRandomPost()
|
_, err := postCreator.CreateRandomPost()
|
||||||
|
if err != nil {
|
||||||
|
return TeamEnvironment{}, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TeamEnvironment{users, channels}, true
|
return TeamEnvironment{users, channels}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,41 +41,41 @@ func NewAutoPostCreator(client *model.Client4, channelid string) *AutoPostCreato
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoPostCreator) UploadTestFile() ([]string, bool) {
|
func (cfg *AutoPostCreator) UploadTestFile() ([]string, error) {
|
||||||
filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(cfg.ImageFilenames) - 1})]
|
filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(cfg.ImageFilenames) - 1})]
|
||||||
|
|
||||||
path, _ := fileutils.FindDir("web/static/images")
|
path, _ := fileutils.FindDir("tests")
|
||||||
file, err := os.Open(filepath.Join(path, filename))
|
file, err := os.Open(filepath.Join(path, filename))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false
|
return nil, err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
data := &bytes.Buffer{}
|
data := &bytes.Buffer{}
|
||||||
_, err = io.Copy(data, file)
|
_, err = io.Copy(data, file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, appErr := cfg.client.UploadFile(data.Bytes(), cfg.channelid, filename)
|
fileResp, resp := cfg.client.UploadFile(data.Bytes(), cfg.channelid, filename)
|
||||||
if appErr != nil {
|
if resp.Error != nil {
|
||||||
return nil, false
|
return nil, resp.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
return []string{resp.FileInfos[0].Id}, true
|
return []string{fileResp.FileInfos[0].Id}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoPostCreator) CreateRandomPost() (*model.Post, bool) {
|
func (cfg *AutoPostCreator) CreateRandomPost() (*model.Post, error) {
|
||||||
return cfg.CreateRandomPostNested("", "")
|
return cfg.CreateRandomPostNested("", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoPostCreator) CreateRandomPostNested(parentId, rootId string) (*model.Post, bool) {
|
func (cfg *AutoPostCreator) CreateRandomPostNested(parentId, rootId string) (*model.Post, error) {
|
||||||
var fileIds []string
|
var fileIds []string
|
||||||
if cfg.HasImage {
|
if cfg.HasImage {
|
||||||
var err1 bool
|
var err error
|
||||||
fileIds, err1 = cfg.UploadTestFile()
|
fileIds, err = cfg.UploadTestFile()
|
||||||
if !err1 {
|
if err != nil {
|
||||||
return nil, false
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,8 +93,8 @@ func (cfg *AutoPostCreator) CreateRandomPostNested(parentId, rootId string) (*mo
|
|||||||
Message: postText,
|
Message: postText,
|
||||||
FileIds: fileIds}
|
FileIds: fileIds}
|
||||||
rpost, resp := cfg.client.CreatePost(post)
|
rpost, resp := cfg.client.CreatePost(post)
|
||||||
if resp != nil && resp.Error != nil {
|
if resp.Error != nil {
|
||||||
return nil, false
|
return nil, resp.Error
|
||||||
}
|
}
|
||||||
return rpost, true
|
return rpost, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,14 +37,14 @@ func NewAutoTeamCreator(client *model.Client4) *AutoTeamCreator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoTeamCreator) createRandomTeam() (*model.Team, bool) {
|
func (cfg *AutoTeamCreator) createRandomTeam() (*model.Team, error) {
|
||||||
var teamEmail string
|
var teamEmail string
|
||||||
var teamDisplayName string
|
var teamDisplayName string
|
||||||
var teamName string
|
var teamName string
|
||||||
if cfg.Fuzzy {
|
if cfg.Fuzzy {
|
||||||
teamEmail = "success+" + model.NewId() + "simulator.amazonses.com"
|
teamEmail = "success+" + model.NewId() + "simulator.amazonses.com"
|
||||||
teamDisplayName = utils.FuzzName()
|
teamDisplayName = utils.FuzzName()
|
||||||
teamName = utils.FuzzName()
|
teamName = model.NewRandomTeamName()
|
||||||
} else {
|
} else {
|
||||||
teamEmail = "success+" + model.NewId() + "simulator.amazonses.com"
|
teamEmail = "success+" + model.NewId() + "simulator.amazonses.com"
|
||||||
teamDisplayName = utils.RandomName(cfg.NameLength, cfg.NameCharset)
|
teamDisplayName = utils.RandomName(cfg.NameLength, cfg.NameCharset)
|
||||||
@@ -57,24 +57,24 @@ func (cfg *AutoTeamCreator) createRandomTeam() (*model.Team, bool) {
|
|||||||
Type: model.TEAM_OPEN,
|
Type: model.TEAM_OPEN,
|
||||||
}
|
}
|
||||||
|
|
||||||
createdTeam, err := cfg.client.CreateTeam(team)
|
createdTeam, resp := cfg.client.CreateTeam(team)
|
||||||
if err != nil {
|
if resp.Error != nil {
|
||||||
return nil, false
|
return nil, resp.Error
|
||||||
}
|
}
|
||||||
return createdTeam, true
|
return createdTeam, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoTeamCreator) CreateTestTeams(num utils.Range) ([]*model.Team, bool) {
|
func (cfg *AutoTeamCreator) CreateTestTeams(num utils.Range) ([]*model.Team, error) {
|
||||||
numTeams := utils.RandIntFromRange(num)
|
numTeams := utils.RandIntFromRange(num)
|
||||||
teams := make([]*model.Team, numTeams)
|
teams := make([]*model.Team, numTeams)
|
||||||
|
|
||||||
for i := 0; i < numTeams; i++ {
|
for i := 0; i < numTeams; i++ {
|
||||||
var err bool
|
var err error
|
||||||
teams[i], err = cfg.createRandomTeam()
|
teams[i], err = cfg.createRandomTeam()
|
||||||
if !err {
|
if err != nil {
|
||||||
return teams, false
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return teams, true
|
return teams, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/mattermost/mattermost-server/v5/mlog"
|
|
||||||
"github.com/mattermost/mattermost-server/v5/model"
|
"github.com/mattermost/mattermost-server/v5/model"
|
||||||
"github.com/mattermost/mattermost-server/v5/utils"
|
"github.com/mattermost/mattermost-server/v5/utils"
|
||||||
)
|
)
|
||||||
@@ -36,7 +35,10 @@ func NewAutoUserCreator(a *App, client *model.Client4, team *model.Team) *AutoUs
|
|||||||
// Basic test team and user so you always know one
|
// Basic test team and user so you always know one
|
||||||
func (a *App) CreateBasicUser(client *model.Client4) *model.AppError {
|
func (a *App) CreateBasicUser(client *model.Client4) *model.AppError {
|
||||||
found, _ := client.TeamExists(BTEST_TEAM_NAME, "")
|
found, _ := client.TeamExists(BTEST_TEAM_NAME, "")
|
||||||
if !found {
|
if found {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
newteam := &model.Team{DisplayName: BTEST_TEAM_DISPLAY_NAME, Name: BTEST_TEAM_NAME, Email: BTEST_TEAM_EMAIL, Type: BTEST_TEAM_TYPE}
|
newteam := &model.Team{DisplayName: BTEST_TEAM_DISPLAY_NAME, Name: BTEST_TEAM_NAME, Email: BTEST_TEAM_EMAIL, Type: BTEST_TEAM_TYPE}
|
||||||
basicteam, resp := client.CreateTeam(newteam)
|
basicteam, resp := client.CreateTeam(newteam)
|
||||||
if resp.Error != nil {
|
if resp.Error != nil {
|
||||||
@@ -54,11 +56,11 @@ func (a *App) CreateBasicUser(client *model.Client4) *model.AppError {
|
|||||||
if _, err = a.Srv().Store.Team().SaveMember(&model.TeamMember{TeamId: basicteam.Id, UserId: ruser.Id}, *a.Config().TeamSettings.MaxUsersPerTeam); err != nil {
|
if _, err = a.Srv().Store.Team().SaveMember(&model.TeamMember{TeamId: basicteam.Id, UserId: ruser.Id}, *a.Config().TeamSettings.MaxUsersPerTeam); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoUserCreator) createRandomUser() (*model.User, bool) {
|
func (cfg *AutoUserCreator) createRandomUser() (*model.User, error) {
|
||||||
var userEmail string
|
var userEmail string
|
||||||
var userName string
|
var userName string
|
||||||
if cfg.Fuzzy {
|
if cfg.Fuzzy {
|
||||||
@@ -76,36 +78,34 @@ func (cfg *AutoUserCreator) createRandomUser() (*model.User, bool) {
|
|||||||
|
|
||||||
ruser, resp := cfg.client.CreateUserWithInviteId(user, cfg.team.InviteId)
|
ruser, resp := cfg.client.CreateUserWithInviteId(user, cfg.team.InviteId)
|
||||||
if resp.Error != nil {
|
if resp.Error != nil {
|
||||||
mlog.Error(resp.Error.Error())
|
return nil, resp.Error
|
||||||
return nil, false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
status := &model.Status{UserId: ruser.Id, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
|
status := &model.Status{UserId: ruser.Id, Status: model.STATUS_ONLINE, Manual: false, LastActivityAt: model.GetMillis(), ActiveChannel: ""}
|
||||||
if err := cfg.app.Srv().Store.Status().SaveOrUpdate(status); err != nil {
|
if err := cfg.app.Srv().Store.Status().SaveOrUpdate(status); err != nil {
|
||||||
mlog.Error(err.Error())
|
return nil, err
|
||||||
return nil, false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to cheat to verify the user's email
|
// We need to cheat to verify the user's email
|
||||||
_, err := cfg.app.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email)
|
_, err := cfg.app.Srv().Store.User().VerifyEmail(ruser.Id, ruser.Email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return ruser, true
|
return ruser, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoUserCreator) CreateTestUsers(num utils.Range) ([]*model.User, bool) {
|
func (cfg *AutoUserCreator) CreateTestUsers(num utils.Range) ([]*model.User, error) {
|
||||||
numUsers := utils.RandIntFromRange(num)
|
numUsers := utils.RandIntFromRange(num)
|
||||||
users := make([]*model.User, numUsers)
|
users := make([]*model.User, numUsers)
|
||||||
|
|
||||||
for i := 0; i < numUsers; i++ {
|
for i := 0; i < numUsers; i++ {
|
||||||
var err bool
|
var err error
|
||||||
users[i], err = cfg.createRandomUser()
|
users[i], err = cfg.createRandomUser()
|
||||||
if !err {
|
if err != nil {
|
||||||
return users, false
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return users, true
|
return users, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/mattermost/mattermost-server/v5/mlog"
|
"github.com/mattermost/mattermost-server/v5/mlog"
|
||||||
"github.com/mattermost/mattermost-server/v5/model"
|
"github.com/mattermost/mattermost-server/v5/model"
|
||||||
"github.com/mattermost/mattermost-server/v5/utils"
|
"github.com/mattermost/mattermost-server/v5/utils"
|
||||||
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
var usage = `Mattermost testing commands to help configure the system
|
var usage = `Mattermost testing commands to help configure the system
|
||||||
@@ -105,9 +106,18 @@ func (me *LoadTestProvider) GetCommand(a *App, T goi18n.TranslateFunc) *model.Co
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) DoCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) DoCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
|
commandResponse, err := me.doCommand(a, args, message)
|
||||||
|
if err != nil {
|
||||||
|
mlog.Error("failed command /"+CMD_TEST, mlog.Err(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return commandResponse
|
||||||
|
}
|
||||||
|
|
||||||
|
func (me *LoadTestProvider) doCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
//This command is only available when EnableTesting is true
|
//This command is only available when EnableTesting is true
|
||||||
if !*a.Config().ServiceSettings.EnableTesting {
|
if !*a.Config().ServiceSettings.EnableTesting {
|
||||||
return &model.CommandResponse{}
|
return &model.CommandResponse{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(message, "setup") {
|
if strings.HasPrefix(message, "setup") {
|
||||||
@@ -145,17 +155,19 @@ func (me *LoadTestProvider) DoCommand(a *App, args *model.CommandArgs, message s
|
|||||||
if strings.HasPrefix(message, "url") {
|
if strings.HasPrefix(message, "url") {
|
||||||
return me.UrlCommand(a, args, message)
|
return me.UrlCommand(a, args, message)
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(message, "json") {
|
if strings.HasPrefix(message, "json") {
|
||||||
return me.JsonCommand(a, args, message)
|
return me.JsonCommand(a, args, message)
|
||||||
}
|
}
|
||||||
return me.HelpCommand(args, message)
|
|
||||||
|
return me.HelpCommand(args, message), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) HelpCommand(args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) HelpCommand(args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
return &model.CommandResponse{Text: usage, ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: usage, ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) SetupCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) SetupCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
tokens := strings.Fields(strings.TrimPrefix(message, "setup"))
|
tokens := strings.Fields(strings.TrimPrefix(message, "setup"))
|
||||||
doTeams := contains(tokens, "teams")
|
doTeams := contains(tokens, "teams")
|
||||||
doFuzz := contains(tokens, "fuzz")
|
doFuzz := contains(tokens, "fuzz")
|
||||||
@@ -194,12 +206,16 @@ func (me *LoadTestProvider) SetupCommand(a *App, args *model.CommandArgs, messag
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
client := model.NewAPIv4Client(args.SiteURL)
|
client := model.NewAPIv4Client(args.SiteURL)
|
||||||
|
client.SetToken(args.Session.Token)
|
||||||
|
|
||||||
if doTeams {
|
if doTeams {
|
||||||
if err := a.CreateBasicUser(client); err != nil {
|
if err := a.CreateBasicUser(client); err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
|
}
|
||||||
|
_, resp := client.Login(BTEST_USER_EMAIL, BTEST_USER_PASSWORD)
|
||||||
|
if resp.Error != nil {
|
||||||
|
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, resp.Error
|
||||||
}
|
}
|
||||||
client.Login(BTEST_USER_EMAIL, BTEST_USER_PASSWORD)
|
|
||||||
environment, err := CreateTestEnvironmentWithTeams(
|
environment, err := CreateTestEnvironmentWithTeams(
|
||||||
a,
|
a,
|
||||||
client,
|
client,
|
||||||
@@ -208,22 +224,21 @@ func (me *LoadTestProvider) SetupCommand(a *App, args *model.CommandArgs, messag
|
|||||||
utils.Range{Begin: numUsers, End: numUsers},
|
utils.Range{Begin: numUsers, End: numUsers},
|
||||||
utils.Range{Begin: numPosts, End: numPosts},
|
utils.Range{Begin: numPosts, End: numPosts},
|
||||||
doFuzz)
|
doFuzz)
|
||||||
if !err {
|
if err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
} else {
|
}
|
||||||
|
|
||||||
mlog.Info("Testing environment created")
|
mlog.Info("Testing environment created")
|
||||||
for i := 0; i < len(environment.Teams); i++ {
|
for i := 0; i < len(environment.Teams); i++ {
|
||||||
mlog.Info("Team Created: " + environment.Teams[i].Name)
|
mlog.Info("Team Created: " + environment.Teams[i].Name)
|
||||||
mlog.Info("\t User to login: " + environment.Environments[i].Users[0].Email + ", " + USER_PASSWORD)
|
mlog.Info("\t User to login: " + environment.Environments[i].Users[0].Email + ", " + USER_PASSWORD)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
team, err := a.Srv().Store.Team().Get(args.TeamId)
|
team, err := a.Srv().Store.Team().Get(args.TeamId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
client.SetToken(args.Session.Token)
|
|
||||||
CreateTestEnvironmentInTeam(
|
CreateTestEnvironmentInTeam(
|
||||||
a,
|
a,
|
||||||
client,
|
client,
|
||||||
@@ -234,26 +249,28 @@ func (me *LoadTestProvider) SetupCommand(a *App, args *model.CommandArgs, messag
|
|||||||
doFuzz)
|
doFuzz)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &model.CommandResponse{Text: "Created environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Created environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) ActivateUserCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) ActivateUserCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
user_id := strings.TrimSpace(strings.TrimPrefix(message, "activate_user"))
|
user_id := strings.TrimSpace(strings.TrimPrefix(message, "activate_user"))
|
||||||
if err := a.UpdateUserActive(user_id, true); err != nil {
|
if err := a.UpdateUserActive(user_id, true); err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to activate user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to activate user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
|
||||||
return &model.CommandResponse{Text: "Activated user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) DeActivateUserCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
return &model.CommandResponse{Text: "Activated user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (me *LoadTestProvider) DeActivateUserCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
user_id := strings.TrimSpace(strings.TrimPrefix(message, "deactivate_user"))
|
user_id := strings.TrimSpace(strings.TrimPrefix(message, "deactivate_user"))
|
||||||
if err := a.UpdateUserActive(user_id, false); err != nil {
|
if err := a.UpdateUserActive(user_id, false); err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to deactivate user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to deactivate user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
|
||||||
return &model.CommandResponse{Text: "DeActivated user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) UsersCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
return &model.CommandResponse{Text: "DeActivated user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (me *LoadTestProvider) UsersCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
cmd := strings.TrimSpace(strings.TrimPrefix(message, "users"))
|
cmd := strings.TrimSpace(strings.TrimPrefix(message, "users"))
|
||||||
|
|
||||||
doFuzz := false
|
doFuzz := false
|
||||||
@@ -269,7 +286,7 @@ func (me *LoadTestProvider) UsersCommand(a *App, args *model.CommandArgs, messag
|
|||||||
|
|
||||||
team, err := a.Srv().Store.Team().Get(args.TeamId)
|
team, err := a.Srv().Store.Team().Get(args.TeamId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to add users", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
client := model.NewAPIv4Client(args.SiteURL)
|
client := model.NewAPIv4Client(args.SiteURL)
|
||||||
@@ -277,10 +294,10 @@ func (me *LoadTestProvider) UsersCommand(a *App, args *model.CommandArgs, messag
|
|||||||
userCreator.Fuzzy = doFuzz
|
userCreator.Fuzzy = doFuzz
|
||||||
userCreator.CreateTestUsers(usersr)
|
userCreator.CreateTestUsers(usersr)
|
||||||
|
|
||||||
return &model.CommandResponse{Text: "Added users", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Added users", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) ChannelsCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) ChannelsCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
cmd := strings.TrimSpace(strings.TrimPrefix(message, "channels"))
|
cmd := strings.TrimSpace(strings.TrimPrefix(message, "channels"))
|
||||||
|
|
||||||
doFuzz := false
|
doFuzz := false
|
||||||
@@ -296,7 +313,7 @@ func (me *LoadTestProvider) ChannelsCommand(a *App, args *model.CommandArgs, mes
|
|||||||
|
|
||||||
team, err := a.Srv().Store.Team().Get(args.TeamId)
|
team, err := a.Srv().Store.Team().Get(args.TeamId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to add channels", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
client := model.NewAPIv4Client(args.SiteURL)
|
client := model.NewAPIv4Client(args.SiteURL)
|
||||||
@@ -305,10 +322,10 @@ func (me *LoadTestProvider) ChannelsCommand(a *App, args *model.CommandArgs, mes
|
|||||||
channelCreator.Fuzzy = doFuzz
|
channelCreator.Fuzzy = doFuzz
|
||||||
channelCreator.CreateTestChannels(channelsr)
|
channelCreator.CreateTestChannels(channelsr)
|
||||||
|
|
||||||
return &model.CommandResponse{Text: "Added channels", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Added channels", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) ThreadedPostCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) ThreadedPostCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
var usernames []string
|
var usernames []string
|
||||||
options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000}
|
options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000}
|
||||||
if profileUsers, err := a.Srv().Store.User().GetProfiles(options); err == nil {
|
if profileUsers, err := a.Srv().Store.User().GetProfiles(options); err == nil {
|
||||||
@@ -325,18 +342,18 @@ func (me *LoadTestProvider) ThreadedPostCommand(a *App, args *model.CommandArgs,
|
|||||||
testPoster := NewAutoPostCreator(client, args.ChannelId)
|
testPoster := NewAutoPostCreator(client, args.ChannelId)
|
||||||
testPoster.Fuzzy = true
|
testPoster.Fuzzy = true
|
||||||
testPoster.Users = usernames
|
testPoster.Users = usernames
|
||||||
rpost, ok := testPoster.CreateRandomPost()
|
rpost, err := testPoster.CreateRandomPost()
|
||||||
if !ok {
|
if err != nil {
|
||||||
return &model.CommandResponse{Text: "Cannot create a post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to create a post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
for i := 0; i < 1000; i++ {
|
for i := 0; i < 1000; i++ {
|
||||||
testPoster.CreateRandomPostNested(rpost.Id, rpost.Id)
|
testPoster.CreateRandomPostNested(rpost.Id, rpost.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &model.CommandResponse{Text: "Added threaded post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Added threaded post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) PostsCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) PostsCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
cmd := strings.TrimSpace(strings.TrimPrefix(message, "posts"))
|
cmd := strings.TrimSpace(strings.TrimPrefix(message, "posts"))
|
||||||
|
|
||||||
doFuzz := false
|
doFuzz := false
|
||||||
@@ -379,10 +396,14 @@ func (me *LoadTestProvider) PostsCommand(a *App, args *model.CommandArgs, messag
|
|||||||
numPosts := utils.RandIntFromRange(postsr)
|
numPosts := utils.RandIntFromRange(postsr)
|
||||||
for i := 0; i < numPosts; i++ {
|
for i := 0; i < numPosts; i++ {
|
||||||
testPoster.HasImage = (i < numImages)
|
testPoster.HasImage = (i < numImages)
|
||||||
testPoster.CreateRandomPost()
|
_, err := testPoster.CreateRandomPost()
|
||||||
|
if err != nil {
|
||||||
|
return &model.CommandResponse{Text: "Failed to add posts", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &model.CommandResponse{Text: "Added posts", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
}
|
||||||
|
|
||||||
|
return &model.CommandResponse{Text: "Added posts", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getMatch(re *regexp.Regexp, text string) string {
|
func getMatch(re *regexp.Regexp, text string) string {
|
||||||
@@ -393,35 +414,35 @@ func getMatch(re *regexp.Regexp, text string) string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) PostCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) PostCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
textMessage := getMatch(messageRE, message)
|
textMessage := getMatch(messageRE, message)
|
||||||
if textMessage == "" {
|
if textMessage == "" {
|
||||||
return &model.CommandResponse{Text: "No message to post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "No message to post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
teamName := getMatch(teamRE, message)
|
teamName := getMatch(teamRE, message)
|
||||||
team, err := a.GetTeamByName(teamName)
|
team, err := a.GetTeamByName(teamName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to get a team", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to get a team", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
channelName := getMatch(channelRE, message)
|
channelName := getMatch(channelRE, message)
|
||||||
channel, err := a.GetChannelByName(channelName, team.Id, true)
|
channel, err := a.GetChannelByName(channelName, team.Id, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to get a channel", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to get a channel", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
passwd := getMatch(passwdRE, message)
|
passwd := getMatch(passwdRE, message)
|
||||||
username := getMatch(userRE, message)
|
username := getMatch(userRE, message)
|
||||||
user, err := a.GetUserByUsername(username)
|
user, err := a.GetUserByUsername(username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to get a user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to get a user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
client := model.NewAPIv4Client(args.SiteURL)
|
client := model.NewAPIv4Client(args.SiteURL)
|
||||||
_, resp := client.LoginById(user.Id, passwd)
|
_, resp := client.LoginById(user.Id, passwd)
|
||||||
if resp != nil && resp.Error != nil {
|
if resp.Error != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to login a user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to login a user", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, resp.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
post := &model.Post{
|
post := &model.Post{
|
||||||
@@ -429,17 +450,17 @@ func (me *LoadTestProvider) PostCommand(a *App, args *model.CommandArgs, message
|
|||||||
Message: textMessage,
|
Message: textMessage,
|
||||||
}
|
}
|
||||||
_, resp = client.CreatePost(post)
|
_, resp = client.CreatePost(post)
|
||||||
if resp != nil && resp.Error != nil {
|
if resp.Error != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to create a post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Failed to create a post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, resp.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
return &model.CommandResponse{Text: "Added a post to " + channel.DisplayName, ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Added a post to " + channel.DisplayName, ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) UrlCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) UrlCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
url := strings.TrimSpace(strings.TrimPrefix(message, "url"))
|
url := strings.TrimSpace(strings.TrimPrefix(message, "url"))
|
||||||
if len(url) == 0 {
|
if len(url) == 0 {
|
||||||
return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide a shortcut to easily access tests stored in doc/developer/tests
|
// provide a shortcut to easily access tests stored in doc/developer/tests
|
||||||
@@ -453,9 +474,9 @@ func (me *LoadTestProvider) UrlCommand(a *App, args *model.CommandArgs, message
|
|||||||
|
|
||||||
var contents io.ReadCloser
|
var contents io.ReadCloser
|
||||||
if r, err := http.Get(url); err != nil {
|
if r, err := http.Get(url); err != nil {
|
||||||
return &model.CommandResponse{Text: "Unable to get file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Unable to get file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
} else if r.StatusCode > 400 {
|
} else if r.StatusCode > 400 {
|
||||||
return &model.CommandResponse{Text: "Unable to get file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Unable to get file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, errors.Errorf("unexpected status code %d", r.StatusCode)
|
||||||
} else {
|
} else {
|
||||||
contents = r.Body
|
contents = r.Body
|
||||||
}
|
}
|
||||||
@@ -466,7 +487,7 @@ func (me *LoadTestProvider) UrlCommand(a *App, args *model.CommandArgs, message
|
|||||||
for {
|
for {
|
||||||
length, err := contents.Read(bytes)
|
length, err := contents.Read(bytes)
|
||||||
if err != nil && err != io.EOF {
|
if err != nil && err != io.EOF {
|
||||||
return &model.CommandResponse{Text: "Encountered error reading file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Encountered error reading file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if length == 0 {
|
if length == 0 {
|
||||||
@@ -479,17 +500,17 @@ func (me *LoadTestProvider) UrlCommand(a *App, args *model.CommandArgs, message
|
|||||||
post.UserId = args.UserId
|
post.UserId = args.UserId
|
||||||
|
|
||||||
if _, err := a.CreatePostMissingChannel(post, false); err != nil {
|
if _, err := a.CreatePostMissingChannel(post, false); err != nil {
|
||||||
return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &model.CommandResponse{Text: "Loaded data", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Loaded data", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (me *LoadTestProvider) JsonCommand(a *App, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (me *LoadTestProvider) JsonCommand(a *App, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
url := strings.TrimSpace(strings.TrimPrefix(message, "json"))
|
url := strings.TrimSpace(strings.TrimPrefix(message, "json"))
|
||||||
if len(url) == 0 {
|
if len(url) == 0 {
|
||||||
return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// provide a shortcut to easily access tests stored in doc/developer/tests
|
// provide a shortcut to easily access tests stored in doc/developer/tests
|
||||||
@@ -503,9 +524,9 @@ func (me *LoadTestProvider) JsonCommand(a *App, args *model.CommandArgs, message
|
|||||||
|
|
||||||
var contents io.ReadCloser
|
var contents io.ReadCloser
|
||||||
if r, err := http.Get(url); err != nil {
|
if r, err := http.Get(url); err != nil {
|
||||||
return &model.CommandResponse{Text: "Unable to get file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Unable to get file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
} else if r.StatusCode > 400 {
|
} else if r.StatusCode > 400 {
|
||||||
return &model.CommandResponse{Text: "Unable to get file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Unable to get file", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, errors.Errorf("unexpected status code %d", r.StatusCode)
|
||||||
} else {
|
} else {
|
||||||
contents = r.Body
|
contents = r.Body
|
||||||
}
|
}
|
||||||
@@ -518,9 +539,10 @@ func (me *LoadTestProvider) JsonCommand(a *App, args *model.CommandArgs, message
|
|||||||
}
|
}
|
||||||
|
|
||||||
if _, err := a.CreatePostMissingChannel(post, false); err != nil {
|
if _, err := a.CreatePostMissingChannel(post, false); err != nil {
|
||||||
return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
return &model.CommandResponse{Text: "Unable to create post", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, err
|
||||||
}
|
}
|
||||||
return &model.CommandResponse{Text: "Loaded data", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}
|
|
||||||
|
return &model.CommandResponse{Text: "Loaded data", ResponseType: model.COMMAND_RESPONSE_TYPE_EPHEMERAL}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseRange(command string, cmd string) (utils.Range, bool) {
|
func parseRange(command string, cmd string) (utils.Range, bool) {
|
||||||
|
|||||||
Двоичные данные
tests/testjpg.jpg
Обычный файл
Двоичные данные
tests/testjpg.jpg
Обычный файл
Двоичный файл не отображается.
|
После Ширина: | Высота: | Размер: 40 KiB |
Ссылка в новой задаче
Block a user