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_unknown_callback(): parser = HTTPParser() with pytest.raises(ValueError): parser.callback("wat", lambda: None)