summaryrefslogtreecommitdiff
path: root/tests/decorators/test_vary.py
diff options
context:
space:
mode:
authorBen Lomax <lomax.on.the.run@gmail.com>2023-07-08 21:54:37 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-07-10 11:43:36 +0200
commitb7a17b0ea0a2061bae752a3a2292007d41825814 (patch)
treeea2607dfea49472007ee2318684e497dc91a71f1 /tests/decorators/test_vary.py
parentfb1c7635065321d415ad8182caf986a824bf9650 (diff)
Refs #31949 -- Made @vary_on_(cookie/headers) decorators work with async functions.
Diffstat (limited to 'tests/decorators/test_vary.py')
-rw-r--r--tests/decorators/test_vary.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/decorators/test_vary.py b/tests/decorators/test_vary.py
new file mode 100644
index 0000000000..ccab18a660
--- /dev/null
+++ b/tests/decorators/test_vary.py
@@ -0,0 +1,69 @@
+from asgiref.sync import iscoroutinefunction
+
+from django.http import HttpRequest, HttpResponse
+from django.test import SimpleTestCase
+from django.views.decorators.vary import vary_on_cookie, vary_on_headers
+
+
+class VaryOnHeadersTests(SimpleTestCase):
+ def test_wrapped_sync_function_is_not_coroutine_function(self):
+ def sync_view(request):
+ return HttpResponse()
+
+ wrapped_view = vary_on_headers()(sync_view)
+ self.assertIs(iscoroutinefunction(wrapped_view), False)
+
+ def test_wrapped_async_function_is_coroutine_function(self):
+ async def async_view(request):
+ return HttpResponse()
+
+ wrapped_view = vary_on_headers()(async_view)
+ self.assertIs(iscoroutinefunction(wrapped_view), True)
+
+ def test_vary_on_headers_decorator(self):
+ @vary_on_headers("Header", "Another-header")
+ def sync_view(request):
+ return HttpResponse()
+
+ response = sync_view(HttpRequest())
+ self.assertEqual(response.get("Vary"), "Header, Another-header")
+
+ async def test_vary_on_headers_decorator_async_view(self):
+ @vary_on_headers("Header", "Another-header")
+ async def async_view(request):
+ return HttpResponse()
+
+ response = await async_view(HttpRequest())
+ self.assertEqual(response.get("Vary"), "Header, Another-header")
+
+
+class VaryOnCookieTests(SimpleTestCase):
+ def test_wrapped_sync_function_is_not_coroutine_function(self):
+ def sync_view(request):
+ return HttpResponse()
+
+ wrapped_view = vary_on_cookie(sync_view)
+ self.assertIs(iscoroutinefunction(wrapped_view), False)
+
+ def test_wrapped_async_function_is_coroutine_function(self):
+ async def async_view(request):
+ return HttpResponse()
+
+ wrapped_view = vary_on_cookie(async_view)
+ self.assertIs(iscoroutinefunction(wrapped_view), True)
+
+ def test_vary_on_cookie_decorator(self):
+ @vary_on_cookie
+ def sync_view(request):
+ return HttpResponse()
+
+ response = sync_view(HttpRequest())
+ self.assertEqual(response.get("Vary"), "Cookie")
+
+ async def test_vary_on_cookie_decorator_async_view(self):
+ @vary_on_cookie
+ async def async_view(request):
+ return HttpResponse()
+
+ response = await async_view(HttpRequest())
+ self.assertEqual(response.get("Vary"), "Cookie")