@@ -91,35 +91,39 @@ def test_encryption_no_context_fail(data_masker):
91
91
92
92
# TODO: metaclass?
93
93
@pytest .mark .xdist_group (name = "data_masking" )
94
- def test_encryption_key_fail (kms_key2_arn , data_masker ):
94
+ def test_encryption_key_fail (data_masker , kms_key2_arn ):
95
95
# GIVEN an instantiation of DataMasking with the AWS encryption provider with a certain key
96
96
97
97
# WHEN encrypting and then decrypting the encrypted data
98
98
value = bytes (str ([1 , 2 , "string" , 4.5 ]), "utf-8" )
99
99
encrypted_data = data_masker .encrypt (value )
100
100
101
+ # THEN when decrypting with a different key it should fail
101
102
data_masker_key2 = DataMasking (provider = AwsEncryptionSdkProvider (keys = [kms_key2_arn ]))
102
103
103
104
with pytest .raises (DecryptKeyError ):
104
105
data_masker_key2 .decrypt (encrypted_data )
105
106
106
107
107
108
@pytest .mark .xdist_group (name = "data_masking" )
108
- def test_masked_in_logs ( basic_handler_fn , basic_handler_fn_arn ):
109
+ def test_encrypted_in_logs ( data_masker , basic_handler_fn , basic_handler_fn_arn ):
109
110
# GIVEN an instantiation of DataMasking with the AWS encryption provider
110
- data_masker = DataMasking (provider = AwsEncryptionSdkProvider (keys = [kms_key1_arn ]))
111
111
112
- # WHEN masking a value and logging it
113
- masked_data = data_masker .mask ([1 , 2 , "string" , 4.5 ])
114
- message = masked_data
112
+ # WHEN encrypting a value and logging it
113
+ value = bytes (str ([1 , 2 , "string" , 4.5 ]), "utf-8" )
114
+ encrypted_data = data_masker .encrypt (value )
115
+ message = encrypted_data
115
116
custom_key = "order_id"
116
117
additional_keys = {custom_key : f"{ uuid4 ()} " }
117
118
payload = json .dumps ({"message" : message , "append_keys" : additional_keys })
118
119
119
120
_ , execution_time = data_fetcher .get_lambda_response (lambda_arn = basic_handler_fn_arn , payload = payload )
120
121
data_fetcher .get_lambda_response (lambda_arn = basic_handler_fn_arn , payload = payload )
121
122
122
- # THEN the logs should show only the obfuscated data
123
123
logs = data_fetcher .get_logs (function_name = basic_handler_fn , start_time = execution_time , minimum_log_entries = 2 )
124
124
125
- assert logs .have_keys ("message" ) is True
125
+ # THEN decrypting it from the logs should show the original value
126
+ for log in logs .get_log (key = custom_key ):
127
+ encrypted_data = log .message
128
+ decrypted_data = data_masker .decrypt (encrypted_data )
129
+ assert decrypted_data == value
0 commit comments