diff options
author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-04-28 08:05:43 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-05-02 06:04:18 +0200 |
commit | 0e444e84f87d174713a2aef0c4f9704ce2865586 (patch) | |
tree | 5fd8693f08332b5e57765a5464b8bb66eb1d10c2 /tests | |
parent | 191f6a9a4586b5e5f79f4f42f190e7ad4bbacc84 (diff) | |
download | django-0e444e84f87d174713a2aef0c4f9704ce2865586.tar.gz |
Fixed #34515 -- Made LocaleMiddleware prefer language from paths when i18n patterns are used.
Regression in 94e7f471c4edef845a4fe5e3160132997b4cca81.
This reverts commit 94e7f471c4edef845a4fe5e3160132997b4cca81
(refs #34069) and
partly reverts commit 3b4728310a7a64f8fcc548163b0aa5f98a5c78f5.
Thanks Anthony Baillard for the report.
Co-Authored-By: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/i18n/patterns/tests.py | 21 | ||||
-rw-r--r-- | tests/i18n/tests.py | 23 | ||||
-rw-r--r-- | tests/i18n/urls_default_unprefixed.py | 1 |
3 files changed, 28 insertions, 17 deletions
diff --git a/tests/i18n/patterns/tests.py b/tests/i18n/patterns/tests.py index ad7b8ed1d4..df55a1ee13 100644 --- a/tests/i18n/patterns/tests.py +++ b/tests/i18n/patterns/tests.py @@ -431,6 +431,27 @@ class URLResponseTests(URLTestCaseBase): self.assertEqual(response.context["LANGUAGE_CODE"], "nl") +@override_settings(ROOT_URLCONF="i18n.urls_default_unprefixed", LANGUAGE_CODE="nl") +class URLPrefixedFalseTranslatedTests(URLTestCaseBase): + def test_translated_path_unprefixed_language_other_than_accepted_header(self): + response = self.client.get("/gebruikers/", headers={"accept-language": "en"}) + self.assertEqual(response.status_code, 200) + + def test_translated_path_unprefixed_language_other_than_cookie_language(self): + self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: "en"}) + response = self.client.get("/gebruikers/") + self.assertEqual(response.status_code, 200) + + def test_translated_path_prefixed_language_other_than_accepted_header(self): + response = self.client.get("/en/users/", headers={"accept-language": "nl"}) + self.assertEqual(response.status_code, 200) + + def test_translated_path_prefixed_language_other_than_cookie_language(self): + self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: "nl"}) + response = self.client.get("/en/users/") + self.assertEqual(response.status_code, 200) + + class URLRedirectWithScriptAliasTests(URLTestCaseBase): """ #21579 - LocaleMiddleware should respect the script prefix. diff --git a/tests/i18n/tests.py b/tests/i18n/tests.py index 01a729ed7b..d44ddb9f83 100644 --- a/tests/i18n/tests.py +++ b/tests/i18n/tests.py @@ -1926,22 +1926,8 @@ class UnprefixedDefaultLanguageTests(SimpleTestCase): response = self.client.get("/fr/simple/") self.assertEqual(response.content, b"Oui") - def test_unprefixed_language_with_accept_language(self): - """'Accept-Language' is respected.""" - response = self.client.get("/simple/", headers={"accept-language": "fr"}) - self.assertRedirects(response, "/fr/simple/") - - def test_unprefixed_language_with_cookie_language(self): - """A language set in the cookies is respected.""" - self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: "fr"}) - response = self.client.get("/simple/") - self.assertRedirects(response, "/fr/simple/") - - def test_unprefixed_language_with_non_valid_language(self): - response = self.client.get("/simple/", headers={"accept-language": "fi"}) - self.assertEqual(response.content, b"Yes") - self.client.cookies.load({settings.LANGUAGE_COOKIE_NAME: "fi"}) - response = self.client.get("/simple/") + def test_unprefixed_language_other_than_accept_language(self): + response = self.client.get("/simple/", HTTP_ACCEPT_LANGUAGE="fr") self.assertEqual(response.content, b"Yes") def test_page_with_dash(self): @@ -2017,7 +2003,10 @@ class CountrySpecificLanguageTests(SimpleTestCase): def test_get_language_from_request_null(self): lang = trans_null.get_language_from_request(None) - self.assertEqual(lang, None) + self.assertEqual(lang, "en") + with override_settings(LANGUAGE_CODE="de"): + lang = trans_null.get_language_from_request(None) + self.assertEqual(lang, "de") def test_specific_language_codes(self): # issue 11915 diff --git a/tests/i18n/urls_default_unprefixed.py b/tests/i18n/urls_default_unprefixed.py index f14b059d37..d4ab5a7e1d 100644 --- a/tests/i18n/urls_default_unprefixed.py +++ b/tests/i18n/urls_default_unprefixed.py @@ -7,5 +7,6 @@ urlpatterns = i18n_patterns( re_path(r"^(?P<arg>[\w-]+)-page", lambda request, **arg: HttpResponse(_("Yes"))), path("simple/", lambda r: HttpResponse(_("Yes"))), re_path(r"^(.+)/(.+)/$", lambda *args: HttpResponse()), + re_path(_(r"^users/$"), lambda *args: HttpResponse(), name="users"), prefix_default_language=False, ) |