Exemple #1
0
def test_parse_response_sequent_messages():
    resp, rest = parse_response(
        b"HTTP/1.0 200 OK\r\nA: B\r\n\r\n"
        b"HTTP/1.0 200 OK\r\nContent-Length: 2\r\n\r\nAB"
        b"HTTP/1.0 200 OK\r\nContent-Length: 0\r\n\r\n")
    assert resp.headers["A"] == "B"
    assert resp.body == ""

    resp, rest = parse_response(rest)
    assert resp.body == "AB"

    resp, rest = parse_response(rest)
    assert resp.headers["Content-Length"] == "0"
    assert resp.body == ""
    assert rest == b""
Exemple #2
0
def test_parse_response_application_type_as_bytes():
    resp, rest = parse_response(
        b"HTTP/1.0 200 OK\r\nContent-Length: 4\r\n"
        + b"Content-Type: application/something\r\n\r\nbodyextra"
    )
    assert resp.body == b"body"
    assert rest == b"extra"
Exemple #3
0
def test_parse_response_ignore_header_case():
    resp, rest = parse_response(
        b"HTTP/1.0 200 OK\r\nCONTENT-lEnGtH: 4\r\n"
        + b"content-TYPE: application/something\r\n\r\nbodyextra"
    )
    assert resp.body == b"body"
    assert rest == b"extra"
Exemple #4
0
def test_parse_response_body_excessive_data():
    resp, rest = parse_response(
        b"HTTP/1.0 200 OK\r\nContent-Length: 4\r\n\r\nbodyextra")
    assert resp.body == "body"
    assert rest == b"extra"
Exemple #5
0
def test_parse_response_too_short_body():
    content = b"HTTP/1.0 200 OK\r\nContent-Length: 5\r\n\r\nbody"
    resp, rest = parse_response(content)

    assert resp is None
    assert rest == content
Exemple #6
0
def test_parse_response_body():
    resp, rest = parse_response(
        b"HTTP/1.0 200 OK\r\nContent-Length: 4\r\n\r\nbody")
    assert resp.body == "body"
    assert rest == b""
Exemple #7
0
def test_parse_response_headers():
    resp, rest = parse_response(b"HTTP/1.0 200 OK\r\nA: B\r\nC: D\r\n\r\n")
    assert len(resp.headers) == 2
    assert resp.headers["A"] == "B"
    assert resp.headers["C"] == "D"
    assert rest == b""
Exemple #8
0
def test_parse_response_missing_ending():
    with pytest.raises(ValueError) as exc:
        parse_response(b"HTTP/1.0 200 OK\r\n")

    assert "missing end lines" in str(exc)
Exemple #9
0
def test_parse_response_ok_first_line():
    resp, rest = parse_response(b"HTTP/1.0 200 OK\r\n\r\n")
    assert resp.code == 200
    assert resp.message == "OK"
    assert rest == b""
Exemple #10
0
def test_parse_response_arbitrary_protocol_header():
    resp, _ = parse_response(b"FOO/3.14 200 OK\r\n\r\n")

    assert resp.protocol == "FOO"
    assert resp.version == "3.14"