summaryrefslogtreecommitdiff
path: root/tests/decorators
diff options
context:
space:
mode:
authorth3nn3ss <chuksmcdennis@yahoo.com>2023-06-26 09:12:57 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-06-26 09:29:04 +0200
commitcd4c4c1905a838bda63d401bf93cfb77cb97ea95 (patch)
treec18b7152d555f8baea74f065282faa8df90a3c70 /tests/decorators
parent865a6650d0739e857fb605767afebdce4f8c54c3 (diff)
Added more tests for http decorators.
Diffstat (limited to 'tests/decorators')
-rw-r--r--tests/decorators/test_http.py50
1 files changed, 49 insertions, 1 deletions
diff --git a/tests/decorators/test_http.py b/tests/decorators/test_http.py
index 344e66f417..28f13ab8ce 100644
--- a/tests/decorators/test_http.py
+++ b/tests/decorators/test_http.py
@@ -1,6 +1,27 @@
+import datetime
+
from django.http import HttpRequest, HttpResponse, HttpResponseNotAllowed
from django.test import SimpleTestCase
-from django.views.decorators.http import require_safe
+from django.views.decorators.http import condition, require_http_methods, require_safe
+
+
+class RequireHttpMethodsTest(SimpleTestCase):
+ def test_require_http_methods_methods(self):
+ @require_http_methods(["GET", "PUT"])
+ def my_view(request):
+ return HttpResponse("OK")
+
+ request = HttpRequest()
+ request.method = "GET"
+ self.assertIsInstance(my_view(request), HttpResponse)
+ request.method = "PUT"
+ self.assertIsInstance(my_view(request), HttpResponse)
+ request.method = "HEAD"
+ self.assertIsInstance(my_view(request), HttpResponseNotAllowed)
+ request.method = "POST"
+ self.assertIsInstance(my_view(request), HttpResponseNotAllowed)
+ request.method = "DELETE"
+ self.assertIsInstance(my_view(request), HttpResponseNotAllowed)
class RequireSafeDecoratorTest(SimpleTestCase):
@@ -20,3 +41,30 @@ class RequireSafeDecoratorTest(SimpleTestCase):
self.assertIsInstance(my_safe_view(request), HttpResponseNotAllowed)
request.method = "DELETE"
self.assertIsInstance(my_safe_view(request), HttpResponseNotAllowed)
+
+
+class ConditionDecoratorTest(SimpleTestCase):
+ def etag_func(request, *args, **kwargs):
+ return '"b4246ffc4f62314ca13147c9d4f76974"'
+
+ def latest_entry(request, *args, **kwargs):
+ return datetime.datetime(2023, 1, 2, 23, 21, 47)
+
+ def test_condition_decorator(self):
+ @condition(
+ etag_func=self.etag_func,
+ last_modified_func=self.latest_entry,
+ )
+ def my_view(request):
+ return HttpResponse()
+
+ request = HttpRequest()
+ request.method = "GET"
+ response = my_view(request)
+
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(response.headers["ETag"], '"b4246ffc4f62314ca13147c9d4f76974"')
+ self.assertEqual(
+ response.headers["Last-Modified"],
+ "Mon, 02 Jan 2023 23:21:47 GMT",
+ )