| Server IP : 101.53.144.229 / Your IP : 216.73.216.181 Web Server : Apache System : Linux host.gdigitalindia.in 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : digitalshiksha ( 1179) PHP Version : 5.6.40 Disable Function : eval,show_source,system,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,dl,show_source,curl_multi_exechellcmd, ini_restore,apache_get_modules,get_cfg_var,passthru, exec ,proc_get_status,fpassthru,c999_buff_prepare,c999_sess_put,c99_buff_prepare,c99_sess_put,proc_close,ini_alter,dl,symlink,link,proc_close,ini_alter,dl,symlink,link,mail MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/cwd/c1/1/opt/alt/python35/lib/python3.5/site-packages/cerberus/tests/ |
Upload File : |
# -*- 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$'}]})