async def test_simple(dispatcher: TreeUrlDispatcher, request: web.Request): request = make_request('GET', '/api/1/pet/1') md = await dispatcher.resolve(request) assert md == {'id': '1'} request = make_request('GET', '/api/1/pets') md = await dispatcher.resolve(request) assert not md
def test_simple(dispatcher: TreeUrlDispatcher, request: web.Request): request = make_request('GET', '/api/1/pet/1') md = yield from dispatcher.resolve(request) assert md == {'id': '1'} request = make_request('GET', '/api/1/pets') md = yield from dispatcher.resolve(request) assert not md
async def test_multisubs(dispatcher: TreeUrlDispatcher): url = '/api/1/host/{host}/eth{num}/{ip:[.\d]+}/' dispatcher.add_route('GET', url, handler) request = make_request('GET', '/api/1/host/myhost/eth0/127.0.0.1/') md = await dispatcher.resolve(request) assert len(md) assert 'ip' in md assert 'num' in md assert 'host' in md request = make_request('GET', '/api/1/host/myhost/eth0/127.0.0.1') md = await dispatcher.resolve(request) assert isinstance(md, MatchInfoError)
def test_multisubs(dispatcher: TreeUrlDispatcher): url = '/api/1/host/{host}/eth{num}/{ip:[.\d]+}/' dispatcher.add_route('GET', url, handler) request = make_request('GET', '/api/1/host/myhost/eth0/127.0.0.1/') md = yield from dispatcher.resolve(request) assert len(md) assert 'ip' in md assert 'num' in md assert 'host' in md request = make_request('GET', '/api/1/host/myhost/eth0/127.0.0.1') md = yield from dispatcher.resolve(request) assert isinstance(md, MatchInfoError)
async def test_dynamic_sort(): r = TreeUrlDispatcher() r.add_get('/a/{b}-{c}', handler) route = r.add_get('/a/{b}-{c}.jpg', handler) req = make_request('GET', '/a/2-3.jpg') mi = await r.resolve(req) assert mi.route is route
async def test_init(): r = TreeUrlDispatcher() r.add_get('/', 'tests.conftest.ViewWithInit.get') req = make_request('GET', '/') mi = await r.resolve(req) result = await mi.handler(req) assert result is req, result
async def test_branch_path(): r = TreeUrlDispatcher() h = 'tests.conftest.ViewWithInit.get' r.add_get('/net/ip/', h) route = r.add_get('/net/{ip}/host', h) req = make_request('GET', '/net/ip/host') mi = await r.resolve(req) assert mi.route is route
async def test_superrouter(): request = make_request('GET', '/a/b/c/d') router = TreeUrlDispatcher() subapp = web.Application() route = subapp.router.add_get('/c/d', handler) app = web.Application(router=router) app.add_subapp('/a/b', subapp) m = await app.router.resolve(request) assert route == m.route
async def test_set_content_receiver(loop): async def test_receiver(request): pass r = TreeUrlDispatcher() r.set_content_receiver('test', test_receiver) r.add_post('/', 'tests.conftest.SimpleView.post') req = make_request('POST', '/', headers={'Content-Type': 'test'}) mi = await r.resolve(req) assert mi.route._content_receiver.get('test') is test_receiver
async def test_content_receiver(): cr = ContentReceiver() l1 = len(cr) assert l1 mime_json = 'application/json' assert mime_json in cr cr[None] = cr[mime_json] assert len(cr) == l1 + 1 request = make_request('PUT', '/', headers={'Content-Type': mime_json}) request._read_bytes = json.dumps(2).encode() assert 2 == await cr.receive(request) del cr[None] cr.freeze() with pytest.raises(RuntimeError): del cr[mime_json] with pytest.raises(RuntimeError): cr[None] = None request = make_request('PUT', '/', headers={'Content-Type': '1'}) with pytest.raises(TypeError): await cr.receive(request) assert list(cr)
async def test_default_options(test_client): headers = {hdrs.ACCESS_CONTROL_REQUEST_HEADERS: hdrs.AUTHORIZATION} request = make_request('OPTIONS', '/', headers=headers) router = TreeUrlDispatcher() mi = await router.resolve(request) assert isinstance(mi, MatchInfoError) app = web.Application(router=router) router.set_cors(app) router.add_get('/', lambda request: web.Response()) mi = await router.resolve(request) assert not isinstance(mi, MatchInfoError) client = await test_client(app) response = await client.options('/', headers=headers) assert response.status == 200 h = response.headers assert h[hdrs.ACCESS_CONTROL_ALLOW_ORIGIN] == '*' assert h[hdrs.ACCESS_CONTROL_ALLOW_METHODS] == 'GET' assert h[hdrs.ACCESS_CONTROL_ALLOW_HEADERS] == hdrs.AUTHORIZATION
async def test_dispatcher_not_resolve(): r = TreeUrlDispatcher() r.add_put('/', handler) req = make_request('GET', '/') a = await r.resolve(req) assert isinstance(a.http_exception, web.HTTPMethodNotAllowed)
def test_dispatcher_not_resolve(): r = TreeUrlDispatcher() r.add_put('/', handler) req = make_request('GET', '/') a = yield from r.resolve(req) assert isinstance(a.http_exception, web.HTTPMethodNotAllowed)