stripe 5.20.0 → 5.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -4
  3. data/.travis.yml +1 -1
  4. data/CHANGELOG.md +16 -0
  5. data/VERSION +1 -1
  6. data/lib/stripe.rb +32 -166
  7. data/lib/stripe/api_operations/create.rb +1 -1
  8. data/lib/stripe/api_operations/delete.rb +7 -3
  9. data/lib/stripe/api_operations/list.rb +1 -1
  10. data/lib/stripe/api_operations/nested_resource.rb +6 -5
  11. data/lib/stripe/api_operations/request.rb +19 -3
  12. data/lib/stripe/api_operations/save.rb +7 -4
  13. data/lib/stripe/api_resource.rb +4 -3
  14. data/lib/stripe/list_object.rb +2 -2
  15. data/lib/stripe/oauth.rb +3 -3
  16. data/lib/stripe/object_types.rb +3 -0
  17. data/lib/stripe/resources.rb +3 -0
  18. data/lib/stripe/resources/account.rb +2 -1
  19. data/lib/stripe/resources/account_link.rb +1 -0
  20. data/lib/stripe/resources/apple_pay_domain.rb +1 -0
  21. data/lib/stripe/resources/application_fee.rb +1 -0
  22. data/lib/stripe/resources/balance.rb +1 -0
  23. data/lib/stripe/resources/balance_transaction.rb +1 -0
  24. data/lib/stripe/resources/bank_account.rb +2 -1
  25. data/lib/stripe/resources/billing_portal/session.rb +1 -0
  26. data/lib/stripe/resources/bitcoin_receiver.rb +1 -0
  27. data/lib/stripe/resources/card.rb +1 -0
  28. data/lib/stripe/resources/charge.rb +1 -0
  29. data/lib/stripe/resources/checkout/session.rb +4 -0
  30. data/lib/stripe/resources/country_spec.rb +1 -0
  31. data/lib/stripe/resources/coupon.rb +1 -0
  32. data/lib/stripe/resources/credit_note.rb +3 -2
  33. data/lib/stripe/resources/customer.rb +2 -1
  34. data/lib/stripe/resources/dispute.rb +1 -0
  35. data/lib/stripe/resources/ephemeral_key.rb +1 -0
  36. data/lib/stripe/resources/event.rb +1 -0
  37. data/lib/stripe/resources/exchange_rate.rb +1 -0
  38. data/lib/stripe/resources/file.rb +1 -0
  39. data/lib/stripe/resources/file_link.rb +1 -0
  40. data/lib/stripe/resources/invoice.rb +3 -2
  41. data/lib/stripe/resources/invoice_item.rb +1 -0
  42. data/lib/stripe/resources/issuing/authorization.rb +1 -0
  43. data/lib/stripe/resources/issuing/card.rb +1 -0
  44. data/lib/stripe/resources/issuing/cardholder.rb +1 -0
  45. data/lib/stripe/resources/issuing/dispute.rb +1 -0
  46. data/lib/stripe/resources/issuing/transaction.rb +1 -0
  47. data/lib/stripe/resources/line_item.rb +7 -0
  48. data/lib/stripe/resources/mandate.rb +1 -0
  49. data/lib/stripe/resources/order.rb +1 -0
  50. data/lib/stripe/resources/order_return.rb +1 -0
  51. data/lib/stripe/resources/payment_intent.rb +1 -0
  52. data/lib/stripe/resources/payment_method.rb +1 -0
  53. data/lib/stripe/resources/payout.rb +1 -0
  54. data/lib/stripe/resources/plan.rb +1 -0
  55. data/lib/stripe/resources/price.rb +12 -0
  56. data/lib/stripe/resources/product.rb +1 -0
  57. data/lib/stripe/resources/promotion_code.rb +12 -0
  58. data/lib/stripe/resources/radar/early_fraud_warning.rb +1 -0
  59. data/lib/stripe/resources/radar/value_list.rb +1 -0
  60. data/lib/stripe/resources/radar/value_list_item.rb +1 -0
  61. data/lib/stripe/resources/recipient.rb +1 -0
  62. data/lib/stripe/resources/refund.rb +1 -0
  63. data/lib/stripe/resources/reporting/report_run.rb +1 -0
  64. data/lib/stripe/resources/reporting/report_type.rb +1 -0
  65. data/lib/stripe/resources/review.rb +1 -0
  66. data/lib/stripe/resources/setup_intent.rb +1 -0
  67. data/lib/stripe/resources/sigma/scheduled_query_run.rb +1 -0
  68. data/lib/stripe/resources/sku.rb +1 -0
  69. data/lib/stripe/resources/source.rb +4 -3
  70. data/lib/stripe/resources/subscription.rb +1 -0
  71. data/lib/stripe/resources/subscription_item.rb +2 -1
  72. data/lib/stripe/resources/subscription_schedule.rb +1 -0
  73. data/lib/stripe/resources/tax_rate.rb +1 -0
  74. data/lib/stripe/resources/terminal/connection_token.rb +1 -0
  75. data/lib/stripe/resources/terminal/location.rb +1 -0
  76. data/lib/stripe/resources/terminal/reader.rb +1 -0
  77. data/lib/stripe/resources/three_d_secure.rb +1 -0
  78. data/lib/stripe/resources/token.rb +1 -0
  79. data/lib/stripe/resources/topup.rb +1 -0
  80. data/lib/stripe/resources/transfer.rb +1 -0
  81. data/lib/stripe/resources/webhook_endpoint.rb +1 -0
  82. data/lib/stripe/stripe_configuration.rb +167 -0
  83. data/lib/stripe/stripe_object.rb +1 -1
  84. data/lib/stripe/version.rb +1 -1
  85. data/test/stripe/account_link_test.rb +3 -3
  86. data/test/stripe/checkout/session_test.rb +12 -0
  87. data/test/stripe/price_test.rb +48 -0
  88. data/test/stripe/promotion_code_test.rb +42 -0
  89. data/test/stripe/stripe_configuration_test.rb +128 -0
  90. data/test/stripe/subscription_item_test.rb +1 -1
  91. data/test/stripe_test.rb +88 -19
  92. data/test/test_helper.rb +1 -1
  93. metadata +12 -2
