diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/httpwrappers/tests.py | 21 | ||||
| -rw-r--r-- | tests/shortcuts/tests.py | 21 |
2 files changed, 42 insertions, 0 deletions
diff --git a/tests/httpwrappers/tests.py b/tests/httpwrappers/tests.py index 3774ff2d67..f85d33e823 100644 --- a/tests/httpwrappers/tests.py +++ b/tests/httpwrappers/tests.py @@ -566,6 +566,27 @@ class HttpResponseSubclassesTests(SimpleTestCase): r = HttpResponseRedirect(lazystr("/redirected/")) self.assertEqual(r.url, "/redirected/") + def test_redirect_modifiers(self): + cases = [ + (HttpResponseRedirect, "Moved temporarily", False, 302), + (HttpResponseRedirect, "Moved temporarily preserve method", True, 307), + (HttpResponsePermanentRedirect, "Moved permanently", False, 301), + ( + HttpResponsePermanentRedirect, + "Moved permanently preserve method", + True, + 308, + ), + ] + for response_class, content, preserve_request, expected_status_code in cases: + with self.subTest(status_code=expected_status_code): + response = response_class( + "/redirected/", content=content, preserve_request=preserve_request + ) + self.assertEqual(response.status_code, expected_status_code) + self.assertEqual(response.content.decode(), content) + self.assertEqual(response.url, response.headers["Location"]) + def test_redirect_repr(self): response = HttpResponseRedirect("/redirected/") expected = ( diff --git a/tests/shortcuts/tests.py b/tests/shortcuts/tests.py index 8e9c13d206..b80b8f5951 100644 --- a/tests/shortcuts/tests.py +++ b/tests/shortcuts/tests.py @@ -1,3 +1,5 @@ +from django.http.response import HttpResponseRedirectBase +from django.shortcuts import redirect from django.test import SimpleTestCase, override_settings from django.test.utils import require_jinja2 @@ -35,3 +37,22 @@ class RenderTests(SimpleTestCase): self.assertEqual(response.content, b"DTL\n") response = self.client.get("/render/using/?using=jinja2") self.assertEqual(response.content, b"Jinja2\n") + + +class RedirectTests(SimpleTestCase): + def test_redirect_response_status_code(self): + tests = [ + (True, False, 301), + (False, False, 302), + (False, True, 307), + (True, True, 308), + ] + for permanent, preserve_request, expected_status_code in tests: + with self.subTest(permanent=permanent, preserve_request=preserve_request): + response = redirect( + "/path/is/irrelevant/", + permanent=permanent, + preserve_request=preserve_request, + ) + self.assertIsInstance(response, HttpResponseRedirectBase) + self.assertEqual(response.status_code, expected_status_code) |
