summaryrefslogtreecommitdiff
path: root/qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb')
-rw-r--r--qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb179
1 files changed, 0 insertions, 179 deletions
diff --git a/qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb b/qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb
deleted file mode 100644
index 799a5f7eaf2..00000000000
--- a/qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb
+++ /dev/null
@@ -1,179 +0,0 @@
-# frozen_string_literal: true
-
-module QA
- # run only base UI validation on staging because test requires top level group creation which is problematic
- # on staging environment
- RSpec.describe 'Manage', :requires_admin, except: { subdomain: :staging } do
- describe 'Gitlab migration' do
- let(:import_wait_duration) { { max_duration: 300, sleep_interval: 2 } }
- let(:admin_api_client) { Runtime::API::Client.as_admin }
- let(:user) do
- Resource::User.fabricate_via_api! do |usr|
- usr.api_client = admin_api_client
- usr.hard_delete_on_api_removal = true
- end
- end
-
- let(:api_client) { Runtime::API::Client.new(user: user) }
-
- let(:sandbox) do
- Resource::Sandbox.fabricate_via_api! do |group|
- group.api_client = admin_api_client
- end
- end
-
- let(:source_group) do
- Resource::Sandbox.fabricate_via_api! do |group|
- group.api_client = api_client
- group.path = "source-group-for-import-#{SecureRandom.hex(4)}"
- group.avatar = File.new('qa/fixtures/designs/tanuki.jpg', 'r')
- end
- end
-
- let(:imported_group) do
- Resource::BulkImportGroup.fabricate_via_api! do |group|
- group.api_client = api_client
- group.sandbox = sandbox
- group.source_group_path = source_group.path
- end
- end
-
- let(:import_failures) do
- imported_group.import_details.sum([]) { |details| details[:failures] }
- end
-
- before do
- sandbox.add_member(user, Resource::Members::AccessLevel::MAINTAINER)
- end
-
- after do |example|
- # Checking for failures in the test currently makes test very flaky due to catching unrelated failures
- # Just log in case of failure until cause of network errors is found
- # See: https://gitlab.com/gitlab-org/gitlab/-/issues/346500
- Runtime::Logger.warn(import_failures) if example.exception && !import_failures.empty?
- user.remove_via_api!
- end
-
- context 'with subgroups and labels' do
- let(:subgroup) do
- Resource::Group.fabricate_via_api! do |group|
- group.api_client = api_client
- group.sandbox = source_group
- group.path = "subgroup-for-import-#{SecureRandom.hex(4)}"
- end
- end
-
- let(:imported_subgroup) do
- Resource::Group.init do |group|
- group.api_client = api_client
- group.sandbox = imported_group
- group.path = subgroup.path
- end
- end
-
- before do
- Resource::GroupLabel.fabricate_via_api! do |label|
- label.api_client = api_client
- label.group = source_group
- label.title = "source-group-#{SecureRandom.hex(4)}"
- end
- Resource::GroupLabel.fabricate_via_api! do |label|
- label.api_client = api_client
- label.group = subgroup
- label.title = "subgroup-#{SecureRandom.hex(4)}"
- end
-
- imported_group # trigger import
- end
-
- it(
- 'successfully imports groups and labels',
- testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347674'
- ) do
- expect { imported_group.import_status }.to eventually_eq('finished').within(import_wait_duration)
-
- aggregate_failures do
- expect(imported_group.reload!).to eq(source_group)
- expect(imported_group.labels).to include(*source_group.labels)
-
- expect(imported_subgroup.reload!).to eq(subgroup)
- expect(imported_subgroup.labels).to include(*subgroup.labels)
- end
- end
- end
-
- context 'with milestones and badges' do
- let(:source_milestone) do
- Resource::GroupMilestone.fabricate_via_api! do |milestone|
- milestone.api_client = api_client
- milestone.group = source_group
- end
- end
-
- before do
- source_milestone
-
- Resource::GroupBadge.fabricate_via_api! do |badge|
- badge.api_client = api_client
- badge.group = source_group
- badge.link_url = "http://example.com/badge"
- badge.image_url = "http://shields.io/badge"
- end
-
- imported_group # trigger import
- end
-
- it(
- 'successfully imports group milestones and badges',
- testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347628'
- ) do
- expect { imported_group.import_status }.to eventually_eq('finished').within(import_wait_duration)
-
- imported_milestone = imported_group.reload!.milestones.find { |ml| ml.title == source_milestone.title }
- aggregate_failures do
- expect(imported_milestone).to eq(source_milestone)
- expect(imported_milestone.iid).to eq(source_milestone.iid)
- expect(imported_milestone.created_at).to eq(source_milestone.created_at)
- expect(imported_milestone.updated_at).to eq(source_milestone.updated_at)
-
- expect(imported_group.badges).to eq(source_group.badges)
- end
- end
- end
-
- context 'with group members' do
- let(:member) do
- Resource::User.fabricate_via_api! do |usr|
- usr.api_client = admin_api_client
- usr.hard_delete_on_api_removal = true
- end
- end
-
- before do
- member.set_public_email
- source_group.add_member(member, Resource::Members::AccessLevel::DEVELOPER)
-
- imported_group # trigger import
- end
-
- after do
- member.remove_via_api!
- end
-
- it(
- 'adds members for imported group',
- testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347609'
- ) do
- expect { imported_group.import_status }.to eventually_eq('finished').within(import_wait_duration)
-
- imported_member = imported_group.reload!.members.find { |usr| usr.username == member.username }
-
- aggregate_failures do
- expect(imported_member).not_to be_nil
- expect(imported_member.access_level).to eq(Resource::Members::AccessLevel::DEVELOPER)
- end
- end
- end
- end
- end
-end