2019-10-12 21:52:04 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-02-15 15:39:39 +05:30
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Gitlab::BackgroundMigration::EncryptRunnersTokens, :migration, schema: 20181121111200 do
|
|
|
|
let(:settings) { table(:application_settings) }
|
|
|
|
let(:namespaces) { table(:namespaces) }
|
|
|
|
let(:projects) { table(:projects) }
|
|
|
|
let(:runners) { table(:ci_runners) }
|
|
|
|
|
|
|
|
context 'when migrating application settings' do
|
|
|
|
before do
|
|
|
|
settings.create!(id: 1, runners_registration_token: 'plain-text-token1')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'migrates runners registration tokens' do
|
|
|
|
migrate!(:settings, 1, 1)
|
|
|
|
|
|
|
|
encrypted_token = settings.first.runners_registration_token_encrypted
|
|
|
|
decrypted_token = ::Gitlab::CryptoHelper.aes256_gcm_decrypt(encrypted_token)
|
|
|
|
|
|
|
|
expect(decrypted_token).to eq 'plain-text-token1'
|
|
|
|
expect(settings.first.runners_registration_token).to eq 'plain-text-token1'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when migrating namespaces' do
|
|
|
|
before do
|
|
|
|
namespaces.create!(id: 11, name: 'gitlab', path: 'gitlab-org', runners_token: 'my-token1')
|
|
|
|
namespaces.create!(id: 12, name: 'gitlab', path: 'gitlab-org', runners_token: 'my-token2')
|
|
|
|
namespaces.create!(id: 22, name: 'gitlab', path: 'gitlab-org', runners_token: 'my-token3')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'migrates runners registration tokens' do
|
|
|
|
migrate!(:namespace, 11, 22)
|
|
|
|
|
|
|
|
expect(namespaces.all.reload).to all(
|
|
|
|
have_attributes(runners_token: be_a(String), runners_token_encrypted: be_a(String))
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when migrating projects' do
|
|
|
|
before do
|
|
|
|
namespaces.create!(id: 11, name: 'gitlab', path: 'gitlab-org')
|
|
|
|
projects.create!(id: 111, namespace_id: 11, name: 'gitlab', path: 'gitlab-ce', runners_token: 'my-token1')
|
|
|
|
projects.create!(id: 114, namespace_id: 11, name: 'gitlab', path: 'gitlab-ce', runners_token: 'my-token2')
|
|
|
|
projects.create!(id: 116, namespace_id: 11, name: 'gitlab', path: 'gitlab-ce', runners_token: 'my-token3')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'migrates runners registration tokens' do
|
|
|
|
migrate!(:project, 111, 116)
|
|
|
|
|
|
|
|
expect(projects.all.reload).to all(
|
|
|
|
have_attributes(runners_token: be_a(String), runners_token_encrypted: be_a(String))
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when migrating runners' do
|
|
|
|
before do
|
|
|
|
runners.create!(id: 201, runner_type: 1, token: 'plain-text-token1')
|
|
|
|
runners.create!(id: 202, runner_type: 1, token: 'plain-text-token2')
|
|
|
|
runners.create!(id: 203, runner_type: 1, token: 'plain-text-token3')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'migrates runners communication tokens' do
|
|
|
|
migrate!(:runner, 201, 203)
|
|
|
|
|
|
|
|
expect(runners.all.reload).to all(
|
|
|
|
have_attributes(token: be_a(String), token_encrypted: be_a(String))
|
|
|
|
)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def migrate!(model, from, to)
|
|
|
|
subject.perform(model, from, to)
|
|
|
|
end
|
|
|
|
end
|