summaryrefslogtreecommitdiffstats
path: root/store/sql_team_store_test.go
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2017-06-06 14:39:31 -0400
committerJoram Wilander <jwawilander@gmail.com>2017-06-06 14:39:31 -0400
commit4d7b3b5687afe8e1bc069bce21f399b2f8bd6187 (patch)
tree95c7f2e9a329022e41f4d492b1f5a9542c99c114 /store/sql_team_store_test.go
parent3dc625a8bdafd34f924a08938fedf13b271af24e (diff)
downloadchat-4d7b3b5687afe8e1bc069bce21f399b2f8bd6187.tar.gz
chat-4d7b3b5687afe8e1bc069bce21f399b2f8bd6187.tar.bz2
chat-4d7b3b5687afe8e1bc069bce21f399b2f8bd6187.zip
PLT-6752/PLT-6755 Fixed users removed from a team counting against max team members (#6578)
* PLT-6752 Fixed users removed from a team counting against max team members * Updated unit tests for max team members * Fixed being able to have MaxUserPerTeam+1 users in a team
Diffstat (limited to 'store/sql_team_store_test.go')
-rw-r--r--store/sql_team_store_test.go96
1 files changed, 96 insertions, 0 deletions
diff --git a/store/sql_team_store_test.go b/store/sql_team_store_test.go
index ea3d406d3..f49124b09 100644
--- a/store/sql_team_store_test.go
+++ b/store/sql_team_store_test.go
@@ -8,6 +8,7 @@ import (
"time"
"github.com/mattermost/platform/model"
+ "github.com/mattermost/platform/utils"
)
func TestTeamStoreSave(t *testing.T) {
@@ -552,6 +553,101 @@ func TestTeamMembers(t *testing.T) {
}
}
+func TestSaveTeamMemberMaxMembers(t *testing.T) {
+ Setup()
+
+ MaxUsersPerTeam := utils.Cfg.TeamSettings.MaxUsersPerTeam
+ defer func() {
+ utils.Cfg.TeamSettings.MaxUsersPerTeam = MaxUsersPerTeam
+ }()
+ utils.Cfg.TeamSettings.MaxUsersPerTeam = 5
+
+ team := Must(store.Team().Save(&model.Team{
+ DisplayName: "DisplayName",
+ Name: "z-z-z" + model.NewId() + "b",
+ Type: model.TEAM_OPEN,
+ })).(*model.Team)
+ defer func() {
+ <-store.Team().PermanentDelete(team.Id)
+ }()
+
+ userIds := make([]string, utils.Cfg.TeamSettings.MaxUsersPerTeam)
+
+ for i := 0; i < utils.Cfg.TeamSettings.MaxUsersPerTeam; i++ {
+ userIds[i] = Must(store.User().Save(&model.User{
+ Username: model.NewId(),
+ Email: model.NewId(),
+ })).(*model.User).Id
+
+ defer func(userId string) {
+ <-store.User().PermanentDelete(userId)
+ }(userIds[i])
+
+ Must(store.Team().SaveMember(&model.TeamMember{
+ TeamId: team.Id,
+ UserId: userIds[i],
+ }))
+
+ defer func(userId string) {
+ <-store.Team().RemoveMember(team.Id, userId)
+ }(userIds[i])
+ }
+
+ if result := <-store.Team().GetTotalMemberCount(team.Id); result.Err != nil {
+ t.Fatal(result.Err)
+ } else if count := result.Data.(int64); int(count) != utils.Cfg.TeamSettings.MaxUsersPerTeam {
+ t.Fatalf("should start with 5 team members, had %v instead", count)
+ }
+
+ newUserId := Must(store.User().Save(&model.User{
+ Username: model.NewId(),
+ Email: model.NewId(),
+ })).(*model.User).Id
+ defer func() {
+ <-store.User().PermanentDelete(newUserId)
+ }()
+
+ if result := <-store.Team().SaveMember(&model.TeamMember{
+ TeamId: team.Id,
+ UserId: newUserId,
+ }); result.Err == nil {
+ t.Fatal("shouldn't be able to save member when at maximum members per team")
+ }
+
+ if result := <-store.Team().GetTotalMemberCount(team.Id); result.Err != nil {
+ t.Fatal(result.Err)
+ } else if count := result.Data.(int64); int(count) != utils.Cfg.TeamSettings.MaxUsersPerTeam {
+ t.Fatalf("should still have 5 team members, had %v instead", count)
+ }
+
+ // Leaving the team from the UI sets DeleteAt instead of using TeamStore.RemoveMember
+ Must(store.Team().UpdateMember(&model.TeamMember{
+ TeamId: team.Id,
+ UserId: userIds[0],
+ DeleteAt: 1234,
+ }))
+
+ if result := <-store.Team().GetTotalMemberCount(team.Id); result.Err != nil {
+ t.Fatal(result.Err)
+ } else if count := result.Data.(int64); int(count) != utils.Cfg.TeamSettings.MaxUsersPerTeam-1 {
+ t.Fatalf("should now only have 4 team members, had %v instead", count)
+ }
+
+ if result := <-store.Team().SaveMember(&model.TeamMember{TeamId: team.Id, UserId: newUserId}); result.Err != nil {
+ t.Fatal("should've been able to save new member after deleting one", result.Err)
+ } else {
+ defer func(userId string) {
+ <-store.Team().RemoveMember(team.Id, userId)
+ }(newUserId)
+ }
+
+ if result := <-store.Team().GetTotalMemberCount(team.Id); result.Err != nil {
+ t.Fatal(result.Err)
+ } else if count := result.Data.(int64); int(count) != utils.Cfg.TeamSettings.MaxUsersPerTeam {
+ t.Fatalf("should still have 5 team members again, had %v instead", count)
+ }
+}
+
func TestGetTeamMember(t *testing.T) {
Setup()