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)
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)
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)
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)
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)
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")
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)
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)
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")
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)
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")
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])
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)
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