diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-20 18:19:03 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-20 18:19:03 +0300 |
commit | 14bd84b61276ef29b97d23642d698de769bacfd2 (patch) | |
tree | f9eba90140c1bd874211dea17750a0d422c04080 /spec/support/helpers | |
parent | 891c388697b2db0d8ee0c8358a9bdbf6dc56d581 (diff) |
Add latest changes from gitlab-org/gitlab@15-10-stable-eev15.10.0-rc42
Diffstat (limited to 'spec/support/helpers')
-rw-r--r-- | spec/support/helpers/ci/template_helpers.rb | 4 | ||||
-rw-r--r-- | spec/support/helpers/content_editor_helpers.rb | 58 | ||||
-rw-r--r-- | spec/support/helpers/fake_u2f_device.rb | 47 | ||||
-rw-r--r-- | spec/support/helpers/features/two_factor_helpers.rb | 41 | ||||
-rw-r--r-- | spec/support/helpers/filtered_search_helpers.rb | 11 | ||||
-rw-r--r-- | spec/support/helpers/fixture_helpers.rb | 2 | ||||
-rw-r--r-- | spec/support/helpers/gitaly_setup.rb | 17 | ||||
-rw-r--r-- | spec/support/helpers/graphql_helpers.rb | 4 | ||||
-rw-r--r-- | spec/support/helpers/login_helpers.rb | 14 | ||||
-rw-r--r-- | spec/support/helpers/navbar_structure_helper.rb | 8 | ||||
-rw-r--r-- | spec/support/helpers/query_recorder.rb | 4 | ||||
-rw-r--r-- | spec/support/helpers/repo_helpers.rb | 4 | ||||
-rw-r--r-- | spec/support/helpers/stub_configuration.rb | 2 | ||||
-rw-r--r-- | spec/support/helpers/stub_object_storage.rb | 4 | ||||
-rw-r--r-- | spec/support/helpers/test_env.rb | 1 | ||||
-rw-r--r-- | spec/support/helpers/usage_data_helpers.rb | 2 |
16 files changed, 150 insertions, 73 deletions
diff --git a/spec/support/helpers/ci/template_helpers.rb b/spec/support/helpers/ci/template_helpers.rb index cd3ab4bd82d..1818dec5fc7 100644 --- a/spec/support/helpers/ci/template_helpers.rb +++ b/spec/support/helpers/ci/template_helpers.rb @@ -6,6 +6,10 @@ module Ci 'registry.gitlab.com' end + def auto_build_image_repository + "gitlab-org/cluster-integration/auto-build-image" + end + def public_image_exist?(registry, repository, image) public_image_manifest(registry, repository, image).present? end diff --git a/spec/support/helpers/content_editor_helpers.rb b/spec/support/helpers/content_editor_helpers.rb new file mode 100644 index 00000000000..c12fd1fbbd7 --- /dev/null +++ b/spec/support/helpers/content_editor_helpers.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +module ContentEditorHelpers + def switch_to_content_editor + click_button _('Viewing markdown') + click_button _('Rich text') + end + + def type_in_content_editor(keys) + find(content_editor_testid).send_keys keys + end + + def open_insert_media_dropdown + page.find('svg[data-testid="media-icon"]').click + end + + def set_source_editor_content(content) + find('.js-gfm-input').set content + end + + def expect_formatting_menu_to_be_visible + expect(page).to have_css('[data-testid="formatting-bubble-menu"]') + end + + def expect_formatting_menu_to_be_hidden + expect(page).not_to have_css('[data-testid="formatting-bubble-menu"]') + end + + def expect_media_bubble_menu_to_be_visible + expect(page).to have_css('[data-testid="media-bubble-menu"]') + end + + def upload_asset(fixture_name) + attach_file('content_editor_image', Rails.root.join('spec', 'fixtures', fixture_name), make_visible: true) + end + + def wait_until_hidden_field_is_updated(value) + expect(page).to have_field(with: value, type: 'hidden') + end + + def display_media_bubble_menu(media_element_selector, fixture_file) + upload_asset fixture_file + + wait_for_requests + + expect(page).to have_css(media_element_selector) + + page.find(media_element_selector).click + end + + def click_edit_diagram_button + page.find('[data-testid="edit-diagram"]').click + end + + def expect_drawio_editor_is_opened + expect(page).to have_css('#drawio-frame', visible: :hidden) + end +end diff --git a/spec/support/helpers/fake_u2f_device.rb b/spec/support/helpers/fake_u2f_device.rb deleted file mode 100644 index 2ed1222ebd3..00000000000 --- a/spec/support/helpers/fake_u2f_device.rb +++ /dev/null @@ -1,47 +0,0 @@ -# frozen_string_literal: true - -class FakeU2fDevice - attr_reader :name - - def initialize(page, name, device = nil) - @page = page - @name = name - @u2f_device = device - end - - def respond_to_u2f_registration - app_id = @page.evaluate_script('gon.u2f.app_id') - challenges = @page.evaluate_script('gon.u2f.challenges') - - json_response = u2f_device(app_id).register_response(challenges[0]) - - @page.execute_script(" - u2f.register = function(appId, registerRequests, signRequests, callback) { - callback(#{json_response}); - }; - ") - end - - def respond_to_u2f_authentication - app_id = @page.evaluate_script('gon.u2f.app_id') - challenge = @page.evaluate_script('gon.u2f.challenge') - json_response = u2f_device(app_id).sign_response(challenge) - - @page.execute_script(" - u2f.sign = function(appId, challenges, signRequests, callback) { - callback(#{json_response}); - }; - window.gl.u2fAuthenticate.start(); - ") - end - - def fake_u2f_authentication - @page.execute_script("window.gl.u2fAuthenticate.renderAuthenticated('abc');") - end - - private - - def u2f_device(app_id) - @u2f_device ||= U2F::FakeU2F.new(app_id) - end -end diff --git a/spec/support/helpers/features/two_factor_helpers.rb b/spec/support/helpers/features/two_factor_helpers.rb index 08a7665201f..d5f069a40ea 100644 --- a/spec/support/helpers/features/two_factor_helpers.rb +++ b/spec/support/helpers/features/two_factor_helpers.rb @@ -14,23 +14,25 @@ module Spec module Helpers module Features module TwoFactorHelpers + def copy_recovery_codes + click_on _('Copy codes') + click_on _('Proceed') + end + + def enable_two_factor_authentication + click_on _('Enable two-factor authentication') + expect(page).to have_content(_('Set up new device')) + wait_for_requests + end + def manage_two_factor_authentication click_on 'Manage two-factor authentication' expect(page).to have_content("Set up new device") wait_for_requests end - def register_u2f_device(u2f_device = nil, name: 'My device') - u2f_device ||= FakeU2fDevice.new(page, name) - u2f_device.respond_to_u2f_registration - click_on 'Set up new device' - expect(page).to have_content('Your device was successfully set up') - fill_in "Pick a name", with: name - click_on 'Register device' - u2f_device - end - # Registers webauthn device via UI + # Remove after `webauthn_without_totp` feature flag is deleted. def register_webauthn_device(webauthn_device = nil, name: 'My device') webauthn_device ||= FakeWebauthnDevice.new(page, name) webauthn_device.respond_to_webauthn_registration @@ -41,6 +43,25 @@ module Spec webauthn_device end + def webauthn_device_registration(webauthn_device: nil, name: 'My device', password: 'fake') + webauthn_device ||= FakeWebauthnDevice.new(page, name) + webauthn_device.respond_to_webauthn_registration + click_on _('Set up new device') + webauthn_fill_form_and_submit(name: name, password: password) + webauthn_device + end + + def webauthn_fill_form_and_submit(name: 'My device', password: 'fake') + expect(page).to have_content( + _('Your device was successfully set up! Give it a name and register it with the GitLab server.') + ) + within '[data-testid="create-webauthn"]' do + fill_in _('Device name'), with: name + fill_in _('Current password'), with: password + click_on _('Register device') + end + end + # Adds webauthn device directly via database def add_webauthn_device(app_id, user, fake_device = nil, name: 'My device') fake_device ||= WebAuthn::FakeClient.new(app_id) diff --git a/spec/support/helpers/filtered_search_helpers.rb b/spec/support/helpers/filtered_search_helpers.rb index 677cea7b804..b07f5dcf2e1 100644 --- a/spec/support/helpers/filtered_search_helpers.rb +++ b/spec/support/helpers/filtered_search_helpers.rb @@ -190,9 +190,9 @@ module FilteredSearchHelpers ## # For use with gl-filtered-search - def select_tokens(*args, submit: false) + def select_tokens(*args, submit: false, input_text: 'Search') within '[data-testid="filtered-search-input"]' do - find_field('Search').click + find_field(input_text).click args.each do |token| # Move mouse away to prevent invoking tooltips on usernames, which blocks the search input @@ -230,6 +230,13 @@ module FilteredSearchHelpers find('.gl-filtered-search-token-segment', text: value).click end + def toggle_sort_direction + page.within('.vue-filtered-search-bar-container .sort-dropdown-container') do + page.find("button[title^='Sort direction']").click + wait_for_requests + end + end + def expect_visible_suggestions_list expect(page).to have_css('.gl-filtered-search-suggestion-list') end diff --git a/spec/support/helpers/fixture_helpers.rb b/spec/support/helpers/fixture_helpers.rb index 7b3b8ae5f7a..eafdecb2e3d 100644 --- a/spec/support/helpers/fixture_helpers.rb +++ b/spec/support/helpers/fixture_helpers.rb @@ -8,6 +8,6 @@ module FixtureHelpers end def expand_fixture_path(filename, dir: '') - File.expand_path(Rails.root.join(dir, 'spec', 'fixtures', filename)) + File.expand_path(rails_root_join(dir, 'spec', 'fixtures', filename)) end end diff --git a/spec/support/helpers/gitaly_setup.rb b/spec/support/helpers/gitaly_setup.rb index 398a2a20f2f..bf3c67a1818 100644 --- a/spec/support/helpers/gitaly_setup.rb +++ b/spec/support/helpers/gitaly_setup.rb @@ -198,8 +198,23 @@ module GitalySetup end LOGGER.debug "Checking gitaly-ruby bundle...\n" + + bundle_install unless bundle_check + + abort 'bundle check failed' unless bundle_check + end + + def bundle_check + bundle_cmd('check') + end + + def bundle_install + bundle_cmd('install') + end + + def bundle_cmd(cmd) out = ENV['CI'] ? $stdout : '/dev/null' - abort 'bundle check failed' unless system(env, 'bundle', 'check', out: out, chdir: gemfile_dir) + system(env, 'bundle', cmd, out: out, chdir: gemfile_dir) end def connect_proc(toml) diff --git a/spec/support/helpers/graphql_helpers.rb b/spec/support/helpers/graphql_helpers.rb index 2176a477371..191e5192a61 100644 --- a/spec/support/helpers/graphql_helpers.rb +++ b/spec/support/helpers/graphql_helpers.rb @@ -310,7 +310,7 @@ module GraphqlHelpers "{ #{q} }" end - def graphql_mutation(name, input, fields = nil, &block) + def graphql_mutation(name, input, fields = nil, excluded = [], &block) raise ArgumentError, 'Please pass either `fields` parameter or a block to `#graphql_mutation`, but not both.' if fields.present? && block name = name.graphql_name if name.respond_to?(:graphql_name) @@ -319,7 +319,7 @@ module GraphqlHelpers mutation_field = GitlabSchema.mutation.fields[mutation_name] fields = yield if block - fields ||= all_graphql_fields_for(mutation_field.type.to_type_signature) + fields ||= all_graphql_fields_for(mutation_field.type.to_type_signature, excluded: excluded) query = <<~MUTATION mutation(#{input_variable_name}: #{mutation_field.arguments['input'].type.to_type_signature}) { diff --git a/spec/support/helpers/login_helpers.rb b/spec/support/helpers/login_helpers.rb index 5fde80e6dc9..e93d04a0b80 100644 --- a/spec/support/helpers/login_helpers.rb +++ b/spec/support/helpers/login_helpers.rb @@ -139,11 +139,6 @@ module LoginHelpers click_link_or_button "oauth-login-#{provider}" end - def fake_successful_u2f_authentication - allow(U2fRegistration).to receive(:authenticate).and_return(true) - FakeU2fDevice.new(page, nil).fake_u2f_authentication - end - def fake_successful_webauthn_authentication allow_any_instance_of(Webauthn::AuthenticateService).to receive(:execute).and_return(true) FakeWebauthnDevice.new(page, nil).fake_webauthn_authentication @@ -218,6 +213,15 @@ module LoginHelpers config end + def prepare_provider_route(provider_name) + routes = Rails.application.routes + routes.disable_clear_and_finalize = true + routes.formatter.clear + routes.draw do + post "/users/auth/#{provider_name}" => "omniauth_callbacks##{provider_name}" + end + end + def stub_omniauth_provider(provider, context: Rails.application) env = env_from_context(context) diff --git a/spec/support/helpers/navbar_structure_helper.rb b/spec/support/helpers/navbar_structure_helper.rb index 48c6e590e1b..8248ea0bb84 100644 --- a/spec/support/helpers/navbar_structure_helper.rb +++ b/spec/support/helpers/navbar_structure_helper.rb @@ -106,6 +106,14 @@ module NavbarStructureHelper ) end + def insert_infrastructure_aws_nav + insert_after_sub_nav_item( + _('Google Cloud'), + within: _('Infrastructure'), + new_sub_nav_item_name: _('AWS') + ) + end + def project_analytics_sub_nav_item [ _('Value stream'), diff --git a/spec/support/helpers/query_recorder.rb b/spec/support/helpers/query_recorder.rb index 5be9ba9ae1e..e8fa73a1b95 100644 --- a/spec/support/helpers/query_recorder.rb +++ b/spec/support/helpers/query_recorder.rb @@ -102,6 +102,10 @@ module ActiveRecord @occurrences ||= @log.group_by(&:to_s).transform_values(&:count) end + def occurrences_starting_with(str) + occurrences.select { |query, _count| query.starts_with?(str) } + end + def ignorable?(values) return true if skip_schema_queries && values[:name]&.include?("SCHEMA") return true if values[:name]&.match(/License Load/) diff --git a/spec/support/helpers/repo_helpers.rb b/spec/support/helpers/repo_helpers.rb index 9f37cf61cc9..45467fb7099 100644 --- a/spec/support/helpers/repo_helpers.rb +++ b/spec/support/helpers/repo_helpers.rb @@ -41,6 +41,7 @@ eos line_code: '2f6fcd96b88b36ce98c38da085c795a27d92a3dd_15_14', line_code_path: 'files/ruby/popen.rb', del_line_code: '2f6fcd96b88b36ce98c38da085c795a27d92a3dd_13_13', + referenced_by: [], message: <<eos Change some files Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> @@ -56,6 +57,7 @@ eos author_full_name: "Sytse Sijbrandij", author_email: "sytse@gitlab.com", files_changed_count: 1, + referenced_by: [], message: <<eos Add directory structure for tree_helper spec @@ -74,6 +76,7 @@ eos sha: "913c66a37b4a45b9769037c55c2d238bd0942d2e", author_full_name: "Dmitriy Zaporozhets", author_email: "dmitriy.zaporozhets@gmail.com", + referenced_by: [], message: <<eos Files, encoding and much more Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> @@ -89,6 +92,7 @@ eos author_email: "dmitriy.zaporozhets@gmail.com", old_blob_id: '33f3729a45c02fc67d00adb1b8bca394b0e761d9', new_blob_id: '2f63565e7aac07bcdadb654e253078b727143ec4', + referenced_by: [], message: <<eos Modified image Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> diff --git a/spec/support/helpers/stub_configuration.rb b/spec/support/helpers/stub_configuration.rb index 4ca8f26be9e..2a7b36a4c00 100644 --- a/spec/support/helpers/stub_configuration.rb +++ b/spec/support/helpers/stub_configuration.rb @@ -179,7 +179,7 @@ module StubConfiguration def to_settings(hash) hash.transform_values do |value| if value.is_a? Hash - Settingslogic.new(value.deep_stringify_keys) + Settingslogic.new(value.to_h.deep_stringify_keys) else value end diff --git a/spec/support/helpers/stub_object_storage.rb b/spec/support/helpers/stub_object_storage.rb index 6b633856228..d120e1805e3 100644 --- a/spec/support/helpers/stub_object_storage.rb +++ b/spec/support/helpers/stub_object_storage.rb @@ -15,7 +15,7 @@ module StubObjectStorage direct_upload: false, cdn: {} ) - old_config = Settingslogic.new(config.deep_stringify_keys) + old_config = Settingslogic.new(config.to_h.deep_stringify_keys) new_config = config.to_h.deep_symbolize_keys.merge({ enabled: enabled, proxy_download: proxy_download, @@ -30,7 +30,7 @@ module StubObjectStorage allow(config).to receive(:proxy_download) { proxy_download } allow(config).to receive(:direct_upload) { direct_upload } - uploader_config = Settingslogic.new(new_config.deep_stringify_keys) + uploader_config = Settingslogic.new(new_config.to_h.deep_stringify_keys) allow(uploader).to receive(:object_store_options).and_return(uploader_config) allow(uploader.options).to receive(:object_store).and_return(uploader_config) diff --git a/spec/support/helpers/test_env.rb b/spec/support/helpers/test_env.rb index 3403064bf0b..727b8a6b880 100644 --- a/spec/support/helpers/test_env.rb +++ b/spec/support/helpers/test_env.rb @@ -2,6 +2,7 @@ require 'parallel' require_relative 'gitaly_setup' +require_relative '../../../lib/gitlab/setup_helper' module TestEnv extend self diff --git a/spec/support/helpers/usage_data_helpers.rb b/spec/support/helpers/usage_data_helpers.rb index 2bec945fbc8..9abfc39e31f 100644 --- a/spec/support/helpers/usage_data_helpers.rb +++ b/spec/support/helpers/usage_data_helpers.rb @@ -54,8 +54,6 @@ module UsageDataHelpers projects_asana_active projects_jenkins_active projects_jira_active - projects_jira_server_active - projects_jira_cloud_active projects_jira_dvcs_cloud_active projects_jira_dvcs_server_active projects_slack_active |