|
1 |
| -from typing import Any, Dict, Optional |
| 1 | +import logging |
| 2 | +from typing import Any, Dict, Optional, Union |
2 | 3 |
|
3 | 4 | import pytest
|
4 | 5 |
|
|
7 | 8 | from litestar.testing import create_test_client
|
8 | 9 | from litestar.types import AnyCallable, BeforeRequestHookHandler
|
9 | 10 |
|
| 11 | +logger = logging.getLogger(__name__) |
| 12 | + |
| 13 | + |
| 14 | +async def async_before_request_handler_with_parent( |
| 15 | + request: Request[Any, Any, State], /, *, parent: Optional[BeforeRequestHookHandler] = None |
| 16 | +) -> Optional[Dict[str, Union[str, int]]]: |
| 17 | + assert isinstance(request, Request) |
| 18 | + retval: Dict[str, Union[str, int]] = (None if parent is None else await parent(request)) or {} |
| 19 | + retval.setdefault("amended_count", 0) |
| 20 | + retval["amended_count"] += 1 # type: ignore |
| 21 | + return retval |
| 22 | + |
10 | 23 |
|
11 | 24 | def sync_before_request_handler_with_return_value(request: Request[Any, Any, State]) -> Dict[str, str]:
|
12 | 25 | assert isinstance(request, Request)
|
@@ -88,6 +101,27 @@ def handler() -> Dict[str, str]:
|
88 | 101 | {"hello": "world"},
|
89 | 102 | ],
|
90 | 103 | [None, None, None, async_before_request_handler_without_return_value, {"hello": "world"}],
|
| 104 | + [ |
| 105 | + sync_before_request_handler_with_return_value, |
| 106 | + None, |
| 107 | + None, |
| 108 | + async_before_request_handler_with_parent, |
| 109 | + {"hello": "moon", "amended_count": 1}, |
| 110 | + ], |
| 111 | + [ |
| 112 | + sync_before_request_handler_with_return_value, |
| 113 | + None, |
| 114 | + async_before_request_handler_with_parent, |
| 115 | + async_before_request_handler_with_parent, |
| 116 | + {"hello": "moon", "amended_count": 2}, |
| 117 | + ], |
| 118 | + [ |
| 119 | + sync_before_request_handler_with_return_value, |
| 120 | + async_before_request_handler_with_parent, |
| 121 | + async_before_request_handler_with_parent, |
| 122 | + async_before_request_handler_with_parent, |
| 123 | + {"hello": "moon", "amended_count": 3}, |
| 124 | + ], |
91 | 125 | ],
|
92 | 126 | )
|
93 | 127 | def test_before_request_handler_resolution(
|
|
0 commit comments