MM-33601: Invalidate team member cache when updating a team scheme. (#17384)
* MM-33601: Invalidate team member cache when updating a team scheme. * MM-33601: Tests cache invalidation. * MM-33601: Test fix. Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
51dfa9a54b
Коммит
8bf08988bd
@@ -4,6 +4,7 @@
|
|||||||
package api4
|
package api4
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -760,3 +761,36 @@ func TestDeleteScheme(t *testing.T) {
|
|||||||
CheckNotImplementedStatus(t, r6)
|
CheckNotImplementedStatus(t, r6)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUpdateTeamSchemeWithTeamMembers(t *testing.T) {
|
||||||
|
th := Setup(t).InitBasic()
|
||||||
|
defer th.TearDown()
|
||||||
|
|
||||||
|
t.Run("Correctly invalidates team member cache", func(t *testing.T) {
|
||||||
|
th.App.SetPhase2PermissionsMigrationStatus(true)
|
||||||
|
|
||||||
|
team := th.CreateTeam()
|
||||||
|
_, _, err := th.App.AddUserToTeam(team.Id, th.BasicUser.Id, th.SystemAdminUser.Id)
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
|
teamScheme := th.SetupTeamScheme()
|
||||||
|
|
||||||
|
teamUserRole, err := th.App.GetRoleByName(context.Background(), teamScheme.DefaultTeamUserRole)
|
||||||
|
require.Nil(t, err)
|
||||||
|
teamUserRole.Permissions = []string{}
|
||||||
|
_, err = th.App.UpdateRole(teamUserRole)
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
|
th.LoginBasic()
|
||||||
|
|
||||||
|
_, resp := th.Client.CreateChannel(&model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.CHANNEL_OPEN, TeamId: team.Id})
|
||||||
|
require.Nil(t, resp.Error)
|
||||||
|
|
||||||
|
team.SchemeId = &teamScheme.Id
|
||||||
|
team, err = th.App.UpdateTeamScheme(team)
|
||||||
|
require.Nil(t, err)
|
||||||
|
|
||||||
|
_, resp = th.Client.CreateChannel(&model.Channel{DisplayName: "Test API Name", Name: GenerateTestChannelName(), Type: model.CHANNEL_OPEN, TeamId: team.Id})
|
||||||
|
require.NotNil(t, resp.Error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -233,6 +233,8 @@ func (a *App) UpdateTeamScheme(team *model.Team) (*model.Team, *model.AppError)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.ClearTeamMembersCache(team.Id)
|
||||||
|
|
||||||
a.sendTeamEvent(oldTeam, model.WEBSOCKET_EVENT_UPDATE_TEAM_SCHEME)
|
a.sendTeamEvent(oldTeam, model.WEBSOCKET_EVENT_UPDATE_TEAM_SCHEME)
|
||||||
|
|
||||||
return oldTeam, nil
|
return oldTeam, nil
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user