mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	webhooks/stripe: Fix the invoice_created event.
The previous code for this event was using a key that's not actually a part of the payload. So here we simple remove the usage of that key and add a (previously missing) test for this event. Signed-off-by: Hemanth V. Alluri <hdrive1999@gmail.com>
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							7dbdfe9a97
						
					
				
				
					commit
					9a9c1e0794
				
			
							
								
								
									
										140
									
								
								zerver/webhooks/stripe/fixtures/invoice_created.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								zerver/webhooks/stripe/fixtures/invoice_created.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,140 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "id": "evt_1GpmuvHLwdCOCoR7Q22hCa2N",
 | 
				
			||||||
 | 
					    "object": "event",
 | 
				
			||||||
 | 
					    "api_version": "2020-03-02",
 | 
				
			||||||
 | 
					    "created": 1591153524,
 | 
				
			||||||
 | 
					    "data": {
 | 
				
			||||||
 | 
					        "object": {
 | 
				
			||||||
 | 
					            "id": "in_1GpmuuHLwdCOCoR7ghzQDQLW",
 | 
				
			||||||
 | 
					            "object": "invoice",
 | 
				
			||||||
 | 
					            "account_country": "IN",
 | 
				
			||||||
 | 
					            "account_name": null,
 | 
				
			||||||
 | 
					            "amount_due": 0,
 | 
				
			||||||
 | 
					            "amount_paid": 0,
 | 
				
			||||||
 | 
					            "amount_remaining": 0,
 | 
				
			||||||
 | 
					            "application_fee_amount": null,
 | 
				
			||||||
 | 
					            "attempt_count": 0,
 | 
				
			||||||
 | 
					            "attempted": false,
 | 
				
			||||||
 | 
					            "auto_advance": false,
 | 
				
			||||||
 | 
					            "billing_reason": "manual",
 | 
				
			||||||
 | 
					            "charge": null,
 | 
				
			||||||
 | 
					            "collection_method": "send_invoice",
 | 
				
			||||||
 | 
					            "created": 1591153524,
 | 
				
			||||||
 | 
					            "currency": "inr",
 | 
				
			||||||
 | 
					            "custom_fields": null,
 | 
				
			||||||
 | 
					            "customer": "cus_HH97asvHvaYQYp",
 | 
				
			||||||
 | 
					            "customer_address": null,
 | 
				
			||||||
 | 
					            "customer_email": "zenitsu_agatsuma@mail.example.com",
 | 
				
			||||||
 | 
					            "customer_name": "Zenitsu Agatsuma",
 | 
				
			||||||
 | 
					            "customer_phone": null,
 | 
				
			||||||
 | 
					            "customer_shipping": {
 | 
				
			||||||
 | 
					                "address": {
 | 
				
			||||||
 | 
					                    "city": "",
 | 
				
			||||||
 | 
					                    "country": "",
 | 
				
			||||||
 | 
					                    "line1": "",
 | 
				
			||||||
 | 
					                    "line2": "",
 | 
				
			||||||
 | 
					                    "postal_code": "",
 | 
				
			||||||
 | 
					                    "state": ""
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "name": "Zenitsu Agatsuma",
 | 
				
			||||||
 | 
					                "phone": ""
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "customer_tax_exempt": "none",
 | 
				
			||||||
 | 
					            "customer_tax_ids": [],
 | 
				
			||||||
 | 
					            "default_payment_method": null,
 | 
				
			||||||
 | 
					            "default_source": null,
 | 
				
			||||||
 | 
					            "default_tax_rates": [],
 | 
				
			||||||
 | 
					            "description": null,
 | 
				
			||||||
 | 
					            "discount": null,
 | 
				
			||||||
 | 
					            "due_date": null,
 | 
				
			||||||
 | 
					            "ending_balance": null,
 | 
				
			||||||
 | 
					            "footer": null,
 | 
				
			||||||
 | 
					            "hosted_invoice_url": null,
 | 
				
			||||||
 | 
					            "invoice_pdf": null,
 | 
				
			||||||
 | 
					            "lines": {
 | 
				
			||||||
 | 
					                "object": "list",
 | 
				
			||||||
 | 
					                "data": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "id": "il_1GpmuuHLwdCOCoR7nCRM5MXl",
 | 
				
			||||||
 | 
					                        "object": "line_item",
 | 
				
			||||||
 | 
					                        "amount": 0,
 | 
				
			||||||
 | 
					                        "currency": "inr",
 | 
				
			||||||
 | 
					                        "description": null,
 | 
				
			||||||
 | 
					                        "discountable": true,
 | 
				
			||||||
 | 
					                        "invoice_item": "ii_1GpmuuHLwdCOCoR7VOeTr2BM",
 | 
				
			||||||
 | 
					                        "livemode": false,
 | 
				
			||||||
 | 
					                        "metadata": {},
 | 
				
			||||||
 | 
					                        "period": {
 | 
				
			||||||
 | 
					                            "end": 1591153524,
 | 
				
			||||||
 | 
					                            "start": 1591153524
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        "plan": null,
 | 
				
			||||||
 | 
					                        "price": {
 | 
				
			||||||
 | 
					                            "id": "price_1GpmuuHLwdCOCoR7ff5A7n1i",
 | 
				
			||||||
 | 
					                            "object": "price",
 | 
				
			||||||
 | 
					                            "active": false,
 | 
				
			||||||
 | 
					                            "billing_scheme": "per_unit",
 | 
				
			||||||
 | 
					                            "created": 1591153524,
 | 
				
			||||||
 | 
					                            "currency": "inr",
 | 
				
			||||||
 | 
					                            "livemode": false,
 | 
				
			||||||
 | 
					                            "lookup_key": null,
 | 
				
			||||||
 | 
					                            "metadata": {},
 | 
				
			||||||
 | 
					                            "nickname": null,
 | 
				
			||||||
 | 
					                            "product": "prod_HOa5MrXjZ9YBuA",
 | 
				
			||||||
 | 
					                            "recurring": null,
 | 
				
			||||||
 | 
					                            "tiers_mode": null,
 | 
				
			||||||
 | 
					                            "transform_quantity": null,
 | 
				
			||||||
 | 
					                            "type": "one_time",
 | 
				
			||||||
 | 
					                            "unit_amount": 0,
 | 
				
			||||||
 | 
					                            "unit_amount_decimal": "0"
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        "proration": false,
 | 
				
			||||||
 | 
					                        "quantity": 1,
 | 
				
			||||||
 | 
					                        "subscription": null,
 | 
				
			||||||
 | 
					                        "tax_amounts": [],
 | 
				
			||||||
 | 
					                        "tax_rates": [],
 | 
				
			||||||
 | 
					                        "type": "invoiceitem"
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					                "has_more": false,
 | 
				
			||||||
 | 
					                "total_count": 1,
 | 
				
			||||||
 | 
					                "url": "/v1/invoices/in_1GpmuuHLwdCOCoR7ghzQDQLW/lines"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "livemode": false,
 | 
				
			||||||
 | 
					            "metadata": {},
 | 
				
			||||||
 | 
					            "next_payment_attempt": null,
 | 
				
			||||||
 | 
					            "number": null,
 | 
				
			||||||
 | 
					            "paid": false,
 | 
				
			||||||
 | 
					            "payment_intent": null,
 | 
				
			||||||
 | 
					            "period_end": 1591153524,
 | 
				
			||||||
 | 
					            "period_start": 1591153524,
 | 
				
			||||||
 | 
					            "post_payment_credit_notes_amount": 0,
 | 
				
			||||||
 | 
					            "pre_payment_credit_notes_amount": 0,
 | 
				
			||||||
 | 
					            "receipt_number": null,
 | 
				
			||||||
 | 
					            "starting_balance": 0,
 | 
				
			||||||
 | 
					            "statement_descriptor": null,
 | 
				
			||||||
 | 
					            "status": "draft",
 | 
				
			||||||
 | 
					            "status_transitions": {
 | 
				
			||||||
 | 
					                "finalized_at": null,
 | 
				
			||||||
 | 
					                "marked_uncollectible_at": null,
 | 
				
			||||||
 | 
					                "paid_at": null,
 | 
				
			||||||
 | 
					                "voided_at": null
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "subscription": null,
 | 
				
			||||||
 | 
					            "subtotal": 0,
 | 
				
			||||||
 | 
					            "tax": null,
 | 
				
			||||||
 | 
					            "tax_percent": null,
 | 
				
			||||||
 | 
					            "total": 0,
 | 
				
			||||||
 | 
					            "total_tax_amounts": [],
 | 
				
			||||||
 | 
					            "transfer_data": null,
 | 
				
			||||||
 | 
					            "webhooks_delivered_at": null
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "livemode": false,
 | 
				
			||||||
 | 
					    "pending_webhooks": 1,
 | 
				
			||||||
 | 
					    "request": {
 | 
				
			||||||
 | 
					        "id": "req_cz0vh1VJ1U4MzE",
 | 
				
			||||||
 | 
					        "idempotency_key": null
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "type": "invoice.created"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -118,6 +118,15 @@ Billing method: send invoice"""
 | 
				
			|||||||
        self.send_and_test_stream_message('invoice_payment_failed', expected_topic, expected_message,
 | 
					        self.send_and_test_stream_message('invoice_payment_failed', expected_topic, expected_message,
 | 
				
			||||||
                                          content_type="application/x-www-form-urlencoded")
 | 
					                                          content_type="application/x-www-form-urlencoded")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_invoice_created(self) -> None:
 | 
				
			||||||
 | 
					        expected_topic = "cus_HH97asvHvaYQYp"
 | 
				
			||||||
 | 
					        expected_message = """
 | 
				
			||||||
 | 
					[Invoice](https://dashboard.stripe.com/invoices/in_1GpmuuHLwdCOCoR7ghzQDQLW) created (manual)
 | 
				
			||||||
 | 
					Total: 0.00 INR
 | 
				
			||||||
 | 
					Amount due: 0.00 INR
 | 
				
			||||||
 | 
					""".strip()
 | 
				
			||||||
 | 
					        self.send_and_test_stream_message("invoice_created", expected_topic, expected_message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_invoiceitem_created(self) -> None:
 | 
					    def test_invoiceitem_created(self) -> None:
 | 
				
			||||||
        expected_topic = "cus_00000000000000"
 | 
					        expected_topic = "cus_00000000000000"
 | 
				
			||||||
        expected_message = "[Invoice item](https://dashboard.stripe.com/invoiceitems/ii_00000000000000) created for 10.00 CAD"
 | 
					        expected_message = "[Invoice item](https://dashboard.stripe.com/invoiceitems/ii_00000000000000) created for 10.00 CAD"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -166,11 +166,10 @@ def topic_and_body(payload: Dict[str, Any]) -> Tuple[str, str]:
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            body = default_body(update_blacklist=['lines', 'description', 'number', 'finalized_at',
 | 
					            body = default_body(update_blacklist=['lines', 'description', 'number', 'finalized_at',
 | 
				
			||||||
                                                  'status_transitions', 'payment_intent'])
 | 
					                                                  'status_transitions', 'payment_intent'])
 | 
				
			||||||
        if event == 'created':  # nocoverage
 | 
					        if event == 'created':
 | 
				
			||||||
            # Could potentially add link to invoice PDF here
 | 
					            # Could potentially add link to invoice PDF here
 | 
				
			||||||
            body += ' ({reason})\nBilling method: {method}\nTotal: {total}\nAmount due: {due}'.format(
 | 
					            body += ' ({reason})\nTotal: {total}\nAmount due: {due}'.format(
 | 
				
			||||||
                reason=object_['billing_reason'].replace('_', ' '),
 | 
					                reason=object_['billing_reason'].replace('_', ' '),
 | 
				
			||||||
                method=object_['billing'].replace('_', ' '),
 | 
					 | 
				
			||||||
                total=amount_string(object_['total'], object_['currency']),
 | 
					                total=amount_string(object_['total'], object_['currency']),
 | 
				
			||||||
                due=amount_string(object_['amount_due'], object_['currency']))
 | 
					                due=amount_string(object_['amount_due'], object_['currency']))
 | 
				
			||||||
    if category == 'invoiceitem':
 | 
					    if category == 'invoiceitem':
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user