Skip to content

Commit 2d86ce9

Browse files
committed
Only try to decrypt original value if it is present
1 parent db30e67 commit 2d86ce9

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

lib/diffcrypt/encryptor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def encrypt_values(data, original_data = nil)
7979
data[key] = if value.is_a?(Hash) || value.is_a?(Array)
8080
encrypt_values(value, original_encrypted_value)
8181
else
82-
original_decrypted_value = original_data ? decrypt_string(original_encrypted_value) : nil
82+
original_decrypted_value = original_encrypted_value ? decrypt_string(original_encrypted_value) : nil
8383
key_changed = original_decrypted_value.nil? || original_decrypted_value != value
8484
key_changed ? encrypt_string(value) : original_encrypted_value
8585
end

test/diffcrypt/encryptor_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,12 @@ def test_it_only_updates_changed_values
7575

7676
assert_match expected_pattern, Diffcrypt::Encryptor.new(TEST_KEY).encrypt_data(updated_content, original_encrypted_content).to_yaml
7777
end
78+
79+
def test_it_assumes_changed_when_no_original_value
80+
original_encrypted_content = "---\ndata:\n secret_key_base_1: 88Ry6HESUoXBr6QUFXmni9zzfCIYt9qGNFvIWFcN--4xoecI5mqbNRBibI--62qPJbkzzh5h8lhFEFOSaQ==\n"
81+
updated_content = "---\nsecret_key_base_1: secret_key_base_test\naws:\n access_key_id: new_value\n"
82+
expected_pattern = /---\nsecret_key_base_1: 88Ry6HESUoXBr6QUFXmni9zzfCIYt9qGNFvIWFcN--4xoecI5mqbNRBibI--62qPJbkzzh5h8lhFEFOSaQ==\naws:\n access_key_id: #{ENCRYPTED_VALUE_PATTERN}\n/
83+
84+
assert_match expected_pattern, Diffcrypt::Encryptor.new(TEST_KEY).encrypt_data(updated_content, original_encrypted_content).to_yaml
85+
end
7886
end

0 commit comments

Comments
 (0)