summaryrefslogtreecommitdiff
path: root/qa/qa/specs/features/browser_ui/5_package/npm_registry_spec.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 15:44:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 15:44:42 +0000
commit4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch)
tree5423a1c7516cffe36384133ade12572cf709398d /qa/qa/specs/features/browser_ui/5_package/npm_registry_spec.rb
parente570267f2f6b326480d284e0164a6464ba4081bc (diff)
downloadgitlab-ce-4555e1b21c365ed8303ffb7a3325d773c9b8bf31.tar.gz
Add latest changes from gitlab-org/gitlab@13-12-stable-eev13.12.0-rc42
Diffstat (limited to 'qa/qa/specs/features/browser_ui/5_package/npm_registry_spec.rb')
-rw-r--r--qa/qa/specs/features/browser_ui/5_package/npm_registry_spec.rb159
1 files changed, 139 insertions, 20 deletions
diff --git a/qa/qa/specs/features/browser_ui/5_package/npm_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/npm_registry_spec.rb
index 49b42bd1ff6..4d714affd65 100644
--- a/qa/qa/specs/features/browser_ui/5_package/npm_registry_spec.rb
+++ b/qa/qa/specs/features/browser_ui/5_package/npm_registry_spec.rb
@@ -5,7 +5,7 @@ module QA
describe 'npm registry' do
include Runtime::Fixtures
- let!(:registry_scope) { project.group.sandbox.path }
+ let!(:registry_scope) { Runtime::Namespace.sandbox_name }
let(:auth_token) do
unless Page::Main::Menu.perform(&:signed_in?)
Flow::Login.sign_in
@@ -14,28 +14,87 @@ module QA
Resource::PersonalAccessToken.fabricate!.token
end
+ let(:uri) { URI.parse(Runtime::Scenario.gitlab_address) }
+ let(:gitlab_address_with_port) { "#{uri.scheme}://#{uri.host}:#{uri.port}" }
+ let(:gitlab_host_with_port) { "#{uri.host}:#{uri.port}" }
+
let!(:project) do
Resource::Project.fabricate_via_api! do |project|
- project.name = 'npm-registry-project'
+ project.name = 'npm-project'
end
end
- let(:package) do
- Resource::Package.new.tap do |package|
- package.name = "@#{registry_scope}/#{project.name}"
- package.project = project
+ let!(:another_project) do
+ Resource::Project.fabricate_via_api! do |another_project|
+ another_project.name = 'npm-another-project'
+ another_project.template_name = 'express'
+ another_project.group = project.group
end
end
- after do
- package.remove_via_api!
+ let!(:runner) do
+ Resource::Runner.fabricate! do |runner|
+ runner.name = "qa-runner-#{Time.now.to_i}"
+ runner.tags = ["runner-for-#{project.group.name}"]
+ runner.executor = :docker
+ runner.token = project.group.sandbox.runners_token
+ end
+ end
+
+ let(:gitlab_ci_deploy_yaml) do
+ {
+ file_path: '.gitlab-ci.yml',
+ content:
+ <<~YAML
+ image: node:14-buster
+
+ stages:
+ - deploy
+
+ deploy:
+ stage: deploy
+ script:
+ - npm publish
+ only:
+ - "#{project.default_branch}"
+ tags:
+ - "runner-for-#{project.group.name}"
+ YAML
+ }
end
- it 'publishes an npm package and then deletes it', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/944' do
- uri = URI.parse(Runtime::Scenario.gitlab_address)
- gitlab_host_with_port = "#{uri.host}:#{uri.port}"
- gitlab_address_with_port = "#{uri.scheme}://#{uri.host}:#{uri.port}"
- package_json = {
+ 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
{
@@ -47,19 +106,79 @@ module QA
}
}
JSON
- }
- npmrc = {
+ }
+ end
+
+ let(:npmrc) do
+ {
file_path: '.npmrc',
content: <<~NPMRC
//#{gitlab_host_with_port}/api/v4/projects/#{project.id}/packages/npm/:_authToken=#{auth_token}
- //#{gitlab_host_with_port}/api/v4/packages/npm/:_authToken=#{auth_token}
- @#{registry_scope}:registry=#{gitlab_address_with_port}/api/v4/packages/npm/
+ @#{registry_scope}:registry=#{gitlab_address_with_port}/api/v4/projects/#{project.id}/packages/npm/
NPMRC
}
+ end
+
+ let(:package) do
+ Resource::Package.new.tap do |package|
+ package.name = "@#{registry_scope}/#{project.name}"
+ package.project = project
+ end
+ end
+
+ after do
+ package.remove_via_api!
+ runner.remove_via_api!
+ project.remove_via_api!
+ another_project.remove_via_api!
+ end
+
+ it 'push and pull a npm package via CI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1772' 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_yaml,
+ npmrc,
+ package_json
+ ])
+ end
+
+ project.visit!
+ Flow::Pipeline.visit_latest_pipeline
+
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('deploy')
+ end
+
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ end
+
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ commit.project = another_project
+ commit.commit_message = 'Add .gitlab-ci.yml'
+ commit.add_files([
+ gitlab_ci_install_yaml
+ ])
+ end
+
+ another_project.visit!
+ Flow::Pipeline.visit_latest_pipeline
+
+ Page::Project::Pipeline::Show.perform do |pipeline|
+ pipeline.click_job('install')
+ end
+
+ Page::Project::Job::Show.perform do |job|
+ expect(job).to be_successful(timeout: 800)
+ job.click_browse_button
+ end
- # Use a node docker container to publish the package
- with_fixtures([npmrc, package_json]) do |dir|
- Service::DockerRun::NodeJs.new(dir).publish!
+ Page::Project::Artifact::Show.perform do |artifacts|
+ artifacts.go_to_directory('node_modules')
+ artifacts.go_to_directory("@#{registry_scope}")
+ expect(artifacts).to have_content( "#{project.name}")
end
project.visit!