def test_request_headers_sensitive_logged(self, mock_log): request = self.factory.post( "/somewhere", **{ "HTTP_AUTHORIZATION": "sensitive-token", "HTTP_USER_AGENT": "silly-human", "HTTP_PROXY_AUTHORIZATION": "proxy-token", }) middleware = LoggingMiddleware() middleware.process_request(request, None, request.body) if IS_DJANGO_VERSION_GTE_3_2_0: self._assert_logged(mock_log, "Authorization") self._assert_logged_with_key_value(mock_log, "Authorization", "*****") else: self._assert_logged(mock_log, "HTTP_AUTHORIZATION") self._assert_logged_with_key_value(mock_log, "HTTP_AUTHORIZATION", "*****") if IS_DJANGO_VERSION_GTE_3_2_0: self._assert_logged(mock_log, "User-Agent") self._assert_logged_with_key_value(mock_log, "User-Agent", "silly-human") else: self._assert_logged(mock_log, "HTTP_USER_AGENT") self._assert_logged_with_key_value(mock_log, "HTTP_USER_AGENT", "silly-human") if IS_DJANGO_VERSION_GTE_3_2_0: self._assert_logged(mock_log, "Proxy-Authorization") self._assert_logged_with_key_value(mock_log, "Proxy-Authorization", "proxy-token") else: self._assert_logged(mock_log, "HTTP_PROXY_AUTHORIZATION") self._assert_logged_with_key_value(mock_log, "HTTP_PROXY_AUTHORIZATION", "proxy-token")
def test_logging_http_4xx_level(self, mock_log): for level in (logging.INFO, logging.WARNING, logging.ERROR): mock_log.reset_mock() with override_settings(REQUEST_LOGGING_HTTP_4XX_LOG_LEVEL=level): middleware = LoggingMiddleware() middleware.process_response(self.request, self.response_404) self._assert_logged_with_level(mock_log, level)
def test_customized_max_body_length(self, mock_log): body = 150 * "0" + "1" request = self.factory.post("/somewhere", data={"file": body}) middleware = LoggingMiddleware(self.get_response) middleware.__call__(request) request_body_str = request.body if isinstance(request.body, str) else request.body.decode() self._assert_logged(mock_log, re.sub(r"\r?\n", "", request_body_str[:150])) self._assert_not_logged(mock_log, body)
def test_default_max_body_length(self, mock_log): factory = RequestFactory() middleware = LoggingMiddleware() body = DEFAULT_MAX_BODY_LENGTH * "0" + "1" request = factory.post("/somewhere", data={"file": body}) middleware.process_request(request) self._assert_logged(mock_log, str(request.body[:DEFAULT_MAX_BODY_LENGTH])) self._assert_not_logged(mock_log, body)
def test_customized_max_body_length(self, mock_log): factory = RequestFactory() middleware = LoggingMiddleware() body = 150 * "0" + "1" request = factory.post("/somewhere", data={"file": body}) middleware.process_request(request) self._assert_logged(mock_log, str(request.body[:150])) self._assert_not_logged(mock_log, body)
def setUp(self): self.factory = RequestFactory() def get_response(request): response = mock.MagicMock() response.status_code = 200 response.get.return_value = 'application/json' response._headers = {'test_headers': 'test_headers'} return response self.middleware = LoggingMiddleware(get_response)
def test_customized_max_body_length(self, mock_log): factory = RequestFactory() middleware = LoggingMiddleware() body = 150 * "0" + "1" request = factory.post("/somewhere", data={"file": body}) middleware.process_request(request) request_body_str = request.body if isinstance(request.body, str) else request.body.decode() self._assert_logged(mock_log, re.sub(r'\r?\n', '', request_body_str[:150])) self._assert_not_logged(mock_log, body)
def test_default_max_body_length(self, mock_log): factory = RequestFactory() middleware = LoggingMiddleware() body = DEFAULT_MAX_BODY_LENGTH * "0" + "1" request = factory.post("/somewhere", data={"file": body}) middleware.process_request(request) request_body_str = request.body if isinstance( request.body, str) else request.body.decode() self._assert_logged( mock_log, re.sub(r"\r?\n", "", request_body_str[:DEFAULT_MAX_BODY_LENGTH])) self._assert_not_logged(mock_log, body)
def test_request_headers_sensitive_logged_default(self, mock_log): request = self.factory.post( "/somewhere", **{ "HTTP_AUTHORIZATION": "sensitive-token", "HTTP_PROXY_AUTHORIZATION": "proxy-token" }) middleware = LoggingMiddleware() middleware.process_request(request) self._assert_logged(mock_log, "HTTP_AUTHORIZATION") self._assert_logged(mock_log, "HTTP_PROXY_AUTHORIZATION") self._assert_logged_with_key_value(mock_log, "HTTP_AUTHORIZATION", "*****") self._assert_logged_with_key_value(mock_log, "HTTP_PROXY_AUTHORIZATION", "*****")
def setUp(self): self.factory = RequestFactory() def get_response(request): response = mock.MagicMock() response.status_code = 200 response.get.return_value = "application/json" headers = {"test_headers": "test_headers"} if IS_DJANGO_VERSION_GTE_3_2_0: response.headers = headers else: response._headers = headers return response self.middleware = LoggingMiddleware(get_response)
def test_request_headers_sensitive_logged_default(self, mock_log): request = self.factory.post( "/somewhere", **{"HTTP_AUTHORIZATION": "sensitive-token", "HTTP_PROXY_AUTHORIZATION": "proxy-token"} ) middleware = LoggingMiddleware() middleware.process_request(request) if IS_DJANGO_VERSION_GTE_3_2_0: self._assert_logged(mock_log, "Authorization") self._assert_logged_with_key_value(mock_log, "Authorization", "*****") else: self._assert_logged(mock_log, "HTTP_AUTHORIZATION") self._assert_logged_with_key_value(mock_log, "HTTP_AUTHORIZATION", "*****") if IS_DJANGO_VERSION_GTE_3_2_0: self._assert_logged(mock_log, "Proxy-Authorization") self._assert_logged_with_key_value(mock_log, "Proxy-Authorization", "*****") else: self._assert_logged(mock_log, "HTTP_PROXY_AUTHORIZATION") self._assert_logged_with_key_value(mock_log, "HTTP_PROXY_AUTHORIZATION", "*****")
def test_request_headers_sensitive_logged(self, mock_log): request = self.factory.post( "/somewhere", **{ 'HTTP_AUTHORIZATION': 'sensitive-token', 'HTTP_USER_AGENT': 'silly-human', 'HTTP_PROXY_AUTHORIZATION': 'proxy-token' }) middleware = LoggingMiddleware() middleware.process_request(request) self._assert_logged(mock_log, "HTTP_AUTHORIZATION") self._assert_logged(mock_log, "HTTP_USER_AGENT") self._assert_logged(mock_log, "HTTP_PROXY_AUTHORIZATION") self._assert_logged_with_key_value(mock_log, "HTTP_AUTHORIZATION", '*****') self._assert_logged_with_key_value(mock_log, "HTTP_USER_AGENT", 'silly-human') self._assert_logged_with_key_value(mock_log, "HTTP_PROXY_AUTHORIZATION", 'proxy-token')
def test_invalid_log_level(self, mock_log): with self.assertRaises(ValueError): LoggingMiddleware()
def test_logging_with_customized_log_level(self, mock_log): middleware = LoggingMiddleware() middleware.process_request(self.request) self._assert_logged_with_level(mock_log, logging.INFO)
def test_logging_default_debug_level(self, mock_log): middleware = LoggingMiddleware() middleware.process_request(self.request) self._assert_logged_with_level(mock_log, DEFAULT_LOG_LEVEL)
def setUp(self): self.factory = RequestFactory() self.middleware = LoggingMiddleware()
def test_invalid_max_body_length(self, mock_log): with self.assertRaises(ValueError): LoggingMiddleware()
def setUp(self): from django.urls import set_urlconf set_urlconf('test_urls') self.factory = RequestFactory() self.middleware = LoggingMiddleware()
def test_legacy_settings(self, mock_log): middleware = LoggingMiddleware() middleware.process_request(self.request, None, self.request.body) self.assertFalse(self._is_log_colorized(mock_log))
def test_legacy_settings_taking_precedence(self, mock_log): middleware = LoggingMiddleware() middleware.process_request(self.request) self.assertFalse(self._is_log_colorized(mock_log))
def test_log_request_200(self, mock_log): mock_log.reset_mock() middleware = LoggingMiddleware() middleware.process_request(self.request_200, self.response_200) self._assert_logged_with_level(mock_log, DEFAULT_LOG_LEVEL)
def test_log_request_500_as_error(self, mock_log): mock_log.reset_mock() middleware = LoggingMiddleware() middleware.process_request(self.request_500, self.response_500) self._assert_logged_with_level(mock_log, logging.ERROR)
def test_default_colorize(self, mock_log): middleware = LoggingMiddleware() middleware.process_request(self.request) self.assertEquals(DEFAULT_COLORIZE, self._is_log_colorized(mock_log))
def test_disable_colorize(self, mock_log): middleware = LoggingMiddleware() middleware.process_request(self.request) self.assertFalse(self._is_log_colorized(mock_log))
def test_logging_default_http_4xx_error(self, mock_log): middleware = LoggingMiddleware() middleware.process_response(self.request, self.response_404) self.assertEqual(DEFAULT_HTTP_4XX_LOG_LEVEL, logging.ERROR) self._assert_logged_with_level(mock_log, DEFAULT_HTTP_4XX_LOG_LEVEL)