diff options
Diffstat (limited to 'spec/models/group_spec.rb')
-rw-r--r-- | spec/models/group_spec.rb | 143 |
1 files changed, 130 insertions, 13 deletions
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index cc29e20710a..dd1faf999b3 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -28,6 +28,8 @@ RSpec.describe Group do it { is_expected.to have_many(:iterations) } it { is_expected.to have_many(:group_deploy_keys) } it { is_expected.to have_many(:services) } + it { is_expected.to have_one(:dependency_proxy_setting) } + it { is_expected.to have_many(:dependency_proxy_blobs) } describe '#members & #requesters' do let(:requester) { create(:user) } @@ -308,8 +310,10 @@ RSpec.describe Group do end describe 'scopes' do - let!(:private_group) { create(:group, :private) } - let!(:internal_group) { create(:group, :internal) } + let_it_be(:private_group) { create(:group, :private) } + let_it_be(:internal_group) { create(:group, :internal) } + let_it_be(:user1) { create(:user) } + let_it_be(:user2) { create(:user) } describe 'public_only' do subject { described_class.public_only.to_a } @@ -328,6 +332,27 @@ RSpec.describe Group do it { is_expected.to match_array([private_group, internal_group]) } end + + describe 'for_authorized_group_members' do + let_it_be(:group_member1) { create(:group_member, source: private_group, user_id: user1.id, access_level: Gitlab::Access::OWNER) } + + it do + result = described_class.for_authorized_group_members([user1.id, user2.id]) + + expect(result).to match_array([private_group]) + end + end + + describe 'for_authorized_project_members' do + let_it_be(:project) { create(:project, group: internal_group) } + let_it_be(:project_member1) { create(:project_member, source: project, user_id: user1.id, access_level: Gitlab::Access::DEVELOPER) } + + it do + result = described_class.for_authorized_project_members([user1.id, user2.id]) + + expect(result).to match_array([internal_group]) + end + end end describe '#to_reference' do @@ -944,23 +969,72 @@ RSpec.describe Group do context 'expanded group members' do let(:indirect_user) { create(:user) } - it 'enables two_factor_requirement for subgroup member' do - subgroup = create(:group, :nested, parent: group) - subgroup.add_user(indirect_user, GroupMember::OWNER) + context 'two_factor_requirement is enabled' do + context 'two_factor_requirement is also enabled for ancestor group' do + it 'enables two_factor_requirement for subgroup member' do + subgroup = create(:group, :nested, parent: group) + subgroup.add_user(indirect_user, GroupMember::OWNER) - group.update!(require_two_factor_authentication: true) + group.update!(require_two_factor_authentication: true) + + expect(indirect_user.reload.require_two_factor_authentication_from_group).to be_truthy + end + end + + context 'two_factor_requirement is disabled for ancestor group' do + it 'enables two_factor_requirement for subgroup member' do + subgroup = create(:group, :nested, parent: group, require_two_factor_authentication: true) + subgroup.add_user(indirect_user, GroupMember::OWNER) + + group.update!(require_two_factor_authentication: false) + + expect(indirect_user.reload.require_two_factor_authentication_from_group).to be_truthy + end + + it 'enable two_factor_requirement for ancestor group member' do + ancestor_group = create(:group) + ancestor_group.add_user(indirect_user, GroupMember::OWNER) + group.update!(parent: ancestor_group) + + group.update!(require_two_factor_authentication: true) - expect(indirect_user.reload.require_two_factor_authentication_from_group).to be_truthy + expect(indirect_user.reload.require_two_factor_authentication_from_group).to be_truthy + end + end end - it 'does not enable two_factor_requirement for ancestor group member' do - ancestor_group = create(:group) - ancestor_group.add_user(indirect_user, GroupMember::OWNER) - group.update!(parent: ancestor_group) + context 'two_factor_requirement is disabled' do + context 'two_factor_requirement is enabled for ancestor group' do + it 'enables two_factor_requirement for subgroup member' do + subgroup = create(:group, :nested, parent: group) + subgroup.add_user(indirect_user, GroupMember::OWNER) - group.update!(require_two_factor_authentication: true) + group.update!(require_two_factor_authentication: true) + + expect(indirect_user.reload.require_two_factor_authentication_from_group).to be_truthy + end + end + + context 'two_factor_requirement is also disabled for ancestor group' do + it 'disables two_factor_requirement for subgroup member' do + subgroup = create(:group, :nested, parent: group) + subgroup.add_user(indirect_user, GroupMember::OWNER) - expect(indirect_user.reload.require_two_factor_authentication_from_group).to be_falsey + group.update!(require_two_factor_authentication: false) + + expect(indirect_user.reload.require_two_factor_authentication_from_group).to be_falsey + end + + it 'disables two_factor_requirement for ancestor group member' do + ancestor_group = create(:group, require_two_factor_authentication: false) + indirect_user.update!(require_two_factor_authentication_from_group: true) + ancestor_group.add_user(indirect_user, GroupMember::OWNER) + + group.update!(require_two_factor_authentication: false) + + expect(indirect_user.reload.require_two_factor_authentication_from_group).to be_falsey + end + end end end @@ -1591,4 +1665,47 @@ RSpec.describe Group do end end end + + describe 'has_project_with_service_desk_enabled?' do + let_it_be(:group) { create(:group, :private) } + + subject { group.has_project_with_service_desk_enabled? } + + before do + allow(Gitlab::ServiceDesk).to receive(:supported?).and_return(true) + end + + context 'when service desk is enabled' do + context 'for top level group' do + let_it_be(:project) { create(:project, group: group, service_desk_enabled: true) } + + it { is_expected.to eq(true) } + + context 'when service desk is not supported' do + before do + allow(Gitlab::ServiceDesk).to receive(:supported?).and_return(false) + end + + it { is_expected.to eq(false) } + end + end + + context 'for subgroup project' do + let_it_be(:subgroup) { create(:group, :private, parent: group)} + let_it_be(:project) { create(:project, group: subgroup, service_desk_enabled: true) } + + it { is_expected.to eq(true) } + end + end + + context 'when none of group child projects has service desk enabled' do + let_it_be(:project) { create(:project, group: group, service_desk_enabled: false) } + + before do + project.update(service_desk_enabled: false) + end + + it { is_expected.to eq(false) } + end + end end |