github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/app/slashcommands/auto_teams.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package slashcommands
     5  
     6  import (
     7  	"github.com/masterhung0112/hk_server/v5/model"
     8  	"github.com/masterhung0112/hk_server/v5/utils"
     9  )
    10  
    11  type TeamEnvironment struct {
    12  	Users    []*model.User
    13  	Channels []*model.Channel
    14  }
    15  
    16  type AutoTeamCreator struct {
    17  	client        *model.Client4
    18  	Fuzzy         bool
    19  	NameLength    utils.Range
    20  	NameCharset   string
    21  	DomainLength  utils.Range
    22  	DomainCharset string
    23  	EmailLength   utils.Range
    24  	EmailCharset  string
    25  }
    26  
    27  func NewAutoTeamCreator(client *model.Client4) *AutoTeamCreator {
    28  	return &AutoTeamCreator{
    29  		client:        client,
    30  		Fuzzy:         false,
    31  		NameLength:    TeamNameLen,
    32  		NameCharset:   utils.LOWERCASE,
    33  		DomainLength:  TeamDomainNameLen,
    34  		DomainCharset: utils.LOWERCASE,
    35  		EmailLength:   TeamEmailLen,
    36  		EmailCharset:  utils.LOWERCASE,
    37  	}
    38  }
    39  
    40  func (cfg *AutoTeamCreator) createRandomTeam() (*model.Team, error) {
    41  	var teamEmail string
    42  	var teamDisplayName string
    43  	var teamName string
    44  	if cfg.Fuzzy {
    45  		teamEmail = "success+" + model.NewId() + "simulator.amazonses.com"
    46  		teamDisplayName = utils.FuzzName()
    47  		teamName = model.NewRandomTeamName()
    48  	} else {
    49  		teamEmail = "success+" + model.NewId() + "simulator.amazonses.com"
    50  		teamDisplayName = utils.RandomName(cfg.NameLength, cfg.NameCharset)
    51  		teamName = utils.RandomName(cfg.NameLength, cfg.NameCharset) + model.NewId()
    52  	}
    53  	team := &model.Team{
    54  		DisplayName: teamDisplayName,
    55  		Name:        teamName,
    56  		Email:       teamEmail,
    57  		Type:        model.TEAM_OPEN,
    58  	}
    59  
    60  	createdTeam, resp := cfg.client.CreateTeam(team)
    61  	if resp.Error != nil {
    62  		return nil, resp.Error
    63  	}
    64  	return createdTeam, nil
    65  }
    66  
    67  func (cfg *AutoTeamCreator) CreateTestTeams(num utils.Range) ([]*model.Team, error) {
    68  	numTeams := utils.RandIntFromRange(num)
    69  	teams := make([]*model.Team, numTeams)
    70  
    71  	for i := 0; i < numTeams; i++ {
    72  		var err error
    73  		teams[i], err = cfg.createRandomTeam()
    74  		if err != nil {
    75  			return nil, err
    76  		}
    77  	}
    78  
    79  	return teams, nil
    80  }