stripe 5.20.0 → 5.24.0

Sign up to get free protection for your applications and to get access to all the features.
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