Merge pull request #1557 from stripe/mbroshi/add-beta-version-update

Update Stripe.add_beta_version
This commit is contained in:
Michael Broshi 2025-03-27 11:57:26 -07:00 committed by GitHub
commit 15e2d8393c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 35 additions and 38 deletions

View File

@ -160,11 +160,21 @@ module Stripe
end
def self.add_beta_version(beta_name, version)
if api_version.include?("; #{beta_name}=")
raise "Stripe version header #{api_version} already contains entry for beta #{beta_name}"
unless version.start_with?("v") && version[1..-1].to_i.to_s == version[1..-1]
raise ArgumentError, "Version must be in the format 'v' followed by a number (e.g., 'v3')"
end
self.api_version = "#{api_version}; #{beta_name}=#{version}"
if (index = api_version.index("; #{beta_name}="))
start_index = index + "; #{beta_name}=".length
end_index = api_version.index(";", start_index) || api_version.length
current_version = api_version[start_index...end_index][1..-1].to_i
new_version = version[1..-1].to_i
return if new_version <= current_version # Keep the higher version, no update needed
self.api_version = api_version[0...index] + "; #{beta_name}=#{version}" + api_version[end_index..-1]
else
self.api_version = "#{api_version}; #{beta_name}=#{version}"
end
end
class RawRequest

View File

@ -3851,20 +3851,6 @@ module Stripe
client.v1.quotes.update("qt_xxxxxxxxxxxxx", { metadata: { order_id: "6735" } })
assert_requested :post, "#{Stripe::DEFAULT_API_BASE}/v1/quotes/qt_xxxxxxxxxxxxx"
end
should "Test quotes preview invoices lines get" do
Stripe::Quote.list_preview_invoice_lines("qt_xyz", "in_xyz")
assert_requested :get, "#{Stripe.api_base}/v1/quotes/qt_xyz/preview_invoices/in_xyz/lines"
end
should "Test quotes preview invoices lines get (service)" do
stub_request(
:get,
"#{Stripe::DEFAULT_API_BASE}/v1/quotes/qt_xyz/preview_invoices/in_xyz/lines"
).to_return(body: "{}")
client = StripeClient.new("sk_test_123")
client.v1.quotes.list_preview_invoice_lines("qt_xyz", "in_xyz")
assert_requested :get, "#{Stripe::DEFAULT_API_BASE}/v1/quotes/qt_xyz/preview_invoices/in_xyz/lines"
end
should "Test radar early fraud warnings get" do
Stripe::Radar::EarlyFraudWarning.list({ limit: 3 })
assert_requested :get, "#{Stripe.api_base}/v1/radar/early_fraud_warnings?limit=3"
@ -4870,22 +4856,6 @@ module Stripe
client.v1.tax_codes.retrieve("txcd_xxxxxxxxxxxxx")
assert_requested :get, "#{Stripe::DEFAULT_API_BASE}/v1/tax_codes/txcd_xxxxxxxxxxxxx"
end
should "Test tax forms pdf get" do
block_handler = {}
Stripe::Tax::Form.pdf("form_xxxxxxxxxxxxx", &block_handler)
assert_requested :get, "#{Stripe.api_base}/v1/tax/forms/form_xxxxxxxxxxxxx/pdf"
end
should "Test tax forms pdf get (service)" do
block_handler = {}
stub_request(
:get,
"#{Stripe::DEFAULT_UPLOAD_BASE}/v1/tax/forms/form_xxxxxxxxxxxxx/pdf"
).to_return(body: "{}")
client = StripeClient.new("sk_test_123")
client.v1.tax.forms.pdf("form_xxxxxxxxxxxxx", &block_handler)
assert_requested :get, "#{Stripe::DEFAULT_UPLOAD_BASE}/v1/tax/forms/form_xxxxxxxxxxxxx/pdf"
end
should "Test tax ids delete" do
Stripe::TaxId.delete("taxid_123")
assert_requested :delete, "#{Stripe.api_base}/v1/tax_ids/taxid_123"

View File

@ -129,16 +129,33 @@ class StripeTest < Test::Unit::TestCase
assert_equal "https://other.stripe.com", Stripe.meter_events_base
end
should "allow beta versions to be added once only" do
should "allow beta versions to be added multiple times" do
Stripe.api_version = "2018-02-28"
Stripe.add_beta_version("my_beta", "v2")
assert_equal "2018-02-28; my_beta=v2", Stripe.api_version
err = assert_raises do
Stripe.add_beta_version("my_beta", "v1")
assert_equal(err, "Stripe version header 2018-02-28; my_beta=v2 already contains entry for beta my_beta")
end
# same version should be a no-op
Stripe.add_beta_version("my_beta", "v2")
assert_equal "2018-02-28; my_beta=v2", Stripe.api_version
# higher version should use higher version
Stripe.add_beta_version("my_beta", "v5")
assert_equal "2018-02-28; my_beta=v5", Stripe.api_version
# lower version should be a no-op
Stripe.add_beta_version("my_beta", "v4")
assert_equal "2018-02-28; my_beta=v5", Stripe.api_version
end
should "allow append multiple beta names" do
Stripe.api_version = "2018-02-28"
Stripe.add_beta_version("my_beta", "v2")
assert_equal "2018-02-28; my_beta=v2", Stripe.api_version
Stripe.add_beta_version("my_beta_two", "v4")
assert_equal "2018-02-28; my_beta=v2; my_beta_two=v4", Stripe.api_version
end
should "allow verify_ssl_certs to be configured" do