class ParameterTest(testtools.TestCase):
+
+ 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_string(self):
- p = parameters.Parameter('p', {'Type': 'String'}, validate_value=False)
+ p = self.new_parameter('p', {'Type': 'String'}, validate_value=False)
self.assertTrue(isinstance(p, parameters.StringParam))
def test_new_number(self):
- p = parameters.Parameter('p', {'Type': 'Number'}, validate_value=False)
+ p = self.new_parameter('p', {'Type': 'Number'}, validate_value=False)
self.assertTrue(isinstance(p, parameters.NumberParam))
def test_new_list(self):
- p = parameters.Parameter('p', {'Type': 'CommaDelimitedList'},
- validate_value=False)
+ p = self.new_parameter('p', {'Type': 'CommaDelimitedList'},
+ validate_value=False)
self.assertTrue(isinstance(p, parameters.CommaDelimitedListParam))
def test_new_json(self):
- p = parameters.Parameter('p', {'Type': 'Json'}, validate_value=False)
+ p = self.new_parameter('p', {'Type': 'Json'}, validate_value=False)
self.assertTrue(isinstance(p, parameters.JsonParam))
def test_new_bad_type(self):
- self.assertRaises(ValueError, parameters.Parameter,
- 'p', {'Type': 'List'})
+ self.assertRaises(ValueError, self.new_parameter, 'p',
+ {'Type': 'List'})
def test_new_no_type(self):
- self.assertRaises(KeyError, parameters.Parameter,
+ self.assertRaises(KeyError, self.new_parameter,
'p', {'Default': 'blarg'})
def test_default_no_override(self):
- p = parameters.Parameter('defaulted', {'Type': 'String',
- 'Default': 'blarg'})
+ p = self.new_parameter('defaulted', {'Type': 'String',
+ 'Default': 'blarg'})
self.assertTrue(p.has_default())
self.assertEqual(p.default(), 'blarg')
self.assertEqual(p.value(), 'blarg')
def test_default_override(self):
- p = parameters.Parameter('defaulted',
- {'Type': 'String',
- 'Default': 'blarg'},
- 'wibble')
+ p = self.new_parameter('defaulted',
+ {'Type': 'String',
+ 'Default': 'blarg'},
+ 'wibble')
self.assertTrue(p.has_default())
self.assertEqual(p.default(), 'blarg')
self.assertEqual(p.value(), 'wibble')
'ConstraintDescription': 'wibble',
'Default': 'bar'}
try:
- parameters.Parameter('p', schema, 'foo')
+ self.new_parameter('p', schema, 'foo')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
self.fail('ValueError not raised')
def test_no_echo_true(self):
- p = parameters.Parameter('anechoic',
- {'Type': 'String',
- 'NoEcho': 'true'},
- 'wibble')
+ p = self.new_parameter('anechoic',
+ {'Type': 'String',
+ 'NoEcho': 'true'},
+ 'wibble')
self.assertTrue(p.no_echo())
self.assertNotEqual(str(p), 'wibble')
def test_no_echo_true_caps(self):
- p = parameters.Parameter('anechoic',
- {'Type': 'String',
- 'NoEcho': 'TrUe'},
- 'wibble')
+ p = self.new_parameter('anechoic',
+ {'Type': 'String',
+ 'NoEcho': 'TrUe'},
+ 'wibble')
self.assertTrue(p.no_echo())
self.assertNotEqual(str(p), 'wibble')
def test_no_echo_false(self):
- p = parameters.Parameter('echoic',
- {'Type': 'String',
- 'NoEcho': 'false'},
- 'wibble')
+ p = self.new_parameter('echoic',
+ {'Type': 'String',
+ 'NoEcho': 'false'},
+ 'wibble')
self.assertFalse(p.no_echo())
self.assertEqual(str(p), 'wibble')
def test_description(self):
description = 'Description of the parameter'
- p = parameters.Parameter('p', {'Type': 'String',
- 'Description': description},
- validate_value=False)
+ p = self.new_parameter('p', {'Type': 'String',
+ 'Description': description},
+ validate_value=False)
self.assertEqual(p.description(), description)
def test_no_description(self):
- p = parameters.Parameter('p', {'Type': 'String'}, validate_value=False)
+ p = self.new_parameter('p', {'Type': 'String'}, validate_value=False)
self.assertEqual(p.description(), '')
def test_string_len_good(self):
schema = {'Type': 'String',
'MinLength': '3',
'MaxLength': '3'}
- p = parameters.Parameter('p', schema, 'foo')
+ p = self.new_parameter('p', schema, 'foo')
self.assertEqual(p.value(), 'foo')
def test_string_underflow(self):
'ConstraintDescription': 'wibble',
'MinLength': '4'}
try:
- parameters.Parameter('p', schema, 'foo')
+ self.new_parameter('p', schema, 'foo')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
'ConstraintDescription': 'wibble',
'MaxLength': '2'}
try:
- parameters.Parameter('p', schema, 'foo')
+ self.new_parameter('p', schema, 'foo')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
def test_string_pattern_good(self):
schema = {'Type': 'String',
'AllowedPattern': '[a-z]*'}
- p = parameters.Parameter('p', schema, 'foo')
+ p = self.new_parameter('p', schema, 'foo')
self.assertEqual(p.value(), 'foo')
def test_string_pattern_bad_prefix(self):
'ConstraintDescription': 'wibble',
'AllowedPattern': '[a-z]*'}
try:
- parameters.Parameter('p', schema, '1foo')
+ self.new_parameter('p', schema, '1foo')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
'ConstraintDescription': 'wibble',
'AllowedPattern': '[a-z]*'}
try:
- parameters.Parameter('p', schema, 'foo1')
+ self.new_parameter('p', schema, 'foo1')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
def test_string_value_list_good(self):
schema = {'Type': 'String',
'AllowedValues': ['foo', 'bar', 'baz']}
- p = parameters.Parameter('p', schema, 'bar')
+ p = self.new_parameter('p', schema, 'bar')
self.assertEqual(p.value(), 'bar')
def test_string_value_list_bad(self):
'ConstraintDescription': 'wibble',
'AllowedValues': ['foo', 'bar', 'baz']}
try:
- parameters.Parameter('p', schema, 'blarg')
+ self.new_parameter('p', schema, 'blarg')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
schema = {'Type': 'Number',
'MinValue': '3',
'MaxValue': '3'}
- p = parameters.Parameter('p', schema, '3')
+ p = self.new_parameter('p', schema, '3')
self.assertEqual(p.value(), '3')
def test_number_float_good(self):
schema = {'Type': 'Number',
'MinValue': '3.0',
'MaxValue': '3.0'}
- p = parameters.Parameter('p', schema, '3.0')
+ p = self.new_parameter('p', schema, '3.0')
self.assertEqual(p.value(), '3.0')
def test_number_low(self):
'ConstraintDescription': 'wibble',
'MinValue': '4'}
try:
- parameters.Parameter('p', schema, '3')
+ self.new_parameter('p', schema, '3')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
'ConstraintDescription': 'wibble',
'MaxValue': '2'}
try:
- parameters.Parameter('p', schema, '3')
+ self.new_parameter('p', schema, '3')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
def test_number_value_list_good(self):
schema = {'Type': 'Number',
'AllowedValues': ['1', '3', '5']}
- p = parameters.Parameter('p', schema, '5')
+ p = self.new_parameter('p', schema, '5')
self.assertEqual(p.value(), '5')
def test_number_value_list_bad(self):
'ConstraintDescription': 'wibble',
'AllowedValues': ['1', '3', '5']}
try:
- parameters.Parameter('p', schema, '2')
+ self.new_parameter('p', schema, '2')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
def test_list_value_list_good(self):
schema = {'Type': 'CommaDelimitedList',
'AllowedValues': ['foo', 'bar', 'baz']}
- p = parameters.Parameter('p', schema, 'baz,foo,bar')
+ p = self.new_parameter('p', schema, 'baz,foo,bar')
self.assertEqual(p.value(), 'baz,foo,bar')
def test_list_value_list_bad(self):
'ConstraintDescription': 'wibble',
'AllowedValues': ['foo', 'bar', 'baz']}
try:
- parameters.Parameter('p', schema, 'foo,baz,blarg')
+ self.new_parameter('p', schema, 'foo,baz,blarg')
except ValueError as ve:
msg = str(ve)
self.assertNotEqual(msg.find('wibble'), -1)
schema = {'Type': 'Json'}
val = {"foo": "bar", "items": [1, 2, 3]}
val_s = json.dumps(val)
- p = parameters.Parameter('p', schema, val)
+ p = self.new_parameter('p', schema, val)
self.assertEqual(val_s, p.value())
self.assertEqual(val, p.parsed)
'ConstraintDescription': 'wibble'}
val = {"foo": "bar", "not_json": len}
try:
- parameters.Parameter('p', schema, val)
+ self.new_parameter('p', schema, val)
except ValueError as verr:
self.assertIn('Value must be valid JSON', str(verr))
else:
schema = {'Type': 'Json'}
val = {"foo": "bar", "items": [1, 2, 3]}
val_s = json.dumps(val)
- p = parameters.Parameter('p', schema, val_s)
+ p = self.new_parameter('p', schema, val_s)
self.assertEqual(val_s, p.value())
self.assertEqual(val, p.parsed)
'ConstraintDescription': 'wibble'}
val = "I am not a map"
try:
- parameters.Parameter('p', schema, val)
+ self.new_parameter('p', schema, val)
except ValueError as verr:
self.assertIn('Value must be valid JSON', str(verr))
else:
'AllowedValues': ["foo", "bar", "baz"]}
val = {"foo": "bar", "baz": [1, 2, 3]}
val_s = json.dumps(val)
- p = parameters.Parameter('p', schema, val_s)
+ p = self.new_parameter('p', schema, val_s)
self.assertEqual(val_s, p.value())
self.assertEqual(val, p.parsed)
'AllowedValues': ["foo", "bar", "baz"]}
val = {"foo": "bar", "items": [1, 2, 3]}
try:
- parameters.Parameter('p', schema, val)
+ self.new_parameter('p', schema, val)
except ValueError as verr:
self.assertIn("items", str(verr))
else:
'MinLength': 3}
val = {"foo": "bar", "items": [1, 2, 3]}
try:
- parameters.Parameter('p', schema, val)
+ self.new_parameter('p', schema, val)
except ValueError as verr:
self.assertIn('underflows', str(verr))
else:
'MaxLength': 1}
val = {"foo": "bar", "items": [1, 2, 3]}
try:
- parameters.Parameter('p', schema, val)
+ self.new_parameter('p', schema, val)
except ValueError as verr:
self.assertIn('overflows', str(verr))
else:
def test_missing_param(self):
'''Test missing user parameter.'''
self.assertRaises(exception.UserParameterMissing,
- parameters.Parameter, 'p',
+ self.new_parameter, 'p',
{'Type': 'String'})