From 039271394ee3aed5b265c6c5c5e1f8d979478970 Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Wed, 5 Jul 2017 12:10:15 -0400 Subject: 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 --- store/sql_team_store.go | 7 ++++++- store/sql_team_store_test.go | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'store') 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) } } -- cgit v1.2.3-1-g7c22