From c7ec27a448d20201471a8f953e3b58b9ded589aa Mon Sep 17 00:00:00 2001 From: Jamie Lennox Date: Tue, 5 May 2015 10:59:40 +1000 Subject: [PATCH] Ensure that failing responses are logged The boolean value of a failed response is False and so the way we populate the log output does not work when the request failed. When logging check that a response is not None rather than simply checking it's boolean value. Change-Id: I07fb46f156fdf8267fd3d4dc7c587cd604838d73 Closes-Bug: #1451625 --- keystoneclient/session.py | 2 +- keystoneclient/tests/unit/test_session.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/keystoneclient/session.py b/keystoneclient/session.py index 96df8d037..9bfa87559 100644 --- a/keystoneclient/session.py +++ b/keystoneclient/session.py @@ -201,7 +201,7 @@ class Session(object): if not logger.isEnabledFor(logging.DEBUG): return - if response: + if response is not None: if not status_code: status_code = response.status_code if not headers: diff --git a/keystoneclient/tests/unit/test_session.py b/keystoneclient/tests/unit/test_session.py index d5210972a..e0b6fb5ab 100644 --- a/keystoneclient/tests/unit/test_session.py +++ b/keystoneclient/tests/unit/test_session.py @@ -174,6 +174,18 @@ class SessionTests(utils.TestCase): self.assertEqual(v, resp.headers[k]) self.assertNotIn(v, self.logger.output) + def test_logs_failed_output(self): + """Test that output is logged even for failed requests""" + + session = client_session.Session() + body = uuid.uuid4().hex + + self.stub_url('GET', text=body, status_code=400) + resp = session.get(self.TEST_URL, raise_exc=False) + + self.assertEqual(resp.status_code, 400) + self.assertIn(body, self.logger.output) + def test_logging_cacerts(self): path_to_certs = '/path/to/certs' session = client_session.Session(verify=path_to_certs)