From 8adc8e6ef54d99e19446ec659a59b73f4db28f2c Mon Sep 17 00:00:00 2001 From: Olivier Bellone Date: Sat, 22 Sep 2018 21:34:31 +0200 Subject: [PATCH] Only use files.stripe.com for file creation requests --- stripe/__init__.py | 2 +- stripe/api_resources/file.py | 6 +----- tests/api_resources/test_file.py | 13 ++++++++++++- tests/api_resources/test_file_upload.py | 13 ++++++++++++- tests/conftest.py | 3 --- tests/request_mock.py | 19 +++++++++++++++++++ 6 files changed, 45 insertions(+), 11 deletions(-) diff --git a/stripe/__init__.py b/stripe/__init__.py index e8824af59..24798808b 100644 --- a/stripe/__init__.py +++ b/stripe/__init__.py @@ -13,7 +13,7 @@ client_id = None api_base = 'https://api.stripe.com' connect_api_base = 'https://connect.stripe.com' -upload_api_base = 'https://uploads.stripe.com' +upload_api_base = 'https://files.stripe.com' api_version = None verify_ssl_certs = True proxy = None diff --git a/stripe/api_resources/file.py b/stripe/api_resources/file.py index d5968f587..f51d2c531 100644 --- a/stripe/api_resources/file.py +++ b/stripe/api_resources/file.py @@ -13,10 +13,6 @@ class File(ListableAPIResource): OBJECT_NAME = 'file' OBJECT_NAME_ALT = 'file_upload' - @classmethod - def api_base(cls): - return stripe.upload_api_base - @classmethod def class_url(cls): return '/v1/files' @@ -25,7 +21,7 @@ def class_url(cls): def create(cls, api_key=None, api_version=None, stripe_account=None, **params): requestor = api_requestor.APIRequestor( - api_key, api_base=cls.api_base(), api_version=api_version, + api_key, api_base=stripe.upload_api_base, api_version=api_version, account=stripe_account) url = cls.class_url() supplied_headers = { diff --git a/tests/api_resources/test_file.py b/tests/api_resources/test_file.py index 04a5a68cd..d969dbb39 100644 --- a/tests/api_resources/test_file.py +++ b/tests/api_resources/test_file.py @@ -2,6 +2,8 @@ import tempfile +import pytest + import stripe @@ -9,6 +11,14 @@ class TestFile(object): + @pytest.fixture + def setup_upload_api_base(self): + stripe.upload_api_base = stripe.api_base + stripe.api_base = None + yield + stripe.api_base = stripe.upload_api_base + stripe.upload_api_base = 'https://files.stripe.com' + def test_is_listable(self, request_mock): resources = stripe.File.list() request_mock.assert_requested( @@ -26,7 +36,7 @@ def test_is_retrievable(self, request_mock): ) assert isinstance(resource, stripe.File) - def test_is_creatable(self, request_mock): + def test_is_creatable(self, setup_upload_api_base, request_mock): stripe.multipart_data_generator.MultipartDataGenerator\ ._initialize_boundary = lambda self: 1234567890 test_file = tempfile.TemporaryFile() @@ -34,6 +44,7 @@ def test_is_creatable(self, request_mock): purpose='dispute_evidence', file=test_file ) + request_mock.assert_api_base(stripe.upload_api_base) request_mock.assert_requested( 'post', '/v1/files', diff --git a/tests/api_resources/test_file_upload.py b/tests/api_resources/test_file_upload.py index 495c5b611..6c7910e00 100644 --- a/tests/api_resources/test_file_upload.py +++ b/tests/api_resources/test_file_upload.py @@ -2,6 +2,8 @@ import tempfile +import pytest + import stripe @@ -9,6 +11,14 @@ class TestFileUpload(object): + @pytest.fixture + def setup_upload_api_base(self): + stripe.upload_api_base = stripe.api_base + stripe.api_base = None + yield + stripe.api_base = stripe.upload_api_base + stripe.upload_api_base = 'https://files.stripe.com' + def test_is_listable(self, request_mock): resources = stripe.FileUpload.list() request_mock.assert_requested( @@ -26,7 +36,7 @@ def test_is_retrievable(self, request_mock): ) assert isinstance(resource, stripe.FileUpload) - def test_is_creatable(self, request_mock): + def test_is_creatable(self, setup_upload_api_base, request_mock): stripe.multipart_data_generator.MultipartDataGenerator\ ._initialize_boundary = lambda self: 1234567890 test_file = tempfile.TemporaryFile() @@ -34,6 +44,7 @@ def test_is_creatable(self, request_mock): purpose='dispute_evidence', file=test_file ) + request_mock.assert_api_base(stripe.upload_api_base) request_mock.assert_requested( 'post', '/v1/files', diff --git a/tests/conftest.py b/tests/conftest.py index c36ad0fba..15de12aa7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -43,21 +43,18 @@ def setup_stripe(): 'api_key': stripe.api_key, 'client_id': stripe.client_id, 'default_http_client': stripe.default_http_client, - 'upload_api_base': stripe.upload_api_base, } http_client = stripe.http_client.new_default_http_client() stripe.api_base = 'http://localhost:%s' % MOCK_PORT stripe.api_key = 'sk_test_123' stripe.client_id = 'ca_123' stripe.default_http_client = http_client - stripe.upload_api_base = 'http://localhost:%s' % MOCK_PORT yield http_client.close() stripe.api_base = orig_attrs['api_base'] stripe.api_key = orig_attrs['api_key'] stripe.client_id = orig_attrs['client_id'] stripe.default_http_client = orig_attrs['default_http_client'] - stripe.upload_api_base = orig_attrs['upload_api_base'] @pytest.fixture diff --git a/tests/request_mock.py b/tests/request_mock.py index f9b426914..4f047555f 100644 --- a/tests/request_mock.py +++ b/tests/request_mock.py @@ -35,6 +35,25 @@ def stub_request(self, method, url, rbody={}, rcode=200, rheaders={}): self._stub_request_handler.register(method, url, rbody, rcode, rheaders) + def assert_api_base(self, expected_api_base): + # Note that this method only checks that an API base was provided + # as a keyword argument in APIRequestor's constructor, not as a + # positional argument. + + if 'api_base' not in self.constructor_patcher.call_args[1]: + msg = ("Expected APIRequestor to have been constructed with " + "api_base='%s'. No API base was provided." % + expected_api_base) + raise AssertionError(msg) + + actual_api_base = \ + self.constructor_patcher.call_args[1]['api_base'] + if actual_api_base != expected_api_base: + msg = ("Expected APIRequestor to have been constructed with " + "api_base='%s'. Constructed with api_base='%s' " + "instead." % (expected_api_base, actual_api_base)) + raise AssertionError(msg) + def assert_api_version(self, expected_api_version): # Note that this method only checks that an API version was provided # as a keyword argument in APIRequestor's constructor, not as a