64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
from unittest.mock import patch
|
|
|
|
from django.http import HttpResponseRedirect
|
|
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/",
|
|
)
|
|
|
|
@patch("mandelstudio.i18n_views.django_set_language")
|
|
def test_post_next_is_normalized_before_delegate(self, django_set_language):
|
|
django_set_language.side_effect = lambda request: HttpResponseRedirect(
|
|
request.POST["next"]
|
|
)
|
|
request = self.factory.post(
|
|
"/i18n/setlang/",
|
|
data={"language": "de", "next": "/en/manage/checkout/paymentmethod/"},
|
|
)
|
|
|
|
response = set_language_normalized(request)
|
|
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(
|
|
django_set_language.call_args.args[0].POST["next"],
|
|
"/manage/checkout/paymentmethod/",
|
|
)
|
|
|
|
@patch("mandelstudio.i18n_views.django_set_language")
|
|
def test_get_next_is_normalized_before_delegate(self, django_set_language):
|
|
django_set_language.side_effect = lambda request: HttpResponseRedirect(
|
|
request.GET["next"]
|
|
)
|
|
request = self.factory.get(
|
|
"/i18n/setlang/",
|
|
data={"language": "fr", "next": "/de/manage/"},
|
|
)
|
|
|
|
response = set_language_normalized(request)
|
|
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertEqual(django_set_language.call_args.args[0].GET["next"], "/manage/")
|