summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBen Cail <bcail@crossway.org>2023-10-27 09:23:07 -0400
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-10-31 05:29:43 +0100
commit523fed1d2faafa6610f27dad9bbb7d7c4e122ea5 (patch)
tree775c155ee072fed7f2676511dba12876e179feef /tests
parent9b18af4f6f12b9d25157e0b5afc3dca198f6dd06 (diff)
Fixed #32106 -- Preserved HTTP_HOST in test Client when following redirects.
Co-authored-by: David Sanders <shang.xiao.sanders@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/test_client/tests.py7
-rw-r--r--tests/test_client/urls.py6
-rw-r--r--tests/test_client/views.py8
3 files changed, 21 insertions, 0 deletions
diff --git a/tests/test_client/tests.py b/tests/test_client/tests.py
index 402f282588..15f5cbe44e 100644
--- a/tests/test_client/tests.py
+++ b/tests/test_client/tests.py
@@ -856,6 +856,13 @@ class ClientTest(TestCase):
response, "https://www.djangoproject.com/", fetch_redirect_response=False
)
+ @override_settings(ALLOWED_HOSTS=["hostname1", "hostname2"])
+ def test_redirect_with_http_host(self):
+ response = self.client.get(
+ "/redirect_to_different_hostname/", follow=True, HTTP_HOST="hostname1"
+ )
+ self.assertEqual(response.content, b"hostname2")
+
def test_external_redirect_without_trailing_slash(self):
"""
Client._handle_redirects() with an empty path.
diff --git a/tests/test_client/urls.py b/tests/test_client/urls.py
index 228e6c6a78..96b9dc6587 100644
--- a/tests/test_client/urls.py
+++ b/tests/test_client/urls.py
@@ -25,6 +25,12 @@ urlpatterns = [
"redirect_view_308_query_string/",
views.method_saving_308_redirect_query_string_view,
),
+ path(
+ "redirect_to_different_hostname/",
+ views.redirect_to_different_hostname,
+ name="redirect_to_different_hostname",
+ ),
+ path("get_host_view/", views.get_host_view, name="get_host_view"),
path("secure_view/", views.view_with_secure),
path(
"permanent_redirect_view/",
diff --git a/tests/test_client/views.py b/tests/test_client/views.py
index 494844009d..96e0142dd3 100644
--- a/tests/test_client/views.py
+++ b/tests/test_client/views.py
@@ -179,6 +179,14 @@ def method_saving_308_redirect_view(request):
return _post_view_redirect(request, 308)
+def redirect_to_different_hostname(request):
+ return HttpResponseRedirect("https://hostname2/get_host_view/")
+
+
+def get_host_view(request):
+ return HttpResponse(request.get_host())
+
+
def view_with_secure(request):
"A view that indicates if the request was secure"
response = HttpResponse()