diff options
Diffstat (limited to 'spec/support/shared_contexts')
17 files changed, 226 insertions, 18 deletions
diff --git a/spec/support/shared_contexts/changes_access_checks_shared_context.rb b/spec/support/shared_contexts/changes_access_checks_shared_context.rb new file mode 100644 index 00000000000..ec3727b6d6c --- /dev/null +++ b/spec/support/shared_contexts/changes_access_checks_shared_context.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +RSpec.shared_context 'changes access checks context' do + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository) } + + let(:user_access) { Gitlab::UserAccess.new(user, container: project) } + let(:protocol) { 'ssh' } + let(:timeout) { Gitlab::GitAccess::INTERNAL_TIMEOUT } + let(:oldrev) { 'be93687618e4b132087f430a4d8fc3a609c9b77c' } + let(:newrev) { '54fcc214b94e78d7a41a9a8fe6d87a5e59500e51' } + let(:ref) { 'refs/heads/master' } + let(:changes) do + [ + # Update of existing branch + { oldrev: oldrev, newrev: newrev, ref: ref }, + # Creation of new branch + { newrev: newrev, ref: 'refs/heads/something' }, + # Deletion of branch + { oldrev: oldrev, ref: 'refs/heads/deleteme' } + ] + end + + let(:logger) { Gitlab::Checks::TimedLogger.new(timeout: timeout) } + let(:changes_access) do + Gitlab::Checks::ChangesAccess.new( + changes, + project: project, + user_access: user_access, + protocol: protocol, + logger: logger + ) + end + + subject { described_class.new(changes_access) } + + before do + project.add_developer(user) + end +end diff --git a/spec/support/shared_contexts/features/integrations/group_integrations_shared_context.rb b/spec/support/shared_contexts/features/integrations/group_integrations_shared_context.rb new file mode 100644 index 00000000000..5996fcc6593 --- /dev/null +++ b/spec/support/shared_contexts/features/integrations/group_integrations_shared_context.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +RSpec.shared_context 'group integration activation' do + include_context 'instance and group integration activation' + + let_it_be(:group) { create(:group) } + let_it_be(:user) { create(:user) } + + before_all do + group.add_owner(user) + end + + before do + sign_in(user) + end + + def visit_group_integrations + visit group_settings_integrations_path(group) + end + + def visit_group_integration(name) + visit_group_integrations + + within('#content-body') do + click_link(name) + end + end +end diff --git a/spec/support/shared_contexts/features/integrations/instance_and_group_integrations_shared_context.rb b/spec/support/shared_contexts/features/integrations/instance_and_group_integrations_shared_context.rb new file mode 100644 index 00000000000..58ee341f71f --- /dev/null +++ b/spec/support/shared_contexts/features/integrations/instance_and_group_integrations_shared_context.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +RSpec.shared_context 'instance and group integration activation' do + include_context 'integration activation' + + def click_save_integration + click_save_changes_button + click_save_settings_modal + end + + def click_save_changes_button + click_button('Save changes') + end + + def click_save_settings_modal + click_button('Save') + end +end diff --git a/spec/support/shared_contexts/features/integrations/instance_integrations_shared_context.rb b/spec/support/shared_contexts/features/integrations/instance_integrations_shared_context.rb new file mode 100644 index 00000000000..3b02db994a3 --- /dev/null +++ b/spec/support/shared_contexts/features/integrations/instance_integrations_shared_context.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +RSpec.shared_context 'instance integration activation' do + include_context 'instance and group integration activation' + + let_it_be(:user) { create(:user, :admin) } + + before do + sign_in(user) + gitlab_enable_admin_mode_sign_in(user) + end + + def visit_instance_integrations + visit integrations_admin_application_settings_path + end + + def visit_instance_integration(name) + visit_instance_integrations + + within('#content-body') do + click_link(name) + end + end +end diff --git a/spec/support/shared_contexts/services_shared_context.rb b/spec/support/shared_contexts/features/integrations/integrations_shared_context.rb index 34c92367efa..e532b42fd1c 100644 --- a/spec/support/shared_contexts/services_shared_context.rb +++ b/spec/support/shared_contexts/features/integrations/integrations_shared_context.rb @@ -5,8 +5,8 @@ Integration.available_services_names.each do |service| include JiraServiceHelper if service == 'jira' let(:dashed_service) { service.dasherize } - let(:service_method) { "#{service}_service".to_sym } - let(:service_klass) { Integration.service_name_to_model(service) } + let(:service_method) { Project.integration_association_name(service) } + let(:service_klass) { Integration.integration_name_to_model(service) } let(:service_instance) { service_klass.new } let(:service_fields) { service_instance.fields } let(:service_attrs_list) { service_fields.inject([]) {|arr, hash| arr << hash[:name].to_sym } } @@ -70,3 +70,9 @@ Integration.available_services_names.each do |service| end end end + +RSpec.shared_context 'integration activation' do + def click_active_checkbox + find('label', text: 'Active').click + end +end diff --git a/spec/support/shared_contexts/project_service_jira_context.rb b/spec/support/shared_contexts/features/integrations/project_integrations_jira_context.rb index 54bb9fd108e..54bb9fd108e 100644 --- a/spec/support/shared_contexts/project_service_jira_context.rb +++ b/spec/support/shared_contexts/features/integrations/project_integrations_jira_context.rb diff --git a/spec/support/shared_contexts/project_service_shared_context.rb b/spec/support/shared_contexts/features/integrations/project_integrations_shared_context.rb index 0e3540a3e15..b10844320d0 100644 --- a/spec/support/shared_contexts/project_service_shared_context.rb +++ b/spec/support/shared_contexts/features/integrations/project_integrations_shared_context.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true RSpec.shared_context 'project service activation' do + include_context 'integration activation' + let(:project) { create(:project) } let(:user) { create(:user) } @@ -21,10 +23,6 @@ RSpec.shared_context 'project service activation' do end end - def click_active_checkbox - find('label', text: 'Active').click - end - def click_save_integration click_button('Save changes') end diff --git a/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb b/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb new file mode 100644 index 00000000000..334b11c9f6e --- /dev/null +++ b/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +RSpec.shared_context 'package details setup' do + let_it_be(:project) { create(:project) } + let_it_be(:package) { create(:package, project: project) } + + let(:package_global_id) { global_id_of(package) } + + let(:depth) { 3 } + let(:excluded) { %w[metadata apiFuzzingCiConfiguration pipeline packageFiles] } + let(:package_files) { all_graphql_fields_for('PackageFile') } + let(:user) { project.owner } + let(:package_details) { graphql_data_at(:package) } + let(:metadata_response) { graphql_data_at(:package, :metadata) } + let(:first_file) { package.package_files.find { |f| global_id_of(f) == first_file_response['id'] } } + let(:package_files_response) { graphql_data_at(:package, :package_files, :nodes) } + let(:first_file_response) { graphql_data_at(:package, :package_files, :nodes, 0)} + let(:first_file_response_metadata) { graphql_data_at(:package, :package_files, :nodes, 0, :file_metadata)} + + let(:query) do + graphql_query_for(:package, { id: package_global_id }, <<~FIELDS) + #{all_graphql_fields_for('PackageDetailsType', max_depth: depth, excluded: excluded)} + metadata { + #{metadata} + } + packageFiles { + nodes { + #{package_files} + } + } + FIELDS + end +end diff --git a/spec/support/shared_contexts/load_balancing_configuration_shared_context.rb b/spec/support/shared_contexts/load_balancing_configuration_shared_context.rb new file mode 100644 index 00000000000..a61b8e9a074 --- /dev/null +++ b/spec/support/shared_contexts/load_balancing_configuration_shared_context.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +RSpec.shared_context 'clear DB Load Balancing configuration' do + def clear_load_balancing_configuration + proxy = ::Gitlab::Database::LoadBalancing.instance_variable_get(:@proxy) + proxy.load_balancer.release_host if proxy + ::Gitlab::Database::LoadBalancing.instance_variable_set(:@proxy, nil) + + ::Gitlab::Database::LoadBalancing::Session.clear_session + end + + around do |example| + clear_load_balancing_configuration + + example.run + + clear_load_balancing_configuration + end +end diff --git a/spec/support/shared_contexts/navbar_structure_context.rb b/spec/support/shared_contexts/navbar_structure_context.rb index 4f8e88ae9da..c00b7203af6 100644 --- a/spec/support/shared_contexts/navbar_structure_context.rb +++ b/spec/support/shared_contexts/navbar_structure_context.rb @@ -18,8 +18,8 @@ RSpec.shared_context 'project navbar structure' do { nav_item: _('Security & Compliance'), nav_sub_items: [ - _('Configuration'), - (_('Audit Events') if Gitlab.ee?) + (_('Audit Events') if Gitlab.ee?), + _('Configuration') ] } end @@ -71,8 +71,16 @@ RSpec.shared_context 'project navbar structure' do ] end + let(:project_context_nav_item) do + { + nav_item: "#{project.name[0, 1].upcase} #{project.name}", + nav_sub_items: [] + } + end + let(:structure) do [ + project_context_nav_item, project_information_nav_item, { nav_item: _('Repository'), @@ -200,8 +208,16 @@ RSpec.shared_context 'group navbar structure' do ] end + let(:group_context_nav_item) do + { + nav_item: "#{group.name[0, 1].upcase} #{group.name}", + nav_sub_items: [] + } + end + let(:structure) do [ + group_context_nav_item, group_information_nav_item, { nav_item: _('Issues'), diff --git a/spec/support/shared_contexts/policies/project_policy_shared_context.rb b/spec/support/shared_contexts/policies/project_policy_shared_context.rb index 35dc709b5d9..d638ffcf8fa 100644 --- a/spec/support/shared_contexts/policies/project_policy_shared_context.rb +++ b/spec/support/shared_contexts/policies/project_policy_shared_context.rb @@ -26,7 +26,7 @@ RSpec.shared_context 'ProjectPolicy context' do let(:base_reporter_permissions) do %i[ admin_issue admin_issue_link admin_label admin_issue_board_list create_snippet - download_code download_wiki_code fork_project metrics_dashboard + daily_statistics download_code download_wiki_code fork_project metrics_dashboard read_build read_commit_status read_confidential_issues read_container_image read_deployment read_environment read_merge_request read_metrics_dashboard_annotation read_pipeline read_prometheus @@ -44,7 +44,7 @@ RSpec.shared_context 'ProjectPolicy context' do create_commit_status create_container_image create_deployment create_environment create_merge_request_from create_metrics_dashboard_annotation create_pipeline create_release - create_wiki daily_statistics delete_metrics_dashboard_annotation + create_wiki delete_metrics_dashboard_annotation destroy_container_image push_code read_pod_logs read_terraform_state resolve_note update_build update_commit_status update_container_image update_deployment update_environment update_merge_request diff --git a/spec/support/shared_contexts/read_ci_configuration_shared_context.rb b/spec/support/shared_contexts/read_ci_configuration_shared_context.rb index 04c50171766..f5d70d5ef5a 100644 --- a/spec/support/shared_contexts/read_ci_configuration_shared_context.rb +++ b/spec/support/shared_contexts/read_ci_configuration_shared_context.rb @@ -5,10 +5,6 @@ RSpec.shared_context 'read ci configuration for sast enabled project' do File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci_for_sast.yml')) end - let_it_be(:gitlab_ci_yml_default_analyzers_content) do - File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci_for_sast_default_analyzers.yml')) - end - let_it_be(:gitlab_ci_yml_excluded_analyzers_content) do File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci_for_sast_excluded_analyzers.yml')) end diff --git a/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb b/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb index ac53be1a1cb..c69a987c00d 100644 --- a/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb +++ b/spec/support/shared_contexts/requests/api/conan_packages_shared_context.rb @@ -8,11 +8,11 @@ RSpec.shared_context 'conan api setup' do let_it_be(:personal_access_token) { create(:personal_access_token) } let_it_be(:user) { personal_access_token.user } let_it_be(:base_secret) { SecureRandom.base64(64) } - let_it_be(:job) { create(:ci_build, :running, user: user) } - let_it_be(:job_token) { job.token } let_it_be(:deploy_token) { create(:deploy_token, read_package_registry: true, write_package_registry: true) } let(:project) { package.project } + let(:job) { create(:ci_build, :running, user: user, project: project) } + let(:job_token) { job.token } let(:auth_token) { personal_access_token.token } let(:project_deploy_token) { create(:project_deploy_token, deploy_token: deploy_token, project: project) } diff --git a/spec/support/shared_contexts/requests/api/helm_packages_shared_context.rb b/spec/support/shared_contexts/requests/api/helm_packages_shared_context.rb new file mode 100644 index 00000000000..099fdec0cc8 --- /dev/null +++ b/spec/support/shared_contexts/requests/api/helm_packages_shared_context.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +RSpec.shared_context 'helm api setup' do + include WorkhorseHelpers + include PackagesManagerApiSpecHelpers + include HttpBasicAuthHelpers + + let_it_be(:user) { create(:user) } + let_it_be(:personal_access_token) { create(:personal_access_token, user: user) } +end diff --git a/spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb b/spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb index 815108be447..c737091df48 100644 --- a/spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb +++ b/spec/support/shared_contexts/requests/api/npm_packages_shared_context.rb @@ -11,7 +11,7 @@ RSpec.shared_context 'npm api setup' do let_it_be(:package, reload: true) { create(:npm_package, project: project, name: "@#{group.path}/scoped_package") } let_it_be(:token) { create(:oauth_access_token, scopes: 'api', resource_owner: user) } let_it_be(:personal_access_token) { create(:personal_access_token, user: user) } - let_it_be(:job, reload: true) { create(:ci_build, user: user, status: :running) } + let_it_be(:job, reload: true) { create(:ci_build, user: user, status: :running, project: project) } let_it_be(:deploy_token) { create(:deploy_token, read_package_registry: true, write_package_registry: true) } let_it_be(:project_deploy_token) { create(:project_deploy_token, deploy_token: deploy_token, project: project) } diff --git a/spec/support/shared_contexts/services/packages/debian/distribution_shared_context.rb b/spec/support/shared_contexts/services/packages/debian/distribution_shared_context.rb new file mode 100644 index 00000000000..67e2c0629cc --- /dev/null +++ b/spec/support/shared_contexts/services/packages/debian/distribution_shared_context.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +RSpec.shared_context 'with published Debian package' do + let_it_be(:group) { create(:group, :public) } + let_it_be(:project) { create(:project, :public, group: group) } + let_it_be(:project_distribution) { create(:debian_project_distribution, container: project, codename: 'unstable', valid_time_duration_seconds: 48.hours.to_i) } + let_it_be(:package) { create(:debian_package, project: project, published_in: project_distribution) } +end + +RSpec.shared_context 'with Debian distribution' do |container_type| + let_it_be(:container_type) { container_type } + + if container_type == :project + let_it_be(:container) { project } + let_it_be(:distribution, reload: true) { project_distribution } + else + let_it_be(:container) { group } + let_it_be(:distribution, reload: true) { create(:debian_group_distribution, container: group, codename: 'unstable', valid_time_duration_seconds: 48.hours.to_i) } + end +end diff --git a/spec/support/shared_contexts/change_access_checks_shared_context.rb b/spec/support/shared_contexts/single_change_access_checks_shared_context.rb index 4c55990c901..bf90c26047b 100644 --- a/spec/support/shared_contexts/change_access_checks_shared_context.rb +++ b/spec/support/shared_contexts/single_change_access_checks_shared_context.rb @@ -12,7 +12,7 @@ RSpec.shared_context 'change access checks context' do let(:timeout) { Gitlab::GitAccess::INTERNAL_TIMEOUT } let(:logger) { Gitlab::Checks::TimedLogger.new(timeout: timeout) } let(:change_access) do - Gitlab::Checks::ChangeAccess.new( + Gitlab::Checks::SingleChangeAccess.new( changes, project: project, user_access: user_access, |