Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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()
Ejemplo n.º 5
0
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']
Ejemplo n.º 6
0
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"]
Ejemplo n.º 7
0
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()
Ejemplo n.º 8
0
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()
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
async def test_request_get_data_timeout() -> None:
    request = Request('POST', 'http', '/', CIMultiDict(), body_timeout=1)
    with pytest.raises(RequestTimeout):
        await request.get_data()