diff options
author | Rubén Dávila <ruben@gitlab.com> | 2017-08-15 20:25:47 -0500 |
---|---|---|
committer | Mike Greiling <mike@pixelcog.com> | 2017-08-26 03:30:01 -0500 |
commit | d413f8e4e426e2cb2dc61d5a72d84a7dc67a28c8 (patch) | |
tree | fb58f3e1f60552bb7c201c697eb9fa7e8b194788 /spec/models/group_spec.rb | |
parent | a30257c0321e872646fe945739482fdeadbba4c2 (diff) | |
download | gitlab-ce-d413f8e4e426e2cb2dc61d5a72d84a7dc67a28c8.tar.gz |
Add validation for visibility level of sub groups
Sub groups should not have a visibility level higher than its parent.
Diffstat (limited to 'spec/models/group_spec.rb')
-rw-r--r-- | spec/models/group_spec.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index c5bfae47606..a3310cf1dce 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -84,6 +84,39 @@ describe Group do expect(group).not_to be_valid end end + + describe '#visibility_level_allowed_by_parent' do + let(:parent) { create(:group, :internal) } + let(:sub_group) { build(:group, parent_id: parent.id) } + + context 'without a parent' do + it 'is valid' do + sub_group.parent_id = nil + + expect(sub_group).to be_valid + end + end + + context 'with a parent' do + context 'when visibility of sub group is greater than the parent' do + it 'is invalid' do + sub_group.visibility_level = Gitlab::VisibilityLevel::PUBLIC + + expect(sub_group).to be_invalid + end + end + + context 'when visibility of sub group is lower or equal to the parent' do + [Gitlab::VisibilityLevel::INTERNAL, Gitlab::VisibilityLevel::PRIVATE].each do |level| + it 'is valid' do + sub_group.visibility_level = level + + expect(sub_group).to be_valid + end + end + end + end + end end describe '.visible_to_user' do |