Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/support/shared_contexts')
-rw-r--r--spec/support/shared_contexts/features/integrations/integrations_shared_context.rb2
-rw-r--r--spec/support/shared_contexts/glfm/api_markdown_snapshot_shared_context.rb1
-rw-r--r--spec/support/shared_contexts/graphql/types/query_type_shared_context.rb4
-rw-r--r--spec/support/shared_contexts/lib/gitlab/background_migration/backfill_project_statistics.rb106
-rw-r--r--spec/support/shared_contexts/lib/gitlab/sidekiq_middleware/server_metrics_shared_context.rb10
-rw-r--r--spec/support/shared_contexts/lib/sbom/package_url_shared_contexts.rb6
-rw-r--r--spec/support/shared_contexts/navbar_structure_context.rb1
-rw-r--r--spec/support/shared_contexts/policies/group_policy_shared_context.rb3
-rw-r--r--spec/support/shared_contexts/services/packages/rubygems/invalid_metadata.rb9
-rw-r--r--spec/support/shared_contexts/user_contribution_events_shared_context.rb52
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