@@ -0,0 +1,128 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ::File.expand_path("../test_helper", __dir__)
4
+
5
+ module Stripe
6
+ class StripeConfigurationTest < Test::Unit::TestCase
7
+ context ".setup" do
8
+ should "initialize a new configuration with defaults" do
9
+ config = Stripe::StripeConfiguration.setup
10
+
11
+ assert_equal Stripe::DEFAULT_CA_BUNDLE_PATH, config.ca_bundle_path
12
+ assert_equal true, config.enable_telemetry
13
+ assert_equal true, config.verify_ssl_certs
14
+ assert_equal 2, config.max_network_retry_delay
15
+ assert_equal 0.5, config.initial_network_retry_delay
16
+ assert_equal 0, config.max_network_retries
17
+ assert_equal 30, config.open_timeout
18
+ assert_equal 80, config.read_timeout
19
+ assert_equal "https://api.stripe.com", config.api_base
20
+ assert_equal "https://connect.stripe.com", config.connect_base
21
+ assert_equal "https://files.stripe.com", config.uploads_base
22
+ end
23
+
24
+ should "allow for overrides when a block is passed" do
25
+ config = Stripe::StripeConfiguration.setup do |c|
26
+ c.open_timeout = 100
27
+ c.read_timeout = 100
28
+ end
29
+
30
+ assert_equal 100, config.open_timeout
31
+ assert_equal 100, config.read_timeout
32
+ end
33
+ end
34
+
35
+ context "#reverse_duplicate_merge" do
36
+ should "return a duplicate object with overrides" do
37
+ config = Stripe::StripeConfiguration.setup do |c|
38
+ c.open_timeout = 100
39
+ end
40
+
41
+ duped_config = config.reverse_duplicate_merge(read_timeout: 500)
42
+
43
+ assert_equal config.open_timeout, duped_config.open_timeout
44
+ assert_equal 500, duped_config.read_timeout
45
+ end
46
+ end
47
+
48
+ context "#max_network_retries=" do
49
+ should "coerce the option into an integer" do
50
+ config = Stripe::StripeConfiguration.setup
51
+
52
+ config.max_network_retries = "10"
53
+ assert_equal 10, config.max_network_retries
54
+ end
55
+ end
56
+
57
+ context "#log_level=" do
58
+ should "be backwards compatible with old values" do
59
+ config = Stripe::StripeConfiguration.setup
60
+
61
+ config.log_level = "debug"
62
+ assert_equal Stripe::LEVEL_DEBUG, config.log_level
63
+
64
+ config.log_level = "info"
65
+ assert_equal Stripe::LEVEL_INFO, config.log_level
66
+ end
67
+
68
+ should "raise an error if the value isn't valid" do
69
+ config = Stripe::StripeConfiguration.setup
70
+
71
+ assert_raises ArgumentError do
72
+ config.log_level = "Foo"
73
+ end
74
+ end
75
+ end
76
+
77
+ context "options that require all connection managers to be cleared" do
78
+ should "clear when setting allow ca_bundle_path" do
79
+ config = Stripe::StripeConfiguration.setup
80
+
81
+ StripeClient.expects(:clear_all_connection_managers)
82
+ config.ca_bundle_path = "/path/to/ca/bundle"
83
+ end
84
+
85
+ should "clear when setting open timeout" do
86
+ config = Stripe::StripeConfiguration.setup
87
+
88
+ StripeClient.expects(:clear_all_connection_managers)
89
+ config.open_timeout = 10
90
+ end
91
+
92
+ should "clear when setting read timeout" do
93
+ config = Stripe::StripeConfiguration.setup
94
+
95
+ StripeClient.expects(:clear_all_connection_managers)
96
+ config.read_timeout = 10
97
+ end
98
+
99
+ should "clear when setting uploads_base" do
100
+ config = Stripe::StripeConfiguration.setup
101
+
102
+ StripeClient.expects(:clear_all_connection_managers)
103
+ config.uploads_base = "https://other.stripe.com"
104
+ end
105
+
106
+ should "clearn when setting api_base to be configured" do
107
+ config = Stripe::StripeConfiguration.setup
108
+
109
+ StripeClient.expects(:clear_all_connection_managers)
110
+ config.api_base = "https://other.stripe.com"
111
+ end
112
+
113
+ should "clear when setting connect_base" do
114
+ config = Stripe::StripeConfiguration.setup
115
+
116
+ StripeClient.expects(:clear_all_connection_managers)
117
+ config.connect_base = "https://other.stripe.com"
118
+ end
119
+
120
+ should "clear when setting verify_ssl_certs" do
121
+ config = Stripe::StripeConfiguration.setup
122
+
123
+ StripeClient.expects(:clear_all_connection_managers)
124
+ config.verify_ssl_certs = false
125
+ end
126
+ end
127
+ end
128
+ end
@@ -22,7 +22,7 @@ module Stripe
22
22
 
