diff options
author | Stan Hu <stanhu@gmail.com> | 2019-04-30 21:39:15 +0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-04-30 23:31:51 +0300 |
commit | 32ddc3fed616b9eebdd7b5553d4aa08c0572ff1d (patch) | |
tree | 97b7858c5d98135b836576caf1fa030c4ec772b6 /spec/models/member_spec.rb | |
parent | 9f592604032dd4a4d685fa359865ed9786f3e058 (diff) |
Allow a member to have an access level equal to parent group
Suppose you have this configuration:
1. Subgroup `hello/world`
2. Subgroup `hello/mergers`.
3. Project `hello/world/my-project` has invited group `hello/world` to
access protected branches.
4. The rule allows the group to merge but no one can push.
5. User `newuser` has Owner access to the parent group `hello`.
Previously, there was no way for the user `newuser` to be added to the
`hello/mergers` group since the validation only allowed a user to be
added at a higher access level.
Since membership in a subgroup confers certain access rights, such as
being able to merge or push code to protected branches, we have to
loosen the validation and allow someone to be added at an equal level
granted by the parent group.
Closes https://gitlab.com/gitlab-org/gitlab-ee/issues/11323
Diffstat (limited to 'spec/models/member_spec.rb')
-rw-r--r-- | spec/models/member_spec.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index c68c3ce2abe..782a84f922b 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -70,6 +70,16 @@ describe Member do expect(child_member).not_to be_valid end + # Membership in a subgroup confers certain access rights, such as being + # able to merge or push code to protected branches. + it "is valid with an equal level" do + child_member.access_level = GroupMember::DEVELOPER + + child_member.validate + + expect(child_member).to be_valid + end + it "is valid with a higher level" do child_member.access_level = GroupMember::MAINTAINER |