def test_object_max_properties():
    schema = Object(max_properties=2)
    assert schema.validate({'a': 1, 'b': 2}) == []
    assert schema.validate({
        'a': 1,
        'b': 2,
        'c': 3
    }) == [('Must have no more than 2 properties.', [])]
Example #2
0
from coreschema import Object, Array, String, Anything, Boolean

media_type_pattern = '^[^/]+/[^/]'

# TODO Reference

SecurityScheme = Anything()  # TODO
XMLObject = Anything()  # TODO
Header = Anything()  # TODO
Schema = Anything()  # TODO
Items = Anything()  # TODO

Definitions = Object(additional_properties=Schema)

ExternalDocumentation = Object(properties={
    'description': String(),
    'url': String(format='uri')
},
                               pattern_properties={'^x-': Anything()},
                               required=['url'],
                               additional_properties=False)

Tag = Object(properties={
    'name': String(),
    'description': String(),
    'externalDocs': ExternalDocumentation
},
             pattern_properties={'^x-': Anything()},
             required=['name'],
             additional_properties=False)
def test_object_additional_properties_as_schema():
    schema = Object(properties={'a': String()}, additional_properties=String())
    assert schema.validate({'a': ''}) == []
    assert schema.validate({'b': 1}) == [('Must be a string.', ['b'])]
def test_object_additional_properties_as_boolean():
    schema = Object(properties={'a': String()}, additional_properties=False)
    assert schema.validate({'a': ''}) == []
    assert schema.validate({'b': ''}) == [('Invalid property.', ['b'])]
def test_object_pattern_properties():
    schema = Object(pattern_properties={'^x-': String(max_length=3)})
    assert schema.validate({'foox-a': 1}) == []
    assert schema.validate({'x-foo': 1}) == [('Must be a string.', ['x-foo'])]
def test_object_empty():
    schema = Object(min_properties=1)
    assert schema.validate({'a': 1}) == []
    assert schema.validate({}) == [('Must not be empty.', [])]
def test_object_min_properties():
    schema = Object(min_properties=2)
    assert schema.validate({'a': 1, 'b': 2}) == []
    assert schema.validate({'a':
                            1}) == [('Must have at least 2 properties.', [])]
def test_object_type():
    schema = Object()
    assert schema.validate({}) == []
    assert schema.validate({'a': 1}) == []
    assert schema.validate(1) == [('Must be an object.', [])]
def test_object_required():
    schema = Object(required=['name'])
    assert schema.validate({'name': 1}) == []
    assert schema.validate({}) == [('This field is required.', ['name'])]
def test_object_properties():
    schema = Object(properties={'name': String()})
    assert schema.validate({}) == []
    assert schema.validate({'name': ''}) == []
    assert schema.validate({'name': 1}) == [('Must be a string.', ['name'])]
def test_object_keys():
    schema = Object()
    assert schema.validate({}) == []
    assert schema.validate({'a': 1}) == []
    assert schema.validate({1: 1}) == [('Object keys must be strings.', [])]