Schema change for IP range, use validator instead of type

Custom types became rather useless in Cerberus 1.0 since the type checker
is cripled (doesn't know field name, cannot return useful/detailed error
messages). Instead we use a validator now.
This commit is contained in:
2018-07-13 15:03:35 +02:00
parent a699138fd6
commit 8dc3296bd5
3 changed files with 11 additions and 3 deletions

View File

@@ -173,7 +173,7 @@ class NodeValidationTest(ValidationTest):
class IPRangeValidatorTest(ValidationTest):
schema = {'iprange': {'type': 'iprange', 'required': True}}
schema = {'iprange': {'type': 'string', 'required': True, 'validator': 'iprange'}}
def assertValid(self, document, schema=None):
return super().assertValid(document, schema or self.schema)
@@ -199,3 +199,11 @@ class IPRangeValidatorTest(ValidationTest):
self.assertValid({'iprange': '127.0.0.0/8'})
self.assertInvalid({'iprange': '127.0.0.0/0'})
self.assertInvalid({'iprange': 'garbled'})
def test_descriptive_error_message(self):
is_valid = self.validator.validate({'iprange': '::/0'}, self.schema)
self.assertFalse(is_valid)
self.assertEquals(1, len(self.validator._errors))
err = self.validator._errors[0]
self.assertEquals(('iprange', ), err.document_path)
self.assertEquals(('Zero-length prefix is not allowed',), err.info)