11
11
# ANY KIND, either express or implied. See the License for the specific
12
12
# language governing permissions and limitations under the License.
13
13
"""Test suite for aws_encryption_sdk.key_providers.base.MasterKeyProvider"""
14
- import unittest
15
-
16
14
import attr
17
15
import pytest
18
- import six
19
16
from mock import MagicMock , PropertyMock , call , patch , sentinel
20
17
21
18
from aws_encryption_sdk .exceptions import (
@@ -63,21 +60,23 @@ def test_repr():
63
60
)
64
61
65
62
66
- class TestBaseMasterKeyProvider (unittest . TestCase ):
63
+ class TestBaseMasterKeyProvider (object ):
67
64
def test_provider_id_enforcement (self ):
68
65
class TestProvider (MasterKeyProvider ):
69
66
def _new_master_key (self , key_id ):
70
67
pass
71
68
72
- with six . assertRaisesRegex ( self , TypeError , "Can't instantiate abstract class TestProvider *" ) :
69
+ with pytest . raises ( TypeError ) as excinfo :
73
70
TestProvider ()
71
+ excinfo .match ("Can't instantiate abstract class TestProvider *" )
74
72
75
73
def test_new_master_key_enforcement (self ):
76
74
class TestProvider (MasterKeyProvider ):
77
75
provider_id = None
78
76
79
- with six . assertRaisesRegex ( self , TypeError , "Can't instantiate abstract class TestProvider *" ) :
77
+ with pytest . raises ( TypeError ) as excinfo :
80
78
TestProvider ()
79
+ excinfo .match ("Can't instantiate abstract class TestProvider *" )
81
80
82
81
def test_master_keys_for_encryption (self ):
83
82
mock_master_key_a = MagicMock ()
@@ -124,12 +123,13 @@ def test_master_keys_for_encryption_no_master_keys(self):
124
123
mock_master_key_provider = MockMasterKeyProvider (
125
124
provider_id = sentinel .provider_id , mock_new_master_key = sentinel .new_master_key
126
125
)
127
- with six . assertRaisesRegex ( self , MasterKeyProviderError , "No Master Keys available from Master Key Provider" ) :
126
+ with pytest . raises ( MasterKeyProviderError ) as excinfo :
128
127
mock_master_key_provider .master_keys_for_encryption (
129
128
encryption_context = sentinel .encryption_context ,
130
129
plaintext_rostream = sentinel .plaintext_rostream ,
131
130
plaintext_length = sentinel .plaintext_length ,
132
131
)
132
+ excinfo .match ("No Master Keys available from Master Key Provider" )
133
133
134
134
def test_add_master_keys_from_list (self ):
135
135
mock_master_key_provider = MockMasterKeyProvider (
@@ -305,12 +305,13 @@ def test_decrypt_data_key_unsuccessful_no_matching_members(self):
305
305
provider_id = sentinel .provider_id , mock_new_master_key = mock_master_key
306
306
)
307
307
mock_master_key_provider ._members = [mock_member ]
308
- with six . assertRaisesRegex ( self , DecryptKeyError , "Unable to decrypt data key" ) :
308
+ with pytest . raises ( DecryptKeyError ) as excinfo :
309
309
mock_master_key_provider .decrypt_data_key (
310
310
encrypted_data_key = mock_encrypted_data_key ,
311
311
algorithm = sentinel .algorithm ,
312
312
encryption_context = sentinel .encryption_context ,
313
313
)
314
+ excinfo .match ("Unable to decrypt data key" )
314
315
315
316
def test_decrypt_data_key_unsuccessful_matching_provider_invalid_key_id (self ):
316
317
mock_encrypted_data_key = MagicMock ()
@@ -323,12 +324,13 @@ def test_decrypt_data_key_unsuccessful_matching_provider_invalid_key_id(self):
323
324
with patch .object (
324
325
mock_master_key_provider , "master_key_for_decrypt" , new_callable = PropertyMock , side_effect = InvalidKeyIdError
325
326
) as mock_master_key :
326
- with six . assertRaisesRegex ( self , DecryptKeyError , "Unable to decrypt data key" ) :
327
+ with pytest . raises ( DecryptKeyError ) as excinfo :
327
328
mock_master_key_provider .decrypt_data_key (
328
329
encrypted_data_key = mock_encrypted_data_key ,
329
330
algorithm = sentinel .algorithm ,
330
331
encryption_context = sentinel .encryption_context ,
331
332
)
333
+ excinfo .match ("Unable to decrypt data key" )
332
334
mock_master_key .assert_called_once_with (sentinel .key_info )
333
335
334
336
def test_decrypt_data_key_unsuccessful_no_matching_members_no_vend (self ):
@@ -340,12 +342,13 @@ def test_decrypt_data_key_unsuccessful_no_matching_members_no_vend(self):
340
342
mock_master_key_provider = MockMasterKeyProviderNoVendOnDecrypt (provider_id = sentinel .provider_id )
341
343
mock_master_key_provider ._members = [mock_member ]
342
344
mock_master_key_provider .master_key_for_decrypt = MagicMock ()
343
- with six . assertRaisesRegex ( self , DecryptKeyError , "Unable to decrypt data key" ) :
345
+ with pytest . raises ( DecryptKeyError ) as excinfo :
344
346
mock_master_key_provider .decrypt_data_key (
345
347
encrypted_data_key = mock_encrypted_data_key ,
346
348
algorithm = sentinel .algorithm ,
347
349
encryption_context = sentinel .encryption_context ,
348
350
)
351
+ excinfo .match ("Unable to decrypt data key" )
349
352
assert not mock_master_key_provider .master_key_for_decrypt .called
350
353
351
354
def test_decrypt_data_key_unsuccessful_invalid_key_info (self ):
@@ -359,12 +362,13 @@ def test_decrypt_data_key_unsuccessful_invalid_key_info(self):
359
362
provider_id = sentinel .provider_id_2 , mock_new_master_key = sentinel .new_master_key
360
363
)
361
364
mock_master_key_provider ._members = [mock_member ]
362
- with six . assertRaisesRegex ( self , DecryptKeyError , "Unable to decrypt data key" ) :
365
+ with pytest . raises ( DecryptKeyError ) as excinfo :
363
366
mock_master_key_provider .decrypt_data_key (
364
367
encrypted_data_key = mock_encrypted_data_key ,
365
368
algorithm = sentinel .algorithm ,
366
369
encryption_context = sentinel .encryption_context ,
367
370
)
371
+ excinfo .match ("Unable to decrypt data key" )
368
372
369
373
def test_decrypt_data_key_unsuccessful_incorrect_master_key (self ):
370
374
mock_member = MagicMock ()
@@ -379,12 +383,13 @@ def test_decrypt_data_key_unsuccessful_incorrect_master_key(self):
379
383
provider_id = sentinel .provider_id_2 , mock_new_master_key = sentinel .new_master_key
380
384
)
381
385
mock_master_key_provider ._members = [mock_member ]
382
- with six . assertRaisesRegex ( self , DecryptKeyError , "Unable to decrypt data key" ) :
386
+ with pytest . raises ( DecryptKeyError ) as excinfo :
383
387
mock_master_key_provider .decrypt_data_key (
384
388
encrypted_data_key = mock_encrypted_data_key ,
385
389
algorithm = sentinel .algorithm ,
386
390
encryption_context = sentinel .encryption_context ,
387
391
)
392
+ excinfo .match ("Unable to decrypt data key" )
388
393
389
394
def test_decrypt_data_key_unsuccessful_master_key_decryt_error (self ):
390
395
mock_member = MagicMock ()
@@ -401,24 +406,26 @@ def test_decrypt_data_key_unsuccessful_master_key_decryt_error(self):
401
406
provider_id = sentinel .provider_id , mock_new_master_key = mock_master_key
402
407
)
403
408
mock_master_key_provider ._members = [mock_member ]
404
- with six . assertRaisesRegex ( self , DecryptKeyError , "Unable to decrypt data key" ) :
409
+ with pytest . raises ( DecryptKeyError ) as excinfo :
405
410
mock_master_key_provider .decrypt_data_key (
406
411
encrypted_data_key = mock_encrypted_data_key ,
407
412
algorithm = sentinel .algorithm ,
408
413
encryption_context = sentinel .encryption_context ,
409
414
)
415
+ excinfo .match ("Unable to decrypt data key" )
410
416
411
417
def test_decrypt_data_key_unsuccessful_no_members (self ):
412
418
mock_master_key_provider = MockMasterKeyProvider (
413
419
provider_id = sentinel .provider_id , mock_new_master_key = sentinel .new_master_key
414
420
)
415
421
mock_master_key_provider ._members = []
416
- with six . assertRaisesRegex ( self , DecryptKeyError , "Unable to decrypt data key" ) :
422
+ with pytest . raises ( DecryptKeyError ) as excinfo :
417
423
mock_master_key_provider .decrypt_data_key (
418
424
encrypted_data_key = MagicMock (),
419
425
algorithm = sentinel .algorithm ,
420
426
encryption_context = sentinel .encryption_context ,
421
427
)
428
+ excinfo .match ("Unable to decrypt data key" )
422
429
423
430
def test_decrypt_data_key_from_list_first_try (self ):
424
431
mock_decrypt_data_key = MagicMock ()
@@ -463,9 +470,10 @@ def test_decrypt_data_key_from_list_unsuccessful(self):
463
470
)
464
471
mock_master_key_provider .decrypt_data_key = MagicMock ()
465
472
mock_master_key_provider .decrypt_data_key .side_effect = (DecryptKeyError , DecryptKeyError )
466
- with six . assertRaisesRegex ( self , DecryptKeyError , "Unable to decrypt any data key" ) :
473
+ with pytest . raises ( DecryptKeyError ) as excinfo :
467
474
mock_master_key_provider .decrypt_data_key_from_list (
468
475
encrypted_data_keys = [sentinel .encrypted_data_key_a , sentinel .encrypted_data_key_b ],
469
476
algorithm = sentinel .algorithm ,
470
477
encryption_context = sentinel .encryption_context ,
471
478
)
479
+ excinfo .match ("Unable to decrypt any data key" )
0 commit comments