diff options
Diffstat (limited to 'qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb')
-rw-r--r-- | qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb | 112 |
1 files changed, 25 insertions, 87 deletions
diff --git a/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb b/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb index 70b31c1beca..04aaefbaf5c 100644 --- a/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb +++ b/qa/qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module QA - RSpec.describe 'Package Registry', :orchestrated, :packages, :object_storage do + RSpec.describe 'Package Registry', :orchestrated, :reliable, :packages, :object_storage do describe 'npm instance level endpoint' do using RSpec::Parameterized::TableSyntax include Runtime::Fixtures @@ -50,79 +50,10 @@ module QA runner.name = "qa-runner-#{Time.now.to_i}" runner.tags = ["runner-for-#{project.group.name}"] runner.executor = :docker - runner.token = project.group.runners_token + runner.token = project.group.reload!.runners_token end end - let(:gitlab_ci_deploy_yaml) do - { - file_path: '.gitlab-ci.yml', - content: - <<~YAML - image: node:latest - - stages: - - deploy - - deploy: - stage: deploy - script: - - echo "//${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=#{auth_token}">.npmrc - - npm publish - only: - - "#{project.default_branch}" - tags: - - "runner-for-#{project.group.name}" - YAML - } - end - - let(:gitlab_ci_install_yaml) do - { - file_path: '.gitlab-ci.yml', - content: - <<~YAML - image: node:latest - - stages: - - install - - install: - stage: install - script: - - "npm config set @#{registry_scope}:registry #{gitlab_address_with_port}/api/v4/packages/npm/" - - "npm install #{package.name}" - cache: - key: ${CI_BUILD_REF_NAME} - paths: - - node_modules/ - artifacts: - paths: - - node_modules/ - only: - - "#{another_project.default_branch}" - tags: - - "runner-for-#{another_project.group.name}" - YAML - } - end - - let(:package_json) do - { - file_path: 'package.json', - content: <<~JSON - { - "name": "#{package.name}", - "version": "1.0.0", - "description": "Example package for GitLab npm registry", - "publishConfig": { - "@#{registry_scope}:registry": "#{gitlab_address_with_port}/api/v4/projects/#{project.id}/packages/npm/" - } - } - JSON - } - end - let(:package) do Resource::Package.init do |package| package.name = "@#{registry_scope}/#{project.name}-#{SecureRandom.hex(8)}" @@ -137,10 +68,10 @@ module QA another_project.remove_via_api! end - where(:authentication_token_type, :token_name) do - :personal_access_token | 'Personal Access Token' - :ci_job_token | 'CI Job Token' - :project_deploy_token | 'Deploy Token' + where(:case_name, :authentication_token_type, :token_name, :testcase) do + 'using personal access token' | :personal_access_token | 'Personal Access Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347600' + 'using ci job token' | :ci_job_token | 'CI Job Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347599' + 'using project deploy token' | :project_deploy_token | 'Deploy Token' | 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347598' end with_them do @@ -155,14 +86,23 @@ module QA end end - it "push and pull a npm package via CI using a #{params[:token_name]}" do + it 'push and pull a npm package via CI', testcase: params[:testcase] do Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do + npm_upload_yaml = ERB.new(read_fixture('package_managers/npm', 'npm_upload_package_instance.yaml.erb')).result(binding) + package_json = ERB.new(read_fixture('package_managers/npm', 'package_instance.json.erb')).result(binding) + Resource::Repository::Commit.fabricate_via_api! do |commit| commit.project = project - commit.commit_message = 'Add .gitlab-ci.yml' + commit.commit_message = 'Add files' commit.add_files([ - gitlab_ci_deploy_yaml, - package_json + { + file_path: '.gitlab-ci.yml', + content: npm_upload_yaml + }, + { + file_path: 'package.json', + content: package_json + } ]) end end @@ -180,10 +120,15 @@ module QA Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do Resource::Repository::Commit.fabricate_via_api! do |commit| + npm_install_yaml = ERB.new(read_fixture('package_managers/npm', 'npm_install_package_instance.yaml.erb')).result(binding) + commit.project = another_project commit.commit_message = 'Add .gitlab-ci.yml' commit.add_files([ - gitlab_ci_install_yaml + { + file_path: '.gitlab-ci.yml', + content: npm_install_yaml + } ]) end end @@ -217,13 +162,6 @@ module QA Page::Project::Packages::Show.perform do |show| expect(show).to have_package_info(package.name, "1.0.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 end |