1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00

Refs #34074 -- Used headers argument for RequestFactory and Client in docs and tests.

This commit is contained in:
David Wobrock
2022-12-24 00:10:25 +01:00
committed by Mariusz Felisiak
parent 0d3ccf7512
commit 99bd5fb4c2
14 changed files with 113 additions and 74 deletions

View File

@@ -252,29 +252,39 @@ class URLRedirectTests(URLTestCaseBase):
self.assertEqual(response.status_code, 200)
def test_en_redirect(self):
response = self.client.get("/account/register/", HTTP_ACCEPT_LANGUAGE="en")
response = self.client.get(
"/account/register/", headers={"accept-language": "en"}
)
self.assertRedirects(response, "/en/account/register/")
response = self.client.get(response.headers["location"])
self.assertEqual(response.status_code, 200)
def test_en_redirect_wrong_url(self):
response = self.client.get("/profiel/registreren/", HTTP_ACCEPT_LANGUAGE="en")
response = self.client.get(
"/profiel/registreren/", headers={"accept-language": "en"}
)
self.assertEqual(response.status_code, 404)
def test_nl_redirect(self):
response = self.client.get("/profiel/registreren/", HTTP_ACCEPT_LANGUAGE="nl")
response = self.client.get(
"/profiel/registreren/", headers={"accept-language": "nl"}
)
self.assertRedirects(response, "/nl/profiel/registreren/")
response = self.client.get(response.headers["location"])
self.assertEqual(response.status_code, 200)
def test_nl_redirect_wrong_url(self):
response = self.client.get("/account/register/", HTTP_ACCEPT_LANGUAGE="nl")
response = self.client.get(
"/account/register/", headers={"accept-language": "nl"}
)
self.assertEqual(response.status_code, 404)
def test_pt_br_redirect(self):
response = self.client.get("/conta/registre-se/", HTTP_ACCEPT_LANGUAGE="pt-br")
response = self.client.get(
"/conta/registre-se/", headers={"accept-language": "pt-br"}
)
self.assertRedirects(response, "/pt-br/conta/registre-se/")
response = self.client.get(response.headers["location"])
@@ -282,7 +292,9 @@ class URLRedirectTests(URLTestCaseBase):
def test_pl_pl_redirect(self):
# language from outside of the supported LANGUAGES list
response = self.client.get("/account/register/", HTTP_ACCEPT_LANGUAGE="pl-pl")
response = self.client.get(
"/account/register/", headers={"accept-language": "pl-pl"}
)
self.assertRedirects(response, "/en/account/register/")
response = self.client.get(response.headers["location"])
@@ -295,7 +307,9 @@ class URLRedirectTests(URLTestCaseBase):
],
)
def test_custom_redirect_class(self):
response = self.client.get("/account/register/", HTTP_ACCEPT_LANGUAGE="en")
response = self.client.get(
"/account/register/", headers={"accept-language": "en"}
)
self.assertRedirects(response, "/en/account/register/", 301)
@@ -314,7 +328,9 @@ class URLVaryAcceptLanguageTests(URLTestCaseBase):
The redirect to a prefixed URL depends on 'Accept-Language' and
'Cookie', but once prefixed no header is set.
"""
response = self.client.get("/account/register/", HTTP_ACCEPT_LANGUAGE="en")
response = self.client.get(
"/account/register/", headers={"accept-language": "en"}
)
self.assertRedirects(response, "/en/account/register/")
self.assertEqual(response.get("Vary"), "Accept-Language, Cookie")
@@ -330,19 +346,19 @@ class URLRedirectWithoutTrailingSlashTests(URLTestCaseBase):
"""
def test_not_prefixed_redirect(self):
response = self.client.get("/not-prefixed", HTTP_ACCEPT_LANGUAGE="en")
response = self.client.get("/not-prefixed", headers={"accept-language": "en"})
self.assertRedirects(response, "/not-prefixed/", 301)
def test_en_redirect(self):
response = self.client.get(
"/account/register", HTTP_ACCEPT_LANGUAGE="en", follow=True
"/account/register", headers={"accept-language": "en"}, follow=True
)
# We only want one redirect, bypassing CommonMiddleware
self.assertEqual(response.redirect_chain, [("/en/account/register/", 302)])
self.assertRedirects(response, "/en/account/register/", 302)
response = self.client.get(
"/prefixed.xml", HTTP_ACCEPT_LANGUAGE="en", follow=True
"/prefixed.xml", headers={"accept-language": "en"}, follow=True
)
self.assertRedirects(response, "/en/prefixed.xml", 302)
@@ -355,13 +371,13 @@ class URLRedirectWithoutTrailingSlashSettingTests(URLTestCaseBase):
@override_settings(APPEND_SLASH=False)
def test_not_prefixed_redirect(self):
response = self.client.get("/not-prefixed", HTTP_ACCEPT_LANGUAGE="en")
response = self.client.get("/not-prefixed", headers={"accept-language": "en"})
self.assertEqual(response.status_code, 404)
@override_settings(APPEND_SLASH=False)
def test_en_redirect(self):
response = self.client.get(
"/account/register-without-slash", HTTP_ACCEPT_LANGUAGE="en"
"/account/register-without-slash", headers={"accept-language": "en"}
)
self.assertRedirects(response, "/en/account/register-without-slash", 302)
@@ -424,7 +440,7 @@ class URLRedirectWithScriptAliasTests(URLTestCaseBase):
prefix = "/script_prefix"
with override_script_prefix(prefix):
response = self.client.get(
"/prefixed/", HTTP_ACCEPT_LANGUAGE="en", SCRIPT_NAME=prefix
"/prefixed/", headers={"accept-language": "en"}, SCRIPT_NAME=prefix
)
self.assertRedirects(
response, "%s/en/prefixed/" % prefix, target_status_code=404

View File

@@ -1778,7 +1778,7 @@ class MiscTests(SimpleTestCase):
]
for header, expected in tests:
with self.subTest(header=header):
request = self.rf.get("/", HTTP_ACCEPT_LANGUAGE=header)
request = self.rf.get("/", headers={"accept-language": header})
self.assertEqual(get_language_from_request(request), expected)
@override_settings(
@@ -1799,10 +1799,10 @@ class MiscTests(SimpleTestCase):
refs #18419 -- this is explicitly for browser compatibility
"""
g = get_language_from_request
request = self.rf.get("/", HTTP_ACCEPT_LANGUAGE="zh-cn,en")
request = self.rf.get("/", headers={"accept-language": "zh-cn,en"})
self.assertEqual(g(request), "zh-hans")
request = self.rf.get("/", HTTP_ACCEPT_LANGUAGE="zh-tw,en")
request = self.rf.get("/", headers={"accept-language": "zh-tw,en"})
self.assertEqual(g(request), "zh-hant")
def test_special_fallback_language(self):
@@ -1810,7 +1810,7 @@ class MiscTests(SimpleTestCase):
Some languages may have special fallbacks that don't follow the simple
'fr-ca' -> 'fr' logic (notably Chinese codes).
"""
request = self.rf.get("/", HTTP_ACCEPT_LANGUAGE="zh-my,en")
request = self.rf.get("/", headers={"accept-language": "zh-my,en"})
self.assertEqual(get_language_from_request(request), "zh-hans")
def test_subsequent_code_fallback_language(self):
@@ -1828,7 +1828,7 @@ class MiscTests(SimpleTestCase):
]
for value, expected in tests:
with self.subTest(value=value):
request = self.rf.get("/", HTTP_ACCEPT_LANGUAGE=f"{value},en")
request = self.rf.get("/", headers={"accept-language": f"{value},en"})
self.assertEqual(get_language_from_request(request), expected)
def test_parse_language_cookie(self):
@@ -1840,7 +1840,7 @@ class MiscTests(SimpleTestCase):
request.COOKIES[settings.LANGUAGE_COOKIE_NAME] = "pt"
self.assertEqual("pt", g(request))
request = self.rf.get("/", HTTP_ACCEPT_LANGUAGE="de")
request = self.rf.get("/", headers={"accept-language": "de"})
request.COOKIES[settings.LANGUAGE_COOKIE_NAME] = "es"
self.assertEqual("es", g(request))
@@ -1854,7 +1854,7 @@ class MiscTests(SimpleTestCase):
# translation to variation (zh-hans) the user sets zh-hans as the
# preferred language, it should be selected without falling back nor
# ignoring it.
request = self.rf.get("/", HTTP_ACCEPT_LANGUAGE="de")
request = self.rf.get("/", headers={"accept-language": "de"})
request.COOKIES[settings.LANGUAGE_COOKIE_NAME] = "zh-hans"
self.assertEqual(g(request), "zh-hans")
@@ -1957,7 +1957,7 @@ class MiscTests(SimpleTestCase):
previously valid should not be used (#14170).
"""
g = get_language_from_request
request = self.rf.get("/", HTTP_ACCEPT_LANGUAGE="pt-br")
request = self.rf.get("/", headers={"accept-language": "pt-br"})
self.assertEqual("pt-br", g(request))
with self.settings(LANGUAGES=[("en", "English")]):
self.assertNotEqual("pt-br", g(request))
@@ -2215,13 +2215,13 @@ class CountrySpecificLanguageTests(SimpleTestCase):
def test_get_language_from_request(self):
# issue 19919
request = self.rf.get(
"/", HTTP_ACCEPT_LANGUAGE="en-US,en;q=0.8,bg;q=0.6,ru;q=0.4"
"/", headers={"accept-language": "en-US,en;q=0.8,bg;q=0.6,ru;q=0.4"}
)
lang = get_language_from_request(request)
self.assertEqual("en-us", lang)
request = self.rf.get(
"/", HTTP_ACCEPT_LANGUAGE="bg-bg,en-US;q=0.8,en;q=0.6,ru;q=0.4"
"/", headers={"accept-language": "bg-bg,en-US;q=0.8,en;q=0.6,ru;q=0.4"}
)
lang = get_language_from_request(request)
self.assertEqual("bg", lang)
@@ -2233,13 +2233,13 @@ class CountrySpecificLanguageTests(SimpleTestCase):
def test_specific_language_codes(self):
# issue 11915
request = self.rf.get(
"/", HTTP_ACCEPT_LANGUAGE="pt,en-US;q=0.8,en;q=0.6,ru;q=0.4"
"/", headers={"accept-language": "pt,en-US;q=0.8,en;q=0.6,ru;q=0.4"}
)
lang = get_language_from_request(request)
self.assertEqual("pt-br", lang)
request = self.rf.get(
"/", HTTP_ACCEPT_LANGUAGE="pt-pt,en-US;q=0.8,en;q=0.6,ru;q=0.4"
"/", headers={"accept-language": "pt-pt,en-US;q=0.8,en;q=0.6,ru;q=0.4"}
)
lang = get_language_from_request(request)
self.assertEqual("pt-br", lang)