async def test_request_send_push_promise() -> None: push_promise: Tuple[str, Headers] = None async def _push(path: str, headers: Headers) -> None: nonlocal push_promise push_promise = (path, headers) request = Request( "GET", "http", "/", b"a=b&a=c", Headers( { "host": "quart.com", "Content-Type": "application/x-www-form-urlencoded", "Accept": "*/*", "Accept-Encoding": "gzip", "User-Agent": "quart", } ), "", "2", send_push_promise=_push, ) await request.send_push_promise("/") assert push_promise[0] == "/" valid_headers = {"Accept": "*/*", "Accept-Encoding": "gzip", "User-Agent": "quart"} assert len(push_promise[1]) == len(valid_headers) for name, value in valid_headers.items(): assert push_promise[1][name] == value
async def test_request_send_push_promise() -> None: push_promise: Tuple[str, Headers] = None async def _push(path: str, headers: Headers) -> None: nonlocal push_promise push_promise = (path, headers) request = Request( 'GET', 'http', '/', b'a=b&a=c', CIMultiDict({ 'host': 'quart.com', 'Content-Type': 'application/x-www-form-urlencoded', "Accept": "*/*", "Accept-Encoding": "gzip", "User-Agent": "quart", }), "", "2", send_push_promise=_push, ) await request.send_push_promise("/") assert push_promise[0] == "/" valid_headers = { "Accept": "*/*", "Accept-Encoding": "gzip", "User-Agent": "quart", } assert len(push_promise[1]) == len(valid_headers) for name, value in valid_headers.items(): assert push_promise[1][name] == value
def test_request_exceeds_max_content_length() -> None: max_content_length = 5 headers = CIMultiDict() headers['Content-Length'] = str(max_content_length + 1) with pytest.raises(RequestEntityTooLarge): Request('POST', 'http', '/', headers, max_content_length=max_content_length)
async def test_request_get_data_timeout() -> None: request = Request( 'POST', 'http', '/', b'', CIMultiDict(), body_timeout=1, send_push_promise=no_op_push, ) with pytest.raises(RequestTimeout): await request.get_data()
async def test_request_values() -> None: request = Request( 'GET', 'http', '/?a=b&a=c', CIMultiDict({ 'host': 'quart.com', 'Content-Type': 'application/x-www-form-urlencoded' }), ) request.body.append(urlencode({'a': 'd'}).encode()) request.body.set_complete() assert (await request.values).getlist('a') == ['b', 'c', 'd']
async def test_request_values() -> None: request = Request( "GET", "http", "/", b"a=b&a=c", Headers({"host": "quart.com", "Content-Type": "application/x-www-form-urlencoded"}), "", "1.1", send_push_promise=no_op_push, ) request.body.append(urlencode({"a": "d"}).encode()) request.body.set_complete() assert (await request.values).getlist("a") == ["b", "c", "d"]
async def test_request_get_data_timeout() -> None: request = Request( "POST", "http", "/", b"", Headers(), "", "1.1", body_timeout=1, send_push_promise=no_op_push, ) with pytest.raises(RequestTimeout): await request.get_data()
async def test_request_exceeds_max_content_length() -> None: max_content_length = 5 headers = CIMultiDict() headers['Content-Length'] = str(max_content_length + 1) request = Request( 'POST', 'http', '/', b'', headers, max_content_length=max_content_length, send_push_promise=no_op_push, ) with pytest.raises(RequestEntityTooLarge): await request.get_data()
async def test_request_exceeds_max_content_length() -> None: max_content_length = 5 headers = Headers() headers["Content-Length"] = str(max_content_length + 1) request = Request( "POST", "http", "/", b"", headers, "", "1.1", max_content_length=max_content_length, send_push_promise=no_op_push, ) with pytest.raises(RequestEntityTooLarge): await request.get_data()
async def test_bind_warning(server_name: str, expected: int, http_scope: HTTPScope) -> None: map_ = QuartMap(host_matching=False) request = Request( "GET", "http", "/", b"", Headers([("host", "Localhost")]), "", "1.1", http_scope, send_push_promise=no_op_push, ) with pytest.warns(None) as record: map_.bind_to_request(request, subdomain=None, server_name=server_name) assert len(record) == expected
async def test_request_values(method: str, expected: List[str], http_scope: HTTPScope) -> None: request = Request( method, "http", "/", b"a=b&a=c", Headers({ "host": "quart.com", "Content-Type": "application/x-www-form-urlencoded" }), "", "1.1", http_scope, send_push_promise=no_op_push, ) request.body.append(urlencode({"a": "d"}).encode()) request.body.set_complete() assert (await request.values).getlist("a") == expected
async def test_request_get_data_timeout() -> None: request = Request('POST', 'http', '/', CIMultiDict(), body_timeout=1) with pytest.raises(RequestTimeout): await request.get_data()