@@ -149,99 +149,6 @@ def test_backwards_compatibility_decrypt_previously_encrypted_messages_without_m
149
149
assert_equal "Ruby on Rails" , encryptor . decrypt_and_verify ( encrypted_message )
150
150
end
151
151
152
- def test_rotating_secret
153
- old_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :old ] , cipher : "aes-256-gcm" ) . encrypt_and_sign ( "old" )
154
-
155
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret , cipher : "aes-256-gcm" )
156
- encryptor . rotate secrets [ :old ]
157
-
158
- assert_equal "old" , encryptor . decrypt_and_verify ( old_message )
159
- end
160
-
161
- def test_rotating_serializer
162
- old_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :old ] , cipher : "aes-256-gcm" , serializer : JSON ) .
163
- encrypt_and_sign ( { ahoy : :hoy } )
164
-
165
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret , cipher : "aes-256-gcm" , serializer : JSON )
166
- encryptor . rotate secrets [ :old ]
167
-
168
- assert_equal ( { "ahoy" => "hoy" } , encryptor . decrypt_and_verify ( old_message ) )
169
- end
170
-
171
- def test_rotating_aes_cbc_secrets
172
- old_encryptor = ActiveSupport ::MessageEncryptor . new ( secrets [ :old ] , "old sign" , cipher : "aes-256-cbc" )
173
- old_message = old_encryptor . encrypt_and_sign ( "old" )
174
-
175
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret )
176
- encryptor . rotate secrets [ :old ] , "old sign" , cipher : "aes-256-cbc"
177
-
178
- assert_equal "old" , encryptor . decrypt_and_verify ( old_message )
179
- end
180
-
181
- def test_multiple_rotations
182
- older_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :older ] , "older sign" ) . encrypt_and_sign ( "older" )
183
- old_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :old ] , "old sign" ) . encrypt_and_sign ( "old" )
184
-
185
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret )
186
- encryptor . rotate secrets [ :old ] , "old sign"
187
- encryptor . rotate secrets [ :older ] , "older sign"
188
-
189
- assert_equal "new" , encryptor . decrypt_and_verify ( encryptor . encrypt_and_sign ( "new" ) )
190
- assert_equal "old" , encryptor . decrypt_and_verify ( old_message )
191
- assert_equal "older" , encryptor . decrypt_and_verify ( older_message )
192
- end
193
-
194
- def test_on_rotation_is_called_and_returns_modified_messages
195
- older_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :older ] , "older sign" ) . encrypt_and_sign ( { encoded : "message" } )
196
-
197
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret )
198
- encryptor . rotate secrets [ :old ]
199
- encryptor . rotate secrets [ :older ] , "older sign"
200
-
201
- rotated = false
202
- message = encryptor . decrypt_and_verify ( older_message , on_rotation : proc { rotated = true } )
203
-
204
- assert_equal ( { encoded : "message" } , message )
205
- assert rotated
206
- end
207
-
208
- def test_on_rotation_can_be_passed_at_the_constructor_level
209
- older_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :older ] , "older sign" ) . encrypt_and_sign ( { encoded : "message" } )
210
-
211
- rotated = rotated = false # double assigning to suppress "assigned but unused variable" warning
212
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret , on_rotation : proc { rotated = true } )
213
- encryptor . rotate secrets [ :older ] , "older sign"
214
-
215
- assert_changes ( :rotated , from : false , to : true ) do
216
- message = encryptor . decrypt_and_verify ( older_message )
217
-
218
- assert_equal ( { encoded : "message" } , message )
219
- end
220
- end
221
-
222
- def test_on_rotation_option_takes_precedence_over_the_one_given_in_constructor
223
- older_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :older ] , "older sign" ) . encrypt_and_sign ( { encoded : "message" } )
224
-
225
- rotated = rotated = false # double assigning to suppress "assigned but unused variable" warning
226
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret , on_rotation : proc { rotated = true } )
227
- encryptor . rotate secrets [ :older ] , "older sign"
228
-
229
- assert_changes ( :rotated , from : false , to : "Yes" ) do
230
- message = encryptor . decrypt_and_verify ( older_message , on_rotation : proc { rotated = "Yes" } )
231
-
232
- assert_equal ( { encoded : "message" } , message )
233
- end
234
- end
235
-
236
- def test_with_rotated_metadata
237
- old_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :old ] , cipher : "aes-256-gcm" ) .
238
- encrypt_and_sign ( "metadata" , purpose : :rotation )
239
-
240
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret , cipher : "aes-256-gcm" )
241
- encryptor . rotate secrets [ :old ]
242
-
243
- assert_equal "metadata" , encryptor . decrypt_and_verify ( old_message , purpose : :rotation )
244
- end
245
152
246
153
private
247
154
def assert_aead_not_decrypted ( encryptor , value )
@@ -341,48 +248,6 @@ def test_backwards_compatibility_decrypt_previously_encrypted_messages_without_m
341
248
342
249
assert_equal "Ruby on Rails" , encryptor . decrypt_and_verify ( encrypted_message )
343
250
end
344
-
345
- def test_on_rotation_is_called_and_returns_modified_messages
346
- older_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :older ] , "older sign" ) . encrypt_and_sign ( { encoded : "message" } )
347
-
348
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret )
349
- encryptor . rotate secrets [ :old ]
350
- encryptor . rotate secrets [ :older ] , "older sign"
351
-
352
- rotated = false
353
- message = encryptor . decrypt_and_verify ( older_message , on_rotation : proc { rotated = true } )
354
-
355
- assert_equal ( { "encoded" => "message" } , message )
356
- assert rotated
357
- end
358
-
359
- def test_on_rotation_can_be_passed_at_the_constructor_level
360
- older_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :older ] , "older sign" ) . encrypt_and_sign ( { encoded : "message" } )
361
-
362
- rotated = rotated = false # double assigning to suppress "assigned but unused variable" warning
363
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret , on_rotation : proc { rotated = true } )
364
- encryptor . rotate secrets [ :older ] , "older sign"
365
-
366
- assert_changes ( :rotated , from : false , to : true ) do
367
- message = encryptor . decrypt_and_verify ( older_message )
368
-
369
- assert_equal ( { "encoded" => "message" } , message )
370
- end
371
- end
372
-
373
- def test_on_rotation_option_takes_precedence_over_the_one_given_in_constructor
374
- older_message = ActiveSupport ::MessageEncryptor . new ( secrets [ :older ] , "older sign" ) . encrypt_and_sign ( { encoded : "message" } )
375
-
376
- rotated = rotated = false # double assigning to suppress "assigned but unused variable" warning
377
- encryptor = ActiveSupport ::MessageEncryptor . new ( @secret , on_rotation : proc { rotated = true } )
378
- encryptor . rotate secrets [ :older ] , "older sign"
379
-
380
- assert_changes ( :rotated , from : false , to : "Yes" ) do
381
- message = encryptor . decrypt_and_verify ( older_message , on_rotation : proc { rotated = "Yes" } )
382
-
383
- assert_equal ( { "encoded" => "message" } , message )
384
- end
385
- end
386
251
end
387
252
388
253
class MessageEncryptorWithHybridSerializerAndWithoutMarshalDumpTest < MessageEncryptorWithJsonSerializerTest
0 commit comments