test_vary.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from asgiref.sync import iscoroutinefunction
  2. from django.http import HttpRequest, HttpResponse
  3. from django.test import SimpleTestCase
  4. from django.views.decorators.vary import vary_on_cookie, vary_on_headers
  5. class VaryOnHeadersTests(SimpleTestCase):
  6. def test_wrapped_sync_function_is_not_coroutine_function(self):
  7. def sync_view(request):
  8. return HttpResponse()
  9. wrapped_view = vary_on_headers()(sync_view)
  10. self.assertIs(iscoroutinefunction(wrapped_view), False)
  11. def test_wrapped_async_function_is_coroutine_function(self):
  12. async def async_view(request):
  13. return HttpResponse()
  14. wrapped_view = vary_on_headers()(async_view)
  15. self.assertIs(iscoroutinefunction(wrapped_view), True)
  16. def test_vary_on_headers_decorator(self):
  17. @vary_on_headers("Header", "Another-header")
  18. def sync_view(request):
  19. return HttpResponse()
  20. response = sync_view(HttpRequest())
  21. self.assertEqual(response.get("Vary"), "Header, Another-header")
  22. async def test_vary_on_headers_decorator_async_view(self):
  23. @vary_on_headers("Header", "Another-header")
  24. async def async_view(request):
  25. return HttpResponse()
  26. response = await async_view(HttpRequest())
  27. self.assertEqual(response.get("Vary"), "Header, Another-header")
  28. class VaryOnCookieTests(SimpleTestCase):
  29. def test_wrapped_sync_function_is_not_coroutine_function(self):
  30. def sync_view(request):
  31. return HttpResponse()
  32. wrapped_view = vary_on_cookie(sync_view)
  33. self.assertIs(iscoroutinefunction(wrapped_view), False)
  34. def test_wrapped_async_function_is_coroutine_function(self):
  35. async def async_view(request):
  36. return HttpResponse()
  37. wrapped_view = vary_on_cookie(async_view)
  38. self.assertIs(iscoroutinefunction(wrapped_view), True)
  39. def test_vary_on_cookie_decorator(self):
  40. @vary_on_cookie
  41. def sync_view(request):
  42. return HttpResponse()
  43. response = sync_view(HttpRequest())
  44. self.assertEqual(response.get("Vary"), "Cookie")
  45. async def test_vary_on_cookie_decorator_async_view(self):
  46. @vary_on_cookie
  47. async def async_view(request):
  48. return HttpResponse()
  49. response = await async_view(HttpRequest())
  50. self.assertEqual(response.get("Vary"), "Cookie")