From aee0a117a889461ce8ced6fcf73207fe017f1d99 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Mon, 20 Dec 2021 13:37:47 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-6-stable-ee --- spec/features/admin/admin_deploy_keys_spec.rb | 134 +++++++++++++++----------- spec/features/admin/admin_labels_spec.rb | 2 +- spec/features/admin/admin_projects_spec.rb | 5 +- spec/features/admin/admin_runners_spec.rb | 56 ++++++++++- spec/features/admin/admin_settings_spec.rb | 18 ++++ spec/features/admin/users/user_spec.rb | 5 +- 6 files changed, 157 insertions(+), 63 deletions(-) (limited to 'spec/features/admin') diff --git a/spec/features/admin/admin_deploy_keys_spec.rb b/spec/features/admin/admin_deploy_keys_spec.rb index 53caf0fac33..9b74aa2ac5a 100644 --- a/spec/features/admin/admin_deploy_keys_spec.rb +++ b/spec/features/admin/admin_deploy_keys_spec.rb @@ -3,101 +3,125 @@ require 'spec_helper' RSpec.describe 'admin deploy keys' do + include Spec::Support::Helpers::ModalHelpers + let_it_be(:admin) { create(:admin) } let!(:deploy_key) { create(:deploy_key, public: true) } let!(:another_deploy_key) { create(:another_deploy_key, public: true) } before do - stub_feature_flags(admin_deploy_keys_vue: false) sign_in(admin) gitlab_enable_admin_mode_sign_in(admin) end - it 'show all public deploy keys' do - visit admin_deploy_keys_path + shared_examples 'renders deploy keys correctly' do + it 'show all public deploy keys' do + visit admin_deploy_keys_path - page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do - expect(page).to have_content(deploy_key.title) - expect(page).to have_content(another_deploy_key.title) + page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do + expect(page).to have_content(deploy_key.title) + expect(page).to have_content(another_deploy_key.title) + end end - end - it 'shows all the projects the deploy key has write access' do - write_key = create(:deploy_keys_project, :write_access, deploy_key: deploy_key) + it 'shows all the projects the deploy key has write access' do + write_key = create(:deploy_keys_project, :write_access, deploy_key: deploy_key) - visit admin_deploy_keys_path + visit admin_deploy_keys_path - page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do - expect(page).to have_content(write_key.project.full_name) + page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do + expect(page).to have_content(write_key.project.full_name) + end end - end - describe 'create a new deploy key' do - let(:new_ssh_key) { attributes_for(:key)[:key] } + describe 'create a new deploy key' do + let(:new_ssh_key) { attributes_for(:key)[:key] } - before do - visit admin_deploy_keys_path - click_link 'New deploy key' - end + before do + visit admin_deploy_keys_path + click_link 'New deploy key' + end - it 'creates a new deploy key' do - fill_in 'deploy_key_title', with: 'laptop' - fill_in 'deploy_key_key', with: new_ssh_key - click_button 'Create' + it 'creates a new deploy key' do + fill_in 'deploy_key_title', with: 'laptop' + fill_in 'deploy_key_key', with: new_ssh_key + click_button 'Create' - expect(current_path).to eq admin_deploy_keys_path + expect(current_path).to eq admin_deploy_keys_path - page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do - expect(page).to have_content('laptop') + page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do + expect(page).to have_content('laptop') + end end end - end - describe 'update an existing deploy key' do - before do - visit admin_deploy_keys_path - find('tr', text: deploy_key.title).click_link('Edit') - end + describe 'update an existing deploy key' do + before do + visit admin_deploy_keys_path + page.within('tr', text: deploy_key.title) do + click_link(_('Edit deploy key')) + end + end - it 'updates an existing deploy key' do - fill_in 'deploy_key_title', with: 'new-title' - click_button 'Save changes' + it 'updates an existing deploy key' do + fill_in 'deploy_key_title', with: 'new-title' + click_button 'Save changes' - expect(current_path).to eq admin_deploy_keys_path + expect(current_path).to eq admin_deploy_keys_path - page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do - expect(page).to have_content('new-title') + page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do + expect(page).to have_content('new-title') + end end end end - describe 'remove an existing deploy key' do - before do - visit admin_deploy_keys_path - end + context 'when `admin_deploy_keys_vue` feature flag is enabled', :js do + it_behaves_like 'renders deploy keys correctly' - it 'removes an existing deploy key' do - find('tr', text: deploy_key.title).click_link('Remove') + describe 'remove an existing deploy key' do + before do + visit admin_deploy_keys_path + end - expect(current_path).to eq admin_deploy_keys_path - page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do - expect(page).not_to have_content(deploy_key.title) + it 'removes an existing deploy key' do + accept_gl_confirm('Are you sure you want to delete this deploy key?', button_text: 'Delete') do + page.within('tr', text: deploy_key.title) do + click_button _('Delete deploy key') + end + end + + expect(current_path).to eq admin_deploy_keys_path + page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do + expect(page).not_to have_content(deploy_key.title) + end end end end - context 'when `admin_deploy_keys_vue` feature flag is enabled', :js do + context 'when `admin_deploy_keys_vue` feature flag is disabled' do before do - stub_feature_flags(admin_deploy_keys_vue: true) - - visit admin_deploy_keys_path + stub_feature_flags(admin_deploy_keys_vue: false) end - it 'renders the Vue app', :aggregate_failures do - expect(page).to have_content('Public deploy keys') - expect(page).to have_selector('[data-testid="deploy-keys-list"]') - expect(page).to have_link('New deploy key', href: new_admin_deploy_key_path) + it_behaves_like 'renders deploy keys correctly' + + describe 'remove an existing deploy key' do + before do + visit admin_deploy_keys_path + end + + it 'removes an existing deploy key' do + page.within('tr', text: deploy_key.title) do + click_link _('Remove deploy key') + end + + expect(current_path).to eq admin_deploy_keys_path + page.within(find('[data-testid="deploy-keys-list"]', match: :first)) do + expect(page).not_to have_content(deploy_key.title) + end + end end end end diff --git a/spec/features/admin/admin_labels_spec.rb b/spec/features/admin/admin_labels_spec.rb index 65de1160cfd..86d60b5d483 100644 --- a/spec/features/admin/admin_labels_spec.rb +++ b/spec/features/admin/admin_labels_spec.rb @@ -45,7 +45,7 @@ RSpec.describe 'admin issues labels' do wait_for_requests - expect(page).to have_content("There are no labels yet") + expect(page).to have_content("Define your default set of project labels") expect(page).not_to have_content('bug') expect(page).not_to have_content('feature_label') end diff --git a/spec/features/admin/admin_projects_spec.rb b/spec/features/admin/admin_projects_spec.rb index a50ef34d327..8938bab60d7 100644 --- a/spec/features/admin/admin_projects_spec.rb +++ b/spec/features/admin/admin_projects_spec.rb @@ -6,6 +6,7 @@ RSpec.describe "Admin::Projects" do include Spec::Support::Helpers::Features::MembersHelpers include Spec::Support::Helpers::Features::InviteMembersModalHelper include Select2Helper + include Spec::Support::Helpers::ModalHelpers let(:user) { create :user } let(:project) { create(:project) } @@ -39,7 +40,7 @@ RSpec.describe "Admin::Projects" do expect(page).to have_content(project.name) expect(page).to have_content(archived_project.name) - expect(page).to have_xpath("//span[@class='badge badge-warning']", text: 'archived') + expect(page).to have_xpath("//span[@class='gl-badge badge badge-pill badge-warning md']", text: 'archived') end it 'renders only archived projects', :js do @@ -145,7 +146,7 @@ RSpec.describe "Admin::Projects" do click_button 'Leave' end - page.within('[role="dialog"]') do + within_modal do click_button('Leave') end diff --git a/spec/features/admin/admin_runners_spec.rb b/spec/features/admin/admin_runners_spec.rb index 7e2751daefa..cc2d36221dc 100644 --- a/spec/features/admin/admin_runners_spec.rb +++ b/spec/features/admin/admin_runners_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe "Admin Runners" do include StubENV + include Spec::Support::Helpers::ModalHelpers before do stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false') @@ -25,7 +26,7 @@ RSpec.describe "Admin Runners" do visit admin_runners_path expect(page).to have_text "Register an instance runner" - expect(page).to have_text "Runners currently online: 1" + expect(page).to have_text "Online Runners 1" end it 'with an instance runner shows an instance badge' do @@ -58,6 +59,55 @@ RSpec.describe "Admin Runners" do end end + it 'shows a job count' do + runner = create(:ci_runner, :project, projects: [project]) + + create(:ci_build, runner: runner) + create(:ci_build, runner: runner) + + visit admin_runners_path + + within "[data-testid='runner-row-#{runner.id}'] [data-label='Jobs']" do + expect(page).to have_content '2' + end + end + + describe 'delete runner' do + let!(:runner) { create(:ci_runner, description: 'runner-foo') } + + before do + visit admin_runners_path + + within "[data-testid='runner-row-#{runner.id}']" do + click_on 'Delete runner' + end + end + + it 'shows a confirmation modal' do + expect(page).to have_text "Delete runner ##{runner.id} (#{runner.short_sha})?" + expect(page).to have_text "Are you sure you want to continue?" + end + + it 'deletes a runner' do + within '.modal' do + click_on 'Delete runner' + end + + expect(page.find('.gl-toast')).to have_text(/Runner .+ deleted/) + expect(page).not_to have_content 'runner-foo' + end + + it 'cancels runner deletion' do + within '.modal' do + click_on 'Cancel' + end + + wait_for_requests + + expect(page).to have_content 'runner-foo' + end + end + describe 'search' do before do create(:ci_runner, :instance, description: 'runner-foo') @@ -323,7 +373,7 @@ RSpec.describe "Admin Runners" do it 'has all necessary texts including no runner message' do expect(page).to have_text "Register an instance runner" - expect(page).to have_text "Runners currently online: 0" + expect(page).to have_text "Online Runners 0" expect(page).to have_text 'No runners found' end end @@ -353,7 +403,7 @@ RSpec.describe "Admin Runners" do end it 'dismisses runner installation modal' do - page.within('[role="dialog"]') do + within_modal do click_button('Close', match: :first) end diff --git a/spec/features/admin/admin_settings_spec.rb b/spec/features/admin/admin_settings_spec.rb index 0a39baca259..29323c604ef 100644 --- a/spec/features/admin/admin_settings_spec.rb +++ b/spec/features/admin/admin_settings_spec.rb @@ -445,6 +445,24 @@ RSpec.describe 'Admin updates settings' do expect(current_settings.repository_storages_weighted).to eq('default' => 50) end + + context 'External storage for repository static objects' do + it 'changes Repository external storage settings' do + encrypted_token = Gitlab::CryptoHelper.aes256_gcm_encrypt('OldToken') + current_settings.update_attribute :static_objects_external_storage_auth_token_encrypted, encrypted_token + + visit repository_admin_application_settings_path + + page.within('.as-repository-static-objects') do + fill_in 'application_setting_static_objects_external_storage_url', with: 'http://example.com' + fill_in 'application_setting_static_objects_external_storage_auth_token', with: 'Token' + click_button 'Save changes' + end + + expect(current_settings.static_objects_external_storage_url).to eq('http://example.com') + expect(current_settings.static_objects_external_storage_auth_token).to eq('Token') + end + end end context 'Reporting page' do diff --git a/spec/features/admin/users/user_spec.rb b/spec/features/admin/users/user_spec.rb index 73477fb93dd..ae940fecabe 100644 --- a/spec/features/admin/users/user_spec.rb +++ b/spec/features/admin/users/user_spec.rb @@ -4,6 +4,7 @@ require 'spec_helper' RSpec.describe 'Admin::Users::User' do include Spec::Support::Helpers::Features::AdminUsersHelpers + include Spec::Support::Helpers::ModalHelpers let_it_be(:user) { create(:omniauth_user, provider: 'twitter', extern_uid: '123456') } let_it_be(:current_user) { create(:admin) } @@ -113,7 +114,7 @@ RSpec.describe 'Admin::Users::User' do click_action_in_user_dropdown(user_sole_owner_of_group.id, 'Delete user and contributions') - page.within('[role="dialog"]') do + within_modal do fill_in('username', with: user_sole_owner_of_group.name) click_button('Delete user and contributions') end @@ -426,7 +427,7 @@ RSpec.describe 'Admin::Users::User' do click_button 'Confirm user' - page.within('[role="dialog"]') do + within_modal do expect(page).to have_content("Confirm user #{unconfirmed_user.name}?") expect(page).to have_content('This user has an unconfirmed email address. You may force a confirmation.') -- cgit v1.2.1