From 1cd91d5d4bfb65ea7b5c7177310f849d05037609 Mon Sep 17 00:00:00 2001 From: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> Date: Wed, 18 Jun 2025 08:55:15 +0200 Subject: [PATCH] Refs #36467 -- Added test for Set-Cookie header values in ASGIHandler. --- tests/asgi/tests.py | 10 ++++++++++ tests/asgi/urls.py | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/tests/asgi/tests.py b/tests/asgi/tests.py index 94ec5dc560..d3cc09cc50 100644 --- a/tests/asgi/tests.py +++ b/tests/asgi/tests.py @@ -78,6 +78,16 @@ class ASGITest(SimpleTestCase): # Allow response.close() to finish. await communicator.wait() + async def test_asgi_cookies(self): + application = get_asgi_application() + scope = self.async_request_factory._base_scope(path="/cookie/") + communicator = ApplicationCommunicator(application, scope) + await communicator.send_input({"type": "http.request"}) + response_start = await communicator.receive_output() + self.assertIn((b"Set-Cookie", b"key=value; Path=/"), response_start["headers"]) + # Allow response.close() to finish. + await communicator.wait() + # Python's file API is not async compatible. A third-party library such # as https://github.com/Tinche/aiofiles allows passing the file to # FileResponse as an async iterator. With a sync iterator diff --git a/tests/asgi/urls.py b/tests/asgi/urls.py index 931b7d5206..0311cf3f76 100644 --- a/tests/asgi/urls.py +++ b/tests/asgi/urls.py @@ -25,6 +25,12 @@ def hello_meta(request): ) +def hello_cookie(request): + response = HttpResponse("Hello World!") + response.set_cookie("key", "value") + return response + + def sync_waiter(request): with sync_waiter.lock: sync_waiter.active_threads.add(threading.current_thread()) @@ -61,6 +67,7 @@ test_filename = __file__ urlpatterns = [ path("", hello), + path("cookie/", hello_cookie), path("file/", lambda x: FileResponse(open(test_filename, "rb"))), path("meta/", hello_meta), path("post/", post_echo),