def test_default_override(self): p = parameters.Parameter('defaulted', { 'Type': 'String', 'Default': 'blarg' }, 'wibble') self.assertTrue(p.has_default()) self.assertEqual(p.default(), 'blarg') self.assertEqual(p.value(), 'wibble')
def _pseudo_parameters(self, stack_identifier): stack_id = getattr(stack_identifier, 'stack_id', '') stack_name = getattr(stack_identifier, 'stack_name', '') tenant = getattr(stack_identifier, 'tenant', '') yield parameters.Parameter( self.PARAM_STACK_ID, parameters.Schema(parameters.Schema.STRING, _('Stack ID'), default=str(stack_id))) yield parameters.Parameter( self.PARAM_PROJECT_ID, parameters.Schema(parameters.Schema.STRING, _('Project ID'), default=str(tenant))) if stack_name: yield parameters.Parameter( self.PARAM_STACK_NAME, parameters.Schema(parameters.Schema.STRING, _('Stack Name'), default=stack_name))
def new_parameter(name, schema, value=None, validate_value=True): tmpl = template.Template({ 'HeatTemplateFormatVersion': '2012-12-12', 'Parameters': { name: schema } }) schema = tmpl.param_schemata()[name] param = parameters.Parameter(name, schema, value) param.validate(validate_value) return param
def test_string_pattern_bad_suffix(self): schema = {'Type': 'String', 'ConstraintDescription': 'wibble', 'AllowedPattern': '[a-z]*'} try: parameters.Parameter('p', schema, 'foo1') except ValueError as ve: msg = str(ve) self.assertNotEqual(msg.find('wibble'), -1) else: self.fail('ValueError not raised')
def test_string_overflow(self): schema = {'Type': 'String', 'ConstraintDescription': 'wibble', 'MaxLength': '2'} try: parameters.Parameter('p', schema, 'foo') except ValueError as ve: msg = str(ve) self.assertNotEqual(msg.find('wibble'), -1) else: self.fail('ValueError not raised')
def test_list_value_list_bad(self): schema = {'Type': 'CommaDelimitedList', 'ConstraintDescription': 'wibble', 'AllowedValues': ['foo', 'bar', 'baz']} try: parameters.Parameter('p', schema, 'foo,baz,blarg') except ValueError as ve: msg = str(ve) self.assertNotEqual(msg.find('wibble'), -1) else: self.fail('ValueError not raised')
def test_number_value_list_bad(self): schema = {'Type': 'Number', 'ConstraintDescription': 'wibble', 'AllowedValues': ['1', '3', '5']} try: parameters.Parameter('p', schema, '2') except ValueError as ve: msg = str(ve) self.assertNotEqual(msg.find('wibble'), -1) else: self.fail('ValueError not raised')
def test_number_high(self): schema = {'Type': 'Number', 'ConstraintDescription': 'wibble', 'MaxValue': '2'} try: parameters.Parameter('p', schema, '3') except ValueError as ve: msg = str(ve) self.assertNotEqual(msg.find('wibble'), -1) else: self.fail('ValueError not raised')
def test_default_invalid(self): schema = {'Type': 'String', 'AllowedValues': ['foo'], 'ConstraintDescription': 'wibble', 'Default': 'bar'} try: parameters.Parameter('p', schema, 'foo') except ValueError as ve: msg = str(ve) self.assertNotEqual(msg.find('wibble'), -1) else: self.fail('ValueError not raised')
def get_default_parameters(self): """Return a dict of default parameters as parameter objects. Useful when the default value of the parameters are required to be type checked. """ default_params = {} for name, schema in self.param_schemata().items(): if schema.default: default_params[name] = parameters.Parameter( name, schema, schema.default) return default_params
def test_new_string(self): p = parameters.Parameter('p', {'Type': 'String'}) self.assertTrue(isinstance(p, parameters.StringParam))
def test_list_value_list_good(self): schema = {'Type': 'CommaDelimitedList', 'AllowedValues': ['foo', 'bar', 'baz']} p = parameters.Parameter('p', schema, 'baz,foo,bar') self.assertEqual(p.value(), 'baz,foo,bar')
def test_number_value_list_good(self): schema = {'Type': 'Number', 'AllowedValues': ['1', '3', '5']} p = parameters.Parameter('p', schema, '5') self.assertEqual(p.value(), '5')
def new_parameter(self, name, schema, value=None, validate_value=True): tmpl = template.Template({template.PARAMETERS: {name: schema}}) schema = tmpl.param_schemata()[name] return parameters.Parameter(name, schema, value, validate_value)
def test_new_number(self): p = parameters.Parameter('p', {'Type': 'Number'}) self.assertTrue(isinstance(p, parameters.NumberParam))
def test_string_pattern_good(self): schema = {'Type': 'String', 'AllowedPattern': '[a-z]*'} p = parameters.Parameter('p', schema, 'foo') self.assertEqual(p.value(), 'foo')
def test_string_len_good(self): schema = {'Type': 'String', 'MinLength': '3', 'MaxLength': '3'} p = parameters.Parameter('p', schema, 'foo') self.assertEqual(p.value(), 'foo')
def test_no_description(self): p = parameters.Parameter('p', {'Type': 'String'}) self.assertEqual(p.description(), '')
def test_new_list(self): p = parameters.Parameter('p', {'Type': 'CommaDelimitedList'}) self.assertTrue(isinstance(p, parameters.CommaDelimitedListParam))
def test_string_value_list_good(self): schema = {'Type': 'String', 'AllowedValues': ['foo', 'bar', 'baz']} p = parameters.Parameter('p', schema, 'bar') self.assertEqual(p.value(), 'bar')
def test_description(self): description = 'Description of the parameter' p = parameters.Parameter('p', {'Type': 'String', 'Description': description}) self.assertEqual(p.description(), description)
def test_number_float_good(self): schema = {'Type': 'Number', 'MinValue': '3.0', 'MaxValue': '3.0'} p = parameters.Parameter('p', schema, '3.0') self.assertEqual(p.value(), '3.0')