5
5
6
6
import stripe
7
7
from stripe import ThinEvent
8
+ from stripe .events ._v1_billing_meter_error_report_triggered_event import (
9
+ V1BillingMeterErrorReportTriggeredEvent ,
10
+ )
8
11
from tests .test_webhook import DUMMY_WEBHOOK_SECRET , generate_header
9
12
10
13
EventParser = Callable [[str ], ThinEvent ]
@@ -17,13 +20,13 @@ def v2_payload_no_data(self):
17
20
{
18
21
"id" : "evt_234" ,
19
22
"object" : "v2.core.event" ,
20
- "type" : "financial_account.balance.opened " ,
23
+ "type" : "v1.billing.meter.error_report_triggered " ,
21
24
"livemode" : True ,
22
25
"created" : "2022-02-15T00:27:45.330Z" ,
23
26
"related_object" : {
24
- "id" : "fa_123 " ,
25
- "type" : "financial_account " ,
26
- "url" : "/v2/financial_accounts/fa_123 " ,
27
+ "id" : "mtr_123 " ,
28
+ "type" : "billing.meter " ,
29
+ "url" : "/v1/billing/meters/mtr_123 " ,
27
30
"stripe_context" : "acct_123" ,
28
31
},
29
32
"reason" : {
@@ -39,19 +42,19 @@ def v2_payload_with_data(self):
39
42
{
40
43
"id" : "evt_234" ,
41
44
"object" : "v2.core.event" ,
42
- "type" : "financial_account.balance.opened " ,
45
+ "type" : "v1.billing.meter.error_report_triggered " ,
43
46
"livemode" : False ,
44
47
"created" : "2022-02-15T00:27:45.330Z" ,
48
+ "context" : "acct_123" ,
45
49
"related_object" : {
46
- "id" : "fa_123" ,
47
- "type" : "financial_account" ,
48
- "url" : "/v2/financial_accounts/fa_123" ,
49
- "stripe_context" : "acct_123" ,
50
+ "id" : "mtr_123" ,
51
+ "type" : "billing.meter" ,
52
+ "url" : "/v1/billing/meters/mtr_123" ,
50
53
},
51
54
"data" : {
52
- "containing_compartment_id " : "compid" ,
53
- "id " : "foo" ,
54
- "type" : "bufo" ,
55
+ "reason " : {
56
+ "error_count " : 1 ,
57
+ }
55
58
},
56
59
}
57
60
)
@@ -89,7 +92,7 @@ def test_parses_thin_event(
89
92
assert event .id == "evt_234"
90
93
91
94
assert event .related_object
92
- assert event .related_object .id == "fa_123 "
95
+ assert event .related_object .id == "mtr_123 "
93
96
94
97
assert event .reason
95
98
assert event .reason .id == "foo"
@@ -110,3 +113,34 @@ def test_validates_signature(
110
113
stripe_client .parse_thin_event (
111
114
v2_payload_no_data , "bad header" , DUMMY_WEBHOOK_SECRET
112
115
)
116
+
117
+ def test_v2_events_data_type (self , http_client_mock , v2_payload_with_data ):
118
+ method = "get"
119
+ path = "/v2/core/events/evt_123"
120
+ http_client_mock .stub_request (
121
+ method ,
122
+ path = path ,
123
+ rbody = v2_payload_with_data ,
124
+ rcode = 200 ,
125
+ rheaders = {},
126
+ )
127
+ client = stripe .StripeClient (
128
+ api_key = "keyinfo_test_123" ,
129
+ http_client = http_client_mock .get_mock_http_client (),
130
+ )
131
+ event = client .v2 .core .events .retrieve ("evt_123" )
132
+
133
+ http_client_mock .assert_requested (
134
+ method ,
135
+ api_base = stripe .DEFAULT_API_BASE ,
136
+ path = path ,
137
+ api_key = "keyinfo_test_123" ,
138
+ )
139
+ assert event .id is not None
140
+ assert isinstance (event , V1BillingMeterErrorReportTriggeredEvent )
141
+ assert event .data is not None
142
+ assert isinstance (
143
+ event .data ,
144
+ V1BillingMeterErrorReportTriggeredEvent .V1BillingMeterErrorReportTriggeredEventData ,
145
+ )
146
+ assert event .data .reason .error_count == 1
0 commit comments