From 76b2b95244f4b7567c953907a23a72c954c89cc3 Mon Sep 17 00:00:00 2001 From: Jeremy Fleischman Date: Mon, 14 May 2018 13:11:18 -0700 Subject: [PATCH] Handle the case where both error messages are None and request IDs are None. (#430) https://github.com/stripe/stripe-python/pull/196 fixed this TypeError for when request_id is set and message is None, but it didn't handle the case where both were None. --- stripe/error.py | 4 ++-- tests/test_error.py | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/stripe/error.py b/stripe/error.py index 2423d88b1..e9e194e65 100644 --- a/stripe/error.py +++ b/stripe/error.py @@ -26,11 +26,11 @@ def __init__(self, message=None, http_body=None, http_status=None, self.request_id = self.headers.get('request-id', None) def __str__(self): + msg = self._message or "" if self.request_id is not None: - msg = self._message or "" return u"Request {0}: {1}".format(self.request_id, msg) else: - return self._message + return msg # Returns the underlying `Exception` (base class) message, which is usually # the raw message returned by Stripe's API. This was previously available diff --git a/tests/test_error.py b/tests/test_error.py index a0e4c6395..f86f8e16c 100644 --- a/tests/test_error.py +++ b/tests/test_error.py @@ -24,10 +24,18 @@ def test_formatting_with_request_id(self): else: self.assertEqual(u'Request 123: öre', str(err)) - def test_formatting_with_none(self): + def test_formatting_with_message_none_and_request_id(self): err = StripeError(None, headers={'request-id': '123'}) self.assertEqual(u'Request 123: ', six.text_type(err)) if six.PY2: self.assertEqual('Request 123: ', str(err)) else: self.assertEqual('Request 123: ', str(err)) + + def test_formatting_with_message_none_and_request_id_none(self): + err = StripeError(None) + self.assertEqual(u'', six.text_type(err)) + if six.PY2: + self.assertEqual('', str(err)) + else: + self.assertEqual('', str(err))