From 169e1296400ad1f1155fac879664c99535075cda Mon Sep 17 00:00:00 2001 From: Jeffrey Meadows Date: Wed, 7 Sep 2016 08:51:00 -0700 Subject: [PATCH 1/3] Don't log file content when logging Box API responses. --- boxsdk/network/logging_network.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/boxsdk/network/logging_network.py b/boxsdk/network/logging_network.py index 3d29f2c8a..5a26ce1cd 100644 --- a/boxsdk/network/logging_network.py +++ b/boxsdk/network/logging_network.py @@ -56,7 +56,10 @@ def _log_response(self, response): :param response: The Box API response. """ if response.ok: - self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, response.content) + if response.request_response.raw is not None: + self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, '') + else: + self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, response.content) else: self._logger.warning( self.ERROR_RESPONSE_FORMAT, From 569876dd330af39e5f2018a1d5f22d78852b1876 Mon Sep 17 00:00:00 2001 From: Jeffrey Meadows Date: Wed, 7 Sep 2016 14:52:19 -0700 Subject: [PATCH 2/3] Fix logging network tests --- boxsdk/network/logging_network.py | 3 ++- test/conftest.py | 4 +++- test/unit/network/test_logging_network.py | 11 +++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/boxsdk/network/logging_network.py b/boxsdk/network/logging_network.py index 5a26ce1cd..578d3d568 100644 --- a/boxsdk/network/logging_network.py +++ b/boxsdk/network/logging_network.py @@ -14,6 +14,7 @@ class LoggingNetwork(DefaultNetwork): REQUEST_FORMAT = '\x1b[36m%s %s %s\x1b[0m' SUCCESSFUL_RESPONSE_FORMAT = '\x1b[32m%s\x1b[0m' ERROR_RESPONSE_FORMAT = '\x1b[31m%s\n%s\n%s\n\x1b[0m' + DOWNLOAD_CONTENT_NOT_LOGGED_MESSAGE = '' def __init__(self, logger=None): """ @@ -57,7 +58,7 @@ def _log_response(self, response): """ if response.ok: if response.request_response.raw is not None: - self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, '') + self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, self.DOWNLOAD_CONTENT_NOT_LOGGED_MESSAGE) else: self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, response.content) else: diff --git a/test/conftest.py b/test/conftest.py index a5958da65..e1f3b0c50 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -7,13 +7,15 @@ from boxsdk.network.default_network import DefaultNetworkResponse -@pytest.fixture(scope='session') +@pytest.fixture() def generic_successful_response(): mock_network_response = Mock(DefaultNetworkResponse) mock_network_response.content = b'{"message": "success"}' mock_network_response.status_code = 200 mock_network_response.ok = True mock_network_response.raw = Mock() + mock_network_response.request_response = Mock() + mock_network_response.request_response.raw = None return mock_network_response diff --git a/test/unit/network/test_logging_network.py b/test/unit/network/test_logging_network.py index 58a8c61da..3341b3c38 100644 --- a/test/unit/network/test_logging_network.py +++ b/test/unit/network/test_logging_network.py @@ -54,6 +54,17 @@ def test_logging_network_logs_successful_responses(http_verb, test_url, access_t logger.info.assert_called_with(network.SUCCESSFUL_RESPONSE_FORMAT, generic_successful_response.content) +def test_logging_network_does_not_log_download_content(http_verb, test_url, access_token, generic_successful_response): + logger = Mock(Logger) + network = LoggingNetwork(logger) + generic_successful_response.request_response.raw = Mock() + with patch.object(default_network.DefaultNetwork, 'request') as super_request: + super_request.return_value = generic_successful_response + network.request(http_verb, test_url, access_token) + super_request.assert_called_once_with(http_verb, test_url, access_token) + logger.info.assert_called_with(network.SUCCESSFUL_RESPONSE_FORMAT, network.DOWNLOAD_CONTENT_NOT_LOGGED_MESSAGE) + + def test_logging_network_logs_non_successful_responses(http_verb, test_url, access_token, server_error_response): logger = Mock(Logger) network = LoggingNetwork(logger) From 1a488f03913ea849a497d2fbb4cf121ba13a8622 Mon Sep 17 00:00:00 2001 From: Jeffrey Meadows Date: Wed, 7 Sep 2016 19:52:40 -0700 Subject: [PATCH 3/3] fix pylint errors --- boxsdk/network/logging_network.py | 4 ++-- test/functional/test_object_clone.py | 2 +- test/unit/network/test_logging_network.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boxsdk/network/logging_network.py b/boxsdk/network/logging_network.py index 578d3d568..b1ea383ca 100644 --- a/boxsdk/network/logging_network.py +++ b/boxsdk/network/logging_network.py @@ -14,7 +14,7 @@ class LoggingNetwork(DefaultNetwork): REQUEST_FORMAT = '\x1b[36m%s %s %s\x1b[0m' SUCCESSFUL_RESPONSE_FORMAT = '\x1b[32m%s\x1b[0m' ERROR_RESPONSE_FORMAT = '\x1b[31m%s\n%s\n%s\n\x1b[0m' - DOWNLOAD_CONTENT_NOT_LOGGED_MESSAGE = '' + STREAM_CONTENT_NOT_LOGGED = '' def __init__(self, logger=None): """ @@ -58,7 +58,7 @@ def _log_response(self, response): """ if response.ok: if response.request_response.raw is not None: - self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, self.DOWNLOAD_CONTENT_NOT_LOGGED_MESSAGE) + self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, self.STREAM_CONTENT_NOT_LOGGED) else: self._logger.info(self.SUCCESSFUL_RESPONSE_FORMAT, response.content) else: diff --git a/test/functional/test_object_clone.py b/test/functional/test_object_clone.py index edd7fdae4..b97cc9872 100644 --- a/test/functional/test_object_clone.py +++ b/test/functional/test_object_clone.py @@ -1,8 +1,8 @@ # coding: utf-8 from __future__ import unicode_literals, absolute_import -from boxsdk.object.folder import FolderSyncState import pytest +from boxsdk.object.folder import FolderSyncState @pytest.fixture() diff --git a/test/unit/network/test_logging_network.py b/test/unit/network/test_logging_network.py index 3341b3c38..33a3764b7 100644 --- a/test/unit/network/test_logging_network.py +++ b/test/unit/network/test_logging_network.py @@ -62,7 +62,7 @@ def test_logging_network_does_not_log_download_content(http_verb, test_url, acce super_request.return_value = generic_successful_response network.request(http_verb, test_url, access_token) super_request.assert_called_once_with(http_verb, test_url, access_token) - logger.info.assert_called_with(network.SUCCESSFUL_RESPONSE_FORMAT, network.DOWNLOAD_CONTENT_NOT_LOGGED_MESSAGE) + logger.info.assert_called_with(network.SUCCESSFUL_RESPONSE_FORMAT, network.STREAM_CONTENT_NOT_LOGGED) def test_logging_network_logs_non_successful_responses(http_verb, test_url, access_token, server_error_response):