Add migration specs
This commit is contained in:
parent
1879980f2e
commit
9ac732dda2
2 changed files with 92 additions and 0 deletions
|
@ -0,0 +1,36 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Gitlab::BackgroundMigration::NormalizeLdapExternUidsRange, :migration, schema: 20170921101004 do
|
||||||
|
let!(:identities) { table(:identities) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
# LDAP identities
|
||||||
|
(1..4).each do |i|
|
||||||
|
identities.create!(id: i, provider: 'ldapmain', extern_uid: " uid = foo #{i}, ou = People, dc = example, dc = com ", user_id: i)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Non-LDAP identity
|
||||||
|
identities.create!(id: 5, provider: 'foo', extern_uid: " uid = foo 5, ou = People, dc = example, dc = com ", user_id: 5)
|
||||||
|
|
||||||
|
# Another LDAP identity
|
||||||
|
identities.create!(id: 6, provider: 'ldapmain', extern_uid: " uid = foo 6, ou = People, dc = example, dc = com ", user_id: 6)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'normalizes the LDAP identities in the range' do
|
||||||
|
described_class.new.perform(1, 3)
|
||||||
|
expect(identities.find(1).extern_uid).to eq("uid=foo 1,ou=people,dc=example,dc=com")
|
||||||
|
expect(identities.find(2).extern_uid).to eq("uid=foo 2,ou=people,dc=example,dc=com")
|
||||||
|
expect(identities.find(3).extern_uid).to eq("uid=foo 3,ou=people,dc=example,dc=com")
|
||||||
|
expect(identities.find(4).extern_uid).to eq(" uid = foo 4, ou = People, dc = example, dc = com ")
|
||||||
|
expect(identities.find(5).extern_uid).to eq(" uid = foo 5, ou = People, dc = example, dc = com ")
|
||||||
|
expect(identities.find(6).extern_uid).to eq(" uid = foo 6, ou = People, dc = example, dc = com ")
|
||||||
|
|
||||||
|
described_class.new.perform(4, 6)
|
||||||
|
expect(identities.find(1).extern_uid).to eq("uid=foo 1,ou=people,dc=example,dc=com")
|
||||||
|
expect(identities.find(2).extern_uid).to eq("uid=foo 2,ou=people,dc=example,dc=com")
|
||||||
|
expect(identities.find(3).extern_uid).to eq("uid=foo 3,ou=people,dc=example,dc=com")
|
||||||
|
expect(identities.find(4).extern_uid).to eq("uid=foo 4,ou=people,dc=example,dc=com")
|
||||||
|
expect(identities.find(5).extern_uid).to eq(" uid = foo 5, ou = People, dc = example, dc = com ")
|
||||||
|
expect(identities.find(6).extern_uid).to eq("uid=foo 6,ou=people,dc=example,dc=com")
|
||||||
|
end
|
||||||
|
end
|
56
spec/migrations/normalize_ldap_extern_uids_spec.rb
Normal file
56
spec/migrations/normalize_ldap_extern_uids_spec.rb
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
require Rails.root.join('db', 'post_migrate', '20170921101004_normalize_ldap_extern_uids')
|
||||||
|
|
||||||
|
describe NormalizeLdapExternUids, :migration, :sidekiq do
|
||||||
|
let!(:identities) { table(:identities) }
|
||||||
|
|
||||||
|
around do |example|
|
||||||
|
Timecop.freeze { example.run }
|
||||||
|
end
|
||||||
|
|
||||||
|
before do
|
||||||
|
stub_const("Gitlab::Database::MigrationHelpers::BACKGROUND_MIGRATION_BATCH_SIZE", 2)
|
||||||
|
stub_const("Gitlab::Database::MigrationHelpers::BACKGROUND_MIGRATION_JOB_BUFFER_SIZE", 2)
|
||||||
|
|
||||||
|
# LDAP identities
|
||||||
|
(1..4).each do |i|
|
||||||
|
identities.create!(id: i, provider: 'ldapmain', extern_uid: " uid = foo #{i}, ou = People, dc = example, dc = com ", user_id: i)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Non-LDAP identity
|
||||||
|
identities.create!(id: 5, provider: 'foo', extern_uid: " uid = foo 5, ou = People, dc = example, dc = com ", user_id: 5)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'correctly schedules background migrations' do
|
||||||
|
Sidekiq::Testing.fake! do
|
||||||
|
Timecop.freeze do
|
||||||
|
migrate!
|
||||||
|
|
||||||
|
expect(BackgroundMigrationWorker.jobs[0]['args']).to eq([described_class::MIGRATION, [1, 2]])
|
||||||
|
expect(BackgroundMigrationWorker.jobs[0]['at']).to eq(10.seconds.from_now.to_f)
|
||||||
|
expect(BackgroundMigrationWorker.jobs[1]['args']).to eq([described_class::MIGRATION, [3, 4]])
|
||||||
|
expect(BackgroundMigrationWorker.jobs[1]['at']).to eq(20.seconds.from_now.to_f)
|
||||||
|
expect(BackgroundMigrationWorker.jobs[2]['args']).to eq([described_class::MIGRATION, [5, 5]])
|
||||||
|
expect(BackgroundMigrationWorker.jobs[2]['at']).to eq(30.seconds.from_now.to_f)
|
||||||
|
expect(BackgroundMigrationWorker.jobs.size).to eq 3
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'migrates the LDAP identities' do
|
||||||
|
Sidekiq::Testing.inline! do
|
||||||
|
migrate!
|
||||||
|
identities.where(id: 1..4).each do |identity|
|
||||||
|
expect(identity.extern_uid).to eq("uid=foo #{identity.id},ou=people,dc=example,dc=com")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not modify non-LDAP identities' do
|
||||||
|
Sidekiq::Testing.inline! do
|
||||||
|
migrate!
|
||||||
|
identity = identities.last
|
||||||
|
expect(identity.extern_uid).to eq(" uid = foo 5, ou = People, dc = example, dc = com ")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue