Invalidate channel members cache when promoting/demoting a guest (#13180)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
f7e93db512
Коммит
0b00a7870b
@@ -2293,6 +2293,8 @@ func (a *App) PromoteGuestToUser(user *model.User, requestorId string) *model.Ap
|
||||
}
|
||||
|
||||
for _, member := range *channelMembers {
|
||||
a.InvalidateCacheForChannelMembers(member.ChannelId)
|
||||
|
||||
evt := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, "", "", user.Id, nil)
|
||||
evt.Add("channelMember", member.ToJson())
|
||||
a.Publish(evt)
|
||||
@@ -2332,6 +2334,8 @@ func (a *App) DemoteUserToGuest(user *model.User) *model.AppError {
|
||||
}
|
||||
|
||||
for _, member := range *channelMembers {
|
||||
a.InvalidateCacheForChannelMembers(member.ChannelId)
|
||||
|
||||
evt := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, "", "", user.Id, nil)
|
||||
evt.Add("channelMember", member.ToJson())
|
||||
a.Publish(evt)
|
||||
|
||||
@@ -1052,12 +1052,64 @@ func TestPromoteGuestToUser(t *testing.T) {
|
||||
require.Nil(t, err)
|
||||
assert.Len(t, *channelMembers, 3)
|
||||
})
|
||||
|
||||
t.Run("Must invalidate channel stats cache when promoting a guest", func(t *testing.T) {
|
||||
guest := th.CreateGuest()
|
||||
require.Equal(t, "system_guest", guest.Roles)
|
||||
th.LinkUserToTeam(guest, th.BasicTeam)
|
||||
teamMember, err := th.App.GetTeamMember(th.BasicTeam.Id, guest.Id)
|
||||
require.Nil(t, err)
|
||||
require.True(t, teamMember.SchemeGuest)
|
||||
require.False(t, teamMember.SchemeUser)
|
||||
|
||||
guestCount, _ := th.App.GetChannelGuestCount(th.BasicChannel.Id)
|
||||
require.Equal(t, int64(0), guestCount)
|
||||
|
||||
channelMember := th.AddUserToChannel(guest, th.BasicChannel)
|
||||
require.True(t, channelMember.SchemeGuest)
|
||||
require.False(t, channelMember.SchemeUser)
|
||||
|
||||
guestCount, _ = th.App.GetChannelGuestCount(th.BasicChannel.Id)
|
||||
require.Equal(t, int64(1), guestCount)
|
||||
|
||||
err = th.App.PromoteGuestToUser(guest, th.BasicUser.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
guestCount, _ = th.App.GetChannelGuestCount(th.BasicChannel.Id)
|
||||
require.Equal(t, int64(0), guestCount)
|
||||
})
|
||||
}
|
||||
|
||||
func TestDemoteUserToGuest(t *testing.T) {
|
||||
th := Setup(t).InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
t.Run("Must invalidate channel stats cache when demoting a user", func(t *testing.T) {
|
||||
user := th.CreateUser()
|
||||
require.Equal(t, "system_user", user.Roles)
|
||||
th.LinkUserToTeam(user, th.BasicTeam)
|
||||
teamMember, err := th.App.GetTeamMember(th.BasicTeam.Id, user.Id)
|
||||
require.Nil(t, err)
|
||||
require.True(t, teamMember.SchemeUser)
|
||||
require.False(t, teamMember.SchemeGuest)
|
||||
|
||||
guestCount, _ := th.App.GetChannelGuestCount(th.BasicChannel.Id)
|
||||
require.Equal(t, int64(0), guestCount)
|
||||
|
||||
channelMember := th.AddUserToChannel(user, th.BasicChannel)
|
||||
require.True(t, channelMember.SchemeUser)
|
||||
require.False(t, channelMember.SchemeGuest)
|
||||
|
||||
guestCount, _ = th.App.GetChannelGuestCount(th.BasicChannel.Id)
|
||||
require.Equal(t, int64(0), guestCount)
|
||||
|
||||
err = th.App.DemoteUserToGuest(user)
|
||||
require.Nil(t, err)
|
||||
|
||||
guestCount, _ = th.App.GetChannelGuestCount(th.BasicChannel.Id)
|
||||
require.Equal(t, int64(1), guestCount)
|
||||
})
|
||||
|
||||
t.Run("Must fail with guest user", func(t *testing.T) {
|
||||
guest := th.CreateGuest()
|
||||
require.Equal(t, "system_guest", guest.Roles)
|
||||
@@ -1100,7 +1152,7 @@ func TestDemoteUserToGuest(t *testing.T) {
|
||||
assert.True(t, teamMember.SchemeGuest)
|
||||
})
|
||||
|
||||
t.Run("Must work with user user with teams and channels", func(t *testing.T) {
|
||||
t.Run("Must work with user with teams and channels", func(t *testing.T) {
|
||||
user := th.CreateUser()
|
||||
require.Equal(t, "system_user", user.Roles)
|
||||
th.LinkUserToTeam(user, th.BasicTeam)
|
||||
|
||||
Ссылка в новой задаче
Block a user