From cccc065516ab683b5c1aaf82a51eeec744c34eae Mon Sep 17 00:00:00 2001 From: Rodrigo Duarte Sousa Date: Mon, 20 Oct 2014 22:46:33 -0300 Subject: [PATCH] Improve feedback message in SSL error Adds the error message to give a hint to the user about what happened. Change-Id: I9ca56de8592e65194062038c81b468be72ffb2d9 Closes-Bug: 1297280 --- keystoneclient/session.py | 5 +++-- keystoneclient/tests/unit/test_session.py | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/keystoneclient/session.py b/keystoneclient/session.py index 0bb0de22e..9d4fd6671 100644 --- a/keystoneclient/session.py +++ b/keystoneclient/session.py @@ -406,8 +406,9 @@ class Session(object): try: try: resp = self.session.request(method, url, **kwargs) - except requests.exceptions.SSLError: - msg = _('SSL exception connecting to %s') % url + except requests.exceptions.SSLError as e: + msg = _('SSL exception connecting to %(url)s: ' + '%(error)s') % {'url': url, 'error': e} raise exceptions.SSLError(msg) except requests.exceptions.Timeout: msg = _('Request to %s timed out') % url diff --git a/keystoneclient/tests/unit/test_session.py b/keystoneclient/tests/unit/test_session.py index 1d01c3a43..9519f2706 100644 --- a/keystoneclient/tests/unit/test_session.py +++ b/keystoneclient/tests/unit/test_session.py @@ -25,6 +25,7 @@ from testtools import matchers from keystoneclient import adapter from keystoneclient.auth import base from keystoneclient import exceptions +from keystoneclient.i18n import _ from keystoneclient import session as client_session from keystoneclient.tests.unit import utils @@ -218,6 +219,23 @@ class SessionTests(utils.TestCase): client_session.Session(session=mock_session) self.assertFalse(mock_session.mount.called) + def test_ssl_error_message(self): + error = uuid.uuid4().hex + + def _ssl_error(request, context): + raise requests.exceptions.SSLError(error) + + self.stub_url('GET', text=_ssl_error) + session = client_session.Session() + + # The exception should contain the URL and details about the SSL error + msg = _('SSL exception connecting to %(url)s: %(error)s') % { + 'url': self.TEST_URL, 'error': error} + self.assertRaisesRegexp(exceptions.SSLError, + msg, + session.get, + self.TEST_URL) + class RedirectTests(utils.TestCase):