Skip to content

Fixed KMS master key provider tests when default AWS region is configured #179

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Aug 2, 2019
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 20 additions & 6 deletions test/unit/test_providers_kms_master_key_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,17 +70,20 @@ def test_init_with_region_names(self, mock_add_clients):
@patch("aws_encryption_sdk.key_providers.kms.KMSMasterKeyProvider.add_regional_client")
def test_init_with_default_region_found(self, mock_add_regional_client):
test = KMSMasterKeyProvider()
assert test.default_region is None
if not default_region_is_set():
assert test.default_region is None
with patch.object(
test.config.botocore_session, "get_config_variable", return_value=sentinel.default_region
) as mock_get_config:
test._process_config()
mock_get_config.assert_called_once_with("region")
assert test.default_region is sentinel.default_region
mock_add_regional_client.assert_called_once_with(sentinel.default_region)
mock_add_regional_client.assert_called_with(sentinel.default_region)

@patch("aws_encryption_sdk.key_providers.kms.KMSMasterKeyProvider.add_regional_client")
def test_init_with_default_region_not_found(self, mock_add_regional_client):
if default_region_is_set():
pytest.skip("User has configured a default region")
test = KMSMasterKeyProvider()
assert test.default_region is None
with patch.object(test.config.botocore_session, "get_config_variable", return_value=None) as mock_get_config:
Expand All @@ -93,11 +96,13 @@ def test_add_regional_client_new(self):
test = KMSMasterKeyProvider()
test._regional_clients = {}
test.add_regional_client("ex_region_name")
self.mock_boto3_session.assert_called_once_with(region_name="ex_region_name", botocore_session=ANY)
self.mock_boto3_session_instance.client.assert_called_once_with("kms", config=test._user_agent_adding_config)
self.mock_boto3_session.assert_called_with(region_name="ex_region_name", botocore_session=ANY)
self.mock_boto3_session_instance.client.assert_called_with("kms", config=test._user_agent_adding_config)
assert test._regional_clients["ex_region_name"] is self.mock_boto3_client_instance

def test_add_regional_client_exists(self):
if default_region_is_set():
pytest.skip("User has configured a default region")
test = KMSMasterKeyProvider()
test._regional_clients["ex_region_name"] = sentinel.existing_client
test.add_regional_client("ex_region_name")
Expand All @@ -114,7 +119,7 @@ def test_client_valid_region_name(self, mock_add_client):
test = KMSMasterKeyProvider()
test._regional_clients["us-east-1"] = self.mock_boto3_client_instance
client = test._client("arn:aws:kms:us-east-1:222222222222:key/aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb")
mock_add_client.assert_called_once_with("us-east-1")
mock_add_client.assert_called_with("us-east-1")
assert client is self.mock_boto3_client_instance

@patch("aws_encryption_sdk.key_providers.kms.KMSMasterKeyProvider.add_regional_client")
Expand All @@ -124,9 +129,11 @@ def test_client_no_region_name_with_default(self, mock_add_client):
test._regional_clients[sentinel.default_region] = sentinel.default_client
client = test._client("")
assert client is sentinel.default_client
mock_add_client.assert_called_once_with(sentinel.default_region)
mock_add_client.assert_called_with(sentinel.default_region)

def test_client_no_region_name_without_default(self):
if default_region_is_set():
pytest.skip("User has configured a default region")
test = KMSMasterKeyProvider()
with pytest.raises(UnknownRegionError) as excinfo:
test._client("")
Expand All @@ -141,3 +148,10 @@ def test_new_master_key(self, mock_client):
key = test._new_master_key(key_info)
check_key = KMSMasterKey(key_id=key_info, client=self.mock_boto3_client_instance)
assert key != check_key


def default_region_is_set():
"""Returns whether a user has their default AWS region set. This is useful for
testing logic around setting the region; there are some assertions which assume
the region starts out as `None`."""
return KMSMasterKeyProvider().default_region is not None