diff options
Diffstat (limited to 'spec/lib/gitlab/database_importers/instance_administrators/create_group_spec.rb')
-rw-r--r-- | spec/lib/gitlab/database_importers/instance_administrators/create_group_spec.rb | 169 |
1 files changed, 0 insertions, 169 deletions
diff --git a/spec/lib/gitlab/database_importers/instance_administrators/create_group_spec.rb b/spec/lib/gitlab/database_importers/instance_administrators/create_group_spec.rb deleted file mode 100644 index 68c29bad287..00000000000 --- a/spec/lib/gitlab/database_importers/instance_administrators/create_group_spec.rb +++ /dev/null @@ -1,169 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Gitlab::DatabaseImporters::InstanceAdministrators::CreateGroup do - describe '#execute' do - let(:result) { subject.execute } - - context 'without application_settings' do - it 'returns error' do - expect(subject).to receive(:log_error).and_call_original - expect(result).to eq( - status: :error, - message: 'No application_settings found', - last_step: :validate_application_settings - ) - - expect(Group.count).to eq(0) - end - end - - context 'without admin users' do - let(:application_setting) { Gitlab::CurrentSettings.current_application_settings } - - before do - allow(ApplicationSetting).to receive(:current_without_cache) { application_setting } - end - - it 'returns error' do - expect(subject).to receive(:log_error).and_call_original - expect(result).to eq( - status: :error, - message: 'No active admin user found', - last_step: :validate_admins - ) - - expect(Group.count).to eq(0) - end - end - - context( - 'with application settings and admin users', - :do_not_mock_admin_mode_setting, - :do_not_stub_snowplow_by_default - ) do - let(:group) { result[:group] } - let(:application_setting) { Gitlab::CurrentSettings.current_application_settings } - - let!(:user) { create(:user, :admin) } - - before do - allow(ApplicationSetting).to receive(:current_without_cache) { application_setting } - end - - it 'returns correct keys' do - expect(result.keys).to contain_exactly( - :status, :group - ) - end - - it "tracks successful install" do - expect(::Gitlab::Tracking).to receive(:event).with( - 'instance_administrators_group', 'group_created', namespace: group - ) - - subject.execute - end - - it 'creates group' do - expect(result[:status]).to eq(:success) - expect(group).to be_persisted - expect(group.name).to eq('GitLab Instance') - expect(group.path).to start_with('gitlab-instance') - expect(group.path.split('-').last.length).to eq(8) - expect(group.visibility_level).to eq(described_class::VISIBILITY_LEVEL) - end - - it 'adds all admins as maintainers' do - admin1 = create(:user, :admin) - admin2 = create(:user, :admin) - create(:user) - - expect(result[:status]).to eq(:success) - group.reset - expect(group.members.collect(&:user)).to contain_exactly(user, admin1, admin2) - expect(group.members.collect(&:access_level)).to contain_exactly( - Gitlab::Access::OWNER, - Gitlab::Access::MAINTAINER, - Gitlab::Access::MAINTAINER - ) - end - - it 'saves the group id' do - expect(result[:status]).to eq(:success) - expect(application_setting.instance_administrators_group_id).to eq(group.id) - end - - it 'returns error when saving group ID fails' do - allow(application_setting).to receive(:save) { false } - - expect(result).to eq( - status: :error, - message: 'Could not save group ID', - last_step: :save_group_id - ) - end - - context 'when group already exists' do - let(:existing_group) { create(:group) } - - before do - admin1 = create(:user, :admin) - admin2 = create(:user, :admin) - - existing_group.add_owner(user) - existing_group.add_members([admin1, admin2], Gitlab::Access::MAINTAINER) - - application_setting.instance_administrators_group_id = existing_group.id - end - - it 'returns success' do - expect(result).to eq( - status: :success, - group: existing_group - ) - - expect(Group.count).to eq(1) - end - end - - context 'when group cannot be created' do - let(:group) { build(:group) } - - before do - group.errors.add(:base, "Test error") - - expect_next_instance_of(::Groups::CreateService) do |group_create_service| - expect(group_create_service).to receive(:execute) - .and_return(group) - end - end - - it 'returns error' do - expect(subject).to receive(:log_error).and_call_original - expect(result).to eq( - status: :error, - message: 'Could not create group', - last_step: :create_group - ) - end - end - - context 'when user cannot be added to group' do - before do - subject.instance_variable_set(:@instance_admins, [user, build(:user, :admin)]) - end - - it 'returns error' do - expect(subject).to receive(:log_error).and_call_original - expect(result).to eq( - status: :error, - message: 'Could not add admins as members', - last_step: :add_group_members - ) - end - end - end - end -end |