stripe-ruby/test/stripe/v2_errors_test.rb

90 lines
2.7 KiB
Ruby

# frozen_string_literal: true
require File.expand_path("../test_helper", __dir__)
module Stripe
class V2ErrorTest < Test::Unit::TestCase
context "V2 Errors" do
setup do
@client = StripeClient.new("keyinfo_test_123")
end
should "raise when relevant" do
method = :post
path = "/v2/billing/meter_event_stream"
error_response = {
error: {
type: "temporary_session_expired",
code: "billing_meter_event_session_expired",
message: "expired",
},
}
stub_request(method, Stripe::DEFAULT_METER_EVENTS_BASE + path)
.to_return(status: 400, body: error_response.to_json, headers: {})
e = assert_raises Stripe::TemporarySessionExpiredError do
@client.v2.billing.meter_event_stream.create
end
assert_equal "billing_meter_event_session_expired", e.code
assert_equal "expired", e.message
assert_requested(method, Stripe::DEFAULT_METER_EVENTS_BASE + path)
end
# TODO: Use a v2 specific error once we have a v2 error with fields
should "correctly set error fields" do
method = :post
path = "/v2/billing/meter_event_session"
error_response = {
error: {
type: "invalid_fields",
code: "invalid_fields",
message: "bar is invalid",
param: "bar",
},
}
stub_request(method, /.*#{path}/)
.to_return(status: 400, body: error_response.to_json, headers: {})
e = assert_raises Stripe::InvalidRequestError do
@client.v2.billing.meter_event_session.create(
{ bar: "123" }
)
end
assert_equal "bar", e.param
assert_equal "invalid_fields", e.code
assert_equal "bar is invalid", e.message
assert_requested(method, Stripe::DEFAULT_API_BASE + path)
end
should "fall back to v1 errors" do
method = :post
path = "/v2/billing/meter_event_session"
error_response = {
error: {
code: "invalid_fields",
message: "your request is invalid",
param: "invalid_param",
},
}
stub_request(method, Stripe::DEFAULT_API_BASE + path)
.to_return(status: 400, body: error_response.to_json, headers: { "Request-Id" => "123" })
e = assert_raises Stripe::InvalidRequestError do
@client.v2.billing.meter_event_session.create({ bar: "123" })
end
assert_equal "invalid_param", e.param
assert_equal "invalid_fields", e.code
assert_equal "your request is invalid", e.message
assert_requested(method, Stripe::DEFAULT_API_BASE + path)
end
end
end
end