Ejemplo n.º 1
0
async def test_base_model_obj():
    app = Pint('test',
               title='App Test',
               contact='foo',
               contact_email='*****@*****.**',
               description='Sample Desc',
               base_model_schema=TEST_BASE_MODEL_SCHEMA)

    @app.route('/testque')
    @app.param('test_que', ref='#/components/parameters/test_query')
    class TestQue(Resource):
        async def get(self):
            return request.args['moo']

    test_que_ref = app.create_ref_validator('test_query', 'parameters')

    @app.route('/testref')
    @app.param('test_que_ref', ref=test_que_ref)
    class TestRef(Resource):
        async def get(self):
            return request.args['moo']

    @app.route('/testquename')
    @app.param('test_que_name', ref='test_query')
    class TestQueName(Resource):
        async def get(self):
            return request.args['moo']

    swag = app.__schema__
    assert swag['components']['parameters']['test_query']['name'] == 'moo'
    swag_testque = swag['paths']['/testque']['get']
    swag_testref = swag['paths']['/testref']['get']
    swag_testquename = swag['paths']['/testquename']['get']
    assert swag_testque['parameters'] == swag_testref['parameters']
    assert swag_testque['parameters'] == swag_testquename['parameters']

    client = app.test_client()

    rv = await client.get('/testque?moo=foo')
    assert rv.status_code == HTTPStatus.OK
    assert await rv.get_data() == b'foo'

    rv = await client.get('/testref?moo=bar')
    assert rv.status_code == HTTPStatus.OK
    assert await rv.get_data() == b'bar'

    rv = await client.get('/testquename?moo=baz')
    assert rv.status_code == HTTPStatus.OK
    assert await rv.get_data() == b'baz'
Ejemplo n.º 2
0
async def test_required_query():
    app = Pint('test', title='App Test', contact='foo',
                  contact_email='*****@*****.**', description='Sample Desc',
                  base_model_schema=TEST_BASE_MODEL_SCHEMA)

    test_que_ref = app.create_ref_validator('test_query', 'parameters')

    @app.param('test_que_ref', _in='query', schema=test_que_ref)
    @app.route('/testref')
    def testref():
        return request.args['moo']

    client = app.test_client()
    rv = await client.get('/testref')
    # will add validation in the future for required query args
    assert rv.status_code == HTTPStatus.BAD_REQUEST
Ejemplo n.º 3
0
async def test_post_validation():
    app = Pint('test', base_model_schema=TEST_BASE_MODEL_SCHEMA)

    test_ref = app.create_ref_validator('User', 'schemas')

    @app.route('/testroute')
    class TestReq(Resource):
        @app.expect(test_ref)
        async def post(self):
            return jsonify(await request.get_json())

    client = app.test_client()

    # fail validation, missing required props
    rv = await client.post('/testroute', json={})
    assert rv.status_code == HTTPStatus.BAD_REQUEST
    assert rv.headers['content-type'] == 'application/json'
    data = await rv.get_json()
    assert data['message'] == 'Request Body failed validation'
    assert 'msg' in data['error'] and data['error']['msg']
    assert 'value' in data['error']
    assert 'schema' in data['error']

    # fail validation, have required props, but age is wrong type
    rv = await client.post('/testroute', json={'name': 'foobar', 'age': 'baz'})
    assert rv.status_code == HTTPStatus.BAD_REQUEST
    assert rv.headers['content-type'] == 'application/json'
    data = await rv.get_json()
    assert data['message'] == 'Request Body failed validation'
    assert 'msg' in data['error'] and data['error']['msg']
    assert 'value' in data['error']
    assert 'schema' in data['error']

    # succeed validation
    rv = await client.post('/testroute', json={'name': 'foobar', 'age': 10})
    assert rv.status_code == HTTPStatus.OK