Exemplo n.º 1
0
    def test_resolve_variable_no_provided_without_default(self):
        var_name = "testVar"
        var_def = {"type": str}
        provided_variable = None
        blueprint_name = "testBlueprint"

        with self.assertRaises(MissingVariable):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)
Exemplo n.º 2
0
    def test_resolve_variable_provided_not_resolved(self):
        var_name = "testVar"
        var_def = {"type": str}
        provided_variable = Variable(var_name, "${mock abc}")
        blueprint_name = "testBlueprint"

        with self.assertRaises(UnresolvedVariable):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)
Exemplo n.º 3
0
    def test_resolve_variable_no_provided_without_default(self):
        var_name = "testVar"
        var_def = {"type": str}
        provided_variable = None
        blueprint_name = "testBlueprint"

        with self.assertRaises(MissingVariable):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)
Exemplo n.º 4
0
    def test_resolve_variable_no_type_on_variable_definition(self):
        var_name = "testVar"
        var_def = {}
        provided_variable = None
        blueprint_name = "testBlueprint"

        with self.assertRaises(VariableTypeRequired):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)
Exemplo n.º 5
0
    def test_resolve_variable_provided_not_resolved(self):
        var_name = "testVar"
        var_def = {"type": str}
        provided_variable = Variable(var_name, "${mock abc}")
        blueprint_name = "testBlueprint"

        with self.assertRaises(UnresolvedVariable):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)
Exemplo n.º 6
0
    def test_resolve_variable_no_type_on_variable_definition(self):
        var_name = "testVar"
        var_def = {}
        provided_variable = None
        blueprint_name = "testBlueprint"

        with self.assertRaises(VariableTypeRequired):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)
Exemplo n.º 7
0
    def test_variable_exists_but_value_is_none(self):
        var_name = "testVar"
        var_def = {"type": str}
        var_value = None
        provided_variable = Variable(var_name, var_value)
        blueprint_name = "testBlueprint"

        with self.assertRaises(ValueError):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)
Exemplo n.º 8
0
    def test_variable_exists_but_value_is_none(self):
        var_name = "testVar"
        var_def = {"type": str}
        var_value = None
        provided_variable = Variable(var_name, var_value)
        blueprint_name = "testBlueprint"

        with self.assertRaises(ValueError):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)
Exemplo n.º 9
0
    def test_variable_exists_but_value_is_none(self):
        var_name = "testVar"
        var_def = {"type": str}
        var_value = None
        provided_variable = Variable(var_name, var_value)
        blueprint_name = "testBlueprint"

        with self.assertRaises(ValidatorError) as cm:
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)

        exc = cm.exception.exception  # The wrapped exception
        self.assertIsInstance(exc, UnboundLocalError)
Exemplo n.º 10
0
    def test_resolve_variable_allowed_values(self):
        var_name = "testVar"
        var_def = {"type": str, "allowed_values": ["allowed"]}
        provided_variable = Variable(var_name, "not_allowed")
        blueprint_name = "testBlueprint"
        with self.assertRaises(ValueError):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)

        provided_variable = Variable(var_name, "allowed")
        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)
        self.assertEqual(value, "allowed")
Exemplo n.º 11
0
    def test_resolve_variable_allowed_values(self):
        var_name = "testVar"
        var_def = {"type": str, "allowed_values": ["allowed"]}
        provided_variable = Variable(var_name, "not_allowed")
        blueprint_name = "testBlueprint"
        with self.assertRaises(ValueError):
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)

        provided_variable = Variable(var_name, "allowed")
        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)
        self.assertEqual(value, "allowed")
Exemplo n.º 12
0
    def _resolve_troposphere_var(self, tpe, value, **kwargs):
        var_name = "testVar"
        var_def = {"type": TroposphereType(tpe, **kwargs)}
        provided_variable = Variable(var_name, value)
        blueprint_name = "testBlueprint"

        return resolve_variable(var_name, var_def, provided_variable,
                                blueprint_name)
Exemplo n.º 13
0
    def _resolve_troposphere_var(self, tpe, value, **kwargs):
        var_name = "testVar"
        var_def = {"type": TroposphereType(tpe, **kwargs)}
        provided_variable = Variable(var_name, value)
        blueprint_name = "testBlueprint"

        return resolve_variable(var_name, var_def, provided_variable,
                                blueprint_name)
Exemplo n.º 14
0
    def test_resolve_variable_validator_invalid_value(self):
        def triple_validator(value):
            if len(value) != 3:
                raise ValueError("Must be a triple.")
            return value

        var_name = "testVar"
        var_def = {"type": list, "validator": triple_validator}
        var_value = [1, 2]
        provided_variable = Variable(var_name, var_value)
        blueprint_name = "testBlueprint"

        with self.assertRaises(ValidatorError) as cm:
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)

        exc = cm.exception.exception  # The wrapped exception
        self.assertIsInstance(exc, ValueError)
