Skip to content

Commit 3af7795

Browse files
Merge branch 'master' of github.com:aws/aws-encryption-sdk-python into a2b1c1-example
2 parents baf1164 + 1de8d5c commit 3af7795

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

test/unit/test_providers_kms_master_key_provider.py

+24-9
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# language governing permissions and limitations under the License.
1313
"""Unit test suite from aws_encryption_sdk.key_providers.kms.KMSMasterKeyProvider"""
1414
import botocore.client
15+
import botocore.session
1516
import pytest
1617
from mock import ANY, MagicMock, call, patch, sentinel
1718

@@ -22,6 +23,19 @@
2223
pytestmark = [pytest.mark.unit, pytest.mark.local]
2324

2425

26+
@pytest.fixture(autouse=True, params=[True, False], ids=["default region", "no default region"])
27+
def patch_default_region(request, monkeypatch):
28+
"""Run all tests in this module both with a default region set and no default region set.
29+
30+
This ensures that we do not regress on default region handling.
31+
https://github.com/aws/aws-encryption-sdk-python/issues/31
32+
"""
33+
if request.param:
34+
monkeypatch.setenv("AWS_DEFAULT_REGION", "us-west-2")
35+
else:
36+
monkeypatch.delenv("AWS_DEFAULT_REGION", raising=False)
37+
38+
2539
def test_init_with_regionless_key_ids_and_region_names():
2640
key_ids = ("alias/key_1",)
2741
region_names = ("test-region-1",)
@@ -32,6 +46,7 @@ def test_init_with_regionless_key_ids_and_region_names():
3246
class TestKMSMasterKeyProvider(object):
3347
@pytest.fixture(autouse=True)
3448
def apply_fixtures(self):
49+
self.botocore_no_region_session = botocore.session.Session(session_vars={"region": (None, None, None, None)})
3550
self.mock_botocore_session_patcher = patch("aws_encryption_sdk.key_providers.kms.botocore.session.Session")
3651
self.mock_botocore_session = self.mock_botocore_session_patcher.start()
3752
self.mock_boto3_session_patcher = patch("aws_encryption_sdk.key_providers.kms.boto3.session.Session")
@@ -69,19 +84,19 @@ def test_init_with_region_names(self, mock_add_clients):
6984

7085
@patch("aws_encryption_sdk.key_providers.kms.KMSMasterKeyProvider.add_regional_client")
7186
def test_init_with_default_region_found(self, mock_add_regional_client):
72-
test = KMSMasterKeyProvider()
87+
test = KMSMasterKeyProvider(botocore_session=self.botocore_no_region_session)
7388
assert test.default_region is None
7489
with patch.object(
7590
test.config.botocore_session, "get_config_variable", return_value=sentinel.default_region
7691
) as mock_get_config:
7792
test._process_config()
7893
mock_get_config.assert_called_once_with("region")
7994
assert test.default_region is sentinel.default_region
80-
mock_add_regional_client.assert_called_once_with(sentinel.default_region)
95+
mock_add_regional_client.assert_called_with(sentinel.default_region)
8196

8297
@patch("aws_encryption_sdk.key_providers.kms.KMSMasterKeyProvider.add_regional_client")
8398
def test_init_with_default_region_not_found(self, mock_add_regional_client):
84-
test = KMSMasterKeyProvider()
99+
test = KMSMasterKeyProvider(botocore_session=self.botocore_no_region_session)
85100
assert test.default_region is None
86101
with patch.object(test.config.botocore_session, "get_config_variable", return_value=None) as mock_get_config:
87102
test._process_config()
@@ -93,12 +108,12 @@ def test_add_regional_client_new(self):
93108
test = KMSMasterKeyProvider()
94109
test._regional_clients = {}
95110
test.add_regional_client("ex_region_name")
96-
self.mock_boto3_session.assert_called_once_with(region_name="ex_region_name", botocore_session=ANY)
97-
self.mock_boto3_session_instance.client.assert_called_once_with("kms", config=test._user_agent_adding_config)
111+
self.mock_boto3_session.assert_called_with(region_name="ex_region_name", botocore_session=ANY)
112+
self.mock_boto3_session_instance.client.assert_called_with("kms", config=test._user_agent_adding_config)
98113
assert test._regional_clients["ex_region_name"] is self.mock_boto3_client_instance
99114

100115
def test_add_regional_client_exists(self):
101-
test = KMSMasterKeyProvider()
116+
test = KMSMasterKeyProvider(botocore_session=self.botocore_no_region_session)
102117
test._regional_clients["ex_region_name"] = sentinel.existing_client
103118
test.add_regional_client("ex_region_name")
104119
assert not self.mock_boto3_session.called
@@ -114,7 +129,7 @@ def test_client_valid_region_name(self, mock_add_client):
114129
test = KMSMasterKeyProvider()
115130
test._regional_clients["us-east-1"] = self.mock_boto3_client_instance
116131
client = test._client("arn:aws:kms:us-east-1:222222222222:key/aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb")
117-
mock_add_client.assert_called_once_with("us-east-1")
132+
mock_add_client.assert_called_with("us-east-1")
118133
assert client is self.mock_boto3_client_instance
119134

120135
@patch("aws_encryption_sdk.key_providers.kms.KMSMasterKeyProvider.add_regional_client")
@@ -124,10 +139,10 @@ def test_client_no_region_name_with_default(self, mock_add_client):
124139
test._regional_clients[sentinel.default_region] = sentinel.default_client
125140
client = test._client("")
126141
assert client is sentinel.default_client
127-
mock_add_client.assert_called_once_with(sentinel.default_region)
142+
mock_add_client.assert_called_with(sentinel.default_region)
128143

129144
def test_client_no_region_name_without_default(self):
130-
test = KMSMasterKeyProvider()
145+
test = KMSMasterKeyProvider(botocore_session=self.botocore_no_region_session)
131146
with pytest.raises(UnknownRegionError) as excinfo:
132147
test._client("")
133148
excinfo.match("No default region found and no region determinable from key id: *")

0 commit comments

Comments
 (0)