|
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 | """Unit test suite for aws_encryption_sdk.key_providers.kms.KMSMasterKey"""
|
14 |
| -import unittest |
15 |
| - |
16 | 14 | import botocore.client
|
17 | 15 | import pytest
|
18 |
| -import six |
19 | 16 | from botocore.exceptions import ClientError
|
20 | 17 | from mock import MagicMock, patch, sentinel
|
21 | 18 |
|
|
30 | 27 | pytestmark = [pytest.mark.unit, pytest.mark.local]
|
31 | 28 |
|
32 | 29 |
|
33 |
| -class TestKMSMasterKey(unittest.TestCase): |
34 |
| - def setUp(self): |
| 30 | +class TestKMSMasterKey(object): |
| 31 | + @pytest.fixture(autouse=True) |
| 32 | + def apply_fixture(self): |
35 | 33 | self.mock_client = MagicMock()
|
36 | 34 | self.mock_client.__class__ = botocore.client.BaseClient
|
37 | 35 | self.mock_client.generate_data_key.return_value = {
|
@@ -59,13 +57,13 @@ def setUp(self):
|
59 | 57 | key_id=VALUES["arn"], client=self.mock_client, grant_tokens=self.mock_grant_tokens
|
60 | 58 | )
|
61 | 59 | self.mock_kms_mkc_3 = KMSMasterKeyConfig(key_id="ex_key_info", client=self.mock_client)
|
| 60 | + yield |
| 61 | + # Run tearDown |
| 62 | + self.mock_data_key_len_check_patcher.stop() |
62 | 63 |
|
63 | 64 | def test_parent(self):
|
64 | 65 | assert issubclass(KMSMasterKey, MasterKey)
|
65 | 66 |
|
66 |
| - def tearDown(self): |
67 |
| - self.mock_data_key_len_check_patcher.stop() |
68 |
| - |
69 | 67 | def test_config_bare(self):
|
70 | 68 | test = KMSMasterKeyConfig(key_id=VALUES["arn"], client=self.mock_client)
|
71 | 69 | assert test.client is self.mock_client
|
@@ -111,14 +109,16 @@ def test_generate_data_key_with_grant_tokens(self):
|
111 | 109 | def test_generate_data_key_unsuccessful_clienterror(self):
|
112 | 110 | self.mock_client.generate_data_key.side_effect = ClientError({"Error": {}}, "This is an error!")
|
113 | 111 | test = KMSMasterKey(config=self.mock_kms_mkc_3)
|
114 |
| - with six.assertRaisesRegex(self, GenerateKeyError, "Master Key .* unable to generate data key"): |
| 112 | + with pytest.raises(GenerateKeyError) as excinfo: |
115 | 113 | test._generate_data_key(self.mock_algorithm)
|
| 114 | + excinfo.match("Master Key .* unable to generate data key") |
116 | 115 |
|
117 | 116 | def test_generate_data_key_unsuccessful_keyerror(self):
|
118 | 117 | self.mock_client.generate_data_key.side_effect = KeyError
|
119 | 118 | test = KMSMasterKey(config=self.mock_kms_mkc_3)
|
120 |
| - with six.assertRaisesRegex(self, GenerateKeyError, "Master Key .* unable to generate data key"): |
| 119 | + with pytest.raises(GenerateKeyError) as excinfo: |
121 | 120 | test._generate_data_key(self.mock_algorithm)
|
| 121 | + excinfo.match("Master Key .* unable to generate data key") |
122 | 122 |
|
123 | 123 | def test_encrypt_data_key(self):
|
124 | 124 | test = KMSMasterKey(config=self.mock_kms_mkc_3)
|
@@ -146,14 +146,16 @@ def test_encrypt_data_key_with_grant_tokens(self):
|
146 | 146 | def test_encrypt_data_key_unsuccessful_clienterror(self):
|
147 | 147 | self.mock_client.encrypt.side_effect = ClientError({"Error": {}}, "This is an error!")
|
148 | 148 | test = KMSMasterKey(config=self.mock_kms_mkc_3)
|
149 |
| - with six.assertRaisesRegex(self, EncryptKeyError, "Master Key .* unable to encrypt data key"): |
| 149 | + with pytest.raises(EncryptKeyError) as excinfo: |
150 | 150 | test._encrypt_data_key(self.mock_data_key, self.mock_algorithm)
|
| 151 | + excinfo.match("Master Key .* unable to encrypt data key") |
151 | 152 |
|
152 | 153 | def test_encrypt_data_key_unsuccessful_keyerror(self):
|
153 | 154 | self.mock_client.encrypt.side_effect = KeyError
|
154 | 155 | test = KMSMasterKey(config=self.mock_kms_mkc_3)
|
155 |
| - with six.assertRaisesRegex(self, EncryptKeyError, "Master Key .* unable to encrypt data key"): |
| 156 | + with pytest.raises(EncryptKeyError) as excinfo: |
156 | 157 | test._encrypt_data_key(self.mock_data_key, self.mock_algorithm)
|
| 158 | + excinfo.match("Master Key .* unable to encrypt data key") |
157 | 159 |
|
158 | 160 | def test_decrypt_data_key(self):
|
159 | 161 | test = KMSMasterKey(config=self.mock_kms_mkc_1)
|
@@ -186,11 +188,13 @@ def test_decrypt_data_key_with_grant_tokens(self):
|
186 | 188 | def test_decrypt_data_key_unsuccessful_clienterror(self):
|
187 | 189 | self.mock_client.decrypt.side_effect = ClientError({"Error": {}}, "This is an error!")
|
188 | 190 | test = KMSMasterKey(config=self.mock_kms_mkc_3)
|
189 |
| - with six.assertRaisesRegex(self, DecryptKeyError, "Master Key .* unable to decrypt data key"): |
| 191 | + with pytest.raises(DecryptKeyError) as excinfo: |
190 | 192 | test._decrypt_data_key(encrypted_data_key=self.mock_encrypted_data_key, algorithm=sentinel.algorithm)
|
| 193 | + excinfo.match("Master Key .* unable to decrypt data key") |
191 | 194 |
|
192 | 195 | def test_decrypt_data_key_unsuccessful_keyerror(self):
|
193 | 196 | self.mock_client.decrypt.side_effect = KeyError
|
194 | 197 | test = KMSMasterKey(config=self.mock_kms_mkc_3)
|
195 |
| - with six.assertRaisesRegex(self, DecryptKeyError, "Master Key .* unable to decrypt data key"): |
| 198 | + with pytest.raises(DecryptKeyError) as excinfo: |
196 | 199 | test._decrypt_data_key(encrypted_data_key=self.mock_encrypted_data_key, algorithm=sentinel.algorithm)
|
| 200 | + excinfo.match("Master Key .* unable to decrypt data key") |
0 commit comments