Skip to content

Commit

Permalink
hooks: rename with_hook to with_post_hook
Browse files Browse the repository at this point in the history
This is to make it possible to implement with_pre_hook in the future.
  • Loading branch information
csernazs committed Jul 11, 2024
1 parent 0d6baf7 commit 1ebc1fe
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 13 deletions.
2 changes: 1 addition & 1 deletion doc/howto.rst
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ Example:
.. literalinclude :: ../tests/examples/test_howto_custom_hooks.py
:language: python
``with_hook`` can be called multiple times, in this case *pytest-httpserver*
``with_post_hook`` can be called multiple times, in this case *pytest-httpserver*
will register the hooks, and hooks will be called sequentially, one by one. Each
hook will receive the response what the previous hook returned, and the last
hook called will return the final response which will be sent back to the client.
2 changes: 1 addition & 1 deletion pytest_httpserver/httpserver.py
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@ def __init__(self, matcher: RequestMatcher):
self.request_handler: Callable[[Request], Response] | None = None
self._hooks: list[Callable[[Request, Response], Response]] = []

def with_hook(self, hook: Callable[[Request, Response], Response]):
def with_post_hook(self, hook: Callable[[Request, Response], Response]):
self._hooks.append(hook)
return self

Expand Down
2 changes: 1 addition & 1 deletion tests/examples/test_howto_custom_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ def my_hook(_request: Request, response: Response) -> Response:


def test_custom_hook(httpserver: HTTPServer):
httpserver.expect_request("/foo").with_hook(my_hook).respond_with_data(b"OK")
httpserver.expect_request("/foo").with_post_hook(my_hook).respond_with_data(b"OK")

assert requests.get(httpserver.url_for("/foo")).headers["X-Example"] == "Example"
2 changes: 1 addition & 1 deletion tests/examples/test_howto_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@

def test_delay(httpserver: HTTPServer):
# this adds 0.5 seconds delay to the server response
httpserver.expect_request("/foo").with_hook(Delay(0.5)).respond_with_json({"example": "foo"})
httpserver.expect_request("/foo").with_post_hook(Delay(0.5)).respond_with_json({"example": "foo"})

assert requests.get(httpserver.url_for("/foo")).json() == {"example": "foo"}
20 changes: 11 additions & 9 deletions tests/test_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,25 @@ def hook(_request: Request, response: Response) -> Response:

def test_hook(httpserver: HTTPServer):
my_hook = suffix_hook_factory(b"-SUFFIX")
httpserver.expect_request("/foo").with_hook(my_hook).respond_with_data("OK")
httpserver.expect_request("/foo").with_post_hook(my_hook).respond_with_data("OK")

assert requests.get(httpserver.url_for("/foo")).text == "OK-SUFFIX"


def test_delay_hook(httpserver: HTTPServer):
delay = MyDelay(10)
httpserver.expect_request("/foo").with_hook(delay).respond_with_data("OK")
httpserver.expect_request("/foo").with_post_hook(delay).respond_with_data("OK")
assert requests.get(httpserver.url_for("/foo")).text == "OK"
assert delay.evidence == 10


def test_garbage_hook(httpserver: HTTPServer):
httpserver.expect_request("/prefix").with_hook(Garbage(prefix_size=128)).respond_with_data("OK")
httpserver.expect_request("/suffix").with_hook(Garbage(suffix_size=128)).respond_with_data("OK")
httpserver.expect_request("/both").with_hook(Garbage(prefix_size=128, suffix_size=128)).respond_with_data("OK")
httpserver.expect_request("/large_prefix").with_hook(Garbage(prefix_size=10 * 1024 * 1024)).respond_with_data("OK")
httpserver.expect_request("/prefix").with_post_hook(Garbage(prefix_size=128)).respond_with_data("OK")
httpserver.expect_request("/suffix").with_post_hook(Garbage(suffix_size=128)).respond_with_data("OK")
httpserver.expect_request("/both").with_post_hook(Garbage(prefix_size=128, suffix_size=128)).respond_with_data("OK")
httpserver.expect_request("/large_prefix").with_post_hook(Garbage(prefix_size=10 * 1024 * 1024)).respond_with_data(
"OK"
)

resp_content = requests.get(httpserver.url_for("/prefix")).content
assert len(resp_content) == 130
Expand All @@ -79,14 +81,14 @@ def test_garbage_hook(httpserver: HTTPServer):

def test_chain(httpserver: HTTPServer):
delay = MyDelay(10)
httpserver.expect_request("/foo").with_hook(Chain(delay, Garbage(128))).respond_with_data("OK")
httpserver.expect_request("/foo").with_post_hook(Chain(delay, Garbage(128))).respond_with_data("OK")
assert len(requests.get(httpserver.url_for("/foo")).content) == 130
assert delay.evidence == 10


def test_multiple_hooks(httpserver: HTTPServer):
delay = MyDelay(10)
httpserver.expect_request("/foo").with_hook(delay).with_hook(Garbage(128)).respond_with_data("OK")
httpserver.expect_request("/foo").with_post_hook(delay).with_post_hook(Garbage(128)).respond_with_data("OK")
assert len(requests.get(httpserver.url_for("/foo")).content) == 130
assert delay.evidence == 10

Expand All @@ -95,6 +97,6 @@ def test_multiple_hooks_correct_order(httpserver: HTTPServer):
hook1 = suffix_hook_factory(b"-S1")
hook2 = suffix_hook_factory(b"-S2")

httpserver.expect_request("/foo").with_hook(hook1).with_hook(hook2).respond_with_data("OK")
httpserver.expect_request("/foo").with_post_hook(hook1).with_post_hook(hook2).respond_with_data("OK")

assert requests.get(httpserver.url_for("/foo")).text == "OK-S1-S2"

0 comments on commit 1ebc1fe

Please sign in to comment.