def test_client_error_reraised(self, monkeypatch): mock_session = mock.Mock() mock_session.client.return_value.get_secret_value.side_effect = ClientError({"Error": {}}, "operation") mock_session.client.return_value.describe_instances.return_value = { "Reservations": [{"Instances": [{"Tags": []}]}], } monkeypatch.setattr(aws.boto3.session, "Session", mock.Mock(return_value=mock_session)) monkeypatch.setattr(aws, "ec2_metadata", mock.Mock(region="us-east-2")) with pytest.raises(ClientError): aws.fetch_to_env()
def test_tag_data_fetched(self, monkeypatch): mock_session = mock.Mock() mock_session.client.return_value.get_secret_value.return_value = {"SecretString": "{}"} mock_session.client.return_value.describe_instances.return_value = { "Reservations": [{"Instances": [{"Tags": []}]}], } monkeypatch.setattr(aws.boto3.session, "Session", mock.Mock(return_value=mock_session)) monkeypatch.setattr(aws, "ec2_metadata", mock.Mock(region="us-east-2", instance_id="instance-id")) aws.fetch_to_env() assert mock_session.client.return_value.describe_instances.call_args == mock.call(InstanceIds=["instance-id"])
def test_settings_added_to_environ(self, monkeypatch): mock_session = mock.Mock() mock_session.client.return_value.get_secret_value.return_value = { "SecretString": '{"a": True, "b": 10, "c": "str"}', } mock_session.client.return_value.describe_instances.return_value = { "Reservations": [{"Instances": [{"Tags": []}]}], } monkeypatch.setattr(aws.boto3.session, "Session", mock.Mock(return_value=mock_session)) monkeypatch.setattr(aws, "ec2_metadata", mock.Mock(region="us-east-2")) monkeypatch.setattr(aws.os.environ, "update", mock.Mock()) aws.fetch_to_env() assert aws.os.environ.update.call_args == mock.call( {"a": "True", "b": "10", "c": "str"}, )
def test_tag_data_overrides_secrets(self, monkeypatch): mock_session = mock.Mock() mock_session.client.return_value.get_secret_value.return_value = { "SecretString": '{"a": True, "b": 10, "c": "str", "HOST": "secret"}', } mock_session.client.return_value.describe_instances.return_value = { "Reservations": [{"Instances": [{"Tags": [{"Key": "HOST", "Value": "tag"}]}]}], } monkeypatch.setattr(aws.boto3.session, "Session", mock.Mock(return_value=mock_session)) monkeypatch.setattr(aws, "ec2_metadata", mock.Mock(region="us-east-2")) monkeypatch.setattr(aws.os, "environ", {}) aws.fetch_to_env() assert aws.os.environ == { "a": "True", "b": "10", "c": "str", "HOST": "tag", }
def test_ec2_metadata_region_used(self, monkeypatch): mock_session = mock.Mock() mock_session.client.return_value.get_secret_value.return_value = {"SecretString": "{}"} mock_session.client.return_value.describe_instances.return_value = { "Reservations": [{"Instances": [{"Tags": []}]}], } monkeypatch.setattr(aws.boto3.session, "Session", mock.Mock(return_value=mock_session)) monkeypatch.setattr(aws, "ec2_metadata", mock.Mock(region="us-east-2")) aws.fetch_to_env() assert mock_session.client.call_args_list == [ mock.call( service_name="ec2", region_name="us-east-2", ), mock.call( service_name="secretsmanager", region_name="us-east-2", ), ]