[MM-48049] Including users who were removed from group in not_in_group response (#21559)
Automatic Merge
Этот коммит содержится в:
@@ -1215,6 +1215,47 @@ func TestSearchUsers(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, users[0].Id, th.BasicUser.Id)
|
||||
})
|
||||
|
||||
id = model.NewId()
|
||||
group, appErr = th.App.CreateGroup(&model.Group{
|
||||
DisplayName: "dn-foo_" + id,
|
||||
Name: model.NewString("name" + id),
|
||||
Source: model.GroupSourceCustom,
|
||||
Description: "description_" + id,
|
||||
RemoteId: model.NewString(model.NewId()),
|
||||
})
|
||||
assert.Nil(t, appErr)
|
||||
|
||||
th.App.Srv().SetLicense(model.NewTestLicenseSKU(model.LicenseShortSkuProfessional, "ldap"))
|
||||
|
||||
search = &model.UserSearch{Term: th.BasicUser.Username, NotInGroupId: group.Id}
|
||||
t.Run("Returns users not in group", func(t *testing.T) {
|
||||
users, _, err = th.Client.SearchUsers(search)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, users[0].Id, th.BasicUser.Id)
|
||||
})
|
||||
|
||||
_, appErr = th.App.UpsertGroupMember(group.Id, th.BasicUser.Id)
|
||||
assert.Nil(t, appErr)
|
||||
|
||||
t.Run("Returns empty list for not in group", func(t *testing.T) {
|
||||
users, _, err = th.Client.SearchUsers(search)
|
||||
require.NoError(t, err)
|
||||
assert.Len(t, users, 0)
|
||||
})
|
||||
|
||||
members := &model.GroupModifyMembers{
|
||||
UserIds: []string{th.BasicUser.Id},
|
||||
}
|
||||
|
||||
_, _, delErr := th.Client.DeleteGroupMembers(group.Id, members)
|
||||
require.NoError(t, delErr)
|
||||
|
||||
t.Run("Returns user not in group after they were deleted from group", func(t *testing.T) {
|
||||
users, _, err = th.Client.SearchUsers(search)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, users[0].Id, th.BasicUser.Id)
|
||||
})
|
||||
}
|
||||
|
||||
func findUserInList(id string, users []*model.User) bool { //nolint:unused
|
||||
|
||||
@@ -1527,7 +1527,7 @@ func (us SqlUserStore) SearchInGroup(groupID string, term string, options *model
|
||||
func (us SqlUserStore) SearchNotInGroup(groupID string, term string, options *model.UserSearchOptions) ([]*model.User, error) {
|
||||
query := us.usersQuery.
|
||||
LeftJoin("GroupMembers gm ON ( gm.UserId = u.Id AND gm.GroupId = ? )", groupID).
|
||||
Where("gm.UserId IS NULL").
|
||||
Where("(gm.UserId IS NULL OR gm.deleteat != 0)").
|
||||
OrderBy("Username ASC").
|
||||
Limit(uint64(options.Limit))
|
||||
|
||||
|
||||
@@ -844,14 +844,13 @@ func testGroupGetMemberUsersPage(t *testing.T, ss store.Store) {
|
||||
groupMembers, err = ss.Group().GetMemberUsersPage(group.Id, 0, 2, nil)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 2, len(groupMembers))
|
||||
require.Equal(t, user3.Id, groupMembers[0].Id)
|
||||
require.Equal(t, user2.Id, groupMembers[1].Id)
|
||||
require.ElementsMatch(t, []*model.User{user2, user3}, groupMembers)
|
||||
|
||||
// Check page 2
|
||||
groupMembers, err = ss.Group().GetMemberUsersPage(group.Id, 1, 2, nil)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 1, len(groupMembers))
|
||||
require.Equal(t, user1.Id, groupMembers[0].Id)
|
||||
require.ElementsMatch(t, []*model.User{user1}, groupMembers)
|
||||
|
||||
// Check madeup id
|
||||
groupMembers, err = ss.Group().GetMemberUsersPage(model.NewId(), 0, 100, nil)
|
||||
|
||||
Ссылка в новой задаче
Block a user