|
@@ -111,11 +111,12 @@ class SetLanguageTests(TestCase):
|
|
|
|
|
|
def test_setlang_performs_redirect_for_ajax_if_explicitly_requested(self):
|
|
|
"""
|
|
|
- The set_language view redirects to the "next" parameter for AJAX calls.
|
|
|
+ The set_language view redirects to the "next" parameter for requests
|
|
|
+ not accepting HTML response content.
|
|
|
"""
|
|
|
lang_code = self._get_inactive_language_code()
|
|
|
post_data = {'language': lang_code, 'next': '/'}
|
|
|
- response = self.client.post('/i18n/setlang/', post_data, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
|
+ 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):
|
|
@@ -123,12 +124,12 @@ class SetLanguageTests(TestCase):
|
|
|
|
|
|
def test_setlang_doesnt_perform_a_redirect_to_referer_for_ajax(self):
|
|
|
"""
|
|
|
- The set_language view doesn't redirect to the HTTP referer header for
|
|
|
- AJAX calls.
|
|
|
+ The set_language view doesn't redirect to the HTTP referer header if
|
|
|
+ the request doesn't accept HTML response content.
|
|
|
"""
|
|
|
lang_code = self._get_inactive_language_code()
|
|
|
post_data = {'language': lang_code}
|
|
|
- headers = {'HTTP_REFERER': '/', 'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'}
|
|
|
+ headers = {'HTTP_REFERER': '/', 'HTTP_ACCEPT': 'application/json'}
|
|
|
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)
|
|
@@ -137,11 +138,12 @@ class SetLanguageTests(TestCase):
|
|
|
|
|
|
def test_setlang_doesnt_perform_a_default_redirect_for_ajax(self):
|
|
|
"""
|
|
|
- The set_language view returns 204 for AJAX calls by default.
|
|
|
+ The set_language view returns 204 by default for requests not accepting
|
|
|
+ HTML response content.
|
|
|
"""
|
|
|
lang_code = self._get_inactive_language_code()
|
|
|
post_data = {'language': lang_code}
|
|
|
- response = self.client.post('/i18n/setlang/', post_data, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
|
+ 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):
|
|
@@ -149,11 +151,12 @@ class SetLanguageTests(TestCase):
|
|
|
|
|
|
def test_setlang_unsafe_next_for_ajax(self):
|
|
|
"""
|
|
|
- The fallback to root URL for the set_language view works for AJAX calls.
|
|
|
+ The fallback to root URL for the set_language view works for requests
|
|
|
+ not accepting HTML response content.
|
|
|
"""
|
|
|
lang_code = self._get_inactive_language_code()
|
|
|
post_data = {'language': lang_code, 'next': '//unsafe/redirection/'}
|
|
|
- response = self.client.post('/i18n/setlang/', post_data, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
|
+ response = self.client.post('/i18n/setlang/', post_data, HTTP_ACCEPT='application/json')
|
|
|
self.assertEqual(response.url, '/')
|
|
|
self.assertEqual(self.client.cookies[settings.LANGUAGE_COOKIE_NAME].value, lang_code)
|
|
|
|