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
path: root/qa
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-11-30 06:13:04 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-11-30 06:13:04 +0300
commit2a6b543cbf045b7d480a21c1c77fd4f0243a6437 (patch)
tree6b016d1a68d7d642712a9603a3c57602b1702a32 /qa
parentcb29b873b658591f571b4041717090ddceff2e0f (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r--qa/qa/resource/project.rb15
-rw-r--r--qa/qa/specs/features/api/1_manage/bulk_import_project_spec.rb187
2 files changed, 2 insertions, 200 deletions
diff --git a/qa/qa/resource/project.rb b/qa/qa/resource/project.rb
index 424b17e413d..192c5e4b2db 100644
--- a/qa/qa/resource/project.rb
+++ b/qa/qa/resource/project.rb
@@ -217,10 +217,6 @@ module QA
"#{api_get_path}/wikis"
end
- def api_push_rules_path
- "#{api_get_path}/push_rule"
- end
-
def api_post_body
post_body = {
name: name,
@@ -372,15 +368,6 @@ module QA
parse_body(response)
end
- def push_rules
- response = get(request_url(api_push_rules_path))
- parse_body(response)
- end
-
- def add_push_rules(rules)
- api_post_to(api_push_rules_path, rules)
- end
-
# Object comparison
#
# @param [QA::Resource::Project] other
@@ -441,3 +428,5 @@ module QA
end
end
end
+
+QA::Resource::Project.prepend_mod_with('Resource::Project', namespace: QA)
diff --git a/qa/qa/specs/features/api/1_manage/bulk_import_project_spec.rb b/qa/qa/specs/features/api/1_manage/bulk_import_project_spec.rb
deleted file mode 100644
index 43b9dc78806..00000000000
--- a/qa/qa/specs/features/api/1_manage/bulk_import_project_spec.rb
+++ /dev/null
@@ -1,187 +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 'Bulk project import' 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)}"
- end
- end
-
- let(:source_project) do
- Resource::Project.fabricate_via_api! do |project|
- project.api_client = api_client
- project.group = source_group
- project.initialize_with_readme = true
- 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(:imported_projects) do
- imported_group.reload!.projects
- end
-
- let(:project_import_failures) do
- imported_group.import_details
- .find { |entity| entity[:destination_name] == source_project.name }
- &.fetch(:failures)
- end
-
- before do
- Runtime::Feature.enable(:bulk_import_projects)
-
- sandbox.add_member(user, Resource::Members::AccessLevel::MAINTAINER)
-
- source_project.tap { |project| project.add_push_rules(member_check: true) } # fabricate source group and project
- end
-
- after do
- user.remove_via_api!
- ensure
- Runtime::Feature.disable(:bulk_import_projects)
- end
-
- context 'with project' do
- before do
- imported_group # trigger import
- end
-
- it(
- 'successfully imports project',
- testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/2297'
- ) do
- expect { imported_group.import_status }.to eventually_eq('finished').within(import_wait_duration)
- expect(imported_projects.count).to eq(1), 'Expected to have 1 imported project'
-
- aggregate_failures do
- expect(imported_projects.first).to eq(source_project)
- expect(project_import_failures).to be_empty, "Expected no errors, was: #{project_import_failures}"
- end
- end
- end
-
- context 'with project issues' do
- let(:source_issue) do
- Resource::Issue.fabricate_via_api! do |issue|
- issue.api_client = api_client
- issue.project = source_project
- issue.labels = %w[label_one label_two]
- end
- end
-
- let(:imported_issues) do
- imported_projects.first.issues
- end
-
- let(:imported_issue) do
- issue = imported_issues.first
- Resource::Issue.init do |resource|
- resource.api_client = api_client
- resource.project = imported_projects.first
- resource.iid = issue[:iid]
- end
- end
-
- before do
- source_issue # fabricate source group, project, issue
- imported_group # trigger import
- end
-
- it(
- 'successfully imports issue',
- testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/2325'
- ) do
- expect { imported_group.import_status }.to eventually_eq('finished').within(import_wait_duration)
- expect(imported_projects.count).to eq(1), 'Expected to have 1 imported project'
-
- aggregate_failures do
- expect(imported_issues.count).to eq(1)
- expect(imported_issue.reload!).to eq(source_issue)
- expect(project_import_failures).to be_empty, "Expected no errors, was: #{project_import_failures}"
- end
- end
- end
-
- context 'with repository' do
- let(:imported_project) { imported_projects.first }
-
- let(:source_commits) { source_project.commits.map { |c| c.except(:web_url) } }
- let(:source_tags) do
- source_project.repository_tags.tap do |tags|
- tags.each { |t| t[:commit].delete(:web_url) }
- end
- end
-
- let(:source_branches) do
- source_project.repository_branches.tap do |branches|
- branches.each do |b|
- b.delete(:web_url)
- b[:commit].delete(:web_url)
- end
- end
- end
-
- let(:imported_commits) { imported_project.commits.map { |c| c.except(:web_url) } }
- let(:imported_tags) do
- imported_project.repository_tags.tap do |tags|
- tags.each { |t| t[:commit].delete(:web_url) }
- end
- end
-
- let(:imported_branches) do
- imported_project.repository_branches.tap do |branches|
- branches.each do |b|
- b.delete(:web_url)
- b[:commit].delete(:web_url)
- end
- end
- end
-
- before do
- source_project.create_repository_branch('test-branch')
- source_project.create_repository_tag('v0.0.1')
- imported_group # trigger import
- end
-
- it 'successfully imports repository' do
- expect { imported_group.import_status }.to eventually_eq('finished').within(import_wait_duration)
- expect(imported_projects.count).to eq(1), 'Expected to have 1 imported project'
-
- aggregate_failures do
- expect(imported_commits).to match_array(source_commits)
- expect(imported_tags).to match_array(source_tags)
- expect(imported_branches).to match_array(source_branches)
- end
- end
- end
- end
- end
-end