예제 #1
0
파일: test_web.py 프로젝트: dinhvh/py-web
def test_middleware():
    def middleware(old_handler):
        async def new_handler(req):
            req = util.dicts.merge(req, {'headers': {'asdf': ' [mod req]'}})
            resp = await old_handler(req)
            resp = util.dicts.merge(resp,
                                    {'body': resp['body'] + ' [mod resp]'})
            return resp

        return new_handler

    @middleware
    async def handler(req):
        return {
            'headers': {
                'foo': 'bar'
            },
            'code': 200,
            'body': 'ok' + req['headers']['asdf']
        }

    app = web.app([('/', {'get': handler})])
    with web.test(app) as url:
        resp = web.get_sync(url)
        assert resp['body'] == 'ok [mod req] [mod resp]'
예제 #2
0
파일: test_web.py 프로젝트: dinhvh/py-web
def test_url_args():
    async def handler(req):
        return {'code': 200, 'body': json.dumps(req['args'])}

    app = web.app([('/(.*)/(.*)', {'get': handler})])
    with web.test(app) as url:
        resp = web.get_sync(url + '/something/stuff')
        assert json.loads(resp['body']) == ['something', 'stuff'], resp
예제 #3
0
파일: test_web.py 프로젝트: dinhvh/py-web
def test_non_2XX_codes():
    async def handler(req):
        1 / 0

    app = web.app([('/', {'get': handler})])
    with web.test(app) as url:
        resp = web.get_sync(url)
        assert '1 / 0' not in resp['body']
        assert resp['code'] == 500
예제 #4
0
파일: test_web.py 프로젝트: dinhvh/py-web
def test_normal_app():
    async def handler(req):
        return {'body': 'asdf'}

    port = util.net.free_port()
    web.app([('/', {'get': handler})]).listen(port)
    proc = pool.proc.new(tornado.ioloop.IOLoop.current().start)
    url = f'http://0.0.0.0:{port}'
    assert web.get_sync(url)['body'] == 'asdf'
    proc.terminate()
예제 #5
0
파일: test_web.py 프로젝트: shresbi/py-web
def test_url_kwargs():
    @tornado.gen.coroutine
    def handler(req):
        yield None
        return {'code': 200,
                'body': json.dumps(req['kwargs']['foo'])}
    app = web.app([('/:foo/stuff', {'get': handler})])
    with web.test(app) as url:
        rep = web.get_sync(url + '/something/stuff')
        assert json.loads(rep['body']) == 'something', rep
예제 #6
0
파일: test_web.py 프로젝트: dinhvh/py-web
def test_basic():
    async def handler(req):
        assert req['verb'] == 'get'
        return {'headers': {'foo': 'bar'}, 'code': 200, 'body': 'ok'}

    app = web.app([('/', {'get': handler})])
    with web.test(app) as url:
        resp = web.get_sync(url)
        assert resp['body'] == 'ok'
        assert resp['headers']['foo'] == 'bar'
예제 #7
0
파일: test_web.py 프로젝트: shresbi/py-web
def test_non_2XX_codes():
    @tornado.gen.coroutine
    def handler(req):
        yield None
        1 / 0

    app = web.app([('/', {'get': handler})])
    with web.test(app) as url:
        rep = web.get_sync(url)
        assert '1 / 0' not in rep['body']
        assert rep['code'] == 500
예제 #8
0
파일: test_web.py 프로젝트: shresbi/py-web
def test_normal_app():
    @tornado.gen.coroutine
    def handler(req):
        yield None
        return {'body': 'asdf'}
    port = util.net.free_port()
    web.app([('/', {'get': handler})]).listen(port)
    proc = pool.proc.new(tornado.ioloop.IOLoop.current().start)
    url = 'http://0.0.0.0:{port}'.format(**locals())
    assert web.get_sync(url)['body'] == 'asdf'
    proc.terminate()
예제 #9
0
파일: test_web.py 프로젝트: dinhvh/py-web
def test_validate():
    async def handler(req):
        return {'code': 200, 'body': json.dumps(req['query'])}

    app = web.app([('/', {'get': handler})])
    with web.test(app) as url:
        resp = web.get_sync(url + '/?asdf=123&foo=bar&foo=notbar&stuff')
        assert json.loads(resp['body']) == {
            'asdf': '123',
            'foo': ['bar', 'notbar'],
            'stuff': ''
        }
예제 #10
0
파일: test_web.py 프로젝트: shresbi/py-web
def test_url_params():
    @tornado.gen.coroutine
    def handler(req):
        yield None
        return {'code': 200,
                'body': json.dumps(req['query'])}
    app = web.app([('/', {'get': handler})])
    with web.test(app) as url:
        rep = web.get_sync(url + '/?asdf=123&foo=bar&foo=notbar&stuff')
        assert json.loads(rep['body']) == {'asdf': '123',
                                           'foo': ['bar', 'notbar'],
                                           'stuff': ''}
예제 #11
0
파일: test_web.py 프로젝트: shresbi/py-web
def test_basic():
    @tornado.gen.coroutine
    def handler(req):
        yield None
        assert req['verb'] == 'get'
        return {'headers': {'foo': 'bar'},
                'code': 200,
                'body': 'ok'}
    app = web.app([('/', {'get': handler})])
    with web.test(app) as url:
        rep = web.get_sync(url)
        assert rep['body'] == 'ok'
        assert rep['headers']['foo'] == 'bar'
예제 #12
0
파일: test_web.py 프로젝트: shresbi/py-web
def test_middleware():
    def middleware(old_handler):
        @tornado.gen.coroutine
        def new_handler(req):
            req = util.dicts.merge(req, {'headers': {'asdf': ' [mod req]'}})
            rep = yield old_handler(req)
            rep = util.dicts.merge(rep, {'body': rep['body'] + ' [mod rep]'})
            return rep
        return new_handler
    @middleware
    @tornado.gen.coroutine
    def handler(req):
        yield None
        return {'headers': {'foo': 'bar'},
                'code': 200,
                'body': 'ok' + req['headers']['asdf']}
    app = web.app([('/', {'get': handler})])
    with web.test(app) as url:
        rep = web.get_sync(url)
        assert rep['body'] == 'ok [mod req] [mod rep]'