stripe 4.5.0 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 176cc43da4fb0e5967142300c7d5f22f4c13b21b81dfc01dd703a99396d3cb39
4
- data.tar.gz: a7c12a9c2d2758377902ef75822ede38e9e0680343778e080cb6c6cec7b814fc
3
+ metadata.gz: 30001fb9ea2136d96728f5eac636ad6b86f787193fa18339ea0e594d8948d50c
4
+ data.tar.gz: 3eaf42ef3e0d39478fd7f386031cfd689df6b15c4d6005aafe93d733cf94ae45
5
5
  SHA512:
6
- metadata.gz: 1d01504fe2c3080c4ffd469f91c8250da6e98ddc519df7182d0c0c2d92d1095be58669a619f880b9bef831be96905fece73c14fdc81d56af1a9a74d2f5a30ad1
7
- data.tar.gz: 22795339a7d756f0960f8dba40dd4e9541d01e11e0cd48b0bfde30dbd0e29574c9c206288457a8a3e86c94a916c3358d787670c22053507ea11557274794bfb1
6
+ metadata.gz: 1eb34606d76dbb884ce72323554009f4305c353ede914389b2e7a43bb297bccf39a30f4e7d32bcbf881c1adc1ae51df62f729c27ac253d83c585f38d951a4bdf
7
+ data.tar.gz: 17b31fdc7ab1d49e23b07e2882a121ee28e3116512a766a8323241ea8681cf02396c8b00a0a850cadafde3fb6b69431829cf3ca6c439cee5b46aa98218320379
@@ -17,13 +17,15 @@ sudo: false
17
17
  env:
18
18
  global:
19
19
  # If changing this number, please also change it in `test/test_helper.rb`.
20
- - STRIPE_MOCK_VERSION=0.40.0
20
+ - STRIPE_MOCK_VERSION=0.40.1
21
21
 
22
22
  cache:
23
23
  directories:
24
24
  - stripe-mock
25
25
 
26
26
  before_install:
27
+ # Install bundler 1.x, because we need to support Ruby 2.1 for now
28
+ - gem install bundler -v "~> 1.0"
27
29
  # Unpack and start stripe-mock so that the test suite can talk to it
28
30
  - |
29
31
  if [ ! -d "stripe-mock/stripe-mock_${STRIPE_MOCK_VERSION}" ]; then
@@ -34,6 +36,7 @@ before_install:
34
36
  - |
35
37
  stripe-mock/stripe-mock_${STRIPE_MOCK_VERSION}/stripe-mock > /dev/null &
36
38
  STRIPE_MOCK_PID=$!
39
+ - export PATH="${PATH}:${PWD}/stripe-mock/stripe-mock_${STRIPE_MOCK_VERSION}"
37
40
 
38
41
  script:
