diff options
Diffstat (limited to 'spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb')
-rw-r--r-- | spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb b/spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb index d02f7245c15..71020746fa7 100644 --- a/spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb +++ b/spec/lib/gitlab/background_migration/reset_duplicate_ci_runners_token_encrypted_values_on_projects_spec.rb @@ -6,32 +6,47 @@ RSpec.describe Gitlab::BackgroundMigration::ResetDuplicateCiRunnersTokenEncrypte let(:namespaces) { table(:namespaces) } let(:projects) { table(:projects) } - let(:perform) { described_class.new.perform(1, 4) } + subject(:background_migration) { described_class.new } before do namespaces.create!(id: 123, name: 'sample', path: 'sample') projects.create!(id: 1, namespace_id: 123, runners_token_encrypted: 'duplicate') projects.create!(id: 2, namespace_id: 123, runners_token_encrypted: 'a-runners-token') - projects.create!(id: 3, namespace_id: 123, runners_token_encrypted: 'duplicate') + projects.create!(id: 3, namespace_id: 123, runners_token_encrypted: 'duplicate-2') projects.create!(id: 4, namespace_id: 123, runners_token_encrypted: nil) projects.create!(id: 5, namespace_id: 123, runners_token_encrypted: 'duplicate-2') - projects.create!(id: 6, namespace_id: 123, runners_token_encrypted: 'duplicate-2') + projects.create!(id: 6, namespace_id: 123, runners_token_encrypted: 'duplicate') + projects.create!(id: 7, namespace_id: 123, runners_token_encrypted: 'another-runners-token') + projects.create!(id: 8, namespace_id: 123, runners_token_encrypted: 'another-runners-token') end describe '#up' do - before do - stub_const("#{described_class}::SUB_BATCH_SIZE", 2) - end - it 'nullifies duplicate tokens', :aggregate_failures do - perform + background_migration.perform(1, 2) + background_migration.perform(3, 4) - expect(projects.count).to eq(6) + expect(projects.count).to eq(8) expect(projects.all.pluck(:id, :runners_token_encrypted).to_h).to eq( - { 1 => nil, 2 => 'a-runners-token', 3 => nil, 4 => nil, 5 => 'duplicate-2', 6 => 'duplicate-2' } - ) - expect(projects.pluck(:runners_token_encrypted).uniq).to match_array [nil, 'a-runners-token', 'duplicate-2'] + { + 1 => nil, + 2 => 'a-runners-token', + 3 => nil, + 4 => nil, + 5 => 'duplicate-2', + 6 => 'duplicate', + 7 => 'another-runners-token', + 8 => 'another-runners-token' + }) + expect(projects.pluck(:runners_token_encrypted).uniq).to match_array [ + nil, 'a-runners-token', 'duplicate', 'duplicate-2', 'another-runners-token' + ] + end + + it 'does not touch projects outside id range' do + expect do + background_migration.perform(1, 2) + end.not_to change { projects.where(id: [3..8]).each(&:reload).map(&:updated_at) } end end end |