diff options
Diffstat (limited to 'spec/lib')
29 files changed, 541 insertions, 267 deletions
diff --git a/spec/lib/api/entities/package_spec.rb b/spec/lib/api/entities/package_spec.rb index 53d9a0b4557..9288f6fe8eb 100644 --- a/spec/lib/api/entities/package_spec.rb +++ b/spec/lib/api/entities/package_spec.rb @@ -40,13 +40,4 @@ RSpec.describe API::Entities::Package do expect(subject[:_links]).not_to have_key(:web_path) end end - - context 'with build info' do - let_it_be(:project) { create(:project) } - let_it_be(:package) { create(:npm_package, :with_build, project: project) } - - it 'returns an empty array for pipelines' do - expect(subject[:pipelines]).to eq([]) - end - end end diff --git a/spec/lib/container_registry/gitlab_api_client_spec.rb b/spec/lib/container_registry/gitlab_api_client_spec.rb index ac15048e4b5..c70dd265073 100644 --- a/spec/lib/container_registry/gitlab_api_client_spec.rb +++ b/spec/lib/container_registry/gitlab_api_client_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe ContainerRegistry::GitlabApiClient do +RSpec.describe ContainerRegistry::GitlabApiClient, feature_category: :container_registry do using RSpec::Parameterized::TableSyntax include_context 'container registry client' @@ -615,6 +615,159 @@ RSpec.describe ContainerRegistry::GitlabApiClient do end end + describe '#each_sub_repositories_with_tag_page' do + let(:page_size) { 100 } + let(:project_path) { 'repo/project' } + + shared_examples 'iterating through a page' do |expected_tags: true| + it 'iterates through one page' do + expect_next_instance_of(described_class) do |client| + expect(client).to receive(:sub_repositories_with_tag).with(project_path, page_size: page_size, last: nil).and_return(client_response) + end + + expect { |b| described_class.each_sub_repositories_with_tag_page(path: project_path, page_size: page_size, &b) } + .to yield_with_args(expected_tags ? client_response_repositories : []) + end + end + + context 'when no block is given' do + it 'raises an Argument error' do + expect do + described_class.each_sub_repositories_with_tag_page(path: project_path, page_size: page_size) + end.to raise_error(ArgumentError, 'block not given') + end + end + + context 'when a block is given' do + before do + expect(Auth::ContainerRegistryAuthenticationService).to receive(:pull_nested_repositories_access_token).with(project_path).and_return(token) + stub_container_registry_config(enabled: true, api_url: registry_api_url, key: 'spec/fixtures/x509_certificate_pk.key') + end + + context 'with an empty page' do + let(:client_response) { { pagination: {}, response_body: [] } } + + it_behaves_like 'iterating through a page', expected_tags: false + end + + context 'with one page' do + let(:client_response) { { pagination: {}, response_body: client_response_repositories } } + let(:client_response_repositories) do + [ + { + "name": "docker-alpine", + "path": "gitlab-org/build/cng/docker-alpine", + "created_at": "2022-06-07T12:11:13.633+00:00", + "updated_at": "2022-06-07T14:37:49.251+00:00" + }, + { + "name": "git-base", + "path": "gitlab-org/build/cng/git-base", + "created_at": "2022-06-07T12:11:13.633+00:00", + "updated_at": "2022-06-07T14:37:49.251+00:00" + } + ] + end + + it_behaves_like 'iterating through a page' + end + + context 'with two pages' do + let(:client_response1) { { pagination: { next: { uri: URI('http://localhost/next?last=latest') } }, response_body: client_response_repositories1 } } + let(:client_response_repositories1) do + [ + { + "name": "docker-alpine", + "path": "gitlab-org/build/cng/docker-alpine", + "created_at": "2022-06-07T12:11:13.633+00:00", + "updated_at": "2022-06-07T14:37:49.251+00:00" + }, + { + "name": "git-base", + "path": "gitlab-org/build/cng/git-base", + "created_at": "2022-06-07T12:11:13.633+00:00", + "updated_at": "2022-06-07T14:37:49.251+00:00" + } + ] + end + + let(:client_response2) { { pagination: {}, response_body: client_response_repositories2 } } + let(:client_response_repositories2) do + [ + { + "name": "docker-alpine1", + "path": "gitlab-org/build/cng/docker-alpine", + "created_at": "2022-06-07T12:11:13.633+00:00", + "updated_at": "2022-06-07T14:37:49.251+00:00" + }, + { + "name": "git-base1", + "path": "gitlab-org/build/cng/git-base", + "created_at": "2022-06-07T12:11:13.633+00:00", + "updated_at": "2022-06-07T14:37:49.251+00:00" + } + ] + end + + it 'iterates through two pages' do + expect_next_instance_of(described_class) do |client| + expect(client).to receive(:sub_repositories_with_tag).with(project_path, page_size: page_size, last: nil).and_return(client_response1) + expect(client).to receive(:sub_repositories_with_tag).with(project_path, page_size: page_size, last: 'latest').and_return(client_response2) + end + + expect { |b| described_class.each_sub_repositories_with_tag_page(path: project_path, page_size: page_size, &b) } + .to yield_successive_args(client_response_repositories1, client_response_repositories2) + end + end + + context 'when max pages is reached' do + let(:client_response) { { pagination: {}, response_body: [] } } + + before do + stub_const('ContainerRegistry::GitlabApiClient::MAX_REPOSITORIES_PAGE_SIZE', 0) + expect_next_instance_of(described_class) do |client| + expect(client).to receive(:sub_repositories_with_tag).with(project_path, page_size: page_size, last: nil).and_return(client_response) + end + end + + it 'raises an error' do + expect { described_class.each_sub_repositories_with_tag_page(path: project_path, page_size: page_size) {} } # rubocop:disable Lint/EmptyBlock + .to raise_error(StandardError, 'too many pages requested') + end + end + + context 'without a page size set' do + let(:client_response) { { pagination: {}, response_body: [] } } + + it 'uses a default size' do + expect_next_instance_of(described_class) do |client| + expect(client).to receive(:sub_repositories_with_tag).with(project_path, page_size: page_size, last: nil).and_return(client_response) + end + + expect { |b| described_class.each_sub_repositories_with_tag_page(path: project_path, &b) }.to yield_with_args([]) + end + end + + context 'with an empty client response' do + let(:client_response) { {} } + + it 'breaks the loop' do + expect_next_instance_of(described_class) do |client| + expect(client).to receive(:sub_repositories_with_tag).with(project_path, page_size: page_size, last: nil).and_return(client_response) + end + + expect { |b| described_class.each_sub_repositories_with_tag_page(path: project_path, page_size: page_size, &b) }.not_to yield_control + end + end + + context 'with a nil page' do + let(:client_response) { { pagination: {}, response_body: nil } } + + it_behaves_like 'iterating through a page', expected_tags: false + end + end + end + def stub_pre_import(path, status_code, pre:) import_type = pre ? 'pre' : 'final' stub_request(:put, "#{registry_api_url}/gitlab/v1/import/#{path}/?import_type=#{import_type}") diff --git a/spec/lib/gitlab/background_migration/backfill_cluster_agents_has_vulnerabilities_spec.rb b/spec/lib/gitlab/background_migration/backfill_cluster_agents_has_vulnerabilities_spec.rb index 3aab0cdf54b..edb6ff59340 100644 --- a/spec/lib/gitlab/background_migration/backfill_cluster_agents_has_vulnerabilities_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_cluster_agents_has_vulnerabilities_spec.rb @@ -4,10 +4,12 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::BackfillClusterAgentsHasVulnerabilities, :migration do # rubocop:disable Layout/LineLength let(:migration) do - described_class.new(start_id: 1, end_id: 10, - batch_table: table_name, batch_column: batch_column, - sub_batch_size: sub_batch_size, pause_ms: pause_ms, - connection: ApplicationRecord.connection) + described_class.new( + start_id: 1, end_id: 10, + batch_table: table_name, batch_column: batch_column, + sub_batch_size: sub_batch_size, pause_ms: pause_ms, + connection: ApplicationRecord.connection + ) end let(:users_table) { table(:users) } diff --git a/spec/lib/gitlab/background_migration/backfill_environment_tiers_spec.rb b/spec/lib/gitlab/background_migration/backfill_environment_tiers_spec.rb index 788ed40b61e..9026c327e3c 100644 --- a/spec/lib/gitlab/background_migration/backfill_environment_tiers_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_environment_tiers_spec.rb @@ -8,10 +8,12 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillEnvironmentTiers, let!(:project) { table(:projects).create!(namespace_id: namespace.id, project_namespace_id: namespace.id) } let(:migration) do - described_class.new(start_id: 1, end_id: 1000, - batch_table: :environments, batch_column: :id, - sub_batch_size: 10, pause_ms: 0, - connection: ApplicationRecord.connection) + described_class.new( + start_id: 1, end_id: 1000, + batch_table: :environments, batch_column: :id, + sub_batch_size: 10, pause_ms: 0, + connection: ApplicationRecord.connection + ) end describe '#perform' do diff --git a/spec/lib/gitlab/background_migration/backfill_group_features_spec.rb b/spec/lib/gitlab/background_migration/backfill_group_features_spec.rb index e0be5a785b8..023d4b04e63 100644 --- a/spec/lib/gitlab/background_migration/backfill_group_features_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_group_features_spec.rb @@ -7,14 +7,16 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillGroupFeatures, :migration, s let(:namespaces) { table(:namespaces) } subject do - described_class.new(start_id: 1, - end_id: 4, - batch_table: :namespaces, - batch_column: :id, - sub_batch_size: 10, - pause_ms: 0, - job_arguments: [4], - connection: ActiveRecord::Base.connection) + described_class.new( + start_id: 1, + end_id: 4, + batch_table: :namespaces, + batch_column: :id, + sub_batch_size: 10, + pause_ms: 0, + job_arguments: [4], + connection: ActiveRecord::Base.connection + ) end describe '#perform' do diff --git a/spec/lib/gitlab/background_migration/backfill_imported_issue_search_data_spec.rb b/spec/lib/gitlab/background_migration/backfill_imported_issue_search_data_spec.rb index 479afb56210..b3f04055e0a 100644 --- a/spec/lib/gitlab/background_migration/backfill_imported_issue_search_data_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_imported_issue_search_data_spec.rb @@ -30,13 +30,15 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillImportedIssueSearchData, end let(:migration) do - described_class.new(start_id: issue.id, - end_id: issue.id + 30, - batch_table: :issues, - batch_column: :id, - sub_batch_size: 2, - pause_ms: 0, - connection: ApplicationRecord.connection) + described_class.new( + start_id: issue.id, + end_id: issue.id + 30, + batch_table: :issues, + batch_column: :id, + sub_batch_size: 2, + pause_ms: 0, + connection: ApplicationRecord.connection + ) end let(:perform_migration) { migration.perform } diff --git a/spec/lib/gitlab/background_migration/backfill_namespace_details_spec.rb b/spec/lib/gitlab/background_migration/backfill_namespace_details_spec.rb index b6282de0da6..39ad60fb13b 100644 --- a/spec/lib/gitlab/background_migration/backfill_namespace_details_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_namespace_details_spec.rb @@ -7,27 +7,36 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillNamespaceDetails, :migration let(:namespace_details) { table(:namespace_details) } subject(:perform_migration) do - described_class.new(start_id: namespaces.minimum(:id), - end_id: namespaces.maximum(:id), - batch_table: :namespaces, - batch_column: :id, - sub_batch_size: 2, - pause_ms: 0, - connection: ActiveRecord::Base.connection) - .perform + described_class.new( + start_id: namespaces.minimum(:id), + end_id: namespaces.maximum(:id), + batch_table: :namespaces, + batch_column: :id, + sub_batch_size: 2, + pause_ms: 0, + connection: ActiveRecord::Base.connection + ).perform end describe '#perform' do it 'creates details for all namespaces in range' do - namespace1 = namespaces.create!(id: 5, name: 'test1', path: 'test1', description: "Some description1", - description_html: "Some description html1", cached_markdown_version: 4) - namespaces.create!(id: 6, name: 'test2', path: 'test2', type: 'Project', - description: "Some description2", description_html: "Some description html2", - cached_markdown_version: 4) - namespace3 = namespaces.create!(id: 7, name: 'test3', path: 'test3', description: "Some description3", - description_html: "Some description html3", cached_markdown_version: 4) - namespace4 = namespaces.create!(id: 8, name: 'test4', path: 'test4', description: "Some description3", - description_html: "Some description html4", cached_markdown_version: 4) + namespace1 = namespaces.create!( + id: 5, name: 'test1', path: 'test1', description: "Some description1", + description_html: "Some description html1", cached_markdown_version: 4 + ) + namespaces.create!( + id: 6, name: 'test2', path: 'test2', type: 'Project', + description: "Some description2", description_html: "Some description html2", + cached_markdown_version: 4 + ) + namespace3 = namespaces.create!( + id: 7, name: 'test3', path: 'test3', description: "Some description3", + description_html: "Some description html3", cached_markdown_version: 4 + ) + namespace4 = namespaces.create!( + id: 8, name: 'test4', path: 'test4', description: "Some description3", + description_html: "Some description html4", cached_markdown_version: 4 + ) namespace_details.delete_all expect(namespace_details.pluck(:namespace_id)).to eql [] diff --git a/spec/lib/gitlab/background_migration/backfill_namespace_id_for_namespace_route_spec.rb b/spec/lib/gitlab/background_migration/backfill_namespace_id_for_namespace_route_spec.rb index b821efcadb0..3a8a327550b 100644 --- a/spec/lib/gitlab/background_migration/backfill_namespace_id_for_namespace_route_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_namespace_id_for_namespace_route_spec.rb @@ -22,18 +22,29 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillNamespaceIdForNamespaceRoute subject(:perform_migration) { migration.perform(1, 10, table_name, batch_column, sub_batch_size, pause_ms) } before do - routes_table.create!(id: 1, name: 'test1', path: 'test1', source_id: namespace1.id, - source_type: namespace1.class.sti_name) - routes_table.create!(id: 2, name: 'test2', path: 'test2', source_id: namespace2.id, - source_type: namespace2.class.sti_name) - routes_table.create!(id: 5, name: 'test3', path: 'test3', source_id: project1.id, - source_type: project1.class.sti_name) # should be ignored - project route - routes_table.create!(id: 6, name: 'test4', path: 'test4', source_id: non_existing_record_id, - source_type: namespace3.class.sti_name) # should be ignored - invalid source_id - routes_table.create!(id: 10, name: 'test5', path: 'test5', source_id: namespace3.id, - source_type: namespace3.class.sti_name) - routes_table.create!(id: 11, name: 'test6', path: 'test6', source_id: namespace4.id, - source_type: namespace4.class.sti_name) # should be ignored - outside the scope + routes_table.create!( + id: 1, name: 'test1', path: 'test1', source_id: namespace1.id, source_type: namespace1.class.sti_name + ) + + routes_table.create!( + id: 2, name: 'test2', path: 'test2', source_id: namespace2.id, source_type: namespace2.class.sti_name + ) + + routes_table.create!( + id: 5, name: 'test3', path: 'test3', source_id: project1.id, source_type: project1.class.sti_name + ) # should be ignored - project route + + routes_table.create!( + id: 6, name: 'test4', path: 'test4', source_id: non_existing_record_id, source_type: namespace3.class.sti_name + ) # should be ignored - invalid source_id + + routes_table.create!( + id: 10, name: 'test5', path: 'test5', source_id: namespace3.id, source_type: namespace3.class.sti_name + ) + + routes_table.create!( + id: 11, name: 'test6', path: 'test6', source_id: namespace4.id, source_type: namespace4.class.sti_name + ) # should be ignored - outside the scope end it 'backfills `type` for the selected records', :aggregate_failures do diff --git a/spec/lib/gitlab/background_migration/backfill_namespace_id_of_vulnerability_reads_spec.rb b/spec/lib/gitlab/background_migration/backfill_namespace_id_of_vulnerability_reads_spec.rb index 564aa3b8c01..6a55c6951d5 100644 --- a/spec/lib/gitlab/background_migration/backfill_namespace_id_of_vulnerability_reads_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_namespace_id_of_vulnerability_reads_spec.rb @@ -38,14 +38,15 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillNamespaceIdOfVulnerabilityRe end subject(:perform_migration) do - described_class.new(start_id: vulnerability_read.vulnerability_id, - end_id: vulnerability_read.vulnerability_id, - batch_table: :vulnerability_reads, - batch_column: :vulnerability_id, - sub_batch_size: 1, - pause_ms: 0, - connection: ActiveRecord::Base.connection) - .perform + described_class.new( + start_id: vulnerability_read.vulnerability_id, + end_id: vulnerability_read.vulnerability_id, + batch_table: :vulnerability_reads, + batch_column: :vulnerability_id, + sub_batch_size: 1, + pause_ms: 0, + connection: ActiveRecord::Base.connection + ).perform end it 'sets the namespace_id of existing record' do diff --git a/spec/lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level_spec.rb b/spec/lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level_spec.rb index fd6c055b9f6..47ff2883fb2 100644 --- a/spec/lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level_spec.rb @@ -101,14 +101,15 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillProjectFeaturePackageRegistr end subject(:perform_migration) do - described_class.new(start_id: project1.id, - end_id: project5.id, - batch_table: :projects, - batch_column: :id, - sub_batch_size: 2, - pause_ms: 0, - connection: ActiveRecord::Base.connection) - .perform + described_class.new( + start_id: project1.id, + end_id: project5.id, + batch_table: :projects, + batch_column: :id, + sub_batch_size: 2, + pause_ms: 0, + connection: ActiveRecord::Base.connection + ).perform end it 'backfills project_features.package_registry_access_level', :aggregate_failures do diff --git a/spec/lib/gitlab/background_migration/backfill_project_member_namespace_id_spec.rb b/spec/lib/gitlab/background_migration/backfill_project_member_namespace_id_spec.rb index ca7ca41a33e..96f49624d22 100644 --- a/spec/lib/gitlab/background_migration/backfill_project_member_namespace_id_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_project_member_namespace_id_spec.rb @@ -4,10 +4,12 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::BackfillProjectMemberNamespaceId, :migration, schema: 20220516054011 do let(:migration) do - described_class.new(start_id: 1, end_id: 10, - batch_table: table_name, batch_column: batch_column, - sub_batch_size: sub_batch_size, pause_ms: pause_ms, - connection: ApplicationRecord.connection) + described_class.new( + start_id: 1, end_id: 10, + batch_table: table_name, batch_column: batch_column, + sub_batch_size: sub_batch_size, pause_ms: pause_ms, + connection: ApplicationRecord.connection + ) end let(:members_table) { table(:members) } @@ -35,37 +37,55 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillProjectMemberNamespaceId, :m projects_table.create!(id: 102, name: 'project3', path: 'project3', namespace_id: 202, project_namespace_id: 302) # project1, no member namespace (fill in) - members_table.create!(id: 1, source_id: 100, - source_type: 'Project', type: 'ProjectMember', - member_namespace_id: nil, access_level: 10, notification_level: 3) + members_table.create!( + id: 1, source_id: 100, + source_type: 'Project', type: 'ProjectMember', + member_namespace_id: nil, access_level: 10, notification_level: 3 + ) + # bogus source id, no member namespace id (do nothing) - members_table.create!(id: 2, source_id: non_existing_record_id, - source_type: 'Project', type: 'ProjectMember', - member_namespace_id: nil, access_level: 10, notification_level: 3) + members_table.create!( + id: 2, source_id: non_existing_record_id, + source_type: 'Project', type: 'ProjectMember', + member_namespace_id: nil, access_level: 10, notification_level: 3 + ) + # project3, existing member namespace id (do nothing) - members_table.create!(id: 3, source_id: 102, - source_type: 'Project', type: 'ProjectMember', - member_namespace_id: 300, access_level: 10, notification_level: 3) + members_table.create!( + id: 3, source_id: 102, + source_type: 'Project', type: 'ProjectMember', + member_namespace_id: 300, access_level: 10, notification_level: 3 + ) # Group memberships (do not change) # group1, no member namespace (do nothing) - members_table.create!(id: 4, source_id: 201, - source_type: 'Namespace', type: 'GroupMember', - member_namespace_id: nil, access_level: 10, notification_level: 3) + members_table.create!( + id: 4, source_id: 201, + source_type: 'Namespace', type: 'GroupMember', + member_namespace_id: nil, access_level: 10, notification_level: 3 + ) + # group2, existing member namespace (do nothing) - members_table.create!(id: 5, source_id: 202, - source_type: 'Namespace', type: 'GroupMember', - member_namespace_id: 201, access_level: 10, notification_level: 3) + members_table.create!( + id: 5, source_id: 202, + source_type: 'Namespace', type: 'GroupMember', + member_namespace_id: 201, access_level: 10, notification_level: 3 + ) # Project Namespace memberships (do not change) # project namespace, existing member namespace (do nothing) - members_table.create!(id: 6, source_id: 300, - source_type: 'Namespace', type: 'ProjectNamespaceMember', - member_namespace_id: 201, access_level: 10, notification_level: 3) + members_table.create!( + id: 6, source_id: 300, + source_type: 'Namespace', type: 'ProjectNamespaceMember', + member_namespace_id: 201, access_level: 10, notification_level: 3 + ) + # project namespace, not member namespace (do nothing) - members_table.create!(id: 7, source_id: 301, - source_type: 'Namespace', type: 'ProjectNamespaceMember', - member_namespace_id: 201, access_level: 10, notification_level: 3) + members_table.create!( + id: 7, source_id: 301, + source_type: 'Namespace', type: 'ProjectNamespaceMember', + member_namespace_id: 201, access_level: 10, notification_level: 3 + ) end it 'backfills `member_namespace_id` for the selected records', :aggregate_failures do diff --git a/spec/lib/gitlab/background_migration/backfill_project_namespace_details_spec.rb b/spec/lib/gitlab/background_migration/backfill_project_namespace_details_spec.rb index 01daf16d10c..aac17a426b5 100644 --- a/spec/lib/gitlab/background_migration/backfill_project_namespace_details_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_project_namespace_details_spec.rb @@ -8,32 +8,41 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillProjectNamespaceDetails, :mi let!(:projects) { table(:projects) } subject(:perform_migration) do - described_class.new(start_id: projects.minimum(:id), - end_id: projects.maximum(:id), - batch_table: :projects, - batch_column: :id, - sub_batch_size: 2, - pause_ms: 0, - connection: ActiveRecord::Base.connection) - .perform + described_class.new( + start_id: projects.minimum(:id), + end_id: projects.maximum(:id), + batch_table: :projects, + batch_column: :id, + sub_batch_size: 2, + pause_ms: 0, + connection: ActiveRecord::Base.connection + ).perform end describe '#perform' do it 'creates details for all project namespaces in range' do - namespaces.create!(id: 5, name: 'test1', path: 'test1', description: "Some description1", - description_html: "Some description html1", cached_markdown_version: 4) + namespaces.create!( + id: 5, name: 'test1', path: 'test1', description: "Some description1", + description_html: "Some description html1", cached_markdown_version: 4 + ) project_namespace1 = namespaces.create!(id: 6, name: 'test2', path: 'test2', type: 'Project') - namespaces.create!(id: 7, name: 'test3', path: 'test3', description: "Some description3", - description_html: "Some description html3", cached_markdown_version: 4) + namespaces.create!( + id: 7, name: 'test3', path: 'test3', description: "Some description3", + description_html: "Some description html3", cached_markdown_version: 4 + ) project_namespace2 = namespaces.create!(id: 8, name: 'test4', path: 'test4', type: 'Project') - project1 = projects.create!(namespace_id: project_namespace1.id, name: 'gitlab1', path: 'gitlab1', - project_namespace_id: project_namespace1.id, description: "Some description2", - description_html: "Some description html2", cached_markdown_version: 4) - project2 = projects.create!(namespace_id: project_namespace2.id, name: 'gitlab2', path: 'gitlab2', - project_namespace_id: project_namespace2.id, - description: "Some description3", - description_html: "Some description html4", cached_markdown_version: 4) + project1 = projects.create!( + namespace_id: project_namespace1.id, name: 'gitlab1', path: 'gitlab1', + project_namespace_id: project_namespace1.id, description: "Some description2", + description_html: "Some description html2", cached_markdown_version: 4 + ) + project2 = projects.create!( + namespace_id: project_namespace2.id, name: 'gitlab2', path: 'gitlab2', + project_namespace_id: project_namespace2.id, + description: "Some description3", + description_html: "Some description html4", cached_markdown_version: 4 + ) namespace_details.delete_all diff --git a/spec/lib/gitlab/background_migration/backfill_releases_author_id_spec.rb b/spec/lib/gitlab/background_migration/backfill_releases_author_id_spec.rb index d8ad10849f2..898f241a930 100644 --- a/spec/lib/gitlab/background_migration/backfill_releases_author_id_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_releases_author_id_spec.rb @@ -10,35 +10,52 @@ RSpec.describe Gitlab::BackgroundMigration::BackfillReleasesAuthorId, let!(:test_user) { user_table.create!(name: 'test', email: 'test@example.com', username: 'test', projects_limit: 10) } let!(:ghost_user) do - user_table.create!(name: 'ghost', email: 'ghost@example.com', - username: 'ghost', user_type: User::USER_TYPES['ghost'], projects_limit: 100000) + user_table.create!( + name: 'ghost', email: 'ghost@example.com', + username: 'ghost', user_type: User::USER_TYPES['ghost'], projects_limit: 100000 + ) end let(:migration) do - described_class.new(start_id: 1, end_id: 100, - batch_table: :releases, batch_column: :id, - sub_batch_size: 10, pause_ms: 0, - job_arguments: [ghost_user.id], - connection: ApplicationRecord.connection) + described_class.new( + start_id: 1, end_id: 100, + batch_table: :releases, batch_column: :id, + sub_batch_size: 10, pause_ms: 0, + job_arguments: [ghost_user.id], + connection: ApplicationRecord.connection + ) end subject(:perform_migration) { migration.perform } before do - releases_table.create!(tag: 'tag1', name: 'tag1', - released_at: (date_time - 1.minute), author_id: test_user.id) - releases_table.create!(tag: 'tag2', name: 'tag2', - released_at: (date_time - 2.minutes), author_id: test_user.id) - releases_table.new(tag: 'tag3', name: 'tag3', - released_at: (date_time - 3.minutes), author_id: nil).save!(validate: false) - releases_table.new(tag: 'tag4', name: 'tag4', - released_at: (date_time - 4.minutes), author_id: nil).save!(validate: false) - releases_table.new(tag: 'tag5', name: 'tag5', - released_at: (date_time - 5.minutes), author_id: nil).save!(validate: false) - releases_table.create!(tag: 'tag6', name: 'tag6', - released_at: (date_time - 6.minutes), author_id: test_user.id) - releases_table.new(tag: 'tag7', name: 'tag7', - released_at: (date_time - 7.minutes), author_id: nil).save!(validate: false) + releases_table.create!( + tag: 'tag1', name: 'tag1', released_at: (date_time - 1.minute), author_id: test_user.id + ) + + releases_table.create!( + tag: 'tag2', name: 'tag2', released_at: (date_time - 2.minutes), author_id: test_user.id + ) + + releases_table.new( + tag: 'tag3', name: 'tag3', released_at: (date_time - 3.minutes), author_id: nil + ).save!(validate: false) + + releases_table.new( + tag: 'tag4', name: 'tag4', released_at: (date_time - 4.minutes), author_id: nil + ).save!(validate: false) + + releases_table.new( + tag: 'tag5', name: 'tag5', released_at: (date_time - 5.minutes), author_id: nil + ).save!(validate: false) + + releases_table.create!( + tag: 'tag6', name: 'tag6', released_at: (date_time - 6.minutes), author_id: test_user.id + ) + + releases_table.new( + tag: 'tag7', name: 'tag7', released_at: (date_time - 7.minutes), author_id: nil + ).save!(validate: false) end it 'backfills `author_id` for the selected records', :aggregate_failures do diff --git a/spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb b/spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb index 4a50d08b2aa..d8874cb811b 100644 --- a/spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_snippet_repositories_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::BackfillSnippetRepositories, :migration, schema: 20211202041233, -feature_category: :source_code_management do + feature_category: :source_code_management do let(:gitlab_shell) { Gitlab::Shell.new } let(:users) { table(:users) } let(:snippets) { table(:snippets) } @@ -14,24 +14,28 @@ feature_category: :source_code_management do let(:user_name) { 'Test' } let!(:user) do - users.create!(id: 1, - email: 'user@example.com', - projects_limit: 10, - username: 'test', - name: user_name, - state: user_state, - last_activity_on: 1.minute.ago, - user_type: user_type, - confirmed_at: 1.day.ago) + users.create!( + id: 1, + email: 'user@example.com', + projects_limit: 10, + username: 'test', + name: user_name, + state: user_state, + last_activity_on: 1.minute.ago, + user_type: user_type, + confirmed_at: 1.day.ago + ) end let!(:migration_bot) do - users.create!(id: 100, - email: "noreply+gitlab-migration-bot%s@#{Settings.gitlab.host}", - user_type: HasUserType::USER_TYPES[:migration_bot], - name: 'GitLab Migration Bot', - projects_limit: 10, - username: 'bot') + users.create!( + id: 100, + email: "noreply+gitlab-migration-bot%s@#{Settings.gitlab.host}", + user_type: HasUserType::USER_TYPES[:migration_bot], + name: 'GitLab Migration Bot', + projects_limit: 10, + username: 'bot' + ) end let!(:snippet_with_repo) { snippets.create!(id: 1, type: 'PersonalSnippet', author_id: user.id, file_name: file_name, content: content) } @@ -260,15 +264,17 @@ feature_category: :source_code_management do context 'when both user name and snippet file_name are invalid' do let(:user_name) { '.' } let!(:other_user) do - users.create!(id: 2, - email: 'user2@example.com', - projects_limit: 10, - username: 'test2', - name: 'Test2', - state: user_state, - last_activity_on: 1.minute.ago, - user_type: user_type, - confirmed_at: 1.day.ago) + users.create!( + id: 2, + email: 'user2@example.com', + projects_limit: 10, + username: 'test2', + name: 'Test2', + state: user_state, + last_activity_on: 1.minute.ago, + user_type: user_type, + confirmed_at: 1.day.ago + ) end let!(:invalid_snippet) { snippets.create!(id: 4, type: 'PersonalSnippet', author_id: user.id, file_name: '.', content: content) } @@ -322,10 +328,12 @@ feature_category: :source_code_management do end def raw_repository(snippet) - Gitlab::Git::Repository.new('default', - "#{disk_path(snippet)}.git", - Gitlab::GlRepository::SNIPPET.identifier_for_container(snippet), - "@snippets/#{snippet.id}") + Gitlab::Git::Repository.new( + 'default', + "#{disk_path(snippet)}.git", + Gitlab::GlRepository::SNIPPET.identifier_for_container(snippet), + "@snippets/#{snippet.id}" + ) end def hashed_repository(snippet) diff --git a/spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb b/spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb index f642ec8c20d..3f1a57434a7 100644 --- a/spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb +++ b/spec/lib/gitlab/background_migration/backfill_vulnerability_reads_cluster_agent_spec.rb @@ -4,10 +4,12 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::BackfillVulnerabilityReadsClusterAgent, :migration, schema: 20220525221133 do # rubocop:disable Layout/LineLength let(:migration) do - described_class.new(start_id: 1, end_id: 10, - batch_table: table_name, batch_column: batch_column, - sub_batch_size: sub_batch_size, pause_ms: pause_ms, - connection: ApplicationRecord.connection) + described_class.new( + start_id: 1, end_id: 10, + batch_table: table_name, batch_column: batch_column, + sub_batch_size: sub_batch_size, pause_ms: pause_ms, + connection: ApplicationRecord.connection + ) end let(:users_table) { table(:users) } diff --git a/spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb b/spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb index 2f0eef3c399..5b234679e22 100644 --- a/spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb +++ b/spec/lib/gitlab/background_migration/nullify_orphan_runner_id_on_ci_builds_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::NullifyOrphanRunnerIdOnCiBuilds, - :suppress_gitlab_schemas_validate_connection, migration: :gitlab_ci, schema: 20220223112304 do + :suppress_gitlab_schemas_validate_connection, migration: :gitlab_ci, schema: 20220223112304 do let(:namespaces) { table(:namespaces) } let(:projects) { table(:projects) } let(:ci_runners) { table(:ci_runners) } diff --git a/spec/lib/gitlab/background_migration/prune_stale_project_export_jobs_spec.rb b/spec/lib/gitlab/background_migration/prune_stale_project_export_jobs_spec.rb index 5150d0ea4b0..3446b9f0676 100644 --- a/spec/lib/gitlab/background_migration/prune_stale_project_export_jobs_spec.rb +++ b/spec/lib/gitlab/background_migration/prune_stale_project_export_jobs_spec.rb @@ -10,14 +10,15 @@ RSpec.describe Gitlab::BackgroundMigration::PruneStaleProjectExportJobs, feature let(:uploads) { table(:project_relation_export_uploads) } subject(:perform_migration) do - described_class.new(start_id: 1, - end_id: 300, - batch_table: :project_export_jobs, - batch_column: :id, - sub_batch_size: 2, - pause_ms: 0, - connection: ActiveRecord::Base.connection) - .perform + described_class.new( + start_id: 1, + end_id: 300, + batch_table: :project_export_jobs, + batch_column: :id, + sub_batch_size: 2, + pause_ms: 0, + connection: ActiveRecord::Base.connection + ).perform end it 'removes export jobs and associated relations older than 7 days' do diff --git a/spec/lib/gitlab/background_migration/remove_backfilled_job_artifacts_expire_at_spec.rb b/spec/lib/gitlab/background_migration/remove_backfilled_job_artifacts_expire_at_spec.rb index 5fede892463..582c0fe1b1b 100644 --- a/spec/lib/gitlab/background_migration/remove_backfilled_job_artifacts_expire_at_spec.rb +++ b/spec/lib/gitlab/background_migration/remove_backfilled_job_artifacts_expire_at_spec.rb @@ -86,8 +86,10 @@ RSpec.describe Gitlab::BackgroundMigration::RemoveBackfilledJobArtifactsExpireAt def create_job_artifact(id:, file_type:, expire_at:) job = table(:ci_builds, database: :ci).create!(id: id, partition_id: 100) - job_artifact.create!(id: id, job_id: job.id, expire_at: expire_at, project_id: project.id, - file_type: file_type, partition_id: 100) + job_artifact.create!( + id: id, job_id: job.id, expire_at: expire_at, project_id: project.id, + file_type: file_type, partition_id: 100 + ) end end end diff --git a/spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb b/spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb index 1844347f4a9..60ee61cf50a 100644 --- a/spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb +++ b/spec/lib/gitlab/background_migration/remove_occurrence_pipelines_and_duplicate_vulnerabilities_findings_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::RemoveOccurrencePipelinesAndDuplicateVulnerabilitiesFindings, :migration, - :suppress_gitlab_schemas_validate_connection, schema: 20220326161803 do + :suppress_gitlab_schemas_validate_connection, schema: 20220326161803 do let(:namespace) { table(:namespaces).create!(name: 'user', path: 'user') } let(:users) { table(:users) } let(:user) { create_user! } diff --git a/spec/lib/gitlab/background_migration/remove_self_managed_wiki_notes_spec.rb b/spec/lib/gitlab/background_migration/remove_self_managed_wiki_notes_spec.rb index 81927100562..59d5d56ebe8 100644 --- a/spec/lib/gitlab/background_migration/remove_self_managed_wiki_notes_spec.rb +++ b/spec/lib/gitlab/background_migration/remove_self_managed_wiki_notes_spec.rb @@ -6,14 +6,15 @@ RSpec.describe Gitlab::BackgroundMigration::RemoveSelfManagedWikiNotes, :migrati let(:notes) { table(:notes) } subject(:perform_migration) do - described_class.new(start_id: 1, - end_id: 30, - batch_table: :notes, - batch_column: :id, - sub_batch_size: 2, - pause_ms: 0, - connection: ActiveRecord::Base.connection) - .perform + described_class.new( + start_id: 1, + end_id: 30, + batch_table: :notes, + batch_column: :id, + sub_batch_size: 2, + pause_ms: 0, + connection: ActiveRecord::Base.connection + ).perform end it 'removes all wiki notes' do diff --git a/spec/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports_spec.rb b/spec/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports_spec.rb index 3f59b0a24a3..afdd855c5a8 100644 --- a/spec/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports_spec.rb +++ b/spec/lib/gitlab/background_migration/reset_too_many_tags_skipped_registry_imports_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::ResetTooManyTagsSkippedRegistryImports, :migration, - :aggregate_failures, - schema: 20220502173045 do + :aggregate_failures, + schema: 20220502173045 do let(:namespaces) { table(:namespaces) } let(:projects) { table(:projects) } let(:container_repositories) { table(:container_repositories) } @@ -15,46 +15,54 @@ RSpec.describe Gitlab::BackgroundMigration::ResetTooManyTagsSkippedRegistryImpor let!(:project) { projects.create!(id: 1, project_namespace_id: 1, namespace_id: 1, path: 'bar', name: 'bar') } let!(:container_repository1) do - container_repositories.create!(id: 1, - project_id: 1, - name: 'a', - migration_state: 'import_skipped', - migration_skipped_at: Time.zone.now, - migration_skipped_reason: 2, - migration_pre_import_started_at: Time.zone.now, - migration_pre_import_done_at: Time.zone.now, - migration_import_started_at: Time.zone.now, - migration_import_done_at: Time.zone.now, - migration_aborted_at: Time.zone.now, - migration_retries_count: 2, - migration_aborted_in_state: 'importing') + container_repositories.create!( + id: 1, + project_id: 1, + name: 'a', + migration_state: 'import_skipped', + migration_skipped_at: Time.zone.now, + migration_skipped_reason: 2, + migration_pre_import_started_at: Time.zone.now, + migration_pre_import_done_at: Time.zone.now, + migration_import_started_at: Time.zone.now, + migration_import_done_at: Time.zone.now, + migration_aborted_at: Time.zone.now, + migration_retries_count: 2, + migration_aborted_in_state: 'importing' + ) end let!(:container_repository2) do - container_repositories.create!(id: 2, - project_id: 1, - name: 'b', - migration_state: 'import_skipped', - migration_skipped_at: Time.zone.now, - migration_skipped_reason: 2) + container_repositories.create!( + id: 2, + project_id: 1, + name: 'b', + migration_state: 'import_skipped', + migration_skipped_at: Time.zone.now, + migration_skipped_reason: 2 + ) end let!(:container_repository3) do - container_repositories.create!(id: 3, - project_id: 1, - name: 'c', - migration_state: 'import_skipped', - migration_skipped_at: Time.zone.now, - migration_skipped_reason: 1) + container_repositories.create!( + id: 3, + project_id: 1, + name: 'c', + migration_state: 'import_skipped', + migration_skipped_at: Time.zone.now, + migration_skipped_reason: 1 + ) end # This is an unlikely state, but included here to test the edge case let!(:container_repository4) do - container_repositories.create!(id: 4, - project_id: 1, - name: 'd', - migration_state: 'default', - migration_skipped_reason: 2) + container_repositories.create!( + id: 4, + project_id: 1, + name: 'd', + migration_state: 'default', + migration_skipped_reason: 2 + ) end describe '#up' do diff --git a/spec/lib/gitlab/background_migration/set_correct_vulnerability_state_spec.rb b/spec/lib/gitlab/background_migration/set_correct_vulnerability_state_spec.rb index 2372ce21c4c..df1ee494987 100644 --- a/spec/lib/gitlab/background_migration/set_correct_vulnerability_state_spec.rb +++ b/spec/lib/gitlab/background_migration/set_correct_vulnerability_state_spec.rb @@ -35,13 +35,15 @@ RSpec.describe Gitlab::BackgroundMigration::SetCorrectVulnerabilityState do let(:dismissed_state) { 2 } let(:migration_job) do - described_class.new(start_id: vulnerability_with_dismissed_at.id, - end_id: vulnerability_without_dismissed_at.id, - batch_table: :vulnerabilities, - batch_column: :id, - sub_batch_size: 1, - pause_ms: 0, - connection: ActiveRecord::Base.connection) + described_class.new( + start_id: vulnerability_with_dismissed_at.id, + end_id: vulnerability_without_dismissed_at.id, + batch_table: :vulnerabilities, + batch_column: :id, + sub_batch_size: 1, + pause_ms: 0, + connection: ActiveRecord::Base.connection + ) end describe '#filter_batch' do diff --git a/spec/lib/gitlab/background_migration/set_legacy_open_source_license_available_for_non_public_projects_spec.rb b/spec/lib/gitlab/background_migration/set_legacy_open_source_license_available_for_non_public_projects_spec.rb index e9f73672144..5109c3ec0c2 100644 --- a/spec/lib/gitlab/background_migration/set_legacy_open_source_license_available_for_non_public_projects_spec.rb +++ b/spec/lib/gitlab/background_migration/set_legacy_open_source_license_available_for_non_public_projects_spec.rb @@ -3,21 +3,22 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::SetLegacyOpenSourceLicenseAvailableForNonPublicProjects, - :migration, - schema: 20220722110026 do + :migration, + schema: 20220722110026 do let(:namespaces_table) { table(:namespaces) } let(:projects_table) { table(:projects) } let(:project_settings_table) { table(:project_settings) } subject(:perform_migration) do - described_class.new(start_id: projects_table.minimum(:id), - end_id: projects_table.maximum(:id), - batch_table: :projects, - batch_column: :id, - sub_batch_size: 2, - pause_ms: 0, - connection: ActiveRecord::Base.connection) - .perform + described_class.new( + start_id: projects_table.minimum(:id), + end_id: projects_table.maximum(:id), + batch_table: :projects, + batch_column: :id, + sub_batch_size: 2, + pause_ms: 0, + connection: ActiveRecord::Base.connection + ).perform end it 'sets `legacy_open_source_license_available` attribute to false for non-public projects', :aggregate_failures do @@ -37,11 +38,13 @@ RSpec.describe Gitlab::BackgroundMigration::SetLegacyOpenSourceLicenseAvailableF def create_legacy_license_project(path, visibility_level:) namespace = namespaces_table.create!(name: "namespace-#{path}", path: "namespace-#{path}") project_namespace = namespaces_table.create!(name: "project-namespace-#{path}", path: path, type: 'Project') - project = projects_table.create!(name: path, - path: path, - namespace_id: namespace.id, - project_namespace_id: project_namespace.id, - visibility_level: visibility_level) + project = projects_table.create!( + name: path, + path: path, + namespace_id: namespace.id, + project_namespace_id: project_namespace.id, + visibility_level: visibility_level + ) project_settings_table.create!(project_id: project.id, legacy_open_source_license_available: true) project diff --git a/spec/lib/gitlab/background_migration/update_delayed_project_removal_to_null_for_user_namespaces_spec.rb b/spec/lib/gitlab/background_migration/update_delayed_project_removal_to_null_for_user_namespaces_spec.rb index 980a7771f4c..0579a299c74 100644 --- a/spec/lib/gitlab/background_migration/update_delayed_project_removal_to_null_for_user_namespaces_spec.rb +++ b/spec/lib/gitlab/background_migration/update_delayed_project_removal_to_null_for_user_namespaces_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe Gitlab::BackgroundMigration::UpdateDelayedProjectRemovalToNullForUserNamespaces, - :migration do + :migration do let(:namespaces_table) { table(:namespaces) } let(:namespace_settings_table) { table(:namespace_settings) } diff --git a/spec/lib/gitlab/background_migration/update_jira_tracker_data_deployment_type_based_on_url_spec.rb b/spec/lib/gitlab/background_migration/update_jira_tracker_data_deployment_type_based_on_url_spec.rb index c090c1df424..75fe5699986 100644 --- a/spec/lib/gitlab/background_migration/update_jira_tracker_data_deployment_type_based_on_url_spec.rb +++ b/spec/lib/gitlab/background_migration/update_jira_tracker_data_deployment_type_based_on_url_spec.rb @@ -13,10 +13,12 @@ RSpec.describe Gitlab::BackgroundMigration::UpdateJiraTrackerDataDeploymentTypeB let(:sub_batch_size) { 1 } let(:pause_ms) { 0 } let(:migration) do - described_class.new(start_id: 1, end_id: 10, - batch_table: table_name, batch_column: batch_column, - sub_batch_size: sub_batch_size, pause_ms: pause_ms, - connection: ApplicationRecord.connection) + described_class.new( + start_id: 1, end_id: 10, + batch_table: table_name, batch_column: batch_column, + sub_batch_size: sub_batch_size, pause_ms: pause_ms, + connection: ApplicationRecord.connection + ) end subject(:perform_migration) do diff --git a/spec/lib/gitlab/data_builder/deployment_spec.rb b/spec/lib/gitlab/data_builder/deployment_spec.rb index bf08e782035..82ec3e791a4 100644 --- a/spec/lib/gitlab/data_builder/deployment_spec.rb +++ b/spec/lib/gitlab/data_builder/deployment_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Gitlab::DataBuilder::Deployment do +RSpec.describe Gitlab::DataBuilder::Deployment, feature_category: :continuous_delivery do describe '.build' do it 'returns the object kind for a deployment' do deployment = build(:deployment, deployable: nil, environment: create(:environment)) @@ -40,6 +40,7 @@ RSpec.describe Gitlab::DataBuilder::Deployment do expect(data[:commit_url]).to eq(expected_commit_url) expect(data[:commit_title]).to eq(commit.title) expect(data[:ref]).to eq(deployment.ref) + expect(data[:environment_tier]).to eq('other') end it 'does not include the deployable URL when there is no deployable' do diff --git a/spec/lib/gitlab/database/migrations/instrumentation_spec.rb b/spec/lib/gitlab/database/migrations/instrumentation_spec.rb index 4f347034c0b..0b25389c667 100644 --- a/spec/lib/gitlab/database/migrations/instrumentation_spec.rb +++ b/spec/lib/gitlab/database/migrations/instrumentation_spec.rb @@ -18,7 +18,9 @@ RSpec.describe Gitlab::Database::Migrations::Instrumentation do let(:migration_name) { 'test' } let(:migration_version) { '12345' } let(:migration_meta) { { 'max_batch_size' => 1, 'total_tuple_count' => 10, 'interval' => 60 } } - let(:expected_json_keys) { %w[version name walltime success total_database_size_change query_statistics] } + let(:expected_json_keys) do + %w[version name walltime success total_database_size_change query_statistics error_message] + end it 'executes the given block' do expect do |b| @@ -90,16 +92,14 @@ RSpec.describe Gitlab::Database::Migrations::Instrumentation do end context 'upon failure' do - where(exception: ['something went wrong', SystemStackError, Interrupt]) + where(:exception, :error_message) do + [[StandardError, 'something went wrong'], [ActiveRecord::StatementTimeout, 'timeout']] + end with_them do subject(:observe) do instrumentation.observe(version: migration_version, name: migration_name, - connection: connection, meta: migration_meta) { raise exception } - end - - it 'raises the exception' do - expect { observe }.to raise_error(exception) + connection: connection, meta: migration_meta) { raise exception, error_message } end context 'retrieving observations' do @@ -107,10 +107,6 @@ RSpec.describe Gitlab::Database::Migrations::Instrumentation do before do observe - # rubocop:disable Lint/RescueException - rescue Exception - # rubocop:enable Lint/RescueException - # ignore (we expect this exception) end it 'records a valid observation', :aggregate_failures do @@ -118,6 +114,7 @@ RSpec.describe Gitlab::Database::Migrations::Instrumentation do expect(subject['success']).to be_falsey expect(subject['version']).to eq(migration_version) expect(subject['name']).to eq(migration_name) + expect(subject['error_message']).to eq(error_message) end it 'transforms observation to expected json' do diff --git a/spec/lib/gitlab/database/schema_validation/inconsistency_spec.rb b/spec/lib/gitlab/database/schema_validation/inconsistency_spec.rb index cb3df75b3fb..a49ff8339a1 100644 --- a/spec/lib/gitlab/database/schema_validation/inconsistency_spec.rb +++ b/spec/lib/gitlab/database/schema_validation/inconsistency_spec.rb @@ -50,6 +50,32 @@ RSpec.describe Gitlab::Database::SchemaValidation::Inconsistency, feature_catego end end + describe '#object_type' do + it 'returns the structure sql object type' do + expect(inconsistency.object_type).to eq('Index') + end + + context 'when the structure sql object is not available' do + subject(:inconsistency) { described_class.new(validator, nil, database_object) } + + it 'returns the database object type' do + expect(inconsistency.object_type).to eq('Index') + end + end + end + + describe '#structure_sql_statement' do + it 'returns structure sql statement' do + expect(inconsistency.structure_sql_statement).to eq("#{structure_sql_statement}\n") + end + end + + describe '#database_statement' do + it 'returns database statement' do + expect(inconsistency.database_statement).to eq("#{database_statement}\n") + end + end + describe '#inspect' do let(:expected_output) do <<~MSG diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index 8a2602ea9f6..34f9948b9dc 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -647,6 +647,7 @@ project: - redirect_routes - statistics - container_repositories +- container_registry_data_repair_detail - uploads - file_uploads - import_state |