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
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
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
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")]
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)]
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)]
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
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
def test_callback_message_type(message, mtype): parser = HTTPParser() assert parser.type is None parser.parse(message) assert parser.type == mtype
def test_unknown_callback(): parser = HTTPParser() with pytest.raises(ValueError): parser.callback("wat", lambda: None)