2016-12-03 18:51:33 +01:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
2017-02-26 09:10:14 +01:00
|
|
|
import mock
|
|
|
|
|
2017-11-16 00:43:10 +01:00
|
|
|
from zerver.lib.test_classes import WebhookTestCase
|
|
|
|
|
2016-12-03 18:51:33 +01:00
|
|
|
class StripeHookTests(WebhookTestCase):
|
|
|
|
STREAM_NAME = 'test'
|
2018-03-16 22:53:50 +01:00
|
|
|
URL_TEMPLATE = "/api/v1/external/stripe?&api_key={api_key}&stream={stream}"
|
2016-12-03 18:51:33 +01:00
|
|
|
FIXTURE_DIR_NAME = 'stripe'
|
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_charge_dispute_closed(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"disputes"
|
|
|
|
expected_message = u"[Dispute](https://dashboard.stripe.com/disputes/dp_00000000000000) closed. Current status: won."
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('charge_dispute_closed', expected_topic, expected_message,
|
2016-12-03 18:51:33 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_charge_dispute_created(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"disputes"
|
|
|
|
expected_message = u"[Dispute](https://dashboard.stripe.com/disputes/dp_00000000000000) created. Current status: needs response."
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('charge_dispute_created', expected_topic, expected_message,
|
2016-12-11 14:30:45 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_charge_failed(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"charges"
|
|
|
|
expected_message = u"[Charge](https://dashboard.stripe.com/charges/ch_00000000000000) for 1.00 AUD failed"
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('charge_failed', expected_topic, expected_message,
|
2016-12-11 14:30:45 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_charge_succeeded(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"charges"
|
|
|
|
expected_message = u"[Charge](https://dashboard.stripe.com/charges/ch_00000000000000) for 1.00 AUD succeeded"
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('charge_succeeded', expected_topic, expected_message,
|
2016-12-11 14:30:45 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_customer_created(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"cus_00000000000000"
|
|
|
|
expected_message = u"[Customer](https://dashboard.stripe.com/customers/cus_00000000000000) created"
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('customer_created', expected_topic, expected_message,
|
2016-12-11 14:30:45 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2018-11-21 01:39:37 +01:00
|
|
|
def test_customer_created_email(self) -> None:
|
|
|
|
expected_topic = u"cus_00000000000000"
|
|
|
|
expected_message = u"[Customer](https://dashboard.stripe.com/customers/cus_00000000000000) created\nEmail: example@abc.com"
|
|
|
|
self.send_and_test_stream_message('customer_created_email', expected_topic, expected_message,
|
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2018-11-21 01:39:37 +01:00
|
|
|
def test_customer_deleted(self) -> None:
|
|
|
|
expected_topic = u"cus_00000000000000"
|
|
|
|
expected_message = u"[Customer](https://dashboard.stripe.com/customers/cus_00000000000000) deleted"
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('customer_deleted', expected_topic, expected_message,
|
2016-12-11 14:30:45 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_customer_subscription_created(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"cus_00000000000000"
|
|
|
|
expected_message = u"""\
|
|
|
|
[Subscription](https://dashboard.stripe.com/subscriptions/sub_00000000000000) created
|
|
|
|
Plan: [Gold Special](https://dashboard.stripe.com/plans/gold_00000000000000)
|
|
|
|
Quantity: 1"""
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('customer_subscription_created', expected_topic, expected_message,
|
2016-12-11 14:30:45 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_customer_subscription_deleted(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"cus_00000000000000"
|
|
|
|
expected_message = u"[Subscription](https://dashboard.stripe.com/subscriptions/sub_00000000000000) deleted"
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('customer_subscription_deleted', expected_topic, expected_message,
|
2016-12-11 14:30:45 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_customer_subscription_trial_will_end(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"cus_00000000000000"
|
|
|
|
expected_message = u"[Subscription](https://dashboard.stripe.com/subscriptions/sub_00000000000000) trial will end in 3 days"
|
2017-02-26 09:10:14 +01:00
|
|
|
# 3 days before the end of the trial, plus a little bit to make sure the rounding is working
|
|
|
|
with mock.patch('time.time', return_value=1480892861 - 3*3600*24 + 100):
|
|
|
|
# use fixture named stripe_customer_subscription_trial_will_end
|
|
|
|
self.send_and_test_stream_message('customer_subscription_trial_will_end',
|
2018-11-09 20:33:58 +01:00
|
|
|
expected_topic, expected_message,
|
2017-02-26 09:10:14 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|
2016-12-03 18:51:33 +01:00
|
|
|
|
2018-11-28 22:11:08 +01:00
|
|
|
def test_customer_discount_created(self) -> None:
|
|
|
|
expected_topic = u"cus_00000000000000"
|
|
|
|
expected_message = u"Discount created ([25.5% off](https://dashboard.stripe.com/coupons/25_00000000000000))."
|
|
|
|
self.send_and_test_stream_message('customer_discount_created', expected_topic, expected_message,
|
|
|
|
content_type="application/x-www-form-urlencoded")
|
|
|
|
|
2017-11-04 07:47:46 +01:00
|
|
|
def test_invoice_payment_failed(self) -> None:
|
2018-11-21 01:39:37 +01:00
|
|
|
expected_topic = u"cus_00000000000000"
|
|
|
|
expected_message = u"[Invoice](https://dashboard.stripe.com/invoices/in_00000000000000) payment failed"
|
2018-11-09 20:33:58 +01:00
|
|
|
self.send_and_test_stream_message('invoice_payment_failed', expected_topic, expected_message,
|
2016-12-11 14:30:45 +01:00
|
|
|
content_type="application/x-www-form-urlencoded")
|