From d4f31e017731bd9f25b2c2ba56e17096a697cdb9 Mon Sep 17 00:00:00 2001 From: Remi Jannel Date: Wed, 17 Oct 2018 14:18:39 -0700 Subject: [PATCH] Add support for the Webhook Endpoint resource --- stripe/api_resources/__init__.py | 1 + stripe/api_resources/webhook_endpoint.py | 11 ++++ stripe/util.py | 2 + tests/api_resources/test_webhook_endpoint.py | 65 ++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 stripe/api_resources/webhook_endpoint.py create mode 100644 tests/api_resources/test_webhook_endpoint.py diff --git a/stripe/api_resources/__init__.py b/stripe/api_resources/__init__.py index d0b755e7f..307752a88 100644 --- a/stripe/api_resources/__init__.py +++ b/stripe/api_resources/__init__.py @@ -53,3 +53,4 @@ from stripe.api_resources.transfer import Transfer from stripe.api_resources.usage_record import UsageRecord from stripe.api_resources.usage_record_summary import UsageRecordSummary +from stripe.api_resources.webhook_endpoint import WebhookEndpoint diff --git a/stripe/api_resources/webhook_endpoint.py b/stripe/api_resources/webhook_endpoint.py new file mode 100644 index 000000000..4582b5b27 --- /dev/null +++ b/stripe/api_resources/webhook_endpoint.py @@ -0,0 +1,11 @@ +from __future__ import absolute_import, division, print_function + +from stripe.api_resources.abstract import CreateableAPIResource +from stripe.api_resources.abstract import DeletableAPIResource +from stripe.api_resources.abstract import UpdateableAPIResource +from stripe.api_resources.abstract import ListableAPIResource + + +class WebhookEndpoint(CreateableAPIResource, UpdateableAPIResource, + DeletableAPIResource, ListableAPIResource): + OBJECT_NAME = 'webhook_endpoint' diff --git a/stripe/util.py b/stripe/util.py index 9a02f1046..83a100a03 100644 --- a/stripe/util.py +++ b/stripe/util.py @@ -215,6 +215,8 @@ def load_object_classes(): api_resources.UsageRecord.OBJECT_NAME: api_resources.UsageRecord, api_resources.UsageRecordSummary.OBJECT_NAME: api_resources.UsageRecordSummary, + api_resources.WebhookEndpoint.OBJECT_NAME: + api_resources.WebhookEndpoint, api_resources.terminal.Location.OBJECT_NAME: api_resources.terminal.Location, api_resources.terminal.ConnectionToken.OBJECT_NAME: diff --git a/tests/api_resources/test_webhook_endpoint.py b/tests/api_resources/test_webhook_endpoint.py new file mode 100644 index 000000000..7256e9eef --- /dev/null +++ b/tests/api_resources/test_webhook_endpoint.py @@ -0,0 +1,65 @@ +from __future__ import absolute_import, division, print_function + +import stripe + + +TEST_RESOURCE_ID = 'we_123' + + +class TestWebhookEndpoint(object): + def test_is_listable(self, request_mock): + resources = stripe.WebhookEndpoint.list() + request_mock.assert_requested( + 'get', + '/v1/webhook_endpoints' + ) + assert isinstance(resources.data, list) + assert isinstance(resources.data[0], stripe.WebhookEndpoint) + + def test_is_retrievable(self, request_mock): + resource = stripe.WebhookEndpoint.retrieve(TEST_RESOURCE_ID) + request_mock.assert_requested( + 'get', + '/v1/webhook_endpoints/%s' % TEST_RESOURCE_ID + ) + assert isinstance(resource, stripe.WebhookEndpoint) + + def test_is_creatable(self, request_mock): + resource = stripe.WebhookEndpoint.create( + enabled_events=['charge.succeeded'], + url='https://stripe.com' + ) + request_mock.assert_requested( + 'post', + '/v1/webhook_endpoints' + ) + assert isinstance(resource, stripe.WebhookEndpoint) + + def test_is_saveable(self, request_mock): + resource = stripe.WebhookEndpoint.retrieve(TEST_RESOURCE_ID) + resource.enabled_events = ['charge.succeeded'] + resource.save() + request_mock.assert_requested( + 'post', + '/v1/webhook_endpoints/%s' % TEST_RESOURCE_ID + ) + + def test_is_modifiable(self, request_mock): + resource = stripe.WebhookEndpoint.modify( + TEST_RESOURCE_ID, + enabled_events=['charge.succeeded'] + ) + request_mock.assert_requested( + 'post', + '/v1/webhook_endpoints/%s' % TEST_RESOURCE_ID + ) + assert isinstance(resource, stripe.WebhookEndpoint) + + def test_is_deletable(self, request_mock): + resource = stripe.WebhookEndpoint.retrieve(TEST_RESOURCE_ID) + resource.delete() + request_mock.assert_requested( + 'delete', + '/v1/webhook_endpoints/%s' % TEST_RESOURCE_ID + ) + assert resource.deleted is True