23
23
  should "be creatable" do
24
24
  item = Stripe::SubscriptionItem.create(
25
- plan: "sapphire-elite",
25
+ price: "sapphire-elite",
26
26
  quantity: 3,
27
27
  subscription: "sub_123"
28
28
  )
@@ -23,28 +23,97 @@ class StripeTest < Test::Unit::TestCase
23
23
  end
24
24
  end
25
25
 
26
- should "allow ca_bundle_path to be configured" do
27
- begin
28
- old = Stripe.ca_bundle_path
29
- Stripe.ca_bundle_path = "path/to/ca/bundle"
30
- assert_equal "path/to/ca/bundle", Stripe.ca_bundle_path
31
- ensure
32
- Stripe.ca_bundle_path = old
26
+ context "forwardable configurations" do
27
+ context "internal configurations" do
28
+ should "return the certificate store" do
29
+ assert Stripe.ca_store.is_a?(OpenSSL::X509::Store)
30
+ end
31
+
32
+ should "return the max_network_retry_delay" do
33
+ assert_equal 2, Stripe.max_network_retry_delay
34
+ end
35
+
36
+ should "return the initial_network_retry_delay" do
37
+ assert_equal 0.5, Stripe.initial_network_retry_delay
38
+ end
33
39
  end
34
- end
35
40
 
