diff options
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.rb | 104 |
1 files changed, 104 insertions, 0 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 new file mode 100644 index 00000000000..0f04b3b6186 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/5_package/maven_repository_spec.rb @@ -0,0 +1,104 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Package', :docker, :orchestrated, :packages do + describe 'Maven Repository' do + include Runtime::Fixtures + + let(:group_id) { 'com.gitlab.qa' } + let(:artifact_id) { 'maven' } + let(:package_name) { "#{group_id}/#{artifact_id}".tr('.', '/') } + let(:auth_token) do + unless Page::Main::Menu.perform(&:signed_in?) + Flow::Login.sign_in + end + + Resource::PersonalAccessToken.fabricate!.access_token + end + + let(:project) do + Resource::Project.fabricate_via_api! do |project| + project.name = 'maven-package-project' + end + end + + it 'publishes a maven package and deletes it' do + uri = URI.parse(Runtime::Scenario.gitlab_address) + gitlab_address_with_port = "#{uri.scheme}://#{uri.host}:#{uri.port}" + pom_xml = { + file_path: 'pom.xml', + content: <<~XML + <project> + <groupId>#{group_id}</groupId> + <artifactId>#{artifact_id}</artifactId> + <version>1.0</version> + <modelVersion>4.0.0</modelVersion> + <repositories> + <repository> + <id>#{project.name}</id> + <url>#{gitlab_address_with_port}/api/v4/projects/#{project.id}/packages/maven</url> + </repository> + </repositories> + <distributionManagement> + <repository> + <id>#{project.name}</id> + <url>#{gitlab_address_with_port}/api/v4/projects/#{project.id}/packages/maven</url> + </repository> + <snapshotRepository> + <id>#{project.name}</id> + <url>#{gitlab_address_with_port}/api/v4/projects/#{project.id}/packages/maven</url> + </snapshotRepository> + </distributionManagement> + </project> + XML + } + settings_xml = { + file_path: 'settings.xml', + content: <<~XML + <settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> + <servers> + <server> + <id>#{project.name}</id> + <configuration> + <httpHeaders> + <property> + <name>Private-Token</name> + <value>#{auth_token}</value> + </property> + </httpHeaders> + </configuration> + </server> + </servers> + </settings> + XML + } + + # Use a maven docker container to deploy the package + with_fixtures([pom_xml, settings_xml]) do |dir| + Service::DockerRun::Maven.new(dir).publish! + 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 was removed") + expect(index).to have_no_package(package_name) + end + end + end + end +end |