Пример #1
0
    def test_resolve_parameter_values_returns_list_with_string_value(self):
        stack_config = Mock()
        stack_config.parameters = {'foo': "baa"}

        result = ParameterResolver().resolve_parameter_values(
            'foo', stack_config)
        self.assertEqual({'foo': 'baa'}, result)
Пример #2
0
 def test_resolve_parameter_values_returns_str_representation_of_float(
         self):
     stack_config = Mock()
     stack_config.parameters = {'foo': 5.555}
     result = ParameterResolver().resolve_parameter_values(
         'foo', stack_config)
     self.assertEqual({'foo': '5.555'}, result)
Пример #3
0
    def test_resolve_parameter_values_raises_exception_on_none_value(self):
        stack_config = Mock()
        stack_config.parameters = {'foo': None}

        with self.assertRaises(CfnSphereException):
            ParameterResolver(self.cfn_mock).resolve_parameter_values(
                'foo', stack_config)
Пример #4
0
 def __init__(self, config, dry_run=False):
     self.logger = get_logger(root=True)
     self.config = config
     self.cfn = CloudFormation(region=self.config.region, dry_run=dry_run)
     self.parameter_resolver = ParameterResolver(self.cfn,
                                                 region=self.config.region)
     self.cli_parameters = config.cli_params
Пример #5
0
    def test_handle_kms_value_ignores_encryption_context_if_not_set(self):
        self.kms_mock.return_value.decrypt.return_value = "decryptedValue"
        result = ParameterResolver().handle_kms_value('|kms|encryptedValue')

        self.kms_mock.return_value.decrypt.assert_called_once_with(
            'encryptedValue')
        self.assertEqual(result, 'decryptedValue')
Пример #6
0
    def test_resolve_parameter_values_calls_convert_list_to_string_on_list_value(
            self, convert_list_to_string_mock):
        stack_config = Mock()
        stack_config.parameters = {'foo': ['a', 'b']}

        ParameterResolver().resolve_parameter_values('foo', stack_config)
        convert_list_to_string_mock.assert_called_once_with(['a', 'b'])
Пример #7
0
 def test_get_latest_value_raises_exception_on_error(self):
     self.cfn_mock.get_stack_parameters_dict = MagicMock(
         side_effect=Exception("foo"))
     resolver = ParameterResolver(self.cfn_mock)
     with self.assertRaises(CfnSphereException):
         resolver.get_latest_value('my-key', '|keepOrUse|default-value',
                                   'my-stack')
Пример #8
0
    def test_resolve_parameter_values_returns_str_representation_of_false(
            self):
        stack_config = Mock()
        stack_config.parameters = {'foo': False}

        result = ParameterResolver(self.cfn_mock).resolve_parameter_values(
            'foo', stack_config)
        self.assertEqual({'foo': 'false'}, result)
    def test_get_latest_value_returns_stacks_actual_value(self, kms,  ec2_api, cfn_mock):
        cfn_mock.return_value.get_stack_parameters_dict.return_value = {'my-key': 'my-actual-value'}

        pr = ParameterResolver()
        result = pr.get_latest_value('my-key', '|keepOrUse|default-value', 'my-stack')

        cfn_mock.return_value.get_stack_parameters_dict.assert_called_once_with('my-stack')
        self.assertEqual('my-actual-value', result)
Пример #10
0
    def test_resolve_parameter_values_returns_decrypted_value(self):
        self.kms_mock.return_value.decrypt.return_value = "decryptedValue"

        stack_config = Mock()
        stack_config.parameters = {'foo': '|kms|encryptedValue'}

        result = ParameterResolver().resolve_parameter_values('foo', stack_config)
        self.assertEqual(result, {'foo': 'decryptedValue'})
Пример #11
0
def test_resolve_value_from_file(self, get_file_mock):
    get_file_mock.return_value = "line1\nline2"

    stack_config = Mock()
    stack_config.parameters = {'foo': "|file|abc.txt"}

    result = ParameterResolver().resolve_parameter_values('foo', stack_config)
    self.assertEqual({'foo': 'line1\nline2'}, result)
Пример #12
0
    def test_get_latest_value_returns_default_value_called_once_with_stack(self):
        self.cfn_mock.return_value.get_stack_parameters_dict.return_value = {'not-my-key': 'my-actual-value'}

        pr = ParameterResolver()
        result = pr.get_latest_value('my-key', '|keepOrUse|default-value', 'my-stack')

        self.cfn_mock.return_value.get_stack_parameters_dict.assert_called_once_with('my-stack')
        self.assertEqual('default-value', result)
Пример #13
0
def test_update_parameters_with_cli_parameters_does_not_affect_other_stacks(
        self):
    result = ParameterResolver().update_parameters_with_cli_parameters(
        parameters={'foo': "foo"},
        cli_parameters={'stack1': {
            'foo': 'foobar'
        }},
        stack_name='stack2')
    self.assertEqual({'foo': 'foo'}, result)
Пример #14
0
 def test_update_parameters_with_cli_parameters_with_string_param_value(
         self):
     result = ParameterResolver().update_parameters_with_cli_parameters(
         parameters={'foo': "foo"},
         cli_parameters={'stack1': {
             'foo': 'foobar'
         }},
         stack_name='stack1')
     self.assertEqual({'foo': 'foobar'}, result)
Пример #15
0
 def test_update_parameters_with_cli_parameters_adds_new_cli_parameter(
         self):
     result = ParameterResolver().update_parameters_with_cli_parameters(
         parameters={'foo': 'foo'},
         cli_parameters={'stack1': {
             'moppel': 'foo'
         }},
         stack_name='stack1')
     self.assertDictEqual({'foo': 'foo', 'moppel': 'foo'}, result)
