|
@@ -4,15 +4,12 @@ from os import path
|
|
|
|
|
|
from django.conf import settings
|
|
|
from django.test import (
|
|
|
- RequestFactory, SimpleTestCase, TestCase, ignore_warnings, modify_settings,
|
|
|
+ RequestFactory, SimpleTestCase, TestCase, modify_settings,
|
|
|
override_settings,
|
|
|
)
|
|
|
from django.test.selenium import SeleniumTestCase
|
|
|
from django.urls import reverse
|
|
|
-from django.utils.deprecation import RemovedInDjango40Warning
|
|
|
-from django.utils.translation import (
|
|
|
- LANGUAGE_SESSION_KEY, get_language, override,
|
|
|
-)
|
|
|
+from django.utils.translation import get_language, override
|
|
|
from django.views.i18n import JavaScriptCatalog, get_formats
|
|
|
|
|
|
from ..urls import locale_dir
|
|
@@ -37,8 +34,6 @@ class SetLanguageTests(TestCase):
|
|
|
post_data = {'language': lang_code, 'next': '/'}
|
|
|
response = self.client.post('/i18n/setlang/', post_data, HTTP_REFERER='/i_should_not_be_used/')
|
|
|
self.assertRedirects(response, '/')
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
# The language is set in a cookie.
|
|
|
language_cookie = self.client.cookies[settings.LANGUAGE_COOKIE_NAME]
|
|
|
self.assertEqual(language_cookie.value, lang_code)
|
|
@@ -59,8 +54,6 @@ class SetLanguageTests(TestCase):
|
|
|
response = self.client.post('/i18n/setlang/', data=post_data)
|
|
|
self.assertEqual(response.url, '/')
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
|
|
|
def test_setlang_http_next(self):
|
|
|
"""
|
|
@@ -74,14 +67,10 @@ class SetLanguageTests(TestCase):
|
|
|
response = self.client.post('/i18n/setlang/', data=post_data, secure=True)
|
|
|
self.assertEqual(response.url, '/')
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
# Insecure URL in HTTP referer.
|
|
|
response = self.client.post('/i18n/setlang/', secure=True, HTTP_REFERER=non_https_next_url)
|
|
|
self.assertEqual(response.url, '/')
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
|
|
|
def test_setlang_redirect_to_referer(self):
|
|
|
"""
|
|
@@ -93,8 +82,6 @@ class SetLanguageTests(TestCase):
|
|
|
response = self.client.post('/i18n/setlang/', post_data, HTTP_REFERER='/i18n/')
|
|
|
self.assertRedirects(response, '/i18n/', fetch_redirect_response=False)
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
|
|
|
def test_setlang_default_redirect(self):
|
|
|
"""
|
|
@@ -106,8 +93,6 @@ class SetLanguageTests(TestCase):
|
|
|
response = self.client.post('/i18n/setlang/', post_data)
|
|
|
self.assertRedirects(response, '/')
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
|
|
|
def test_setlang_performs_redirect_for_ajax_if_explicitly_requested(self):
|
|
|
"""
|
|
@@ -119,8 +104,6 @@ class SetLanguageTests(TestCase):
|
|
|
response = self.client.post('/i18n/setlang/', post_data, HTTP_ACCEPT='application/json')
|
|
|
self.assertRedirects(response, '/')
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
|
|
|
def test_setlang_doesnt_perform_a_redirect_to_referer_for_ajax(self):
|
|
|
"""
|
|
@@ -133,8 +116,6 @@ class SetLanguageTests(TestCase):
|
|
|
response = self.client.post('/i18n/setlang/', post_data, **headers)
|
|
|
self.assertEqual(response.status_code, 204)
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
|
|
|
def test_setlang_doesnt_perform_a_default_redirect_for_ajax(self):
|
|
|
"""
|
|
@@ -146,8 +127,6 @@ class SetLanguageTests(TestCase):
|
|
|
response = self.client.post('/i18n/setlang/', post_data, HTTP_ACCEPT='application/json')
|
|
|
self.assertEqual(response.status_code, 204)
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
|
|
|
def test_setlang_unsafe_next_for_ajax(self):
|
|
|
"""
|
|
@@ -160,15 +139,6 @@ class SetLanguageTests(TestCase):
|
|
|
self.assertEqual(response.url, '/')
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
|
|
|
- def test_session_language_deprecation(self):
|
|
|
- msg = (
|
|
|
- 'The user language will no longer be stored in request.session '
|
|
|
- 'in Django 4.0. Read it from '
|
|
|
- 'request.COOKIES[settings.LANGUAGE_COOKIE_NAME] instead.'
|
|
|
- )
|
|
|
- with self.assertRaisesMessage(RemovedInDjango40Warning, msg):
|
|
|
- self.client.session[LANGUAGE_SESSION_KEY]
|
|
|
-
|
|
|
def test_setlang_reversal(self):
|
|
|
self.assertEqual(reverse('set_language'), '/i18n/setlang/')
|
|
|
|
|
@@ -208,8 +178,6 @@ class SetLanguageTests(TestCase):
|
|
|
response = self.client.post('/i18n/setlang/', {'language': lang_code}, HTTP_REFERER=encoded_url)
|
|
|
self.assertRedirects(response, encoded_url, fetch_redirect_response=False)
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], lang_code)
|
|
|
|
|
|
@modify_settings(MIDDLEWARE={
|
|
|
'append': 'django.middleware.locale.LocaleMiddleware',
|
|
@@ -220,8 +188,6 @@ class SetLanguageTests(TestCase):
|
|
|
follow=True, HTTP_REFERER='/en/translated/'
|
|
|
)
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, 'nl')
|
|
|
- with ignore_warnings(category=RemovedInDjango40Warning):
|
|
|
- self.assertEqual(self.client.session[LANGUAGE_SESSION_KEY], 'nl')
|
|
|
self.assertRedirects(response, '/nl/vertaald/')
|
|
|
# And reverse
|
|
|
response = self.client.post(
|