diff options
Diffstat (limited to 'spec/support/shared_contexts')
10 files changed, 170 insertions, 24 deletions
diff --git a/spec/support/shared_contexts/features/integrations/integrations_shared_context.rb b/spec/support/shared_contexts/features/integrations/integrations_shared_context.rb index 8c17136b1e2..848e333d88b 100644 --- a/spec/support/shared_contexts/features/integrations/integrations_shared_context.rb +++ b/spec/support/shared_contexts/features/integrations/integrations_shared_context.rb @@ -92,6 +92,8 @@ RSpec.shared_context 'with integration' do hash.merge!(k => File.read('spec/fixtures/service_account.json')) elsif integration == 'google_play' && k == :service_account_key_file_name hash.merge!(k => 'service_account.json') + elsif integration == 'google_play' && k == :google_play_protected_refs # rubocop:disable Lint/DuplicateBranch + hash.merge!(k => true) else hash.merge!(k => "someword") end diff --git a/spec/support/shared_contexts/glfm/api_markdown_snapshot_shared_context.rb b/spec/support/shared_contexts/glfm/api_markdown_snapshot_shared_context.rb index 3623fa0850d..a0d91d813ae 100644 --- a/spec/support/shared_contexts/glfm/api_markdown_snapshot_shared_context.rb +++ b/spec/support/shared_contexts/glfm/api_markdown_snapshot_shared_context.rb @@ -29,7 +29,6 @@ RSpec.shared_context 'with API::Markdown Snapshot shared context' do |ee_only: f let(:normalizations) { normalizations_by_example_name.dig(name, :html, :static, :snapshot) } it "verifies conversion of GLFM to HTML", :unlimited_max_formatted_output_length do - # noinspection RubyResolve normalized_html = normalize_html(html, normalizations) api_url = metadata_by_example_name&.dig(name, :api_request_override_path) || (api "/markdown") diff --git a/spec/support/shared_contexts/graphql/types/query_type_shared_context.rb b/spec/support/shared_contexts/graphql/types/query_type_shared_context.rb index 26f550b9b40..434592ccd38 100644 --- a/spec/support/shared_contexts/graphql/types/query_type_shared_context.rb +++ b/spec/support/shared_contexts/graphql/types/query_type_shared_context.rb @@ -41,7 +41,9 @@ RSpec.shared_context 'with FOSS query type fields' do :user, :users, :work_item, - :audit_event_definitions + :audit_event_definitions, + :abuse_report, + :abuse_report_labels ] end end diff --git a/spec/support/shared_contexts/lib/gitlab/background_migration/backfill_project_statistics.rb b/spec/support/shared_contexts/lib/gitlab/background_migration/backfill_project_statistics.rb new file mode 100644 index 00000000000..1b835e1392d --- /dev/null +++ b/spec/support/shared_contexts/lib/gitlab/background_migration/backfill_project_statistics.rb @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +RSpec.shared_context 'when backfilling project statistics' do + let!(:namespaces) { table(:namespaces) } + let!(:project_statistics_table) { table(:project_statistics) } + let!(:projects) { table(:projects) } + let!(:count_of_columns) { ProjectStatistics::STORAGE_SIZE_COMPONENTS.count } + let(:default_storage_size) { 12 } + + let!(:root_group) do + namespaces.create!(name: 'root-group', path: 'root-group', type: 'Group') do |new_group| + new_group.update!(traversal_ids: [new_group.id]) + end + end + + let!(:group) do + namespaces.create!(name: 'group', path: 'group', parent_id: root_group.id, type: 'Group') do |new_group| + new_group.update!(traversal_ids: [root_group.id, new_group.id]) + end + end + + let!(:sub_group) do + namespaces.create!(name: 'subgroup', path: 'subgroup', parent_id: group.id, type: 'Group') do |new_group| + new_group.update!(traversal_ids: [root_group.id, group.id, new_group.id]) + end + end + + let!(:namespace1) do + namespaces.create!( + name: 'namespace1', type: 'Group', path: 'space1' + ) + end + + let!(:proj_namespace1) do + namespaces.create!( + name: 'proj1', path: 'proj1', type: 'Project', parent_id: namespace1.id + ) + end + + let!(:proj_namespace2) do + namespaces.create!( + name: 'proj2', path: 'proj2', type: 'Project', parent_id: namespace1.id + ) + end + + let!(:proj_namespace3) do + namespaces.create!( + name: 'proj3', path: 'proj3', type: 'Project', parent_id: sub_group.id + ) + end + + let!(:proj_namespace4) do + namespaces.create!( + name: 'proj4', path: 'proj4', type: 'Project', parent_id: sub_group.id + ) + end + + let!(:proj_namespace5) do + namespaces.create!( + name: 'proj5', path: 'proj5', type: 'Project', parent_id: sub_group.id + ) + end + + let!(:proj1) do + projects.create!( + name: 'proj1', path: 'proj1', namespace_id: namespace1.id, project_namespace_id: proj_namespace1.id + ) + end + + let!(:proj2) do + projects.create!( + name: 'proj2', path: 'proj2', namespace_id: namespace1.id, project_namespace_id: proj_namespace2.id + ) + end + + let!(:proj3) do + projects.create!( + name: 'proj3', path: 'proj3', namespace_id: sub_group.id, project_namespace_id: proj_namespace3.id + ) + end + + let!(:proj4) do + projects.create!( + name: 'proj4', path: 'proj4', namespace_id: sub_group.id, project_namespace_id: proj_namespace4.id + ) + end + + let!(:proj5) do + projects.create!( + name: 'proj5', path: 'proj5', namespace_id: sub_group.id, project_namespace_id: proj_namespace5.id + ) + end + + let(:migration) do + described_class.new(start_id: 1, end_id: proj4.id, + batch_table: 'project_statistics', batch_column: 'project_id', + sub_batch_size: 1_000, pause_ms: 0, + connection: ApplicationRecord.connection) + end + + let(:default_projects) do + [ + proj1, proj2, proj3, proj4 + ] + end +end diff --git a/spec/support/shared_contexts/lib/gitlab/sidekiq_middleware/server_metrics_shared_context.rb b/spec/support/shared_contexts/lib/gitlab/sidekiq_middleware/server_metrics_shared_context.rb index b6c54e902a2..d9b2b44980c 100644 --- a/spec/support/shared_contexts/lib/gitlab/sidekiq_middleware/server_metrics_shared_context.rb +++ b/spec/support/shared_contexts/lib/gitlab/sidekiq_middleware/server_metrics_shared_context.rb @@ -18,6 +18,7 @@ RSpec.shared_context 'server metrics with mocked prometheus' do let(:elasticsearch_requests_total) { double('elasticsearch calls total metric') } let(:load_balancing_metric) { double('load balancing metric') } let(:sidekiq_mem_total_bytes) { double('sidekiq mem total bytes') } + let(:completion_seconds_sum_metric) { double('sidekiq completion seconds sum metric') } before do allow(Gitlab::Metrics).to receive(:histogram).and_call_original @@ -36,6 +37,7 @@ RSpec.shared_context 'server metrics with mocked prometheus' do allow(Gitlab::Metrics).to receive(:counter).with(:sidekiq_redis_requests_total, anything).and_return(redis_requests_total) allow(Gitlab::Metrics).to receive(:counter).with(:sidekiq_elasticsearch_requests_total, anything).and_return(elasticsearch_requests_total) allow(Gitlab::Metrics).to receive(:counter).with(:sidekiq_load_balancing_count, anything).and_return(load_balancing_metric) + allow(Gitlab::Metrics).to receive(:counter).with(:sidekiq_jobs_completion_seconds_sum, anything).and_return(completion_seconds_sum_metric) allow(Gitlab::Metrics).to receive(:gauge).with(:sidekiq_running_jobs, anything, {}, :all).and_return(running_jobs_metric) allow(Gitlab::Metrics).to receive(:gauge).with(:sidekiq_concurrency, anything, {}, :all).and_return(concurrency_metric) allow(Gitlab::Metrics).to receive(:gauge).with(:sidekiq_mem_total_bytes, anything, {}, :all).and_return(sidekiq_mem_total_bytes) @@ -76,8 +78,13 @@ RSpec.shared_context 'server metrics call' do } end + let(:stub_subject) { true } + before do - allow(subject).to receive(:get_thread_cputime).and_return(thread_cputime_before, thread_cputime_after) + if stub_subject + allow(subject).to receive(:get_thread_cputime).and_return(thread_cputime_before, thread_cputime_after) + end + allow(Gitlab::Metrics::System).to receive(:monotonic_time).and_return(monotonic_time_before, monotonic_time_after) allow(Gitlab::InstrumentationHelper).to receive(:queue_duration_for_job).with(job).and_return(queue_duration_for_job) allow(ActiveRecord::LogSubscriber).to receive(:runtime).and_return(db_duration * 1000) @@ -93,6 +100,7 @@ RSpec.shared_context 'server metrics call' do allow(running_jobs_metric).to receive(:increment) allow(redis_requests_total).to receive(:increment) allow(elasticsearch_requests_total).to receive(:increment) + allow(completion_seconds_sum_metric).to receive(:increment) allow(queue_duration_seconds).to receive(:observe) allow(user_execution_seconds_metric).to receive(:observe) allow(db_seconds_metric).to receive(:observe) diff --git a/spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb b/spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb index 263cf9f5e19..a4c454ea264 100644 --- a/spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb +++ b/spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb @@ -4,10 +4,12 @@ require 'oj' def parameterized_test_matrix(invalid: false) test_cases_path = File.join( - File.expand_path(__dir__), '..', '..', '..', '..', 'fixtures', 'lib', 'sbom', 'package-url-test-cases.json') + File.expand_path(__dir__), '../../../../fixtures/lib/sbom/package-url-test-cases.json') test_cases = Gitlab::Json.parse(File.read(test_cases_path)) - test_cases.filter { _1.delete('is_invalid') == invalid }.each_with_object({}) do |test_case, memo| + test_cases + .filter { |test_case| test_case.delete('is_invalid') == invalid } + .each_with_object({}) do |test_case, memo| description = test_case.delete('description') memo[description] = test_case.symbolize_keys end diff --git a/spec/support/shared_contexts/navbar_structure_context.rb b/spec/support/shared_contexts/navbar_structure_context.rb index 0abf688566a..112b90029b8 100644 --- a/spec/support/shared_contexts/navbar_structure_context.rb +++ b/spec/support/shared_contexts/navbar_structure_context.rb @@ -112,6 +112,7 @@ RSpec.shared_context 'project navbar structure' do _('CI/CD'), _('Packages and registries'), _('Monitor'), + (_('Analytics') if Gitlab.ee?), s_('UsageQuota|Usage Quotas') ] } 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 22caf2b3530..07a4cbdb534 100644 --- a/spec/support/shared_contexts/policies/group_policy_shared_context.rb +++ b/spec/support/shared_contexts/policies/group_policy_shared_context.rb @@ -12,7 +12,7 @@ RSpec.shared_context 'GroupPolicy context' do let(:public_permissions) do %i[ - read_group read_counts + read_group read_counts read_issue read_label read_issue_board_list read_milestone read_issue_board ] end @@ -74,7 +74,6 @@ RSpec.shared_context 'GroupPolicy context' do read_statistics update_default_branch_protection read_group_runners - admin_group_runners register_group_runners read_billing edit_billing diff --git a/spec/support/shared_contexts/services/packages/rubygems/invalid_metadata.rb b/spec/support/shared_contexts/services/packages/rubygems/invalid_metadata.rb new file mode 100644 index 00000000000..b6b962e5c08 --- /dev/null +++ b/spec/support/shared_contexts/services/packages/rubygems/invalid_metadata.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +RSpec.shared_context 'with invalid Rubygems metadata' do + before do + allow_next_instance_of(::Packages::Rubygems::MetadataExtractionService) do |instance| + allow(instance).to receive(:execute).and_raise(ActiveRecord::StatementInvalid) + end + end +end diff --git a/spec/support/shared_contexts/user_contribution_events_shared_context.rb b/spec/support/shared_contexts/user_contribution_events_shared_context.rb index 48f0ac1e4ac..b6f9b6bed44 100644 --- a/spec/support/shared_contexts/user_contribution_events_shared_context.rb +++ b/spec/support/shared_contexts/user_contribution_events_shared_context.rb @@ -14,16 +14,20 @@ RSpec.shared_context 'with user contribution events' do # milestone let_it_be(:milestone) { create(:milestone, project: project) } - # note - let_it_be(:note_on_issue) { create(:note_on_issue, noteable: issue, project: project) } - # design let_it_be(:design) { create(:design, project: project, issue: issue, author: user) } + # note + let_it_be(:note_on_issue) { create(:note_on_issue, noteable: issue, project: project) } + let_it_be(:note_on_merge_request) { create(:note_on_merge_request, noteable: merge_request, project: project) } + let_it_be(:note_on_project_snippet) { create(:note_on_project_snippet, project: project) } + let_it_be(:note_on_design) { create(:note_on_design, noteable: design) } + let_it_be(:note_on_personal_snippet) do + create(:note, project: nil, noteable: create(:personal_snippet, author: user)) + end + # work item let_it_be(:incident) { create(:work_item, :incident, author: user, project: project) } - let_it_be(:test_case) { create(:work_item, :test_case, author: user, project: project) } - let_it_be(:requirement) { create(:work_item, :requirement, author: user, project: project) } let_it_be(:task) { create(:work_item, :task, author: user, project: project) } # events @@ -36,17 +40,39 @@ RSpec.shared_context 'with user contribution events' do # closed let_it_be(:closed_issue_event) { create(:event, :closed, author: user, project: project, target: issue) } let_it_be(:closed_milestone_event) { create(:event, :closed, author: user, project: project, target: milestone) } - let_it_be(:closed_incident_event) { create(:event, :closed, author: user, project: project, target: incident) } - let_it_be(:closed_test_case_event) { create(:event, :closed, author: user, project: project, target: test_case) } let_it_be(:closed_merge_request_event) do create(:event, :closed, author: user, project: project, target: merge_request) end + let_it_be(:closed_task_event) do + create(:event, :closed, :for_work_item, author: user, project: project, target: task) + end + + let_it_be(:closed_incident_event) do + create(:event, :closed, :for_work_item, author: user, project: project, target: incident) + end + # commented - let_it_be(:commented_event) do + let_it_be(:commented_issue_event) do create(:event, :commented, author: user, project: project, target: note_on_issue) end + let_it_be(:commented_merge_request_event) do + create(:event, :commented, author: user, project: project, target: note_on_merge_request) + end + + let_it_be(:commented_project_snippet_event) do + create(:event, :commented, author: user, target: note_on_project_snippet) + end + + let_it_be(:commented_personal_snippet_event) do + create(:event, :commented, project: nil, author: user, target: note_on_personal_snippet) + end + + let_it_be(:commented_design_event) do + create(:event, :commented, author: user, target: note_on_design) + end + # created let_it_be(:created_issue_event) { create(:event, :created, author: user, project: project, target: issue) } let_it_be(:created_milestone_event) { create(:event, :created, author: user, project: project, target: milestone) } @@ -57,14 +83,6 @@ RSpec.shared_context 'with user contribution events' do create(:event, :created, :for_work_item, author: user, project: project, target: incident) end - let_it_be(:created_test_case_event) do - create(:event, :created, :for_work_item, author: user, project: project, target: test_case) - end - - let_it_be(:created_requirement_event) do - create(:event, :created, :for_work_item, author: user, project: project, target: requirement) - end - let_it_be(:created_task_event) do create(:event, :created, :for_work_item, author: user, project: project, target: task) end @@ -147,8 +165,8 @@ RSpec.shared_context 'with user contribution events' do # reopened let_it_be(:reopened_issue_event) { create(:event, :reopened, author: user, project: project, target: issue) } let_it_be(:reopened_milestone_event) { create(:event, :reopened, author: user, project: project, target: milestone) } + let_it_be(:reopened_task_event) { create(:event, :reopened, author: user, project: project, target: task) } let_it_be(:reopened_incident_event) { create(:event, :reopened, author: user, project: project, target: incident) } - let_it_be(:reopened_test_case_event) { create(:event, :reopened, author: user, project: project, target: test_case) } let_it_be(:reopened_merge_request_event) do create(:event, :reopened, author: user, project: project, target: merge_request) end |