From 49abac58123214ecd314b2d67b822c6205cd5a5f Mon Sep 17 00:00:00 2001 From: Waheed Ahmed Date: Tue, 7 Jan 2020 15:49:36 +0500 Subject: [PATCH] Remove lang cookie for mobile app requests. (#22731) * Remove lang cookie for mobile app requests. Responses for mobile app requests must not include language preference cookie. PROD-1107 --- .../core/djangoapps/lang_pref/middleware.py | 15 ++++++------ .../lang_pref/tests/test_middleware.py | 24 +++++++++---------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/openedx/core/djangoapps/lang_pref/middleware.py b/openedx/core/djangoapps/lang_pref/middleware.py index 5b1e1e6dfe..d63fc2035f 100644 --- a/openedx/core/djangoapps/lang_pref/middleware.py +++ b/openedx/core/djangoapps/lang_pref/middleware.py @@ -70,14 +70,13 @@ class LanguagePreferenceMiddleware(object): pass # If set, set the user_pref in the LANGUAGE_COOKIE - if user_pref: - if not is_request_from_mobile_app(request): - response.set_cookie( - settings.LANGUAGE_COOKIE, - value=user_pref, - domain=settings.SESSION_COOKIE_DOMAIN, - max_age=COOKIE_DURATION, - ) + if user_pref and not is_request_from_mobile_app(request): + response.set_cookie( + settings.LANGUAGE_COOKIE, + value=user_pref, + domain=settings.SESSION_COOKIE_DOMAIN, + max_age=COOKIE_DURATION, + ) else: response.delete_cookie( settings.LANGUAGE_COOKIE, diff --git a/openedx/core/djangoapps/lang_pref/tests/test_middleware.py b/openedx/core/djangoapps/lang_pref/tests/test_middleware.py index 4ef337b34b..dc78d5445a 100644 --- a/openedx/core/djangoapps/lang_pref/tests/test_middleware.py +++ b/openedx/core/djangoapps/lang_pref/tests/test_middleware.py @@ -257,18 +257,18 @@ class TestUserPreferenceMiddleware(CacheIsolationTestCase): @mock.patch('openedx.core.djangoapps.lang_pref.middleware.is_request_from_mobile_app') @mock.patch('openedx.core.djangoapps.lang_pref.middleware.get_user_preference') - def test_lang_pref_cookie_must_not_sent_to_mobile(self, mock_get_user_preference, mock_is_mobile_request): + def test_remove_lang_cookie_for_mobile_app(self, mock_get_user_preference, mock_is_mobile_request): """ - Test to verify language preference cookie must not be set for mobile requests + Test to verify language preference cookie removed for mobile app requests. """ - mock_get_user_preference.return_value = 'test_value' - mock_is_mobile_request.return_value = True - - response = self.client.get('/') - self.middleware.process_response(self.request, response) - self.assertFalse(response.cookies.get('openedx-language-preference')) - + mock_get_user_preference.return_value = 'en' mock_is_mobile_request.return_value = False - response = self.client.get('/') - self.middleware.process_response(self.request, response) - self.assertTrue(response.cookies.get('openedx-language-preference')) + response = mock.Mock(spec=HttpResponse) + + response = self.middleware.process_response(self.request, response) + response.delete_cookie.assert_not_called() + response.set_cookie.assert_called() + + mock_is_mobile_request.return_value = True + response = self.middleware.process_response(self.request, response) + response.delete_cookie.assert_called()