ok
Direktori : /opt/alt/python35/lib/python3.5/site-packages/cerberus/tests/ |
Current File : //opt/alt/python35/lib/python3.5/site-packages/cerberus/tests/test_schema.py |
# -*- coding: utf-8 -*- import pytest from cerberus import Validator, errors, SchemaError from cerberus.tests import assert_schema_error def test_empty_schema(): validator = Validator() with pytest.raises(SchemaError, message=errors.SCHEMA_ERROR_MISSING): validator({}, schema=None) def test_bad_schema_type(validator): schema = "this string should really be dict" exp_msg = errors.SCHEMA_ERROR_DEFINITION_TYPE.format(schema) with pytest.raises(SchemaError, message=exp_msg): validator.schema = schema def test_bad_schema_type_field(validator): field = 'foo' schema = {field: {'schema': {'bar': {'type': 'strong'}}}} with pytest.raises(SchemaError): validator.schema = schema def test_unknown_rule(validator): message = "{'foo': [{'unknown': ['unknown rule']}]}" with pytest.raises(SchemaError, message=message): validator.schema = {'foo': {'unknown': 'rule'}} def test_unknown_type(validator): field = 'name' value = 'catch_me' message = str({field: [{'type': ['unallowed value %s' % value]}]}) with pytest.raises(SchemaError, message=message): validator.schema = {'foo': {'unknown': 'rule'}} def test_bad_schema_definition(validator): field = 'name' message = str({field: ['must be of dict type']}) with pytest.raises(SchemaError, message=message): validator.schema = {field: 'this should really be a dict'} def bad_of_rules(): schema = {'foo': {'anyof': {'type': 'string'}}} assert_schema_error({}, schema) def test_anyof_allof_schema_validate(): # make sure schema with 'anyof' and 'allof' constraints are checked # correctly schema = {'doc': {'type': 'dict', 'anyof': [ {'schema': [{'param': {'type': 'number'}}]}]}} assert_schema_error({'doc': 'this is my document'}, schema) schema = {'doc': {'type': 'dict', 'allof': [ {'schema': [{'param': {'type': 'number'}}]}]}} assert_schema_error({'doc': 'this is my document'}, schema) def test_repr(): v = Validator({'foo': {'type': 'string'}}) assert repr(v.schema) == "{'foo': {'type': 'string'}}" def test_validated_schema_cache(): v = Validator({'foozifix': {'coerce': int}}) cache_size = len(v._valid_schemas) v = Validator({'foozifix': {'type': 'integer'}}) cache_size += 1 assert len(v._valid_schemas) == cache_size v = Validator({'foozifix': {'coerce': int}}) assert len(v._valid_schemas) == cache_size max_cache_size = 126 assert cache_size <= max_cache_size, \ "There's an unexpected high amount (%s) of cached valid " \ "definition schemas. Unless you added further tests, " \ "there are good chances that something is wrong. " \ "If you added tests with new schemas, you can try to " \ "adjust the variable `max_cache_size` according to " \ "the added schemas." % cache_size def test_expansion_in_nested_schema(): schema = {'detroit': {'schema': {'anyof_regex': ['^Aladdin', 'Sane$']}}} v = Validator(schema) assert (v.schema['detroit']['schema'] == {'anyof': [{'regex': '^Aladdin'}, {'regex': 'Sane$'}]})