def test_update_transfer(self, event_retrieve_mock, transfer_retrieve_mock): fake_event_created = deepcopy(FAKE_EVENT_TRANSFER_CREATED) fake_event_updated = deepcopy(fake_event_created) fake_event_updated.update({"id": "evt_000000000000000000000000"}) fake_event_updated.update({"type": "transfer.updated"}) fake_event_updated["data"]["object"]["amount"] = 3057 fake_event_updated["data"]["object"]["status"] = "fish" event_retrieve_mock.side_effect = [fake_event_created, fake_event_updated] transfer_retrieve_mock.side_effect = [ fake_event_created["data"]["object"], fake_event_updated["data"]["object"] ] # Create transfer created_event = Event.sync_from_stripe_data(fake_event_created) created_event.invoke_webhook_handlers() # Signal a transfer update updated_event = Event.sync_from_stripe_data(fake_event_updated) updated_event.invoke_webhook_handlers() transfer_instance = Transfer.objects.get(status="fish") self.assertEqual(2, transfer_retrieve_mock.call_count) # Test to string to ensure data was updated self.assertEqual("<amount={amount}, status={status}, stripe_id={stripe_id}>".format( amount=fake_event_updated["data"]["object"]["amount"] / decimal.Decimal("100"), status=fake_event_updated["data"]["object"]["status"], stripe_id=fake_event_updated["data"]["object"]["id"] ), str(transfer_instance))
def test_update_transfer(self, event_retrieve_mock, transfer_retrieve_mock): fake_event_created = deepcopy(FAKE_EVENT_TRANSFER_CREATED) fake_event_updated = deepcopy(fake_event_created) fake_event_updated.update({"id": "evt_000000000000000000000000"}) fake_event_updated.update({"type": "transfer.updated"}) fake_event_updated["data"]["object"]["amount"] = 3057 fake_event_updated["data"]["object"]["status"] = "fish" event_retrieve_mock.side_effect = [fake_event_created, fake_event_updated] transfer_retrieve_mock.side_effect = [ fake_event_created["data"]["object"], fake_event_updated["data"]["object"] ] # Create transfer created_event = Event.sync_from_stripe_data(fake_event_created) created_event.validate() created_event.process() # Signal a transfer update updated_event = Event.sync_from_stripe_data(fake_event_updated) updated_event.validate() updated_event.process() transfer_instance = Transfer.objects.get(status="fish") self.assertEqual(2, transfer_retrieve_mock.call_count) # Test to string to ensure data was updated self.assertEquals("<amount={amount}, status={status}, stripe_id={stripe_id}>".format( amount=fake_event_updated["data"]["object"]["amount"] / decimal.Decimal("100"), status=fake_event_updated["data"]["object"]["status"], stripe_id=fake_event_updated["data"]["object"]["id"] ), str(transfer_instance))
def test_subscription_schedule_released(self, customer_retrieve_mock, schedule_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_SUBSCRIPTION_SCHEDULE_UPDATED) fake_stripe_event["data"]["object"]["released_at"] = 1605058030 fake_stripe_event["data"]["object"]["status"] = "released" fake_stripe_event["data"]["previous_attributes"] = { "released_at": None, "status": "not_started", } schedule_retrieve_mock.return_value = fake_stripe_event["data"][ "object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() schedule = SubscriptionSchedule.objects.get( id=fake_stripe_event["data"]["object"]["id"]) assert schedule.status == "released" assert schedule.released_at is not None schedule_retrieve_mock.return_value = FAKE_EVENT_SUBSCRIPTION_SCHEDULE_RELEASED[ "data"]["object"] event = Event.sync_from_stripe_data( FAKE_EVENT_SUBSCRIPTION_SCHEDULE_RELEASED) event.invoke_webhook_handlers() schedule.refresh_from_db() assert schedule.status == "released" assert schedule.released_at is not None
def test_invoice_created(self, event_retrieve_mock, invoice_retrieve_mock, charge_retrieve_mock, customer_retrieve_mock, subscription_retrieve_mock, default_account_mock): default_account_mock.return_value = Account.objects.create() user = get_user_model().objects.create_user(username="******", email="*****@*****.**") FAKE_CUSTOMER.create_for_user(user) fake_stripe_event = deepcopy(FAKE_EVENT_INVOICE_CREATED) event_retrieve_mock.return_value = fake_stripe_event invoice_retrieve_mock.return_value = fake_stripe_event["data"][ "object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() invoice = Invoice.objects.get( stripe_id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual( invoice.amount_due, fake_stripe_event["data"]["object"]["amount_due"] / decimal.Decimal("100")) self.assertEqual(invoice.paid, fake_stripe_event["data"]["object"]["paid"])
def test_charge_created( self, subscription_retrieve_mock, product_retrieve_mock, invoice_retrieve_mock, event_retrieve_mock, paymentmethod_card_retrieve_mock, payment_intent_retrieve_mock, charge_retrieve_mock, balance_transaction_retrieve_mock, account_mock, ): FAKE_CUSTOMER.create_for_user(self.user) fake_stripe_event = deepcopy(FAKE_EVENT_CHARGE_SUCCEEDED) event_retrieve_mock.return_value = fake_stripe_event charge_retrieve_mock.return_value = fake_stripe_event["data"]["object"] account_mock.return_value = default_account() event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() charge = Charge.objects.get( id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual( charge.amount, fake_stripe_event["data"]["object"]["amount"] / decimal.Decimal("100"), ) self.assertEqual(charge.status, fake_stripe_event["data"]["object"]["status"])
def test_invoice_created_no_existing_customer( self, product_retrieve_mock, paymentmethod_card_retrieve_mock, event_retrieve_mock, invoice_retrieve_mock, payment_intent_retrieve_mock, charge_retrieve_mock, customer_retrieve_mock, subscription_retrieve_mock, balance_transaction_retrieve_mock, default_account_mock, ): default_account_mock.return_value = default_account() fake_stripe_event = deepcopy(FAKE_EVENT_INVOICE_CREATED) event_retrieve_mock.return_value = fake_stripe_event invoice_retrieve_mock.return_value = fake_stripe_event["data"][ "object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() self.assertEqual(Customer.objects.count(), 1) customer = Customer.objects.get() self.assertEqual(customer.subscriber, None)
def test_invoiceitem_created( self, product_retrieve_mock, event_retrieve_mock, invoiceitem_retrieve_mock, invoice_retrieve_mock, charge_retrieve_mock, subscription_retrieve_mock, balance_transaction_retrieve_mock, default_account_mock, ): default_account_mock.return_value = default_account() user = get_user_model().objects.create_user(username="******", email="*****@*****.**") FAKE_CUSTOMER_II.create_for_user(user) fake_stripe_event = deepcopy(FAKE_EVENT_INVOICEITEM_CREATED) event_retrieve_mock.return_value = fake_stripe_event invoiceitem_retrieve_mock.return_value = fake_stripe_event["data"][ "object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() invoiceitem = InvoiceItem.objects.get( id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual( invoiceitem.amount, fake_stripe_event["data"]["object"]["amount"] / decimal.Decimal("100"), )
def test_invoiceitem_created( self, product_retrieve_mock, event_retrieve_mock, invoiceitem_retrieve_mock, invoice_retrieve_mock, charge_retrieve_mock, subscription_retrieve_mock, balance_transaction_retrieve_mock, default_account_mock, ): default_account_mock.return_value = default_account() user = get_user_model().objects.create_user( username="******", email="*****@*****.**" ) FAKE_CUSTOMER_II.create_for_user(user) fake_stripe_event = deepcopy(FAKE_EVENT_INVOICEITEM_CREATED) event_retrieve_mock.return_value = fake_stripe_event invoiceitem_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() invoiceitem = InvoiceItem.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual( invoiceitem.amount, fake_stripe_event["data"]["object"]["amount"] / decimal.Decimal("100"), )
def test_account_deauthorized_event(self, event_retrieve_mock): fake_stripe_event = deepcopy( FAKE_EVENT_ACCOUNT_APPLICATION_DEAUTHORIZED) event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process()
def test_customer_discount_created(self, event_retrieve_mock, coupon_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_DISCOUNT_CREATED) event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() self.assertIsNotNone(event.customer) self.assertEqual(event.customer.id, FAKE_CUSTOMER["id"]) self.assertIsNotNone(event.customer.coupon)
def test_plan_updated_request_object(self, event_retrieve_mock, plan_retrieve_mock): plan_retrieve_mock.return_value = FAKE_EVENT_PLAN_REQUEST_IS_OBJECT["data"]["object"] event = Event.sync_from_stripe_data(FAKE_EVENT_PLAN_REQUEST_IS_OBJECT) event.invoke_webhook_handlers() plan = Plan.objects.get(id=FAKE_EVENT_PLAN_REQUEST_IS_OBJECT["data"]["object"]["id"]) self.assertEqual(plan.name, FAKE_EVENT_PLAN_REQUEST_IS_OBJECT["data"]["object"]["name"])
def test_customer_discount_created(self, event_retrieve_mock, coupon_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_DISCOUNT_CREATED) event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() self.assertIsNotNone(event.customer) self.assertEqual(event.customer.id, FAKE_CUSTOMER["id"]) self.assertIsNotNone(event.customer.coupon)
def _create_event(self, event_data, event_retrieve_mock, patch_data=None): event_data = deepcopy(event_data) if patch_data: event_data.update(patch_data) event_retrieve_mock.return_value = event_data event = Event.sync_from_stripe_data(event_data) return event
def test_transfer_created(self, event_retrieve_mock, transfer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_TRANSFER_CREATED) event_retrieve_mock.return_value = fake_stripe_event transfer_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() transfer = Transfer.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual(transfer.amount, fake_stripe_event["data"]["object"]["amount"] / decimal.Decimal("100"))
def _create_event(self, event_data, event_retrieve_mock, patch_data=None): event_data = deepcopy(event_data) if patch_data: event_data.update(patch_data) event_retrieve_mock.return_value = event_data event = Event.sync_from_stripe_data(event_data) return event
def test_customer_bogus_event_type(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_CREATED) fake_stripe_event["data"]["object"]["customer"] = fake_stripe_event["data"]["object"]["id"] fake_stripe_event["type"] = "customer.praised" event_retrieve_mock.return_value = fake_stripe_event customer_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers()
def test_customer_created(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_CREATED) event_retrieve_mock.return_value = fake_stripe_event event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() customer = Customer.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual(customer.account_balance, fake_stripe_event["data"]["object"]["account_balance"]) self.assertEqual(customer.currency, fake_stripe_event["data"]["object"]["currency"])
def test_plan_created(self, event_retrieve_mock, plan_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_PLAN_CREATED) event_retrieve_mock.return_value = fake_stripe_event plan_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() plan = Plan.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual(plan.name, fake_stripe_event["data"]["object"]["name"])
def test_customer_created_no_customer_exists(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_CREATED) event_retrieve_mock.return_value = fake_stripe_event customer_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() self.assertFalse(Customer.objects.filter(stripe_id=fake_stripe_event["data"]["object"]["id"]).exists())
def test_customer_discount_created(self, event_retrieve_mock, coupon_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_DISCOUNT_CREATED) event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() self.assertTrue(event.processed) self.assertIsNotNone(event.customer) self.assertEqual(event.customer.stripe_id, FAKE_CUSTOMER["id"]) self.assertIsNotNone(event.customer.coupon)
def test_customer_card_created(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SOURCE_CREATED) event_retrieve_mock.return_value = fake_stripe_event event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() card = Card.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertIn(card, self.customer.legacy_cards.all()) self.assertEqual(card.brand, fake_stripe_event["data"]["object"]["brand"]) self.assertEqual(card.last4, fake_stripe_event["data"]["object"]["last4"])
def test_customer_card_created(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SOURCE_CREATED) event_retrieve_mock.return_value = fake_stripe_event event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() card = Card.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertIn(card, self.customer.legacy_cards.all()) self.assertEqual(card.brand, fake_stripe_event["data"]["object"]["brand"]) self.assertEqual(card.last4, fake_stripe_event["data"]["object"]["last4"])
def test_customer_subscription_created(self, event_retrieve_mock, subscription_retrieve_mock, plan_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SUBSCRIPTION_CREATED) event_retrieve_mock.return_value = fake_stripe_event event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() subscription = Subscription.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertIn(subscription, self.customer.subscriptions.all()) self.assertEqual(subscription.status, fake_stripe_event["data"]["object"]["status"]) self.assertEqual(subscription.quantity, fake_stripe_event["data"]["object"]["quantity"])
def test_customer_bogus_event_type(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_CREATED) fake_stripe_event["data"]["object"]["customer"] = fake_stripe_event["data"][ "object" ]["id"] fake_stripe_event["type"] = "customer.praised" event_retrieve_mock.return_value = fake_stripe_event customer_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers()
def test_plan_updated_request_object( self, product_retrieve_mock, event_retrieve_mock, plan_retrieve_mock ): plan_retrieve_mock.return_value = FAKE_EVENT_PLAN_REQUEST_IS_OBJECT["data"]["object"] event = Event.sync_from_stripe_data(FAKE_EVENT_PLAN_REQUEST_IS_OBJECT) event.invoke_webhook_handlers() plan = Plan.objects.get(id=FAKE_EVENT_PLAN_REQUEST_IS_OBJECT["data"]["object"]["id"]) self.assertEqual( plan.nickname, FAKE_EVENT_PLAN_REQUEST_IS_OBJECT["data"]["object"]["nickname"] )
def test_plan_created( self, product_retrieve_mock, event_retrieve_mock, plan_retrieve_mock ): fake_stripe_event = deepcopy(FAKE_EVENT_PLAN_CREATED) event_retrieve_mock.return_value = fake_stripe_event plan_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() plan = Plan.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual(plan.nickname, fake_stripe_event["data"]["object"]["nickname"])
def test_customer_created(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_CREATED) event_retrieve_mock.return_value = fake_stripe_event event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() customer = Customer.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual( customer.account_balance, fake_stripe_event["data"]["object"]["account_balance"] ) self.assertEqual(customer.currency, fake_stripe_event["data"]["object"]["currency"])
def test_price_created(self, product_retrieve_mock, event_retrieve_mock, price_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_PRICE_CREATED) event_retrieve_mock.return_value = fake_stripe_event price_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() price = Price.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual(price.nickname, fake_stripe_event["data"]["object"]["nickname"])
def test_customer_unknown_source_created(self, event_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SOURCE_CREATED) fake_stripe_event["data"]["object"]["object"] = "unknown" fake_stripe_event["data"]["object"]["id"] = "card_xxx_test_customer_unk_source_created" event_retrieve_mock.return_value = fake_stripe_event FAKE_CUSTOMER.create_for_user(self.user) event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() self.assertFalse(Card.objects.filter(id=fake_stripe_event["data"]["object"]["id"]).exists())
def test_customer_unknown_source_created(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SOURCE_CREATED) fake_stripe_event["data"]["object"]["object"] = "unknown" event_retrieve_mock.return_value = fake_stripe_event Customer.objects.create(subscriber=self.user, stripe_id=FAKE_CUSTOMER["id"], livemode=False) event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() self.assertFalse(Card.objects.filter(stripe_id=fake_stripe_event["data"]["object"]["id"]).exists())
def test_transfer_created(self, event_retrieve_mock, transfer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_TRANSFER_CREATED) event_retrieve_mock.return_value = fake_stripe_event transfer_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() transfer = Transfer.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual( transfer.amount, fake_stripe_event["data"]["object"]["amount"] / decimal.Decimal("100"), )
def test_transfer_created(self, event_retrieve_mock, transfer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_TRANSFER_CREATED) event_retrieve_mock.return_value = fake_stripe_event transfer_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() transfer = Transfer.objects.get(stripe_id=fake_stripe_event["data"]["object"]["id"]) self.assertEquals(transfer.amount, fake_stripe_event["data"]["object"]["amount"] / decimal.Decimal("100")) self.assertEquals(transfer.status, fake_stripe_event["data"]["object"]["status"])
def test_subscription_schedule_created(self, customer_retrieve_mock, schedule_retrieve_mock): event = Event.sync_from_stripe_data( FAKE_EVENT_SUBSCRIPTION_SCHEDULE_CREATED) event.invoke_webhook_handlers() schedule = SubscriptionSchedule.objects.get( id=FAKE_EVENT_SUBSCRIPTION_SCHEDULE_CREATED["data"]["object"] ["id"]) assert (schedule.id == FAKE_EVENT_SUBSCRIPTION_SCHEDULE_CREATED["data"] ["object"]["id"]) assert schedule.status == "not_started"
def test_payment_method_attached(self, event_retrieve_mock, payment_method_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_PAYMENT_METHOD_ATTACHED) event_retrieve_mock.return_value = fake_stripe_event payment_method_retrieve_mock.return_value = fake_stripe_event["data"][ "object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() payment_method = PaymentMethod.objects.get( id=fake_stripe_event["data"]["object"]["id"]) self.assert_fks(payment_method, expected_blank_fks={"djstripe.Customer.coupon"})
def test_customer_created(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_CREATED) event_retrieve_mock.return_value = fake_stripe_event customer_retrieve_mock.return_value = fake_stripe_event["data"]["object"] Customer.objects.create(subscriber=self.user, stripe_id=FAKE_CUSTOMER["id"], livemode=False) event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() customer = Customer.objects.get(stripe_id=fake_stripe_event["data"]["object"]["id"]) self.assertEquals(customer.account_balance, fake_stripe_event["data"]["object"]["account_balance"]) self.assertEquals(customer.currency, fake_stripe_event["data"]["object"]["currency"])
def test_customer_card_created(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SOURCE_CREATED) event_retrieve_mock.return_value = fake_stripe_event customer = Customer.objects.create(subscriber=self.user, stripe_id=FAKE_CUSTOMER["id"], livemode=False) event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() card = Card.objects.get(stripe_id=fake_stripe_event["data"]["object"]["id"]) self.assertIn(card, customer.sources.all()) self.assertEqual(card.brand, fake_stripe_event["data"]["object"]["brand"]) self.assertEqual(card.last4, fake_stripe_event["data"]["object"]["last4"])
def test_customer_subscription_created(self, event_retrieve_mock, customer_retrieve_mock, subscription_retrieve_mock, plan_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SUBSCRIPTION_CREATED) event_retrieve_mock.return_value = fake_stripe_event customer = Customer.objects.create(subscriber=self.user, stripe_id=FAKE_CUSTOMER["id"], livemode=False) event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() subscription = Subscription.objects.get(stripe_id=fake_stripe_event["data"]["object"]["id"]) self.assertIn(subscription, customer.subscriptions.all()) self.assertEqual(subscription.status, fake_stripe_event["data"]["object"]["status"]) self.assertEqual(subscription.quantity, fake_stripe_event["data"]["object"]["quantity"])
def test_charge_created(self, event_retrieve_mock, charge_retrieve_mock, customer_retrieve_mock, account_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CHARGE_SUCCEEDED) event_retrieve_mock.return_value = fake_stripe_event charge_retrieve_mock.return_value = fake_stripe_event["data"]["object"] account_mock.return_value = Account.objects.create() Customer.objects.create(subscriber=self.user, stripe_id=FAKE_CUSTOMER["id"], livemode=False) event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() charge = Charge.objects.get(stripe_id=fake_stripe_event["data"]["object"]["id"]) self.assertEquals(charge.amount, fake_stripe_event["data"]["object"]["amount"] / decimal.Decimal("100")) self.assertEquals(charge.status, fake_stripe_event["data"]["object"]["status"])
def test_customer_unknown_source_created(self, event_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SOURCE_CREATED) fake_stripe_event["data"]["object"]["object"] = "unknown" fake_stripe_event["data"]["object"][ "id" ] = "card_xxx_test_customer_unk_source_created" event_retrieve_mock.return_value = fake_stripe_event FAKE_CUSTOMER.create_for_user(self.user) event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() self.assertFalse( Card.objects.filter(id=fake_stripe_event["data"]["object"]["id"]).exists() )
def test_customer_bogus_event_type(self, event_retrieve_mock, customer_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_CREATED) fake_stripe_event["data"]["object"]["customer"] = fake_stripe_event["data"]["object"]["id"] fake_stripe_event["type"] = "customer.praised" event_retrieve_mock.return_value = fake_stripe_event customer_retrieve_mock.return_value = fake_stripe_event["data"]["object"] Customer.objects.create(subscriber=self.user, stripe_id=FAKE_CUSTOMER["id"], livemode=False) event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() customer = Customer.objects.get(stripe_id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual(None, customer.account_balance)
def test_invoice_created_no_existing_customer(self, event_retrieve_mock, invoice_retrieve_mock, charge_retrieve_mock, customer_retrieve_mock, subscription_retrieve_mock, default_account_mock): default_account_mock.return_value = Account.objects.create() fake_stripe_event = deepcopy(FAKE_EVENT_INVOICE_CREATED) event_retrieve_mock.return_value = fake_stripe_event invoice_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.validate() event.process() self.assertEquals(Customer.objects.count(), 1) customer = Customer.objects.get() self.assertEquals(customer.subscriber, None)
def test_customer_subscription_created( self, event_retrieve_mock, product_retrieve_mock, subscription_retrieve_mock, plan_retrieve_mock, ): fake_stripe_event = deepcopy(FAKE_EVENT_CUSTOMER_SUBSCRIPTION_CREATED) event_retrieve_mock.return_value = fake_stripe_event event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() subscription = Subscription.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertIn(subscription, self.customer.subscriptions.all()) self.assertEqual(subscription.status, fake_stripe_event["data"]["object"]["status"]) self.assertEqual( subscription.quantity, fake_stripe_event["data"]["object"]["quantity"] )
def test_invoice_created_no_existing_customer( self, product_retrieve_mock, event_retrieve_mock, invoice_retrieve_mock, charge_retrieve_mock, customer_retrieve_mock, subscription_retrieve_mock, balance_transaction_retrieve_mock, default_account_mock, ): default_account_mock.return_value = default_account() fake_stripe_event = deepcopy(FAKE_EVENT_INVOICE_CREATED) event_retrieve_mock.return_value = fake_stripe_event invoice_retrieve_mock.return_value = fake_stripe_event["data"]["object"] event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() self.assertEqual(Customer.objects.count(), 1) customer = Customer.objects.get() self.assertEqual(customer.subscriber, None)
def test_charge_created( self, subscription_retrieve_mock, product_retrieve_mock, invoice_retrieve_mock, event_retrieve_mock, charge_retrieve_mock, balance_transaction_retrieve_mock, account_mock, ): FAKE_CUSTOMER.create_for_user(self.user) fake_stripe_event = deepcopy(FAKE_EVENT_CHARGE_SUCCEEDED) event_retrieve_mock.return_value = fake_stripe_event charge_retrieve_mock.return_value = fake_stripe_event["data"]["object"] account_mock.return_value = default_account() event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() charge = Charge.objects.get(id=fake_stripe_event["data"]["object"]["id"]) self.assertEqual( charge.amount, fake_stripe_event["data"]["object"]["amount"] / decimal.Decimal("100") ) self.assertEqual(charge.status, fake_stripe_event["data"]["object"]["status"])
def test_dispute_created(self, event_retrieve_mock, dispute_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_DISPUTE_CREATED) event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers() dispute = Dispute.objects.get() self.assertEqual(dispute.id, FAKE_DISPUTE["id"])
def _create_event(self, event_data, event_retrieve_mock): event_data = deepcopy(event_data) event_retrieve_mock.return_value = event_data event = Event.sync_from_stripe_data(event_data) return event
def test_account_deauthorized_event(self, event_retrieve_mock): fake_stripe_event = deepcopy(FAKE_EVENT_ACCOUNT_APPLICATION_DEAUTHORIZED) event = Event.sync_from_stripe_data(fake_stripe_event) event.invoke_webhook_handlers()