diff --git a/openedx/core/djangoapps/lang_pref/tests/test_middleware.py b/openedx/core/djangoapps/lang_pref/tests/test_middleware.py index 88f5280efc..e70f84e9d9 100644 --- a/openedx/core/djangoapps/lang_pref/tests/test_middleware.py +++ b/openedx/core/djangoapps/lang_pref/tests/test_middleware.py @@ -8,6 +8,7 @@ import mock import ddt from django.conf import settings from django.test import TestCase +from django.core.urlresolvers import reverse from django.test.client import RequestFactory from django.http import HttpResponse from django.contrib.sessions.middleware import SessionMiddleware @@ -144,6 +145,23 @@ class TestUserPreferenceMiddleware(TestCase): self.assertEquals(self.request.session.get(LANGUAGE_SESSION_KEY), lang_session) + @ddt.data(None, 'es', 'en') + def test_logout_preserves_cookie(self, lang_cookie): + if lang_cookie: + self.client.cookies[settings.LANGUAGE_COOKIE] = lang_cookie + elif settings.LANGUAGE_COOKIE in self.client.cookies: + del self.client.cookies[settings.LANGUAGE_COOKIE] + # Use an actual call to the logout endpoint, because the logout function + # explicitly clears all cookies + self.client.get(reverse('logout')) + if lang_cookie: + self.assertEqual( + self.client.cookies[settings.LANGUAGE_COOKIE].value, + lang_cookie + ) + else: + self.assertNotIn(settings.LANGUAGE_COOKIE, self.client.cookies) + def test_process_response_no_user_noop(self): del self.request.user response = mock.Mock(spec=HttpResponse)