36
- should "allow max_network_retries to be configured" do
37
- begin
38
- old = Stripe.max_network_retries
39
- Stripe.max_network_retries = 99
40
- assert_equal 99, Stripe.max_network_retries
41
- ensure
42
- Stripe.max_network_retries = old
41
+ should "allow ca_bundle_path to be configured" do
42
+ Stripe::StripeClient.expects(:clear_all_connection_managers)
43
+ Stripe.ca_bundle_path = "/path/to/ca/bundle"
44
+ assert_equal "/path/to/ca/bundle", Stripe.ca_bundle_path
43
45
  end
44
- end
45
46
 
46
- should "have default open and read timeouts" do
47
- assert_equal Stripe.open_timeout, 30
48
- assert_equal Stripe.read_timeout, 80
47
+ should "allow open timeout to be configured" do
48
+ Stripe.open_timeout = 10
49
+ assert_equal 10, Stripe.open_timeout
50
+ end
51
+
52
+ should "allow read timeout to be configured" do
53
+ Stripe.read_timeout = 10
54
+ assert_equal 10, Stripe.read_timeout
55
+ end
56
+
57
+ should "allow api_key to be configured" do
58
+ Stripe.api_key = "sk_local_test"
59
+ assert_equal "sk_local_test", Stripe.api_key
60
+ end
61
+
62
+ should "allow stripe_account to be configured" do
63
+ Stripe.stripe_account = "acct_1234"
64
+ assert_equal "acct_1234", Stripe.stripe_account
65
+ end
66
+
67
+ should "allow enable_telemetry to be configured" do
68
+ begin
69
+ old = Stripe.enable_telemetry?
70
+
71
+ Stripe.enable_telemetry = false
72
+ assert_equal false, Stripe.enable_telemetry?
73
+ ensure
74
+ Stripe.enable_telemetry = old
75
+ end
76
+ end
77
+
78
+ should "allow log_level to be configured" do
79
+ Stripe.log_level = "debug"
80
+ assert_equal ::Logger::DEBUG, Stripe.log_level
81
+ end
82
+
83
+ should "allow logger to be configured" do
84
+ logger = Object.new
85
+ Stripe.logger = logger
86
+ assert_equal logger, Stripe.logger
87
+ end
88
+
89
+ should "allow proxy to be configured" do
90
+ Stripe.proxy = "http://proxy"
91
+ assert_equal "http://proxy", Stripe.proxy
92
+ end
93
+
94
+ should "allow uploads_base to be configured" do
95
+ Stripe.uploads_base = "https://other.stripe.com"
96
+ assert_equal "https://other.stripe.com", Stripe.uploads_base
97
+ end
98
+
99
+ should "allow api_base to be configured" do
100
+ Stripe.api_base = "https://other.stripe.com"
101
+ assert_equal "https://other.stripe.com", Stripe.api_base
102
+ end
103
+
104
+ should "allow connect_base to be configured" do
105
+ Stripe.connect_base = "https://other.stripe.com"
106
+ assert_equal "https://other.stripe.com", Stripe.connect_base
107
+ end
108
+
109
+ should "allow verify_ssl_certs to be configured" do
110
+ Stripe.verify_ssl_certs = false
111
+ assert_equal false, Stripe.verify_ssl_certs
112
+ end
113
+
114
+ should "allow client_id to be configured" do
115
+ Stripe.client_id = "client"
116
+ assert_equal "client", Stripe.client_id
117
+ end
49
118
  end
50
119
  end
@@ -16,7 +16,7 @@ require ::File.expand_path("test_data", __dir__)
16
16
  require ::File.expand_path("stripe_mock", __dir__)
17
17
 
