diff options
| author | Ben Lomax <lomax.on.the.run@gmail.com> | 2023-07-08 21:54:37 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-07-10 11:43:36 +0200 |
| commit | b7a17b0ea0a2061bae752a3a2292007d41825814 (patch) | |
| tree | ea2607dfea49472007ee2318684e497dc91a71f1 /tests/decorators/test_vary.py | |
| parent | fb1c7635065321d415ad8182caf986a824bf9650 (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.py | 69 |
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") |
