1# -*- coding: utf-8 -*- 2 3from __future__ import absolute_import, division, print_function 4 5from stripe import six, error 6 7 8class TestStripeError(object): 9 def test_formatting(self): 10 err = error.StripeError(u"öre") 11 assert six.text_type(err) == u"öre" 12 if six.PY2: 13 assert str(err) == "\xc3\xb6re" 14 else: 15 assert str(err) == u"öre" 16 17 def test_formatting_with_request_id(self): 18 err = error.StripeError(u"öre", headers={"request-id": "123"}) 19 assert six.text_type(err) == u"Request 123: öre" 20 if six.PY2: 21 assert str(err) == "Request 123: \xc3\xb6re" 22 else: 23 assert str(err) == u"Request 123: öre" 24 25 def test_formatting_with_none(self): 26 err = error.StripeError(None, headers={"request-id": "123"}) 27 assert six.text_type(err) == u"Request 123: <empty message>" 28 if six.PY2: 29 assert str(err) == "Request 123: <empty message>" 30 else: 31 assert str(err) == "Request 123: <empty message>" 32 33 def test_formatting_with_message_none_and_request_id_none(self): 34 err = error.StripeError(None) 35 assert six.text_type(err) == u"<empty message>" 36 if six.PY2: 37 assert str(err) == "<empty message>" 38 else: 39 assert str(err) == u"<empty message>" 40 41 def test_repr(self): 42 err = error.StripeError(u"öre", headers={"request-id": "123"}) 43 if six.PY2: 44 assert ( 45 repr(err) 46 == "StripeError(message=u'\\xf6re', http_status=None, " 47 "request_id='123')" 48 ) 49 else: 50 assert ( 51 repr(err) == "StripeError(message='öre', http_status=None, " 52 "request_id='123')" 53 ) 54 55 56class TestStripeErrorWithParamCode(object): 57 def test_repr(self): 58 err = error.CardError( 59 u"öre", 60 param="cparam", 61 code="ccode", 62 http_status=403, 63 headers={"request-id": "123"}, 64 ) 65 if six.PY2: 66 assert ( 67 repr(err) == "CardError(message=u'\\xf6re', param='cparam', " 68 "code='ccode', http_status=403, request_id='123')" 69 ) 70 else: 71 assert ( 72 repr(err) 73 == "CardError(message='öre', param='cparam', code='ccode', " 74 "http_status=403, request_id='123')" 75 ) 76 77 78class TestApiConnectionError(object): 79 def test_default_no_retry(self): 80 err = error.APIConnectionError("msg") 81 assert err.should_retry is False 82 83 err = error.APIConnectionError("msg", should_retry=True) 84 assert err.should_retry 85