def cookies(self) -> dict[str, str]:
if not hasattr(self, "_cookies"):
cookies: dict[str, str] = {}
- cookie_header = self.headers.get("cookie")
+ cookie_headers = self.headers.getlist("cookie")
+
+ for header in cookie_headers:
+ cookies.update(cookie_parser(header))
- if cookie_header:
- cookies = cookie_parser(cookie_header)
self._cookies = cookies
return self._cookies
assert result["cookies"] == expected
+def test_multiple_cookie_headers(test_client_factory: TestClientFactory) -> None:
+ async def app(scope: Scope, receive: Receive, send: Send) -> None:
+ scope["headers"] = [(b"cookie", b"a=abc"), (b"cookie", b"b=def"), (b"cookie", b"c=ghi")]
+ request = Request(scope, receive)
+ response = JSONResponse({"cookies": request.cookies})
+ await response(scope, receive, send)
+
+ client = test_client_factory(app)
+ response = client.get("/")
+ result = response.json()
+ assert result["cookies"] == {"a": "abc", "b": "def", "c": "ghi"}
+
+
def test_chunked_encoding(test_client_factory: TestClientFactory) -> None:
async def app(scope: Scope, receive: Receive, send: Send) -> None:
request = Request(scope, receive)