summaryrefslogtreecommitdiff
path: root/tests/middleware
diff options
context:
space:
mode:
authorCarlton Gibson <carlton.gibson@noumenal.es>2020-10-20 09:14:48 +0200
committerCarlton Gibson <carlton@noumenal.es>2020-10-22 14:15:19 +0200
commitad11f5b8c9cbfdb763e08c83170694abc0c5fc1e (patch)
tree28647127cf0bc05120bee7417609ec997a5b1f96 /tests/middleware
parent34180922380cf41cd684f846ecf00f92eb289bcf (diff)
downloaddjango-ad11f5b8c9cbfdb763e08c83170694abc0c5fc1e.tar.gz
Fixed #32124 -- Added per-view opt-out for APPEND_SLASH behavior.
Diffstat (limited to 'tests/middleware')
-rw-r--r--tests/middleware/tests.py11
-rw-r--r--tests/middleware/urls.py3
-rw-r--r--tests/middleware/views.py14
3 files changed, 28 insertions, 0 deletions
diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py
index 4b49858cd9..c7a007b821 100644
--- a/tests/middleware/tests.py
+++ b/tests/middleware/tests.py
@@ -128,6 +128,17 @@ class CommonMiddlewareTest(SimpleTestCase):
self.assertEqual(CommonMiddleware(get_response_404)(request).status_code, 404)
@override_settings(APPEND_SLASH=True)
+ def test_append_slash_opt_out(self):
+ """
+ Views marked with @no_append_slash should be left alone.
+ """
+ request = self.rf.get('/sensitive_fbv')
+ self.assertEqual(CommonMiddleware(get_response_404)(request).status_code, 404)
+
+ request = self.rf.get('/sensitive_cbv')
+ self.assertEqual(CommonMiddleware(get_response_404)(request).status_code, 404)
+
+ @override_settings(APPEND_SLASH=True)
def test_append_slash_quoted(self):
"""
URLs which require quoting should be redirected to their slash version.
diff --git a/tests/middleware/urls.py b/tests/middleware/urls.py
index 8411d87b5a..e76f4ac771 100644
--- a/tests/middleware/urls.py
+++ b/tests/middleware/urls.py
@@ -8,4 +8,7 @@ urlpatterns = [
path('needsquoting#/', views.empty_view),
# Accepts paths with two leading slashes.
re_path(r'^(.+)/security/$', views.empty_view),
+ # Should not append slash.
+ path('sensitive_fbv/', views.sensitive_fbv),
+ path('sensitive_cbv/', views.SensitiveCBV.as_view()),
]
diff --git a/tests/middleware/views.py b/tests/middleware/views.py
index 3f8e055a53..ee36f418f2 100644
--- a/tests/middleware/views.py
+++ b/tests/middleware/views.py
@@ -1,5 +1,19 @@
from django.http import HttpResponse
+from django.utils.decorators import method_decorator
+from django.views.decorators.common import no_append_slash
+from django.views.generic import View
def empty_view(request, *args, **kwargs):
return HttpResponse()
+
+
+@no_append_slash
+def sensitive_fbv(request, *args, **kwargs):
+ return HttpResponse()
+
+
+@method_decorator(no_append_slash, name='dispatch')
+class SensitiveCBV(View):
+ def get(self, *args, **kwargs):
+ return HttpResponse()