From 9f46488805e86b1bc341ea1620b866016c2ce5ed Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 20 May 2020 14:34:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-0-stable-ee --- ...he_allowed_users_in_namespace_shared_context.rb | 31 ++++++++++++++ .../design_management_shared_contexts.rb | 38 +++++++++++++++++ .../features/error_tracking_shared_context.rb | 4 +- .../issuable/merge_request_shared_context.rb | 49 ++++++++++++++++++++++ .../issuable/project_shared_context.rb | 16 +++++++ .../json_response_shared_context.rb | 2 +- .../rake_task_object_storage_shared_context.rb | 17 ++++++++ .../shared_contexts/navbar_structure_context.rb | 2 + .../policies/group_policy_shared_context.rb | 10 ++--- .../policies/project_policy_shared_context.rb | 3 +- .../project_service_shared_context.rb | 5 +++ .../shared_contexts/services_shared_context.rb | 3 +- spec/support/shared_contexts/spam_constants.rb | 7 ++++ 13 files changed, 175 insertions(+), 12 deletions(-) create mode 100644 spec/support/shared_contexts/cache_allowed_users_in_namespace_shared_context.rb create mode 100644 spec/support/shared_contexts/design_management_shared_contexts.rb create mode 100644 spec/support/shared_contexts/issuable/merge_request_shared_context.rb create mode 100644 spec/support/shared_contexts/issuable/project_shared_context.rb create mode 100644 spec/support/shared_contexts/lib/gitlab/import_export/project/rake_task_object_storage_shared_context.rb create mode 100644 spec/support/shared_contexts/spam_constants.rb (limited to 'spec/support/shared_contexts') diff --git a/spec/support/shared_contexts/cache_allowed_users_in_namespace_shared_context.rb b/spec/support/shared_contexts/cache_allowed_users_in_namespace_shared_context.rb new file mode 100644 index 00000000000..04f49e94647 --- /dev/null +++ b/spec/support/shared_contexts/cache_allowed_users_in_namespace_shared_context.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +shared_examples 'allowed user IDs are cached' do + it 'caches the allowed user IDs in cache', :use_clean_rails_memory_store_caching do + expect do + expect(described_class.l1_cache_backend).to receive(:fetch).and_call_original + expect(described_class.l2_cache_backend).not_to receive(:fetch) + expect(subject).to be_truthy + end.not_to exceed_query_limit(0) + end + + it 'caches the allowed user IDs in L1 cache for 1 minute', :use_clean_rails_memory_store_caching do + Timecop.travel 2.minutes do + expect do + expect(described_class.l1_cache_backend).to receive(:fetch).and_call_original + expect(described_class.l2_cache_backend).to receive(:fetch).and_call_original + expect(subject).to be_truthy + end.not_to exceed_query_limit(0) + end + end + + it 'caches the allowed user IDs in L2 cache for 5 minutes', :use_clean_rails_memory_store_caching do + Timecop.travel 6.minutes do + expect do + expect(described_class.l1_cache_backend).to receive(:fetch).and_call_original + expect(described_class.l2_cache_backend).to receive(:fetch).and_call_original + expect(subject).to be_truthy + end.not_to exceed_query_limit(2) + end + end +end diff --git a/spec/support/shared_contexts/design_management_shared_contexts.rb b/spec/support/shared_contexts/design_management_shared_contexts.rb new file mode 100644 index 00000000000..2866effb3a8 --- /dev/null +++ b/spec/support/shared_contexts/design_management_shared_contexts.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +shared_context 'four designs in three versions' do + include DesignManagementTestHelpers + + let_it_be(:issue) { create(:issue) } + let_it_be(:project) { issue.project } + let_it_be(:authorized_user) { create(:user) } + + let_it_be(:design_a) { create(:design, issue: issue) } + let_it_be(:design_b) { create(:design, issue: issue) } + let_it_be(:design_c) { create(:design, issue: issue) } + let_it_be(:design_d) { create(:design, issue: issue) } + + let_it_be(:first_version) do + create(:design_version, issue: issue, + created_designs: [design_a], + modified_designs: [], + deleted_designs: []) + end + let_it_be(:second_version) do + create(:design_version, issue: issue, + created_designs: [design_b, design_c, design_d], + modified_designs: [design_a], + deleted_designs: []) + end + let_it_be(:third_version) do + create(:design_version, issue: issue, + created_designs: [], + modified_designs: [design_a], + deleted_designs: [design_d]) + end + + before do + enable_design_management + project.add_developer(authorized_user) + end +end diff --git a/spec/support/shared_contexts/features/error_tracking_shared_context.rb b/spec/support/shared_contexts/features/error_tracking_shared_context.rb index cbd33dd109b..102cf7c9b11 100644 --- a/spec/support/shared_contexts/features/error_tracking_shared_context.rb +++ b/spec/support/shared_contexts/features/error_tracking_shared_context.rb @@ -6,9 +6,9 @@ shared_context 'sentry error tracking context feature' do let_it_be(:project) { create(:project) } let_it_be(:project_error_tracking_settings) { create(:project_error_tracking_setting, project: project) } let_it_be(:issue_response_body) { fixture_file('sentry/issue_sample_response.json') } - let_it_be(:issue_response) { JSON.parse(issue_response_body) } + let_it_be(:issue_response) { Gitlab::Json.parse(issue_response_body) } let_it_be(:event_response_body) { fixture_file('sentry/issue_latest_event_sample_response.json') } - let_it_be(:event_response) { JSON.parse(event_response_body) } + let_it_be(:event_response) { Gitlab::Json.parse(event_response_body) } let(:sentry_api_urls) { Sentry::ApiUrls.new(project_error_tracking_settings.api_url) } let(:issue_id) { issue_response['id'] } let(:issue_seen) { 1.year.ago.utc } diff --git a/spec/support/shared_contexts/issuable/merge_request_shared_context.rb b/spec/support/shared_contexts/issuable/merge_request_shared_context.rb new file mode 100644 index 00000000000..05ffb934c34 --- /dev/null +++ b/spec/support/shared_contexts/issuable/merge_request_shared_context.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +shared_context 'merge request show action' do + include Devise::Test::ControllerHelpers + include ProjectForksHelper + + let(:user) { create(:user) } + let(:project) { create(:project, :public, :repository) } + let(:forked_project) { fork_project(project, user, repository: true) } + let(:unlink_project) { Projects::UnlinkForkService.new(forked_project, user) } + let(:note) { create(:note_on_merge_request, project: project, noteable: closed_merge_request) } + + let(:closed_merge_request) do + create(:closed_merge_request, + source_project: forked_project, + target_project: project, + author: user) + end + + def preload_view_requirements + # This will load the status fields of the author of the note and merge request + # to avoid queries in when rendering the view being tested. + closed_merge_request.author.status + note.author.status + end + + before do + assign(:project, project) + assign(:merge_request, closed_merge_request) + assign(:commits_count, 0) + assign(:note, note) + assign(:noteable, closed_merge_request) + assign(:notes, []) + assign(:pipelines, Ci::Pipeline.none) + assign(:issuable_sidebar, serialize_issuable_sidebar(user, project, closed_merge_request)) + + preload_view_requirements + + allow(view).to receive_messages(current_user: user, + can?: true, + current_application_settings: Gitlab::CurrentSettings.current_application_settings) + end + + def serialize_issuable_sidebar(user, project, merge_request) + MergeRequestSerializer + .new(current_user: user, project: project) + .represent(closed_merge_request, serializer: 'sidebar') + end +end diff --git a/spec/support/shared_contexts/issuable/project_shared_context.rb b/spec/support/shared_contexts/issuable/project_shared_context.rb new file mode 100644 index 00000000000..6dbf3154977 --- /dev/null +++ b/spec/support/shared_contexts/issuable/project_shared_context.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +shared_context 'project show action' do + let(:project) { create(:project, :repository) } + let(:issue) { create(:issue, project: project, author: user) } + let(:user) { create(:user) } + + before do + assign(:project, project) + assign(:issue, issue) + assign(:noteable, issue) + stub_template 'shared/issuable/_sidebar' => '' + stub_template 'projects/issues/_discussion' => '' + allow(view).to receive(:user_status).and_return('') + end +end diff --git a/spec/support/shared_contexts/json_response_shared_context.rb b/spec/support/shared_contexts/json_response_shared_context.rb index 6a0734decd5..2f0a564d2bc 100644 --- a/spec/support/shared_contexts/json_response_shared_context.rb +++ b/spec/support/shared_contexts/json_response_shared_context.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true RSpec.shared_context 'JSON response' do - let(:json_response) { JSON.parse(response.body) } + let(:json_response) { Gitlab::Json.parse(response.body) } end diff --git a/spec/support/shared_contexts/lib/gitlab/import_export/project/rake_task_object_storage_shared_context.rb b/spec/support/shared_contexts/lib/gitlab/import_export/project/rake_task_object_storage_shared_context.rb new file mode 100644 index 00000000000..dc1a52e3629 --- /dev/null +++ b/spec/support/shared_contexts/lib/gitlab/import_export/project/rake_task_object_storage_shared_context.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +RSpec.shared_context 'rake task object storage shared context' do + before do + allow(Settings.uploads.object_store).to receive(:[]=).and_call_original + end + + around do |example| + old_object_store_setting = Settings.uploads.object_store['enabled'] + + Settings.uploads.object_store['enabled'] = true + + example.run + + Settings.uploads.object_store['enabled'] = old_object_store_setting + end +end diff --git a/spec/support/shared_contexts/navbar_structure_context.rb b/spec/support/shared_contexts/navbar_structure_context.rb index 4606608866a..fe3c32ec0c5 100644 --- a/spec/support/shared_contexts/navbar_structure_context.rb +++ b/spec/support/shared_contexts/navbar_structure_context.rb @@ -62,6 +62,7 @@ RSpec.shared_context 'project navbar structure' do nav_item: _('Operations'), nav_sub_items: [ _('Metrics'), + _('Alerts'), _('Environments'), _('Error Tracking'), _('Serverless'), @@ -85,6 +86,7 @@ RSpec.shared_context 'project navbar structure' do _('Members'), _('Integrations'), _('Webhooks'), + _('Access Tokens'), _('Repository'), _('CI / CD'), _('Operations'), diff --git a/spec/support/shared_contexts/policies/group_policy_shared_context.rb b/spec/support/shared_contexts/policies/group_policy_shared_context.rb index c2797c49c02..a0d54666dff 100644 --- a/spec/support/shared_contexts/policies/group_policy_shared_context.rb +++ b/spec/support/shared_contexts/policies/group_policy_shared_context.rb @@ -14,17 +14,16 @@ RSpec.shared_context 'GroupPolicy context' do %i[ read_label read_group upload_file read_namespace read_group_activity read_group_issues read_group_boards read_group_labels read_group_milestones - read_group_merge_requests read_wiki + read_group_merge_requests ] end let(:read_group_permissions) { %i[read_label read_list read_milestone read_board] } - let(:reporter_permissions) { %i[admin_label read_container_image read_metrics_dashboard_annotation download_wiki_code] } - let(:developer_permissions) { %i[admin_milestone create_metrics_dashboard_annotation delete_metrics_dashboard_annotation update_metrics_dashboard_annotation create_wiki] } + let(:reporter_permissions) { %i[admin_label read_container_image read_metrics_dashboard_annotation] } + let(:developer_permissions) { %i[admin_milestone create_metrics_dashboard_annotation delete_metrics_dashboard_annotation update_metrics_dashboard_annotation] } let(:maintainer_permissions) do %i[ create_projects read_cluster create_cluster update_cluster admin_cluster add_cluster - admin_wiki ] end let(:owner_permissions) do @@ -35,7 +34,8 @@ RSpec.shared_context 'GroupPolicy context' do :change_visibility_level, :set_note_created_at, :create_subgroup, - :read_statistics + :read_statistics, + :update_default_branch_protection ].compact end 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 055164ec38e..5339fa003b9 100644 --- a/spec/support/shared_contexts/policies/project_policy_shared_context.rb +++ b/spec/support/shared_contexts/policies/project_policy_shared_context.rb @@ -39,7 +39,7 @@ RSpec.shared_context 'ProjectPolicy context' do update_pipeline create_merge_request_from create_wiki push_code resolve_note create_container_image update_container_image create_environment create_deployment update_deployment create_release update_release - update_environment + update_environment daily_statistics ] end @@ -49,7 +49,6 @@ RSpec.shared_context 'ProjectPolicy context' do admin_snippet admin_project_member admin_note admin_wiki admin_project admin_commit_status admin_build admin_container_image admin_pipeline admin_environment admin_deployment destroy_release add_cluster - daily_statistics ] end diff --git a/spec/support/shared_contexts/project_service_shared_context.rb b/spec/support/shared_contexts/project_service_shared_context.rb index 89b196e7039..21d67ea71a8 100644 --- a/spec/support/shared_contexts/project_service_shared_context.rb +++ b/spec/support/shared_contexts/project_service_shared_context.rb @@ -5,6 +5,7 @@ shared_context 'project service activation' do let(:user) { create(:user) } before do + stub_feature_flags(integration_form_refactor: false) project.add_maintainer(user) sign_in(user) end @@ -18,6 +19,10 @@ shared_context 'project service activation' do click_link(name) end + def click_active_toggle + find('input[name="service[active]"] + button').click + end + def click_test_integration click_button('Test settings and save changes') end diff --git a/spec/support/shared_contexts/services_shared_context.rb b/spec/support/shared_contexts/services_shared_context.rb index 21bc0651c44..bf4eac8f324 100644 --- a/spec/support/shared_contexts/services_shared_context.rb +++ b/spec/support/shared_contexts/services_shared_context.rb @@ -31,8 +31,7 @@ Service.available_services_names.each do |service| let(:licensed_features) do { 'github' => :github_project_service_integration, - 'jenkins' => :jenkins_integration, - 'jenkins_deprecated' => :jenkins_integration + 'jenkins' => :jenkins_integration } end diff --git a/spec/support/shared_contexts/spam_constants.rb b/spec/support/shared_contexts/spam_constants.rb new file mode 100644 index 00000000000..b6e92ea3050 --- /dev/null +++ b/spec/support/shared_contexts/spam_constants.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +shared_context 'includes Spam constants' do + REQUIRE_RECAPTCHA = Spam::SpamConstants::REQUIRE_RECAPTCHA + DISALLOW = Spam::SpamConstants::DISALLOW + ALLOW = Spam::SpamConstants::ALLOW +end -- cgit v1.2.3