18
18
  # If changing this number, please also change it in `.travis.yml`.
19
- MOCK_MINIMUM_VERSION = "0.88.0"
19
+ MOCK_MINIMUM_VERSION = "0.95.0"
20
20
  MOCK_PORT = Stripe::StripeMock.start
21
21
 
22
22
  # Disable all real network connections except those that are outgoing to
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.20.0
4
+ version: 5.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-27 00:00:00.000000000 Z
11
+ date: 2020-08-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Stripe is the easiest way to accept payments online. See https://stripe.com
14
14
  for details.
@@ -93,6 +93,7 @@ files:
93
93
  - lib/stripe/resources/issuing/cardholder.rb
94
94
  - lib/stripe/resources/issuing/dispute.rb
95
95
  - lib/stripe/resources/issuing/transaction.rb
96
+ - lib/stripe/resources/line_item.rb
96
97
  - lib/stripe/resources/login_link.rb
97
98
  - lib/stripe/resources/mandate.rb
98
99
  - lib/stripe/resources/order.rb
@@ -102,7 +103,9 @@ files:
102
103
  - lib/stripe/resources/payout.rb
103
104
  - lib/stripe/resources/person.rb
104
105
  - lib/stripe/resources/plan.rb
106
+ - lib/stripe/resources/price.rb
105
107
  - lib/stripe/resources/product.rb
108
+ - lib/stripe/resources/promotion_code.rb
106
109
  - lib/stripe/resources/radar/early_fraud_warning.rb
107
110
  - lib/stripe/resources/radar/value_list.rb
108
111
  - lib/stripe/resources/radar/value_list_item.rb
@@ -135,6 +138,7 @@ files:
135
138
  - lib/stripe/resources/webhook_endpoint.rb
136
139
  - lib/stripe/singleton_api_resource.rb
137
140
  - lib/stripe/stripe_client.rb
141
+ - lib/stripe/stripe_configuration.rb
138
142
  - lib/stripe/stripe_object.rb
139
143
  - lib/stripe/stripe_response.rb
140
144
  - lib/stripe/util.rb
@@ -191,7 +195,9 @@ files:
191
195
  - test/stripe/payout_test.rb
192
196
  - test/stripe/person_test.rb
193
197
  - test/stripe/plan_test.rb
198
+ - test/stripe/price_test.rb
194
199
  - test/stripe/product_test.rb
200
+ - test/stripe/promotion_code_test.rb
195
201
  - test/stripe/radar/early_fraud_warning_test.rb
196
202
  - test/stripe/radar/value_list_item_test.rb
197
203
  - test/stripe/radar/value_list_test.rb
@@ -206,6 +212,7 @@ files:
206
212
  - test/stripe/sku_test.rb
207
213
  - test/stripe/source_test.rb
208
214
  - test/stripe/stripe_client_test.rb
215
+ - test/stripe/stripe_configuration_test.rb
209
216
  - test/stripe/stripe_object_test.rb
210
217
  - test/stripe/stripe_response_test.rb
211
218
  - test/stripe/subscription_item_test.rb
@@ -307,7 +314,9 @@ test_files:
307
314
  - test/stripe/payout_test.rb
308
315
  - test/stripe/person_test.rb
309
316
  - test/stripe/plan_test.rb
317
+ - test/stripe/price_test.rb
310
318
  - test/stripe/product_test.rb
319
+ - test/stripe/promotion_code_test.rb
311
320
  - test/stripe/radar/early_fraud_warning_test.rb
312
321
  - test/stripe/radar/value_list_item_test.rb
313
322
  - test/stripe/radar/value_list_test.rb
@@ -322,6 +331,7 @@ test_files:
322
331
  - test/stripe/sku_test.rb
323
332
  - test/stripe/source_test.rb
324
333
  - test/stripe/stripe_client_test.rb
334
+ - test/stripe/stripe_configuration_test.rb
325
335
  - test/stripe/stripe_object_test.rb
326
336
  - test/stripe/stripe_response_test.rb
327
337
  - test/stripe/subscription_item_test.rb