39
42
  - bundle exec rake
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.6.0 - 2019-01-21
4
+ * [#736](https://github.com/stripe/stripe-ruby/pull/736) Properly serialize `individual` on `Account` objects
5
+
3
6
  ## 4.5.0 - 2019-01-02
4
7
  * [#719](https://github.com/stripe/stripe-ruby/pull/719) Generate OAuth authorize URLs for Express accounts as well as standard
5
8
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.5.0
1
+ 4.6.0
@@ -80,10 +80,10 @@ module Stripe
80
80
  # We're trying to get this overturned on the server side, but for now,
81
81
  # patch in a special allowance.
82
82
  def serialize_params(options = {})
83
- serialize_params_account(self, super)
83
+ serialize_params_account(self, super, options)
84
84
  end
85
85
 
86
- def serialize_params_account(_obj, update_hash)
86
+ def serialize_params_account(_obj, update_hash, options = {})
87
87
  if (entity = @values[:legal_entity])
88
88
  if (owners = entity[:additional_owners])
89
89
  entity_update = update_hash[:legal_entity] ||= {}
@@ -91,6 +91,11 @@ module Stripe
91
91
  serialize_additional_owners(entity, owners)
92
92
  end
93
93
  end
94
+ if (individual = @values[:individual])
95
+ if individual.is_a?(Person) && !update_hash.key?(:individual)
96
+ update_hash[:individual] = individual.serialize_params(options)
97
+ end
98
+ end
94
99
  update_hash
95
100
  end
96
101
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stripe
4
- VERSION = "4.5.0".freeze
4
+ VERSION = "4.6.0".freeze
5
5
  end
@@ -0,0 +1,9 @@
1
+ ## Using custom OpenAPI specification and fixtures files
2
+
3
+ You can place custom OpenAPI specification and fixtures files in this
4
+ directory. The files must be in JSON format, and must be named `spec3.json`
5
+ and `fixtures3.json` respectively.
6
+
7
+ If those files are present, the test suite will start its own stripe-mock
8
+ process on a random available port. In order for this to work, `stripe-mock`
9
+ must be on the `PATH` in the environment used to run the test suite.
@@ -195,6 +195,57 @@ module Stripe
195
195
  }
196
196
  assert_equal(expected, obj.serialize_params)
197
197
  end
198
+
199
+ should "serialize on a new individual" do
200
+ obj = Stripe::Util.convert_to_stripe_object({
201
+ object: "account",
202
+ }, {})
203
+ obj.individual = { first_name: "Jane" }
204
+
205
+ expected = { individual: { first_name: "Jane" } }
206
+ assert_equal(expected, obj.serialize_params)
207
+ end
208
+
209
+ should "serialize on a partially changed individual" do
210
+ obj = Stripe::Util.convert_to_stripe_object({
211
+ object: "account",
212
+ individual: Stripe::Util.convert_to_stripe_object({
213
+ object: "person",
214
+ first_name: "Jenny",
215
+ }, {}),
216
+ }, {})
217
+ obj.individual = { first_name: "Jane" }
218
+
219
+ expected = { individual: { first_name: "Jane" } }
220
+ assert_equal(expected, obj.serialize_params)
221
+ end
222
+
223
+ should "serialize on an unchanged individual" do
224
+ obj = Stripe::Util.convert_to_stripe_object({
225
+ object: "account",
226
+ individual: Stripe::Util.convert_to_stripe_object({
227
+ object: "person",
228
+ first_name: "Jenny",
229
+ }, {}),
230
+ }, {})
231
+
232
+ expected = { individual: {} }
233
+ assert_equal(expected, obj.serialize_params)
234
+ end
235
+
236
+ should "serialize on an unset individual" do
237
+ obj = Stripe::Util.convert_to_stripe_object({
238
+ object: "account",
239
+ individual: Stripe::Util.convert_to_stripe_object({
240
+ object: "person",
241
+ first_name: "Jenny",
242
+ }, {}),
243
+ }, {})
244
+ obj.individual = nil
245
+
246
+ expected = { individual: "" }
247
+ assert_equal(expected, obj.serialize_params)
248
+ end
198
249
  end
199
250
  end
200
251
  end
@@ -159,18 +159,21 @@ module Stripe
159
159
 
160
160
  context "#to_hash" do
161
161
  should "skip calling to_hash on nil" do
162
- module NilWithToHash
163
- def to_hash
164
- raise "Can't call to_hash on nil"
162
+ begin
163
+ module NilWithToHash
164
+ def to_hash
165
+ raise "Can't call to_hash on nil"
166
+ end
165
167
  end
168
+ ::NilClass.include NilWithToHash
169
+
170
+ hash_with_nil = { id: 3, foo: nil }
171
+ obj = StripeObject.construct_from(hash_with_nil)
172
+ expected_hash = { id: 3, foo: nil }
173
+ assert_equal expected_hash, obj.to_hash
174
+ ensure
175
+ ::NilClass.send(:undef_method, :to_hash)
166
176
  end
167
- # include is private in Ruby 2.0
168
- NilClass.send(:include, NilWithToHash)
169
-
170
- hash_with_nil = { id: 3, foo: nil }
171
- obj = StripeObject.construct_from(hash_with_nil)
172
- expected_hash = { id: 3, foo: nil }
173
- assert_equal expected_hash, obj.to_hash
174
177
  end
175
178
 
176
179
  should "recursively call to_hash on its values" do
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class StripeMock
5
+ include Singleton
6
+
7
+ PATH_SPEC = "#{::File.dirname(__FILE__)}/openapi/spec3.json".freeze
8
+ PATH_FIXTURES = "#{::File.dirname(__FILE__)}/openapi/fixtures3.json".freeze
9
+
10
+ @pid = nil
11
+ @port = -1
12
+
13
+ # Starts stripe-mock, if necessary. Returns the port on which stripe-mock is listening.
14
+ def self.start
15
+ unless ::File.exist?(PATH_SPEC)
16
+ port = ENV["STRIPE_MOCK_PORT"] || 12_111
17
+ puts("No custom spec file found, assuming stripe-mock is already running on port #{port}")
18
+ return port
19
+ end
20
+
21
+ unless @pid.nil?
22
+ puts("stripe-mock already running on port #{@port}")
23
+ return @port
24
+ end
25
+
26
+ @port = find_available_port
27
+
28
+ puts("Starting stripe-mock on port #{@port}...")
29
+
30
+ @stdout, @child_stdout = ::IO.pipe
31
+ @stderr, @child_stderr = ::IO.pipe
32
+
33
+ @pid = ::Process.spawn(
34
+ ["stripe-mock", "stripe-mock"],
35
+ "-http-port",
36
+ @port.to_s,
37
+ "-spec",
38
+ PATH_SPEC,
39
+ "-fixtures",
40
+ PATH_FIXTURES,
41
+ out: @child_stdout,
42
+ err: @child_stderr
43
+ )
44
+
45
+ [@child_stdout, @child_stderr].each(&:close)
46
+
47
+ sleep 1
48
+
49
+ status = (::Process.wait2(@pid, ::Process::WNOHANG) || []).last
50
+ if status.nil?
51
+ puts("Started stripe-mock, PID = #{@pid}")
52
+ else
53
+ abort("stripe-mock terminated early: #{status}")
54
+ end
55
+
56
+ @port
57
+ end
58
+
59
+ # Stops stripe-mock, if necessary.
60
+ def self.stop
61
+ return if @pid.nil?
62
+ puts("Stopping stripe-mock...")
63
+ ::Process.kill(:SIGTERM, @pid)
64
+ ::Process.waitpid2(@pid)
65
+ @pid = nil
66
+ @port = -1
67
+ puts("Stopped stripe-mock")
68
+ end
69
+
70
+ # Finds and returns an available TCP port
71
+ private_class_method def self.find_available_port
72
+ server = TCPServer.new("localhost", 0)
73
+ port = server.addr[1]
74
+ server.close
75
+ port
76
+ end
77
+ end
78
+ end
@@ -14,10 +14,11 @@ require "webmock/test_unit"
14
14
  PROJECT_ROOT = ::File.expand_path("../../", __FILE__)
15
15
 
16
16
  require ::File.expand_path("../test_data", __FILE__)
17
+ require ::File.expand_path("../stripe_mock", __FILE__)
17
18
 
18
19
  # If changing this number, please also change it in `.travis.yml`.
19
- MOCK_MINIMUM_VERSION = "0.40.0".freeze
20
- MOCK_PORT = ENV["STRIPE_MOCK_PORT"] || 12_111
20
+ MOCK_MINIMUM_VERSION = "0.40.1".freeze
21
+ MOCK_PORT = Stripe::StripeMock.start
21
22
 
22
23
  # Disable all real network connections except those that are outgoing to
23
24
  # stripe-mock.
@@ -41,6 +42,10 @@ rescue Faraday::ConnectionFailed
41
42
  "it running? Please see README for setup instructions.")
