stripe 5.23.1 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/VERSION +1 -1
- data/lib/stripe.rb +32 -166
- data/lib/stripe/stripe_configuration.rb +167 -0
- data/lib/stripe/stripe_object.rb +1 -1
- data/lib/stripe/version.rb +1 -1
- data/test/stripe/stripe_configuration_test.rb +128 -0
- data/test/stripe_test.rb +88 -19
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dad4d3bffd7ba2748a3331de5d3b97108732144b33818a5e79efd6eb597e4834
|
4
|
+
data.tar.gz: c46abe2511c5316276921da29766c22aed11bb92b136b53fb7ea82fb542640c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 824c459fec4234b09e6d04d20b79728db4ccd19e0dc5cbe9874d319a995b62cb7c252dff31fad3c0fae295682bd68cfbb9fb52f0e98044f3708f1999c0f55d16
|
7
|
+
data.tar.gz: 6f1557c58e7c0ab6e407444208c142953889ec1f2746464804cf38d6766550aca0577902982211a696522f47e5ffc06d304f17c4fc7b4fdfbe60c1603077a72d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 5.24.0 - 2020-08-26
|
4
|
+
* [#939](https://github.com/stripe/stripe-ruby/pull/939) Extract configurations into separate object
|
5
|
+
* [#940](https://github.com/stripe/stripe-ruby/pull/940) Fix typo in documentation of `stripe_object.rb`
|
6
|
+
|
3
7
|
## 5.23.1 - 2020-08-05
|
4
8
|
* [#936](https://github.com/stripe/stripe-ruby/pull/936) Rename API resource's `request` method
|
5
9
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.
|
1
|
+
5.24.0
|
data/lib/stripe.rb
CHANGED
@@ -12,6 +12,7 @@ require "securerandom"
|
|
12
12
|
require "set"
|
13
13
|
require "socket"
|
14
14
|
require "uri"
|
15
|
+
require "forwardable"
|
15
16
|
|
16
17
|
# Version
|
17
18
|
require "stripe/version"
|
@@ -38,6 +39,7 @@ require "stripe/error_object"
|
|
38
39
|
require "stripe/api_resource"
|
39
40
|
require "stripe/singleton_api_resource"
|
40
41
|
require "stripe/webhook"
|
42
|
+
require "stripe/stripe_configuration"
|
41
43
|
|
42
44
|
# Named API resources
|
43
45
|
require "stripe/resources"
|
@@ -48,47 +50,41 @@ require "stripe/oauth"
|
|
48
50
|
module Stripe
|
49
51
|
DEFAULT_CA_BUNDLE_PATH = __dir__ + "/data/ca-certificates.crt"
|
50
52
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
@uploads_base = "https://files.stripe.com"
|
56
|
-
|
57
|
-
@log_level = nil
|
58
|
-
@logger = nil
|
59
|
-
|
60
|
-
@proxy = nil
|
61
|
-
|
62
|
-
@max_network_retries = 0
|
63
|
-
@max_network_retry_delay = 2
|
64
|
-
@initial_network_retry_delay = 0.5
|
65
|
-
|
66
|
-
@ca_bundle_path = DEFAULT_CA_BUNDLE_PATH
|
67
|
-
@ca_store = nil
|
68
|
-
@verify_ssl_certs = true
|
53
|
+
# map to the same values as the standard library's logger
|
54
|
+
LEVEL_DEBUG = Logger::DEBUG
|
55
|
+
LEVEL_ERROR = Logger::ERROR
|
56
|
+
LEVEL_INFO = Logger::INFO
|
69
57
|
|
70
|
-
@
|
71
|
-
@read_timeout = 80
|
58
|
+
@app_info = nil
|
72
59
|
|
73
|
-
@
|
60
|
+
@configuration = Stripe::StripeConfiguration.setup
|
74
61
|
|
75
62
|
class << self
|
76
|
-
|
77
|
-
|
63
|
+
extend Forwardable
|
64
|
+
|
65
|
+
# User configurable options
|
66
|
+
def_delegators :@configuration, :api_key, :api_key=
|
67
|
+
def_delegators :@configuration, :api_version, :api_version=
|
68
|
+
def_delegators :@configuration, :stripe_account, :stripe_account=
|
69
|
+
def_delegators :@configuration, :api_base, :api_base=
|
70
|
+
def_delegators :@configuration, :uploads_base, :uploads_base=
|
71
|
+
def_delegators :@configuration, :connect_base, :connect_base=
|
72
|
+
def_delegators :@configuration, :open_timeout, :open_timeout=
|
73
|
+
def_delegators :@configuration, :read_timeout, :read_timeout=
|
74
|
+
def_delegators :@configuration, :proxy, :proxy=
|
75
|
+
def_delegators :@configuration, :verify_ssl_certs, :verify_ssl_certs=
|
76
|
+
def_delegators :@configuration, :ca_bundle_path, :ca_bundle_path=
|
77
|
+
def_delegators :@configuration, :log_level, :log_level=
|
78
|
+
def_delegators :@configuration, :logger, :logger=
|
79
|
+
def_delegators :@configuration, :max_network_retries, :max_network_retries=
|
80
|
+
def_delegators :@configuration, :enable_telemetry=, :enable_telemetry?
|
81
|
+
|
82
|
+
# Internal configurations
|
83
|
+
def_delegators :@configuration, :max_network_retry_delay
|
84
|
+
def_delegators :@configuration, :initial_network_retry_delay
|
85
|
+
def_delegators :@configuration, :ca_store
|
86
|
+
|
78
87
|
attr_accessor :client_id
|
79
|
-
attr_accessor :stripe_account
|
80
|
-
|
81
|
-
# These all get manual attribute writers so that we can reset connections
|
82
|
-
# if they change.
|
83
|
-
attr_reader :api_base
|
84
|
-
attr_reader :connect_base
|
85
|
-
attr_reader :open_timeout
|
86
|
-
attr_reader :proxy
|
87
|
-
attr_reader :read_timeout
|
88
|
-
attr_reader :uploads_base
|
89
|
-
attr_reader :verify_ssl_certs
|
90
|
-
|
91
|
-
attr_reader :max_network_retry_delay, :initial_network_retry_delay
|
92
88
|
end
|
93
89
|
|
94
90
|
# Gets the application for a plugin that's identified some. See
|
@@ -101,126 +97,6 @@ module Stripe
|
|
101
97
|
@app_info = info
|
102
98
|
end
|
103
99
|
|
104
|
-
def self.api_base=(api_base)
|
105
|
-
@api_base = api_base
|
106
|
-
StripeClient.clear_all_connection_managers
|
107
|
-
end
|
108
|
-
|
109
|
-
# The location of a file containing a bundle of CA certificates. By default
|
110
|
-
# the library will use an included bundle that can successfully validate
|
111
|
-
# Stripe certificates.
|
112
|
-
def self.ca_bundle_path
|
113
|
-
@ca_bundle_path
|
114
|
-
end
|
115
|
-
|
116
|
-
def self.ca_bundle_path=(path)
|
117
|
-
@ca_bundle_path = path
|
118
|
-
|
119
|
-
# empty this field so a new store is initialized
|
120
|
-
@ca_store = nil
|
121
|
-
|
122
|
-
StripeClient.clear_all_connection_managers
|
123
|
-
end
|
124
|
-
|
125
|
-
# A certificate store initialized from the the bundle in #ca_bundle_path and
|
126
|
-
# which is used to validate TLS on every request.
|
127
|
-
#
|
128
|
-
# This was added to the give the gem "pseudo thread safety" in that it seems
|
129
|
-
# when initiating many parallel requests marshaling the certificate store is
|
130
|
-
# the most likely point of failure (see issue #382). Any program attempting
|
131
|
-
# to leverage this pseudo safety should make a call to this method (i.e.
|
132
|
-
# `Stripe.ca_store`) in their initialization code because it marshals lazily
|
133
|
-
# and is itself not thread safe.
|
134
|
-
def self.ca_store
|
135
|
-
@ca_store ||= begin
|
136
|
-
store = OpenSSL::X509::Store.new
|
137
|
-
store.add_file(ca_bundle_path)
|
138
|
-
store
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
def self.connect_base=(connect_base)
|
143
|
-
@connect_base = connect_base
|
144
|
-
StripeClient.clear_all_connection_managers
|
145
|
-
end
|
146
|
-
|
147
|
-
def self.enable_telemetry?
|
148
|
-
@enable_telemetry
|
149
|
-
end
|
150
|
-
|
151
|
-
def self.enable_telemetry=(val)
|
152
|
-
@enable_telemetry = val
|
153
|
-
end
|
154
|
-
|
155
|
-
# map to the same values as the standard library's logger
|
156
|
-
LEVEL_DEBUG = Logger::DEBUG
|
157
|
-
LEVEL_ERROR = Logger::ERROR
|
158
|
-
LEVEL_INFO = Logger::INFO
|
159
|
-
|
160
|
-
# When set prompts the library to log some extra information to $stdout and
|
161
|
-
# $stderr about what it's doing. For example, it'll produce information about
|
162
|
-
# requests, responses, and errors that are received. Valid log levels are
|
163
|
-
# `debug` and `info`, with `debug` being a little more verbose in places.
|
164
|
-
#
|
165
|
-
# Use of this configuration is only useful when `.logger` is _not_ set. When
|
166
|
-
# it is, the decision what levels to print is entirely deferred to the logger.
|
167
|
-
def self.log_level
|
168
|
-
@log_level
|
169
|
-
end
|
170
|
-
|
171
|
-
def self.log_level=(val)
|
172
|
-
# Backwards compatibility for values that we briefly allowed
|
173
|
-
if val == "debug"
|
174
|
-
val = LEVEL_DEBUG
|
175
|
-
elsif val == "info"
|
176
|
-
val = LEVEL_INFO
|
177
|
-
end
|
178
|
-
|
179
|
-
if !val.nil? && ![LEVEL_DEBUG, LEVEL_ERROR, LEVEL_INFO].include?(val)
|
180
|
-
raise ArgumentError,
|
181
|
-
"log_level should only be set to `nil`, `debug` or `info`"
|
182
|
-
end
|
183
|
-
@log_level = val
|
184
|
-
end
|
185
|
-
|
186
|
-
# Sets a logger to which logging output will be sent. The logger should
|
187
|
-
# support the same interface as the `Logger` class that's part of Ruby's
|
188
|
-
# standard library (hint, anything in `Rails.logger` will likely be
|
189
|
-
# suitable).
|
190
|
-
#
|
191
|
-
# If `.logger` is set, the value of `.log_level` is ignored. The decision on
|
192
|
-
# what levels to print is entirely deferred to the logger.
|
193
|
-
def self.logger
|
194
|
-
@logger
|
195
|
-
end
|
196
|
-
|
197
|
-
def self.logger=(val)
|
198
|
-
@logger = val
|
199
|
-
end
|
200
|
-
|
201
|
-
def self.max_network_retries
|
202
|
-
@max_network_retries
|
203
|
-
end
|
204
|
-
|
205
|
-
def self.max_network_retries=(val)
|
206
|
-
@max_network_retries = val.to_i
|
207
|
-
end
|
208
|
-
|
209
|
-
def self.open_timeout=(open_timeout)
|
210
|
-
@open_timeout = open_timeout
|
211
|
-
StripeClient.clear_all_connection_managers
|
212
|
-
end
|
213
|
-
|
214
|
-
def self.proxy=(proxy)
|
215
|
-
@proxy = proxy
|
216
|
-
StripeClient.clear_all_connection_managers
|
217
|
-
end
|
218
|
-
|
219
|
-
def self.read_timeout=(read_timeout)
|
220
|
-
@read_timeout = read_timeout
|
221
|
-
StripeClient.clear_all_connection_managers
|
222
|
-
end
|
223
|
-
|
224
100
|
# Sets some basic information about the running application that's sent along
|
225
101
|
# with API requests. Useful for plugin authors to identify their plugin when
|
226
102
|
# communicating with Stripe.
|
@@ -234,16 +110,6 @@ module Stripe
|
|
234
110
|
version: version,
|
235
111
|
}
|
236
112
|
end
|
237
|
-
|
238
|
-
def self.uploads_base=(uploads_base)
|
239
|
-
@uploads_base = uploads_base
|
240
|
-
StripeClient.clear_all_connection_managers
|
241
|
-
end
|
242
|
-
|
243
|
-
def self.verify_ssl_certs=(verify_ssl_certs)
|
244
|
-
@verify_ssl_certs = verify_ssl_certs
|
245
|
-
StripeClient.clear_all_connection_managers
|
246
|
-
end
|
247
113
|
end
|
248
114
|
|
249
115
|
Stripe.log_level = ENV["STRIPE_LOG"] unless ENV["STRIPE_LOG"].nil?
|
@@ -0,0 +1,167 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stripe
|
4
|
+
# Configurable options:
|
5
|
+
#
|
6
|
+
# =ca_bundle_path=
|
7
|
+
# The location of a file containing a bundle of CA certificates. By default
|
8
|
+
# the library will use an included bundle that can successfully validate
|
9
|
+
# Stripe certificates.
|
10
|
+
#
|
11
|
+
# =log_level=
|
12
|
+
# When set prompts the library to log some extra information to $stdout and
|
13
|
+
# $stderr about what it's doing. For example, it'll produce information about
|
14
|
+
# requests, responses, and errors that are received. Valid log levels are
|
15
|
+
# `debug` and `info`, with `debug` being a little more verbose in places.
|
16
|
+
#
|
17
|
+
# Use of this configuration is only useful when `.logger` is _not_ set. When
|
18
|
+
# it is, the decision what levels to print is entirely deferred to the logger.
|
19
|
+
#
|
20
|
+
# =logger=
|
21
|
+
# The logger should support the same interface as the `Logger` class that's
|
22
|
+
# part of Ruby's standard library (hint, anything in `Rails.logger` will
|
23
|
+
# likely be suitable).
|
24
|
+
#
|
25
|
+
# If `.logger` is set, the value of `.log_level` is ignored. The decision on
|
26
|
+
# what levels to print is entirely deferred to the logger.
|
27
|
+
class StripeConfiguration
|
28
|
+
attr_accessor :api_key
|
29
|
+
attr_accessor :api_version
|
30
|
+
attr_accessor :client_id
|
31
|
+
attr_accessor :enable_telemetry
|
32
|
+
attr_accessor :logger
|
33
|
+
attr_accessor :stripe_account
|
34
|
+
|
35
|
+
attr_reader :api_base
|
36
|
+
attr_reader :uploads_base
|
37
|
+
attr_reader :connect_base
|
38
|
+
attr_reader :ca_bundle_path
|
39
|
+
attr_reader :log_level
|
40
|
+
attr_reader :initial_network_retry_delay
|
41
|
+
attr_reader :max_network_retries
|
42
|
+
attr_reader :max_network_retry_delay
|
43
|
+
attr_reader :open_timeout
|
44
|
+
attr_reader :read_timeout
|
45
|
+
attr_reader :proxy
|
46
|
+
attr_reader :verify_ssl_certs
|
47
|
+
|
48
|
+
def self.setup
|
49
|
+
new.tap do |instance|
|
50
|
+
yield(instance) if block_given?
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Create a new config based off an existing one. This is useful when the
|
55
|
+
# caller wants to override the global configuration
|
56
|
+
def reverse_duplicate_merge(hash)
|
57
|
+
dup.tap do |instance|
|
58
|
+
hash.each do |option, value|
|
59
|
+
instance.public_send("#{option}=", value)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def initialize
|
65
|
+
@ca_bundle_path = Stripe::DEFAULT_CA_BUNDLE_PATH
|
66
|
+
@enable_telemetry = true
|
67
|
+
@verify_ssl_certs = true
|
68
|
+
|
69
|
+
@max_network_retries = 0
|
70
|
+
@initial_network_retry_delay = 0.5
|
71
|
+
@max_network_retry_delay = 2
|
72
|
+
|
73
|
+
@open_timeout = 30
|
74
|
+
@read_timeout = 80
|
75
|
+
|
76
|
+
@api_base = "https://api.stripe.com"
|
77
|
+
@connect_base = "https://connect.stripe.com"
|
78
|
+
@uploads_base = "https://files.stripe.com"
|
79
|
+
end
|
80
|
+
|
81
|
+
def log_level=(val)
|
82
|
+
# Backwards compatibility for values that we briefly allowed
|
83
|
+
if val == "debug"
|
84
|
+
val = Stripe::LEVEL_DEBUG
|
85
|
+
elsif val == "info"
|
86
|
+
val = Stripe::LEVEL_INFO
|
87
|
+
end
|
88
|
+
|
89
|
+
levels = [Stripe::LEVEL_INFO, Stripe::LEVEL_DEBUG, Stripe::LEVEL_ERROR]
|
90
|
+
|
91
|
+
if !val.nil? && !levels.include?(val)
|
92
|
+
raise ArgumentError,
|
93
|
+
"log_level should only be set to `nil`, `debug` or `info`"
|
94
|
+
end
|
95
|
+
@log_level = val
|
96
|
+
end
|
97
|
+
|
98
|
+
def max_network_retries=(val)
|
99
|
+
@max_network_retries = val.to_i
|
100
|
+
end
|
101
|
+
|
102
|
+
def open_timeout=(open_timeout)
|
103
|
+
@open_timeout = open_timeout
|
104
|
+
StripeClient.clear_all_connection_managers
|
105
|
+
end
|
106
|
+
|
107
|
+
def read_timeout=(read_timeout)
|
108
|
+
@read_timeout = read_timeout
|
109
|
+
StripeClient.clear_all_connection_managers
|
110
|
+
end
|
111
|
+
|
112
|
+
def proxy=(proxy)
|
113
|
+
@proxy = proxy
|
114
|
+
StripeClient.clear_all_connection_managers
|
115
|
+
end
|
116
|
+
|
117
|
+
def verify_ssl_certs=(verify_ssl_certs)
|
118
|
+
@verify_ssl_certs = verify_ssl_certs
|
119
|
+
StripeClient.clear_all_connection_managers
|
120
|
+
end
|
121
|
+
|
122
|
+
def uploads_base=(uploads_base)
|
123
|
+
@uploads_base = uploads_base
|
124
|
+
StripeClient.clear_all_connection_managers
|
125
|
+
end
|
126
|
+
|
127
|
+
def connect_base=(connect_base)
|
128
|
+
@connect_base = connect_base
|
129
|
+
StripeClient.clear_all_connection_managers
|
130
|
+
end
|
131
|
+
|
132
|
+
def api_base=(api_base)
|
133
|
+
@api_base = api_base
|
134
|
+
StripeClient.clear_all_connection_managers
|
135
|
+
end
|
136
|
+
|
137
|
+
def ca_bundle_path=(path)
|
138
|
+
@ca_bundle_path = path
|
139
|
+
|
140
|
+
# empty this field so a new store is initialized
|
141
|
+
@ca_store = nil
|
142
|
+
|
143
|
+
StripeClient.clear_all_connection_managers
|
144
|
+
end
|
145
|
+
|
146
|
+
# A certificate store initialized from the the bundle in #ca_bundle_path and
|
147
|
+
# which is used to validate TLS on every request.
|
148
|
+
#
|
149
|
+
# This was added to the give the gem "pseudo thread safety" in that it seems
|
150
|
+
# when initiating many parallel requests marshaling the certificate store is
|
151
|
+
# the most likely point of failure (see issue #382). Any program attempting
|
152
|
+
# to leverage this pseudo safety should make a call to this method (i.e.
|
153
|
+
# `Stripe.ca_store`) in their initialization code because it marshals lazily
|
154
|
+
# and is itself not thread safe.
|
155
|
+
def ca_store
|
156
|
+
@ca_store ||= begin
|
157
|
+
store = OpenSSL::X509::Store.new
|
158
|
+
store.add_file(ca_bundle_path)
|
159
|
+
store
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
def enable_telemetry?
|
164
|
+
enable_telemetry
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
data/lib/stripe/stripe_object.rb
CHANGED
@@ -375,7 +375,7 @@ module Stripe
|
|
375
375
|
begin
|
376
376
|
super
|
377
377
|
rescue NoMethodError => e
|
378
|
-
# If we notice the accessed name
|
378
|
+
# If we notice the accessed name of our set of transient values we can
|
379
379
|
# give the user a slightly more helpful error message. If not, just
|
380
380
|
# raise right away.
|
381
381
|
raise unless @transient_values.include?(name)
|
data/lib/stripe/version.rb
CHANGED
@@ -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
|
data/test/stripe_test.rb
CHANGED
@@ -23,28 +23,97 @@ class StripeTest < Test::Unit::TestCase
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
Stripe.
|
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
|
-
|
47
|
-
|
48
|
-
|
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
|
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.
|
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-08-
|
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.
|
@@ -138,6 +138,7 @@ files:
|
|
138
138
|
- lib/stripe/resources/webhook_endpoint.rb
|
139
139
|
- lib/stripe/singleton_api_resource.rb
|
140
140
|
- lib/stripe/stripe_client.rb
|
141
|
+
- lib/stripe/stripe_configuration.rb
|
141
142
|
- lib/stripe/stripe_object.rb
|
142
143
|
- lib/stripe/stripe_response.rb
|
143
144
|
- lib/stripe/util.rb
|
@@ -211,6 +212,7 @@ files:
|
|
211
212
|
- test/stripe/sku_test.rb
|
212
213
|
- test/stripe/source_test.rb
|
213
214
|
- test/stripe/stripe_client_test.rb
|
215
|
+
- test/stripe/stripe_configuration_test.rb
|
214
216
|
- test/stripe/stripe_object_test.rb
|
215
217
|
- test/stripe/stripe_response_test.rb
|
216
218
|
- test/stripe/subscription_item_test.rb
|
@@ -329,6 +331,7 @@ test_files:
|
|
329
331
|
- test/stripe/sku_test.rb
|
330
332
|
- test/stripe/source_test.rb
|
331
333
|
- test/stripe/stripe_client_test.rb
|
334
|
+
- test/stripe/stripe_configuration_test.rb
|
332
335
|
- test/stripe/stripe_object_test.rb
|
333
336
|
- test/stripe/stripe_response_test.rb
|
334
337
|
- test/stripe/subscription_item_test.rb
|