MM-21157: Triggers role sync when a syncable is linked, unlinked, or updated. (#13432)
* MM-20644: Add users to teams as a SchemeAdmin based on a new configuration field on GroupTeams and GroupChannels records. * MM-20644: Adds SchemeAdmin to mapping of the GroupSyncable struct fields. * MM-2064: Adds test to ensure SchemeAdmin field value is mapped. * MM-20644: Adds missing index creation for fresh DBs. * MM-20644: Duplicates UpdateMembersRole across Team and Channel stores. Adds tests. * MM-20644: Fixes some old method name references. * MM-20644: Moves variable declaration; removes Println statement. * MM-21157: Triggers role sync when a syncable is linked, unlinked, or updated. * MM-20644: Use a SQL query instead of two to update Team and Channel members. * MM-20644: Fixes tests; updates query. * MM-21157: Removes second invocation of function because of refactor that performs it all in a single query. * MM-21157: Switches a few queries to Squirrel. * MM-21157: SQL-formats some strings. * MM-21157: Select with list. * MM-21157: Converts some more sql to squirrel. * MM-21157: Fix incorrect conflict resolutions. * MM-21157: Fix incorrect conflict resolutions. * MM-21157: Adds missing mocks. * MM-21157: Clears cache upon syncing roles. Co-authored-by: mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
3865bc501e
Коммит
50e9aa01c3
@@ -396,3 +396,70 @@ func TestDeleteGroupMemberships(t *testing.T) {
|
||||
require.Len(t, (*cmembers), 1)
|
||||
require.Equal(t, th.SystemAdminUser.Id, (*cmembers)[0].UserId)
|
||||
}
|
||||
|
||||
func TestSyncSyncableRoles(t *testing.T) {
|
||||
th := Setup(t).InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
team := th.CreateTeam()
|
||||
|
||||
channel := th.CreateChannel(team)
|
||||
channel.GroupConstrained = model.NewBool(true)
|
||||
channel, err := th.App.UpdateChannel(channel)
|
||||
require.Nil(t, err)
|
||||
|
||||
user1 := th.CreateUser()
|
||||
user2 := th.CreateUser()
|
||||
group := th.CreateGroup()
|
||||
|
||||
teamSyncable, err := th.App.UpsertGroupSyncable(&model.GroupSyncable{
|
||||
SyncableId: team.Id,
|
||||
Type: model.GroupSyncableTypeTeam,
|
||||
GroupId: group.Id,
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
channelSyncable, err := th.App.UpsertGroupSyncable(&model.GroupSyncable{
|
||||
SyncableId: channel.Id,
|
||||
Type: model.GroupSyncableTypeChannel,
|
||||
GroupId: group.Id,
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
for _, user := range []*model.User{user1, user2} {
|
||||
_, err = th.App.UpsertGroupMember(group.Id, user.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
var tm *model.TeamMember
|
||||
tm, err = th.App.AddTeamMember(team.Id, user.Id)
|
||||
require.Nil(t, err)
|
||||
require.False(t, tm.SchemeAdmin)
|
||||
|
||||
cm := th.AddUserToChannel(user, channel)
|
||||
require.False(t, cm.SchemeAdmin)
|
||||
}
|
||||
|
||||
teamSyncable.SchemeAdmin = true
|
||||
_, err = th.App.UpdateGroupSyncable(teamSyncable)
|
||||
require.Nil(t, err)
|
||||
|
||||
channelSyncable.SchemeAdmin = true
|
||||
_, err = th.App.UpdateGroupSyncable(channelSyncable)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = th.App.SyncSyncableRoles(channel.Id, model.GroupSyncableTypeChannel)
|
||||
require.Nil(t, err)
|
||||
|
||||
err = th.App.SyncSyncableRoles(team.Id, model.GroupSyncableTypeTeam)
|
||||
require.Nil(t, err)
|
||||
|
||||
for _, user := range []*model.User{user1, user2} {
|
||||
tm, err := th.App.GetTeamMember(team.Id, user.Id)
|
||||
require.Nil(t, err)
|
||||
require.True(t, tm.SchemeAdmin)
|
||||
|
||||
cm, err := th.App.GetChannelMember(channel.Id, user.Id)
|
||||
require.Nil(t, err)
|
||||
require.True(t, cm.SchemeAdmin)
|
||||
}
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user