42
43
  end
43
44
 
45
+ Test::Unit.at_exit do
46
+ Stripe::StripeMock.stop
47
+ end
48
+
44
49
  module Test
45
50
  module Unit
46
51
  class TestCase
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: 4.5.0
4
+ version: 4.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-02 00:00:00.000000000 Z
11
+ date: 2019-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -148,6 +148,7 @@ files:
148
148
  - lib/stripe/webhook_endpoint.rb
149
149
  - stripe.gemspec
150
150
  - test/api_stub_helpers.rb
151
+ - test/openapi/README.md
151
152
  - test/stripe/account_external_accounts_operations_test.rb
152
153
  - test/stripe/account_link_test.rb
153
154
  - test/stripe/account_login_links_operations_test.rb
@@ -224,6 +225,7 @@ files:
224
225
  - test/stripe/util_test.rb
225
226
  - test/stripe/webhook_endpoint_test.rb
226
227
  - test/stripe/webhook_test.rb
228
+ - test/stripe_mock.rb
227
229
  - test/stripe_test.rb
228
230
  - test/test_data.rb
229
231
  - test/test_helper.rb
@@ -247,12 +249,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
249
  version: '0'
248
250
  requirements: []
249
251
  rubyforge_project:
250
- rubygems_version: 2.7.7
252
+ rubygems_version: 2.7.8
251
253
  signing_key:
252
254
  specification_version: 4
253
255
  summary: Ruby bindings for the Stripe API
254
256
  test_files:
255
257
  - test/api_stub_helpers.rb
258
+ - test/openapi/README.md
256
259
  - test/stripe/account_external_accounts_operations_test.rb
257
260
  - test/stripe/account_link_test.rb
258
261
  - test/stripe/account_login_links_operations_test.rb
@@ -329,6 +332,7 @@ test_files:
329
332
  - test/stripe/util_test.rb
330
333
  - test/stripe/webhook_endpoint_test.rb
331
334
  - test/stripe/webhook_test.rb
335
+ - test/stripe_mock.rb
332
336
  - test/stripe_test.rb
333
337
  - test/test_data.rb
334
338
  - test/test_helper.rb