diff --git a/app/models/group.rb b/app/models/group.rb index 2b4fd148441e48e9ee5bb092d671777f16d3f557..9b95e3ec809aba654dbc0b7df05ed967db3115bd 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -104,10 +104,6 @@ def avatar_url(size = nil) end end - def owners - @owners ||= group_members.owners.includes(:user).map(&:user) - end - def add_users(user_ids, access_level, current_user = nil, skip_notification: false) user_ids.each do |user_id| Member.add_user(self.group_members, user_id, access_level, current_user, skip_notification: skip_notification) diff --git a/spec/lib/gitlab/ldap/group_sync_spec.rb b/spec/lib/gitlab/ldap/group_sync_spec.rb index 46ff87a9172ab1ad94c70ced50f59b2e9d4d544c..d692de89d413bb57a54523ff99a7837058250215 100644 --- a/spec/lib/gitlab/ldap/group_sync_spec.rb +++ b/spec/lib/gitlab/ldap/group_sync_spec.rb @@ -160,18 +160,17 @@ group_access: Gitlab::Access::DEVELOPER, provider: 'ldapmain' ) - group1.add_users([user1.id], + + group1.add_users([user1.id, user2.id], Gitlab::Access::OWNER, skip_notification: true) end - it 'refuses to downgrade the last owner' do - expect { group_sync.sync_groups } - .not_to change { - group1.members.where( - user_id: user1.id, - access_level: Gitlab::Access::OWNER - ).any? - } + # Check two users in a loop to uncover any stale group owner data + it 'downgrades one user but not the other' do + group_sync.sync_groups + + expect(group1.members.pluck(:access_level).sort) + .to eq([Gitlab::Access::DEVELOPER, Gitlab::Access::OWNER]) end context 'when user is a member of two groups from different providers' do