コード例 #1
0
class PostInSchema(Schema):
    title = String(required=True)
    content = String(required=True)
    private = Boolean(default=False)
    column_ids = List(Integer())
コード例 #2
0
class ImageOutSchema(Schema):
    id = Integer()
    filename = String()
    image_url = URL()
コード例 #3
0
class ColumnInSchema(Schema):
    name = String()
    post_ids = List(Integer())
コード例 #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>"))
コード例 #5
0
class PetOutSchema(Schema):
    id = Integer()
    name = String()
    category = String()
コード例 #6
0
 class PetSchema(Schema):
     name = String(required=True)
     age = Integer(default=123)
コード例 #7
0
class HTTPErrorSchema(Schema):
    status_code = String(required=True)
    message = String(required=True)
コード例 #8
0
class GroupOutSchema(Schema):
    name = String()
    members = List(Nested(PublicUserOutSchema))
    manager = Nested(PublicUserOutSchema)
    private = Boolean()
コード例 #9
0
class HeaderSchema(Schema):
    class Meta:
        unknown = EXCLUDE

    foo = String(missing='bar')
コード例 #10
0
class ValidationErrorSchema(Schema):
    status_code = String(required=True)
    message = String(required=True)
コード例 #11
0
class BazSchema(Schema):
    id = Integer(default=123)
    name = String()
コード例 #12
0
class BarSchema(Schema):
    class Meta:
        unknown = EXCLUDE

    id2 = Integer(default=123)
    name2 = String(required=True)
コード例 #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'
コード例 #14
0
class NotificationOutSchema(Schema):
    id = Integer()
    message = String()
    receiver = Nested(PublicUserOutSchema)
    timestamp = DateTime()
コード例 #15
0
class FooSchema(Schema):
    class Meta:
        unknown = EXCLUDE

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