Ejemplo n.º 1
0
class PostInSchema(Schema):
    title = String(required=True)
    content = String(required=True)
    private = Boolean(default=False)
    column_ids = List(Integer())
Ejemplo n.º 2
0
class ImageOutSchema(Schema):
    id = Integer()
    filename = String()
    image_url = URL()
Ejemplo n.º 3
0
class ColumnInSchema(Schema):
    name = String()
    post_ids = List(Integer())
Ejemplo n.º 4
0
class ColumnOutSchema(Schema):
    id = Integer()
    name = String()
    author = Nested(PublicUserOutSchema)
    posts = List(Nested(lambda: PostOutSchema(only=("id", "title", "self"))))
    self = ma.URLFor(".column", values=dict(column_id="<id>"))
Ejemplo n.º 5
0
class PetOutSchema(Schema):
    id = Integer()
    name = String()
    category = String()
Ejemplo n.º 6
0
 class PetSchema(Schema):
     name = String(required=True)
     age = Integer(default=123)
Ejemplo n.º 7
0
class HTTPErrorSchema(Schema):
    status_code = String(required=True)
    message = String(required=True)
Ejemplo n.º 8
0
class GroupOutSchema(Schema):
    name = String()
    members = List(Nested(PublicUserOutSchema))
    manager = Nested(PublicUserOutSchema)
    private = Boolean()
Ejemplo n.º 9
0
class HeaderSchema(Schema):
    class Meta:
        unknown = EXCLUDE

    foo = String(missing='bar')
Ejemplo n.º 10
0
class ValidationErrorSchema(Schema):
    status_code = String(required=True)
    message = String(required=True)
Ejemplo n.º 11
0
class BazSchema(Schema):
    id = Integer(default=123)
    name = String()
Ejemplo n.º 12
0
class BarSchema(Schema):
    class Meta:
        unknown = EXCLUDE

    id2 = Integer(default=123)
    name2 = String(required=True)
Ejemplo n.º 13
0
def test_input_with_dict_schema(app, client):
    dict_schema = {'name': String(required=True)}

    @app.get('/foo')
    @input(dict_schema, 'query')
    def foo(query):
        return query

    @app.post('/bar')
    @input(dict_schema, schema_name='MyName')
    def bar(body):
        return body

    @app.post('/baz')
    @input(dict_schema)
    def baz(body):
        return body

    @app.post('/spam')
    @input(dict_schema)
    def spam(body):
        return body

    rv = client.get('/foo')
    assert rv.status_code == 400
    assert rv.json == {
        'detail': {
            'query': {
                'name': ['Missing data for required field.']
            }
        },
        'message': 'Validation error',
        'status_code': 400
    }

    rv = client.get('/foo?name=grey')
    assert rv.status_code == 200
    assert rv.json == {'name': 'grey'}

    rv = client.post('/bar')
    assert rv.status_code == 400
    assert rv.json == {
        'detail': {
            'json': {
                'name': ['Missing data for required field.']
            }
        },
        'message': 'Validation error',
        'status_code': 400
    }

    rv = client.post('/bar', json={'name': 'grey'})
    assert rv.status_code == 200
    assert rv.json == {'name': 'grey'}

    rv = client.get('/openapi.json')
    assert rv.status_code == 200
    validate_spec(rv.json)
    assert rv.json['paths']['/foo']['get']['parameters'][0] == {
        'in': 'query',
        'name': 'name',
        'required': True,
        'schema': {
            'type': 'string'
        }
    }
    # TODO check the excess item "'x-scope': ['']" in schema object
    assert rv.json['paths']['/bar']['post']['requestBody']['content'][
        'application/json']['schema']['$ref'] == '#/components/schemas/MyName'
    assert rv.json['components']['schemas']['MyName'] == {
        'properties': {
            'name': {
                'type': 'string'
            }
        },
        'required': ['name'],
        'type': 'object'
    }
    # default schema name is "Generated"
    assert rv.json['paths']['/baz']['post']['requestBody']['content'][
        'application/json']['schema'][
            '$ref'] == '#/components/schemas/Generated'
    assert rv.json['paths']['/spam']['post']['requestBody']['content'][
        'application/json']['schema'][
            '$ref'] == '#/components/schemas/Generated1'
Ejemplo n.º 14
0
class NotificationOutSchema(Schema):
    id = Integer()
    message = String()
    receiver = Nested(PublicUserOutSchema)
    timestamp = DateTime()
Ejemplo n.º 15
0
class FooSchema(Schema):
    class Meta:
        unknown = EXCLUDE

    id = Integer(default=123)
    name = String(required=True)
Ejemplo n.º 16
0
class GroupInSchema(Schema):
    name = String(required=True)
    members = List(Integer())
    private = Boolean()
Ejemplo n.º 17
0
 class QuerySchema(Schema):
     foo = String(required=True)
     bar = String(required=True)
Ejemplo n.º 18
0
class IndexSchema(Schema):
    api_version = String(default="3.0")
    api_base_url = URL()
Ejemplo n.º 19
0
class PetInSchema(Schema):
    name = String(required=True, validate=Length(0, 10))
    category = String(required=True, validate=OneOf(['dog', 'cat']))