summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Griffith <dyl.griffith@gmail.com>2018-03-27 16:31:43 +1100
committerDylan Griffith <dyl.griffith@gmail.com>2018-03-27 16:31:47 +1100
commit78eb7a626368214be62ee28a496d2c00068d161d (patch)
tree93282a9bd0557c93b69f68e10c1d1e0d6051d98d
parent7c02d0cff3d79d9159b2966ce4807b71c4eff358 (diff)
downloadgitlab-ce-41981-allow-group-owner-to-enable-runners-from-subgroups.tar.gz
WIP: Allow group owner to enable runners from subgroups (#41981)41981-allow-group-owner-to-enable-runners-from-subgroups
-rw-r--r--app/models/user.rb4
-rw-r--r--spec/models/user_spec.rb15
2 files changed, 17 insertions, 2 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index fa54581d220..6afb47f136a 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1205,10 +1205,10 @@ class User < ActiveRecord::Base
def ci_projects_union
scope = { access_level: [Gitlab::Access::MASTER, Gitlab::Access::OWNER] }
- groups = groups_projects.where(members: scope)
+ group_projects = Project.where(namespace: membership_groups)
other = projects.where(members: scope)
- Gitlab::SQL::Union.new([personal_projects.select(:id), groups.select(:id),
+ Gitlab::SQL::Union.new([personal_projects.select(:id), group_projects.select(:id),
other.select(:id)])
end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index c61674fff13..d0039185f34 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -1867,6 +1867,21 @@ describe User do
it_behaves_like :member
end
+
+ context 'with subgroup with different owner for project runner' do
+ let(:group) { create(:group) }
+ let(:another_user) { create(:user) }
+ let(:subgroup) { create(:group, parent: group) }
+ let(:project) { create(:project, group: subgroup) }
+
+ def add_user(access)
+ group.add_user(user, access)
+ group.add_user(another_user, :owner)
+ subgroup.add_user(another_user, :owner)
+ end
+
+ it_behaves_like :member
+ end
end
describe '#projects_with_reporter_access_limited_to' do