summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2019-06-18 13:41:44 +0000
committerKamil Trzciński <ayufan@ayufan.eu>2019-06-18 13:41:44 +0000
commit457db29067aa231cd357ac1b9981adc9548fee75 (patch)
tree04c98503dd2e0a35d0f344ef5f9bda84f8803325 /spec
parent14d46afd9b3ee7482fa8be7bc6782b19e960ce45 (diff)
parent03000c8f26e85f5bc8bbfe292af7ffd1bcc38d29 (diff)
downloadgitlab-ce-457db29067aa231cd357ac1b9981adc9548fee75.tar.gz
Merge branch '57918-encrypt-feature-flags-tokens' into 'master'
Add migrations needed to encrypt feature flags client tokens See merge request gitlab-org/gitlab-ce!29320
Diffstat (limited to 'spec')
-rw-r--r--spec/migrations/encrypt_feature_flags_clients_tokens_spec.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/migrations/encrypt_feature_flags_clients_tokens_spec.rb b/spec/migrations/encrypt_feature_flags_clients_tokens_spec.rb
new file mode 100644
index 00000000000..95b02d20594
--- /dev/null
+++ b/spec/migrations/encrypt_feature_flags_clients_tokens_spec.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+require Rails.root.join('db', 'post_migrate', '20190606175050_encrypt_feature_flags_clients_tokens.rb')
+
+describe EncryptFeatureFlagsClientsTokens, :migration do
+ let(:migration) { described_class.new }
+ let(:feature_flags_clients) { table(:operations_feature_flags_clients) }
+ let(:projects) { table(:projects) }
+ let(:plaintext) { "secret-token" }
+ let(:ciphertext) { Gitlab::CryptoHelper.aes256_gcm_encrypt(plaintext) }
+
+ describe '#up' do
+ it 'keeps plaintext token the same and populates token_encrypted if not present' do
+ project = projects.create!(id: 123, name: 'gitlab1', path: 'gitlab1', namespace_id: 123)
+ feature_flags_client = feature_flags_clients.create!(project_id: project.id, token: plaintext)
+
+ migration.up
+
+ expect(feature_flags_client.reload.token).to eq(plaintext)
+ expect(feature_flags_client.reload.token_encrypted).to eq(ciphertext)
+ end
+ end
+
+ describe '#down' do
+ it 'decrypts encrypted token and saves it' do
+ project = projects.create!(id: 123, name: 'gitlab1', path: 'gitlab1', namespace_id: 123)
+ feature_flags_client = feature_flags_clients.create!(project_id: project.id, token_encrypted: ciphertext)
+
+ migration.down
+
+ expect(feature_flags_client.reload.token).to eq(plaintext)
+ expect(feature_flags_client.reload.token_encrypted).to eq(ciphertext)
+ end
+ end
+end