73 lines
2.3 KiB
Python
73 lines
2.3 KiB
Python
from django.test import RequestFactory, SimpleTestCase, override_settings
|
|
|
|
from mandelstudio.i18n_utils import normalize_set_language_next
|
|
from mandelstudio.i18n_views import set_language_normalized
|
|
|
|
|
|
@override_settings(
|
|
LANGUAGES=(
|
|
("nl", "Dutch"),
|
|
("en", "English"),
|
|
("de", "German"),
|
|
("fr", "French"),
|
|
("es", "Spanish"),
|
|
("it", "Italian"),
|
|
("pt", "Portuguese"),
|
|
("ru", "Russian"),
|
|
)
|
|
)
|
|
class SetLanguageNormalizationTests(SimpleTestCase):
|
|
def setUp(self):
|
|
self.factory = RequestFactory()
|
|
|
|
def test_normalize_set_language_next_strips_single_prefix(self):
|
|
self.assertEqual(
|
|
normalize_set_language_next("/en/manage/checkout/paymentmethod/"),
|
|
"/manage/checkout/paymentmethod/",
|
|
)
|
|
|
|
def test_normalize_set_language_next_strips_locale_variant_prefix(self):
|
|
self.assertEqual(
|
|
normalize_set_language_next("/en-us/manage/checkout/paymentmethod/"),
|
|
"/manage/checkout/paymentmethod/",
|
|
)
|
|
|
|
def test_post_next_is_normalized_before_delegate(self):
|
|
request = self.factory.post(
|
|
"/i18n/setlang/",
|
|
data={"language": "de", "next": "/en/manage/checkout/paymentmethod/"},
|
|
)
|
|
request.META["HTTP_HOST"] = "testserver"
|
|
|
|
response = set_language_normalized(request)
|
|
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(
|
|
response["Location"],
|
|
"/de/manage/checkout/paymentmethod/",
|
|
)
|
|
|
|
def test_get_next_is_normalized_before_delegate(self):
|
|
request = self.factory.get(
|
|
"/i18n/setlang/",
|
|
data={"language": "fr", "next": "/de/manage/"},
|
|
)
|
|
request.META["HTTP_HOST"] = "testserver"
|
|
|
|
response = set_language_normalized(request)
|
|
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(response["Location"], "/manage/")
|
|
|
|
def test_set_language_view_is_csrf_exempt(self):
|
|
request = self.factory.post(
|
|
"/i18n/setlang/",
|
|
data={"language": "nl", "next": "/en/manage/"},
|
|
)
|
|
request.csrf_processing_done = False
|
|
request.META["HTTP_HOST"] = "testserver"
|
|
|
|
response = set_language_normalized(request)
|
|
|
|
self.assertEqual(response.status_code, 302)
|