diff options
author | Steve Martinelli <s.martinelli@gmail.com> | 2017-01-03 09:55:09 -0500 |
---|---|---|
committer | Steve Martinelli <s.martinelli@gmail.com> | 2017-01-09 20:06:40 +0000 |
commit | ad4c0198efd4131f5b2a042fd8de7a076565ab74 (patch) | |
tree | 2f5d6a91c907d734203ed9f3a3dfc22a20c8e651 | |
parent | 85400c93938cc721f9d8552c5b18763dc40287f6 (diff) | |
download | python-keystoneclient-ad4c0198efd4131f5b2a042fd8de7a076565ab74.tar.gz |
Do not log binary data during request
Do not log binary data during debug logging of a session.
Replace the binary data with the string <binary_data> instead.
sort of a backport of: I5184002f3a21c5e0ee510b21b9a7884c8dccd1e3
Change-Id: I07ddbc3967f297597542f1975004d94c490f6e6b
Related-Bug: 1616105
(cherry picked from commit af770f17b705a66bd4292b2a54df46ec5fdaa12b)
-rw-r--r-- | keystoneclient/session.py | 5 | ||||
-rw-r--r-- | keystoneclient/tests/unit/test_session.py | 11 |
2 files changed, 9 insertions, 7 deletions
diff --git a/keystoneclient/session.py b/keystoneclient/session.py index 522a533..4adb942 100644 --- a/keystoneclient/session.py +++ b/keystoneclient/session.py @@ -201,6 +201,11 @@ class Session(object): % self._process_header(header)) if data: + if isinstance(data, six.binary_type): + try: + data = data.decode("ascii") + except UnicodeDecodeError: + data = "<binary_data>" string_parts.append("-d '%s'" % data) try: logger.debug(' '.join(string_parts)) diff --git a/keystoneclient/tests/unit/test_session.py b/keystoneclient/tests/unit/test_session.py index 8fb364a..d1bd803 100644 --- a/keystoneclient/tests/unit/test_session.py +++ b/keystoneclient/tests/unit/test_session.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- +# # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at @@ -194,7 +196,7 @@ class SessionTests(utils.TestCase): session = client_session.Session(verify=False) body = 'RESP' - data = u'unicode_data' + data = u'αβγδ' self.stub_url('POST', text=body) session.post(self.TEST_URL, data=data) @@ -219,12 +221,7 @@ class SessionTests(utils.TestCase): # raise a UnicodeDecodeError) session.post(unicode(self.TEST_URL), data=data) - self.assertIn("Replaced characters that could not be decoded" - " in log output", self.logger.output) - - # Our data payload should have changed to - # include the replacement char - self.assertIn(u"-d 'my data\ufffd'", self.logger.output) + self.assertNotIn('my data', self.logger.output) def test_logging_cacerts(self): path_to_certs = '/path/to/certs' |