Пример #16
0
    def test_resolve_parameters_with_cli_parameters_(self):
        cli_parameters = {'stack1': {'foo': 'foobar'}, 'stack2': {'foo': 'foofoo'}}

        stack_config = Mock()
        stack_config.parameters = {'foo': "bar"}

        result = ParameterResolver().resolve_parameter_values("stack1", stack_config, cli_parameters)

        self.assertEqual({'foo': 'foobar'}, result)
Пример #17
0
    def test_resolve_parameter_values_returns_ssm_value(self):
        self.ssm_mock.return_value.get_parameter.return_value = "decryptedValue"

        stack_config = Mock()
        stack_config.parameters = {'foo': '|ssm|/path/to/my/key'}

        result = ParameterResolver().resolve_parameter_values(
            'foo', stack_config)
        self.assertEqual(result, {'foo': 'decryptedValue'})
Пример #18
0
    def test_resolve_parameter_values_returns_ref_list_value(self, cfn_mock, get_output_value_mock):
        cfn_mock.return_value.get_stacks_outputs.return_value = None
        get_output_value_mock.return_value = 'bar'

        stack_config = Mock()
        stack_config.parameters = {'foo': ['|Ref|stack.output', '|Ref|stack.output']}

        result = ParameterResolver().resolve_parameter_values('foo', stack_config)

        get_output_value_mock.assert_called_with(None, "stack", "output")
        self.assertEqual({'foo': 'bar,bar'}, result)
Пример #19
0
    def test_get_latest_value_returns_stacks_actual_value(self):
        self.cfn_mock.get_stack_parameters_dict = MagicMock(
            return_value={'my-key': 'my-actual-value'})

        pr = ParameterResolver(self.cfn_mock)
        result = pr.get_latest_value('my-key', '|keepOrUse|default-value',
                                     'my-stack')

        self.cfn_mock.get_stack_parameters_dict.assert_called_once_with(
            'my-stack')
        self.assertEqual('my-actual-value', result)
Пример #20
0
    def test_resolve_parameter_values_returns_ref_value(
            self, get_output_value_mock):
        self.cfn_mock.get_stacks_outputs = MagicMock(return_value=None)
        get_output_value_mock.return_value = 'bar'

        stack_config = Mock()
        stack_config.parameters = {'foo': '|Ref|stack.output'}

        result = ParameterResolver(self.cfn_mock).resolve_parameter_values(
            'foo', stack_config)

        get_output_value_mock.assert_called_with(None, "stack", "output")
        self.assertEqual({'foo': 'bar'}, result)
Пример #21
0
 def test_update_parameters_with_cli_parameters_with_string_param_value_for_several_stacks(
         self):
     result = ParameterResolver(
         self.cfn_mock).update_parameters_with_cli_parameters(
             parameters={'foo': "foo"},
             cli_parameters={
                 'stack1': {
                     'foo': 'foobar'
                 },
                 'stack2': {
                     'foo': 'foofoo'
                 }
             },
             stack_name='stack2')
     self.assertEqual({'foo': 'foofoo'}, result)
 def test_resolve_parameter_values_returns_str_representation_of_float(self, kms, ec2_api, cfn):
     result = ParameterResolver().resolve_parameter_values({'foo': 5.555}, 'foo')
     self.assertEqual({'foo': '5.555'}, result)
Пример #23
0
 def test_handle_kms_value_raises_exception_on_invalid_value_format(self):
     with self.assertRaises(CfnSphereException):
         ParameterResolver().handle_kms_value(
             '|kms|k=v|encryptedValue|something')
    def test_get_latest_value_returns_default_value(self, kms, ec2_api, cfn_mock):
        cfn_mock.return_value.get_stack_parameters_dict.side_effect = CfnSphereBotoError(BotoServerError("500", "foo"))

        resolver = ParameterResolver()
        with self.assertRaises(CfnSphereException):
            resolver.get_latest_value('my-key', '|keepOrUse|default-value', 'my-stack')
Пример #25
0
 def test_handle_ssm_value_raises_exception_on_invalid_value_format(self):
     with self.assertRaises(CfnSphereException):
         ParameterResolver().handle_ssm_value('|ssm|/test/|invalid')
 def test_resolve_parameter_values_returns_list_with_string_value(self, kms, ec2_api, cfn):
     result = ParameterResolver().resolve_parameter_values({'foo': "baa"}, 'foo')
     self.assertEqual({'foo': 'baa'}, result)
 def test_resolve_parameter_values_calls_convert_list_to_string_on_list_value(self, kms, ec2_api, cfn, convert_list_to_string_mock):
     ParameterResolver().resolve_parameter_values({'foo': ['a', 'b']}, 'foo')
     convert_list_to_string_mock.assert_called_once_with(['a', 'b'])
 def test_resolve_parameter_values_raises_exception_on_none_value(self, kms, ec2_api, cfn):
     with self.assertRaises(NotImplementedError):
         ParameterResolver().resolve_parameter_values({'foo': None}, 'foo')
Пример #29
0
    def test_resolve_parameter_values_raises_exception_on_none_value(self):
        stack_config = Mock()
        stack_config.parameters = {'foo': None}

        with self.assertRaises(NotImplementedError):
            ParameterResolver().resolve_parameter_values('foo', stack_config)
    def test_resolve_parameter_values_returns_decrypted_value(self, kms_mock, ec2_api, cfn):
        kms_mock.return_value.decrypt.return_value = "decryptedValue"

        result = ParameterResolver().resolve_parameter_values({'foo': "|kms|encryptedValue"}, 'foo')
        self.assertEqual({'foo': 'decryptedValue'}, result)