def test_create_payload(self): self.mock_invoice.return_value = self.invoice self.mock_charge.return_value = self.charge self.mock_product.return_value = self.product self.mock_preview_invoice.return_value = self.invoice user_id = "user123" expected_payload = dict( event_id="evt_00000000000000", event_type="customer.subscription.created", uid=user_id, active=True, subscriptionId="sub_00000000000000", # required by FxA subscription_id="sub_00000000000000", productName="Project Guardian", productId="prod_test1", eventId="evt_00000000000000", # required by FxA eventCreatedAt=1326853478, # required by FxA messageCreatedAt=int(time.time()), # required by FxA invoice_id="in_test123", plan_amount=500, customer_id="cus_00000000000000", nickname="Project Guardian (Monthly)", created=1519435009, canceled_at=1519680008, cancel_at=None, cancel_at_period_end=False, currency="usd", current_period_start=1519435009, current_period_end=1521854209, next_invoice_date=1555354567, invoice_number="3B74E3D0-0001", brand="Visa", last4="0019", charge="ch_test1", ) payload = StripeCustomerSubscriptionCreated( self.subscription_created_event).create_payload(user_id) self.assertEqual(payload.keys(), expected_payload.keys()) if payload["messageCreatedAt"] != expected_payload["messageCreatedAt"]: self.assertAlmostEqual( payload["messageCreatedAt"], expected_payload["messageCreatedAt"], delta=10, ) expected_payload["messageCreatedAt"] = payload["messageCreatedAt"] self.assertEqual(payload, expected_payload)
def test_get_user_id_fetch_error(self): self.mock_customer.side_effect = InvalidRequestError( message="invalid data", param="bad data") with self.assertRaises(InvalidRequestError): StripeCustomerSubscriptionCreated( self.subscription_created_event).get_user_id("cust_123")
def test_create_payload_charge_fetch_error(self): self.mock_invoice.return_value = self.invoice self.mock_charge.side_effect = InvalidRequestError( message="invalid data", param="bad data") with self.assertRaises(InvalidRequestError): StripeCustomerSubscriptionCreated( self.subscription_created_event).create_payload("cust_123")
def test_get_user_id(self): self.mock_customer.return_value = self.customer expected_user_id = "user123" user_id = StripeCustomerSubscriptionCreated( self.subscription_created_event).get_user_id("cust_123") assert user_id == expected_user_id
def test_run(self): self.mock_customer.return_value = self.customer self.mock_invoice.return_value = self.invoice self.mock_preview_invoice.return_value = self.invoice self.mock_charge.return_value = self.charge self.mock_product.return_value = self.product self.mock_run_pipeline = None did_run = StripeCustomerSubscriptionCreated( self.subscription_created_event).run() assert did_run
def run(self) -> None: event_type = self.payload["type"] if event_type == "customer.subscription.created": StripeCustomerSubscriptionCreated(self.payload).run() elif event_type == "customer.subscription.updated": StripeCustomerSubscriptionUpdated(self.payload).run() elif event_type == "customer.subscription.deleted": StripeCustomerSubscriptionDeleted(self.payload).run() elif event_type == "customer.created": StripeCustomerCreated(self.payload).run() elif event_type == "customer.deleted": StripeCustomerDeleted(self.payload).run() elif event_type == "customer.source.expiring": StripeCustomerSourceExpiring(self.payload).run() elif event_type == "invoice.payment_failed": StripeInvoicePaymentFailed(self.payload).run() else: pass
def test_get_user_id_none_error(self): self.mock_customer.return_value = self.customer_missing_user with self.assertRaises(ClientError): StripeCustomerSubscriptionCreated( self.subscription_created_event).get_user_id("cust_123")
def test_get_user_id_deleted_cust(self): self.mock_customer.return_value = self.deleted_customer with self.assertRaises(ClientError): StripeCustomerSubscriptionCreated( self.subscription_created_event).get_user_id("cust_1")