def test_update_refund(self): resp = unittest.mock.MagicMock( spec=aiohttp.client_reqrep.ClientResponse) resp.status = 200 resp.headers = multidict.CIMultiDict( {'content-type': 'application/json'}) base.mkfuture(resp, self._session.request) refund = json.loads(refund_json) base.mkfuture(refund, resp.json) expected_headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Stripe-Version': '2017-02-14', } r = base.run_until( self._stripe.update_refund('re_aabbcc', { 'k': '1', 'j': 2 })) args, kwds = self._session.request.call_args self.assertEqual(args[0], 'POST') self.assertEqual(args[1], 'https://api.stripe.com/v1/refunds/re_aabbcc') self.assertEqual(kwds['params'], { 'metadata[k]': '1', 'metadata[j]': 2 }) self.assertEqual(kwds['auth'].login, 'sekret_key') self.assertEqual(kwds['auth'].password, '') self.assertEqual(kwds['headers'], expected_headers) self.assertEqual(r, stripe.convert_json_response(refund))
def test_list_refunds(self): resp = unittest.mock.MagicMock( spec=aiohttp.client_reqrep.ClientResponse) resp.status = 200 resp.headers = multidict.CIMultiDict( {'content-type': 'application/json'}) base.mkfuture(resp, self._session.request) refund = json.loads(refund_json) base.mkfuture( { 'object': 'list', 'url': '/v1/refunds', 'has_more': False, 'data': [refund] }, resp.json) expected_headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Stripe-Version': '2017-02-14', } r = base.run_until(self._stripe.list_refunds(k='1', j=2)) args, kwds = self._session.request.call_args self.assertEqual(args[0], 'GET') self.assertEqual(args[1], 'https://api.stripe.com/v1/refunds') self.assertEqual(kwds['params'], {'k': '1', 'j': 2}) self.assertEqual(kwds['auth'].login, 'sekret_key') self.assertEqual(kwds['auth'].password, '') self.assertEqual(kwds['headers'], expected_headers) self.assertEqual(r, [stripe.convert_json_response(refund)])
def test_delete_card(self): resp = unittest.mock.MagicMock( spec=aiohttp.client_reqrep.ClientResponse) resp.status = 200 resp.headers = multidict.CIMultiDict( {'content-type': 'application/json'}) base.mkfuture(resp, self._session.request) base.mkfuture({'deleted': True, 'id': 'card_aabbcc'}, resp.json) expected_headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Stripe-Version': '2017-02-14', } r = base.run_until( self._stripe.delete_card('cus_aabbcc', 'card_aabbcc')) args, kwds = self._session.request.call_args self.assertEqual(args[0], 'DELETE') self.assertEqual( args[1], 'https://api.stripe.com/v1/customers/cus_aabbcc/sources/card_aabbcc' ) self.assertEqual(kwds['params'], {}) self.assertEqual(kwds['auth'].login, 'sekret_key') self.assertEqual(kwds['auth'].password, '') self.assertEqual(kwds['headers'], expected_headers) self.assertIs(r, None)
def test_retrieve_customer(self): resp = unittest.mock.MagicMock( spec=aiohttp.client_reqrep.ClientResponse) resp.status = 200 resp.headers = multidict.CIMultiDict( {'content-type': 'application/json'}) base.mkfuture(resp, self._session.request) customer = json.loads(customer_json) base.mkfuture(customer, resp.json) expected_headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Stripe-Version': '2017-02-14', } r = base.run_until(self._stripe.retrieve_customer('cus_aabbcc')) args, kwds = self._session.request.call_args self.assertEqual(args[0], 'GET') self.assertEqual(args[1], 'https://api.stripe.com/v1/customers/cus_aabbcc') self.assertEqual(kwds['params'], {}) self.assertEqual(kwds['auth'].login, 'sekret_key') self.assertEqual(kwds['auth'].password, '') self.assertEqual(kwds['headers'], expected_headers) self.assertEqual(r, stripe.convert_json_response(customer))
def test_create_charge(self): resp = unittest.mock.MagicMock( spec=aiohttp.client_reqrep.ClientResponse) resp.status = 200 resp.headers = multidict.CIMultiDict( {'content-type': 'application/json'}) base.mkfuture(resp, self._session.request) charge = json.loads(charge_json) base.mkfuture(charge, resp.json) expected_headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Stripe-Version': '2017-02-14', } r = base.run_until( self._stripe.create_charge(amount=103, currency='usd', k='1', j=2)) args, kwds = self._session.request.call_args self.assertEqual(args[0], 'POST') self.assertEqual(args[1], 'https://api.stripe.com/v1/charges') self.assertEqual(kwds['params'], { 'amount': 103, 'currency': 'usd', 'k': '1', 'j': 2 }) self.assertEqual(kwds['auth'].login, 'sekret_key') self.assertEqual(kwds['auth'].password, '') self.assertEqual(kwds['headers'], expected_headers) self.assertEqual(r, stripe.convert_json_response(charge))
def test_param_conversion(self): resp = unittest.mock.MagicMock( spec=aiohttp.client_reqrep.ClientResponse) resp.status = 200 resp.headers = multidict.CIMultiDict( {'content-type': 'application/json'}) base.mkfuture(resp, self._session.request) charge = json.loads(charge_json) base.mkfuture(charge, resp.json) r = base.run_until( self._stripe.create_charge(amount=103, currency='usd', k='1', j=2, metadata={ 'md1': 'hi', 'md2': 'other' }, tf=True)) args, kwds = self._session.request.call_args self.assertEqual( kwds['params'], { 'amount': 103, 'currency': 'usd', 'k': '1', 'j': 2, 'metadata[md1]': 'hi', 'metadata[md2]': 'other', 'tf': 'true' })
def test_error_parsing(self): error_body = ''' { "error": { "type": "invalid_request_error", "message": "Customer cus_XXX does not have a linked source with ID card_YYYY.", "param": "source", "code": "missing" } } ''' resp = unittest.mock.MagicMock( spec=aiohttp.client_reqrep.ClientResponse) resp.status = 404 resp.headers = multidict.CIMultiDict( {'content-type': 'application/json'}) base.mkfuture(resp, self._session.request) error = json.loads(error_body) base.mkfuture(error, resp.json) with self.assertRaises(stripe.StripeError) as exc: base.run_until( self._stripe.create_charge(amount=103, currency='usd', k='1', j=2)) self.assertEqual(exc.exception.type, 'invalid_request_error') self.assertEqual(exc.exception.charge, '') self.assertEqual( exc.exception.message, 'Customer cus_XXX does not have a linked source with ID card_YYYY.' ) self.assertEqual(exc.exception.code, 'missing') self.assertEqual(exc.exception.decline_code, '') self.assertEqual(exc.exception.param, 'source') self.assertEqual(exc.exception.http_code, 404)