MM-25595 - Edits to bot username and display name fail to save (#14699)

* invalidate the user profile cache bc we know it's now outdated

* invalidate cache when updating user roles; test

* tests fix -- experimental

* fixing linter errors

* revert to original solution

Co-authored-by: mattermod <mattermod@users.noreply.github.com>
This commit is contained in:
Christopher Poile
2020-06-03 09:27:00 -04:00
committed by GitHub
parent 19e5afd607
commit 7bba8db65f
3 changed files with 20 additions and 3 deletions

View File

@@ -220,6 +220,22 @@ func TestPatchBot(t *testing.T) {
require.Equal(t, *botPatch.DisplayName, patchedBot.DisplayName)
require.Equal(t, *botPatch.Description, patchedBot.Description)
require.Equal(t, th.SystemAdminUser.Id, patchedBot.OwnerId)
// Continue through the bot update process (call UpdateUserRoles), then
// get the bot, to make sure the patched bot was correctly saved.
th.AddPermissionToRole(model.PERMISSION_READ_BOTS.Id, model.TEAM_USER_ROLE_ID)
th.AddPermissionToRole(model.PERMISSION_READ_OTHERS_BOTS.Id, model.TEAM_USER_ROLE_ID)
th.AddPermissionToRole(model.PERMISSION_MANAGE_ROLES.Id, model.TEAM_USER_ROLE_ID)
th.App.UpdateUserRoles(th.BasicUser.Id, model.TEAM_USER_ROLE_ID, false)
success, resp := th.Client.UpdateUserRoles(createdBot.UserId, model.SYSTEM_USER_ROLE_ID)
CheckOKStatus(t, resp)
require.True(t, success)
bots, resp := th.Client.GetBots(0, 2, "")
CheckOKStatus(t, resp)
require.Len(t, bots, 1)
require.Equal(t, []*model.Bot{patchedBot}, bots)
})
t.Run("patch my bot without permission", func(t *testing.T) {

View File

@@ -89,6 +89,7 @@ func (a *App) PatchBot(botUserId string, botPatch *model.BotPatch) (*model.Bot,
if err != nil {
return nil, err
}
a.InvalidateCacheForUser(user.Id)
ruser := userUpdate.New
a.sendUpdatedUserEvent(*ruser)

View File

@@ -1395,8 +1395,8 @@ func (a *App) UpdateUserRoles(userId string, newRoles string, sendWebSocketEvent
schan := make(chan store.StoreResult, 1)
go func() {
userId, err := a.Srv().Store.Session().UpdateRoles(user.Id, newRoles)
schan <- store.StoreResult{Data: userId, Err: err}
id, err := a.Srv().Store.Session().UpdateRoles(user.Id, newRoles)
schan <- store.StoreResult{Data: id, Err: err}
close(schan)
}()
@@ -1411,7 +1411,7 @@ func (a *App) UpdateUserRoles(userId string, newRoles string, sendWebSocketEvent
mlog.Error("Failed during updating user roles", mlog.Err(result.Err))
}
a.InvalidateCacheForUser(user.Id)
a.InvalidateCacheForUser(userId)
a.ClearSessionCacheForUser(user.Id)
if sendWebSocketEvent {