Exemplo n.º 1
0
def test_callback_decorator():
    parser = HTTPParser()

    @parser.callback(Callback.http_version)
    @pretend.call_recorder
    def noop(*args, **kwargs):
        pass

    parser.parse(b"HTTP/1.1 200 OK\r\n\r\n")

    assert parser.finished
    assert not parser.errored
Exemplo n.º 2
0
def test_error_is_none():
    parser = HTTPParser()

    assert not parser.finished
    assert not parser.errored
    assert parser.error is None

    parser.parse(b"HTTP/2.0 200 OK\r\n\r\n")

    assert parser.finished
    assert parser.errored
    assert parser.error == Error.BadVersion
Exemplo n.º 3
0
def test_message_reset():
    parser = HTTPParser()

    assert not parser.finished
    assert not parser.errored
    assert parser.error is None
    assert parser.type is None

    parser.parse(b"HTTP/1.1 200 OK\r\n\r\n")

    assert parser.finished
    assert not parser.errored
    assert parser.error is None
    assert parser.type is MessageType.Response

    parser.reset()

    assert not parser.finished
    assert not parser.errored
    assert parser.error is None
    assert parser.type is None

    parser.parse(b"GET / HTTP/1.1\r\n\r\n")

    assert parser.finished
    assert not parser.errored
    assert parser.error is None
    assert parser.type is MessageType.Request
Exemplo n.º 4
0
def test_header_callback():
    func = pretend.call_recorder(lambda name, value: None)

    parser = HTTPParser()
    parser.callback(Callback.http_header, func)
    parser.parse(b"HTTP/1.1 200 OK\r\nFoo: Bar\r\n\r\n")

    assert parser.finished
    assert not parser.errored
    assert func.calls == [pretend.call(b"Foo", b"Bar")]
Exemplo n.º 5
0
def test_status_code_callback():
    func = pretend.call_recorder(lambda status_code: None)

    parser = HTTPParser()
    parser.callback(Callback.status_code, func)
    parser.parse(b"HTTP/1.1 200 OK\r\n\r\n")

    assert parser.finished
    assert not parser.errored
    assert func.calls == [pretend.call(200)]
Exemplo n.º 6
0
def test_element_callback_response(callback, expected):
    func = pretend.call_recorder(lambda data: None)

    parser = HTTPParser()
    parser.callback(callback, func)
    parser.parse(b"HTTP/1.1 200 OK\r\n\r\n")

    assert parser.finished
    assert not parser.errored
    assert func.calls == [pretend.call(expected)]
Exemplo n.º 7
0
def test_callback_error(callback, data):
    @pretend.call_recorder
    def raiser(*args, **kwargs):
        raise Exception

    parser = HTTPParser()
    parser.callback(callback, raiser)
    parser.parse(data)

    assert parser.finished
    assert parser.errored
    assert parser.error == Error.General
Exemplo n.º 8
0
def test_basic():
    parser = HTTPParser()
    assert parser.parse(b"GET / HTTP/1.1\r\n\r\n") == 18
    assert parser.finished
    assert not parser.errored
Exemplo n.º 9
0
def test_callback_message_type(message, mtype):
    parser = HTTPParser()
    assert parser.type is None
    parser.parse(message)
    assert parser.type == mtype
Exemplo n.º 10
0
def test_unknown_callback():
    parser = HTTPParser()

    with pytest.raises(ValueError):
        parser.callback("wat", lambda: None)