[MM-10858] Channel Member Update Websocket Event (#13305)

* Channel Member update event

* Address PR comments and extend tests

* golang ci addressed

* Update api4/channel_test.go

Co-Authored-By: Ben Schumacher <ben.schumacher@mattermost.com>
This commit is contained in:
Hossein Ahmadian-Yazdi
2019-12-19 08:53:29 -05:00
committed by GitHub
parent be3e008dca
commit 155ada09fb
2 changed files with 24 additions and 0 deletions

View File

@@ -1976,6 +1976,10 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) {
th := Setup().InitBasic()
defer th.TearDown()
SystemAdminClient := th.SystemAdminClient
WebSocketClient, err := th.CreateWebSocketClient()
WebSocketClient.Listen()
require.Nil(t, err)
th.LoginBasic()
s1 := &model.SchemeRoles{
@@ -1986,6 +1990,21 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) {
_, r1 := SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s1)
CheckNoError(t, r1)
timeout := time.After(600 * time.Millisecond)
waiting := true
for waiting {
select {
case event := <-WebSocketClient.EventChannel:
if event.Event == model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED {
require.Equal(t, model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, event.Event)
waiting = false
}
case <-timeout:
require.Fail(t, "Should have received event channel member websocket event and not timedout")
waiting = false
}
}
tm1, rtm1 := SystemAdminClient.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "")
CheckNoError(t, rtm1)
assert.Equal(t, false, tm1.SchemeGuest)

View File

@@ -755,6 +755,11 @@ func (a *App) UpdateChannelMemberSchemeRoles(channelId string, userId string, is
return nil, err
}
// Notify the clients that the member notify props changed
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, "", "", userId, nil)
message.Add("channelMember", member.ToJson())
a.Publish(message)
a.InvalidateCacheForUser(userId)
return member, nil
}