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))
Exemple #2
0
    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))
Exemple #3
0
    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"])
Exemple #5
0
    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"])
Exemple #6
0
    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)
Exemple #7
0
    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"),
        )
Exemple #8
0
	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()
Exemple #10
0
    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)
Exemple #11
0
    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"])
Exemple #12
0
	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)
Exemple #13
0
    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
Exemple #14
0
    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"))
Exemple #15
0
	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
Exemple #16
0
    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()
Exemple #17
0
    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"])
Exemple #18
0
    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"])
Exemple #19
0
    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)
Exemple #21
0
	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"])
Exemple #22
0
    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"])
Exemple #23
0
    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"])
Exemple #24
0
	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()
Exemple #25
0
	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"]
		)
Exemple #26
0
	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"])
Exemple #27
0
	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"])
Exemple #28
0
    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"])
Exemple #29
0
    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())
Exemple #30
0
    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())
Exemple #31
0
	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"),
		)
Exemple #32
0
    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"])
Exemple #33
0
    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"})
Exemple #35
0
    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"])
Exemple #36
0
    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"])
Exemple #37
0
    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"])
Exemple #38
0
    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"])
Exemple #39
0
	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()
		)
Exemple #40
0
    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)
Exemple #41
0
    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)
Exemple #42
0
	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"]
		)
Exemple #43
0
	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)
Exemple #44
0
	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"])
Exemple #45
0
	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"])
Exemple #46
0
 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
Exemple #47
0
	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()