@@ -36,6 +36,26 @@ def retrieve_event(evt_id)
3636 } ,
3737 } . to_json
3838
39+ @v2_push_payload_with_livemode_and_reason = {
40+ "id" => "evt_234" ,
41+ "object" => "v2.core.event" ,
42+ "type" => "v1.billing.meter.error_report_triggered" ,
43+ "created" => "2022-02-15T00:27:45.330Z" ,
44+ "related_object" => {
45+ "id" => "mtr_123" ,
46+ "type" => "billing.meter" ,
47+ "url" => "/v1/billing/meters/mtr_123" ,
48+ } ,
49+ "livemode" => true ,
50+ "reason" => {
51+ "type" => "a.b.c" ,
52+ "request" => {
53+ "id" => "r_123" ,
54+ "idempotency_key" => "key" ,
55+ } ,
56+ } ,
57+ } . to_json
58+
3959 @v2_pull_payload = {
4060 "id" => "evt_234" ,
4161 "object" => "v2.core.event" ,
@@ -78,6 +98,19 @@ def retrieve_event(evt_id)
7898 assert_equal "2022-02-15T00:27:45.330Z" , event . created
7999 end
80100
101+ should "parse v2 events with livemode and reason" do
102+ event = parse_signed_event ( @v2_push_payload_with_livemode_and_reason )
103+ assert event . is_a? ( Stripe ::ThinEvent )
104+ assert_equal "evt_234" , event . id
105+ assert_equal "v1.billing.meter.error_report_triggered" , event . type
106+ assert_equal "2022-02-15T00:27:45.330Z" , event . created
107+ assert_true event . livemode
108+ assert_not_nil event . reason
109+ assert_equal "a.b.c" , event . reason [ :type ]
110+ assert_equal "r_123" , event . reason [ :request ] [ :id ]
111+ assert_equal "key" , event . reason [ :request ] [ :idempotency_key ]
112+ end
113+
81114 should "raise a JSON::ParserError from an invalid JSON payload" do
82115 assert_raises Stripe ::SignatureVerificationError do
83116 parse_signed_event ( @v2_push_payload , "Bad secret" )
0 commit comments