stripe 3.0.1 → 3.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.txt +18 -2
- data/VERSION +1 -1
- data/lib/stripe/errors.rb +6 -0
- data/lib/stripe/stripe_client.rb +5 -3
- data/lib/stripe/version.rb +1 -1
- data/test/stripe/invoice_test.rb +13 -0
- data/test/stripe/stripe_client_test.rb +57 -0
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71ad66341e1b3896e85749e3f18870b734386a86
|
4
|
+
data.tar.gz: 67175bb4549ab20ca69f38016e9f7d96aedaa817
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f740ee89ea7c34c45944dc299ba346ad715c96b736a05dc6ad2f13337125656d049ff16a33671de454d5e2511e98e7431ae58caf275c934d957e3f608cb7df91
|
7
|
+
data.tar.gz: 04d28b541238aba0ce44820f5b1daf38a4a798892764d1d18e565d5d688b0d627895b037152ad976cbec982f1277dc6b7475bd5589ef152d6e7cbbebbb77b428
|
data/History.txt
CHANGED
@@ -1,7 +1,21 @@
|
|
1
|
+
=== 3.0.3 2017-07-28
|
2
|
+
|
3
|
+
* Revert `nil` to empty string coercion from 3.0.2
|
4
|
+
* Handle `invalid_client` OAuth error code
|
5
|
+
* Improve safety of error handling logic safer for unrecognized OAuth error
|
6
|
+
codes
|
7
|
+
|
8
|
+
=== 3.0.2 2017-07-12 (yanked)
|
9
|
+
|
10
|
+
* Convert `nil` to empty string when serializing parameters (instead of
|
11
|
+
opaquely dropping it) -- NOTE: this change has since been reverted
|
12
|
+
|
1
13
|
=== 3.0.1 2017-07-11
|
2
14
|
|
3
|
-
* Properties set with an API resource will now serialize that resource's ID if
|
4
|
-
|
15
|
+
* Properties set with an API resource will now serialize that resource's ID if
|
16
|
+
possible
|
17
|
+
* API resources will throw an ArgumentError on save if a property has been with
|
18
|
+
an API resource that cannot be serialized
|
5
19
|
|
6
20
|
=== 3.0.0 2017-06-27
|
7
21
|
|
@@ -652,3 +666,5 @@ Identical to 1.56.0 above. I incorrectly cut a patch-level release.
|
|
652
666
|
|
653
667
|
* 1 major enhancement:
|
654
668
|
* Initial release
|
669
|
+
|
670
|
+
# vim: set tw=79:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.3
|
data/lib/stripe/errors.rb
CHANGED
@@ -114,6 +114,12 @@ module Stripe
|
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
|
+
# InvalidClientError is raised when the client doesn't belong to you, or
|
118
|
+
# the API key mode (live or test) doesn't match the client mode. Or the
|
119
|
+
# stripe_user_id doesn't exist or isn't connected to your application.
|
120
|
+
class InvalidClientError < OAuthError
|
121
|
+
end
|
122
|
+
|
117
123
|
# InvalidGrantError is raised when a specified code doesn't exist, is
|
118
124
|
# expired, has been used, or doesn't belong to you; a refresh token doesn't
|
119
125
|
# exist, or doesn't belong to you; or if an API key's mode (live or test)
|
data/lib/stripe/stripe_client.rb
CHANGED
@@ -244,8 +244,7 @@ module Stripe
|
|
244
244
|
|
245
245
|
if error_data.is_a?(String)
|
246
246
|
error = specific_oauth_error(resp, error_data)
|
247
|
-
|
248
|
-
if error.nil?
|
247
|
+
else
|
249
248
|
error = specific_api_error(resp, error_data)
|
250
249
|
end
|
251
250
|
|
@@ -307,13 +306,16 @@ module Stripe
|
|
307
306
|
}]
|
308
307
|
|
309
308
|
case error_code
|
309
|
+
when 'invalid_client' then OAuth::InvalidClientError.new(*args)
|
310
310
|
when 'invalid_grant' then OAuth::InvalidGrantError.new(*args)
|
311
311
|
when 'invalid_request' then OAuth::InvalidRequestError.new(*args)
|
312
312
|
when 'invalid_scope' then OAuth::InvalidScopeError.new(*args)
|
313
313
|
when 'unsupported_grant_type' then OAuth::UnsupportedGrantTypeError.new(*args)
|
314
314
|
when 'unsupported_response_type' then OAuth::UnsupportedResponseTypeError.new(*args)
|
315
315
|
else
|
316
|
-
|
316
|
+
# We'd prefer that all errors are typed, but we create a generic
|
317
|
+
# OAuthError in case we run into a code that we don't recognize.
|
318
|
+
OAuth::OAuthError.new(*args)
|
317
319
|
end
|
318
320
|
end
|
319
321
|
|
data/lib/stripe/version.rb
CHANGED
data/test/stripe/invoice_test.rb
CHANGED
@@ -74,6 +74,19 @@ module Stripe
|
|
74
74
|
}
|
75
75
|
assert invoice.kind_of?(Stripe::Invoice)
|
76
76
|
end
|
77
|
+
|
78
|
+
should "be callable with an empty string" do
|
79
|
+
invoice = Stripe::Invoice.upcoming(
|
80
|
+
coupon: '',
|
81
|
+
customer: API_FIXTURES[:customer][:id]
|
82
|
+
)
|
83
|
+
assert_requested :get, "#{Stripe.api_base}/v1/invoices/upcoming",
|
84
|
+
query: {
|
85
|
+
coupon: '',
|
86
|
+
customer: API_FIXTURES[:customer][:id]
|
87
|
+
}
|
88
|
+
assert invoice.kind_of?(Stripe::Invoice)
|
89
|
+
end
|
77
90
|
end
|
78
91
|
end
|
79
92
|
end
|
@@ -368,6 +368,42 @@ module Stripe
|
|
368
368
|
assert_equal('invalid_grant', e.code)
|
369
369
|
assert_equal('This authorization code has already been used. All tokens issued with this code have been revoked.', e.message)
|
370
370
|
end
|
371
|
+
|
372
|
+
should "raise OAuth::InvalidClientError when error is a string with value 'invalid_client'" do
|
373
|
+
stub_request(:post, "#{Stripe.connect_base}/oauth/deauthorize").
|
374
|
+
to_return(body: JSON.generate({
|
375
|
+
error: "invalid_client",
|
376
|
+
error_description: "This application is not connected to stripe account acct_19tLK7DSlTMT26Mk, or that account does not exist.",
|
377
|
+
}), status: 401)
|
378
|
+
|
379
|
+
client = StripeClient.new
|
380
|
+
opts = {api_base: Stripe.connect_base}
|
381
|
+
e = assert_raises Stripe::OAuth::InvalidClientError do
|
382
|
+
client.execute_request(:post, '/oauth/deauthorize', opts)
|
383
|
+
end
|
384
|
+
|
385
|
+
assert_equal(401, e.http_status)
|
386
|
+
assert_equal('invalid_client', e.code)
|
387
|
+
assert_equal('This application is not connected to stripe account acct_19tLK7DSlTMT26Mk, or that account does not exist.', e.message)
|
388
|
+
end
|
389
|
+
|
390
|
+
should "raise Stripe::OAuthError on indeterminate OAuth error" do
|
391
|
+
stub_request(:post, "#{Stripe.connect_base}/oauth/deauthorize").
|
392
|
+
to_return(body: JSON.generate({
|
393
|
+
error: "new_code_not_recognized",
|
394
|
+
error_description: "Something.",
|
395
|
+
}), status: 401)
|
396
|
+
|
397
|
+
client = StripeClient.new
|
398
|
+
opts = {api_base: Stripe.connect_base}
|
399
|
+
e = assert_raises Stripe::OAuth::OAuthError do
|
400
|
+
client.execute_request(:post, '/oauth/deauthorize', opts)
|
401
|
+
end
|
402
|
+
|
403
|
+
assert_equal(401, e.http_status)
|
404
|
+
assert_equal("new_code_not_recognized", e.code)
|
405
|
+
assert_equal("Something.", e.message)
|
406
|
+
end
|
371
407
|
end
|
372
408
|
|
373
409
|
context "idempotency keys" do
|
@@ -455,6 +491,27 @@ module Stripe
|
|
455
491
|
client.execute_request(:post, '/v1/charges')
|
456
492
|
end
|
457
493
|
end
|
494
|
+
|
495
|
+
context "params serialization" do
|
496
|
+
should 'allows empty strings in params' do
|
497
|
+
client = StripeClient.new
|
498
|
+
client.execute_request(:get, '/v1/invoices/upcoming',
|
499
|
+
params: { customer: API_FIXTURES[:customer][:id],
|
500
|
+
coupon: '' })
|
501
|
+
assert_requested(:get, "#{Stripe.api_base}/v1/invoices/upcoming?",
|
502
|
+
query: { customer: API_FIXTURES[:customer][:id],
|
503
|
+
coupon: '' })
|
504
|
+
end
|
505
|
+
|
506
|
+
should 'filter nils in params' do
|
507
|
+
client = StripeClient.new
|
508
|
+
client.execute_request(:get, '/v1/invoices/upcoming',
|
509
|
+
params: { customer: API_FIXTURES[:customer][:id],
|
510
|
+
coupon: nil })
|
511
|
+
assert_requested(:get, "#{Stripe.api_base}/v1/invoices/upcoming?",
|
512
|
+
query: { customer: API_FIXTURES[:customer][:id] })
|
513
|
+
end
|
514
|
+
end
|
458
515
|
end
|
459
516
|
|
460
517
|
context "#request" do
|
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: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stripe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -233,4 +233,3 @@ test_files:
|
|
233
233
|
- test/stripe_test.rb
|
234
234
|
- test/test_data.rb
|
235
235
|
- test/test_helper.rb
|
236
|
-
has_rdoc:
|