diff options
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/error_tracking/sentry_client/token_spec.rb | 21 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/config/entry/cache_spec.rb | 26 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/config/entry/job_spec.rb | 16 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/config/entry/root_spec.rb | 18 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb | 15 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/yaml_processor_spec.rb | 21 | ||||
-rw-r--r-- | spec/lib/gitlab/config_checker/external_database_checker_spec.rb | 6 | ||||
-rw-r--r-- | spec/lib/gitlab/database/partitioning_spec.rb | 15 | ||||
-rw-r--r-- | spec/lib/gitlab/github_import/client_spec.rb | 10 | ||||
-rw-r--r-- | spec/lib/gitlab/github_import/importer/collaborators_importer_spec.rb | 47 | ||||
-rw-r--r-- | spec/lib/gitlab/github_import/settings_spec.rb | 15 | ||||
-rw-r--r-- | spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb | 4 |
12 files changed, 187 insertions, 27 deletions
diff --git a/spec/lib/error_tracking/sentry_client/token_spec.rb b/spec/lib/error_tracking/sentry_client/token_spec.rb new file mode 100644 index 00000000000..c50ec42ed67 --- /dev/null +++ b/spec/lib/error_tracking/sentry_client/token_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe ErrorTracking::SentryClient::Token, feature_category: :error_tracking do + describe '.masked_token?' do + subject { described_class.masked_token?(token) } + + context 'with masked token' do + let(:token) { '*********' } + + it { is_expected.to be_truthy } + end + + context 'without masked token' do + let(:token) { 'token' } + + it { is_expected.to be_falsey } + end + end +end diff --git a/spec/lib/gitlab/ci/config/entry/cache_spec.rb b/spec/lib/gitlab/ci/config/entry/cache_spec.rb index 67252eed938..82db116fa0d 100644 --- a/spec/lib/gitlab/ci/config/entry/cache_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/cache_spec.rb @@ -17,6 +17,7 @@ RSpec.describe Gitlab::Ci::Config::Entry::Cache do let(:key) { 'some key' } let(:when_config) { nil } let(:unprotect) { false } + let(:fallback_keys) { [] } let(:config) do { @@ -27,13 +28,22 @@ RSpec.describe Gitlab::Ci::Config::Entry::Cache do }.tap do |config| config[:policy] = policy if policy config[:when] = when_config if when_config + config[:fallback_keys] = fallback_keys if fallback_keys end end describe '#value' do shared_examples 'hash key value' do it 'returns hash value' do - expect(entry.value).to eq(key: key, untracked: true, paths: ['some/path/'], policy: 'pull-push', when: 'on_success', unprotect: false) + expect(entry.value).to eq( + key: key, + untracked: true, + paths: ['some/path/'], + policy: 'pull-push', + when: 'on_success', + unprotect: false, + fallback_keys: [] + ) end end @@ -104,6 +114,20 @@ RSpec.describe Gitlab::Ci::Config::Entry::Cache do expect(entry.value).to include(when: 'on_success') end end + + context 'with `fallback_keys`' do + let(:fallback_keys) { %w[key-1 key-2] } + + it 'matches the list of fallback keys' do + expect(entry.value).to match(a_hash_including(fallback_keys: %w[key-1 key-2])) + end + end + + context 'without `fallback_keys`' do + it 'assigns an empty list' do + expect(entry.value).to match(a_hash_including(fallback_keys: [])) + end + end end describe '#valid?' do diff --git a/spec/lib/gitlab/ci/config/entry/job_spec.rb b/spec/lib/gitlab/ci/config/entry/job_spec.rb index a06fc2d86c7..4be7c11fab0 100644 --- a/spec/lib/gitlab/ci/config/entry/job_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/job_spec.rb @@ -664,7 +664,13 @@ RSpec.describe Gitlab::Ci::Config::Entry::Job, feature_category: :pipeline_compo it 'overrides default config' do expect(entry[:image].value).to eq(name: 'some_image') - expect(entry[:cache].value).to eq([key: 'test', policy: 'pull-push', when: 'on_success', unprotect: false]) + expect(entry[:cache].value).to match_array([ + key: 'test', + policy: 'pull-push', + when: 'on_success', + unprotect: false, + fallback_keys: [] + ]) end end @@ -679,7 +685,13 @@ RSpec.describe Gitlab::Ci::Config::Entry::Job, feature_category: :pipeline_compo it 'uses config from default entry' do expect(entry[:image].value).to eq 'specified' - expect(entry[:cache].value).to eq([key: 'test', policy: 'pull-push', when: 'on_success', unprotect: false]) + expect(entry[:cache].value).to match_array([ + key: 'test', + policy: 'pull-push', + when: 'on_success', + unprotect: false, + fallback_keys: [] + ]) end end diff --git a/spec/lib/gitlab/ci/config/entry/root_spec.rb b/spec/lib/gitlab/ci/config/entry/root_spec.rb index 9722609aef6..5fac5298e8e 100644 --- a/spec/lib/gitlab/ci/config/entry/root_spec.rb +++ b/spec/lib/gitlab/ci/config/entry/root_spec.rb @@ -128,7 +128,7 @@ RSpec.describe Gitlab::Ci::Config::Entry::Root do services: [{ name: 'postgres:9.1' }, { name: 'mysql:5.5' }], stage: 'test', cache: [{ key: 'k', untracked: true, paths: ['public/'], policy: 'pull-push', when: 'on_success', - unprotect: false }], + unprotect: false, fallback_keys: [] }], job_variables: {}, root_variables_inheritance: true, ignore: false, @@ -144,7 +144,7 @@ RSpec.describe Gitlab::Ci::Config::Entry::Root do services: [{ name: 'postgres:9.1' }, { name: 'mysql:5.5' }], stage: 'test', cache: [{ key: 'k', untracked: true, paths: ['public/'], policy: 'pull-push', when: 'on_success', - unprotect: false }], + unprotect: false, fallback_keys: [] }], job_variables: {}, root_variables_inheritance: true, ignore: false, @@ -161,7 +161,7 @@ RSpec.describe Gitlab::Ci::Config::Entry::Root do image: { name: "image:1.0" }, services: [{ name: "postgres:9.1" }, { name: "mysql:5.5" }], cache: [{ key: "k", untracked: true, paths: ["public/"], policy: "pull-push", when: 'on_success', - unprotect: false }], + unprotect: false, fallback_keys: [] }], only: { refs: %w(branches tags) }, job_variables: { 'VAR' => { value: 'job' } }, root_variables_inheritance: true, @@ -209,7 +209,7 @@ RSpec.describe Gitlab::Ci::Config::Entry::Root do image: { name: 'image:1.0' }, services: [{ name: 'postgres:9.1' }, { name: 'mysql:5.5' }], stage: 'test', - cache: [{ key: 'k', untracked: true, paths: ['public/'], policy: 'pull-push', when: 'on_success', unprotect: false }], + cache: [{ key: 'k', untracked: true, paths: ['public/'], policy: 'pull-push', when: 'on_success', unprotect: false, fallback_keys: [] }], job_variables: {}, root_variables_inheritance: true, ignore: false, @@ -222,7 +222,7 @@ RSpec.describe Gitlab::Ci::Config::Entry::Root do image: { name: 'image:1.0' }, services: [{ name: 'postgres:9.1' }, { name: 'mysql:5.5' }], stage: 'test', - cache: [{ key: 'k', untracked: true, paths: ['public/'], policy: 'pull-push', when: 'on_success', unprotect: false }], + cache: [{ key: 'k', untracked: true, paths: ['public/'], policy: 'pull-push', when: 'on_success', unprotect: false, fallback_keys: [] }], job_variables: { 'VAR' => { value: 'job' } }, root_variables_inheritance: true, ignore: false, @@ -277,7 +277,13 @@ RSpec.describe Gitlab::Ci::Config::Entry::Root do describe '#cache_value' do it 'returns correct cache definition' do - expect(root.cache_value).to eq([key: 'a', policy: 'pull-push', when: 'on_success', unprotect: false]) + expect(root.cache_value).to match_array([ + key: 'a', + policy: 'pull-push', + when: 'on_success', + unprotect: false, + fallback_keys: [] + ]) end end end diff --git a/spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb b/spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb index 49511e14db6..07e2d6960bf 100644 --- a/spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb +++ b/spec/lib/gitlab/ci/pipeline/seed/build/cache_spec.rb @@ -220,6 +220,18 @@ RSpec.describe Gitlab::Ci::Pipeline::Seed::Build::Cache do end end + context 'with cache:fallback_keys' do + let(:config) do + { + key: 'ruby-branch-key', + paths: ['vendor/ruby'], + fallback_keys: ['ruby-default'] + } + end + + it { is_expected.to include(config) } + end + context 'with all cache option keys' do let(:config) do { @@ -228,7 +240,8 @@ RSpec.describe Gitlab::Ci::Pipeline::Seed::Build::Cache do untracked: true, policy: 'push', unprotect: true, - when: 'on_success' + when: 'on_success', + fallback_keys: ['default-ruby'] } end diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb index f8c2889798f..2c020e76cb6 100644 --- a/spec/lib/gitlab/ci/yaml_processor_spec.rb +++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb @@ -1870,7 +1870,8 @@ module Gitlab key: 'key', policy: 'pull-push', when: 'on_success', - unprotect: false + unprotect: false, + fallback_keys: [] ]) end @@ -1895,7 +1896,8 @@ module Gitlab key: { files: ['file'] }, policy: 'pull-push', when: 'on_success', - unprotect: false + unprotect: false, + fallback_keys: [] ]) end @@ -1922,7 +1924,8 @@ module Gitlab key: 'keya', policy: 'pull-push', when: 'on_success', - unprotect: false + unprotect: false, + fallback_keys: [] }, { paths: ['logs/', 'binaries/'], @@ -1930,7 +1933,8 @@ module Gitlab key: 'key', policy: 'pull-push', when: 'on_success', - unprotect: false + unprotect: false, + fallback_keys: [] } ] ) @@ -1958,7 +1962,8 @@ module Gitlab key: { files: ['file'] }, policy: 'pull-push', when: 'on_success', - unprotect: false + unprotect: false, + fallback_keys: [] ]) end @@ -1984,7 +1989,8 @@ module Gitlab key: { files: ['file'], prefix: 'prefix' }, policy: 'pull-push', when: 'on_success', - unprotect: false + unprotect: false, + fallback_keys: [] ]) end @@ -2008,7 +2014,8 @@ module Gitlab key: 'local', policy: 'pull-push', when: 'on_success', - unprotect: false + unprotect: false, + fallback_keys: [] ]) end end diff --git a/spec/lib/gitlab/config_checker/external_database_checker_spec.rb b/spec/lib/gitlab/config_checker/external_database_checker_spec.rb index c962b9ad393..6379a5edb90 100644 --- a/spec/lib/gitlab/config_checker/external_database_checker_spec.rb +++ b/spec/lib/gitlab/config_checker/external_database_checker_spec.rb @@ -89,9 +89,9 @@ RSpec.describe Gitlab::ConfigChecker::ExternalDatabaseChecker do { type: 'warning', message: _('Database \'%{database_name}\' is using PostgreSQL %{pg_version_current}, ' \ - 'but PostgreSQL %{pg_version_minimum} is required for this version of GitLab. ' \ - 'Please upgrade your environment to a supported PostgreSQL version, ' \ - 'see %{pg_requirements_url} for details.') % \ + 'but this version of GitLab requires PostgreSQL %{pg_version_minimum}. ' \ + 'Please upgrade your environment to a supported PostgreSQL version. ' \ + 'See %{pg_requirements_url} for details.') % \ { database_name: database_name, pg_version_current: database_version, diff --git a/spec/lib/gitlab/database/partitioning_spec.rb b/spec/lib/gitlab/database/partitioning_spec.rb index 4a82cd43fbb..9df238a0024 100644 --- a/spec/lib/gitlab/database/partitioning_spec.rb +++ b/spec/lib/gitlab/database/partitioning_spec.rb @@ -171,6 +171,21 @@ RSpec.describe Gitlab::Database::Partitioning, feature_category: :database do expect(find_partitions(ci_model.table_name, conn: main_connection).size).to eq(0) end end + + context 'when partition_manager_sync_partitions feature flag is disabled' do + before do + described_class.register_models(models) + stub_feature_flags(partition_manager_sync_partitions: false) + end + + it 'skips sync_partitions' do + expect(described_class::PartitionManager).not_to receive(:new) + expect(described_class).to receive(:sync_partitions) + .and_call_original + + described_class.sync_partitions(models) + end + end end describe '.report_metrics' do diff --git a/spec/lib/gitlab/github_import/client_spec.rb b/spec/lib/gitlab/github_import/client_spec.rb index aa1205663e1..c9f7fd4f748 100644 --- a/spec/lib/gitlab/github_import/client_spec.rb +++ b/spec/lib/gitlab/github_import/client_spec.rb @@ -131,6 +131,16 @@ RSpec.describe Gitlab::GithubImport::Client, feature_category: :importers do end end + describe '#collaborators' do + it 'returns the collaborators' do + expect(client) + .to receive(:each_object) + .with(:collaborators, 'foo/bar') + + client.collaborators('foo/bar') + end + end + describe '#branch_protection' do it 'returns the protection details for the given branch' do expect(client.octokit) diff --git a/spec/lib/gitlab/github_import/importer/collaborators_importer_spec.rb b/spec/lib/gitlab/github_import/importer/collaborators_importer_spec.rb index e48b562279e..dcb02f32a28 100644 --- a/spec/lib/gitlab/github_import/importer/collaborators_importer_spec.rb +++ b/spec/lib/gitlab/github_import/importer/collaborators_importer_spec.rb @@ -73,12 +73,11 @@ RSpec.describe Gitlab::GithubImport::Importer::CollaboratorsImporter, feature_ca end describe '#parallel_import', :clean_gitlab_redis_cache do - let(:page_struct) { Struct.new(:objects, :number, keyword_init: true) } - before do - allow(client).to receive(:each_page) - .with(:collaborators, project.import_source, { page: 1 }) - .and_yield(page_struct.new(number: 1, objects: [github_collaborator])) + allow(client).to receive(:collaborators).with(project.import_source, affiliation: 'direct') + .and_return([github_collaborator]) + allow(client).to receive(:collaborators).with(project.import_source, affiliation: 'outside') + .and_return([]) end it 'imports each collaborator in parallel' do @@ -110,6 +109,44 @@ RSpec.describe Gitlab::GithubImport::Importer::CollaboratorsImporter, feature_ca end end + describe '#each_object_to_import', :clean_gitlab_redis_cache do + let(:github_collaborator_2) { { id: 100501, login: 'alice', role_name: 'owner' } } + let(:github_collaborator_3) { { id: 100502, login: 'tom', role_name: 'guest' } } + + before do + allow(client).to receive(:collaborators).with(project.import_source, affiliation: 'direct') + .and_return([github_collaborator, github_collaborator_2, github_collaborator_3]) + allow(client).to receive(:collaborators).with(project.import_source, affiliation: 'outside') + .and_return([github_collaborator_3]) + allow(Gitlab::GithubImport::ObjectCounter).to receive(:increment) + .with(project, :collaborator, :fetched) + end + + it 'yields every direct collaborator who is not an outside collaborator to the supplied block' do + expect { |b| importer.each_object_to_import(&b) } + .to yield_successive_args(github_collaborator, github_collaborator_2) + + expect(Gitlab::GithubImport::ObjectCounter).to have_received(:increment).twice + end + + context 'when a collaborator has been already imported' do + before do + allow(importer).to receive(:already_imported?).and_return(true) + end + + it 'does not yield anything' do + expect(Gitlab::GithubImport::ObjectCounter) + .not_to receive(:increment) + + expect(importer) + .not_to receive(:mark_as_imported) + + expect { |b| importer.each_object_to_import(&b) } + .not_to yield_control + end + end + end + describe '#id_for_already_imported_cache' do it 'returns the ID of the given note' do expect(importer.id_for_already_imported_cache(github_collaborator)) diff --git a/spec/lib/gitlab/github_import/settings_spec.rb b/spec/lib/gitlab/github_import/settings_spec.rb index ad0c47e8e8a..43e096863b8 100644 --- a/spec/lib/gitlab/github_import/settings_spec.rb +++ b/spec/lib/gitlab/github_import/settings_spec.rb @@ -11,7 +11,8 @@ RSpec.describe Gitlab::GithubImport::Settings do { single_endpoint_issue_events_import: true, single_endpoint_notes_import: false, - attachments_import: false + attachments_import: false, + collaborators_import: false } end @@ -22,17 +23,26 @@ RSpec.describe Gitlab::GithubImport::Settings do { name: 'single_endpoint_issue_events_import', label: stages[:single_endpoint_issue_events_import][:label], + selected: false, details: stages[:single_endpoint_issue_events_import][:details] }, { name: 'single_endpoint_notes_import', label: stages[:single_endpoint_notes_import][:label], + selected: false, details: stages[:single_endpoint_notes_import][:details] }, { name: 'attachments_import', label: stages[:attachments_import][:label].strip, + selected: false, details: stages[:attachments_import][:details] + }, + { + name: 'collaborators_import', + label: stages[:collaborators_import][:label].strip, + selected: true, + details: stages[:collaborators_import][:details] } ] end @@ -48,6 +58,7 @@ RSpec.describe Gitlab::GithubImport::Settings do single_endpoint_issue_events_import: true, single_endpoint_notes_import: 'false', attachments_import: nil, + collaborators_import: false, foo: :bar }.stringify_keys end @@ -67,6 +78,7 @@ RSpec.describe Gitlab::GithubImport::Settings do expect(settings.enabled?(:single_endpoint_issue_events_import)).to eq true expect(settings.enabled?(:single_endpoint_notes_import)).to eq false expect(settings.enabled?(:attachments_import)).to eq false + expect(settings.enabled?(:collaborators_import)).to eq false end end @@ -77,6 +89,7 @@ RSpec.describe Gitlab::GithubImport::Settings do expect(settings.disabled?(:single_endpoint_issue_events_import)).to eq false expect(settings.disabled?(:single_endpoint_notes_import)).to eq true expect(settings.disabled?(:attachments_import)).to eq true + expect(settings.disabled?(:collaborators_import)).to eq true end end end diff --git a/spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb b/spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb index 1731da9b752..2d4c6d1cc56 100644 --- a/spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb +++ b/spec/lib/gitlab/metrics/subscribers/rails_cache_spec.rb @@ -76,7 +76,9 @@ RSpec.describe Gitlab::Metrics::Subscribers::RailsCache do it 'observes multi-key count' do expect(transaction).to receive(:observe) - .with(:gitlab_cache_read_multikey_count, event.payload[:key].size) + .with(:gitlab_cache_read_multikey_count, + event.payload[:key].size, + { store: store_label }) subject end |