Exemplo n.º 15
0
    def test_resolve_variable_validator_invalid_value(self):
        def triple_validator(value):
            if len(value) != 3:
                raise ValueError("Must be a triple.")
            return value

        var_name = "testVar"
        var_def = {"type": list, "validator": triple_validator}
        var_value = [1, 2]
        provided_variable = Variable(var_name, var_value)
        blueprint_name = "testBlueprint"

        with self.assertRaises(ValidatorError) as cm:
            resolve_variable(var_name, var_def, provided_variable,
                             blueprint_name)

        exc = cm.exception.exception  # The wrapped exception
        self.assertIsInstance(exc, ValueError)
Exemplo n.º 16
0
    def test_resolve_variable_provided_resolved(self):
        var_name = "testVar"
        var_def = {"type": str}
        provided_variable = Variable(var_name, "${mock 1}")
        provided_variable.resolve(context=MagicMock(), provider=MagicMock())
        blueprint_name = "testBlueprint"

        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)
        self.assertEqual(value, "1")
Exemplo n.º 17
0
    def test_resolve_variable_provided_resolved(self):
        var_name = "testVar"
        var_def = {"type": str}
        provided_variable = Variable(var_name, "${mock 1}")
        provided_variable.resolve(context=MagicMock(), provider=MagicMock())
        blueprint_name = "testBlueprint"

        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)
        self.assertEqual(value, "1")
Exemplo n.º 18
0
    def test_resolve_variable_no_provided_with_default(self):
        var_name = "testVar"
        default_value = "foo"
        var_def = {"default": default_value, "type": str}
        provided_variable = None
        blueprint_name = "testBlueprint"

        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)

        self.assertEqual(default_value, value)
Exemplo n.º 19
0
    def test_resolve_variable_no_provided_with_default(self):
        var_name = "testVar"
        default_value = "foo"
        var_def = {"default": default_value, "type": str}
        provided_variable = None
        blueprint_name = "testBlueprint"

        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)

        self.assertEqual(default_value, value)
Exemplo n.º 20
0
    def test_resolve_variable_troposphere_type(self):
        var_name = "testVar"
        var_def = {"type": TroposphereType(s3.Bucket)}
        provided_variable = Variable(var_name, {"MyBucket": {"BucketName":
                                                             "some-bucket"}})
        blueprint_name = "testBlueprint"

        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)
        self.assertTrue(isinstance(value, s3.Bucket))
        self.assertEqual(value.properties["BucketName"], "some-bucket")
        self.assertEqual(value.title, "MyBucket")
Exemplo n.º 21
0
    def test_resolve_variable_troposphere_list_type(self):
        var_name = "testVar"
        var_def = {"type": TroposphereType(s3.Bucket, many=True)}
        bucket_defs = {
            "FirstBucket": {"BucketName": "some-bucket"},
            "SecondBucket": {"BucketName": "some-other-bucket"},
        }
        provided_variable = Variable(var_name, bucket_defs)
        blueprint_name = "testBlueprint"

        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)
        for bucket in value:
            self.assertTrue(isinstance(bucket, s3.Bucket))
            self.assertEqual(bucket.properties, bucket_defs[bucket.title])
Exemplo n.º 22
0
    def test_resolve_variable_validator_valid_value(self):
        def triple_validator(value):
            if len(value) != 3:
                raise ValueError
            return value

        var_name = "testVar"
        var_def = {"type": list, "validator": triple_validator}
        var_value = [1, 2, 3]
        provided_variable = Variable(var_name, var_value)
        blueprint_name = "testBlueprint"

        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)
        self.assertEqual(value, var_value)
Exemplo n.º 23
0
    def test_resolve_variable_validator_valid_value(self):
        def triple_validator(value):
            if len(value) != 3:
                raise ValueError
            return value

        var_name = "testVar"
        var_def = {"type": list, "validator": triple_validator}
        var_value = [1, 2, 3]
        provided_variable = Variable(var_name, var_value)
        blueprint_name = "testBlueprint"

        value = resolve_variable(var_name, var_def, provided_variable,
                                 blueprint_name)
        self.assertEqual(value, var_value)
Exemplo n.º 24
0
    def resolve_variables(self, provided_variables):
        """Override the blueprint resolve_variables function.

        This allows our injection of dynamic variables.
        """
        self.resolved_variables = {}
        variable_dict = dict((var.name, var) for var in provided_variables)
        variable_dict.update(
            dynamic_vars.update_var_dict(variable_dict, self.PARAMS_TO_ADD))
        # Disabling invalid-name check because we didn't choose the var name
        self.DEFINED_VARIABLES = dynamic_vars.updated_def_variables(  # noqa pylint: disable=C0103
            self.defined_variables(), variable_dict, self.PARAMS_TO_ADD)
        for var_name, var_def in self.DEFINED_VARIABLES.iteritems():
            value = resolve_variable(var_name, var_def,
                                     variable_dict.get(var_name), self.name)
            self.resolved_variables[var_name] = value