From 145fa9706909f5b698db906895e9a3a512995051 Mon Sep 17 00:00:00 2001 From: Anurag Shivarathri Date: Mon, 15 Mar 2021 18:33:54 +0530 Subject: [PATCH] MM-31054 demote user (#16990) * changing SchemeAdmin to false on demotion * Added test Co-authored-by: Mattermod --- app/user_test.go | 46 ++++++++++++++++++++++++++++++++++++ store/sqlstore/user_store.go | 2 ++ 2 files changed, 48 insertions(+) diff --git a/app/user_test.go b/app/user_test.go index c4055f689b..c5ea5180af 100644 --- a/app/user_test.go +++ b/app/user_test.go @@ -1349,6 +1349,52 @@ func TestDemoteUserToGuest(t *testing.T) { require.Nil(t, err) assert.Len(t, *channelMembers, 3) }) + + t.Run("Must be removed as team and channel admin", func(t *testing.T) { + user := th.CreateUser() + require.Equal(t, "system_user", user.Roles) + + team := th.CreateTeam() + + th.LinkUserToTeam(user, team) + th.App.UpdateTeamMemberRoles(team.Id, user.Id, "team_user team_admin") + + teamMember, err := th.App.GetTeamMember(team.Id, user.Id) + require.Nil(t, err) + require.True(t, teamMember.SchemeUser) + require.True(t, teamMember.SchemeAdmin) + require.False(t, teamMember.SchemeGuest) + + channel := th.CreateChannel(team) + + th.AddUserToChannel(user, channel) + th.App.UpdateChannelMemberSchemeRoles(channel.Id, user.Id, false, true, true) + + channelMember, err := th.App.GetChannelMember(channel.Id, user.Id) + assert.Nil(t, err) + assert.True(t, channelMember.SchemeUser) + assert.True(t, channelMember.SchemeAdmin) + assert.False(t, channelMember.SchemeGuest) + + err = th.App.DemoteUserToGuest(user) + require.Nil(t, err) + + user, err = th.App.GetUser(user.Id) + assert.Nil(t, err) + assert.Equal(t, "system_guest", user.Roles) + + teamMember, err = th.App.GetTeamMember(team.Id, user.Id) + assert.Nil(t, err) + assert.False(t, teamMember.SchemeUser) + assert.False(t, teamMember.SchemeAdmin) + assert.True(t, teamMember.SchemeGuest) + + channelMember, err = th.App.GetChannelMember(channel.Id, user.Id) + assert.Nil(t, err) + assert.False(t, channelMember.SchemeUser) + assert.False(t, channelMember.SchemeAdmin) + assert.True(t, channelMember.SchemeGuest) + }) } func TestDeactivateGuests(t *testing.T) { diff --git a/store/sqlstore/user_store.go b/store/sqlstore/user_store.go index f2c669117e..f9c35ccfd1 100644 --- a/store/sqlstore/user_store.go +++ b/store/sqlstore/user_store.go @@ -1884,6 +1884,7 @@ func (us SqlUserStore) DemoteUserToGuest(userID string) (*model.User, error) { query = us.getQueryBuilder().Update("ChannelMembers"). Set("SchemeUser", false). + Set("SchemeAdmin", false). Set("SchemeGuest", true). Where(sq.Eq{"UserId": userID}) @@ -1898,6 +1899,7 @@ func (us SqlUserStore) DemoteUserToGuest(userID string) (*model.User, error) { query = us.getQueryBuilder().Update("TeamMembers"). Set("SchemeUser", false). + Set("SchemeAdmin", false). Set("SchemeGuest", true). Where(sq.Eq{"UserId": userID})