Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/group_spec.rb')
-rw-r--r--spec/models/group_spec.rb143
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