def test_string_default(self): obj = JsonValidator({ 'content': { '#type': 'string', '#default': 'banana' }, }) try: obj.validate({}) except ValueError as e: self.fail("validate() threw exception: %s" % (e))
def test_string_validator(self): obj = JsonValidator({ 'content': { '#type': 'string', '#validator': 'hello_world' }, }) self.assertDictEqual(obj.validate({'content': 'hello world'}), {'content': 'hello world'}) self.assertRaises(ValueError, lambda: obj.validate({'content': 'goodbye'}))
def test_string(self): obj = JsonValidator({ 'content': { '#type': 'string', '#max_length': 5, }, }) self.assertRaises(ValueError, lambda: obj.validate({'content': 123})) self.assertDictEqual(obj.validate({'content': 'hello'}), {'content': 'hello'}) self.assertRaises(ValueError, lambda: obj.validate({'content': 'bananas'}))
def test_fieldset(self): obj = JsonValidator({ 'content': { '#type': 'fieldset', '#collapsible': True, '#collapsed': False, '#weight': -10, }, }) self.assertDictEqual(obj.validate({'content': {}}), {'content': {}}) self.assertRaises(ValueError, lambda: obj.validate({'content': 'hello'}))
def test_string_required(self): obj = JsonValidator({ 'content': { '#type': 'string', '#required': True }, 'other': { "#type": 'string' } }) self.assertDictEqual(obj.validate({'content': 'hello world'}), {'content': 'hello world'}) self.assertRaises(ValueError, lambda: obj.validate({'other': 'yes'}))
def test_enum_list(self): obj = JsonValidator({ 'content': { '#type': 'enum', '#options': ['one', 'two'], '#default': 'one', }, }) self.assertDictEqual(obj.validate({'content': 'one'}), {'content': 'one'}) self.assertDictEqual(obj.validate({'content': 'two'}), {'content': 'two'}) self.assertRaises(ValueError, lambda: obj.validate({'content': 'three'}))
def test_integer(self): obj = JsonValidator({ 'content': { '#type': 'integer', '#max_value': 10000, '#min_value': -10000, }, }) self.assertDictEqual(obj.validate({'content': -123}), {'content': -123}) self.assertDictEqual(obj.validate({'content': 1234}), {'content': 1234}) self.assertRaises(ValueError, lambda: obj.validate({'content': 1.2345})) self.assertRaises(ValueError, lambda: obj.validate({'content': 'hello'})) self.assertRaises(ValueError, lambda: obj.validate({'content': 10001})) self.assertRaises(ValueError, lambda: obj.validate({'content': -10001}))
def test_enum_dict(self): obj = JsonValidator({ 'type': { '#type': 'enum', '#default': 'one', '#options': { 'one': { 'sub_one': { '#type': 'string', '#max_length': 200, '#required': True, }, }, 'two': { 'sub_two_string': { '#type': 'string', '#max_length': 255, }, 'sub_two_integer': { '#type': 'string', '#max_length': 20, }, }, 'three': { 'thing': { '#type': 'string', '#default': 'someday', }, }, }, }, 'one': { '#type': 'placeholder' }, 'two': { '#type': 'placeholder' }, }) thing = {'type': 'one', 'one': {'sub_one': 'something'}} self.assertDictEqual(obj.validate(thing), thing) self.assertRaises(ValueError, lambda: obj.validate({ 'type': 'one', 'one': {} })) self.assertDictEqual(obj.validate({ 'type': 'two', 'two': {} }), { 'type': 'two', 'two': {} }) self.assertRaises(ValueError, lambda: obj.validate({'type': 'one'}))
def test_boolean(self): obj = JsonValidator({ 'content': { '#type': 'boolean' }, }) self.assertDictEqual(obj.validate({'content': True}), {'content': True}) self.assertDictEqual(obj.validate({'content': False}), {'content': False}) self.assertRaises(ValueError, lambda: obj.validate({'content': 0})) self.assertRaises(ValueError, lambda: obj.validate({'content': 1})) self.assertRaises(ValueError, lambda: obj.validate({'content': 'true'}))
def test_float(self): obj = JsonValidator({ 'content': { '#type': 'float', '#max_value': 10000.0, '#min_value': -10000.0, }, }) self.assertDictEqual(obj.validate({'content': -1.234}), {'content': -1.234}) self.assertDictEqual(obj.validate({'content': 1.234}), {'content': 1.234}) self.assertRaises(ValueError, lambda: obj.validate({'content': 'hello'})) self.assertRaises(ValueError, lambda: obj.validate({'content': 10001.0})) self.assertRaises(ValueError, lambda: obj.validate({'content': -10001.0}))