From 12221d835d5f63c4747f0cbd30e4aac8b78e857c Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 13 Sep 2021 09:11:26 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- qa/qa/page/project/settings/deploy_tokens.rb | 4 +- qa/qa/resource/deploy_token.rb | 2 +- .../merge_request/rebase_merge_request_spec.rb | 22 ++- .../browser_ui/5_package/npm_registry_spec.rb | 171 ++++++++++++--------- 4 files changed, 112 insertions(+), 87 deletions(-) (limited to 'qa') diff --git a/qa/qa/page/project/settings/deploy_tokens.rb b/qa/qa/page/project/settings/deploy_tokens.rb index db1f6f68ec6..7b61c81154a 100644 --- a/qa/qa/page/project/settings/deploy_tokens.rb +++ b/qa/qa/page/project/settings/deploy_tokens.rb @@ -10,6 +10,7 @@ module QA element :deploy_token_expires_at_field element :deploy_token_read_repository_checkbox element :deploy_token_read_package_registry_checkbox + element :deploy_token_write_package_registry_checkbox element :deploy_token_read_registry_checkbox element :create_deploy_token_button end @@ -28,9 +29,10 @@ module QA fill_element(:deploy_token_expires_at_field, expires_at.to_s + "\n") end - def fill_scopes(read_repository: false, read_registry: false, read_package_registry: false) + def fill_scopes(read_repository: false, read_registry: false, read_package_registry: false, write_package_registry: false) check_element(:deploy_token_read_repository_checkbox) if read_repository check_element(:deploy_token_read_package_registry_checkbox) if read_package_registry + check_element(:deploy_token_write_package_registry_checkbox) if write_package_registry check_element(:deploy_token_read_registry_checkbox) if read_registry end diff --git a/qa/qa/resource/deploy_token.rb b/qa/qa/resource/deploy_token.rb index cd638ad2f85..151454c37b1 100644 --- a/qa/qa/resource/deploy_token.rb +++ b/qa/qa/resource/deploy_token.rb @@ -37,7 +37,7 @@ module QA setting.expand_deploy_tokens do |page| page.fill_token_name(name) page.fill_token_expires_at(expires_at) - page.fill_scopes(read_repository: true, read_package_registry: true) + page.fill_scopes(read_repository: true, read_package_registry: true, write_package_registry: true) page.add_token end diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb index 40f67b6b646..81fb187df85 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb @@ -1,15 +1,16 @@ # frozen_string_literal: true module QA - RSpec.describe 'Create', quarantine: { only: { subdomain: :staging }, issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/323990', type: :flaky } do + RSpec.describe 'Create' do describe 'Merge request rebasing' do - it 'user rebases source branch of merge request', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/1596' do + let(:merge_request) { Resource::MergeRequest.fabricate_via_api! } + + before do Flow::Login.sign_in + end - project = Resource::Project.fabricate_via_api! do |project| - project.name = "only-fast-forward" - end - project.visit! + it 'user rebases source branch of merge request', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/1596' do + merge_request.project.visit! Page::Project::Menu.perform(&:go_to_general_settings) Page::Project::Settings::Main.perform do |main| @@ -18,13 +19,8 @@ module QA end end - merge_request = Resource::MergeRequest.fabricate! do |merge_request| - merge_request.project = project - merge_request.title = 'Needs rebasing' - end - Resource::Repository::ProjectPush.fabricate! do |push| - push.project = project + push.project = merge_request.project push.file_name = "other.txt" push.file_content = "New file added!" push.new_branch = false @@ -33,7 +29,7 @@ module QA merge_request.visit! Page::MergeRequest::Show.perform do |merge_request| - expect(merge_request).to have_content('Needs rebasing') + expect(merge_request).to have_content('Merge blocked: the source branch must be rebased onto the target branch.') expect(merge_request).to be_fast_forward_not_possible expect(merge_request).not_to have_merge_button 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 52ba6da1cae..5a3b4388f0c 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 @@ -3,10 +3,11 @@ module QA RSpec.describe 'Package', :orchestrated, :packages, :reliable, :object_storage do describe 'npm registry' do + using RSpec::Parameterized::TableSyntax include Runtime::Fixtures let!(:registry_scope) { Runtime::Namespace.sandbox_name } - let(:auth_token) do + let!(:personal_access_token) do unless Page::Main::Menu.perform(&:signed_in?) Flow::Login.sign_in end @@ -14,6 +15,13 @@ module QA Resource::PersonalAccessToken.fabricate!.token end + let(:project_deploy_token) do + Resource::DeployToken.fabricate_via_browser_ui! do |deploy_token| + deploy_token.name = 'npm-deploy-token' + deploy_token.project = project + end + 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}" } @@ -109,16 +117,6 @@ module QA } end - let(:npmrc) do - { - file_path: '.npmrc', - content: <<~NPMRC - //#{gitlab_host_with_port}/api/v4/projects/#{project.id}/packages/npm/:_authToken=#{auth_token} - @#{registry_scope}:registry=#{gitlab_address_with_port}/api/v4/projects/#{project.id}/packages/npm/ - NPMRC - } - end - let(:package) do Resource::Package.init do |package| package.name = "@#{registry_scope}/#{project.name}" @@ -133,72 +131,101 @@ module QA another_project.remove_via_api! end - it 'push and pull a npm package via CI', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/1811' 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 - - 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! - Page::Project::Menu.perform(&:click_packages_link) - - Page::Project::Packages::Index.perform do |index| - expect(index).to have_package(package.name) + where(:authentication_token_type, :token_name) do + :personal_access_token | 'Personal Access Token' + :ci_job_token | 'CI Job Token' + :project_deploy_token | 'Deploy Token' + end - index.click_package(package.name) + with_them do + let(:auth_token) do + case authentication_token_type + when :personal_access_token + "\"#{personal_access_token}\"" + when :ci_job_token + '${CI_JOB_TOKEN}' + when :project_deploy_token + "\"#{project_deploy_token.password}\"" + end end - Page::Project::Packages::Show.perform do |show| - expect(show).to have_package_info(package.name, "1.0.0") - - show.click_delete + let(:npmrc) do + { + file_path: '.npmrc', + content: <<~NPMRC + //#{gitlab_host_with_port}/api/v4/projects/#{project.id}/packages/npm/:_authToken=#{auth_token} + @#{registry_scope}:registry=#{gitlab_address_with_port}/api/v4/projects/#{project.id}/packages/npm/ + NPMRC + } end - Page::Project::Packages::Index.perform do |index| - expect(index).to have_content("Package deleted successfully") - expect(index).not_to have_package(package.name) + it "push and pull a npm package via CI using a #{params[:token_name]}", 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 + + 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! + 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.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 end -- cgit v1.2.3