summaryrefslogtreecommitdiffstats
path: root/store
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2017-07-05 12:10:15 -0400
committerChristopher Speller <crspeller@gmail.com>2017-07-05 09:10:15 -0700
commit039271394ee3aed5b265c6c5c5e1f8d979478970 (patch)
tree5d78ca409f6e0615a667ce42adf9d8ae3d0a4668 /store
parent857d280007b39b7dbfe0057152083a332abd73d3 (diff)
downloadchat-039271394ee3aed5b265c6c5c5e1f8d979478970.tar.gz
chat-039271394ee3aed5b265c6c5c5e1f8d979478970.tar.bz2
chat-039271394ee3aed5b265c6c5c5e1f8d979478970.zip
PLT-6753 Fixed deactivated users counting against max members on a team (#6758)
* PLT-6753 Fixed deactivated users counting against max members on a team * Removed nested sql query when checking the number of team members
Diffstat (limited to 'store')
-rw-r--r--store/sql_team_store.go7
-rw-r--r--store/sql_team_store_test.go19
2 files changed, 24 insertions, 2 deletions
diff --git a/store/sql_team_store.go b/store/sql_team_store.go
index 6a2bcc9b0..b2c872880 100644
--- a/store/sql_team_store.go
+++ b/store/sql_team_store.go
@@ -494,9 +494,14 @@ func (s SqlTeamStore) SaveMember(member *model.TeamMember) StoreChannel {
COUNT(0)
FROM
TeamMembers
+ INNER JOIN
+ Users
+ ON
+ TeamMembers.UserId = Users.Id
WHERE
TeamId = :TeamId
- AND DeleteAt = 0`, map[string]interface{}{"TeamId": member.TeamId}); err != nil {
+ AND TeamMembers.DeleteAt = 0
+ AND Users.DeleteAt = 0`, map[string]interface{}{"TeamId": member.TeamId}); err != nil {
result.Err = model.NewLocAppError("SqlUserStore.Save", "store.sql_user.save.member_count.app_error", nil, "teamId="+member.TeamId+", "+err.Error())
storeChannel <- result
close(storeChannel)
diff --git a/store/sql_team_store_test.go b/store/sql_team_store_test.go
index acf58253b..9837120d3 100644
--- a/store/sql_team_store_test.go
+++ b/store/sql_team_store_test.go
@@ -644,7 +644,24 @@ func TestSaveTeamMemberMaxMembers(t *testing.T) {
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)
+ t.Fatalf("should have 5 team members again, had %v instead", count)
+ }
+
+ // Deactivating a user should make them stop counting against max members
+ user2 := Must(store.User().Get(userIds[1])).(*model.User)
+ user2.DeleteAt = 1234
+ Must(store.User().Update(user2, true))
+
+ newUserId2 := Must(store.User().Save(&model.User{
+ Username: model.NewId(),
+ Email: model.NewId(),
+ })).(*model.User).Id
+ if result := <-store.Team().SaveMember(&model.TeamMember{TeamId: team.Id, UserId: newUserId2}); 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)
+ }(newUserId2)
}
}