summaryrefslogtreecommitdiff
path: root/qa/qa/specs/features/browser_ui/5_package/maven_repository_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/specs/features/browser_ui/5_package/maven_repository_spec.rb')
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/maven_repository_spec.rb130
1 files changed, 100 insertions, 30 deletions
diff --git a/qa/qa/specs/features/browser_ui/5_package/maven_repository_spec.rb b/qa/qa/specs/features/browser_ui/5_package/maven_repository_spec.rb
index 7234edb46d3..fb019290d4c 100644
--- a/qa/qa/specs/features/browser_ui/5_package/maven_repository_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/maven_repository_spec.rb
@@ -9,6 +9,7 @@ module QA
let(:group_id) { 'com.gitlab.qa' }
let(:artifact_id) { "maven-#{SecureRandom.hex(8)}" }
+ let(:another_artifact_id) { "maven-#{SecureRandom.hex(8)}" }
let(:package_name) { "#{group_id}/#{artifact_id}".tr('.', '/') }
let(:auth_token) do
unless Page::Main::Menu.perform(&:signed_in?)
@@ -64,7 +65,7 @@ module QA
<repositories>
<repository>
<id>#{project.name}</id>
- <url>#{gitlab_address_with_port}/api/v4/projects/#{project.id}/packages/maven</url>
+ <url>#{gitlab_address_with_port}/api/v4/groups/#{project.group.id}/-/packages/maven</url>
</repository>
</repositories>
<distributionManagement>
@@ -82,6 +83,43 @@ module QA
}
end
+ let(:pom_xml_another_project) do
+ {
+ file_path: 'pom.xml',
+ content: <<~XML
+ <project>
+ <groupId>#{group_id}</groupId>
+ <artifactId>#{another_artifact_id}</artifactId>
+ <version>1.0</version>
+ <modelVersion>4.0.0</modelVersion>
+ <repositories>
+ <repository>
+ <id>#{another_project.name}</id>
+ <url>#{gitlab_address_with_port}/api/v4/groups/#{another_project.group.id}/-/packages/maven</url>
+ </repository>
+ </repositories>
+ <distributionManagement>
+ <repository>
+ <id>#{another_project.name}</id>
+ <url>#{gitlab_address_with_port}/api/v4/projects/#{another_project.id}/packages/maven</url>
+ </repository>
+ <snapshotRepository>
+ <id>#{another_project.name}</id>
+ <url>#{gitlab_address_with_port}/api/v4/projects/#{another_project.id}/packages/maven</url>
+ </snapshotRepository>
+ </distributionManagement>
+ <dependencies>
+ <dependency>
+ <groupId>#{group_id}</groupId>
+ <artifactId>#{artifact_id}</artifactId>
+ <version>1.0</version>
+ </dependency>
+ </dependencies>
+ </project>
+ XML
+ }
+ end
+
let(:settings_xml) do
{
file_path: 'settings.xml',
@@ -106,7 +144,7 @@ module QA
}
end
- let(:gitlab_ci_yaml) do
+ let(:gitlab_ci_deploy_yml) do
{
file_path: '.gitlab-ci.yml',
content:
@@ -124,58 +162,90 @@ module QA
}
end
+ let(:gitlab_ci_install_yml) do
+ {
+ file_path: '.gitlab-ci.yml',
+ content:
+ <<~YAML
+ install:
+ image: maven:3.6-jdk-11
+ script:
+ - "mvn install"
+ only:
+ - "#{project.default_branch}"
+ tags:
+ - "runner-for-#{another_project.group.name}"
+ YAML
+ }
+ end
+
after do
runner.remove_via_api!
+ project.remove_via_api!
+ another_project.remove_via_api!
end
- it 'publishes a maven package and deletes it', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/943' do
- # Use a maven docker container to deploy the package
- with_fixtures([pom_xml, settings_xml]) do |dir|
- Service::DockerRun::Maven.new(dir).publish!
+ it 'pushes and pulls a Maven package via CI and deletes it', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1115' do
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ commit.project = project
+ commit.commit_message = 'Add .gitlab-ci.yml'
+ commit.add_files([
+ gitlab_ci_deploy_yml,
+ settings_xml,
+ pom_xml
+ ])
end
project.visit!
- Page::Project::Menu.perform(&:click_packages_link)
-
- Page::Project::Packages::Index.perform do |index|
- expect(index).to have_package(package_name)
-
- index.click_package(package_name)
- end
-
- Page::Project::Packages::Show.perform do |show|
- expect(show).to have_package_info(package_name, "1.0")
+ Flow::Pipeline.visit_latest_pipeline
- show.click_delete
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('deploy')
end
- Page::Project::Packages::Index.perform do |index|
- expect(index).to have_content("Package deleted successfully")
- expect(index).not_to have_package(package_name)
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
end
- end
- it 'publishes and downloads a maven package via CI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1115' do
Resource::Repository::Commit.fabricate_via_api! do |commit|
- commit.project = project
+ commit.project = another_project
commit.commit_message = 'Add .gitlab-ci.yml'
commit.add_files([
- gitlab_ci_yaml,
- settings_xml,
- pom_xml
+ gitlab_ci_install_yml,
+ pom_xml_another_project
])
end
- project.visit!
+ another_project.visit!
Flow::Pipeline.visit_latest_pipeline
Page::Project::Pipeline::Show.perform do |pipeline|
- pipeline.click_job('deploy')
+ pipeline.click_job('install')
end
Page::Project::Job::Show.perform do |job|
expect(job).to be_successful(timeout: 800)
end
+
+ project.visit!
+
+ Page::Project::Menu.perform(&:click_packages_link)
+
+ Page::Project::Packages::Index.perform do |index|
+ expect(index).to have_package(package_name)
+
+ index.click_package(package_name)
+ end
+
+ Page::Project::Packages::Show.perform do |show|
+ expect(show).to have_package_info(package_name, "1.0")
+ show.click_delete
+ end
+
+ Page::Project::Packages::Index.perform do |index|
+ expect(index).to have_content("Package deleted successfully")
+ expect(index).not_to have_package(package_name)
+ end
end
context 'when "allow duplicate" setting is disabled' do
@@ -204,7 +274,7 @@ module QA
commit.project = another_project
commit.commit_message = 'Add .gitlab-ci.yml'
commit.add_files([
- gitlab_ci_yaml,
+ gitlab_ci_deploy_yml,
settings_xml,
pom_xml
])
@@ -249,7 +319,7 @@ module QA
commit.project = another_project
commit.commit_message = 'Add .gitlab-ci.yml'
commit.add_files([
- gitlab_ci_yaml,
+ gitlab_ci_deploy_yml,
settings_xml,
pom_xml
])