summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-09-03 20:29:08 +0000
committerGerrit Code Review <review@openstack.org>2015-09-03 20:29:08 +0000
commit1bff68f9b8d8f6bed843d910fb4e1b69b64ded7a (patch)
tree42efd5204634fda899cc789eeb20656358e460c5
parent3e862bbb1e2a7b488cf2de43651270e6afbb82ad (diff)
parent3e26ff824801d5084791a52980021784e794e35f (diff)
downloadpython-keystoneclient-1bff68f9b8d8f6bed843d910fb4e1b69b64ded7a.tar.gz
Merge "Mask passwords when logging the HTTP response"
-rw-r--r--keystoneclient/session.py4
-rw-r--r--keystoneclient/tests/unit/test_session.py29
2 files changed, 32 insertions, 1 deletions
diff --git a/keystoneclient/session.py b/keystoneclient/session.py
index 39227c2..6f2e930 100644
--- a/keystoneclient/session.py
+++ b/keystoneclient/session.py
@@ -23,6 +23,7 @@ from debtcollector import removals
from oslo_config import cfg
from oslo_serialization import jsonutils
from oslo_utils import importutils
+from oslo_utils import strutils
import requests
import six
from six.moves import urllib
@@ -208,7 +209,8 @@ class Session(object):
for header in six.iteritems(response.headers):
string_parts.append('%s: %s' % self._process_header(header))
if text:
- string_parts.append('\nRESP BODY: %s\n' % text)
+ string_parts.append('\nRESP BODY: %s\n' %
+ strutils.mask_password(text))
logger.debug(' '.join(string_parts))
diff --git a/keystoneclient/tests/unit/test_session.py b/keystoneclient/tests/unit/test_session.py
index ee76337..f7384cd 100644
--- a/keystoneclient/tests/unit/test_session.py
+++ b/keystoneclient/tests/unit/test_session.py
@@ -250,6 +250,35 @@ class SessionTests(utils.TestCase):
session.get,
self.TEST_URL)
+ def test_mask_password_in_http_log_response(self):
+ session = client_session.Session()
+
+ def fake_debug(msg):
+ self.assertNotIn('verybadpass', msg)
+
+ logger = mock.Mock(isEnabledFor=mock.Mock(return_value=True))
+ logger.debug = mock.Mock(side_effect=fake_debug)
+ body = {
+ "connection_info": {
+ "driver_volume_type": "iscsi",
+ "data": {
+ "auth_password": "verybadpass",
+ "target_discovered": False,
+ "encrypted": False,
+ "qos_specs": None,
+ "target_iqn": ("iqn.2010-10.org.openstack:volume-"
+ "744d2085-8e78-40a5-8659-ef3cffb2480e"),
+ "target_portal": "172.99.69.228:3260",
+ "volume_id": "744d2085-8e78-40a5-8659-ef3cffb2480e",
+ "target_lun": 1,
+ "access_mode": "rw",
+ "auth_username": "verybadusername",
+ "auth_method": "CHAP"}}}
+ body_json = jsonutils.dumps(body)
+ response = mock.Mock(text=body_json, status_code=200, headers={})
+ session._http_log_response(response, logger)
+ self.assertEqual(1, logger.debug.call_count)
+
class RedirectTests(utils.TestCase):