From 8a570551cf35f3a260d2fa675ebdc3cf1ae892ac Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Thu, 30 Jun 2022 08:53:04 -0700 Subject: [PATCH 1/9] Unify request sending and result parsing logic --- stripe/api_resources/abstract/api_resource.py | 54 +++++++++++++++++-- .../abstract/createable_api_resource.py | 18 +++---- .../abstract/deletable_api_resource.py | 12 ++++- .../abstract/listable_api_resource.py | 20 +++---- .../abstract/nested_resource_class_methods.py | 2 +- .../abstract/searchable_api_resource.py | 19 +++---- .../abstract/updateable_api_resource.py | 15 +++--- stripe/api_resources/abstract/verify_mixin.py | 15 ++++-- stripe/api_resources/balance.py | 4 ++ stripe/api_resources/bitcoin_receiver.py | 8 +-- stripe/api_resources/search_result_object.py | 38 +++---------- stripe/stripe_object.py | 33 ++++++++++-- stripe/util.py | 10 +++- .../abstract/test_updateable_api_resource.py | 1 + 14 files changed, 155 insertions(+), 94 deletions(-) diff --git a/stripe/api_resources/abstract/api_resource.py b/stripe/api_resources/abstract/api_resource.py index 52b3ed9ee..7ea991426 100644 --- a/stripe/api_resources/abstract/api_resource.py +++ b/stripe/api_resources/abstract/api_resource.py @@ -13,8 +13,7 @@ def retrieve(cls, id, api_key=None, **params): return instance def refresh(self): - self.refresh_from(self.request("get", self.instance_url())) - return self + return self._request_and_refresh("get", self.instance_url()) @classmethod def class_url(cls): @@ -44,6 +43,55 @@ def instance_url(self): extn = quote_plus(id) return "%s/%s" % (base, extn) + def _request(self, + method_, + url_, + api_key, + idempotency_key, + stripe_version, + stripe_account, + headers, + params): + obj = StripeObject._request( + self, + method_, + url_, + api_key, + idempotency_key, + stripe_version, + stripe_account, + headers, + params) + + if type(self) is type(obj): + self.refresh_from(obj) + return self + else: + return obj + + def _request_and_refresh(self, + method_, + url_, + api_key=None, + idempotency_key=None, + stripe_version=None, + stripe_account=None, + headers=None, + params=None): + obj = StripeObject._request( + self, + method_, + url_, + api_key, + idempotency_key, + stripe_version, + stripe_account, + headers, + params) + + self.refresh_from(obj) + return self + # The `method_` and `url_` arguments are suffixed with an underscore to # avoid conflicting with actual request parameters in `params`. @classmethod @@ -63,7 +111,7 @@ def _static_request( headers = util.populate_headers(idempotency_key) response, api_key = requestor.request(method_, url_, params, headers) return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + response, api_key, stripe_version, stripe_account, params ) # The `method_` and `url_` arguments are suffixed with an underscore to diff --git a/stripe/api_resources/abstract/createable_api_resource.py b/stripe/api_resources/abstract/createable_api_resource.py index cbfe83738..377363f9c 100644 --- a/stripe/api_resources/abstract/createable_api_resource.py +++ b/stripe/api_resources/abstract/createable_api_resource.py @@ -14,13 +14,11 @@ def create( stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = cls.class_url() - headers = util.populate_headers(idempotency_key) - response, api_key = requestor.request("post", url, params, headers) - - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account - ) + return cls._static_request( + "post", + cls.class_url(), + api_key, + idempotency_key, + stripe_version, + stripe_account, + **params) diff --git a/stripe/api_resources/abstract/deletable_api_resource.py b/stripe/api_resources/abstract/deletable_api_resource.py index fd5100f1a..68c3e22c7 100644 --- a/stripe/api_resources/abstract/deletable_api_resource.py +++ b/stripe/api_resources/abstract/deletable_api_resource.py @@ -13,5 +13,13 @@ def _cls_delete(cls, sid, **params): @util.class_method_variant("_cls_delete") def delete(self, **params): - self.refresh_from(self.request("delete", self.instance_url(), params)) - return self + return self._request( + "delete", + self.get("url"), + None, + None, + None, + None, + None, + params + ) diff --git a/stripe/api_resources/abstract/listable_api_resource.py b/stripe/api_resources/abstract/listable_api_resource.py index df7f971c9..3f8d9d14d 100644 --- a/stripe/api_resources/abstract/listable_api_resource.py +++ b/stripe/api_resources/abstract/listable_api_resource.py @@ -1,6 +1,5 @@ from __future__ import absolute_import, division, print_function -from stripe import api_requestor, util from stripe.api_resources.abstract.api_resource import APIResource @@ -13,16 +12,11 @@ def auto_paging_iter(cls, *args, **params): def list( cls, api_key=None, stripe_version=None, stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( + return cls._static_request( + "get", + cls.class_url(), api_key, - api_base=cls.api_base(), - api_version=stripe_version, - account=stripe_account, - ) - url = cls.class_url() - response, api_key = requestor.request("get", url, params) - stripe_object = util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account - ) - stripe_object._retrieve_params = params - return stripe_object + None, + stripe_version, + stripe_account, + **params) diff --git a/stripe/api_resources/abstract/nested_resource_class_methods.py b/stripe/api_resources/abstract/nested_resource_class_methods.py index e1bcf9fab..a8f66ea3d 100644 --- a/stripe/api_resources/abstract/nested_resource_class_methods.py +++ b/stripe/api_resources/abstract/nested_resource_class_methods.py @@ -44,7 +44,7 @@ def nested_resource_request( headers = util.populate_headers(idempotency_key) response, api_key = requestor.request(method, url, params, headers) return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + response, api_key, stripe_version, stripe_account, params ) resource_request_method = "%ss_request" % resource diff --git a/stripe/api_resources/abstract/searchable_api_resource.py b/stripe/api_resources/abstract/searchable_api_resource.py index 10f17d792..b76e052c2 100644 --- a/stripe/api_resources/abstract/searchable_api_resource.py +++ b/stripe/api_resources/abstract/searchable_api_resource.py @@ -1,6 +1,5 @@ from __future__ import absolute_import, division, print_function -from stripe import api_requestor, util from stripe.api_resources.abstract.api_resource import APIResource @@ -14,15 +13,11 @@ def _search( stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( + return cls._static_request( + "get", + search_url, api_key, - api_base=cls.api_base(), - api_version=stripe_version, - account=stripe_account, - ) - response, api_key = requestor.request("get", search_url, params) - stripe_object = util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account - ) - stripe_object._retrieve_params = params - return stripe_object + None, + stripe_version, + stripe_account, + **params) diff --git a/stripe/api_resources/abstract/updateable_api_resource.py b/stripe/api_resources/abstract/updateable_api_resource.py index e253faad0..1270e72b5 100644 --- a/stripe/api_resources/abstract/updateable_api_resource.py +++ b/stripe/api_resources/abstract/updateable_api_resource.py @@ -13,13 +13,16 @@ def modify(cls, sid, **params): def save(self, idempotency_key=None): updated_params = self.serialize(None) - headers = util.populate_headers(idempotency_key) - if updated_params: - self.refresh_from( - self.request( - "post", self.instance_url(), updated_params, headers - ) + self._request_and_refresh( + "post", + self.instance_url(), + None, + idempotency_key, + None, + None, + None, + updated_params ) else: util.logger.debug("Trying to save already saved object %r", self) diff --git a/stripe/api_resources/abstract/verify_mixin.py b/stripe/api_resources/abstract/verify_mixin.py index 9a0be204f..78676d908 100644 --- a/stripe/api_resources/abstract/verify_mixin.py +++ b/stripe/api_resources/abstract/verify_mixin.py @@ -1,11 +1,16 @@ from __future__ import absolute_import, division, print_function -from stripe import util - class VerifyMixin(object): def verify(self, idempotency_key=None, **params): url = self.instance_url() + "/verify" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + url, + None, + idempotency_key, + None, + None, + None, + params + ) diff --git a/stripe/api_resources/balance.py b/stripe/api_resources/balance.py index af75a95f1..7462b69a9 100644 --- a/stripe/api_resources/balance.py +++ b/stripe/api_resources/balance.py @@ -6,3 +6,7 @@ class Balance(SingletonAPIResource): OBJECT_NAME = "balance" + + @classmethod + def class_url(cls): + return "/v1/balance" diff --git a/stripe/api_resources/bitcoin_receiver.py b/stripe/api_resources/bitcoin_receiver.py index 6d31bc6af..e7edf7d27 100644 --- a/stripe/api_resources/bitcoin_receiver.py +++ b/stripe/api_resources/bitcoin_receiver.py @@ -10,6 +10,10 @@ class BitcoinReceiver(ListableAPIResource): OBJECT_NAME = "bitcoin_receiver" + @classmethod + def class_url(cls): + return "/v1/bitcoin/receivers" + def instance_url(self): token = util.utf8(self.id) extn = quote_plus(token) @@ -22,7 +26,3 @@ def instance_url(self): else: base = BitcoinReceiver.class_url() return "%s/%s" % (base, extn) - - @classmethod - def class_url(cls): - return "/v1/bitcoin/receivers" diff --git a/stripe/api_resources/search_result_object.py b/stripe/api_resources/search_result_object.py index c2f781942..ce1910b21 100644 --- a/stripe/api_resources/search_result_object.py +++ b/stripe/api_resources/search_result_object.py @@ -10,40 +10,16 @@ class SearchResultObject(StripeObject): def search( self, api_key=None, stripe_version=None, stripe_account=None, **params ): - stripe_object = self._request( + return self._request( "get", self.get("url"), - api_key=api_key, - stripe_version=stripe_version, - stripe_account=stripe_account, - **params - ) - stripe_object._retrieve_params = params - return stripe_object - - def _request( - self, - method_, - url_, - api_key=None, - idempotency_key=None, - stripe_version=None, - stripe_account=None, - **params - ): - api_key = api_key or self.api_key - stripe_version = stripe_version or self.stripe_version - stripe_account = stripe_account or self.stripe_account - - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - headers = util.populate_headers(idempotency_key) - response, api_key = requestor.request(method_, url_, params, headers) - stripe_object = util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + api_key, + None, + stripe_version, + stripe_account, + None, + params ) - return stripe_object def __getitem__(self, k): if isinstance(k, six.string_types): diff --git a/stripe/stripe_object.py b/stripe/stripe_object.py index 03f992f5b..7415e90a9 100644 --- a/stripe/stripe_object.py +++ b/stripe/stripe_object.py @@ -233,18 +233,41 @@ def api_base(cls): return None def request(self, method, url, params=None, headers=None): + return StripeObject._request(self, method, url, None, None, None, None, headers, params) + + def _request(self, + method_, + url_, + api_key, + idempotency_key, + stripe_version, + stripe_account, + headers, + params): + if stripe_account is None: + stripe_account = self.stripe_account + if stripe_version is None: + stripe_version = self.stripe_version + if api_key is None: + api_key = self.api_key if params is None: params = self._retrieve_params + requestor = api_requestor.APIRequestor( - key=self.api_key, + key=api_key, api_base=self.api_base(), - api_version=self.stripe_version, - account=self.stripe_account, + api_version=stripe_version, + account=stripe_account, ) - response, api_key = requestor.request(method, url, params, headers) + + if idempotency_key is not None: + headers = {} if headers is None else headers.copy() + headers.update(util.populate_headers(idempotency_key)) + + response, api_key = requestor.request(method_, url_, params, headers) return util.convert_to_stripe_object( - response, api_key, self.stripe_version, self.stripe_account + response, api_key, stripe_version, stripe_account, params ) def request_stream(self, method, url, params=None, headers=None): diff --git a/stripe/util.py b/stripe/util.py index da5be7259..5107e3682 100644 --- a/stripe/util.py +++ b/stripe/util.py @@ -136,7 +136,7 @@ def get_object_classes(): def convert_to_stripe_object( - resp, api_key=None, stripe_version=None, stripe_account=None + resp, api_key=None, stripe_version=None, stripe_account=None, params=None ): # If we get a StripeResponse, we'll want to return a # StripeObject with the last_response field filled out with @@ -166,13 +166,19 @@ def convert_to_stripe_object( else: klass = stripe.stripe_object.StripeObject - return klass.construct_from( + obj = klass.construct_from( resp, api_key, stripe_version=stripe_version, stripe_account=stripe_account, last_response=stripe_response, ) + + if hasattr(obj, 'object') and \ + ((obj.object == 'list') or (obj.object == 'search_result')): + obj._retrieve_params = params + + return obj else: return resp diff --git a/tests/api_resources/abstract/test_updateable_api_resource.py b/tests/api_resources/abstract/test_updateable_api_resource.py index 89a6b3b49..f19347d65 100644 --- a/tests/api_resources/abstract/test_updateable_api_resource.py +++ b/tests/api_resources/abstract/test_updateable_api_resource.py @@ -24,6 +24,7 @@ def obj(self, request_mock): "foo": "bar", "baz": "boz", "metadata": {"size": "l", "score": 4, "height": 10}, + "object": "obj" }, "mykey", ) From c6672bdc8c0108b9464e834f7d7575c531524460 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Thu, 30 Jun 2022 09:36:49 -0700 Subject: [PATCH 2/9] final fixes --- .../abstract/deletable_api_resource.py | 4 +- .../abstract/nested_resource_class_methods.py | 18 ++--- stripe/api_resources/list_object.py | 69 ++++--------------- stripe/stripe_object.py | 12 ++-- 4 files changed, 30 insertions(+), 73 deletions(-) diff --git a/stripe/api_resources/abstract/deletable_api_resource.py b/stripe/api_resources/abstract/deletable_api_resource.py index 68c3e22c7..54c59d01e 100644 --- a/stripe/api_resources/abstract/deletable_api_resource.py +++ b/stripe/api_resources/abstract/deletable_api_resource.py @@ -13,9 +13,9 @@ def _cls_delete(cls, sid, **params): @util.class_method_variant("_cls_delete") def delete(self, **params): - return self._request( + return self._request_and_refresh( "delete", - self.get("url"), + self.instance_url(), None, None, None, diff --git a/stripe/api_resources/abstract/nested_resource_class_methods.py b/stripe/api_resources/abstract/nested_resource_class_methods.py index a8f66ea3d..2fc72b15a 100644 --- a/stripe/api_resources/abstract/nested_resource_class_methods.py +++ b/stripe/api_resources/abstract/nested_resource_class_methods.py @@ -3,6 +3,8 @@ from stripe import api_requestor, util from stripe.six.moves.urllib.parse import quote_plus +from stripe.api_resources.abstract import APIResource + def nested_resource_class_methods( resource, path=None, operations=None, resource_plural=None @@ -38,14 +40,14 @@ def nested_resource_request( stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - headers = util.populate_headers(idempotency_key) - response, api_key = requestor.request(method, url, params, headers) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account, params - ) + return APIResource._static_request( + method, + url, + api_key, + idempotency_key, + stripe_version, + stripe_account, + **params) resource_request_method = "%ss_request" % resource setattr( diff --git a/stripe/api_resources/list_object.py b/stripe/api_resources/list_object.py index af2af033f..c8e39cf20 100644 --- a/stripe/api_resources/list_object.py +++ b/stripe/api_resources/list_object.py @@ -12,16 +12,16 @@ class ListObject(StripeObject): def list( self, api_key=None, stripe_version=None, stripe_account=None, **params ): - stripe_object = self._request( + return self._request( "get", self.get("url"), - api_key=api_key, - stripe_version=stripe_version, - stripe_account=stripe_account, - **params + api_key, + None, + stripe_version, + stripe_account, + None, + params ) - stripe_object._retrieve_params = params - return stripe_object def create( self, @@ -31,57 +31,16 @@ def create( stripe_account=None, **params ): - return self._request( - "post", - self.get("url"), - api_key=api_key, - idempotency_key=idempotency_key, - stripe_version=stripe_version, - stripe_account=stripe_account, - **params - ) - - def retrieve( - self, - id, - api_key=None, - stripe_version=None, - stripe_account=None, - **params - ): - url = "%s/%s" % (self.get("url"), quote_plus(util.utf8(id))) return self._request( "get", - url, - api_key=api_key, - stripe_version=stripe_version, - stripe_account=stripe_account, - **params - ) - - def _request( - self, - method_, - url_, - api_key=None, - idempotency_key=None, - stripe_version=None, - stripe_account=None, - **params - ): - api_key = api_key or self.api_key - stripe_version = stripe_version or self.stripe_version - stripe_account = stripe_account or self.stripe_account - - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - headers = util.populate_headers(idempotency_key) - response, api_key = requestor.request(method_, url_, params, headers) - stripe_object = util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + self.get("url"), + api_key, + idempotency_key, + stripe_version, + stripe_account, + None, + params ) - return stripe_object def __getitem__(self, k): if isinstance(k, six.string_types): diff --git a/stripe/stripe_object.py b/stripe/stripe_object.py index 7415e90a9..15e75d6b9 100644 --- a/stripe/stripe_object.py +++ b/stripe/stripe_object.py @@ -244,14 +244,10 @@ def _request(self, stripe_account, headers, params): - if stripe_account is None: - stripe_account = self.stripe_account - if stripe_version is None: - stripe_version = self.stripe_version - if api_key is None: - api_key = self.api_key - if params is None: - params = self._retrieve_params + stripe_account = stripe_account or self.stripe_account + stripe_version = stripe_version or self.stripe_version + api_key = api_key or self.api_key + params = params or self._retrieve_params requestor = api_requestor.APIRequestor( key=api_key, From 654a500983e48ff217bbf449a7fa969dbc23ca8e Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Thu, 30 Jun 2022 09:41:21 -0700 Subject: [PATCH 3/9] more --- stripe/api_resources/list_object.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/stripe/api_resources/list_object.py b/stripe/api_resources/list_object.py index c8e39cf20..e9c2fa0c4 100644 --- a/stripe/api_resources/list_object.py +++ b/stripe/api_resources/list_object.py @@ -32,7 +32,7 @@ def create( **params ): return self._request( - "get", + "post", self.get("url"), api_key, idempotency_key, @@ -42,6 +42,26 @@ def create( params ) + def retrieve( + self, + id, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + url = "%s/%s" % (self.get("url"), quote_plus(util.utf8(id))) + return self._request( + "get", + url, + api_key, + None, + stripe_version, + stripe_account, + None, + params + ) + def __getitem__(self, k): if isinstance(k, six.string_types): return super(ListObject, self).__getitem__(k) From e0412618a5a62c6e236dd03a6bbde99d59a29ca2 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Fri, 1 Jul 2022 14:28:31 -0700 Subject: [PATCH 4/9] params --- stripe/api_resources/abstract/api_resource.py | 12 +++---- stripe/api_resources/abstract/verify_mixin.py | 8 ++--- stripe/api_resources/list_object.py | 31 ++++++++----------- stripe/api_resources/search_result_object.py | 10 +++--- stripe/stripe_object.py | 23 ++++++++------ 5 files changed, 39 insertions(+), 45 deletions(-) diff --git a/stripe/api_resources/abstract/api_resource.py b/stripe/api_resources/abstract/api_resource.py index 7ea991426..7b1328b7a 100644 --- a/stripe/api_resources/abstract/api_resource.py +++ b/stripe/api_resources/abstract/api_resource.py @@ -46,12 +46,12 @@ def instance_url(self): def _request(self, method_, url_, - api_key, - idempotency_key, - stripe_version, - stripe_account, - headers, - params): + api_key=None, + idempotency_key=None, + stripe_version=None, + stripe_account=None, + headers=None, + params=None): obj = StripeObject._request( self, method_, diff --git a/stripe/api_resources/abstract/verify_mixin.py b/stripe/api_resources/abstract/verify_mixin.py index 78676d908..61882dd1c 100644 --- a/stripe/api_resources/abstract/verify_mixin.py +++ b/stripe/api_resources/abstract/verify_mixin.py @@ -7,10 +7,6 @@ def verify(self, idempotency_key=None, **params): return self._request( "post", url, - None, - idempotency_key, - None, - None, - None, - params + idempotency_key=idempotency_key, + params=params ) diff --git a/stripe/api_resources/list_object.py b/stripe/api_resources/list_object.py index e9c2fa0c4..5010f54be 100644 --- a/stripe/api_resources/list_object.py +++ b/stripe/api_resources/list_object.py @@ -15,12 +15,10 @@ def list( return self._request( "get", self.get("url"), - api_key, - None, - stripe_version, - stripe_account, - None, - params + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params ) def create( @@ -34,12 +32,11 @@ def create( return self._request( "post", self.get("url"), - api_key, - idempotency_key, - stripe_version, - stripe_account, - None, - params + api_key=api_key, + idempotency_key=idempotency_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params ) def retrieve( @@ -54,12 +51,10 @@ def retrieve( return self._request( "get", url, - api_key, - None, - stripe_version, - stripe_account, - None, - params + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params ) def __getitem__(self, k): diff --git a/stripe/api_resources/search_result_object.py b/stripe/api_resources/search_result_object.py index ce1910b21..8c4171775 100644 --- a/stripe/api_resources/search_result_object.py +++ b/stripe/api_resources/search_result_object.py @@ -13,12 +13,10 @@ def search( return self._request( "get", self.get("url"), - api_key, - None, - stripe_version, - stripe_account, - None, - params + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params ) def __getitem__(self, k): diff --git a/stripe/stripe_object.py b/stripe/stripe_object.py index 15e75d6b9..84f1933b9 100644 --- a/stripe/stripe_object.py +++ b/stripe/stripe_object.py @@ -56,7 +56,7 @@ def __init__( self._last_response = last_response self._retrieve_params = params - self._previous = None + self._previous=None object.__setattr__(self, "api_key", api_key) object.__setattr__(self, "stripe_version", stripe_version) @@ -102,7 +102,7 @@ def __setitem__(self, k, v): raise ValueError( "You cannot set %s to an empty string on this object. " "The empty string is treated specially in our requests. " - "If you'd like to delete the property using the save() method on this object, you may set %s.%s = None. " + "If you'd like to delete the property using the save() method on this object, you may set %s.%s=None. " "Alternatively, you can pass %s='' to delete the property when using a resource method such as modify()." % (k, str(self), k, k) ) @@ -233,17 +233,22 @@ def api_base(cls): return None def request(self, method, url, params=None, headers=None): - return StripeObject._request(self, method, url, None, None, None, None, headers, params) + return StripeObject._request( + self, + method, + url, + headers=headers, + params=params) def _request(self, method_, url_, - api_key, - idempotency_key, - stripe_version, - stripe_account, - headers, - params): + api_key=None, + idempotency_key=None, + stripe_version=None, + stripe_account=None, + headers=None, + params=None): stripe_account = stripe_account or self.stripe_account stripe_version = stripe_version or self.stripe_version api_key = api_key or self.api_key From d5c68866d9261aadf009cf45dfe715b81a1a505d Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Fri, 1 Jul 2022 14:50:24 -0700 Subject: [PATCH 5/9] codegen --- stripe/api_resources/abstract/api_resource.py | 50 +- .../abstract/createable_api_resource.py | 3 +- .../api_resources/abstract/custom_method.py | 4 +- .../abstract/deletable_api_resource.py | 11 +- .../abstract/listable_api_resource.py | 10 +- .../abstract/nested_resource_class_methods.py | 11 +- .../abstract/searchable_api_resource.py | 10 +- .../abstract/updateable_api_resource.py | 10 +- stripe/api_resources/abstract/verify_mixin.py | 7 +- stripe/api_resources/account.py | 28 +- stripe/api_resources/alipay_account.py | 2 +- .../api_resources/application_fee_refund.py | 2 +- stripe/api_resources/apps/secret.py | 28 +- stripe/api_resources/charge.py | 12 +- stripe/api_resources/checkout/session.py | 25 +- stripe/api_resources/credit_note.py | 28 +- stripe/api_resources/customer.py | 124 +- stripe/api_resources/dispute.py | 12 +- .../financial_connections/account.py | 38 +- .../identity/verification_session.py | 24 +- stripe/api_resources/invoice.py | 86 +- stripe/api_resources/issuing/authorization.py | 24 +- stripe/api_resources/issuing/card.py | 130 + stripe/api_resources/issuing/dispute.py | 12 +- stripe/api_resources/list_object.py | 6 +- stripe/api_resources/order.py | 50 +- stripe/api_resources/payment_intent.py | 72 +- stripe/api_resources/payment_link.py | 14 +- stripe/api_resources/payment_method.py | 24 +- stripe/api_resources/payout.py | 24 +- stripe/api_resources/quote.py | 64 +- stripe/api_resources/refund.py | 47 +- stripe/api_resources/review.py | 12 +- stripe/api_resources/search_result_object.py | 2 +- stripe/api_resources/setup_intent.py | 36 +- stripe/api_resources/source.py | 15 +- stripe/api_resources/subscription_schedule.py | 24 +- stripe/api_resources/terminal/reader.py | 83 +- .../api_resources/test_helpers/test_clock.py | 12 +- stripe/api_resources/topup.py | 12 +- stripe/api_resources/transfer.py | 12 +- .../treasury/financial_account.py | 26 +- .../treasury/inbound_transfer.py | 121 +- .../treasury/outbound_payment.py | 121 +- .../treasury/outbound_transfer.py | 121 +- .../api_resources/treasury/received_credit.py | 14 +- .../api_resources/treasury/received_debit.py | 14 +- stripe/api_version.py | 5 + stripe/stripe_object.py | 31 +- stripe/util.py | 5 +- .../abstract/test_updateable_api_resource.py | 2 +- tests/test_generated_examples.py | 3261 +++++++++-------- 52 files changed, 2797 insertions(+), 2124 deletions(-) create mode 100644 stripe/api_version.py diff --git a/stripe/api_resources/abstract/api_resource.py b/stripe/api_resources/abstract/api_resource.py index 7b1328b7a..7188efef1 100644 --- a/stripe/api_resources/abstract/api_resource.py +++ b/stripe/api_resources/abstract/api_resource.py @@ -43,15 +43,17 @@ def instance_url(self): extn = quote_plus(id) return "%s/%s" % (base, extn) - def _request(self, - method_, - url_, - api_key=None, - idempotency_key=None, - stripe_version=None, - stripe_account=None, - headers=None, - params=None): + def _request( + self, + method_, + url_, + api_key=None, + idempotency_key=None, + stripe_version=None, + stripe_account=None, + headers=None, + params=None, + ): obj = StripeObject._request( self, method_, @@ -61,7 +63,8 @@ def _request(self, stripe_version, stripe_account, headers, - params) + params, + ) if type(self) is type(obj): self.refresh_from(obj) @@ -69,15 +72,17 @@ def _request(self, else: return obj - def _request_and_refresh(self, - method_, - url_, - api_key=None, - idempotency_key=None, - stripe_version=None, - stripe_account=None, - headers=None, - params=None): + def _request_and_refresh( + self, + method_, + url_, + api_key=None, + idempotency_key=None, + stripe_version=None, + stripe_account=None, + headers=None, + params=None, + ): obj = StripeObject._request( self, method_, @@ -87,7 +92,8 @@ def _request_and_refresh(self, stripe_version, stripe_account, headers, - params) + params, + ) self.refresh_from(obj) return self @@ -103,7 +109,7 @@ def _static_request( idempotency_key=None, stripe_version=None, stripe_account=None, - **params + params=None, ): requestor = api_requestor.APIRequestor( api_key, api_version=stripe_version, account=stripe_account @@ -125,7 +131,7 @@ def _static_request_stream( idempotency_key=None, stripe_version=None, stripe_account=None, - **params + params=None, ): requestor = api_requestor.APIRequestor( api_key, api_version=stripe_version, account=stripe_account diff --git a/stripe/api_resources/abstract/createable_api_resource.py b/stripe/api_resources/abstract/createable_api_resource.py index 377363f9c..3245489f0 100644 --- a/stripe/api_resources/abstract/createable_api_resource.py +++ b/stripe/api_resources/abstract/createable_api_resource.py @@ -21,4 +21,5 @@ def create( idempotency_key, stripe_version, stripe_account, - **params) + params, + ) diff --git a/stripe/api_resources/abstract/custom_method.py b/stripe/api_resources/abstract/custom_method.py index ca0cf93d0..67be6e2f7 100644 --- a/stripe/api_resources/abstract/custom_method.py +++ b/stripe/api_resources/abstract/custom_method.py @@ -20,7 +20,7 @@ def custom_method_request(cls, sid, **params): quote_plus(util.utf8(sid)), http_path, ) - obj = cls._static_request(http_verb, url, **params) + obj = cls._static_request(http_verb, url, params=params) # For list objects, we have to attach the parameters so that they # can be referenced in auto-pagination and ensure consistency. @@ -35,7 +35,7 @@ def custom_method_request_stream(cls, sid, **params): quote_plus(util.utf8(sid)), http_path, ) - return cls._static_request_stream(http_verb, url, **params) + return cls._static_request_stream(http_verb, url, params=params) if is_streaming: class_method_impl = classmethod(custom_method_request_stream) diff --git a/stripe/api_resources/abstract/deletable_api_resource.py b/stripe/api_resources/abstract/deletable_api_resource.py index 54c59d01e..fe9473df1 100644 --- a/stripe/api_resources/abstract/deletable_api_resource.py +++ b/stripe/api_resources/abstract/deletable_api_resource.py @@ -9,17 +9,10 @@ class DeletableAPIResource(APIResource): @classmethod def _cls_delete(cls, sid, **params): url = "%s/%s" % (cls.class_url(), quote_plus(util.utf8(sid))) - return cls._static_request("delete", url, **params) + return cls._static_request("delete", url, params=params) @util.class_method_variant("_cls_delete") def delete(self, **params): return self._request_and_refresh( - "delete", - self.instance_url(), - None, - None, - None, - None, - None, - params + "delete", self.instance_url(), params=params ) diff --git a/stripe/api_resources/abstract/listable_api_resource.py b/stripe/api_resources/abstract/listable_api_resource.py index 3f8d9d14d..dc94cd9a5 100644 --- a/stripe/api_resources/abstract/listable_api_resource.py +++ b/stripe/api_resources/abstract/listable_api_resource.py @@ -15,8 +15,8 @@ def list( return cls._static_request( "get", cls.class_url(), - api_key, - None, - stripe_version, - stripe_account, - **params) + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) diff --git a/stripe/api_resources/abstract/nested_resource_class_methods.py b/stripe/api_resources/abstract/nested_resource_class_methods.py index 2fc72b15a..5a0b6edb1 100644 --- a/stripe/api_resources/abstract/nested_resource_class_methods.py +++ b/stripe/api_resources/abstract/nested_resource_class_methods.py @@ -43,11 +43,12 @@ def nested_resource_request( return APIResource._static_request( method, url, - api_key, - idempotency_key, - stripe_version, - stripe_account, - **params) + api_key=api_key, + idempotency_key=idempotency_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) resource_request_method = "%ss_request" % resource setattr( diff --git a/stripe/api_resources/abstract/searchable_api_resource.py b/stripe/api_resources/abstract/searchable_api_resource.py index b76e052c2..7b625ef4e 100644 --- a/stripe/api_resources/abstract/searchable_api_resource.py +++ b/stripe/api_resources/abstract/searchable_api_resource.py @@ -16,8 +16,8 @@ def _search( return cls._static_request( "get", search_url, - api_key, - None, - stripe_version, - stripe_account, - **params) + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) diff --git a/stripe/api_resources/abstract/updateable_api_resource.py b/stripe/api_resources/abstract/updateable_api_resource.py index 1270e72b5..981b6ecdb 100644 --- a/stripe/api_resources/abstract/updateable_api_resource.py +++ b/stripe/api_resources/abstract/updateable_api_resource.py @@ -9,7 +9,7 @@ class UpdateableAPIResource(APIResource): @classmethod def modify(cls, sid, **params): url = "%s/%s" % (cls.class_url(), quote_plus(util.utf8(sid))) - return cls._static_request("post", url, **params) + return cls._static_request("post", url, params=params) def save(self, idempotency_key=None): updated_params = self.serialize(None) @@ -17,12 +17,8 @@ def save(self, idempotency_key=None): self._request_and_refresh( "post", self.instance_url(), - None, - idempotency_key, - None, - None, - None, - updated_params + idempotency_key=idempotency_key, + params=updated_params, ) else: util.logger.debug("Trying to save already saved object %r", self) diff --git a/stripe/api_resources/abstract/verify_mixin.py b/stripe/api_resources/abstract/verify_mixin.py index 61882dd1c..ba58236eb 100644 --- a/stripe/api_resources/abstract/verify_mixin.py +++ b/stripe/api_resources/abstract/verify_mixin.py @@ -5,8 +5,5 @@ class VerifyMixin(object): def verify(self, idempotency_key=None, **params): url = self.instance_url() + "/verify" return self._request( - "post", - url, - idempotency_key=idempotency_key, - params=params - ) + "post", url, idempotency_key=idempotency_key, params=params + ) diff --git a/stripe/api_resources/account.py b/stripe/api_resources/account.py index 3e2a7cb31..30b80a009 100644 --- a/stripe/api_resources/account.py +++ b/stripe/api_resources/account.py @@ -38,18 +38,24 @@ class Account( OBJECT_NAME = "account" def persons(self, idempotency_key=None, **params): - url = self.instance_url() + "/persons" - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - stripe_object._retrieve_params = params - return stripe_object + return self._request( + "get", + "/v1/accounts/{account}/persons".format( + account=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def reject(self, idempotency_key=None, **params): - url = self.instance_url() + "/reject" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/accounts/{account}/reject".format( + account=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) # We are not adding a helper for capabilities here as the Account object already has a # capabilities property which is a hash and not the sub-list of capabilities. @@ -63,7 +69,7 @@ def retrieve(cls, id=None, api_key=None, **params): @classmethod def modify(cls, id=None, **params): url = cls._build_instance_url(id) - return cls._static_request("post", url, **params) + return cls._static_request("post", url, params=params) @classmethod def _build_instance_url(cls, sid): diff --git a/stripe/api_resources/alipay_account.py b/stripe/api_resources/alipay_account.py index a11da90c9..5bd743f7b 100644 --- a/stripe/api_resources/alipay_account.py +++ b/stripe/api_resources/alipay_account.py @@ -28,7 +28,7 @@ def instance_url(self): @classmethod def modify(cls, customer, id, **params): url = cls._build_instance_url(customer, id) - return cls._static_request("post", url, **params) + return cls._static_request("post", url, params=params) @classmethod def retrieve( diff --git a/stripe/api_resources/application_fee_refund.py b/stripe/api_resources/application_fee_refund.py index fbda378bb..271140c8e 100644 --- a/stripe/api_resources/application_fee_refund.py +++ b/stripe/api_resources/application_fee_refund.py @@ -22,7 +22,7 @@ def _build_instance_url(cls, fee, sid): @classmethod def modify(cls, fee, sid, **params): url = cls._build_instance_url(fee, sid) - return cls._static_request("post", url, **params) + return cls._static_request("post", url, params=params) def instance_url(self): return self._build_instance_url(self.fee, self.id) diff --git a/stripe/api_resources/apps/secret.py b/stripe/api_resources/apps/secret.py index 1f16874af..79be0e649 100644 --- a/stripe/api_resources/apps/secret.py +++ b/stripe/api_resources/apps/secret.py @@ -14,24 +14,24 @@ class Secret(CreateableAPIResource, ListableAPIResource): def delete_where( cls, api_key=None, stripe_version=None, stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = "/v1/apps/secrets/delete" - response, api_key = requestor.request("post", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + return cls._static_request( + "post", + "/v1/apps/secrets/delete", + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) @classmethod def find( cls, api_key=None, stripe_version=None, stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = "/v1/apps/secrets/find" - response, api_key = requestor.request("get", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + return cls._static_request( + "get", + "/v1/apps/secrets/find", + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) diff --git a/stripe/api_resources/charge.py b/stripe/api_resources/charge.py index d8562b7dd..2a3310893 100644 --- a/stripe/api_resources/charge.py +++ b/stripe/api_resources/charge.py @@ -20,10 +20,14 @@ class Charge( OBJECT_NAME = "charge" def capture(self, idempotency_key=None, **params): - url = self.instance_url() + "/capture" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/charges/{charge}/capture".format( + charge=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) @classmethod def search(cls, *args, **kwargs): diff --git a/stripe/api_resources/checkout/session.py b/stripe/api_resources/checkout/session.py index 9a900777a..171922026 100644 --- a/stripe/api_resources/checkout/session.py +++ b/stripe/api_resources/checkout/session.py @@ -5,16 +5,29 @@ from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.abstract import custom_method -from stripe.api_resources.abstract import nested_resource_class_methods @custom_method("expire", http_verb="post") -@nested_resource_class_methods("line_item", operations=["list"]) +@custom_method("list_line_items", http_verb="get", http_path="line_items") class Session(CreateableAPIResource, ListableAPIResource): OBJECT_NAME = "checkout.session" def expire(self, idempotency_key=None, **params): - url = self.instance_url() + "/expire" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/checkout/sessions/{session}/expire".format( + session=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + + def list_line_items(self, idempotency_key=None, **params): + return self._request( + "get", + "/v1/checkout/sessions/{session}/line_items".format( + session=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/credit_note.py b/stripe/api_resources/credit_note.py index beec2ad6c..971a75bce 100644 --- a/stripe/api_resources/credit_note.py +++ b/stripe/api_resources/credit_note.py @@ -17,21 +17,25 @@ class CreditNote( ): OBJECT_NAME = "credit_note" - def void_credit_note(self, idempotency_key=None, **params): - url = self.instance_url() + "/void" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self - @classmethod def preview( cls, api_key=None, stripe_version=None, stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account + return cls._static_request( + "get", + "/v1/credit_notes/preview", + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) - url = cls.class_url() + "/preview" - response, api_key = requestor.request("get", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + + def void_credit_note(self, idempotency_key=None, **params): + return self._request( + "post", + "/v1/credit_notes/{id}/void".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) diff --git a/stripe/api_resources/customer.py b/stripe/api_resources/customer.py index 159323a7e..0bddfd24e 100644 --- a/stripe/api_resources/customer.py +++ b/stripe/api_resources/customer.py @@ -48,19 +48,24 @@ class Customer( OBJECT_NAME = "customer" def create_funding_instructions(self, idempotency_key=None, **params): - url = self.instance_url() + "/funding_instructions" - headers = util.populate_headers(idempotency_key) - resp = self.request("post", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - return stripe_object + return self._request( + "post", + "/v1/customers/{customer}/funding_instructions".format( + customer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def list_payment_methods(self, idempotency_key=None, **params): - url = self.instance_url() + "/payment_methods" - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - stripe_object._retrieve_params = params - return stripe_object + return self._request( + "get", + "/v1/customers/{customer}/payment_methods".format( + customer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) @classmethod def _cls_retrieve_payment_method( @@ -72,34 +77,31 @@ def _cls_retrieve_payment_method( stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = ( + return cls._static_request( + "get", "/v1/customers/{customer}/payment_methods/{payment_method}".format( customer=util.sanitize_id(customer), payment_method=util.sanitize_id(payment_method), - ) - ) - response, api_key = requestor.request("get", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) @util.class_method_variant("_cls_retrieve_payment_method") def retrieve_payment_method( self, payment_method, idempotency_key=None, **params ): - url = ( + return self._request( + "get", "/v1/customers/{customer}/payment_methods/{payment_method}".format( customer=util.sanitize_id(self.get("id")), payment_method=util.sanitize_id(payment_method), - ) + ), + idempotency_key=idempotency_key, + params=params, ) - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - return stripe_object @classmethod def search(cls, *args, **kwargs): @@ -130,15 +132,15 @@ def retrieve_cash_balance( **params ): # The nested_id parameter is required for backwards compatibility purposes and is ignored. - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = "/v1/customers/{customer}/cash_balance".format( - customer=util.sanitize_id(customer) - ) - response, api_key = requestor.request("get", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + return cls._static_request( + "get", + "/v1/customers/{customer}/cash_balance".format( + customer=util.sanitize_id(customer) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) @classmethod @@ -152,23 +154,45 @@ def modify_cash_balance( **params ): # The nested_id parameter is required for backwards compatibility purposes and is ignored. - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = "/v1/customers/{customer}/cash_balance".format( - customer=util.sanitize_id(customer) - ) - response, api_key = requestor.request("post", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + return cls._static_request( + "post", + "/v1/customers/{customer}/cash_balance".format( + customer=util.sanitize_id(customer) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) - @custom_method("fund_cash_balance", http_verb="post") class TestHelpers(APIResourceTestHelpers): + @classmethod + def _cls_fund_cash_balance( + cls, + customer, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/customers/{customer}/fund_cash_balance".format( + customer=util.sanitize_id(customer) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_fund_cash_balance") def fund_cash_balance(self, idempotency_key=None, **params): - url = self.instance_url() + "/fund_cash_balance" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/customers/{customer}/fund_cash_balance".format( + customer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource diff --git a/stripe/api_resources/dispute.py b/stripe/api_resources/dispute.py index cc779f1d7..6eaa0fa37 100644 --- a/stripe/api_resources/dispute.py +++ b/stripe/api_resources/dispute.py @@ -12,7 +12,11 @@ class Dispute(ListableAPIResource, UpdateableAPIResource): OBJECT_NAME = "dispute" def close(self, idempotency_key=None, **params): - url = self.instance_url() + "/close" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/disputes/{dispute}/close".format( + dispute=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/financial_connections/account.py b/stripe/api_resources/financial_connections/account.py index e3e41ac56..b3a6241fc 100644 --- a/stripe/api_resources/financial_connections/account.py +++ b/stripe/api_resources/financial_connections/account.py @@ -13,21 +13,31 @@ class Account(ListableAPIResource): OBJECT_NAME = "financial_connections.account" def disconnect(self, idempotency_key=None, **params): - url = self.instance_url() + "/disconnect" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/financial_connections/accounts/{account}/disconnect".format( + account=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def list_owners(self, idempotency_key=None, **params): - url = self.instance_url() + "/owners" - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - stripe_object._retrieve_params = params - return stripe_object + return self._request( + "get", + "/v1/financial_connections/accounts/{account}/owners".format( + account=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def refresh_account(self, idempotency_key=None, **params): - url = self.instance_url() + "/refresh" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/financial_connections/accounts/{account}/refresh".format( + account=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/identity/verification_session.py b/stripe/api_resources/identity/verification_session.py index e2933e143..727582b82 100644 --- a/stripe/api_resources/identity/verification_session.py +++ b/stripe/api_resources/identity/verification_session.py @@ -18,13 +18,21 @@ class VerificationSession( OBJECT_NAME = "identity.verification_session" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/identity/verification_sessions/{session}/cancel".format( + session=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def redact(self, idempotency_key=None, **params): - url = self.instance_url() + "/redact" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/identity/verification_sessions/{session}/redact".format( + session=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/invoice.py b/stripe/api_resources/invoice.py index 25ad9d6ad..9f381e6d3 100644 --- a/stripe/api_resources/invoice.py +++ b/stripe/api_resources/invoice.py @@ -26,34 +26,67 @@ class Invoice( OBJECT_NAME = "invoice" def finalize_invoice(self, idempotency_key=None, **params): - url = self.instance_url() + "/finalize" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/invoices/{invoice}/finalize".format( + invoice=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def mark_uncollectible(self, idempotency_key=None, **params): - url = self.instance_url() + "/mark_uncollectible" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/invoices/{invoice}/mark_uncollectible".format( + invoice=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def pay(self, idempotency_key=None, **params): - url = self.instance_url() + "/pay" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/invoices/{invoice}/pay".format( + invoice=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def send_invoice(self, idempotency_key=None, **params): - url = self.instance_url() + "/send" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/invoices/{invoice}/send".format( + invoice=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + + @classmethod + def upcoming( + cls, api_key=None, stripe_version=None, stripe_account=None, **params + ): + return cls._static_request( + "get", + "/v1/invoices/upcoming", + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) def void_invoice(self, idempotency_key=None, **params): - url = self.instance_url() + "/void" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/invoices/{invoice}/void".format( + invoice=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) @classmethod def search(cls, *args, **kwargs): @@ -62,16 +95,3 @@ def search(cls, *args, **kwargs): @classmethod def search_auto_paging_iter(cls, *args, **kwargs): return cls.search(*args, **kwargs).auto_paging_iter() - - @classmethod - def upcoming( - cls, api_key=None, stripe_version=None, stripe_account=None, **params - ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = cls.class_url() + "/upcoming" - response, api_key = requestor.request("get", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account - ) diff --git a/stripe/api_resources/issuing/authorization.py b/stripe/api_resources/issuing/authorization.py index 206e8b9f9..1fc21bd37 100644 --- a/stripe/api_resources/issuing/authorization.py +++ b/stripe/api_resources/issuing/authorization.py @@ -13,13 +13,21 @@ class Authorization(ListableAPIResource, UpdateableAPIResource): OBJECT_NAME = "issuing.authorization" def approve(self, idempotency_key=None, **params): - url = self.instance_url() + "/approve" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/issuing/authorizations/{authorization}/approve".format( + authorization=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def decline(self, idempotency_key=None, **params): - url = self.instance_url() + "/decline" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/issuing/authorizations/{authorization}/decline".format( + authorization=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/issuing/card.py b/stripe/api_resources/issuing/card.py index 0896a494f..174a1fb6e 100644 --- a/stripe/api_resources/issuing/card.py +++ b/stripe/api_resources/issuing/card.py @@ -1,15 +1,145 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function +from stripe import api_requestor +from stripe import util +from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.abstract import UpdateableAPIResource from stripe.api_resources.abstract import custom_method +from stripe.api_resources.abstract import test_helpers @custom_method("details", http_verb="get") +@test_helpers class Card(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME = "issuing.card" def details(self, idempotency_key=None, **params): return self.request("get", self.instance_url() + "/details", params) + + class TestHelpers(APIResourceTestHelpers): + @classmethod + def _cls_deliver_card( + cls, + card, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/issuing/cards/{card}/shipping/deliver".format( + card=util.sanitize_id(card) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_deliver_card") + def deliver_card(self, idempotency_key=None, **params): + return self.resource._request( + "post", + "/v1/test_helpers/issuing/cards/{card}/shipping/deliver".format( + card=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + + @classmethod + def _cls_fail_card( + cls, + card, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/issuing/cards/{card}/shipping/fail".format( + card=util.sanitize_id(card) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_fail_card") + def fail_card(self, idempotency_key=None, **params): + return self.resource._request( + "post", + "/v1/test_helpers/issuing/cards/{card}/shipping/fail".format( + card=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + + @classmethod + def _cls_return_card( + cls, + card, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/issuing/cards/{card}/shipping/return".format( + card=util.sanitize_id(card) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_return_card") + def return_card(self, idempotency_key=None, **params): + return self.resource._request( + "post", + "/v1/test_helpers/issuing/cards/{card}/shipping/return".format( + card=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + + @classmethod + def _cls_ship_card( + cls, + card, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/issuing/cards/{card}/shipping/ship".format( + card=util.sanitize_id(card) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_ship_card") + def ship_card(self, idempotency_key=None, **params): + return self.resource._request( + "post", + "/v1/test_helpers/issuing/cards/{card}/shipping/ship".format( + card=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/issuing/dispute.py b/stripe/api_resources/issuing/dispute.py index da9be3ea2..4615c7ec3 100644 --- a/stripe/api_resources/issuing/dispute.py +++ b/stripe/api_resources/issuing/dispute.py @@ -17,7 +17,11 @@ class Dispute( OBJECT_NAME = "issuing.dispute" def submit(self, idempotency_key=None, **params): - url = self.instance_url() + "/submit" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/issuing/disputes/{dispute}/submit".format( + dispute=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/list_object.py b/stripe/api_resources/list_object.py index 5010f54be..af8d0f800 100644 --- a/stripe/api_resources/list_object.py +++ b/stripe/api_resources/list_object.py @@ -18,7 +18,7 @@ def list( api_key=api_key, stripe_version=stripe_version, stripe_account=stripe_account, - params=params + params=params, ) def create( @@ -36,7 +36,7 @@ def create( idempotency_key=idempotency_key, stripe_version=stripe_version, stripe_account=stripe_account, - params=params + params=params, ) def retrieve( @@ -54,7 +54,7 @@ def retrieve( api_key=api_key, stripe_version=stripe_version, stripe_account=stripe_account, - params=params + params=params, ) def __getitem__(self, k): diff --git a/stripe/api_resources/order.py b/stripe/api_resources/order.py index 8f0ca1757..ab82034b1 100644 --- a/stripe/api_resources/order.py +++ b/stripe/api_resources/order.py @@ -16,27 +16,41 @@ class Order(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME = "order" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/orders/{id}/cancel".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def list_line_items(self, idempotency_key=None, **params): - url = self.instance_url() + "/line_items" - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - stripe_object._retrieve_params = params - return stripe_object + return self._request( + "get", + "/v1/orders/{id}/line_items".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def reopen(self, idempotency_key=None, **params): - url = self.instance_url() + "/reopen" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/orders/{id}/reopen".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def submit(self, idempotency_key=None, **params): - url = self.instance_url() + "/submit" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/orders/{id}/submit".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/payment_intent.py b/stripe/api_resources/payment_intent.py index 06c037852..24c9c5efe 100644 --- a/stripe/api_resources/payment_intent.py +++ b/stripe/api_resources/payment_intent.py @@ -24,40 +24,64 @@ class PaymentIntent( OBJECT_NAME = "payment_intent" def apply_customer_balance(self, idempotency_key=None, **params): - url = self.instance_url() + "/apply_customer_balance" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payment_intents/{intent}/apply_customer_balance".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payment_intents/{intent}/cancel".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def capture(self, idempotency_key=None, **params): - url = self.instance_url() + "/capture" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payment_intents/{intent}/capture".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def confirm(self, idempotency_key=None, **params): - url = self.instance_url() + "/confirm" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payment_intents/{intent}/confirm".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def increment_authorization(self, idempotency_key=None, **params): - url = self.instance_url() + "/increment_authorization" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payment_intents/{intent}/increment_authorization".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def verify_microdeposits(self, idempotency_key=None, **params): - url = self.instance_url() + "/verify_microdeposits" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payment_intents/{intent}/verify_microdeposits".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) @classmethod def search(cls, *args, **kwargs): diff --git a/stripe/api_resources/payment_link.py b/stripe/api_resources/payment_link.py index 976faba9c..1a508bb51 100644 --- a/stripe/api_resources/payment_link.py +++ b/stripe/api_resources/payment_link.py @@ -17,9 +17,11 @@ class PaymentLink( OBJECT_NAME = "payment_link" def list_line_items(self, idempotency_key=None, **params): - url = self.instance_url() + "/line_items" - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - stripe_object._retrieve_params = params - return stripe_object + return self._request( + "get", + "/v1/payment_links/{payment_link}/line_items".format( + payment_link=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/payment_method.py b/stripe/api_resources/payment_method.py index a2f919a30..58f48ffcd 100644 --- a/stripe/api_resources/payment_method.py +++ b/stripe/api_resources/payment_method.py @@ -18,13 +18,21 @@ class PaymentMethod( OBJECT_NAME = "payment_method" def attach(self, idempotency_key=None, **params): - url = self.instance_url() + "/attach" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payment_methods/{payment_method}/attach".format( + payment_method=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def detach(self, idempotency_key=None, **params): - url = self.instance_url() + "/detach" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payment_methods/{payment_method}/detach".format( + payment_method=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/payout.py b/stripe/api_resources/payout.py index 82c5807e1..0324f79a3 100644 --- a/stripe/api_resources/payout.py +++ b/stripe/api_resources/payout.py @@ -16,13 +16,21 @@ class Payout( OBJECT_NAME = "payout" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payouts/{payout}/cancel".format( + payout=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def reverse(self, idempotency_key=None, **params): - url = self.instance_url() + "/reverse" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/payouts/{payout}/reverse".format( + payout=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/quote.py b/stripe/api_resources/quote.py index a8fb86903..308a30e82 100644 --- a/stripe/api_resources/quote.py +++ b/stripe/api_resources/quote.py @@ -24,38 +24,54 @@ class Quote(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME = "quote" def accept(self, idempotency_key=None, **params): - url = self.instance_url() + "/accept" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/quotes/{quote}/accept".format( + quote=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/quotes/{quote}/cancel".format( + quote=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def finalize_quote(self, idempotency_key=None, **params): - url = self.instance_url() + "/finalize" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/quotes/{quote}/finalize".format( + quote=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def list_computed_upfront_line_items(self, idempotency_key=None, **params): - url = self.instance_url() + "/computed_upfront_line_items" - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - stripe_object._retrieve_params = params - return stripe_object + return self._request( + "get", + "/v1/quotes/{quote}/computed_upfront_line_items".format( + quote=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def list_line_items(self, idempotency_key=None, **params): - url = self.instance_url() + "/line_items" - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - stripe_object._retrieve_params = params - return stripe_object + return self._request( + "get", + "/v1/quotes/{quote}/line_items".format( + quote=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) @classmethod def _cls_pdf( diff --git a/stripe/api_resources/refund.py b/stripe/api_resources/refund.py index bd0fbe9cd..62d5c4d8d 100644 --- a/stripe/api_resources/refund.py +++ b/stripe/api_resources/refund.py @@ -1,6 +1,7 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function +from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -18,17 +19,43 @@ class Refund( OBJECT_NAME = "refund" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/refunds/{refund}/cancel".format( + refund=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) - @custom_method("expire", http_verb="post") class TestHelpers(APIResourceTestHelpers): + @classmethod + def _cls_expire( + cls, + refund, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/refunds/{refund}/expire".format( + refund=util.sanitize_id(refund) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_expire") def expire(self, idempotency_key=None, **params): - url = self.instance_url() + "/expire" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/refunds/{refund}/expire".format( + refund=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource diff --git a/stripe/api_resources/review.py b/stripe/api_resources/review.py index 13dd143c7..ced7781ad 100644 --- a/stripe/api_resources/review.py +++ b/stripe/api_resources/review.py @@ -11,7 +11,11 @@ class Review(ListableAPIResource): OBJECT_NAME = "review" def approve(self, idempotency_key=None, **params): - url = self.instance_url() + "/approve" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/reviews/{review}/approve".format( + review=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/search_result_object.py b/stripe/api_resources/search_result_object.py index 8c4171775..ea19e54fc 100644 --- a/stripe/api_resources/search_result_object.py +++ b/stripe/api_resources/search_result_object.py @@ -16,7 +16,7 @@ def search( api_key=api_key, stripe_version=stripe_version, stripe_account=stripe_account, - params=params + params=params, ) def __getitem__(self, k): diff --git a/stripe/api_resources/setup_intent.py b/stripe/api_resources/setup_intent.py index 058ac6a9e..cc2565686 100644 --- a/stripe/api_resources/setup_intent.py +++ b/stripe/api_resources/setup_intent.py @@ -19,19 +19,31 @@ class SetupIntent( OBJECT_NAME = "setup_intent" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/setup_intents/{intent}/cancel".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def confirm(self, idempotency_key=None, **params): - url = self.instance_url() + "/confirm" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/setup_intents/{intent}/confirm".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def verify_microdeposits(self, idempotency_key=None, **params): - url = self.instance_url() + "/verify_microdeposits" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/setup_intents/{intent}/verify_microdeposits".format( + intent=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/source.py b/stripe/api_resources/source.py index 1014b1573..bde0ef776 100644 --- a/stripe/api_resources/source.py +++ b/stripe/api_resources/source.py @@ -6,15 +6,26 @@ from stripe.api_resources import Customer from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.abstract import UpdateableAPIResource -from stripe.api_resources.abstract import VerifyMixin +from stripe.api_resources.abstract import custom_method from stripe.api_resources.abstract import nested_resource_class_methods from stripe.six.moves.urllib.parse import quote_plus +@custom_method("verify", http_verb="post") @nested_resource_class_methods("source_transaction", operations=["list"]) -class Source(CreateableAPIResource, UpdateableAPIResource, VerifyMixin): +class Source(CreateableAPIResource, UpdateableAPIResource): OBJECT_NAME = "source" + def verify(self, idempotency_key=None, **params): + return self._request( + "post", + "/v1/sources/{source}/verify".format( + source=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + def detach(self, idempotency_key=None, **params): token = util.utf8(self.id) diff --git a/stripe/api_resources/subscription_schedule.py b/stripe/api_resources/subscription_schedule.py index d939ec671..cf0f242f8 100644 --- a/stripe/api_resources/subscription_schedule.py +++ b/stripe/api_resources/subscription_schedule.py @@ -18,13 +18,21 @@ class SubscriptionSchedule( OBJECT_NAME = "subscription_schedule" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/subscription_schedules/{schedule}/cancel".format( + schedule=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def release(self, idempotency_key=None, **params): - url = self.instance_url() + "/release" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/subscription_schedules/{schedule}/release".format( + schedule=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/terminal/reader.py b/stripe/api_resources/terminal/reader.py index 45f487fd5..b89a9e946 100644 --- a/stripe/api_resources/terminal/reader.py +++ b/stripe/api_resources/terminal/reader.py @@ -1,6 +1,7 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function +from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -25,35 +26,73 @@ class Reader( OBJECT_NAME = "terminal.reader" def cancel_action(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel_action" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/terminal/readers/{reader}/cancel_action".format( + reader=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def process_payment_intent(self, idempotency_key=None, **params): - url = self.instance_url() + "/process_payment_intent" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/terminal/readers/{reader}/process_payment_intent".format( + reader=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def process_setup_intent(self, idempotency_key=None, **params): - url = self.instance_url() + "/process_setup_intent" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/terminal/readers/{reader}/process_setup_intent".format( + reader=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def set_reader_display(self, idempotency_key=None, **params): - url = self.instance_url() + "/set_reader_display" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/terminal/readers/{reader}/set_reader_display".format( + reader=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) - @custom_method("present_payment_method", http_verb="post") class TestHelpers(APIResourceTestHelpers): + @classmethod + def _cls_present_payment_method( + cls, + reader, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/terminal/readers/{reader}/present_payment_method".format( + reader=util.sanitize_id(reader) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_present_payment_method") def present_payment_method(self, idempotency_key=None, **params): - url = self.instance_url() + "/present_payment_method" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/terminal/readers/{reader}/present_payment_method".format( + reader=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource diff --git a/stripe/api_resources/test_helpers/test_clock.py b/stripe/api_resources/test_helpers/test_clock.py index 26c1d6420..ac5b0c295 100644 --- a/stripe/api_resources/test_helpers/test_clock.py +++ b/stripe/api_resources/test_helpers/test_clock.py @@ -17,7 +17,11 @@ class TestClock( OBJECT_NAME = "test_helpers.test_clock" def advance(self, idempotency_key=None, **params): - url = self.instance_url() + "/advance" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/test_helpers/test_clocks/{test_clock}/advance".format( + test_clock=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/topup.py b/stripe/api_resources/topup.py index 099c6b9f1..a7d31d902 100644 --- a/stripe/api_resources/topup.py +++ b/stripe/api_resources/topup.py @@ -13,7 +13,11 @@ class Topup(CreateableAPIResource, ListableAPIResource, UpdateableAPIResource): OBJECT_NAME = "topup" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/topups/{topup}/cancel".format( + topup=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/transfer.py b/stripe/api_resources/transfer.py index f73b10152..a3565783b 100644 --- a/stripe/api_resources/transfer.py +++ b/stripe/api_resources/transfer.py @@ -22,7 +22,11 @@ class Transfer( OBJECT_NAME = "transfer" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self + return self._request( + "post", + "/v1/transfers/{transfer}/cancel".format( + transfer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/treasury/financial_account.py b/stripe/api_resources/treasury/financial_account.py index e8a8d4996..a0073efee 100644 --- a/stripe/api_resources/treasury/financial_account.py +++ b/stripe/api_resources/treasury/financial_account.py @@ -18,15 +18,21 @@ class FinancialAccount( OBJECT_NAME = "treasury.financial_account" def retrieve_features(self, idempotency_key=None, **params): - url = self.instance_url() + "/features" - headers = util.populate_headers(idempotency_key) - resp = self.request("get", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - return stripe_object + return self._request( + "get", + "/v1/treasury/financial_accounts/{financial_account}/features".format( + financial_account=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) def update_features(self, idempotency_key=None, **params): - url = self.instance_url() + "/features" - headers = util.populate_headers(idempotency_key) - resp = self.request("post", url, params, headers) - stripe_object = util.convert_to_stripe_object(resp) - return stripe_object + return self._request( + "post", + "/v1/treasury/financial_accounts/{financial_account}/features".format( + financial_account=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) diff --git a/stripe/api_resources/treasury/inbound_transfer.py b/stripe/api_resources/treasury/inbound_transfer.py index b6e1b7298..5068e53fa 100644 --- a/stripe/api_resources/treasury/inbound_transfer.py +++ b/stripe/api_resources/treasury/inbound_transfer.py @@ -1,6 +1,7 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function +from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -15,39 +16,105 @@ class InboundTransfer(CreateableAPIResource, ListableAPIResource): OBJECT_NAME = "treasury.inbound_transfer" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self - - @custom_method("fail", http_verb="post") - @custom_method( - "return_inbound_transfer", - http_verb="post", - http_path="return", - ) - @custom_method("succeed", http_verb="post") + return self._request( + "post", + "/v1/treasury/inbound_transfers/{inbound_transfer}/cancel".format( + inbound_transfer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + class TestHelpers(APIResourceTestHelpers): + @classmethod + def _cls_fail( + cls, + id, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/inbound_transfers/{id}/fail".format( + id=util.sanitize_id(id) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_fail") def fail(self, idempotency_key=None, **params): - url = self.instance_url() + "/fail" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/inbound_transfers/{id}/fail".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource + @classmethod + def _cls_return_inbound_transfer( + cls, + id, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/inbound_transfers/{id}/return".format( + id=util.sanitize_id(id) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_return_inbound_transfer") def return_inbound_transfer(self, idempotency_key=None, **params): - url = self.instance_url() + "/return" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/inbound_transfers/{id}/return".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + + @classmethod + def _cls_succeed( + cls, + id, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/inbound_transfers/{id}/succeed".format( + id=util.sanitize_id(id) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) - return self.resource + @util.class_method_variant("_cls_succeed") def succeed(self, idempotency_key=None, **params): - url = self.instance_url() + "/succeed" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/inbound_transfers/{id}/succeed".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource diff --git a/stripe/api_resources/treasury/outbound_payment.py b/stripe/api_resources/treasury/outbound_payment.py index f63f9a56c..20fa200ef 100644 --- a/stripe/api_resources/treasury/outbound_payment.py +++ b/stripe/api_resources/treasury/outbound_payment.py @@ -1,6 +1,7 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function +from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -15,39 +16,105 @@ class OutboundPayment(CreateableAPIResource, ListableAPIResource): OBJECT_NAME = "treasury.outbound_payment" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self - - @custom_method("fail", http_verb="post") - @custom_method("post", http_verb="post") - @custom_method( - "return_outbound_payment", - http_verb="post", - http_path="return", - ) + return self._request( + "post", + "/v1/treasury/outbound_payments/{id}/cancel".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + class TestHelpers(APIResourceTestHelpers): + @classmethod + def _cls_fail( + cls, + id, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/outbound_payments/{id}/fail".format( + id=util.sanitize_id(id) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_fail") def fail(self, idempotency_key=None, **params): - url = self.instance_url() + "/fail" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/outbound_payments/{id}/fail".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource + @classmethod + def _cls_post( + cls, + id, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/outbound_payments/{id}/post".format( + id=util.sanitize_id(id) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_post") def post(self, idempotency_key=None, **params): - url = self.instance_url() + "/post" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/outbound_payments/{id}/post".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + + @classmethod + def _cls_return_outbound_payment( + cls, + id, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/outbound_payments/{id}/return".format( + id=util.sanitize_id(id) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) - return self.resource + @util.class_method_variant("_cls_return_outbound_payment") def return_outbound_payment(self, idempotency_key=None, **params): - url = self.instance_url() + "/return" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/outbound_payments/{id}/return".format( + id=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource diff --git a/stripe/api_resources/treasury/outbound_transfer.py b/stripe/api_resources/treasury/outbound_transfer.py index ab82f74fc..1ac291215 100644 --- a/stripe/api_resources/treasury/outbound_transfer.py +++ b/stripe/api_resources/treasury/outbound_transfer.py @@ -1,6 +1,7 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function +from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -15,39 +16,105 @@ class OutboundTransfer(CreateableAPIResource, ListableAPIResource): OBJECT_NAME = "treasury.outbound_transfer" def cancel(self, idempotency_key=None, **params): - url = self.instance_url() + "/cancel" - headers = util.populate_headers(idempotency_key) - self.refresh_from(self.request("post", url, params, headers)) - return self - - @custom_method("fail", http_verb="post") - @custom_method("post", http_verb="post") - @custom_method( - "return_outbound_transfer", - http_verb="post", - http_path="return", - ) + return self._request( + "post", + "/v1/treasury/outbound_transfers/{outbound_transfer}/cancel".format( + outbound_transfer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + class TestHelpers(APIResourceTestHelpers): + @classmethod + def _cls_fail( + cls, + outbound_transfer, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/fail".format( + outbound_transfer=util.sanitize_id(outbound_transfer) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_fail") def fail(self, idempotency_key=None, **params): - url = self.instance_url() + "/fail" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/fail".format( + outbound_transfer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource + @classmethod + def _cls_post( + cls, + outbound_transfer, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/post".format( + outbound_transfer=util.sanitize_id(outbound_transfer) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, + ) + + @util.class_method_variant("_cls_post") def post(self, idempotency_key=None, **params): - url = self.instance_url() + "/post" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/post".format( + outbound_transfer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, + ) + + @classmethod + def _cls_return_outbound_transfer( + cls, + outbound_transfer, + api_key=None, + stripe_version=None, + stripe_account=None, + **params + ): + return cls._static_request( + "post", + "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/return".format( + outbound_transfer=util.sanitize_id(outbound_transfer) + ), + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) - return self.resource + @util.class_method_variant("_cls_return_outbound_transfer") def return_outbound_transfer(self, idempotency_key=None, **params): - url = self.instance_url() + "/return" - headers = util.populate_headers(idempotency_key) - self.resource.refresh_from( - self.resource.request("post", url, params, headers) + return self.resource._request( + "post", + "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/return".format( + outbound_transfer=util.sanitize_id(self.get("id")) + ), + idempotency_key=idempotency_key, + params=params, ) - return self.resource diff --git a/stripe/api_resources/treasury/received_credit.py b/stripe/api_resources/treasury/received_credit.py index 0b6876f16..98044097e 100644 --- a/stripe/api_resources/treasury/received_credit.py +++ b/stripe/api_resources/treasury/received_credit.py @@ -21,11 +21,11 @@ def create( stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = "/v1/test_helpers/treasury/received_credits" - response, api_key = requestor.request("post", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + return cls._static_request( + "post", + "/v1/test_helpers/treasury/received_credits", + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) diff --git a/stripe/api_resources/treasury/received_debit.py b/stripe/api_resources/treasury/received_debit.py index ff70f841d..e82654947 100644 --- a/stripe/api_resources/treasury/received_debit.py +++ b/stripe/api_resources/treasury/received_debit.py @@ -21,11 +21,11 @@ def create( stripe_account=None, **params ): - requestor = api_requestor.APIRequestor( - api_key, api_version=stripe_version, account=stripe_account - ) - url = "/v1/test_helpers/treasury/received_debits" - response, api_key = requestor.request("post", url, params) - return util.convert_to_stripe_object( - response, api_key, stripe_version, stripe_account + return cls._static_request( + "post", + "/v1/test_helpers/treasury/received_debits", + api_key=api_key, + stripe_version=stripe_version, + stripe_account=stripe_account, + params=params, ) diff --git a/stripe/api_version.py b/stripe/api_version.py new file mode 100644 index 000000000..63fc38ee7 --- /dev/null +++ b/stripe/api_version.py @@ -0,0 +1,5 @@ +# File generated from our OpenAPI spec + + +class _ApiVersion: + CURRENT = "2020-08-27" diff --git a/stripe/stripe_object.py b/stripe/stripe_object.py index 84f1933b9..939cfcb60 100644 --- a/stripe/stripe_object.py +++ b/stripe/stripe_object.py @@ -56,7 +56,7 @@ def __init__( self._last_response = last_response self._retrieve_params = params - self._previous=None + self._previous = None object.__setattr__(self, "api_key", api_key) object.__setattr__(self, "stripe_version", stripe_version) @@ -234,21 +234,20 @@ def api_base(cls): def request(self, method, url, params=None, headers=None): return StripeObject._request( - self, - method, - url, - headers=headers, - params=params) - - def _request(self, - method_, - url_, - api_key=None, - idempotency_key=None, - stripe_version=None, - stripe_account=None, - headers=None, - params=None): + self, method, url, headers=headers, params=params + ) + + def _request( + self, + method_, + url_, + api_key=None, + idempotency_key=None, + stripe_version=None, + stripe_account=None, + headers=None, + params=None, + ): stripe_account = stripe_account or self.stripe_account stripe_version = stripe_version or self.stripe_version api_key = api_key or self.api_key diff --git a/stripe/util.py b/stripe/util.py index 5107e3682..619f9cb1f 100644 --- a/stripe/util.py +++ b/stripe/util.py @@ -174,8 +174,9 @@ def convert_to_stripe_object( last_response=stripe_response, ) - if hasattr(obj, 'object') and \ - ((obj.object == 'list') or (obj.object == 'search_result')): + if hasattr(obj, "object") and ( + (obj.object == "list") or (obj.object == "search_result") + ): obj._retrieve_params = params return obj diff --git a/tests/api_resources/abstract/test_updateable_api_resource.py b/tests/api_resources/abstract/test_updateable_api_resource.py index f19347d65..21c577459 100644 --- a/tests/api_resources/abstract/test_updateable_api_resource.py +++ b/tests/api_resources/abstract/test_updateable_api_resource.py @@ -24,7 +24,7 @@ def obj(self, request_mock): "foo": "bar", "baz": "boz", "metadata": {"size": "l", "score": 4, "height": 10}, - "object": "obj" + "object": "obj", }, "mykey", ) diff --git a/tests/test_generated_examples.py b/tests/test_generated_examples.py index e93210359..dace3c630 100644 --- a/tests/test_generated_examples.py +++ b/tests/test_generated_examples.py @@ -1,33 +1,31 @@ +# File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function import stripe class TestGeneratedExamples(object): - def test_customer_list_payment_methods(self, request_mock): - stripe.Customer.list_payment_methods("cus_xyz", type="card") - request_mock.assert_requested( - "get", - "/v1/customers/cus_xyz/payment_methods", - ) + def test_apps_secret_list(self, request_mock): + stripe.apps.Secret.list(scope={"type": "account"}, limit=2) + request_mock.assert_requested("get", "/v1/apps/secrets") - def test_checkout_session_expire(self, request_mock): - stripe.checkout.Session.expire("sess_xyz") - request_mock.assert_requested( - "post", - "/v1/checkout/sessions/sess_xyz/expire", + def test_apps_secret_create(self, request_mock): + stripe.apps.Secret.create( + name="sec_123", + payload="very secret string", + scope={"type": "account"}, ) + request_mock.assert_requested("post", "/v1/apps/secrets") - def test_shippingrate_create(self, request_mock): - stripe.ShippingRate.create( - display_name="Sample Shipper", - fixed_amount={"currency": "usd", "amount": 400}, - type="fixed_amount", + def test_apps_secret_delete_where(self, request_mock): + stripe.apps.Secret.delete_where( + name="my-api-key", + scope={"type": "account"}, ) - request_mock.assert_requested("post", "/v1/shipping_rates") + request_mock.assert_requested("post", "/v1/apps/secrets/delete") - def test_shippingrate_list(self, request_mock): - stripe.ShippingRate.list() - request_mock.assert_requested("get", "/v1/shipping_rates") + def test_apps_secret_find(self, request_mock): + stripe.apps.Secret.find(name="sec_123", scope={"type": "account"}) + request_mock.assert_requested("get", "/v1/apps/secrets/find") def test_checkout_session_create(self, request_mock): stripe.checkout.Session.create( @@ -49,71 +47,33 @@ def test_checkout_session_create(self, request_mock): ) request_mock.assert_requested("post", "/v1/checkout/sessions") - def test_paymentintent_create(self, request_mock): - stripe.PaymentIntent.create( - amount=1099, - currency="eur", - automatic_payment_methods={"enabled": True}, - ) - request_mock.assert_requested("post", "/v1/payment_intents") - - def test_paymentlink_create(self, request_mock): - stripe.PaymentLink.create( - line_items=[{"price": "price_xxxxxxxxxxxxx", "quantity": 1}], - ) - request_mock.assert_requested("post", "/v1/payment_links") - - def test_paymentlink_list_line_items(self, request_mock): - stripe.PaymentLink.list_line_items("pl_xyz") - request_mock.assert_requested( - "get", "/v1/payment_links/pl_xyz/line_items" - ) - - def test_paymentlink_retrieve(self, request_mock): - stripe.PaymentLink.retrieve("pl_xyz") - request_mock.assert_requested("get", "/v1/payment_links/pl_xyz") - - def test_paymentintent_verify_microdeposits(self, request_mock): - stripe.PaymentIntent.verify_microdeposits("pi_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", - "/v1/payment_intents/pi_xxxxxxxxxxxxx/verify_microdeposits", - ) - - def test_setupintent_verify_microdeposits(self, request_mock): - stripe.SetupIntent.verify_microdeposits("seti_xxxxxxxxxxxxx") + def test_checkout_session_expire(self, request_mock): + stripe.checkout.Session.expire("sess_xyz") request_mock.assert_requested( "post", - "/v1/setup_intents/seti_xxxxxxxxxxxxx/verify_microdeposits", + "/v1/checkout/sessions/sess_xyz/expire", ) - def test_test_helpers_testclock_create(self, request_mock): - stripe.test_helpers.TestClock.create(frozen_time=123, name="cogsworth") - request_mock.assert_requested("post", "/v1/test_helpers/test_clocks") - - def test_test_helpers_testclock_retrieve(self, request_mock): - stripe.test_helpers.TestClock.retrieve("clock_xyz") + def test_checkout_session_list_line_items(self, request_mock): + stripe.checkout.Session.list_line_items("sess_xyz") request_mock.assert_requested( "get", - "/v1/test_helpers/test_clocks/clock_xyz", + "/v1/checkout/sessions/sess_xyz/line_items", ) - def test_test_helpers_testclock_list(self, request_mock): - stripe.test_helpers.TestClock.list() - request_mock.assert_requested("get", "/v1/test_helpers/test_clocks") - - def test_test_helpers_testclock_delete(self, request_mock): - stripe.test_helpers.TestClock.delete("clock_xyz") + def test_customer_cashbalance_retrieve(self, request_mock): + stripe.Customer.retrieve_cash_balance("cus_123") request_mock.assert_requested( - "delete", - "/v1/test_helpers/test_clocks/clock_xyz", + "get", "/v1/customers/cus_123/cash_balance" ) - def test_test_helpers_testclock_advance(self, request_mock): - stripe.test_helpers.TestClock.advance("clock_xyz", frozen_time=142) + def test_customer_cashbalance_update(self, request_mock): + stripe.Customer.modify_cash_balance( + "cus_123", + settings={"reconciliation_mode": "manual"}, + ) request_mock.assert_requested( - "post", - "/v1/test_helpers/test_clocks/clock_xyz/advance", + "post", "/v1/customers/cus_123/cash_balance" ) def test_customer_create_funding_instructions(self, request_mock): @@ -131,43 +91,73 @@ def test_customer_create_funding_instructions(self, request_mock): "/v1/customers/cus_123/funding_instructions", ) - def test_terminal_configuration_list(self, request_mock): - stripe.terminal.Configuration.list() - request_mock.assert_requested("get", "/v1/terminal/configurations") - - def test_terminal_configuration_retrieve(self, request_mock): - stripe.terminal.Configuration.retrieve("uc_123") + def test_customer_list_payment_methods(self, request_mock): + stripe.Customer.list_payment_methods("cus_xyz", type="card") request_mock.assert_requested( - "get", "/v1/terminal/configurations/uc_123" + "get", + "/v1/customers/cus_xyz/payment_methods", ) - def test_terminal_configuration_create(self, request_mock): - stripe.terminal.Configuration.create() - request_mock.assert_requested("post", "/v1/terminal/configurations") + def test_financial_connections_account_list(self, request_mock): + stripe.financial_connections.Account.list() + request_mock.assert_requested( + "get", "/v1/financial_connections/accounts" + ) - def test_terminal_configuration_update(self, request_mock): - stripe.terminal.Configuration.modify( - "uc_123", - tipping={"usd": {"fixed_amounts": [10]}}, + def test_financial_connections_account_retrieve(self, request_mock): + stripe.financial_connections.Account.retrieve("fca_xyz") + request_mock.assert_requested( + "get", + "/v1/financial_connections/accounts/fca_xyz", ) + + def test_financial_connections_account_disconnect(self, request_mock): + stripe.financial_connections.Account.disconnect("fca_xyz") request_mock.assert_requested( - "post", "/v1/terminal/configurations/uc_123" + "post", + "/v1/financial_connections/accounts/fca_xyz/disconnect", ) - def test_terminal_configuration_delete(self, request_mock): - stripe.terminal.Configuration.delete("uc_123") + def test_financial_connections_account_list_owners(self, request_mock): + stripe.financial_connections.Account.list_owners( + "fca_xyz", + ownership="fcaowns_xyz", + ) request_mock.assert_requested( - "delete", - "/v1/terminal/configurations/uc_123", + "get", + "/v1/financial_connections/accounts/fca_xyz/owners", ) - def test_refund_expire(self, request_mock): - stripe.Refund.TestHelpers.expire("re_123") + def test_financial_connections_account_refresh_account(self, request_mock): + stripe.financial_connections.Account.refresh_account( + "fca_xyz", + features=["balance"], + ) request_mock.assert_requested( "post", - "/v1/test_helpers/refunds/re_123/expire", + "/v1/financial_connections/accounts/fca_xyz/refresh", + ) + + def test_financial_connections_session_create(self, request_mock): + stripe.financial_connections.Session.create( + account_holder={"type": "customer", "customer": "cus_123"}, + permissions=["balances"], + ) + request_mock.assert_requested( + "post", "/v1/financial_connections/sessions" + ) + + def test_financial_connections_session_retrieve(self, request_mock): + stripe.financial_connections.Session.retrieve("fcsess_xyz") + request_mock.assert_requested( + "get", + "/v1/financial_connections/sessions/fcsess_xyz", ) + def test_invoice_upcoming(self, request_mock): + stripe.Invoice.upcoming(customer="cus_9utnxg47pWjV1e") + request_mock.assert_requested("get", "/v1/invoices/upcoming") + def test_order_create(self, request_mock): stripe.Order.create( description="description", @@ -180,14 +170,18 @@ def test_order_update(self, request_mock): stripe.Order.modify("order_xyz") request_mock.assert_requested("post", "/v1/orders/order_xyz") - def test_order_list_line_items(self, request_mock): - stripe.Order.list_line_items("order_xyz") - request_mock.assert_requested("get", "/v1/orders/order_xyz/line_items") + def test_order_update2(self, request_mock): + stripe.Order.modify("order_xyz") + request_mock.assert_requested("post", "/v1/orders/order_xyz") def test_order_cancel(self, request_mock): stripe.Order.cancel("order_xyz") request_mock.assert_requested("post", "/v1/orders/order_xyz/cancel") + def test_order_list_line_items(self, request_mock): + stripe.Order.list_line_items("order_xyz") + request_mock.assert_requested("get", "/v1/orders/order_xyz/line_items") + def test_order_reopen(self, request_mock): stripe.Order.reopen("order_xyz") request_mock.assert_requested("post", "/v1/orders/order_xyz/reopen") @@ -196,73 +190,172 @@ def test_order_submit(self, request_mock): stripe.Order.submit("order_xyz", expected_total=100) request_mock.assert_requested("post", "/v1/orders/order_xyz/submit") - def test_order_update2(self, request_mock): - stripe.Order.modify("order_xyz") - request_mock.assert_requested("post", "/v1/orders/order_xyz") - - def test_financial_connections_account_retrieve(self, request_mock): - stripe.financial_connections.Account.retrieve("fca_xyz") - request_mock.assert_requested( - "get", - "/v1/financial_connections/accounts/fca_xyz", + def test_paymentintent_create(self, request_mock): + stripe.PaymentIntent.create( + amount=1099, + currency="eur", + automatic_payment_methods={"enabled": True}, ) + request_mock.assert_requested("post", "/v1/payment_intents") - def test_financial_connections_account_refresh_account(self, request_mock): - stripe.financial_connections.Account.refresh_account( - "fca_xyz", - features=["balance"], - ) + def test_paymentintent_verify_microdeposits(self, request_mock): + stripe.PaymentIntent.verify_microdeposits("pi_xxxxxxxxxxxxx") request_mock.assert_requested( "post", - "/v1/financial_connections/accounts/fca_xyz/refresh", + "/v1/payment_intents/pi_xxxxxxxxxxxxx/verify_microdeposits", ) - def test_financial_connections_account_disconnect(self, request_mock): - stripe.financial_connections.Account.disconnect("fca_xyz") - request_mock.assert_requested( - "post", - "/v1/financial_connections/accounts/fca_xyz/disconnect", + def test_paymentlink_create(self, request_mock): + stripe.PaymentLink.create( + line_items=[{"price": "price_xxxxxxxxxxxxx", "quantity": 1}], ) + request_mock.assert_requested("post", "/v1/payment_links") - def test_financial_connections_session_create(self, request_mock): - stripe.financial_connections.Session.create( - account_holder={"type": "customer", "customer": "cus_123"}, - permissions=["balances"], - ) - request_mock.assert_requested( - "post", "/v1/financial_connections/sessions" - ) + def test_paymentlink_retrieve(self, request_mock): + stripe.PaymentLink.retrieve("pl_xyz") + request_mock.assert_requested("get", "/v1/payment_links/pl_xyz") - def test_financial_connections_session_retrieve(self, request_mock): - stripe.financial_connections.Session.retrieve("fcsess_xyz") + def test_paymentlink_list_line_items(self, request_mock): + stripe.PaymentLink.list_line_items("pl_xyz") request_mock.assert_requested( - "get", - "/v1/financial_connections/sessions/fcsess_xyz", + "get", "/v1/payment_links/pl_xyz/line_items" ) - def test_financial_connections_account_list(self, request_mock): - stripe.financial_connections.Account.list() - request_mock.assert_requested( - "get", "/v1/financial_connections/accounts" - ) + def test_setupattempt_list(self, request_mock): + stripe.SetupAttempt.list(limit=3, setup_intent="si_xyz") + request_mock.assert_requested("get", "/v1/setup_attempts") - def test_financial_connections_account_list_owners(self, request_mock): - stripe.financial_connections.Account.list_owners( - "fca_xyz", - ownership="fcaowns_xyz", - ) + def test_setupintent_verify_microdeposits(self, request_mock): + stripe.SetupIntent.verify_microdeposits("seti_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/financial_connections/accounts/fca_xyz/owners", + "post", + "/v1/setup_intents/seti_xxxxxxxxxxxxx/verify_microdeposits", ) - def test_treasury_inboundtransfer_fail(self, request_mock): - stripe.treasury.InboundTransfer.TestHelpers.fail( - "ibt_123", - failure_details={"code": "account_closed"}, - ) - request_mock.assert_requested( - "post", + def test_shippingrate_list(self, request_mock): + stripe.ShippingRate.list() + request_mock.assert_requested("get", "/v1/shipping_rates") + + def test_shippingrate_create(self, request_mock): + stripe.ShippingRate.create( + display_name="Sample Shipper", + fixed_amount={"currency": "usd", "amount": 400}, + type="fixed_amount", + ) + request_mock.assert_requested("post", "/v1/shipping_rates") + + def test_terminal_configuration_list(self, request_mock): + stripe.terminal.Configuration.list() + request_mock.assert_requested("get", "/v1/terminal/configurations") + + def test_terminal_configuration_create(self, request_mock): + stripe.terminal.Configuration.create() + request_mock.assert_requested("post", "/v1/terminal/configurations") + + def test_terminal_configuration_delete(self, request_mock): + stripe.terminal.Configuration.delete("uc_123") + request_mock.assert_requested( + "delete", + "/v1/terminal/configurations/uc_123", + ) + + def test_terminal_configuration_retrieve(self, request_mock): + stripe.terminal.Configuration.retrieve("uc_123") + request_mock.assert_requested( + "get", "/v1/terminal/configurations/uc_123" + ) + + def test_terminal_configuration_update(self, request_mock): + stripe.terminal.Configuration.modify( + "uc_123", + tipping={"usd": {"fixed_amounts": [10]}}, + ) + request_mock.assert_requested( + "post", "/v1/terminal/configurations/uc_123" + ) + + def test_customer_fund_cash_balance(self, request_mock): + stripe.Customer.TestHelpers.fund_cash_balance( + "cus_123", + amount=30, + currency="eur", + ) + request_mock.assert_requested( + "post", + "/v1/test_helpers/customers/cus_123/fund_cash_balance", + ) + + def test_issuing_card_deliver_card(self, request_mock): + stripe.issuing.Card.TestHelpers.deliver_card("card_123") + request_mock.assert_requested( + "post", + "/v1/test_helpers/issuing/cards/card_123/shipping/deliver", + ) + + def test_issuing_card_fail_card(self, request_mock): + stripe.issuing.Card.TestHelpers.fail_card("card_123") + request_mock.assert_requested( + "post", + "/v1/test_helpers/issuing/cards/card_123/shipping/fail", + ) + + def test_issuing_card_return_card(self, request_mock): + stripe.issuing.Card.TestHelpers.return_card("card_123") + request_mock.assert_requested( + "post", + "/v1/test_helpers/issuing/cards/card_123/shipping/return", + ) + + def test_issuing_card_ship_card(self, request_mock): + stripe.issuing.Card.TestHelpers.ship_card("card_123") + request_mock.assert_requested( + "post", + "/v1/test_helpers/issuing/cards/card_123/shipping/ship", + ) + + def test_refund_expire(self, request_mock): + stripe.Refund.TestHelpers.expire("re_123") + request_mock.assert_requested( + "post", + "/v1/test_helpers/refunds/re_123/expire", + ) + + def test_test_helpers_testclock_list(self, request_mock): + stripe.test_helpers.TestClock.list() + request_mock.assert_requested("get", "/v1/test_helpers/test_clocks") + + def test_test_helpers_testclock_create(self, request_mock): + stripe.test_helpers.TestClock.create(frozen_time=123, name="cogsworth") + request_mock.assert_requested("post", "/v1/test_helpers/test_clocks") + + def test_test_helpers_testclock_delete(self, request_mock): + stripe.test_helpers.TestClock.delete("clock_xyz") + request_mock.assert_requested( + "delete", + "/v1/test_helpers/test_clocks/clock_xyz", + ) + + def test_test_helpers_testclock_retrieve(self, request_mock): + stripe.test_helpers.TestClock.retrieve("clock_xyz") + request_mock.assert_requested( + "get", + "/v1/test_helpers/test_clocks/clock_xyz", + ) + + def test_test_helpers_testclock_advance(self, request_mock): + stripe.test_helpers.TestClock.advance("clock_xyz", frozen_time=142) + request_mock.assert_requested( + "post", + "/v1/test_helpers/test_clocks/clock_xyz/advance", + ) + + def test_treasury_inboundtransfer_fail(self, request_mock): + stripe.treasury.InboundTransfer.TestHelpers.fail( + "ibt_123", + failure_details={"code": "account_closed"}, + ) + request_mock.assert_requested( + "post", "/v1/test_helpers/treasury/inbound_transfers/ibt_123/fail", ) @@ -284,18 +377,18 @@ def test_treasury_inboundtransfer_succeed(self, request_mock): "/v1/test_helpers/treasury/inbound_transfers/ibt_123/succeed", ) - def test_treasury_outboundtransfer_post(self, request_mock): - stripe.treasury.OutboundTransfer.TestHelpers.post("obt_123") + def test_treasury_outboundtransfer_fail(self, request_mock): + stripe.treasury.OutboundTransfer.TestHelpers.fail("obt_123") request_mock.assert_requested( "post", - "/v1/test_helpers/treasury/outbound_transfers/obt_123/post", + "/v1/test_helpers/treasury/outbound_transfers/obt_123/fail", ) - def test_treasury_outboundtransfer_fail(self, request_mock): - stripe.treasury.OutboundTransfer.TestHelpers.fail("obt_123") + def test_treasury_outboundtransfer_post(self, request_mock): + stripe.treasury.OutboundTransfer.TestHelpers.post("obt_123") request_mock.assert_requested( "post", - "/v1/test_helpers/treasury/outbound_transfers/obt_123/fail", + "/v1/test_helpers/treasury/outbound_transfers/obt_123/post", ) def test_treasury_outboundtransfer_return_outbound_transfer( @@ -334,544 +427,281 @@ def test_treasury_receiveddebit_create(self, request_mock): "/v1/test_helpers/treasury/received_debits", ) - def test_apps_secret_create(self, request_mock): - stripe.apps.Secret.create( - name="sec_123", - payload="very secret string", - scope={"type": "account"}, + def test_token_create(self, request_mock): + stripe.Token.create( + card={ + "number": "4242424242424242", + "exp_month": "5", + "exp_year": "2023", + "cvc": "314", + }, ) - request_mock.assert_requested("post", "/v1/apps/secrets") + request_mock.assert_requested("post", "/v1/tokens") - def test_apps_secret_find(self, request_mock): - stripe.apps.Secret.find(name="sec_123", scope={"type": "account"}) - request_mock.assert_requested("get", "/v1/apps/secrets/find") + def test_accountlink_create(self, request_mock): + stripe.AccountLink.create( + account="acct_xxxxxxxxxxxxx", + refresh_url="https://example.com/reauth", + return_url="https://example.com/return", + type="account_onboarding", + ) + request_mock.assert_requested("post", "/v1/account_links") - def test_apps_secret_delete_where(self, request_mock): - stripe.apps.Secret.delete_where( - name="sec_123", scope={"type": "account"} + def test_account_list(self, request_mock): + stripe.Account.list(limit=3) + request_mock.assert_requested("get", "/v1/accounts") + + def test_account_create(self, request_mock): + stripe.Account.create( + type="custom", + country="US", + email="jenny.rosen@example.com", + capabilities={ + "card_payments": {"requested": True}, + "transfers": {"requested": True}, + }, ) - request_mock.assert_requested("post", "/v1/apps/secrets/delete") + request_mock.assert_requested("post", "/v1/accounts") - def test_customer_cashbalance_retrieve(self, request_mock): - stripe.Customer.retrieve_cash_balance("cus_123") + def test_account_delete(self, request_mock): + stripe.Account.delete("acct_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", "/v1/customers/cus_123/cash_balance" + "delete", "/v1/accounts/acct_xxxxxxxxxxxxx" ) - def test_customer_cashbalance_update(self, request_mock): - stripe.Customer.modify_cash_balance( - "cus_123", - settings={"reconciliation_mode": "manual"}, + def test_account_retrieve(self, request_mock): + stripe.Account.retrieve("acct_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/accounts/acct_xxxxxxxxxxxxx") + + def test_account_update(self, request_mock): + stripe.Account.modify( + "acct_xxxxxxxxxxxxx", metadata={"order_id": "6735"} ) request_mock.assert_requested( - "post", "/v1/customers/cus_123/cash_balance" + "post", "/v1/accounts/acct_xxxxxxxxxxxxx" ) - def test_customer_fund_cash_balance(self, request_mock): - stripe.Customer.TestHelpers.fund_cash_balance( - "cus_123", - amount=30, - currency="eur", - ) + def test_account_reject(self, request_mock): + stripe.Account.reject("acct_xxxxxxxxxxxxx", reason="fraud") request_mock.assert_requested( "post", - "/v1/test_helpers/customers/cus_123/fund_cash_balance", + "/v1/accounts/acct_xxxxxxxxxxxxx/reject", ) - def test_customer_list(self, request_mock): - stripe.Customer.list(limit=3) - request_mock.assert_requested("get", "/v1/customers") - - def test_customer_search(self, request_mock): - stripe.Customer.search( - query="name:'fakename' AND metadata['foo']:'bar'" + def test_account_capability_retrieve(self, request_mock): + stripe.Account.retrieve_capability( + "acct_xxxxxxxxxxxxx", "card_payments" ) - request_mock.assert_requested("get", "/v1/customers/search") - - def test_charge_create(self, request_mock): - stripe.Charge.create( - amount=2000, - currency="usd", - source="tok_xxxx", - description="My First Test Charge (created for API docs)", + request_mock.assert_requested( + "get", + "/v1/accounts/acct_xxxxxxxxxxxxx/capabilities/card_payments", ) - request_mock.assert_requested("post", "/v1/charges") - - def test_charge_retrieve(self, request_mock): - stripe.Charge.retrieve("ch_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/charges/ch_xxxxxxxxxxxxx") - - def test_charge_update(self, request_mock): - stripe.Charge.modify("ch_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) - request_mock.assert_requested("post", "/v1/charges/ch_xxxxxxxxxxxxx") - def test_charge_capture(self, request_mock): - stripe.Charge.capture("ch_xxxxxxxxxxxxx") + def test_account_capability_update(self, request_mock): + stripe.Account.modify_capability( + "acct_xxxxxxxxxxxxx", + "card_payments", + requested=True, + ) request_mock.assert_requested( "post", - "/v1/charges/ch_xxxxxxxxxxxxx/capture", + "/v1/accounts/acct_xxxxxxxxxxxxx/capabilities/card_payments", ) - def test_charge_list(self, request_mock): - stripe.Charge.list(limit=3) - request_mock.assert_requested("get", "/v1/charges") - - def test_charge_search(self, request_mock): - stripe.Charge.search( - query="amount>999 AND metadata['order_id']:'6735'" + def test_account_person_retrieve(self, request_mock): + stripe.Account.retrieve_person( + "acct_xxxxxxxxxxxxx", "person_xxxxxxxxxxxxx" ) - request_mock.assert_requested("get", "/v1/charges/search") - - def test_customer_create(self, request_mock): - stripe.Customer.create( - description="My First Test Customer (created for API docs)", + request_mock.assert_requested( + "get", + "/v1/accounts/acct_xxxxxxxxxxxxx/persons/person_xxxxxxxxxxxxx", ) - request_mock.assert_requested("post", "/v1/customers") - def test_customer_retrieve(self, request_mock): - stripe.Customer.retrieve("cus_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/customers/cus_xxxxxxxxxxxxx") - - def test_customer_update(self, request_mock): - stripe.Customer.modify( - "cus_xxxxxxxxxxxxx", metadata={"order_id": "6735"} - ) - request_mock.assert_requested( - "post", "/v1/customers/cus_xxxxxxxxxxxxx" - ) - - def test_customer_delete(self, request_mock): - stripe.Customer.delete("cus_xxxxxxxxxxxxx") - request_mock.assert_requested( - "delete", "/v1/customers/cus_xxxxxxxxxxxxx" - ) - - def test_customer_list2(self, request_mock): - stripe.Customer.list(limit=3) - request_mock.assert_requested("get", "/v1/customers") - - def test_customer_search2(self, request_mock): - stripe.Customer.search( - query="name:'fakename' AND metadata['foo']:'bar'" - ) - request_mock.assert_requested("get", "/v1/customers/search") - - def test_dispute_retrieve(self, request_mock): - stripe.Dispute.retrieve("dp_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/disputes/dp_xxxxxxxxxxxxx") - - def test_dispute_update(self, request_mock): - stripe.Dispute.modify( - "dp_xxxxxxxxxxxxx", metadata={"order_id": "6735"} - ) - request_mock.assert_requested("post", "/v1/disputes/dp_xxxxxxxxxxxxx") - - def test_dispute_close(self, request_mock): - stripe.Dispute.close("dp_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", "/v1/disputes/dp_xxxxxxxxxxxxx/close" - ) - - def test_dispute_list(self, request_mock): - stripe.Dispute.list(limit=3) - request_mock.assert_requested("get", "/v1/disputes") - - def test_event_retrieve(self, request_mock): - stripe.Event.retrieve("evt_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/events/evt_xxxxxxxxxxxxx") - - def test_event_list(self, request_mock): - stripe.Event.list(limit=3) - request_mock.assert_requested("get", "/v1/events") - - def test_file_retrieve(self, request_mock): - stripe.File.retrieve("file_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/files/file_xxxxxxxxxxxxx") - - def test_file_list(self, request_mock): - stripe.File.list(limit=3) - request_mock.assert_requested("get", "/v1/files") - - def test_filelink_create(self, request_mock): - stripe.FileLink.create(file="file_xxxxxxxxxxxxx") - request_mock.assert_requested("post", "/v1/file_links") - - def test_filelink_retrieve(self, request_mock): - stripe.FileLink.retrieve("link_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", "/v1/file_links/link_xxxxxxxxxxxxx" - ) - - def test_filelink_update(self, request_mock): - stripe.FileLink.modify( - "link_xxxxxxxxxxxxx", metadata={"order_id": "6735"} - ) - request_mock.assert_requested( - "post", "/v1/file_links/link_xxxxxxxxxxxxx" - ) - - def test_filelink_list(self, request_mock): - stripe.FileLink.list(limit=3) - request_mock.assert_requested("get", "/v1/file_links") - - def test_mandate_retrieve(self, request_mock): - stripe.Mandate.retrieve("mandate_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", "/v1/mandates/mandate_xxxxxxxxxxxxx" - ) - - def test_paymentintent_create2(self, request_mock): - stripe.PaymentIntent.create( - amount=2000, - currency="usd", - payment_method_types=["card"], - ) - request_mock.assert_requested("post", "/v1/payment_intents") - - def test_paymentintent_retrieve(self, request_mock): - stripe.PaymentIntent.retrieve("pi_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", "/v1/payment_intents/pi_xxxxxxxxxxxxx" - ) - - def test_paymentintent_update(self, request_mock): - stripe.PaymentIntent.modify( - "pi_xxxxxxxxxxxxx", + def test_account_person_update(self, request_mock): + stripe.Account.modify_person( + "acct_xxxxxxxxxxxxx", + "person_xxxxxxxxxxxxx", metadata={"order_id": "6735"}, ) request_mock.assert_requested( "post", - "/v1/payment_intents/pi_xxxxxxxxxxxxx", - ) - - def test_paymentintent_confirm(self, request_mock): - stripe.PaymentIntent.confirm( - "pi_xxxxxxxxxxxxx", - payment_method="pm_card_visa", - ) - request_mock.assert_requested( - "post", - "/v1/payment_intents/pi_xxxxxxxxxxxxx/confirm", - ) - - def test_paymentintent_capture(self, request_mock): - stripe.PaymentIntent.capture("pi_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", - "/v1/payment_intents/pi_xxxxxxxxxxxxx/capture", - ) - - def test_paymentintent_cancel(self, request_mock): - stripe.PaymentIntent.cancel("pi_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", - "/v1/payment_intents/pi_xxxxxxxxxxxxx/cancel", - ) - - def test_paymentintent_list(self, request_mock): - stripe.PaymentIntent.list(limit=3) - request_mock.assert_requested("get", "/v1/payment_intents") - - def test_paymentintent_increment_authorization(self, request_mock): - stripe.PaymentIntent.increment_authorization( - "pi_xxxxxxxxxxxxx", - amount=2099, - ) - request_mock.assert_requested( - "post", - "/v1/payment_intents/pi_xxxxxxxxxxxxx/increment_authorization", - ) - - def test_paymentintent_search(self, request_mock): - stripe.PaymentIntent.search( - query="status:'succeeded' AND metadata['order_id']:'6735'", - ) - request_mock.assert_requested("get", "/v1/payment_intents/search") - - def test_paymentintent_apply_customer_balance(self, request_mock): - stripe.PaymentIntent.apply_customer_balance("pi_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", - "/v1/payment_intents/pi_xxxxxxxxxxxxx/apply_customer_balance", + "/v1/accounts/acct_xxxxxxxxxxxxx/persons/person_xxxxxxxxxxxxx", ) - def test_setupintent_create(self, request_mock): - stripe.SetupIntent.create(payment_method_types=["card"]) - request_mock.assert_requested("post", "/v1/setup_intents") + def test_applicationfee_list(self, request_mock): + stripe.ApplicationFee.list(limit=3) + request_mock.assert_requested("get", "/v1/application_fees") - def test_setupintent_retrieve(self, request_mock): - stripe.SetupIntent.retrieve("seti_xxxxxxxxxxxxx") + def test_applicationfee_retrieve(self, request_mock): + stripe.ApplicationFee.retrieve("fee_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", "/v1/setup_intents/seti_xxxxxxxxxxxxx" + "get", + "/v1/application_fees/fee_xxxxxxxxxxxxx", ) - def test_setupintent_update(self, request_mock): - stripe.SetupIntent.modify( - "seti_xxxxxxxxxxxxx", - metadata={"user_id": "3435453"}, + def test_applicationfee_feerefund_retrieve(self, request_mock): + stripe.ApplicationFee.retrieve_refund( + "fee_xxxxxxxxxxxxx", + "fr_xxxxxxxxxxxxx", ) request_mock.assert_requested( - "post", - "/v1/setup_intents/seti_xxxxxxxxxxxxx", + "get", + "/v1/application_fees/fee_xxxxxxxxxxxxx/refunds/fr_xxxxxxxxxxxxx", ) - def test_setupintent_confirm(self, request_mock): - stripe.SetupIntent.confirm( - "seti_xxxxxxxxxxxxx", - payment_method="pm_card_visa", + def test_applicationfee_feerefund_update(self, request_mock): + stripe.ApplicationFee.modify_refund( + "fee_xxxxxxxxxxxxx", + "fr_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, ) request_mock.assert_requested( "post", - "/v1/setup_intents/seti_xxxxxxxxxxxxx/confirm", + "/v1/application_fees/fee_xxxxxxxxxxxxx/refunds/fr_xxxxxxxxxxxxx", ) - def test_setupintent_cancel(self, request_mock): - stripe.SetupIntent.cancel("seti_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", - "/v1/setup_intents/seti_xxxxxxxxxxxxx/cancel", + def test_apps_secret_create2(self, request_mock): + stripe.apps.Secret.create( + name="my-api-key", + payload="secret_key_xxxxxx", + scope={"type": "account"}, ) + request_mock.assert_requested("post", "/v1/apps/secrets") - def test_setupintent_list(self, request_mock): - stripe.SetupIntent.list(limit=3) - request_mock.assert_requested("get", "/v1/setup_intents") - - def test_setupattempt_list(self, request_mock): - stripe.SetupAttempt.list(limit=3, setup_intent="si_xyz") - request_mock.assert_requested("get", "/v1/setup_attempts") - - def test_payout_create(self, request_mock): - stripe.Payout.create(amount=1100, currency="usd") - request_mock.assert_requested("post", "/v1/payouts") - - def test_payout_retrieve(self, request_mock): - stripe.Payout.retrieve("po_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/payouts/po_xxxxxxxxxxxxx") - - def test_payout_update(self, request_mock): - stripe.Payout.modify("po_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) - request_mock.assert_requested("post", "/v1/payouts/po_xxxxxxxxxxxxx") - - def test_payout_list(self, request_mock): - stripe.Payout.list(limit=3) - request_mock.assert_requested("get", "/v1/payouts") - - def test_payout_cancel(self, request_mock): - stripe.Payout.cancel("po_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", "/v1/payouts/po_xxxxxxxxxxxxx/cancel" - ) + def test_balancetransaction_list(self, request_mock): + stripe.BalanceTransaction.list(limit=3) + request_mock.assert_requested("get", "/v1/balance_transactions") - def test_payout_reverse(self, request_mock): - stripe.Payout.reverse("po_xxxxxxxxxxxxx") + def test_balancetransaction_retrieve(self, request_mock): + stripe.BalanceTransaction.retrieve("txn_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/payouts/po_xxxxxxxxxxxxx/reverse", + "get", + "/v1/balance_transactions/txn_xxxxxxxxxxxxx", ) - def test_refund_create(self, request_mock): - stripe.Refund.create(charge="ch_xxxxxxxxxxxxx") - request_mock.assert_requested("post", "/v1/refunds") - - def test_refund_retrieve(self, request_mock): - stripe.Refund.retrieve("re_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/refunds/re_xxxxxxxxxxxxx") - - def test_refund_update(self, request_mock): - stripe.Refund.modify("re_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) - request_mock.assert_requested("post", "/v1/refunds/re_xxxxxxxxxxxxx") - - def test_refund_cancel(self, request_mock): - stripe.Refund.cancel("re_xxxxxxxxxxxxx") + def test_billing_portal_configuration_list(self, request_mock): + stripe.billing_portal.Configuration.list(limit=3) request_mock.assert_requested( - "post", "/v1/refunds/re_xxxxxxxxxxxxx/cancel" - ) - - def test_refund_list(self, request_mock): - stripe.Refund.list(limit=3) - request_mock.assert_requested("get", "/v1/refunds") - - def test_token_create(self, request_mock): - stripe.Token.create( - card={ - "number": "4242424242424242", - "exp_month": "5", - "exp_year": "2023", - "cvc": "314", - }, - ) - request_mock.assert_requested("post", "/v1/tokens") - - def test_token_create2(self, request_mock): - stripe.Token.create( - bank_account={ - "country": "US", - "currency": "usd", - "account_holder_name": "Jenny Rosen", - "account_holder_type": "individual", - "routing_number": "110000000", - "account_number": "000123456789", - }, - ) - request_mock.assert_requested("post", "/v1/tokens") - - def test_token_create3(self, request_mock): - stripe.Token.create(pii={"id_number": "000000000"}) - request_mock.assert_requested("post", "/v1/tokens") - - def test_token_create4(self, request_mock): - stripe.Token.create( - account={ - "individual": {"first_name": "Jane", "last_name": "Doe"}, - "tos_shown_and_accepted": True, - }, + "get", "/v1/billing_portal/configurations" ) - request_mock.assert_requested("post", "/v1/tokens") - def test_token_create5(self, request_mock): - stripe.Token.create( - person={ - "first_name": "Jane", - "last_name": "Doe", - "relationship": {"owner": True}, + def test_billing_portal_configuration_create(self, request_mock): + stripe.billing_portal.Configuration.create( + features={ + "customer_update": { + "allowed_updates": ["email", "tax_id"], + "enabled": True, + }, + "invoice_history": {"enabled": True}, }, - ) - request_mock.assert_requested("post", "/v1/tokens") - - def test_token_create6(self, request_mock): - stripe.Token.create(cvc_update={"cvc": "123"}) - request_mock.assert_requested("post", "/v1/tokens") - - def test_token_retrieve(self, request_mock): - stripe.Token.retrieve("tok_xxxx") - request_mock.assert_requested("get", "/v1/tokens/tok_xxxx") - - def test_paymentmethod_create(self, request_mock): - stripe.PaymentMethod.create( - type="card", - card={ - "number": "4242424242424242", - "exp_month": 5, - "exp_year": 2023, - "cvc": "314", + business_profile={ + "privacy_policy_url": "https://example.com/privacy", + "terms_of_service_url": "https://example.com/terms", }, ) - request_mock.assert_requested("post", "/v1/payment_methods") - - def test_paymentmethod_retrieve(self, request_mock): - stripe.PaymentMethod.retrieve("pm_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", "/v1/payment_methods/pm_xxxxxxxxxxxxx" - ) - - def test_paymentmethod_update(self, request_mock): - stripe.PaymentMethod.modify( - "pm_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, - ) request_mock.assert_requested( - "post", - "/v1/payment_methods/pm_xxxxxxxxxxxxx", + "post", "/v1/billing_portal/configurations" ) - def test_paymentmethod_list(self, request_mock): - stripe.PaymentMethod.list(customer="cus_xxxxxxxxxxxxx", type="card") - request_mock.assert_requested("get", "/v1/payment_methods") - - def test_customer_list_payment_methods2(self, request_mock): - stripe.Customer.list_payment_methods("cus_xxxxxxxxxxxxx", type="card") + def test_billing_portal_configuration_retrieve(self, request_mock): + stripe.billing_portal.Configuration.retrieve("bpc_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/customers/cus_xxxxxxxxxxxxx/payment_methods", + "/v1/billing_portal/configurations/bpc_xxxxxxxxxxxxx", ) - def test_paymentmethod_attach(self, request_mock): - stripe.PaymentMethod.attach( - "pm_xxxxxxxxxxxxx", - customer="cus_xxxxxxxxxxxxx", + def test_billing_portal_configuration_update(self, request_mock): + stripe.billing_portal.Configuration.modify( + "bpc_xxxxxxxxxxxxx", + business_profile={ + "privacy_policy_url": "https://example.com/privacy", + "terms_of_service_url": "https://example.com/terms", + }, ) request_mock.assert_requested( "post", - "/v1/payment_methods/pm_xxxxxxxxxxxxx/attach", + "/v1/billing_portal/configurations/bpc_xxxxxxxxxxxxx", ) - def test_paymentmethod_detach(self, request_mock): - stripe.PaymentMethod.detach("pm_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", - "/v1/payment_methods/pm_xxxxxxxxxxxxx/detach", + def test_billing_portal_session_create(self, request_mock): + stripe.billing_portal.Session.create( + customer="cus_xxxxxxxxxxxxx", + return_url="https://example.com/account", ) + request_mock.assert_requested("post", "/v1/billing_portal/sessions") - def test_source_retrieve(self, request_mock): - stripe.Source.retrieve("src_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/sources/src_xxxxxxxxxxxxx") + def test_charge_list(self, request_mock): + stripe.Charge.list(limit=3) + request_mock.assert_requested("get", "/v1/charges") - def test_source_update(self, request_mock): - stripe.Source.modify( - "src_xxxxxxxxxxxxx", metadata={"order_id": "6735"} + def test_charge_create(self, request_mock): + stripe.Charge.create( + amount=2000, + currency="usd", + source="tok_xxxx", + description="My First Test Charge (created for API docs)", ) - request_mock.assert_requested("post", "/v1/sources/src_xxxxxxxxxxxxx") + request_mock.assert_requested("post", "/v1/charges") - def test_product_create(self, request_mock): - stripe.Product.create(name="Gold Special") - request_mock.assert_requested("post", "/v1/products") + def test_charge_retrieve(self, request_mock): + stripe.Charge.retrieve("ch_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/charges/ch_xxxxxxxxxxxxx") - def test_product_retrieve(self, request_mock): - stripe.Product.retrieve("prod_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/products/prod_xxxxxxxxxxxxx") + def test_charge_update(self, request_mock): + stripe.Charge.modify("ch_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) + request_mock.assert_requested("post", "/v1/charges/ch_xxxxxxxxxxxxx") - def test_product_update(self, request_mock): - stripe.Product.modify( - "prod_xxxxxxxxxxxxx", metadata={"order_id": "6735"} - ) + def test_charge_capture(self, request_mock): + stripe.Charge.capture("ch_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", "/v1/products/prod_xxxxxxxxxxxxx" + "post", + "/v1/charges/ch_xxxxxxxxxxxxx/capture", ) - def test_product_list(self, request_mock): - stripe.Product.list(limit=3) - request_mock.assert_requested("get", "/v1/products") - - def test_product_delete(self, request_mock): - stripe.Product.delete("prod_xxxxxxxxxxxxx") - request_mock.assert_requested( - "delete", "/v1/products/prod_xxxxxxxxxxxxx" + def test_charge_search(self, request_mock): + stripe.Charge.search( + query="amount>999 AND metadata['order_id']:'6735'" ) + request_mock.assert_requested("get", "/v1/charges/search") - def test_product_search(self, request_mock): - stripe.Product.search( - query="active:'true' AND metadata['order_id']:'6735'" - ) - request_mock.assert_requested("get", "/v1/products/search") + def test_checkout_session_list(self, request_mock): + stripe.checkout.Session.list(limit=3) + request_mock.assert_requested("get", "/v1/checkout/sessions") - def test_price_create(self, request_mock): - stripe.Price.create( - unit_amount=2000, - currency="usd", - recurring={"interval": "month"}, - product="prod_xxxxxxxxxxxxx", + def test_checkout_session_create2(self, request_mock): + stripe.checkout.Session.create( + success_url="https://example.com/success", + cancel_url="https://example.com/cancel", + line_items=[{"price": "price_xxxxxxxxxxxxx", "quantity": 2}], + mode="payment", ) - request_mock.assert_requested("post", "/v1/prices") + request_mock.assert_requested("post", "/v1/checkout/sessions") - def test_price_retrieve(self, request_mock): - stripe.Price.retrieve("price_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/prices/price_xxxxxxxxxxxxx") + def test_checkout_session_retrieve(self, request_mock): + stripe.checkout.Session.retrieve("cs_test_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/checkout/sessions/cs_test_xxxxxxxxxxxxx", + ) - def test_price_update(self, request_mock): - stripe.Price.modify( - "price_xxxxxxxxxxxxx", metadata={"order_id": "6735"} + def test_checkout_session_expire2(self, request_mock): + stripe.checkout.Session.expire("cs_test_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/checkout/sessions/cs_test_xxxxxxxxxxxxx/expire", ) - request_mock.assert_requested("post", "/v1/prices/price_xxxxxxxxxxxxx") - def test_price_list(self, request_mock): - stripe.Price.list(limit=3) - request_mock.assert_requested("get", "/v1/prices") + def test_countryspec_list(self, request_mock): + stripe.CountrySpec.list(limit=3) + request_mock.assert_requested("get", "/v1/country_specs") - def test_price_search(self, request_mock): - stripe.Price.search( - query="active:'true' AND metadata['order_id']:'6735'" - ) - request_mock.assert_requested("get", "/v1/prices/search") + def test_countryspec_retrieve(self, request_mock): + stripe.CountrySpec.retrieve("US") + request_mock.assert_requested("get", "/v1/country_specs/US") + + def test_coupon_list(self, request_mock): + stripe.Coupon.list(limit=3) + request_mock.assert_requested("get", "/v1/coupons") def test_coupon_create(self, request_mock): stripe.Coupon.create( @@ -881,6 +711,10 @@ def test_coupon_create(self, request_mock): ) request_mock.assert_requested("post", "/v1/coupons") + def test_coupon_delete(self, request_mock): + stripe.Coupon.delete("Z4OV52SU") + request_mock.assert_requested("delete", "/v1/coupons/Z4OV52SU") + def test_coupon_retrieve(self, request_mock): stripe.Coupon.retrieve("Z4OV52SU") request_mock.assert_requested("get", "/v1/coupons/Z4OV52SU") @@ -889,274 +723,328 @@ def test_coupon_update(self, request_mock): stripe.Coupon.modify("Z4OV52SU", metadata={"order_id": "6735"}) request_mock.assert_requested("post", "/v1/coupons/Z4OV52SU") - def test_coupon_delete(self, request_mock): - stripe.Coupon.delete("Z4OV52SU") - request_mock.assert_requested("delete", "/v1/coupons/Z4OV52SU") + def test_creditnote_list(self, request_mock): + stripe.CreditNote.list(limit=3) + request_mock.assert_requested("get", "/v1/credit_notes") - def test_coupon_list(self, request_mock): - stripe.Coupon.list(limit=3) - request_mock.assert_requested("get", "/v1/coupons") + def test_creditnote_create(self, request_mock): + stripe.CreditNote.create( + invoice="in_xxxxxxxxxxxxx", + lines=[ + { + "type": "invoice_line_item", + "invoice_line_item": "il_xxxxxxxxxxxxx", + "quantity": 1, + }, + ], + ) + request_mock.assert_requested("post", "/v1/credit_notes") - def test_promotioncode_create(self, request_mock): - stripe.PromotionCode.create(coupon="Z4OV52SU") - request_mock.assert_requested("post", "/v1/promotion_codes") + def test_creditnote_void_credit_note(self, request_mock): + stripe.CreditNote.void_credit_note("cn_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/credit_notes/cn_xxxxxxxxxxxxx/void", + ) - def test_promotioncode_update(self, request_mock): - stripe.PromotionCode.modify( - "promo_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, + def test_creditnote_preview(self, request_mock): + stripe.CreditNote.preview( + invoice="in_xxxxxxxxxxxxx", + lines=[ + { + "type": "invoice_line_item", + "invoice_line_item": "il_xxxxxxxxxxxxx", + "quantity": 1, + }, + ], + ) + request_mock.assert_requested("get", "/v1/credit_notes/preview") + + def test_customer_list(self, request_mock): + stripe.Customer.list(limit=3) + request_mock.assert_requested("get", "/v1/customers") + + def test_customer_list2(self, request_mock): + stripe.Customer.list(limit=3) + request_mock.assert_requested("get", "/v1/customers") + + def test_customer_create(self, request_mock): + stripe.Customer.create( + description="My First Test Customer (created for API docs)", ) + request_mock.assert_requested("post", "/v1/customers") + + def test_customer_delete(self, request_mock): + stripe.Customer.delete("cus_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/promotion_codes/promo_xxxxxxxxxxxxx", + "delete", "/v1/customers/cus_xxxxxxxxxxxxx" ) - def test_promotioncode_retrieve(self, request_mock): - stripe.PromotionCode.retrieve("promo_xxxxxxxxxxxxx") + def test_customer_retrieve(self, request_mock): + stripe.Customer.retrieve("cus_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/customers/cus_xxxxxxxxxxxxx") + + def test_customer_update(self, request_mock): + stripe.Customer.modify( + "cus_xxxxxxxxxxxxx", metadata={"order_id": "6735"} + ) request_mock.assert_requested( - "get", - "/v1/promotion_codes/promo_xxxxxxxxxxxxx", + "post", "/v1/customers/cus_xxxxxxxxxxxxx" ) - def test_promotioncode_list(self, request_mock): - stripe.PromotionCode.list(limit=3) - request_mock.assert_requested("get", "/v1/promotion_codes") + def test_customer_customerbalancetransaction_retrieve(self, request_mock): + stripe.Customer.retrieve_balance_transaction( + "cus_xxxxxxxxxxxxx", + "cbtxn_xxxxxxxxxxxxx", + ) + request_mock.assert_requested( + "get", + "/v1/customers/cus_xxxxxxxxxxxxx/balance_transactions/cbtxn_xxxxxxxxxxxxx", + ) - def test_taxcode_list(self, request_mock): - stripe.TaxCode.list(limit=3) - request_mock.assert_requested("get", "/v1/tax_codes") + def test_customer_list_payment_methods2(self, request_mock): + stripe.Customer.list_payment_methods("cus_xxxxxxxxxxxxx", type="card") + request_mock.assert_requested( + "get", + "/v1/customers/cus_xxxxxxxxxxxxx/payment_methods", + ) - def test_taxcode_retrieve(self, request_mock): - stripe.TaxCode.retrieve("txcd_xxxxxxxxxxxxx") + def test_customer_taxid_retrieve(self, request_mock): + stripe.Customer.retrieve_tax_id( + "cus_xxxxxxxxxxxxx", "txi_xxxxxxxxxxxxx" + ) request_mock.assert_requested( - "get", "/v1/tax_codes/txcd_xxxxxxxxxxxxx" + "get", + "/v1/customers/cus_xxxxxxxxxxxxx/tax_ids/txi_xxxxxxxxxxxxx", ) - def test_taxrate_create(self, request_mock): - stripe.TaxRate.create( - display_name="VAT", - description="VAT Germany", - jurisdiction="DE", - percentage=16, - inclusive=False, + def test_customer_search(self, request_mock): + stripe.Customer.search( + query="name:'fakename' AND metadata['foo']:'bar'" ) - request_mock.assert_requested("post", "/v1/tax_rates") + request_mock.assert_requested("get", "/v1/customers/search") - def test_taxrate_retrieve(self, request_mock): - stripe.TaxRate.retrieve("txr_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/tax_rates/txr_xxxxxxxxxxxxx") + def test_customer_search2(self, request_mock): + stripe.Customer.search( + query="name:'fakename' AND metadata['foo']:'bar'" + ) + request_mock.assert_requested("get", "/v1/customers/search") - def test_taxrate_update(self, request_mock): - stripe.TaxRate.modify("txr_xxxxxxxxxxxxx", active=False) + def test_dispute_list(self, request_mock): + stripe.Dispute.list(limit=3) + request_mock.assert_requested("get", "/v1/disputes") + + def test_dispute_retrieve(self, request_mock): + stripe.Dispute.retrieve("dp_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/disputes/dp_xxxxxxxxxxxxx") + + def test_dispute_update(self, request_mock): + stripe.Dispute.modify( + "dp_xxxxxxxxxxxxx", metadata={"order_id": "6735"} + ) + request_mock.assert_requested("post", "/v1/disputes/dp_xxxxxxxxxxxxx") + + def test_dispute_close(self, request_mock): + stripe.Dispute.close("dp_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", "/v1/tax_rates/txr_xxxxxxxxxxxxx" + "post", "/v1/disputes/dp_xxxxxxxxxxxxx/close" ) - def test_taxrate_list(self, request_mock): - stripe.TaxRate.list(limit=3) - request_mock.assert_requested("get", "/v1/tax_rates") + def test_event_list(self, request_mock): + stripe.Event.list(limit=3) + request_mock.assert_requested("get", "/v1/events") - def test_shippingrate_create2(self, request_mock): - stripe.ShippingRate.create( - display_name="Ground shipping", - type="fixed_amount", - fixed_amount={"amount": 500, "currency": "usd"}, - ) - request_mock.assert_requested("post", "/v1/shipping_rates") + def test_event_retrieve(self, request_mock): + stripe.Event.retrieve("evt_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/events/evt_xxxxxxxxxxxxx") - def test_shippingrate_retrieve(self, request_mock): - stripe.ShippingRate.retrieve("shr_xxxxxxxxxxxxx") + def test_filelink_list(self, request_mock): + stripe.FileLink.list(limit=3) + request_mock.assert_requested("get", "/v1/file_links") + + def test_filelink_create(self, request_mock): + stripe.FileLink.create(file="file_xxxxxxxxxxxxx") + request_mock.assert_requested("post", "/v1/file_links") + + def test_filelink_retrieve(self, request_mock): + stripe.FileLink.retrieve("link_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", "/v1/shipping_rates/shr_xxxxxxxxxxxxx" + "get", "/v1/file_links/link_xxxxxxxxxxxxx" ) - def test_shippingrate_update(self, request_mock): - stripe.ShippingRate.modify( - "shr_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, + def test_filelink_update(self, request_mock): + stripe.FileLink.modify( + "link_xxxxxxxxxxxxx", metadata={"order_id": "6735"} ) request_mock.assert_requested( - "post", - "/v1/shipping_rates/shr_xxxxxxxxxxxxx", + "post", "/v1/file_links/link_xxxxxxxxxxxxx" ) - def test_shippingrate_list2(self, request_mock): - stripe.ShippingRate.list(limit=3) - request_mock.assert_requested("get", "/v1/shipping_rates") + def test_file_list(self, request_mock): + stripe.File.list(limit=3) + request_mock.assert_requested("get", "/v1/files") - def test_checkout_session_create2(self, request_mock): - stripe.checkout.Session.create( - success_url="https://example.com/success", - cancel_url="https://example.com/cancel", - line_items=[{"price": "price_xxxxxxxxxxxxx", "quantity": 2}], - mode="payment", - ) - request_mock.assert_requested("post", "/v1/checkout/sessions") + def test_file_retrieve(self, request_mock): + stripe.File.retrieve("file_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/files/file_xxxxxxxxxxxxx") - def test_checkout_session_expire2(self, request_mock): - stripe.checkout.Session.expire("cs_test_xxxxxxxxxxxxx") + def test_financial_connections_account_list2(self, request_mock): + stripe.financial_connections.Account.list( + account_holder={"customer": "cus_xxxxxxxxxxxxx"}, + ) request_mock.assert_requested( - "post", - "/v1/checkout/sessions/cs_test_xxxxxxxxxxxxx/expire", + "get", "/v1/financial_connections/accounts" ) - def test_checkout_session_retrieve(self, request_mock): - stripe.checkout.Session.retrieve("cs_test_xxxxxxxxxxxxx") + def test_financial_connections_account_retrieve2(self, request_mock): + stripe.financial_connections.Account.retrieve("fca_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/checkout/sessions/cs_test_xxxxxxxxxxxxx", + "/v1/financial_connections/accounts/fca_xxxxxxxxxxxxx", ) - def test_checkout_session_list(self, request_mock): - stripe.checkout.Session.list(limit=3) - request_mock.assert_requested("get", "/v1/checkout/sessions") - - def test_paymentlink_create2(self, request_mock): - stripe.PaymentLink.create( - line_items=[{"price": "price_xxxxxxxxxxxxx", "quantity": 1}], + def test_financial_connections_account_list_owners2(self, request_mock): + stripe.financial_connections.Account.list_owners( + "fca_xxxxxxxxxxxxx", + limit=3, + ownership="fcaowns_xxxxxxxxxxxxx", ) - request_mock.assert_requested("post", "/v1/payment_links") - - def test_paymentlink_retrieve2(self, request_mock): - stripe.PaymentLink.retrieve("plink_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/payment_links/plink_xxxxxxxxxxxxx", + "/v1/financial_connections/accounts/fca_xxxxxxxxxxxxx/owners", ) - def test_paymentlink_update(self, request_mock): - stripe.PaymentLink.modify("plink_xxxxxxxxxxxxx", active=False) + def test_financial_connections_session_create2(self, request_mock): + stripe.financial_connections.Session.create( + account_holder={ + "type": "customer", + "customer": "cus_xxxxxxxxxxxxx", + }, + permissions=["payment_method", "balances"], + filters={"countries": ["US"]}, + ) request_mock.assert_requested( - "post", - "/v1/payment_links/plink_xxxxxxxxxxxxx", + "post", "/v1/financial_connections/sessions" ) - def test_paymentlink_list(self, request_mock): - stripe.PaymentLink.list(limit=3) - request_mock.assert_requested("get", "/v1/payment_links") - - def test_creditnote_create(self, request_mock): - stripe.CreditNote.create( - invoice="in_xxxxxxxxxxxxx", - lines=[ - { - "type": "invoice_line_item", - "invoice_line_item": "il_xxxxxxxxxxxxx", - "quantity": 1, - }, - ], + def test_financial_connections_session_retrieve2(self, request_mock): + stripe.financial_connections.Session.retrieve("fcsess_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/financial_connections/sessions/fcsess_xxxxxxxxxxxxx", ) - request_mock.assert_requested("post", "/v1/credit_notes") - def test_creditnote_update(self, request_mock): - stripe.CreditNote.modify( - "cn_xxxxxxxxxxxxx", metadata={"order_id": "6735"} - ) + def test_identity_verificationreport_list(self, request_mock): + stripe.identity.VerificationReport.list(limit=3) request_mock.assert_requested( - "post", "/v1/credit_notes/cn_xxxxxxxxxxxxx" + "get", "/v1/identity/verification_reports" ) - def test_creditnote_void_credit_note(self, request_mock): - stripe.CreditNote.void_credit_note("cn_xxxxxxxxxxxxx") + def test_identity_verificationreport_retrieve(self, request_mock): + stripe.identity.VerificationReport.retrieve("vr_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/credit_notes/cn_xxxxxxxxxxxxx/void", + "get", + "/v1/identity/verification_reports/vr_xxxxxxxxxxxxx", ) - def test_creditnote_list(self, request_mock): - stripe.CreditNote.list(limit=3) - request_mock.assert_requested("get", "/v1/credit_notes") - - def test_customer_customerbalancetransaction_retrieve(self, request_mock): - stripe.Customer.retrieve_balance_transaction( - "cus_xxxxxxxxxxxxx", - "cbtxn_xxxxxxxxxxxxx", + def test_identity_verificationsession_list(self, request_mock): + stripe.identity.VerificationSession.list(limit=3) + request_mock.assert_requested( + "get", "/v1/identity/verification_sessions" ) + + def test_identity_verificationsession_create(self, request_mock): + stripe.identity.VerificationSession.create(type="document") request_mock.assert_requested( - "get", - "/v1/customers/cus_xxxxxxxxxxxxx/balance_transactions/cbtxn_xxxxxxxxxxxxx", + "post", "/v1/identity/verification_sessions" ) - def test_billing_portal_session_create(self, request_mock): - stripe.billing_portal.Session.create( - customer="cus_xxxxxxxxxxxxx", - return_url="https://example.com/account", + def test_identity_verificationsession_retrieve(self, request_mock): + stripe.identity.VerificationSession.retrieve("vs_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/identity/verification_sessions/vs_xxxxxxxxxxxxx", ) - request_mock.assert_requested("post", "/v1/billing_portal/sessions") - def test_billing_portal_configuration_create(self, request_mock): - stripe.billing_portal.Configuration.create( - features={ - "customer_update": { - "allowed_updates": ["email", "tax_id"], - "enabled": True, - }, - "invoice_history": {"enabled": True}, - }, - business_profile={ - "privacy_policy_url": "https://example.com/privacy", - "terms_of_service_url": "https://example.com/terms", - }, + def test_identity_verificationsession_update(self, request_mock): + stripe.identity.VerificationSession.modify( + "vs_xxxxxxxxxxxxx", + type="id_number", ) request_mock.assert_requested( - "post", "/v1/billing_portal/configurations" + "post", + "/v1/identity/verification_sessions/vs_xxxxxxxxxxxxx", ) - def test_billing_portal_configuration_update(self, request_mock): - stripe.billing_portal.Configuration.modify( - "bpc_xxxxxxxxxxxxx", - business_profile={ - "privacy_policy_url": "https://example.com/privacy", - "terms_of_service_url": "https://example.com/terms", - }, + def test_identity_verificationsession_cancel(self, request_mock): + stripe.identity.VerificationSession.cancel("vs_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/identity/verification_sessions/vs_xxxxxxxxxxxxx/cancel", ) + + def test_identity_verificationsession_redact(self, request_mock): + stripe.identity.VerificationSession.redact("vs_xxxxxxxxxxxxx") request_mock.assert_requested( "post", - "/v1/billing_portal/configurations/bpc_xxxxxxxxxxxxx", + "/v1/identity/verification_sessions/vs_xxxxxxxxxxxxx/redact", ) - def test_billing_portal_configuration_retrieve(self, request_mock): - stripe.billing_portal.Configuration.retrieve("bpc_xxxxxxxxxxxxx") + def test_invoiceitem_list(self, request_mock): + stripe.InvoiceItem.list(limit=3) + request_mock.assert_requested("get", "/v1/invoiceitems") + + def test_invoiceitem_create(self, request_mock): + stripe.InvoiceItem.create( + customer="cus_xxxxxxxxxxxxx", + price="price_xxxxxxxxxxxxx", + ) + request_mock.assert_requested("post", "/v1/invoiceitems") + + def test_invoiceitem_delete(self, request_mock): + stripe.InvoiceItem.delete("ii_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/billing_portal/configurations/bpc_xxxxxxxxxxxxx", + "delete", "/v1/invoiceitems/ii_xxxxxxxxxxxxx" ) - def test_billing_portal_configuration_list(self, request_mock): - stripe.billing_portal.Configuration.list(limit=3) + def test_invoiceitem_retrieve(self, request_mock): + stripe.InvoiceItem.retrieve("ii_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", "/v1/billing_portal/configurations" + "get", "/v1/invoiceitems/ii_xxxxxxxxxxxxx" ) - def test_customer_taxid_retrieve(self, request_mock): - stripe.Customer.retrieve_tax_id( - "cus_xxxxxxxxxxxxx", "txi_xxxxxxxxxxxxx" + def test_invoiceitem_update(self, request_mock): + stripe.InvoiceItem.modify( + "ii_xxxxxxxxxxxxx", metadata={"order_id": "6735"} ) request_mock.assert_requested( - "get", - "/v1/customers/cus_xxxxxxxxxxxxx/tax_ids/txi_xxxxxxxxxxxxx", + "post", "/v1/invoiceitems/ii_xxxxxxxxxxxxx" ) + def test_invoice_list(self, request_mock): + stripe.Invoice.list(limit=3) + request_mock.assert_requested("get", "/v1/invoices") + def test_invoice_create(self, request_mock): stripe.Invoice.create(customer="cus_xxxxxxxxxxxxx") request_mock.assert_requested("post", "/v1/invoices") - def test_invoice_retrieve(self, request_mock): - stripe.Invoice.retrieve("in_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/invoices/in_xxxxxxxxxxxxx") - - def test_invoice_update(self, request_mock): - stripe.Invoice.modify( - "in_xxxxxxxxxxxxx", metadata={"order_id": "6735"} - ) - request_mock.assert_requested("post", "/v1/invoices/in_xxxxxxxxxxxxx") - def test_invoice_delete(self, request_mock): stripe.Invoice.delete("in_xxxxxxxxxxxxx") request_mock.assert_requested( "delete", "/v1/invoices/in_xxxxxxxxxxxxx" ) + def test_invoice_retrieve(self, request_mock): + stripe.Invoice.retrieve("in_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/invoices/in_xxxxxxxxxxxxx") + + def test_invoice_update(self, request_mock): + stripe.Invoice.modify( + "in_xxxxxxxxxxxxx", metadata={"order_id": "6735"} + ) + request_mock.assert_requested("post", "/v1/invoices/in_xxxxxxxxxxxxx") + def test_invoice_finalize_invoice(self, request_mock): stripe.Invoice.finalize_invoice("in_xxxxxxxxxxxxx") request_mock.assert_requested( @@ -1164,6 +1052,13 @@ def test_invoice_finalize_invoice(self, request_mock): "/v1/invoices/in_xxxxxxxxxxxxx/finalize", ) + def test_invoice_mark_uncollectible(self, request_mock): + stripe.Invoice.mark_uncollectible("in_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/invoices/in_xxxxxxxxxxxxx/mark_uncollectible", + ) + def test_invoice_pay(self, request_mock): stripe.Invoice.pay("in_xxxxxxxxxxxxx") request_mock.assert_requested( @@ -1182,470 +1077,506 @@ def test_invoice_void_invoice(self, request_mock): "post", "/v1/invoices/in_xxxxxxxxxxxxx/void" ) - def test_invoice_mark_uncollectible(self, request_mock): - stripe.Invoice.mark_uncollectible("in_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", - "/v1/invoices/in_xxxxxxxxxxxxx/mark_uncollectible", - ) - - def test_invoice_list(self, request_mock): - stripe.Invoice.list(limit=3) - request_mock.assert_requested("get", "/v1/invoices") - def test_invoice_search(self, request_mock): stripe.Invoice.search( query="total>999 AND metadata['order_id']:'6735'" ) request_mock.assert_requested("get", "/v1/invoices/search") - def test_invoiceitem_create(self, request_mock): - stripe.InvoiceItem.create( - customer="cus_xxxxxxxxxxxxx", - price="price_xxxxxxxxxxxxx", + def test_issuing_authorization_list(self, request_mock): + stripe.issuing.Authorization.list(limit=3) + request_mock.assert_requested("get", "/v1/issuing/authorizations") + + def test_issuing_authorization_retrieve(self, request_mock): + stripe.issuing.Authorization.retrieve("iauth_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/issuing/authorizations/iauth_xxxxxxxxxxxxx", ) - request_mock.assert_requested("post", "/v1/invoiceitems") - def test_invoiceitem_retrieve(self, request_mock): - stripe.InvoiceItem.retrieve("ii_xxxxxxxxxxxxx") + def test_issuing_authorization_update(self, request_mock): + stripe.issuing.Authorization.modify( + "iauth_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, + ) request_mock.assert_requested( - "get", "/v1/invoiceitems/ii_xxxxxxxxxxxxx" + "post", + "/v1/issuing/authorizations/iauth_xxxxxxxxxxxxx", ) - def test_invoiceitem_update(self, request_mock): - stripe.InvoiceItem.modify( - "ii_xxxxxxxxxxxxx", metadata={"order_id": "6735"} + def test_issuing_authorization_approve(self, request_mock): + stripe.issuing.Authorization.approve("iauth_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/issuing/authorizations/iauth_xxxxxxxxxxxxx/approve", ) + + def test_issuing_authorization_decline(self, request_mock): + stripe.issuing.Authorization.decline("iauth_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", "/v1/invoiceitems/ii_xxxxxxxxxxxxx" + "post", + "/v1/issuing/authorizations/iauth_xxxxxxxxxxxxx/decline", ) - def test_invoiceitem_delete(self, request_mock): - stripe.InvoiceItem.delete("ii_xxxxxxxxxxxxx") + def test_issuing_cardholder_list(self, request_mock): + stripe.issuing.Cardholder.list(limit=3) + request_mock.assert_requested("get", "/v1/issuing/cardholders") + + def test_issuing_cardholder_create(self, request_mock): + stripe.issuing.Cardholder.create( + type="individual", + name="Jenny Rosen", + email="jenny.rosen@example.com", + phone_number="+18888675309", + billing={ + "address": { + "line1": "1234 Main Street", + "city": "San Francisco", + "state": "CA", + "country": "US", + "postal_code": "94111", + }, + }, + ) + request_mock.assert_requested("post", "/v1/issuing/cardholders") + + def test_issuing_cardholder_retrieve(self, request_mock): + stripe.issuing.Cardholder.retrieve("ich_xxxxxxxxxxxxx") request_mock.assert_requested( - "delete", "/v1/invoiceitems/ii_xxxxxxxxxxxxx" + "get", + "/v1/issuing/cardholders/ich_xxxxxxxxxxxxx", ) - def test_invoiceitem_list(self, request_mock): - stripe.InvoiceItem.list(limit=3) - request_mock.assert_requested("get", "/v1/invoiceitems") + def test_issuing_cardholder_update(self, request_mock): + stripe.issuing.Cardholder.modify( + "ich_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, + ) + request_mock.assert_requested( + "post", + "/v1/issuing/cardholders/ich_xxxxxxxxxxxxx", + ) - def test_plan_create(self, request_mock): - stripe.Plan.create( - amount=2000, + def test_issuing_card_list(self, request_mock): + stripe.issuing.Card.list(limit=3) + request_mock.assert_requested("get", "/v1/issuing/cards") + + def test_issuing_card_create(self, request_mock): + stripe.issuing.Card.create( + cardholder="ich_xxxxxxxxxxxxx", currency="usd", - interval="month", - product="prod_xxxxxxxxxxxxx", + type="virtual", ) - request_mock.assert_requested("post", "/v1/plans") - - def test_plan_retrieve(self, request_mock): - stripe.Plan.retrieve("price_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/plans/price_xxxxxxxxxxxxx") + request_mock.assert_requested("post", "/v1/issuing/cards") - def test_plan_update(self, request_mock): - stripe.Plan.modify( - "price_xxxxxxxxxxxxx", metadata={"order_id": "6735"} + def test_issuing_card_retrieve(self, request_mock): + stripe.issuing.Card.retrieve("ic_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", "/v1/issuing/cards/ic_xxxxxxxxxxxxx" ) - request_mock.assert_requested("post", "/v1/plans/price_xxxxxxxxxxxxx") - def test_plan_delete(self, request_mock): - stripe.Plan.delete("price_xxxxxxxxxxxxx") + def test_issuing_card_update(self, request_mock): + stripe.issuing.Card.modify( + "ic_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, + ) request_mock.assert_requested( - "delete", "/v1/plans/price_xxxxxxxxxxxxx" + "post", "/v1/issuing/cards/ic_xxxxxxxxxxxxx" ) - def test_plan_list(self, request_mock): - stripe.Plan.list(limit=3) - request_mock.assert_requested("get", "/v1/plans") + def test_issuing_dispute_list(self, request_mock): + stripe.issuing.Dispute.list(limit=3) + request_mock.assert_requested("get", "/v1/issuing/disputes") - def test_quote_create(self, request_mock): - stripe.Quote.create( - customer="cus_xxxxxxxxxxxxx", - line_items=[{"price": "price_xxxxxxxxxxxxx", "quantity": 2}], + def test_issuing_dispute_create(self, request_mock): + stripe.issuing.Dispute.create( + transaction="ipi_xxxxxxxxxxxxx", + evidence={ + "reason": "fraudulent", + "fraudulent": {"explanation": "Purchase was unrecognized."}, + }, ) - request_mock.assert_requested("post", "/v1/quotes") + request_mock.assert_requested("post", "/v1/issuing/disputes") - def test_quote_retrieve(self, request_mock): - stripe.Quote.retrieve("qt_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/quotes/qt_xxxxxxxxxxxxx") + def test_issuing_dispute_retrieve(self, request_mock): + stripe.issuing.Dispute.retrieve("idp_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/issuing/disputes/idp_xxxxxxxxxxxxx", + ) - def test_quote_update(self, request_mock): - stripe.Quote.modify("qt_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) - request_mock.assert_requested("post", "/v1/quotes/qt_xxxxxxxxxxxxx") + def test_issuing_dispute_submit(self, request_mock): + stripe.issuing.Dispute.submit("idp_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/issuing/disputes/idp_xxxxxxxxxxxxx/submit", + ) - def test_quote_finalize_quote(self, request_mock): - stripe.Quote.finalize_quote("qt_xxxxxxxxxxxxx") + def test_issuing_transaction_list(self, request_mock): + stripe.issuing.Transaction.list(limit=3) + request_mock.assert_requested("get", "/v1/issuing/transactions") + + def test_issuing_transaction_retrieve(self, request_mock): + stripe.issuing.Transaction.retrieve("ipi_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/issuing/transactions/ipi_xxxxxxxxxxxxx", + ) + + def test_issuing_transaction_update(self, request_mock): + stripe.issuing.Transaction.modify( + "ipi_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, + ) request_mock.assert_requested( "post", - "/v1/quotes/qt_xxxxxxxxxxxxx/finalize", + "/v1/issuing/transactions/ipi_xxxxxxxxxxxxx", ) - def test_quote_accept(self, request_mock): - stripe.Quote.accept("qt_xxxxxxxxxxxxx") + def test_mandate_retrieve(self, request_mock): + stripe.Mandate.retrieve("mandate_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", "/v1/quotes/qt_xxxxxxxxxxxxx/accept" + "get", "/v1/mandates/mandate_xxxxxxxxxxxxx" ) - def test_quote_cancel(self, request_mock): - stripe.Quote.cancel("qt_xxxxxxxxxxxxx") + def test_order_list(self, request_mock): + stripe.Order.list(limit=3) + request_mock.assert_requested("get", "/v1/orders") + + def test_paymentintent_list(self, request_mock): + stripe.PaymentIntent.list(limit=3) + request_mock.assert_requested("get", "/v1/payment_intents") + + def test_paymentintent_create2(self, request_mock): + stripe.PaymentIntent.create( + amount=2000, + currency="usd", + payment_method_types=["card"], + ) + request_mock.assert_requested("post", "/v1/payment_intents") + + def test_paymentintent_retrieve(self, request_mock): + stripe.PaymentIntent.retrieve("pi_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", "/v1/quotes/qt_xxxxxxxxxxxxx/cancel" + "get", "/v1/payment_intents/pi_xxxxxxxxxxxxx" ) - def test_quote_list(self, request_mock): - stripe.Quote.list(limit=3) - request_mock.assert_requested("get", "/v1/quotes") + def test_paymentintent_update(self, request_mock): + stripe.PaymentIntent.modify( + "pi_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, + ) + request_mock.assert_requested( + "post", + "/v1/payment_intents/pi_xxxxxxxxxxxxx", + ) - def test_subscription_create(self, request_mock): - stripe.Subscription.create( - customer="cus_xxxxxxxxxxxxx", - items=[{"price": "price_xxxxxxxxxxxxx"}], + def test_paymentintent_apply_customer_balance(self, request_mock): + stripe.PaymentIntent.apply_customer_balance("pi_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/payment_intents/pi_xxxxxxxxxxxxx/apply_customer_balance", + ) + + def test_paymentintent_cancel(self, request_mock): + stripe.PaymentIntent.cancel("pi_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/payment_intents/pi_xxxxxxxxxxxxx/cancel", + ) + + def test_paymentintent_capture(self, request_mock): + stripe.PaymentIntent.capture("pi_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", + "/v1/payment_intents/pi_xxxxxxxxxxxxx/capture", ) - request_mock.assert_requested("post", "/v1/subscriptions") - def test_subscription_retrieve(self, request_mock): - stripe.Subscription.retrieve("sub_xxxxxxxxxxxxx") + def test_paymentintent_confirm(self, request_mock): + stripe.PaymentIntent.confirm( + "pi_xxxxxxxxxxxxx", + payment_method="pm_card_visa", + ) request_mock.assert_requested( - "get", "/v1/subscriptions/sub_xxxxxxxxxxxxx" + "post", + "/v1/payment_intents/pi_xxxxxxxxxxxxx/confirm", ) - def test_subscription_update(self, request_mock): - stripe.Subscription.modify( - "sub_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, + def test_paymentintent_increment_authorization(self, request_mock): + stripe.PaymentIntent.increment_authorization( + "pi_xxxxxxxxxxxxx", + amount=2099, ) request_mock.assert_requested( - "post", "/v1/subscriptions/sub_xxxxxxxxxxxxx" + "post", + "/v1/payment_intents/pi_xxxxxxxxxxxxx/increment_authorization", ) - def test_subscription_list(self, request_mock): - stripe.Subscription.list(limit=3) - request_mock.assert_requested("get", "/v1/subscriptions") - - def test_subscription_search(self, request_mock): - stripe.Subscription.search( - query="status:'active' AND metadata['order_id']:'6735'", + def test_paymentintent_search(self, request_mock): + stripe.PaymentIntent.search( + query="status:'succeeded' AND metadata['order_id']:'6735'", ) - request_mock.assert_requested("get", "/v1/subscriptions/search") + request_mock.assert_requested("get", "/v1/payment_intents/search") - def test_subscriptionitem_create(self, request_mock): - stripe.SubscriptionItem.create( - subscription="sub_xxxxxxxxxxxxx", - price="price_xxxxxxxxxxxxx", - quantity=2, + def test_paymentlink_list(self, request_mock): + stripe.PaymentLink.list(limit=3) + request_mock.assert_requested("get", "/v1/payment_links") + + def test_paymentlink_create2(self, request_mock): + stripe.PaymentLink.create( + line_items=[{"price": "price_xxxxxxxxxxxxx", "quantity": 1}], ) - request_mock.assert_requested("post", "/v1/subscription_items") + request_mock.assert_requested("post", "/v1/payment_links") - def test_subscriptionitem_retrieve(self, request_mock): - stripe.SubscriptionItem.retrieve("si_xxxxxxxxxxxxx") + def test_paymentlink_retrieve2(self, request_mock): + stripe.PaymentLink.retrieve("plink_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/subscription_items/si_xxxxxxxxxxxxx", + "/v1/payment_links/plink_xxxxxxxxxxxxx", ) - def test_subscriptionitem_update(self, request_mock): - stripe.SubscriptionItem.modify( - "si_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, - ) + def test_paymentlink_update(self, request_mock): + stripe.PaymentLink.modify("plink_xxxxxxxxxxxxx", active=False) request_mock.assert_requested( "post", - "/v1/subscription_items/si_xxxxxxxxxxxxx", - ) - - def test_subscriptionitem_delete(self, request_mock): - stripe.SubscriptionItem.delete("si_xxxxxxxxxxxxx") - request_mock.assert_requested( - "delete", - "/v1/subscription_items/si_xxxxxxxxxxxxx", + "/v1/payment_links/plink_xxxxxxxxxxxxx", ) - def test_subscriptionitem_list(self, request_mock): - stripe.SubscriptionItem.list(subscription="sub_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/subscription_items") + def test_paymentmethod_list(self, request_mock): + stripe.PaymentMethod.list(customer="cus_xxxxxxxxxxxxx", type="card") + request_mock.assert_requested("get", "/v1/payment_methods") - def test_subscriptionschedule_create(self, request_mock): - stripe.SubscriptionSchedule.create( - customer="cus_xxxxxxxxxxxxx", - start_date=1652909005, - end_behavior="release", - phases=[ - { - "items": [{"price": "price_xxxxxxxxxxxxx", "quantity": 1}], - "iterations": 12, - }, - ], + def test_paymentmethod_create(self, request_mock): + stripe.PaymentMethod.create( + type="card", + card={ + "number": "4242424242424242", + "exp_month": 5, + "exp_year": 2023, + "cvc": "314", + }, ) - request_mock.assert_requested("post", "/v1/subscription_schedules") + request_mock.assert_requested("post", "/v1/payment_methods") - def test_subscriptionschedule_retrieve(self, request_mock): - stripe.SubscriptionSchedule.retrieve("sub_sched_xxxxxxxxxxxxx") + def test_paymentmethod_retrieve(self, request_mock): + stripe.PaymentMethod.retrieve("pm_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/subscription_schedules/sub_sched_xxxxxxxxxxxxx", + "get", "/v1/payment_methods/pm_xxxxxxxxxxxxx" ) - def test_subscriptionschedule_update(self, request_mock): - stripe.SubscriptionSchedule.modify( - "sub_sched_xxxxxxxxxxxxx", - end_behavior="release", + def test_paymentmethod_update(self, request_mock): + stripe.PaymentMethod.modify( + "pm_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, ) request_mock.assert_requested( "post", - "/v1/subscription_schedules/sub_sched_xxxxxxxxxxxxx", + "/v1/payment_methods/pm_xxxxxxxxxxxxx", ) - def test_subscriptionschedule_cancel(self, request_mock): - stripe.SubscriptionSchedule.cancel("sub_sched_xxxxxxxxxxxxx") + def test_paymentmethod_attach(self, request_mock): + stripe.PaymentMethod.attach( + "pm_xxxxxxxxxxxxx", + customer="cus_xxxxxxxxxxxxx", + ) request_mock.assert_requested( "post", - "/v1/subscription_schedules/sub_sched_xxxxxxxxxxxxx/cancel", + "/v1/payment_methods/pm_xxxxxxxxxxxxx/attach", ) - def test_subscriptionschedule_release(self, request_mock): - stripe.SubscriptionSchedule.release("sub_sched_xxxxxxxxxxxxx") + def test_paymentmethod_detach(self, request_mock): + stripe.PaymentMethod.detach("pm_xxxxxxxxxxxxx") request_mock.assert_requested( "post", - "/v1/subscription_schedules/sub_sched_xxxxxxxxxxxxx/release", + "/v1/payment_methods/pm_xxxxxxxxxxxxx/detach", ) - def test_subscriptionschedule_list(self, request_mock): - stripe.SubscriptionSchedule.list(limit=3) - request_mock.assert_requested("get", "/v1/subscription_schedules") + def test_payout_list(self, request_mock): + stripe.Payout.list(limit=3) + request_mock.assert_requested("get", "/v1/payouts") - def test_test_helpers_testclock_create2(self, request_mock): - stripe.test_helpers.TestClock.create(frozen_time=1577836800) - request_mock.assert_requested("post", "/v1/test_helpers/test_clocks") + def test_payout_create(self, request_mock): + stripe.Payout.create(amount=1100, currency="usd") + request_mock.assert_requested("post", "/v1/payouts") - def test_test_helpers_testclock_retrieve2(self, request_mock): - stripe.test_helpers.TestClock.retrieve("clock_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", - "/v1/test_helpers/test_clocks/clock_xxxxxxxxxxxxx", - ) + def test_payout_retrieve(self, request_mock): + stripe.Payout.retrieve("po_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/payouts/po_xxxxxxxxxxxxx") - def test_test_helpers_testclock_delete2(self, request_mock): - stripe.test_helpers.TestClock.delete("clock_xxxxxxxxxxxxx") + def test_payout_update(self, request_mock): + stripe.Payout.modify("po_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) + request_mock.assert_requested("post", "/v1/payouts/po_xxxxxxxxxxxxx") + + def test_payout_cancel(self, request_mock): + stripe.Payout.cancel("po_xxxxxxxxxxxxx") request_mock.assert_requested( - "delete", - "/v1/test_helpers/test_clocks/clock_xxxxxxxxxxxxx", + "post", "/v1/payouts/po_xxxxxxxxxxxxx/cancel" ) - def test_test_helpers_testclock_advance2(self, request_mock): - stripe.test_helpers.TestClock.advance( - "clock_xxxxxxxxxxxxx", - frozen_time=1652390605, - ) + def test_payout_reverse(self, request_mock): + stripe.Payout.reverse("po_xxxxxxxxxxxxx") request_mock.assert_requested( "post", - "/v1/test_helpers/test_clocks/clock_xxxxxxxxxxxxx/advance", + "/v1/payouts/po_xxxxxxxxxxxxx/reverse", ) - def test_test_helpers_testclock_list2(self, request_mock): - stripe.test_helpers.TestClock.list(limit=3) - request_mock.assert_requested("get", "/v1/test_helpers/test_clocks") + def test_plan_list(self, request_mock): + stripe.Plan.list(limit=3) + request_mock.assert_requested("get", "/v1/plans") - def test_account_create(self, request_mock): - stripe.Account.create( - type="custom", - country="US", - email="jenny.rosen@example.com", - capabilities={ - "card_payments": {"requested": True}, - "transfers": {"requested": True}, - }, + def test_plan_create(self, request_mock): + stripe.Plan.create( + amount=2000, + currency="usd", + interval="month", + product="prod_xxxxxxxxxxxxx", ) - request_mock.assert_requested("post", "/v1/accounts") - - def test_account_retrieve(self, request_mock): - stripe.Account.retrieve("acct_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/accounts/acct_xxxxxxxxxxxxx") + request_mock.assert_requested("post", "/v1/plans") - def test_account_update(self, request_mock): - stripe.Account.modify( - "acct_xxxxxxxxxxxxx", metadata={"order_id": "6735"} - ) + def test_plan_delete(self, request_mock): + stripe.Plan.delete("price_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", "/v1/accounts/acct_xxxxxxxxxxxxx" + "delete", "/v1/plans/price_xxxxxxxxxxxxx" ) - def test_account_delete(self, request_mock): - stripe.Account.delete("acct_xxxxxxxxxxxxx") - request_mock.assert_requested( - "delete", "/v1/accounts/acct_xxxxxxxxxxxxx" + def test_plan_retrieve(self, request_mock): + stripe.Plan.retrieve("price_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/plans/price_xxxxxxxxxxxxx") + + def test_plan_update(self, request_mock): + stripe.Plan.modify( + "price_xxxxxxxxxxxxx", metadata={"order_id": "6735"} ) + request_mock.assert_requested("post", "/v1/plans/price_xxxxxxxxxxxxx") - def test_account_reject(self, request_mock): - stripe.Account.reject("acct_xxxxxxxxxxxxx", reason="fraud") - request_mock.assert_requested( - "post", - "/v1/accounts/acct_xxxxxxxxxxxxx/reject", + def test_price_list(self, request_mock): + stripe.Price.list(limit=3) + request_mock.assert_requested("get", "/v1/prices") + + def test_price_create(self, request_mock): + stripe.Price.create( + unit_amount=2000, + currency="usd", + recurring={"interval": "month"}, + product="prod_xxxxxxxxxxxxx", ) + request_mock.assert_requested("post", "/v1/prices") - def test_account_list(self, request_mock): - stripe.Account.list(limit=3) - request_mock.assert_requested("get", "/v1/accounts") + def test_price_retrieve(self, request_mock): + stripe.Price.retrieve("price_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/prices/price_xxxxxxxxxxxxx") - def test_accountlink_create(self, request_mock): - stripe.AccountLink.create( - account="acct_xxxxxxxxxxxxx", - refresh_url="https://example.com/reauth", - return_url="https://example.com/return", - type="account_onboarding", + def test_price_update(self, request_mock): + stripe.Price.modify( + "price_xxxxxxxxxxxxx", metadata={"order_id": "6735"} ) - request_mock.assert_requested("post", "/v1/account_links") + request_mock.assert_requested("post", "/v1/prices/price_xxxxxxxxxxxxx") - def test_applicationfee_retrieve(self, request_mock): - stripe.ApplicationFee.retrieve("fee_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", - "/v1/application_fees/fee_xxxxxxxxxxxxx", + def test_price_search(self, request_mock): + stripe.Price.search( + query="active:'true' AND metadata['order_id']:'6735'" ) + request_mock.assert_requested("get", "/v1/prices/search") - def test_applicationfee_list(self, request_mock): - stripe.ApplicationFee.list(limit=3) - request_mock.assert_requested("get", "/v1/application_fees") + def test_product_list(self, request_mock): + stripe.Product.list(limit=3) + request_mock.assert_requested("get", "/v1/products") - def test_applicationfee_feerefund_retrieve(self, request_mock): - stripe.ApplicationFee.retrieve_refund( - "fee_xxxxxxxxxxxxx", - "fr_xxxxxxxxxxxxx", - ) - request_mock.assert_requested( - "get", - "/v1/application_fees/fee_xxxxxxxxxxxxx/refunds/fr_xxxxxxxxxxxxx", - ) + def test_product_create(self, request_mock): + stripe.Product.create(name="Gold Special") + request_mock.assert_requested("post", "/v1/products") - def test_applicationfee_feerefund_update(self, request_mock): - stripe.ApplicationFee.modify_refund( - "fee_xxxxxxxxxxxxx", - "fr_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, - ) + def test_product_delete(self, request_mock): + stripe.Product.delete("prod_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/application_fees/fee_xxxxxxxxxxxxx/refunds/fr_xxxxxxxxxxxxx", + "delete", "/v1/products/prod_xxxxxxxxxxxxx" ) - def test_account_capability_retrieve(self, request_mock): - stripe.Account.retrieve_capability( - "acct_xxxxxxxxxxxxx", "card_payments" + def test_product_retrieve(self, request_mock): + stripe.Product.retrieve("prod_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/products/prod_xxxxxxxxxxxxx") + + def test_product_update(self, request_mock): + stripe.Product.modify( + "prod_xxxxxxxxxxxxx", metadata={"order_id": "6735"} ) request_mock.assert_requested( - "get", - "/v1/accounts/acct_xxxxxxxxxxxxx/capabilities/card_payments", + "post", "/v1/products/prod_xxxxxxxxxxxxx" ) - def test_account_capability_update(self, request_mock): - stripe.Account.modify_capability( - "acct_xxxxxxxxxxxxx", - "card_payments", - requested=True, - ) - request_mock.assert_requested( - "post", - "/v1/accounts/acct_xxxxxxxxxxxxx/capabilities/card_payments", + def test_product_search(self, request_mock): + stripe.Product.search( + query="active:'true' AND metadata['order_id']:'6735'" ) + request_mock.assert_requested("get", "/v1/products/search") - def test_countryspec_list(self, request_mock): - stripe.CountrySpec.list(limit=3) - request_mock.assert_requested("get", "/v1/country_specs") + def test_promotioncode_list(self, request_mock): + stripe.PromotionCode.list(limit=3) + request_mock.assert_requested("get", "/v1/promotion_codes") - def test_countryspec_retrieve(self, request_mock): - stripe.CountrySpec.retrieve("US") - request_mock.assert_requested("get", "/v1/country_specs/US") + def test_promotioncode_create(self, request_mock): + stripe.PromotionCode.create(coupon="Z4OV52SU") + request_mock.assert_requested("post", "/v1/promotion_codes") - def test_account_person_retrieve(self, request_mock): - stripe.Account.retrieve_person( - "acct_xxxxxxxxxxxxx", "person_xxxxxxxxxxxxx" - ) + def test_promotioncode_retrieve(self, request_mock): + stripe.PromotionCode.retrieve("promo_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/accounts/acct_xxxxxxxxxxxxx/persons/person_xxxxxxxxxxxxx", + "/v1/promotion_codes/promo_xxxxxxxxxxxxx", ) - def test_account_person_update(self, request_mock): - stripe.Account.modify_person( - "acct_xxxxxxxxxxxxx", - "person_xxxxxxxxxxxxx", + def test_promotioncode_update(self, request_mock): + stripe.PromotionCode.modify( + "promo_xxxxxxxxxxxxx", metadata={"order_id": "6735"}, ) request_mock.assert_requested( "post", - "/v1/accounts/acct_xxxxxxxxxxxxx/persons/person_xxxxxxxxxxxxx", - ) - - def test_topup_create(self, request_mock): - stripe.Topup.create( - amount=2000, - currency="usd", - description="Top-up for Jenny Rosen", - statement_descriptor="Top-up", + "/v1/promotion_codes/promo_xxxxxxxxxxxxx", ) - request_mock.assert_requested("post", "/v1/topups") - def test_topup_retrieve(self, request_mock): - stripe.Topup.retrieve("tu_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/topups/tu_xxxxxxxxxxxxx") - - def test_topup_update(self, request_mock): - stripe.Topup.modify("tu_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) - request_mock.assert_requested("post", "/v1/topups/tu_xxxxxxxxxxxxx") - - def test_topup_list(self, request_mock): - stripe.Topup.list(limit=3) - request_mock.assert_requested("get", "/v1/topups") + def test_quote_list(self, request_mock): + stripe.Quote.list(limit=3) + request_mock.assert_requested("get", "/v1/quotes") - def test_topup_cancel(self, request_mock): - stripe.Topup.cancel("tu_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", "/v1/topups/tu_xxxxxxxxxxxxx/cancel" + def test_quote_create(self, request_mock): + stripe.Quote.create( + customer="cus_xxxxxxxxxxxxx", + line_items=[{"price": "price_xxxxxxxxxxxxx", "quantity": 2}], ) + request_mock.assert_requested("post", "/v1/quotes") - def test_transfer_create(self, request_mock): - stripe.Transfer.create( - amount=400, - currency="usd", - destination="acct_xxxxxxxxxxxxx", - transfer_group="ORDER_95", - ) - request_mock.assert_requested("post", "/v1/transfers") + def test_quote_retrieve(self, request_mock): + stripe.Quote.retrieve("qt_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/quotes/qt_xxxxxxxxxxxxx") - def test_transfer_retrieve(self, request_mock): - stripe.Transfer.retrieve("tr_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/transfers/tr_xxxxxxxxxxxxx") + def test_quote_update(self, request_mock): + stripe.Quote.modify("qt_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) + request_mock.assert_requested("post", "/v1/quotes/qt_xxxxxxxxxxxxx") - def test_transfer_update(self, request_mock): - stripe.Transfer.modify( - "tr_xxxxxxxxxxxxx", metadata={"order_id": "6735"} + def test_quote_accept(self, request_mock): + stripe.Quote.accept("qt_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", "/v1/quotes/qt_xxxxxxxxxxxxx/accept" ) - request_mock.assert_requested("post", "/v1/transfers/tr_xxxxxxxxxxxxx") - def test_transfer_list(self, request_mock): - stripe.Transfer.list(limit=3) - request_mock.assert_requested("get", "/v1/transfers") - - def test_transfer_transferreversal_retrieve(self, request_mock): - stripe.Transfer.retrieve_reversal( - "tr_xxxxxxxxxxxxx", "trr_xxxxxxxxxxxxx" - ) + def test_quote_cancel(self, request_mock): + stripe.Quote.cancel("qt_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/transfers/tr_xxxxxxxxxxxxx/reversals/trr_xxxxxxxxxxxxx", + "post", "/v1/quotes/qt_xxxxxxxxxxxxx/cancel" ) - def test_transfer_transferreversal_update(self, request_mock): - stripe.Transfer.modify_reversal( - "tr_xxxxxxxxxxxxx", - "trr_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, - ) + def test_quote_finalize_quote(self, request_mock): + stripe.Quote.finalize_quote("qt_xxxxxxxxxxxxx") request_mock.assert_requested( "post", - "/v1/transfers/tr_xxxxxxxxxxxxx/reversals/trr_xxxxxxxxxxxxx", + "/v1/quotes/qt_xxxxxxxxxxxxx/finalize", ) + def test_radar_earlyfraudwarning_list(self, request_mock): + stripe.radar.EarlyFraudWarning.list(limit=3) + request_mock.assert_requested("get", "/v1/radar/early_fraud_warnings") + def test_radar_earlyfraudwarning_retrieve(self, request_mock): stripe.radar.EarlyFraudWarning.retrieve("issfr_xxxxxxxxxxxxx") request_mock.assert_requested( @@ -1653,24 +1584,36 @@ def test_radar_earlyfraudwarning_retrieve(self, request_mock): "/v1/radar/early_fraud_warnings/issfr_xxxxxxxxxxxxx", ) - def test_radar_earlyfraudwarning_list(self, request_mock): - stripe.radar.EarlyFraudWarning.list(limit=3) - request_mock.assert_requested("get", "/v1/radar/early_fraud_warnings") + def test_radar_valuelistitem_list(self, request_mock): + stripe.radar.ValueListItem.list( + limit=3, value_list="rsl_xxxxxxxxxxxxx" + ) + request_mock.assert_requested("get", "/v1/radar/value_list_items") - def test_review_approve(self, request_mock): - stripe.Review.approve("prv_xxxxxxxxxxxxx") + def test_radar_valuelistitem_create(self, request_mock): + stripe.radar.ValueListItem.create( + value_list="rsl_xxxxxxxxxxxxx", + value="1.2.3.4", + ) + request_mock.assert_requested("post", "/v1/radar/value_list_items") + + def test_radar_valuelistitem_delete(self, request_mock): + stripe.radar.ValueListItem.delete("rsli_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/reviews/prv_xxxxxxxxxxxxx/approve", + "delete", + "/v1/radar/value_list_items/rsli_xxxxxxxxxxxxx", ) - def test_review_retrieve(self, request_mock): - stripe.Review.retrieve("prv_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/reviews/prv_xxxxxxxxxxxxx") + def test_radar_valuelistitem_retrieve(self, request_mock): + stripe.radar.ValueListItem.retrieve("rsli_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/radar/value_list_items/rsli_xxxxxxxxxxxxx", + ) - def test_review_list(self, request_mock): - stripe.Review.list(limit=3) - request_mock.assert_requested("get", "/v1/reviews") + def test_radar_valuelist_list(self, request_mock): + stripe.radar.ValueList.list(limit=3) + request_mock.assert_requested("get", "/v1/radar/value_lists") def test_radar_valuelist_create(self, request_mock): stripe.radar.ValueList.create( @@ -1680,6 +1623,13 @@ def test_radar_valuelist_create(self, request_mock): ) request_mock.assert_requested("post", "/v1/radar/value_lists") + def test_radar_valuelist_delete(self, request_mock): + stripe.radar.ValueList.delete("rsl_xxxxxxxxxxxxx") + request_mock.assert_requested( + "delete", + "/v1/radar/value_lists/rsl_xxxxxxxxxxxxx", + ) + def test_radar_valuelist_retrieve(self, request_mock): stripe.radar.ValueList.retrieve("rsl_xxxxxxxxxxxxx") request_mock.assert_requested( @@ -1697,323 +1647,363 @@ def test_radar_valuelist_update(self, request_mock): "/v1/radar/value_lists/rsl_xxxxxxxxxxxxx", ) - def test_radar_valuelist_delete(self, request_mock): - stripe.radar.ValueList.delete("rsl_xxxxxxxxxxxxx") + def test_refund_list(self, request_mock): + stripe.Refund.list(limit=3) + request_mock.assert_requested("get", "/v1/refunds") + + def test_refund_create(self, request_mock): + stripe.Refund.create(charge="ch_xxxxxxxxxxxxx") + request_mock.assert_requested("post", "/v1/refunds") + + def test_refund_retrieve(self, request_mock): + stripe.Refund.retrieve("re_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/refunds/re_xxxxxxxxxxxxx") + + def test_refund_update(self, request_mock): + stripe.Refund.modify("re_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) + request_mock.assert_requested("post", "/v1/refunds/re_xxxxxxxxxxxxx") + + def test_refund_cancel(self, request_mock): + stripe.Refund.cancel("re_xxxxxxxxxxxxx") + request_mock.assert_requested( + "post", "/v1/refunds/re_xxxxxxxxxxxxx/cancel" + ) + + def test_reporting_reportrun_list(self, request_mock): + stripe.reporting.ReportRun.list(limit=3) + request_mock.assert_requested("get", "/v1/reporting/report_runs") + + def test_reporting_reportrun_create(self, request_mock): + stripe.reporting.ReportRun.create( + report_type="balance.summary.1", + parameters={ + "interval_start": 1522540800, + "interval_end": 1525132800, + }, + ) + request_mock.assert_requested("post", "/v1/reporting/report_runs") + + def test_reporting_reportrun_retrieve(self, request_mock): + stripe.reporting.ReportRun.retrieve("frr_xxxxxxxxxxxxx") request_mock.assert_requested( - "delete", - "/v1/radar/value_lists/rsl_xxxxxxxxxxxxx", + "get", + "/v1/reporting/report_runs/frr_xxxxxxxxxxxxx", ) - def test_radar_valuelist_list(self, request_mock): - stripe.radar.ValueList.list(limit=3) - request_mock.assert_requested("get", "/v1/radar/value_lists") - - def test_radar_valuelistitem_create(self, request_mock): - stripe.radar.ValueListItem.create( - value_list="rsl_xxxxxxxxxxxxx", - value="1.2.3.4", - ) - request_mock.assert_requested("post", "/v1/radar/value_list_items") + def test_reporting_reporttype_list(self, request_mock): + stripe.reporting.ReportType.list() + request_mock.assert_requested("get", "/v1/reporting/report_types") - def test_radar_valuelistitem_retrieve(self, request_mock): - stripe.radar.ValueListItem.retrieve("rsli_xxxxxxxxxxxxx") + def test_reporting_reporttype_retrieve(self, request_mock): + stripe.reporting.ReportType.retrieve("balance.summary.1") request_mock.assert_requested( "get", - "/v1/radar/value_list_items/rsli_xxxxxxxxxxxxx", + "/v1/reporting/report_types/balance.summary.1", ) - def test_radar_valuelistitem_delete(self, request_mock): - stripe.radar.ValueListItem.delete("rsli_xxxxxxxxxxxxx") + def test_review_list(self, request_mock): + stripe.Review.list(limit=3) + request_mock.assert_requested("get", "/v1/reviews") + + def test_review_retrieve(self, request_mock): + stripe.Review.retrieve("prv_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/reviews/prv_xxxxxxxxxxxxx") + + def test_review_approve(self, request_mock): + stripe.Review.approve("prv_xxxxxxxxxxxxx") request_mock.assert_requested( - "delete", - "/v1/radar/value_list_items/rsli_xxxxxxxxxxxxx", + "post", + "/v1/reviews/prv_xxxxxxxxxxxxx/approve", ) - def test_radar_valuelistitem_list(self, request_mock): - stripe.radar.ValueListItem.list( - limit=3, value_list="rsl_xxxxxxxxxxxxx" - ) - request_mock.assert_requested("get", "/v1/radar/value_list_items") + def test_setupintent_list(self, request_mock): + stripe.SetupIntent.list(limit=3) + request_mock.assert_requested("get", "/v1/setup_intents") - def test_issuing_authorization_retrieve(self, request_mock): - stripe.issuing.Authorization.retrieve("iauth_xxxxxxxxxxxxx") + def test_setupintent_create(self, request_mock): + stripe.SetupIntent.create(payment_method_types=["card"]) + request_mock.assert_requested("post", "/v1/setup_intents") + + def test_setupintent_retrieve(self, request_mock): + stripe.SetupIntent.retrieve("seti_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/issuing/authorizations/iauth_xxxxxxxxxxxxx", + "get", "/v1/setup_intents/seti_xxxxxxxxxxxxx" ) - def test_issuing_authorization_update(self, request_mock): - stripe.issuing.Authorization.modify( - "iauth_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, + def test_setupintent_update(self, request_mock): + stripe.SetupIntent.modify( + "seti_xxxxxxxxxxxxx", + metadata={"user_id": "3435453"}, ) request_mock.assert_requested( "post", - "/v1/issuing/authorizations/iauth_xxxxxxxxxxxxx", + "/v1/setup_intents/seti_xxxxxxxxxxxxx", ) - def test_issuing_authorization_approve(self, request_mock): - stripe.issuing.Authorization.approve("iauth_xxxxxxxxxxxxx") + def test_setupintent_cancel(self, request_mock): + stripe.SetupIntent.cancel("seti_xxxxxxxxxxxxx") request_mock.assert_requested( "post", - "/v1/issuing/authorizations/iauth_xxxxxxxxxxxxx/approve", + "/v1/setup_intents/seti_xxxxxxxxxxxxx/cancel", ) - def test_issuing_authorization_decline(self, request_mock): - stripe.issuing.Authorization.decline("iauth_xxxxxxxxxxxxx") + def test_setupintent_confirm(self, request_mock): + stripe.SetupIntent.confirm( + "seti_xxxxxxxxxxxxx", + payment_method="pm_card_visa", + ) request_mock.assert_requested( "post", - "/v1/issuing/authorizations/iauth_xxxxxxxxxxxxx/decline", + "/v1/setup_intents/seti_xxxxxxxxxxxxx/confirm", ) - def test_issuing_authorization_list(self, request_mock): - stripe.issuing.Authorization.list(limit=3) - request_mock.assert_requested("get", "/v1/issuing/authorizations") + def test_shippingrate_list2(self, request_mock): + stripe.ShippingRate.list(limit=3) + request_mock.assert_requested("get", "/v1/shipping_rates") - def test_issuing_cardholder_create(self, request_mock): - stripe.issuing.Cardholder.create( - type="individual", - name="Jenny Rosen", - email="jenny.rosen@example.com", - phone_number="+18888675309", - billing={ - "address": { - "line1": "1234 Main Street", - "city": "San Francisco", - "state": "CA", - "country": "US", - "postal_code": "94111", - }, - }, + def test_shippingrate_create2(self, request_mock): + stripe.ShippingRate.create( + display_name="Ground shipping", + type="fixed_amount", + fixed_amount={"amount": 500, "currency": "usd"}, ) - request_mock.assert_requested("post", "/v1/issuing/cardholders") + request_mock.assert_requested("post", "/v1/shipping_rates") - def test_issuing_cardholder_retrieve(self, request_mock): - stripe.issuing.Cardholder.retrieve("ich_xxxxxxxxxxxxx") + def test_shippingrate_retrieve(self, request_mock): + stripe.ShippingRate.retrieve("shr_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/issuing/cardholders/ich_xxxxxxxxxxxxx", + "get", "/v1/shipping_rates/shr_xxxxxxxxxxxxx" ) - def test_issuing_cardholder_update(self, request_mock): - stripe.issuing.Cardholder.modify( - "ich_xxxxxxxxxxxxx", + def test_shippingrate_update(self, request_mock): + stripe.ShippingRate.modify( + "shr_xxxxxxxxxxxxx", metadata={"order_id": "6735"}, ) request_mock.assert_requested( "post", - "/v1/issuing/cardholders/ich_xxxxxxxxxxxxx", + "/v1/shipping_rates/shr_xxxxxxxxxxxxx", ) - def test_issuing_cardholder_list(self, request_mock): - stripe.issuing.Cardholder.list(limit=3) - request_mock.assert_requested("get", "/v1/issuing/cardholders") - - def test_issuing_card_create(self, request_mock): - stripe.issuing.Card.create( - cardholder="ich_xxxxxxxxxxxxx", - currency="usd", - type="virtual", - ) - request_mock.assert_requested("post", "/v1/issuing/cards") + def test_sigma_scheduledqueryrun_list(self, request_mock): + stripe.sigma.ScheduledQueryRun.list(limit=3) + request_mock.assert_requested("get", "/v1/sigma/scheduled_query_runs") - def test_issuing_card_retrieve(self, request_mock): - stripe.issuing.Card.retrieve("ic_xxxxxxxxxxxxx") + def test_sigma_scheduledqueryrun_retrieve(self, request_mock): + stripe.sigma.ScheduledQueryRun.retrieve("sqr_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", "/v1/issuing/cards/ic_xxxxxxxxxxxxx" + "get", + "/v1/sigma/scheduled_query_runs/sqr_xxxxxxxxxxxxx", ) - def test_issuing_card_update(self, request_mock): - stripe.issuing.Card.modify( - "ic_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, + def test_sku_list(self, request_mock): + stripe.SKU.list(limit=3) + request_mock.assert_requested("get", "/v1/skus") + + def test_sku_create(self, request_mock): + stripe.SKU.create( + attributes={"size": "Medium", "gender": "Unisex"}, + price=1500, + currency="usd", + inventory={"type": "finite", "quantity": 500}, + product="prod_xxxxxxxxxxxxx", ) - request_mock.assert_requested( - "post", "/v1/issuing/cards/ic_xxxxxxxxxxxxx" + request_mock.assert_requested("post", "/v1/skus") + + def test_sku_delete(self, request_mock): + stripe.SKU.delete("sku_xxxxxxxxxxxxx") + request_mock.assert_requested("delete", "/v1/skus/sku_xxxxxxxxxxxxx") + + def test_sku_retrieve(self, request_mock): + stripe.SKU.retrieve("sku_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/skus/sku_xxxxxxxxxxxxx") + + def test_sku_update(self, request_mock): + stripe.SKU.modify("sku_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) + request_mock.assert_requested("post", "/v1/skus/sku_xxxxxxxxxxxxx") + + def test_source_retrieve(self, request_mock): + stripe.Source.retrieve("src_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/sources/src_xxxxxxxxxxxxx") + + def test_source_retrieve2(self, request_mock): + stripe.Source.retrieve("src_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/sources/src_xxxxxxxxxxxxx") + + def test_source_update(self, request_mock): + stripe.Source.modify( + "src_xxxxxxxxxxxxx", metadata={"order_id": "6735"} ) + request_mock.assert_requested("post", "/v1/sources/src_xxxxxxxxxxxxx") - def test_issuing_card_list(self, request_mock): - stripe.issuing.Card.list(limit=3) - request_mock.assert_requested("get", "/v1/issuing/cards") + def test_subscriptionitem_list(self, request_mock): + stripe.SubscriptionItem.list(subscription="sub_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/subscription_items") - def test_issuing_dispute_create(self, request_mock): - stripe.issuing.Dispute.create( - transaction="ipi_xxxxxxxxxxxxx", - evidence={ - "reason": "fraudulent", - "fraudulent": {"explanation": "Purchase was unrecognized."}, - }, + def test_subscriptionitem_create(self, request_mock): + stripe.SubscriptionItem.create( + subscription="sub_xxxxxxxxxxxxx", + price="price_xxxxxxxxxxxxx", + quantity=2, ) - request_mock.assert_requested("post", "/v1/issuing/disputes") + request_mock.assert_requested("post", "/v1/subscription_items") - def test_issuing_dispute_submit(self, request_mock): - stripe.issuing.Dispute.submit("idp_xxxxxxxxxxxxx") + def test_subscriptionitem_delete(self, request_mock): + stripe.SubscriptionItem.delete("si_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/issuing/disputes/idp_xxxxxxxxxxxxx/submit", + "delete", + "/v1/subscription_items/si_xxxxxxxxxxxxx", ) - def test_issuing_dispute_retrieve(self, request_mock): - stripe.issuing.Dispute.retrieve("idp_xxxxxxxxxxxxx") + def test_subscriptionitem_retrieve(self, request_mock): + stripe.SubscriptionItem.retrieve("si_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/issuing/disputes/idp_xxxxxxxxxxxxx", + "/v1/subscription_items/si_xxxxxxxxxxxxx", ) - def test_issuing_dispute_update(self, request_mock): - stripe.issuing.Dispute.modify( - "idp_xxxxxxxxxxxxx", - evidence={ - "reason": "not_received", - "not_received": { - "expected_at": 1590000000, - "explanation": "", - "product_description": "Baseball cap", - "product_type": "merchandise", - }, - }, + def test_subscriptionitem_update(self, request_mock): + stripe.SubscriptionItem.modify( + "si_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, ) request_mock.assert_requested( "post", - "/v1/issuing/disputes/idp_xxxxxxxxxxxxx", + "/v1/subscription_items/si_xxxxxxxxxxxxx", ) - def test_issuing_dispute_list(self, request_mock): - stripe.issuing.Dispute.list(limit=3) - request_mock.assert_requested("get", "/v1/issuing/disputes") + def test_subscriptionschedule_list(self, request_mock): + stripe.SubscriptionSchedule.list(limit=3) + request_mock.assert_requested("get", "/v1/subscription_schedules") - def test_issuing_transaction_retrieve(self, request_mock): - stripe.issuing.Transaction.retrieve("ipi_xxxxxxxxxxxxx") + def test_subscriptionschedule_create(self, request_mock): + stripe.SubscriptionSchedule.create( + customer="cus_xxxxxxxxxxxxx", + start_date=1652909005, + end_behavior="release", + phases=[ + { + "items": [{"price": "price_xxxxxxxxxxxxx", "quantity": 1}], + "iterations": 12, + }, + ], + ) + request_mock.assert_requested("post", "/v1/subscription_schedules") + + def test_subscriptionschedule_retrieve(self, request_mock): + stripe.SubscriptionSchedule.retrieve("sub_sched_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/issuing/transactions/ipi_xxxxxxxxxxxxx", + "/v1/subscription_schedules/sub_sched_xxxxxxxxxxxxx", ) - def test_issuing_transaction_update(self, request_mock): - stripe.issuing.Transaction.modify( - "ipi_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, + def test_subscriptionschedule_update(self, request_mock): + stripe.SubscriptionSchedule.modify( + "sub_sched_xxxxxxxxxxxxx", + end_behavior="release", ) request_mock.assert_requested( "post", - "/v1/issuing/transactions/ipi_xxxxxxxxxxxxx", - ) - - def test_issuing_transaction_list(self, request_mock): - stripe.issuing.Transaction.list(limit=3) - request_mock.assert_requested("get", "/v1/issuing/transactions") - - def test_terminal_connectiontoken_create(self, request_mock): - stripe.terminal.ConnectionToken.create() - request_mock.assert_requested("post", "/v1/terminal/connection_tokens") - - def test_terminal_location_create(self, request_mock): - stripe.terminal.Location.create( - display_name="My First Store", - address={ - "line1": "1234 Main Street", - "city": "San Francisco", - "country": "US", - "postal_code": "94111", - }, - ) - request_mock.assert_requested("post", "/v1/terminal/locations") - - def test_terminal_location_retrieve(self, request_mock): - stripe.terminal.Location.retrieve("tml_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", - "/v1/terminal/locations/tml_xxxxxxxxxxxxx", + "/v1/subscription_schedules/sub_sched_xxxxxxxxxxxxx", ) - def test_terminal_location_update(self, request_mock): - stripe.terminal.Location.modify( - "tml_xxxxxxxxxxxxx", - display_name="My First Store", - ) + def test_subscriptionschedule_cancel(self, request_mock): + stripe.SubscriptionSchedule.cancel("sub_sched_xxxxxxxxxxxxx") request_mock.assert_requested( "post", - "/v1/terminal/locations/tml_xxxxxxxxxxxxx", + "/v1/subscription_schedules/sub_sched_xxxxxxxxxxxxx/cancel", ) - def test_terminal_location_delete(self, request_mock): - stripe.terminal.Location.delete("tml_xxxxxxxxxxxxx") + def test_subscriptionschedule_release(self, request_mock): + stripe.SubscriptionSchedule.release("sub_sched_xxxxxxxxxxxxx") request_mock.assert_requested( - "delete", - "/v1/terminal/locations/tml_xxxxxxxxxxxxx", + "post", + "/v1/subscription_schedules/sub_sched_xxxxxxxxxxxxx/release", ) - def test_terminal_location_list(self, request_mock): - stripe.terminal.Location.list(limit=3) - request_mock.assert_requested("get", "/v1/terminal/locations") + def test_subscription_list(self, request_mock): + stripe.Subscription.list(limit=3) + request_mock.assert_requested("get", "/v1/subscriptions") - def test_terminal_reader_create(self, request_mock): - stripe.terminal.Reader.create( - registration_code="puppies-plug-could", - label="Blue Rabbit", - location="tml_1234", + def test_subscription_create(self, request_mock): + stripe.Subscription.create( + customer="cus_xxxxxxxxxxxxx", + items=[{"price": "price_xxxxxxxxxxxxx"}], ) - request_mock.assert_requested("post", "/v1/terminal/readers") + request_mock.assert_requested("post", "/v1/subscriptions") - def test_terminal_reader_retrieve(self, request_mock): - stripe.terminal.Reader.retrieve("tmr_xxxxxxxxxxxxx") + def test_subscription_retrieve(self, request_mock): + stripe.Subscription.retrieve("sub_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/terminal/readers/tmr_xxxxxxxxxxxxx", + "get", "/v1/subscriptions/sub_xxxxxxxxxxxxx" ) - def test_terminal_reader_update(self, request_mock): - stripe.terminal.Reader.modify("tmr_xxxxxxxxxxxxx", label="Blue Rabbit") + def test_subscription_update(self, request_mock): + stripe.Subscription.modify( + "sub_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, + ) request_mock.assert_requested( - "post", - "/v1/terminal/readers/tmr_xxxxxxxxxxxxx", + "post", "/v1/subscriptions/sub_xxxxxxxxxxxxx" ) - def test_terminal_reader_delete(self, request_mock): - stripe.terminal.Reader.delete("tmr_xxxxxxxxxxxxx") - request_mock.assert_requested( - "delete", - "/v1/terminal/readers/tmr_xxxxxxxxxxxxx", + def test_subscription_search(self, request_mock): + stripe.Subscription.search( + query="status:'active' AND metadata['order_id']:'6735'", ) + request_mock.assert_requested("get", "/v1/subscriptions/search") - def test_terminal_reader_list(self, request_mock): - stripe.terminal.Reader.list(limit=3) - request_mock.assert_requested("get", "/v1/terminal/readers") + def test_taxcode_list(self, request_mock): + stripe.TaxCode.list(limit=3) + request_mock.assert_requested("get", "/v1/tax_codes") - def test_terminal_reader_process_payment_intent(self, request_mock): - stripe.terminal.Reader.process_payment_intent( - "tmr_xxxxxxxxxxxxx", - payment_intent="pi_xxxxxxxxxxxxx", - ) + def test_taxcode_retrieve(self, request_mock): + stripe.TaxCode.retrieve("txcd_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/terminal/readers/tmr_xxxxxxxxxxxxx/process_payment_intent", + "get", "/v1/tax_codes/txcd_xxxxxxxxxxxxx" ) - def test_terminal_reader_process_setup_intent(self, request_mock): - stripe.terminal.Reader.process_setup_intent( - "tmr_xxxxxxxxxxxxx", - setup_intent="seti_xxxxxxxxxxxxx", - customer_consent_collected=True, - ) - request_mock.assert_requested( - "post", - "/v1/terminal/readers/tmr_xxxxxxxxxxxxx/process_setup_intent", + def test_taxrate_list(self, request_mock): + stripe.TaxRate.list(limit=3) + request_mock.assert_requested("get", "/v1/tax_rates") + + def test_taxrate_create(self, request_mock): + stripe.TaxRate.create( + display_name="VAT", + description="VAT Germany", + jurisdiction="DE", + percentage=16, + inclusive=False, ) + request_mock.assert_requested("post", "/v1/tax_rates") - def test_terminal_reader_cancel_action(self, request_mock): - stripe.terminal.Reader.cancel_action("tmr_xxxxxxxxxxxxx") + def test_taxrate_retrieve(self, request_mock): + stripe.TaxRate.retrieve("txr_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/tax_rates/txr_xxxxxxxxxxxxx") + + def test_taxrate_update(self, request_mock): + stripe.TaxRate.modify("txr_xxxxxxxxxxxxx", active=False) request_mock.assert_requested( - "post", - "/v1/terminal/readers/tmr_xxxxxxxxxxxxx/cancel_action", + "post", "/v1/tax_rates/txr_xxxxxxxxxxxxx" ) + def test_terminal_configuration_list2(self, request_mock): + stripe.terminal.Configuration.list(limit=3) + request_mock.assert_requested("get", "/v1/terminal/configurations") + def test_terminal_configuration_create2(self, request_mock): stripe.terminal.Configuration.create( bbpos_wisepos_e={"splashscreen": "file_xxxxxxxxxxxxx"}, ) request_mock.assert_requested("post", "/v1/terminal/configurations") + def test_terminal_configuration_delete2(self, request_mock): + stripe.terminal.Configuration.delete("tmc_xxxxxxxxxxxxx") + request_mock.assert_requested( + "delete", + "/v1/terminal/configurations/tmc_xxxxxxxxxxxxx", + ) + def test_terminal_configuration_retrieve2(self, request_mock): stripe.terminal.Configuration.retrieve("tmc_xxxxxxxxxxxxx") request_mock.assert_requested( @@ -2031,214 +2021,252 @@ def test_terminal_configuration_update2(self, request_mock): "/v1/terminal/configurations/tmc_xxxxxxxxxxxxx", ) - def test_terminal_configuration_delete2(self, request_mock): - stripe.terminal.Configuration.delete("tmc_xxxxxxxxxxxxx") - request_mock.assert_requested( - "delete", - "/v1/terminal/configurations/tmc_xxxxxxxxxxxxx", - ) + def test_terminal_connectiontoken_create(self, request_mock): + stripe.terminal.ConnectionToken.create() + request_mock.assert_requested("post", "/v1/terminal/connection_tokens") - def test_terminal_configuration_list2(self, request_mock): - stripe.terminal.Configuration.list(limit=3) - request_mock.assert_requested("get", "/v1/terminal/configurations") + def test_terminal_location_list(self, request_mock): + stripe.terminal.Location.list(limit=3) + request_mock.assert_requested("get", "/v1/terminal/locations") - def test_treasury_financialaccount_create(self, request_mock): - stripe.treasury.FinancialAccount.create( - supported_currencies=["usd"], - features={}, - ) - request_mock.assert_requested( - "post", "/v1/treasury/financial_accounts" + def test_terminal_location_create(self, request_mock): + stripe.terminal.Location.create( + display_name="My First Store", + address={ + "line1": "1234 Main Street", + "city": "San Francisco", + "country": "US", + "postal_code": "94111", + }, ) + request_mock.assert_requested("post", "/v1/terminal/locations") - def test_treasury_financialaccount_update(self, request_mock): - stripe.treasury.FinancialAccount.modify( - "fa_xxxxxxxxxxxxx", - metadata={"order_id": "6735"}, - ) + def test_terminal_location_delete(self, request_mock): + stripe.terminal.Location.delete("tml_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/treasury/financial_accounts/fa_xxxxxxxxxxxxx", + "delete", + "/v1/terminal/locations/tml_xxxxxxxxxxxxx", ) - def test_treasury_financialaccount_retrieve(self, request_mock): - stripe.treasury.FinancialAccount.retrieve("fa_xxxxxxxxxxxxx") + def test_terminal_location_retrieve(self, request_mock): + stripe.terminal.Location.retrieve("tml_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/treasury/financial_accounts/fa_xxxxxxxxxxxxx", + "/v1/terminal/locations/tml_xxxxxxxxxxxxx", ) - def test_treasury_financialaccount_list(self, request_mock): - stripe.treasury.FinancialAccount.list(limit=3) - request_mock.assert_requested("get", "/v1/treasury/financial_accounts") - - def test_treasury_financialaccount_update_features(self, request_mock): - stripe.treasury.FinancialAccount.update_features("fa_xxxxxxxxxxxxx") + def test_terminal_location_update(self, request_mock): + stripe.terminal.Location.modify( + "tml_xxxxxxxxxxxxx", + display_name="My First Store", + ) request_mock.assert_requested( "post", - "/v1/treasury/financial_accounts/fa_xxxxxxxxxxxxx/features", + "/v1/terminal/locations/tml_xxxxxxxxxxxxx", ) - def test_treasury_financialaccount_retrieve_features(self, request_mock): - stripe.treasury.FinancialAccount.retrieve_features("fa_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", - "/v1/treasury/financial_accounts/fa_xxxxxxxxxxxxx/features", - ) + def test_terminal_reader_list(self, request_mock): + stripe.terminal.Reader.list(limit=3) + request_mock.assert_requested("get", "/v1/terminal/readers") - def test_treasury_transaction_retrieve(self, request_mock): - stripe.treasury.Transaction.retrieve("trxn_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", - "/v1/treasury/transactions/trxn_xxxxxxxxxxxxx", + def test_terminal_reader_create(self, request_mock): + stripe.terminal.Reader.create( + registration_code="puppies-plug-could", + label="Blue Rabbit", + location="tml_1234", ) + request_mock.assert_requested("post", "/v1/terminal/readers") - def test_treasury_transaction_list(self, request_mock): - stripe.treasury.Transaction.list( - financial_account="fa_xxxxxxxxxxxxx", - limit=3, + def test_terminal_reader_delete(self, request_mock): + stripe.terminal.Reader.delete("tmr_xxxxxxxxxxxxx") + request_mock.assert_requested( + "delete", + "/v1/terminal/readers/tmr_xxxxxxxxxxxxx", ) - request_mock.assert_requested("get", "/v1/treasury/transactions") - def test_treasury_transactionentry_retrieve(self, request_mock): - stripe.treasury.TransactionEntry.retrieve("trxne_xxxxxxxxxxxxx") + def test_terminal_reader_retrieve(self, request_mock): + stripe.terminal.Reader.retrieve("tmr_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/treasury/transaction_entries/trxne_xxxxxxxxxxxxx", - ) - - def test_treasury_transactionentry_list(self, request_mock): - stripe.treasury.TransactionEntry.list( - financial_account="fa_xxxxxxxxxxxxx", - limit=3, + "/v1/terminal/readers/tmr_xxxxxxxxxxxxx", ) + + def test_terminal_reader_update(self, request_mock): + stripe.terminal.Reader.modify("tmr_xxxxxxxxxxxxx", label="Blue Rabbit") request_mock.assert_requested( - "get", "/v1/treasury/transaction_entries" + "post", + "/v1/terminal/readers/tmr_xxxxxxxxxxxxx", ) - def test_treasury_outboundtransfer_create(self, request_mock): - stripe.treasury.OutboundTransfer.create( - financial_account="fa_xxxxxxxxxxxxx", - destination_payment_method="pm_xxxxxxxxxxxxx", - amount=500, - currency="usd", - description="OutboundTransfer to my external bank account", - ) + def test_terminal_reader_cancel_action(self, request_mock): + stripe.terminal.Reader.cancel_action("tmr_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", "/v1/treasury/outbound_transfers" + "post", + "/v1/terminal/readers/tmr_xxxxxxxxxxxxx/cancel_action", ) - def test_treasury_outboundtransfer_cancel(self, request_mock): - stripe.treasury.OutboundTransfer.cancel("obt_xxxxxxxxxxxxx") + def test_terminal_reader_process_payment_intent(self, request_mock): + stripe.terminal.Reader.process_payment_intent( + "tmr_xxxxxxxxxxxxx", + payment_intent="pi_xxxxxxxxxxxxx", + ) request_mock.assert_requested( "post", - "/v1/treasury/outbound_transfers/obt_xxxxxxxxxxxxx/cancel", + "/v1/terminal/readers/tmr_xxxxxxxxxxxxx/process_payment_intent", ) - def test_treasury_outboundtransfer_retrieve(self, request_mock): - stripe.treasury.OutboundTransfer.retrieve("obt_xxxxxxxxxxxxx") + def test_test_helpers_testclock_list2(self, request_mock): + stripe.test_helpers.TestClock.list(limit=3) + request_mock.assert_requested("get", "/v1/test_helpers/test_clocks") + + def test_test_helpers_testclock_create2(self, request_mock): + stripe.test_helpers.TestClock.create(frozen_time=1577836800) + request_mock.assert_requested("post", "/v1/test_helpers/test_clocks") + + def test_test_helpers_testclock_delete2(self, request_mock): + stripe.test_helpers.TestClock.delete("clock_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/treasury/outbound_transfers/obt_xxxxxxxxxxxxx", + "delete", + "/v1/test_helpers/test_clocks/clock_xxxxxxxxxxxxx", ) - def test_treasury_outboundtransfer_list(self, request_mock): - stripe.treasury.OutboundTransfer.list( - financial_account="fa_xxxxxxxxxxxxx", - limit=3, + def test_test_helpers_testclock_retrieve2(self, request_mock): + stripe.test_helpers.TestClock.retrieve("clock_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/test_helpers/test_clocks/clock_xxxxxxxxxxxxx", ) - request_mock.assert_requested("get", "/v1/treasury/outbound_transfers") - def test_treasury_outboundpayment_create(self, request_mock): - stripe.treasury.OutboundPayment.create( - financial_account="fa_xxxxxxxxxxxxx", - amount=10000, - currency="usd", - customer="cu_xxxxxxxxxxxxx", - destination_payment_method="pm_xxxxxxxxxxxxx", - description="OutboundPayment to a 3rd party", + def test_test_helpers_testclock_advance2(self, request_mock): + stripe.test_helpers.TestClock.advance( + "clock_xxxxxxxxxxxxx", + frozen_time=1652390605, ) - request_mock.assert_requested("post", "/v1/treasury/outbound_payments") - - def test_treasury_outboundpayment_cancel(self, request_mock): - stripe.treasury.OutboundPayment.cancel("obp_xxxxxxxxxxxxx") request_mock.assert_requested( "post", - "/v1/treasury/outbound_payments/obp_xxxxxxxxxxxxx/cancel", + "/v1/test_helpers/test_clocks/clock_xxxxxxxxxxxxx/advance", ) - def test_treasury_outboundpayment_retrieve(self, request_mock): - stripe.treasury.OutboundPayment.retrieve("obp_xxxxxxxxxxxxx") - request_mock.assert_requested( - "get", - "/v1/treasury/outbound_payments/obp_xxxxxxxxxxxxx", + def test_token_create2(self, request_mock): + stripe.Token.create( + bank_account={ + "country": "US", + "currency": "usd", + "account_holder_name": "Jenny Rosen", + "account_holder_type": "individual", + "routing_number": "110000000", + "account_number": "000123456789", + }, ) + request_mock.assert_requested("post", "/v1/tokens") - def test_treasury_outboundpayment_list(self, request_mock): - stripe.treasury.OutboundPayment.list( - financial_account="fa_xxxxxxxxxxxxx", - limit=3, + def test_token_create3(self, request_mock): + stripe.Token.create(pii={"id_number": "000000000"}) + request_mock.assert_requested("post", "/v1/tokens") + + def test_token_create4(self, request_mock): + stripe.Token.create( + account={ + "individual": {"first_name": "Jane", "last_name": "Doe"}, + "tos_shown_and_accepted": True, + }, ) - request_mock.assert_requested("get", "/v1/treasury/outbound_payments") + request_mock.assert_requested("post", "/v1/tokens") - def test_treasury_inboundtransfer_create(self, request_mock): - stripe.treasury.InboundTransfer.create( - financial_account="fa_xxxxxxxxxxxxx", - amount=10000, + def test_token_create5(self, request_mock): + stripe.Token.create( + person={ + "first_name": "Jane", + "last_name": "Doe", + "relationship": {"owner": True}, + }, + ) + request_mock.assert_requested("post", "/v1/tokens") + + def test_token_create6(self, request_mock): + stripe.Token.create(cvc_update={"cvc": "123"}) + request_mock.assert_requested("post", "/v1/tokens") + + def test_token_retrieve(self, request_mock): + stripe.Token.retrieve("tok_xxxx") + request_mock.assert_requested("get", "/v1/tokens/tok_xxxx") + + def test_topup_list(self, request_mock): + stripe.Topup.list(limit=3) + request_mock.assert_requested("get", "/v1/topups") + + def test_topup_create(self, request_mock): + stripe.Topup.create( + amount=2000, currency="usd", - origin_payment_method="pm_xxxxxxxxxxxxx", - description="InboundTransfer from my bank account", + description="Top-up for Jenny Rosen", + statement_descriptor="Top-up", ) - request_mock.assert_requested("post", "/v1/treasury/inbound_transfers") + request_mock.assert_requested("post", "/v1/topups") - def test_treasury_inboundtransfer_retrieve(self, request_mock): - stripe.treasury.InboundTransfer.retrieve("ibt_xxxxxxxxxxxxx") + def test_topup_retrieve(self, request_mock): + stripe.Topup.retrieve("tu_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/topups/tu_xxxxxxxxxxxxx") + + def test_topup_update(self, request_mock): + stripe.Topup.modify("tu_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) + request_mock.assert_requested("post", "/v1/topups/tu_xxxxxxxxxxxxx") + + def test_topup_cancel(self, request_mock): + stripe.Topup.cancel("tu_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/treasury/inbound_transfers/ibt_xxxxxxxxxxxxx", + "post", "/v1/topups/tu_xxxxxxxxxxxxx/cancel" ) - def test_treasury_inboundtransfer_list(self, request_mock): - stripe.treasury.InboundTransfer.list( - financial_account="fa_xxxxxxxxxxxxx", - limit=3, + def test_transfer_list(self, request_mock): + stripe.Transfer.list(limit=3) + request_mock.assert_requested("get", "/v1/transfers") + + def test_transfer_create(self, request_mock): + stripe.Transfer.create( + amount=400, + currency="usd", + destination="acct_xxxxxxxxxxxxx", + transfer_group="ORDER_95", ) - request_mock.assert_requested("get", "/v1/treasury/inbound_transfers") + request_mock.assert_requested("post", "/v1/transfers") - def test_treasury_inboundtransfer_cancel(self, request_mock): - stripe.treasury.InboundTransfer.cancel("ibt_xxxxxxxxxxxxx") - request_mock.assert_requested( - "post", - "/v1/treasury/inbound_transfers/ibt_xxxxxxxxxxxxx/cancel", + def test_transfer_retrieve(self, request_mock): + stripe.Transfer.retrieve("tr_xxxxxxxxxxxxx") + request_mock.assert_requested("get", "/v1/transfers/tr_xxxxxxxxxxxxx") + + def test_transfer_update(self, request_mock): + stripe.Transfer.modify( + "tr_xxxxxxxxxxxxx", metadata={"order_id": "6735"} ) + request_mock.assert_requested("post", "/v1/transfers/tr_xxxxxxxxxxxxx") - def test_treasury_receivedcredit_retrieve(self, request_mock): - stripe.treasury.ReceivedCredit.retrieve("rc_xxxxxxxxxxxxx") + def test_transfer_transferreversal_retrieve(self, request_mock): + stripe.Transfer.retrieve_reversal( + "tr_xxxxxxxxxxxxx", "trr_xxxxxxxxxxxxx" + ) request_mock.assert_requested( "get", - "/v1/treasury/received_credits/rc_xxxxxxxxxxxxx", + "/v1/transfers/tr_xxxxxxxxxxxxx/reversals/trr_xxxxxxxxxxxxx", ) - def test_treasury_receivedcredit_list(self, request_mock): - stripe.treasury.ReceivedCredit.list( - financial_account="fa_xxxxxxxxxxxxx", - limit=3, + def test_transfer_transferreversal_update(self, request_mock): + stripe.Transfer.modify_reversal( + "tr_xxxxxxxxxxxxx", + "trr_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, ) - request_mock.assert_requested("get", "/v1/treasury/received_credits") - - def test_treasury_receiveddebit_retrieve(self, request_mock): - stripe.treasury.ReceivedDebit.retrieve("rd_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/treasury/received_debits/rd_xxxxxxxxxxxxx", + "post", + "/v1/transfers/tr_xxxxxxxxxxxxx/reversals/trr_xxxxxxxxxxxxx", ) - def test_treasury_receiveddebit_list(self, request_mock): - stripe.treasury.ReceivedDebit.list( + def test_treasury_creditreversal_list(self, request_mock): + stripe.treasury.CreditReversal.list( financial_account="fa_xxxxxxxxxxxxx", limit=3, ) - request_mock.assert_requested("get", "/v1/treasury/received_debits") + request_mock.assert_requested("get", "/v1/treasury/credit_reversals") def test_treasury_creditreversal_create(self, request_mock): stripe.treasury.CreditReversal.create( @@ -2253,206 +2281,229 @@ def test_treasury_creditreversal_retrieve(self, request_mock): "/v1/treasury/credit_reversals/credrev_xxxxxxxxxxxxx", ) - def test_treasury_creditreversal_list(self, request_mock): - stripe.treasury.CreditReversal.list( + def test_treasury_debitreversal_list(self, request_mock): + stripe.treasury.DebitReversal.list( financial_account="fa_xxxxxxxxxxxxx", limit=3, ) - request_mock.assert_requested("get", "/v1/treasury/credit_reversals") + request_mock.assert_requested("get", "/v1/treasury/debit_reversals") def test_treasury_debitreversal_create(self, request_mock): stripe.treasury.DebitReversal.create(received_debit="rd_xxxxxxxxxxxxx") request_mock.assert_requested("post", "/v1/treasury/debit_reversals") - def test_treasury_debitreversal_retrieve(self, request_mock): - stripe.treasury.DebitReversal.retrieve("debrev_xxxxxxxxxxxxx") + def test_treasury_debitreversal_retrieve(self, request_mock): + stripe.treasury.DebitReversal.retrieve("debrev_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/treasury/debit_reversals/debrev_xxxxxxxxxxxxx", + ) + + def test_treasury_financialaccount_list(self, request_mock): + stripe.treasury.FinancialAccount.list(limit=3) + request_mock.assert_requested("get", "/v1/treasury/financial_accounts") + + def test_treasury_financialaccount_create(self, request_mock): + stripe.treasury.FinancialAccount.create( + supported_currencies=["usd"], + features={}, + ) + request_mock.assert_requested( + "post", "/v1/treasury/financial_accounts" + ) + + def test_treasury_financialaccount_retrieve(self, request_mock): + stripe.treasury.FinancialAccount.retrieve("fa_xxxxxxxxxxxxx") + request_mock.assert_requested( + "get", + "/v1/treasury/financial_accounts/fa_xxxxxxxxxxxxx", + ) + + def test_treasury_financialaccount_update(self, request_mock): + stripe.treasury.FinancialAccount.modify( + "fa_xxxxxxxxxxxxx", + metadata={"order_id": "6735"}, + ) + request_mock.assert_requested( + "post", + "/v1/treasury/financial_accounts/fa_xxxxxxxxxxxxx", + ) + + def test_treasury_financialaccount_retrieve_features(self, request_mock): + stripe.treasury.FinancialAccount.retrieve_features("fa_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/treasury/debit_reversals/debrev_xxxxxxxxxxxxx", + "/v1/treasury/financial_accounts/fa_xxxxxxxxxxxxx/features", ) - def test_treasury_debitreversal_list(self, request_mock): - stripe.treasury.DebitReversal.list( + def test_treasury_financialaccount_update_features(self, request_mock): + stripe.treasury.FinancialAccount.update_features( + "fa_xxxxxxxxxxxxx", + card_issuing={"requested": False}, + ) + request_mock.assert_requested( + "post", + "/v1/treasury/financial_accounts/fa_xxxxxxxxxxxxx/features", + ) + + def test_treasury_inboundtransfer_list(self, request_mock): + stripe.treasury.InboundTransfer.list( financial_account="fa_xxxxxxxxxxxxx", limit=3, ) - request_mock.assert_requested("get", "/v1/treasury/debit_reversals") + request_mock.assert_requested("get", "/v1/treasury/inbound_transfers") - def test_sku_create(self, request_mock): - stripe.SKU.create( - attributes={"size": "Medium", "gender": "Unisex"}, - price=1500, + def test_treasury_inboundtransfer_create(self, request_mock): + stripe.treasury.InboundTransfer.create( + financial_account="fa_xxxxxxxxxxxxx", + amount=10000, currency="usd", - inventory={"type": "finite", "quantity": 500}, - product="prod_xxxxxxxxxxxxx", + origin_payment_method="pm_xxxxxxxxxxxxx", + description="InboundTransfer from my bank account", ) - request_mock.assert_requested("post", "/v1/skus") - - def test_sku_retrieve(self, request_mock): - stripe.SKU.retrieve("sku_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/skus/sku_xxxxxxxxxxxxx") - - def test_sku_update(self, request_mock): - stripe.SKU.modify("sku_xxxxxxxxxxxxx", metadata={"order_id": "6735"}) - request_mock.assert_requested("post", "/v1/skus/sku_xxxxxxxxxxxxx") - - def test_sku_list(self, request_mock): - stripe.SKU.list(limit=3) - request_mock.assert_requested("get", "/v1/skus") - - def test_sku_delete(self, request_mock): - stripe.SKU.delete("sku_xxxxxxxxxxxxx") - request_mock.assert_requested("delete", "/v1/skus/sku_xxxxxxxxxxxxx") + request_mock.assert_requested("post", "/v1/treasury/inbound_transfers") - def test_sigma_scheduledqueryrun_retrieve(self, request_mock): - stripe.sigma.ScheduledQueryRun.retrieve("sqr_xxxxxxxxxxxxx") + def test_treasury_inboundtransfer_retrieve(self, request_mock): + stripe.treasury.InboundTransfer.retrieve("ibt_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/sigma/scheduled_query_runs/sqr_xxxxxxxxxxxxx", - ) - - def test_sigma_scheduledqueryrun_list(self, request_mock): - stripe.sigma.ScheduledQueryRun.list(limit=3) - request_mock.assert_requested("get", "/v1/sigma/scheduled_query_runs") - - def test_reporting_reportrun_create(self, request_mock): - stripe.reporting.ReportRun.create( - report_type="balance.summary.1", - parameters={ - "interval_start": 1522540800, - "interval_end": 1525132800, - }, + "/v1/treasury/inbound_transfers/ibt_xxxxxxxxxxxxx", ) - request_mock.assert_requested("post", "/v1/reporting/report_runs") - def test_reporting_reportrun_retrieve(self, request_mock): - stripe.reporting.ReportRun.retrieve("frr_xxxxxxxxxxxxx") + def test_treasury_inboundtransfer_cancel(self, request_mock): + stripe.treasury.InboundTransfer.cancel("ibt_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", - "/v1/reporting/report_runs/frr_xxxxxxxxxxxxx", + "post", + "/v1/treasury/inbound_transfers/ibt_xxxxxxxxxxxxx/cancel", ) - def test_reporting_reportrun_list(self, request_mock): - stripe.reporting.ReportRun.list(limit=3) - request_mock.assert_requested("get", "/v1/reporting/report_runs") - - def test_reporting_reporttype_retrieve(self, request_mock): - stripe.reporting.ReportType.retrieve("balance.summary.1") - request_mock.assert_requested( - "get", - "/v1/reporting/report_types/balance.summary.1", + def test_treasury_outboundpayment_list(self, request_mock): + stripe.treasury.OutboundPayment.list( + financial_account="fa_xxxxxxxxxxxxx", + limit=3, ) + request_mock.assert_requested("get", "/v1/treasury/outbound_payments") - def test_reporting_reporttype_list(self, request_mock): - stripe.reporting.ReportType.list() - request_mock.assert_requested("get", "/v1/reporting/report_types") + def test_treasury_outboundpayment_create(self, request_mock): + stripe.treasury.OutboundPayment.create( + financial_account="fa_xxxxxxxxxxxxx", + amount=10000, + currency="usd", + customer="cu_xxxxxxxxxxxxx", + destination_payment_method="pm_xxxxxxxxxxxxx", + description="OutboundPayment to a 3rd party", + ) + request_mock.assert_requested("post", "/v1/treasury/outbound_payments") - def test_financial_connections_account_retrieve2(self, request_mock): - stripe.financial_connections.Account.retrieve("fca_xxxxxxxxxxxxx") + def test_treasury_outboundpayment_retrieve(self, request_mock): + stripe.treasury.OutboundPayment.retrieve("obp_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/financial_connections/accounts/fca_xxxxxxxxxxxxx", + "/v1/treasury/outbound_payments/obp_xxxxxxxxxxxxx", ) - def test_financial_connections_account_list2(self, request_mock): - stripe.financial_connections.Account.list( - account_holder={"customer": "cus_xxxxxxxxxxxxx"}, - ) + def test_treasury_outboundpayment_cancel(self, request_mock): + stripe.treasury.OutboundPayment.cancel("obp_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", "/v1/financial_connections/accounts" + "post", + "/v1/treasury/outbound_payments/obp_xxxxxxxxxxxxx/cancel", ) - def test_financial_connections_account_list_owners2(self, request_mock): - stripe.financial_connections.Account.list_owners( - "fca_xxxxxxxxxxxxx", + def test_treasury_outboundtransfer_list(self, request_mock): + stripe.treasury.OutboundTransfer.list( + financial_account="fa_xxxxxxxxxxxxx", limit=3, - ownership="fcaowns_xxxxxxxxxxxxx", - ) - request_mock.assert_requested( - "get", - "/v1/financial_connections/accounts/fca_xxxxxxxxxxxxx/owners", ) + request_mock.assert_requested("get", "/v1/treasury/outbound_transfers") - def test_financial_connections_session_create2(self, request_mock): - stripe.financial_connections.Session.create( - account_holder={ - "type": "customer", - "customer": "cus_xxxxxxxxxxxxx", - }, - permissions=["payment_method", "balances"], - filters={"countries": ["US"]}, + def test_treasury_outboundtransfer_create(self, request_mock): + stripe.treasury.OutboundTransfer.create( + financial_account="fa_xxxxxxxxxxxxx", + destination_payment_method="pm_xxxxxxxxxxxxx", + amount=500, + currency="usd", + description="OutboundTransfer to my external bank account", ) request_mock.assert_requested( - "post", "/v1/financial_connections/sessions" + "post", "/v1/treasury/outbound_transfers" ) - def test_financial_connections_session_retrieve2(self, request_mock): - stripe.financial_connections.Session.retrieve("fcsess_xxxxxxxxxxxxx") + def test_treasury_outboundtransfer_retrieve(self, request_mock): + stripe.treasury.OutboundTransfer.retrieve("obt_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/financial_connections/sessions/fcsess_xxxxxxxxxxxxx", + "/v1/treasury/outbound_transfers/obt_xxxxxxxxxxxxx", ) - def test_source_retrieve2(self, request_mock): - stripe.Source.retrieve("src_xxxxxxxxxxxxx") - request_mock.assert_requested("get", "/v1/sources/src_xxxxxxxxxxxxx") - - def test_identity_verificationsession_create(self, request_mock): - stripe.identity.VerificationSession.create(type="document") + def test_treasury_outboundtransfer_cancel(self, request_mock): + stripe.treasury.OutboundTransfer.cancel("obt_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", "/v1/identity/verification_sessions" + "post", + "/v1/treasury/outbound_transfers/obt_xxxxxxxxxxxxx/cancel", ) - def test_identity_verificationsession_list(self, request_mock): - stripe.identity.VerificationSession.list(limit=3) - request_mock.assert_requested( - "get", "/v1/identity/verification_sessions" + def test_treasury_receivedcredit_list(self, request_mock): + stripe.treasury.ReceivedCredit.list( + financial_account="fa_xxxxxxxxxxxxx", + limit=3, ) + request_mock.assert_requested("get", "/v1/treasury/received_credits") - def test_identity_verificationsession_retrieve(self, request_mock): - stripe.identity.VerificationSession.retrieve("vs_xxxxxxxxxxxxx") + def test_treasury_receivedcredit_retrieve(self, request_mock): + stripe.treasury.ReceivedCredit.retrieve("rc_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/identity/verification_sessions/vs_xxxxxxxxxxxxx", + "/v1/treasury/received_credits/rc_xxxxxxxxxxxxx", ) - def test_identity_verificationsession_update(self, request_mock): - stripe.identity.VerificationSession.modify( - "vs_xxxxxxxxxxxxx", - type="id_number", - ) - request_mock.assert_requested( - "post", - "/v1/identity/verification_sessions/vs_xxxxxxxxxxxxx", + def test_treasury_receiveddebit_list(self, request_mock): + stripe.treasury.ReceivedDebit.list( + financial_account="fa_xxxxxxxxxxxxx", + limit=3, ) + request_mock.assert_requested("get", "/v1/treasury/received_debits") - def test_identity_verificationsession_cancel(self, request_mock): - stripe.identity.VerificationSession.cancel("vs_xxxxxxxxxxxxx") + def test_treasury_receiveddebit_retrieve(self, request_mock): + stripe.treasury.ReceivedDebit.retrieve("rd_xxxxxxxxxxxxx") request_mock.assert_requested( - "post", - "/v1/identity/verification_sessions/vs_xxxxxxxxxxxxx/cancel", + "get", + "/v1/treasury/received_debits/rd_xxxxxxxxxxxxx", ) - def test_identity_verificationsession_redact(self, request_mock): - stripe.identity.VerificationSession.redact("vs_xxxxxxxxxxxxx") + def test_treasury_transactionentry_list(self, request_mock): + stripe.treasury.TransactionEntry.list( + financial_account="fa_xxxxxxxxxxxxx", + limit=3, + ) request_mock.assert_requested( - "post", - "/v1/identity/verification_sessions/vs_xxxxxxxxxxxxx/redact", + "get", "/v1/treasury/transaction_entries" ) - def test_identity_verificationreport_retrieve(self, request_mock): - stripe.identity.VerificationReport.retrieve("vr_xxxxxxxxxxxxx") + def test_treasury_transactionentry_retrieve(self, request_mock): + stripe.treasury.TransactionEntry.retrieve("trxne_xxxxxxxxxxxxx") request_mock.assert_requested( "get", - "/v1/identity/verification_reports/vr_xxxxxxxxxxxxx", + "/v1/treasury/transaction_entries/trxne_xxxxxxxxxxxxx", ) - def test_identity_verificationreport_list(self, request_mock): - stripe.identity.VerificationReport.list(limit=3) + def test_treasury_transaction_list(self, request_mock): + stripe.treasury.Transaction.list( + financial_account="fa_xxxxxxxxxxxxx", + limit=3, + ) + request_mock.assert_requested("get", "/v1/treasury/transactions") + + def test_treasury_transaction_retrieve(self, request_mock): + stripe.treasury.Transaction.retrieve("trxn_xxxxxxxxxxxxx") request_mock.assert_requested( - "get", "/v1/identity/verification_reports" + "get", + "/v1/treasury/transactions/trxn_xxxxxxxxxxxxx", ) + def test_webhookendpoint_list(self, request_mock): + stripe.WebhookEndpoint.list(limit=3) + request_mock.assert_requested("get", "/v1/webhook_endpoints") + def test_webhookendpoint_create(self, request_mock): stripe.WebhookEndpoint.create( url="https://example.com/my/webhook/endpoint", @@ -2460,6 +2511,13 @@ def test_webhookendpoint_create(self, request_mock): ) request_mock.assert_requested("post", "/v1/webhook_endpoints") + def test_webhookendpoint_delete(self, request_mock): + stripe.WebhookEndpoint.delete("we_xxxxxxxxxxxxx") + request_mock.assert_requested( + "delete", + "/v1/webhook_endpoints/we_xxxxxxxxxxxxx", + ) + def test_webhookendpoint_retrieve(self, request_mock): stripe.WebhookEndpoint.retrieve("we_xxxxxxxxxxxxx") request_mock.assert_requested( @@ -2476,14 +2534,3 @@ def test_webhookendpoint_update(self, request_mock): "post", "/v1/webhook_endpoints/we_xxxxxxxxxxxxx", ) - - def test_webhookendpoint_list(self, request_mock): - stripe.WebhookEndpoint.list(limit=3) - request_mock.assert_requested("get", "/v1/webhook_endpoints") - - def test_webhookendpoint_delete(self, request_mock): - stripe.WebhookEndpoint.delete("we_xxxxxxxxxxxxx") - request_mock.assert_requested( - "delete", - "/v1/webhook_endpoints/we_xxxxxxxxxxxxx", - ) From d4044cb112a2ce83829c42bc188c99b1677f6d1c Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Fri, 1 Jul 2022 15:41:01 -0700 Subject: [PATCH 6/9] imports --- stripe/api_resources/abstract/createable_api_resource.py | 1 - .../abstract/nested_resource_class_methods.py | 1 - stripe/api_resources/apps/secret.py | 1 - stripe/api_resources/customer.py | 2 +- stripe/api_resources/issuing/card.py | 9 ++++----- stripe/api_resources/list_object.py | 2 +- stripe/api_resources/refund.py | 3 +-- stripe/api_resources/search_result_object.py | 2 +- stripe/api_resources/terminal/reader.py | 3 +-- stripe/api_resources/treasury/inbound_transfer.py | 7 +++---- stripe/api_resources/treasury/outbound_payment.py | 7 +++---- stripe/api_resources/treasury/outbound_transfer.py | 7 +++---- stripe/api_resources/treasury/received_credit.py | 1 - stripe/api_resources/treasury/received_debit.py | 1 - 14 files changed, 18 insertions(+), 29 deletions(-) diff --git a/stripe/api_resources/abstract/createable_api_resource.py b/stripe/api_resources/abstract/createable_api_resource.py index 3245489f0..112c79bee 100644 --- a/stripe/api_resources/abstract/createable_api_resource.py +++ b/stripe/api_resources/abstract/createable_api_resource.py @@ -1,7 +1,6 @@ from __future__ import absolute_import, division, print_function from stripe.api_resources.abstract.api_resource import APIResource -from stripe import api_requestor, util class CreateableAPIResource(APIResource): diff --git a/stripe/api_resources/abstract/nested_resource_class_methods.py b/stripe/api_resources/abstract/nested_resource_class_methods.py index 5a0b6edb1..2065c1ce5 100644 --- a/stripe/api_resources/abstract/nested_resource_class_methods.py +++ b/stripe/api_resources/abstract/nested_resource_class_methods.py @@ -1,6 +1,5 @@ from __future__ import absolute_import, division, print_function -from stripe import api_requestor, util from stripe.six.moves.urllib.parse import quote_plus from stripe.api_resources.abstract import APIResource diff --git a/stripe/api_resources/apps/secret.py b/stripe/api_resources/apps/secret.py index 79be0e649..0d77fbbd0 100644 --- a/stripe/api_resources/apps/secret.py +++ b/stripe/api_resources/apps/secret.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.abstract import ListableAPIResource diff --git a/stripe/api_resources/customer.py b/stripe/api_resources/customer.py index 0bddfd24e..40d5ff590 100644 --- a/stripe/api_resources/customer.py +++ b/stripe/api_resources/customer.py @@ -191,7 +191,7 @@ def fund_cash_balance(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/customers/{customer}/fund_cash_balance".format( - customer=util.sanitize_id(self.get("id")) + customer=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, diff --git a/stripe/api_resources/issuing/card.py b/stripe/api_resources/issuing/card.py index 174a1fb6e..12c1fb908 100644 --- a/stripe/api_resources/issuing/card.py +++ b/stripe/api_resources/issuing/card.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -45,7 +44,7 @@ def deliver_card(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/issuing/cards/{card}/shipping/deliver".format( - card=util.sanitize_id(self.get("id")) + card=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -76,7 +75,7 @@ def fail_card(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/issuing/cards/{card}/shipping/fail".format( - card=util.sanitize_id(self.get("id")) + card=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -107,7 +106,7 @@ def return_card(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/issuing/cards/{card}/shipping/return".format( - card=util.sanitize_id(self.get("id")) + card=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -138,7 +137,7 @@ def ship_card(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/issuing/cards/{card}/shipping/ship".format( - card=util.sanitize_id(self.get("id")) + card=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, diff --git a/stripe/api_resources/list_object.py b/stripe/api_resources/list_object.py index af8d0f800..b452d34d4 100644 --- a/stripe/api_resources/list_object.py +++ b/stripe/api_resources/list_object.py @@ -1,6 +1,6 @@ from __future__ import absolute_import, division, print_function -from stripe import api_requestor, six, util +from stripe import six, util from stripe.stripe_object import StripeObject from stripe.six.moves.urllib.parse import quote_plus diff --git a/stripe/api_resources/refund.py b/stripe/api_resources/refund.py index 62d5c4d8d..3df44fc3c 100644 --- a/stripe/api_resources/refund.py +++ b/stripe/api_resources/refund.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -54,7 +53,7 @@ def expire(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/refunds/{refund}/expire".format( - refund=util.sanitize_id(self.get("id")) + refund=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, diff --git a/stripe/api_resources/search_result_object.py b/stripe/api_resources/search_result_object.py index ea19e54fc..4a3563e25 100644 --- a/stripe/api_resources/search_result_object.py +++ b/stripe/api_resources/search_result_object.py @@ -1,6 +1,6 @@ from __future__ import absolute_import, division, print_function -from stripe import api_requestor, six, util +from stripe import six from stripe.stripe_object import StripeObject diff --git a/stripe/api_resources/terminal/reader.py b/stripe/api_resources/terminal/reader.py index b89a9e946..f4fd9389d 100644 --- a/stripe/api_resources/terminal/reader.py +++ b/stripe/api_resources/terminal/reader.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -91,7 +90,7 @@ def present_payment_method(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/terminal/readers/{reader}/present_payment_method".format( - reader=util.sanitize_id(self.get("id")) + reader=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, diff --git a/stripe/api_resources/treasury/inbound_transfer.py b/stripe/api_resources/treasury/inbound_transfer.py index 5068e53fa..674acd608 100644 --- a/stripe/api_resources/treasury/inbound_transfer.py +++ b/stripe/api_resources/treasury/inbound_transfer.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -51,7 +50,7 @@ def fail(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/inbound_transfers/{id}/fail".format( - id=util.sanitize_id(self.get("id")) + id=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -82,7 +81,7 @@ def return_inbound_transfer(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/inbound_transfers/{id}/return".format( - id=util.sanitize_id(self.get("id")) + id=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -113,7 +112,7 @@ def succeed(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/inbound_transfers/{id}/succeed".format( - id=util.sanitize_id(self.get("id")) + id=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, diff --git a/stripe/api_resources/treasury/outbound_payment.py b/stripe/api_resources/treasury/outbound_payment.py index 20fa200ef..2ff1ea404 100644 --- a/stripe/api_resources/treasury/outbound_payment.py +++ b/stripe/api_resources/treasury/outbound_payment.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -51,7 +50,7 @@ def fail(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_payments/{id}/fail".format( - id=util.sanitize_id(self.get("id")) + id=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -82,7 +81,7 @@ def post(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_payments/{id}/post".format( - id=util.sanitize_id(self.get("id")) + id=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -113,7 +112,7 @@ def return_outbound_payment(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_payments/{id}/return".format( - id=util.sanitize_id(self.get("id")) + id=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, diff --git a/stripe/api_resources/treasury/outbound_transfer.py b/stripe/api_resources/treasury/outbound_transfer.py index 1ac291215..62f71224d 100644 --- a/stripe/api_resources/treasury/outbound_transfer.py +++ b/stripe/api_resources/treasury/outbound_transfer.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import CreateableAPIResource @@ -51,7 +50,7 @@ def fail(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/fail".format( - outbound_transfer=util.sanitize_id(self.get("id")) + outbound_transfer=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -82,7 +81,7 @@ def post(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/post".format( - outbound_transfer=util.sanitize_id(self.get("id")) + outbound_transfer=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, @@ -113,7 +112,7 @@ def return_outbound_transfer(self, idempotency_key=None, **params): return self.resource._request( "post", "/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/return".format( - outbound_transfer=util.sanitize_id(self.get("id")) + outbound_transfer=util.sanitize_id(self.resource.get("id")) ), idempotency_key=idempotency_key, params=params, diff --git a/stripe/api_resources/treasury/received_credit.py b/stripe/api_resources/treasury/received_credit.py index 98044097e..18a950cfa 100644 --- a/stripe/api_resources/treasury/received_credit.py +++ b/stripe/api_resources/treasury/received_credit.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import ListableAPIResource diff --git a/stripe/api_resources/treasury/received_debit.py b/stripe/api_resources/treasury/received_debit.py index e82654947..b42c2e8eb 100644 --- a/stripe/api_resources/treasury/received_debit.py +++ b/stripe/api_resources/treasury/received_debit.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import ListableAPIResource From baccdff48229f815b7bf53624f81c8a260a45aa0 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Fri, 1 Jul 2022 15:51:20 -0700 Subject: [PATCH 7/9] passes --- stripe/api_resources/apps/secret.py | 1 - stripe/api_resources/credit_note.py | 1 - stripe/api_resources/invoice.py | 1 - stripe/api_resources/treasury/received_credit.py | 1 - stripe/api_resources/treasury/received_debit.py | 1 - 5 files changed, 5 deletions(-) diff --git a/stripe/api_resources/apps/secret.py b/stripe/api_resources/apps/secret.py index 0d77fbbd0..7e7df6a98 100644 --- a/stripe/api_resources/apps/secret.py +++ b/stripe/api_resources/apps/secret.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import util from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.abstract import ListableAPIResource diff --git a/stripe/api_resources/credit_note.py b/stripe/api_resources/credit_note.py index 971a75bce..156baba9d 100644 --- a/stripe/api_resources/credit_note.py +++ b/stripe/api_resources/credit_note.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.abstract import ListableAPIResource diff --git a/stripe/api_resources/invoice.py b/stripe/api_resources/invoice.py index 9f381e6d3..7aba87c27 100644 --- a/stripe/api_resources/invoice.py +++ b/stripe/api_resources/invoice.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import api_requestor from stripe import util from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.abstract import DeletableAPIResource diff --git a/stripe/api_resources/treasury/received_credit.py b/stripe/api_resources/treasury/received_credit.py index 18a950cfa..2cfb6a886 100644 --- a/stripe/api_resources/treasury/received_credit.py +++ b/stripe/api_resources/treasury/received_credit.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.abstract import test_helpers diff --git a/stripe/api_resources/treasury/received_debit.py b/stripe/api_resources/treasury/received_debit.py index b42c2e8eb..6187e1a38 100644 --- a/stripe/api_resources/treasury/received_debit.py +++ b/stripe/api_resources/treasury/received_debit.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import util from stripe.api_resources.abstract import APIResourceTestHelpers from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.abstract import test_helpers From 0c165843babe145ef70a7bddb669e21a0836e755 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Tue, 12 Jul 2022 09:08:53 -0700 Subject: [PATCH 8/9] fb --- stripe/api_resources/__init__.py | 1 - stripe/api_resources/abstract/api_resource.py | 4 +++ stripe/api_resources/issuer_fraud_record.py | 8 ----- stripe/api_resources/transfer.py | 32 ------------------- stripe/object_classes.py | 1 - stripe/stripe_object.py | 2 ++ 6 files changed, 6 insertions(+), 42 deletions(-) delete mode 100644 stripe/api_resources/issuer_fraud_record.py diff --git a/stripe/api_resources/__init__.py b/stripe/api_resources/__init__.py index 4fe8250a6..d019a1174 100644 --- a/stripe/api_resources/__init__.py +++ b/stripe/api_resources/__init__.py @@ -54,7 +54,6 @@ from stripe.api_resources.invoice import Invoice from stripe.api_resources.invoice_item import InvoiceItem from stripe.api_resources.invoice_line_item import InvoiceLineItem -from stripe.api_resources.issuer_fraud_record import IssuerFraudRecord from stripe.api_resources.line_item import LineItem from stripe.api_resources.login_link import LoginLink from stripe.api_resources.mandate import Mandate diff --git a/stripe/api_resources/abstract/api_resource.py b/stripe/api_resources/abstract/api_resource.py index 7188efef1..664ea1c93 100644 --- a/stripe/api_resources/abstract/api_resource.py +++ b/stripe/api_resources/abstract/api_resource.py @@ -43,6 +43,8 @@ def instance_url(self): extn = quote_plus(id) return "%s/%s" % (base, extn) + # The `method_` and `url_` arguments are suffixed with an underscore to + # avoid conflicting with actual request parameters in `params`. def _request( self, method_, @@ -72,6 +74,8 @@ def _request( else: return obj + # The `method_` and `url_` arguments are suffixed with an underscore to + # avoid conflicting with actual request parameters in `params`. def _request_and_refresh( self, method_, diff --git a/stripe/api_resources/issuer_fraud_record.py b/stripe/api_resources/issuer_fraud_record.py deleted file mode 100644 index a626f919e..000000000 --- a/stripe/api_resources/issuer_fraud_record.py +++ /dev/null @@ -1,8 +0,0 @@ -# File generated from our OpenAPI spec -from __future__ import absolute_import, division, print_function - -from stripe.api_resources.abstract import ListableAPIResource - - -class IssuerFraudRecord(ListableAPIResource): - OBJECT_NAME = "issuer_fraud_record" diff --git a/stripe/api_resources/transfer.py b/stripe/api_resources/transfer.py index 57d08473b..baa7ea95a 100644 --- a/stripe/api_resources/transfer.py +++ b/stripe/api_resources/transfer.py @@ -1,7 +1,6 @@ # File generated from our OpenAPI spec from __future__ import absolute_import, division, print_function -from stripe import util from stripe.api_resources.abstract import CreateableAPIResource from stripe.api_resources.abstract import ListableAPIResource from stripe.api_resources.abstract import UpdateableAPIResource @@ -18,34 +17,3 @@ class Transfer( UpdateableAPIResource, ): OBJECT_NAME = "transfer" - - @classmethod - def _cls_cancel( - cls, - transfer, - api_key=None, - stripe_version=None, - stripe_account=None, - **params - ): - return cls._static_request( - "post", - "/v1/transfers/{transfer}/cancel".format( - transfer=util.sanitize_id(transfer) - ), - api_key=api_key, - stripe_version=stripe_version, - stripe_account=stripe_account, - params=params, - ) - - @util.class_method_variant("_cls_cancel") - def cancel(self, idempotency_key=None, **params): - return self._request( - "post", - "/v1/transfers/{transfer}/cancel".format( - transfer=util.sanitize_id(self.get("id")) - ), - idempotency_key=idempotency_key, - params=params, - ) diff --git a/stripe/object_classes.py b/stripe/object_classes.py index e41194c7a..a8c3e78ff 100644 --- a/stripe/object_classes.py +++ b/stripe/object_classes.py @@ -51,7 +51,6 @@ api_resources.Invoice.OBJECT_NAME: api_resources.Invoice, api_resources.InvoiceItem.OBJECT_NAME: api_resources.InvoiceItem, api_resources.InvoiceLineItem.OBJECT_NAME: api_resources.InvoiceLineItem, - api_resources.IssuerFraudRecord.OBJECT_NAME: api_resources.IssuerFraudRecord, api_resources.issuing.Authorization.OBJECT_NAME: api_resources.issuing.Authorization, api_resources.issuing.Card.OBJECT_NAME: api_resources.issuing.Card, api_resources.issuing.CardDetails.OBJECT_NAME: api_resources.issuing.CardDetails, diff --git a/stripe/stripe_object.py b/stripe/stripe_object.py index 939cfcb60..a06cedd2e 100644 --- a/stripe/stripe_object.py +++ b/stripe/stripe_object.py @@ -237,6 +237,8 @@ def request(self, method, url, params=None, headers=None): self, method, url, headers=headers, params=params ) + # The `method_` and `url_` arguments are suffixed with an underscore to + # avoid conflicting with actual request parameters in `params`. def _request( self, method_, From 6fd8cb87c6137a518c7c89b2b192963801664a21 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Tue, 12 Jul 2022 09:16:35 -0700 Subject: [PATCH 9/9] remove obsolete tests --- .../api_resources/test_issuer_fraud_record.py | 21 ----------- tests/api_resources/test_transfer.py | 36 ------------------- 2 files changed, 57 deletions(-) delete mode 100644 tests/api_resources/test_issuer_fraud_record.py diff --git a/tests/api_resources/test_issuer_fraud_record.py b/tests/api_resources/test_issuer_fraud_record.py deleted file mode 100644 index c735794c3..000000000 --- a/tests/api_resources/test_issuer_fraud_record.py +++ /dev/null @@ -1,21 +0,0 @@ -from __future__ import absolute_import, division, print_function - -import stripe - - -TEST_RESOURCE_ID = "issfr_123" - - -class TestIssuerFraudRecord(object): - def test_is_listable(self, request_mock): - resources = stripe.IssuerFraudRecord.list() - request_mock.assert_requested("get", "/v1/issuer_fraud_records") - assert isinstance(resources.data, list) - assert isinstance(resources.data[0], stripe.IssuerFraudRecord) - - def test_is_retrievable(self, request_mock): - resource = stripe.IssuerFraudRecord.retrieve(TEST_RESOURCE_ID) - request_mock.assert_requested( - "get", "/v1/issuer_fraud_records/%s" % TEST_RESOURCE_ID - ) - assert isinstance(resource, stripe.IssuerFraudRecord) diff --git a/tests/api_resources/test_transfer.py b/tests/api_resources/test_transfer.py index 4bd56fdf0..095cf4b0a 100644 --- a/tests/api_resources/test_transfer.py +++ b/tests/api_resources/test_transfer.py @@ -45,42 +45,6 @@ def test_is_modifiable(self, request_mock): ) assert isinstance(resource, stripe.Transfer) - def test_can_cancel(self, request_mock): - # stripe-mock does not handle this anymore as it was on an old - # API version so we stub instead. - request_mock.stub_request( - "post", - "/v1/transfers/%s/cancel" % TEST_RESOURCE_ID, - { - "id": "%s" % TEST_RESOURCE_ID, - "object": "transfer", - "status": "canceled", - }, - ) - transfer = stripe.Transfer.construct_from( - {"id": "%s" % TEST_RESOURCE_ID, "object": "transfer"}, - stripe.api_key, - ) - transfer_canceled = transfer.cancel() - request_mock.assert_requested( - "post", "/v1/transfers/%s/cancel" % TEST_RESOURCE_ID - ) - assert isinstance(transfer_canceled, stripe.Transfer) - - def test_can_cancel_classmethod(self, request_mock): - # stripe-mock does not handle this anymore as it was on an old - # API version so we stub instead. - request_mock.stub_request( - "post", - "/v1/transfers/%s/cancel" % TEST_RESOURCE_ID, - {"id": "%s" % TEST_RESOURCE_ID, "object": "transfer"}, - ) - transfer = stripe.Transfer.cancel(TEST_RESOURCE_ID) - request_mock.assert_requested( - "post", "/v1/transfers/%s/cancel" % TEST_RESOURCE_ID - ) - assert isinstance(transfer, stripe.Transfer) - class TestTransferReversals: def test_is_listable(self, request_mock):