From adcc9cb9b8a9709a90064b13083219e684be336c Mon Sep 17 00:00:00 2001 From: Rebecca Graber Date: Thu, 30 Sep 2021 14:34:57 -0400 Subject: [PATCH] fix: tests --- openedx/core/lib/request_utils.py | 4 +- openedx/core/lib/tests/test_request_utils.py | 60 +++++++++++++++++--- 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/openedx/core/lib/request_utils.py b/openedx/core/lib/request_utils.py index 57b1556e17..8de5af8526 100644 --- a/openedx/core/lib/request_utils.py +++ b/openedx/core/lib/request_utils.py @@ -146,8 +146,8 @@ class CookieMonitoringMiddleware(MiddlewareMixin): """ - if request.META.get('HTTP_COOKIE', None): - set_custom_attribute('cookies.header.size', len(request.META['HTTP_COOKIE'].encode('utf-8'))) + raw_header_cookie = request.META.get('HTTP_COOKIE', '') + set_custom_attribute('cookies.header.size', len(raw_header_cookie.encode('utf-8'))) if not CAPTURE_COOKIE_SIZES.is_enabled(): return diff --git a/openedx/core/lib/tests/test_request_utils.py b/openedx/core/lib/tests/test_request_utils.py index 5bc10c29e8..792055b398 100644 --- a/openedx/core/lib/tests/test_request_utils.py +++ b/openedx/core/lib/tests/test_request_utils.py @@ -97,6 +97,24 @@ class RequestUtilTestCase(unittest.TestCase): assert course_id.course == course assert course_id.run == run + @patch("openedx.core.lib.request_utils.CAPTURE_COOKIE_SIZES") + @patch("openedx.core.lib.request_utils.set_custom_attribute") + def test_basic_cookie_monitoring(self, mock_set_custom_attribute, mock_capture_cookie_sizes): + mock_capture_cookie_sizes.is_enabled.return_value = False + middleware = CookieMonitoringMiddleware() + + cookies_dict = {'a':'b'} + + factory = RequestFactory() + for name, value in cookies_dict.items(): + factory.cookies[name] = value + + mock_request = factory.request() + + middleware.process_request(mock_request) + + mock_set_custom_attribute.assert_called_once_with('cookies.header.size', 3) + @patch("openedx.core.lib.request_utils.CAPTURE_COOKIE_SIZES") @patch("openedx.core.lib.request_utils.set_custom_attribute") def test_cookie_monitoring(self, mock_set_custom_attribute, mock_capture_cookie_sizes): @@ -104,8 +122,7 @@ class RequestUtilTestCase(unittest.TestCase): mock_capture_cookie_sizes.is_enabled.return_value = True middleware = CookieMonitoringMiddleware() - mock_request = Mock() - mock_request.COOKIES = { + cookies_dict = { "a": "." * 100, "_b": "." * 13, "_c_": "." * 13, @@ -117,6 +134,12 @@ class RequestUtilTestCase(unittest.TestCase): "d": "." * 3, } + factory = RequestFactory() + for name, value in cookies_dict.items(): + factory.cookies[name] = value + + mock_request = factory.request() + middleware.process_request(mock_request) mock_set_custom_attribute.assert_has_calls([ @@ -147,6 +170,7 @@ class RequestUtilTestCase(unittest.TestCase): call('cookies_total_size', 192), call('cookies_unaccounted_size', 3), call('cookies_total_num', 9), + call('cookies.header.size', 238) ], any_order=True) @patch("openedx.core.lib.request_utils.CAPTURE_COOKIE_SIZES") @@ -156,13 +180,18 @@ class RequestUtilTestCase(unittest.TestCase): mock_capture_cookie_sizes.is_enabled.return_value = True middleware = CookieMonitoringMiddleware() - mock_request = Mock() - mock_request.COOKIES = { + cookies_dict = { "a": "." * 10, "b_a": "." * 15, "b_c": "." * 20, } + factory = RequestFactory() + for name, value in cookies_dict.items(): + factory.cookies[name] = value + + mock_request = factory.request() + middleware.process_request(mock_request) mock_set_custom_attribute.assert_has_calls([ @@ -188,12 +217,20 @@ class RequestUtilTestCase(unittest.TestCase): mock_capture_cookie_sizes.is_enabled.return_value = True middleware = CookieMonitoringMiddleware() - mock_request = Mock() - mock_request.COOKIES = {} + cookies_dict = {} + + factory = RequestFactory() + for name, value in cookies_dict.items(): + factory.cookies[name] = value + + mock_request = factory.request() middleware.process_request(mock_request) - mock_set_custom_attribute.assert_has_calls([call('cookies_total_size', 0)], any_order=True) + mock_set_custom_attribute.assert_has_calls([ + call('cookies_total_size', 0), + call('cookies.header.size', 0) + ], any_order=True) @patch("openedx.core.lib.request_utils.CAPTURE_COOKIE_SIZES") @patch("openedx.core.lib.request_utils.set_custom_attribute") @@ -202,12 +239,17 @@ class RequestUtilTestCase(unittest.TestCase): mock_capture_cookie_sizes.is_enabled.return_value = True middleware = CookieMonitoringMiddleware() - mock_request = Mock() - mock_request.COOKIES = { + cookies_dict = { "a": "." * 10, "b": "." * 15, } + factory = RequestFactory() + for name, value in cookies_dict.items(): + factory.cookies[name] = value + + mock_request = factory.request() + middleware.process_request(mock_request) mock_set_custom_attribute.assert_has_calls([