stripe 1.22.0 → 1.23.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 +7 -0
- data/History.txt +4 -0
- data/VERSION +1 -1
- data/lib/stripe.rb +20 -19
- data/lib/stripe/errors/card_error.rb +3 -2
- data/lib/stripe/errors/invalid_request_error.rb +3 -2
- data/lib/stripe/errors/stripe_error.rb +8 -2
- data/lib/stripe/version.rb +1 -1
- data/test/stripe/account_test.rb +9 -9
- data/test/stripe/api_resource_test.rb +48 -48
- data/test/stripe/application_fee_refund_test.rb +6 -6
- data/test/stripe/application_fee_test.rb +2 -2
- data/test/stripe/balance_test.rb +1 -1
- data/test/stripe/bitcoin_receiver_test.rb +12 -12
- data/test/stripe/charge_test.rb +12 -12
- data/test/stripe/coupon_test.rb +3 -3
- data/test/stripe/customer_card_test.rb +8 -8
- data/test/stripe/customer_test.rb +14 -14
- data/test/stripe/file_upload_test.rb +3 -3
- data/test/stripe/invoice_test.rb +6 -6
- data/test/stripe/list_object_test.rb +2 -2
- data/test/stripe/metadata_test.rb +10 -10
- data/test/stripe/recipient_card_test.rb +8 -8
- data/test/stripe/refund_test.rb +6 -6
- data/test/stripe/reversal_test.rb +6 -6
- data/test/stripe/subscription_test.rb +13 -13
- data/test/stripe/transfer_test.rb +4 -4
- data/test/test_data.rb +72 -67
- metadata +21 -35
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8bf9ef8e5a7343b1993b9b828ff317326bf78591
|
4
|
+
data.tar.gz: fdae2b4926156adfa71f047dd830f1ff1032c3a8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5628f1bdbf7b87c0ed664944d60373923741d286bf26e037224a99039930a542beddd15f86304b081cdfd80619926719bee81302ba8a5b2e4823df763b9024fb
|
7
|
+
data.tar.gz: 20de174deab2c119dd0521cf700354a7d90cdbd948ef2980ef65d50678edccb54b5f9ff7eb62359d857b770671c3f28059aab40eed62ee2e8d1671ff8457e5d0
|
data/History.txt
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.23.0
|
data/lib/stripe.rb
CHANGED
@@ -139,8 +139,8 @@ module Stripe
|
|
139
139
|
raise
|
140
140
|
end
|
141
141
|
rescue RestClient::ExceptionWithResponse => e
|
142
|
-
if
|
143
|
-
handle_api_error(
|
142
|
+
if e.response
|
143
|
+
handle_api_error(e.response)
|
144
144
|
else
|
145
145
|
handle_restclient_error(e, api_base_url)
|
146
146
|
end
|
@@ -241,45 +241,46 @@ module Stripe
|
|
241
241
|
"(HTTP response code was #{rcode})", rcode, rbody)
|
242
242
|
end
|
243
243
|
|
244
|
-
def self.handle_api_error(
|
244
|
+
def self.handle_api_error(resp)
|
245
245
|
begin
|
246
|
-
error_obj = JSON.parse(
|
246
|
+
error_obj = JSON.parse(resp.body)
|
247
247
|
error_obj = Util.symbolize_names(error_obj)
|
248
248
|
error = error_obj[:error] or raise StripeError.new # escape from parsing
|
249
249
|
|
250
250
|
rescue JSON::ParserError, StripeError
|
251
|
-
raise general_api_error(
|
251
|
+
raise general_api_error(resp.code, resp.body)
|
252
252
|
end
|
253
253
|
|
254
|
-
case
|
254
|
+
case resp.code
|
255
255
|
when 400, 404
|
256
|
-
raise invalid_request_error
|
256
|
+
raise invalid_request_error(error, resp, error_obj)
|
257
257
|
when 401
|
258
|
-
raise authentication_error
|
258
|
+
raise authentication_error(error, resp, error_obj)
|
259
259
|
when 402
|
260
|
-
raise card_error
|
260
|
+
raise card_error(error, resp, error_obj)
|
261
261
|
else
|
262
|
-
raise api_error
|
262
|
+
raise api_error(error, resp, error_obj)
|
263
263
|
end
|
264
264
|
|
265
265
|
end
|
266
266
|
|
267
|
-
def self.invalid_request_error(error,
|
268
|
-
InvalidRequestError.new(error[:message], error[:param],
|
269
|
-
|
267
|
+
def self.invalid_request_error(error, resp, error_obj)
|
268
|
+
InvalidRequestError.new(error[:message], error[:param], resp.code,
|
269
|
+
resp.body, error_obj, resp.headers)
|
270
270
|
end
|
271
271
|
|
272
|
-
def self.authentication_error(error,
|
273
|
-
AuthenticationError.new(error[:message],
|
272
|
+
def self.authentication_error(error, resp, error_obj)
|
273
|
+
AuthenticationError.new(error[:message], resp.code, resp.body, error_obj,
|
274
|
+
resp.headers)
|
274
275
|
end
|
275
276
|
|
276
|
-
def self.card_error(error,
|
277
|
+
def self.card_error(error, resp, error_obj)
|
277
278
|
CardError.new(error[:message], error[:param], error[:code],
|
278
|
-
|
279
|
+
resp.code, resp.body, error_obj, resp.headers)
|
279
280
|
end
|
280
281
|
|
281
|
-
def self.api_error(error,
|
282
|
-
APIError.new(error[:message],
|
282
|
+
def self.api_error(error, resp, error_obj)
|
283
|
+
APIError.new(error[:message], resp.code, resp.body, error_obj, resp.headers)
|
283
284
|
end
|
284
285
|
|
285
286
|
def self.handle_restclient_error(e, api_base_url=nil)
|
@@ -2,8 +2,9 @@ module Stripe
|
|
2
2
|
class CardError < StripeError
|
3
3
|
attr_reader :param, :code
|
4
4
|
|
5
|
-
def initialize(message, param, code, http_status=nil, http_body=nil, json_body=nil
|
6
|
-
|
5
|
+
def initialize(message, param, code, http_status=nil, http_body=nil, json_body=nil,
|
6
|
+
http_headers=nil)
|
7
|
+
super(message, http_status, http_body, json_body, http_headers)
|
7
8
|
@param = param
|
8
9
|
@code = code
|
9
10
|
end
|
@@ -2,8 +2,9 @@ module Stripe
|
|
2
2
|
class InvalidRequestError < StripeError
|
3
3
|
attr_accessor :param
|
4
4
|
|
5
|
-
def initialize(message, param, http_status=nil, http_body=nil, json_body=nil
|
6
|
-
|
5
|
+
def initialize(message, param, http_status=nil, http_body=nil, json_body=nil,
|
6
|
+
http_headers=nil)
|
7
|
+
super(message, http_status, http_body, json_body, http_headers)
|
7
8
|
@param = param
|
8
9
|
end
|
9
10
|
end
|
@@ -3,18 +3,24 @@ module Stripe
|
|
3
3
|
attr_reader :message
|
4
4
|
attr_reader :http_status
|
5
5
|
attr_reader :http_body
|
6
|
+
attr_reader :http_headers
|
7
|
+
attr_reader :request_id
|
6
8
|
attr_reader :json_body
|
7
9
|
|
8
|
-
def initialize(message=nil, http_status=nil, http_body=nil, json_body=nil
|
10
|
+
def initialize(message=nil, http_status=nil, http_body=nil, json_body=nil,
|
11
|
+
http_headers=nil)
|
9
12
|
@message = message
|
10
13
|
@http_status = http_status
|
11
14
|
@http_body = http_body
|
15
|
+
@http_headers = http_headers || {}
|
12
16
|
@json_body = json_body
|
17
|
+
@request_id = @http_headers[:request_id]
|
13
18
|
end
|
14
19
|
|
15
20
|
def to_s
|
16
21
|
status_string = @http_status.nil? ? "" : "(Status #{@http_status}) "
|
17
|
-
"#{
|
22
|
+
id_string = @request_id.nil? ? "" : "(Request #{@request_id}) "
|
23
|
+
"#{status_string}#{id_string}#{@message}"
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|
data/lib/stripe/version.rb
CHANGED
data/test/stripe/account_test.rb
CHANGED
@@ -7,7 +7,7 @@ module Stripe
|
|
7
7
|
@mock.expects(:get).
|
8
8
|
once.
|
9
9
|
with('https://api.stripe.com/v1/account', nil, nil).
|
10
|
-
returns(
|
10
|
+
returns(make_response(resp))
|
11
11
|
a = Stripe::Account.retrieve
|
12
12
|
assert_equal "test+bindings@stripe.com", a.email
|
13
13
|
assert !a.charge_enabled
|
@@ -19,7 +19,7 @@ module Stripe
|
|
19
19
|
@mock.expects(:get).
|
20
20
|
once.
|
21
21
|
with('https://api.stripe.com/v1/accounts/acct_foo', nil, nil).
|
22
|
-
returns(
|
22
|
+
returns(make_response(resp))
|
23
23
|
a = Stripe::Account.retrieve('acct_foo')
|
24
24
|
assert_equal "test+bindings@stripe.com", a.email
|
25
25
|
assert !a.charge_enabled
|
@@ -45,12 +45,12 @@ module Stripe
|
|
45
45
|
@mock.expects(:get).
|
46
46
|
once.
|
47
47
|
with('https://api.stripe.com/v1/accounts/acct_foo', nil, nil).
|
48
|
-
returns(
|
48
|
+
returns(make_response(resp))
|
49
49
|
|
50
50
|
@mock.expects(:post).
|
51
51
|
once.
|
52
52
|
with('https://api.stripe.com/v1/accounts/acct_foo', nil, 'legal_entity[first_name]=Bob&legal_entity[address][line1]=2%20Three%20Four').
|
53
|
-
returns(
|
53
|
+
returns(make_response(resp))
|
54
54
|
|
55
55
|
a = Stripe::Account.retrieve('acct_foo')
|
56
56
|
a.legal_entity.first_name = 'Bob'
|
@@ -60,13 +60,13 @@ module Stripe
|
|
60
60
|
|
61
61
|
should "be able to deauthorize an account" do
|
62
62
|
resp = {:id => 'acct_1234', :email => "test+bindings@stripe.com", :charge_enabled => false, :details_submitted => false}
|
63
|
-
@mock.expects(:get).once.returns(
|
63
|
+
@mock.expects(:get).once.returns(make_response(resp))
|
64
64
|
a = Stripe::Account.retrieve
|
65
65
|
|
66
66
|
|
67
67
|
@mock.expects(:post).once.with do |url, api_key, params|
|
68
68
|
url == "#{Stripe.connect_base}/oauth/deauthorize" && api_key.nil? && CGI.parse(params) == { 'client_id' => [ 'ca_1234' ], 'stripe_user_id' => [ a.id ]}
|
69
|
-
end.returns(
|
69
|
+
end.returns(make_response({ 'stripe_user_id' => a.id }))
|
70
70
|
a.deauthorize('ca_1234', 'sk_test_1234')
|
71
71
|
end
|
72
72
|
|
@@ -88,13 +88,13 @@ module Stripe
|
|
88
88
|
:data => [],
|
89
89
|
}
|
90
90
|
}
|
91
|
-
@mock.expects(:get).once.returns(
|
91
|
+
@mock.expects(:get).once.returns(make_response(resp))
|
92
92
|
a = Stripe::Account.retrieve
|
93
93
|
|
94
94
|
@mock.expects(:post).
|
95
95
|
once.
|
96
96
|
with('https://api.stripe.com/v1/accounts/acct_1234/external_accounts', nil, 'external_account=btok_1234').
|
97
|
-
returns(
|
97
|
+
returns(make_response(resp))
|
98
98
|
a.external_accounts.create({:external_account => 'btok_1234'})
|
99
99
|
end
|
100
100
|
|
@@ -110,7 +110,7 @@ module Stripe
|
|
110
110
|
}],
|
111
111
|
}
|
112
112
|
}
|
113
|
-
@mock.expects(:get).once.returns(
|
113
|
+
@mock.expects(:get).once.returns(make_response(resp))
|
114
114
|
a = Stripe::Account.retrieve
|
115
115
|
assert_equal(BankAccount, a.external_accounts.data[0].class)
|
116
116
|
end
|
@@ -55,7 +55,7 @@ module Stripe
|
|
55
55
|
|
56
56
|
should "specifying invalid api credentials should raise an exception" do
|
57
57
|
Stripe.api_key = "invalid"
|
58
|
-
response =
|
58
|
+
response = make_response(make_invalid_api_key_error, 401)
|
59
59
|
assert_raises Stripe::AuthenticationError do
|
60
60
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 401))
|
61
61
|
Stripe::Customer.retrieve("failing_customer")
|
@@ -64,7 +64,7 @@ module Stripe
|
|
64
64
|
|
65
65
|
should "AuthenticationErrors should have an http status, http body, and JSON body" do
|
66
66
|
Stripe.api_key = "invalid"
|
67
|
-
response =
|
67
|
+
response = make_response(make_invalid_api_key_error, 401)
|
68
68
|
begin
|
69
69
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 401))
|
70
70
|
Stripe::Customer.retrieve("failing_customer")
|
@@ -72,14 +72,14 @@ module Stripe
|
|
72
72
|
assert_equal(401, e.http_status)
|
73
73
|
assert_equal(true, !!e.http_body)
|
74
74
|
assert_equal(true, !!e.json_body[:error][:message])
|
75
|
-
assert_equal(
|
75
|
+
assert_equal(make_invalid_api_key_error[:error][:message], e.json_body[:error][:message])
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
79
|
should "send expand on fetch properly" do
|
80
80
|
@mock.expects(:get).once.
|
81
81
|
with("#{Stripe.api_base}/v1/charges/ch_test_charge?expand[]=customer", nil, nil).
|
82
|
-
returns(
|
82
|
+
returns(make_response(make_charge))
|
83
83
|
|
84
84
|
Stripe::Charge.retrieve({:id => 'ch_test_charge', :expand => [:customer]})
|
85
85
|
end
|
@@ -87,7 +87,7 @@ module Stripe
|
|
87
87
|
should "preserve expand across refreshes" do
|
88
88
|
@mock.expects(:get).twice.
|
89
89
|
with("#{Stripe.api_base}/v1/charges/ch_test_charge?expand[]=customer", nil, nil).
|
90
|
-
returns(
|
90
|
+
returns(make_response(make_charge))
|
91
91
|
|
92
92
|
ch = Stripe::Charge.retrieve({:id => 'ch_test_charge', :expand => [:customer]})
|
93
93
|
ch.refresh
|
@@ -97,7 +97,7 @@ module Stripe
|
|
97
97
|
stripe_account = "acct_0000"
|
98
98
|
Stripe.expects(:execute_request).with do |opts|
|
99
99
|
opts[:headers][:stripe_account] == stripe_account
|
100
|
-
end.returns(
|
100
|
+
end.returns(make_response(make_charge))
|
101
101
|
|
102
102
|
Stripe::Charge.create({:card => {:number => '4242424242424242'}},
|
103
103
|
{:stripe_account => stripe_account, :api_key => 'sk_test_local'})
|
@@ -106,7 +106,7 @@ module Stripe
|
|
106
106
|
should "not send stripe account as header when not set" do
|
107
107
|
Stripe.expects(:execute_request).with do |opts|
|
108
108
|
opts[:headers][:stripe_account].nil?
|
109
|
-
end.returns(
|
109
|
+
end.returns(make_response(make_charge))
|
110
110
|
|
111
111
|
Stripe::Charge.create({:card => {:number => '4242424242424242'}},
|
112
112
|
'sk_test_local')
|
@@ -117,7 +117,7 @@ module Stripe
|
|
117
117
|
should "use the per-object credential when creating" do
|
118
118
|
Stripe.expects(:execute_request).with do |opts|
|
119
119
|
opts[:headers][:authorization] == 'Bearer sk_test_local'
|
120
|
-
end.returns(
|
120
|
+
end.returns(make_response(make_charge))
|
121
121
|
|
122
122
|
Stripe::Charge.create({:card => {:number => '4242424242424242'}},
|
123
123
|
'sk_test_local')
|
@@ -136,7 +136,7 @@ module Stripe
|
|
136
136
|
should "use the per-object credential when creating" do
|
137
137
|
Stripe.expects(:execute_request).with do |opts|
|
138
138
|
opts[:headers][:authorization] == 'Bearer local'
|
139
|
-
end.returns(
|
139
|
+
end.returns(make_response(make_charge))
|
140
140
|
|
141
141
|
Stripe::Charge.create({:card => {:number => '4242424242424242'}},
|
142
142
|
'local')
|
@@ -146,11 +146,11 @@ module Stripe
|
|
146
146
|
Stripe.expects(:execute_request).with do |opts|
|
147
147
|
opts[:url] == "#{Stripe.api_base}/v1/charges/ch_test_charge" &&
|
148
148
|
opts[:headers][:authorization] == 'Bearer local'
|
149
|
-
end.returns(
|
149
|
+
end.returns(make_response(make_charge))
|
150
150
|
Stripe.expects(:execute_request).with do |opts|
|
151
151
|
opts[:url] == "#{Stripe.api_base}/v1/charges/ch_test_charge/refund" &&
|
152
152
|
opts[:headers][:authorization] == 'Bearer local'
|
153
|
-
end.returns(
|
153
|
+
end.returns(make_response(make_charge))
|
154
154
|
|
155
155
|
ch = Stripe::Charge.retrieve('ch_test_charge', 'local')
|
156
156
|
ch.refund
|
@@ -162,7 +162,7 @@ module Stripe
|
|
162
162
|
should "send along the idempotency-key header" do
|
163
163
|
Stripe.expects(:execute_request).with do |opts|
|
164
164
|
opts[:headers][:idempotency_key] == 'bar'
|
165
|
-
end.returns(
|
165
|
+
end.returns(make_response(make_charge))
|
166
166
|
|
167
167
|
Stripe::Charge.create({:card => {:number => '4242424242424242'}}, {
|
168
168
|
:idempotency_key => 'bar',
|
@@ -171,14 +171,14 @@ module Stripe
|
|
171
171
|
end
|
172
172
|
|
173
173
|
should "urlencode values in GET params" do
|
174
|
-
response =
|
174
|
+
response = make_response(make_charge_array)
|
175
175
|
@mock.expects(:get).with("#{Stripe.api_base}/v1/charges?customer=test%20customer", nil, nil).returns(response)
|
176
176
|
charges = Stripe::Charge.all(:customer => 'test customer').data
|
177
177
|
assert charges.kind_of? Array
|
178
178
|
end
|
179
179
|
|
180
180
|
should "construct URL properly with base query parameters" do
|
181
|
-
response =
|
181
|
+
response = make_response(make_invoice_customer_array)
|
182
182
|
@mock.expects(:get).with("#{Stripe.api_base}/v1/invoices?customer=test_customer", nil, nil).returns(response)
|
183
183
|
invoices = Stripe::Invoice.all(:customer => 'test_customer')
|
184
184
|
|
@@ -187,7 +187,7 @@ module Stripe
|
|
187
187
|
end
|
188
188
|
|
189
189
|
should "a 400 should give an InvalidRequestError with http status, body, and JSON body" do
|
190
|
-
response =
|
190
|
+
response = make_response(make_missing_id_error, 400)
|
191
191
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 404))
|
192
192
|
begin
|
193
193
|
Stripe::Customer.retrieve("foo")
|
@@ -199,7 +199,7 @@ module Stripe
|
|
199
199
|
end
|
200
200
|
|
201
201
|
should "a 401 should give an AuthenticationError with http status, body, and JSON body" do
|
202
|
-
response =
|
202
|
+
response = make_response(make_missing_id_error, 401)
|
203
203
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 404))
|
204
204
|
begin
|
205
205
|
Stripe::Customer.retrieve("foo")
|
@@ -211,7 +211,7 @@ module Stripe
|
|
211
211
|
end
|
212
212
|
|
213
213
|
should "a 402 should give a CardError with http status, body, and JSON body" do
|
214
|
-
response =
|
214
|
+
response = make_response(make_missing_id_error, 402)
|
215
215
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 404))
|
216
216
|
begin
|
217
217
|
Stripe::Customer.retrieve("foo")
|
@@ -223,7 +223,7 @@ module Stripe
|
|
223
223
|
end
|
224
224
|
|
225
225
|
should "a 404 should give an InvalidRequestError with http status, body, and JSON body" do
|
226
|
-
response =
|
226
|
+
response = make_response(make_missing_id_error, 404)
|
227
227
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 404))
|
228
228
|
begin
|
229
229
|
Stripe::Customer.retrieve("foo")
|
@@ -240,19 +240,19 @@ module Stripe
|
|
240
240
|
query = CGI.parse(uri.query)
|
241
241
|
(url =~ %r{^#{Stripe.api_base}/v1/charges?} &&
|
242
242
|
query.keys.sort == ['offset', 'sad'])
|
243
|
-
end.returns(
|
243
|
+
end.returns(make_response({ :count => 1, :data => [make_charge] }))
|
244
244
|
Stripe::Charge.all(:count => nil, :offset => 5, :sad => false)
|
245
245
|
|
246
246
|
@mock.expects(:post).with do |url, api_key, params|
|
247
247
|
url == "#{Stripe.api_base}/v1/charges" &&
|
248
248
|
api_key.nil? &&
|
249
249
|
CGI.parse(params) == { 'amount' => ['50'], 'currency' => ['usd'] }
|
250
|
-
end.returns(
|
250
|
+
end.returns(make_response({ :count => 1, :data => [make_charge] }))
|
251
251
|
Stripe::Charge.create(:amount => 50, :currency => 'usd', :card => { :number => nil })
|
252
252
|
end
|
253
253
|
|
254
254
|
should "requesting with a unicode ID should result in a request" do
|
255
|
-
response =
|
255
|
+
response = make_response(make_missing_id_error, 404)
|
256
256
|
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/customers/%E2%98%83", nil, nil).raises(RestClient::ExceptionWithResponse.new(response, 404))
|
257
257
|
c = Stripe::Customer.new("☃")
|
258
258
|
assert_raises(Stripe::InvalidRequestError) { c.refresh }
|
@@ -265,7 +265,7 @@ module Stripe
|
|
265
265
|
|
266
266
|
should "making a GET request with parameters should have a query string and no body" do
|
267
267
|
params = { :limit => 1 }
|
268
|
-
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/charges?limit=1", nil, nil).returns(
|
268
|
+
@mock.expects(:get).once.with("#{Stripe.api_base}/v1/charges?limit=1", nil, nil).returns(make_response([make_charge]))
|
269
269
|
Stripe::Charge.all(params)
|
270
270
|
end
|
271
271
|
|
@@ -273,18 +273,18 @@ module Stripe
|
|
273
273
|
params = { :amount => 100, :currency => 'usd', :card => 'sc_token' }
|
274
274
|
@mock.expects(:post).once.with do |url, get, post|
|
275
275
|
get.nil? && CGI.parse(post) == {'amount' => ['100'], 'currency' => ['usd'], 'card' => ['sc_token']}
|
276
|
-
end.returns(
|
276
|
+
end.returns(make_response(make_charge))
|
277
277
|
Stripe::Charge.create(params)
|
278
278
|
end
|
279
279
|
|
280
280
|
should "loading an object should issue a GET request" do
|
281
|
-
@mock.expects(:get).once.returns(
|
281
|
+
@mock.expects(:get).once.returns(make_response(make_customer))
|
282
282
|
c = Stripe::Customer.new("test_customer")
|
283
283
|
c.refresh
|
284
284
|
end
|
285
285
|
|
286
286
|
should "using array accessors should be the same as the method interface" do
|
287
|
-
@mock.expects(:get).once.returns(
|
287
|
+
@mock.expects(:get).once.returns(make_response(make_customer))
|
288
288
|
c = Stripe::Customer.new("test_customer")
|
289
289
|
c.refresh
|
290
290
|
assert_equal c.created, c[:created]
|
@@ -294,7 +294,7 @@ module Stripe
|
|
294
294
|
end
|
295
295
|
|
296
296
|
should "accessing a property other than id or parent on an unfetched object should fetch it" do
|
297
|
-
@mock.expects(:get).once.returns(
|
297
|
+
@mock.expects(:get).once.returns(make_response(make_customer))
|
298
298
|
c = Stripe::Customer.new("test_customer")
|
299
299
|
c.charges
|
300
300
|
end
|
@@ -302,14 +302,14 @@ module Stripe
|
|
302
302
|
should "updating an object should issue a POST request with only the changed properties" do
|
303
303
|
@mock.expects(:post).with do |url, api_key, params|
|
304
304
|
url == "#{Stripe.api_base}/v1/customers/c_test_customer" && api_key.nil? && CGI.parse(params) == {'description' => ['another_mn']}
|
305
|
-
end.once.returns(
|
306
|
-
c = Stripe::Customer.construct_from(
|
305
|
+
end.once.returns(make_response(make_customer))
|
306
|
+
c = Stripe::Customer.construct_from(make_customer)
|
307
307
|
c.description = "another_mn"
|
308
308
|
c.save
|
309
309
|
end
|
310
310
|
|
311
311
|
should "updating should merge in returned properties" do
|
312
|
-
@mock.expects(:post).once.returns(
|
312
|
+
@mock.expects(:post).once.returns(make_response(make_customer))
|
313
313
|
c = Stripe::Customer.new("c_test_customer")
|
314
314
|
c.description = "another_mn"
|
315
315
|
c.save
|
@@ -319,8 +319,8 @@ module Stripe
|
|
319
319
|
should "deleting should send no props and result in an object that has no props other deleted" do
|
320
320
|
@mock.expects(:get).never
|
321
321
|
@mock.expects(:post).never
|
322
|
-
@mock.expects(:delete).with("#{Stripe.api_base}/v1/customers/c_test_customer", nil, nil).once.returns(
|
323
|
-
c = Stripe::Customer.construct_from(
|
322
|
+
@mock.expects(:delete).with("#{Stripe.api_base}/v1/customers/c_test_customer", nil, nil).once.returns(make_response({ "id" => "test_customer", "deleted" => true }))
|
323
|
+
c = Stripe::Customer.construct_from(make_customer)
|
324
324
|
c.delete
|
325
325
|
assert_equal true, c.deleted
|
326
326
|
|
@@ -330,13 +330,13 @@ module Stripe
|
|
330
330
|
end
|
331
331
|
|
332
332
|
should "loading an object with properties that have specific types should instantiate those classes" do
|
333
|
-
@mock.expects(:get).once.returns(
|
333
|
+
@mock.expects(:get).once.returns(make_response(make_charge))
|
334
334
|
c = Stripe::Charge.retrieve("test_charge")
|
335
335
|
assert c.card.kind_of?(Stripe::StripeObject) && c.card.object == 'card'
|
336
336
|
end
|
337
337
|
|
338
338
|
should "loading all of an APIResource should return an array of recursively instantiated objects" do
|
339
|
-
@mock.expects(:get).once.returns(
|
339
|
+
@mock.expects(:get).once.returns(make_response(make_charge_array))
|
340
340
|
c = Stripe::Charge.all.data
|
341
341
|
assert c.kind_of? Array
|
342
342
|
assert c[0].kind_of? Stripe::Charge
|
@@ -348,7 +348,7 @@ module Stripe
|
|
348
348
|
opts[:method] == :get &&
|
349
349
|
opts[:url] == "#{Stripe.api_base}/v1/customers/c_test_customer" &&
|
350
350
|
opts[:headers][:stripe_account] == 'acct_abc'
|
351
|
-
end.once.returns(
|
351
|
+
end.once.returns(make_response(make_customer))
|
352
352
|
c = Stripe::Customer.retrieve("c_test_customer", {:stripe_account => 'acct_abc'})
|
353
353
|
end
|
354
354
|
|
@@ -357,7 +357,7 @@ module Stripe
|
|
357
357
|
opts[:method] == :get &&
|
358
358
|
opts[:url] == "#{Stripe.api_base}/v1/customers/c_test_customer" &&
|
359
359
|
opts[:headers][:stripe_account] == 'acct_abc'
|
360
|
-
end.once.returns(
|
360
|
+
end.once.returns(make_response(make_customer))
|
361
361
|
c = Stripe::Customer.retrieve("c_test_customer", {:stripe_account => 'acct_abc'})
|
362
362
|
|
363
363
|
Stripe.expects(:execute_request).with do |opts|
|
@@ -365,7 +365,7 @@ module Stripe
|
|
365
365
|
opts[:url] == "#{Stripe.api_base}/v1/customers/c_test_customer" &&
|
366
366
|
opts[:headers][:stripe_account] == 'acct_abc' &&
|
367
367
|
opts[:payload] == 'description=FOO'
|
368
|
-
end.once.returns(
|
368
|
+
end.once.returns(make_response(make_customer))
|
369
369
|
c.description = 'FOO'
|
370
370
|
c.save
|
371
371
|
end
|
@@ -373,7 +373,7 @@ module Stripe
|
|
373
373
|
context "error checking" do
|
374
374
|
|
375
375
|
should "404s should raise an InvalidRequestError" do
|
376
|
-
response =
|
376
|
+
response = make_response(make_missing_id_error, 404)
|
377
377
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 404))
|
378
378
|
|
379
379
|
rescued = false
|
@@ -391,7 +391,7 @@ module Stripe
|
|
391
391
|
end
|
392
392
|
|
393
393
|
should "5XXs should raise an APIError" do
|
394
|
-
response =
|
394
|
+
response = make_response(make_api_error, 500)
|
395
395
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 500))
|
396
396
|
|
397
397
|
rescued = false
|
@@ -407,7 +407,7 @@ module Stripe
|
|
407
407
|
end
|
408
408
|
|
409
409
|
should "402s should raise a CardError" do
|
410
|
-
response =
|
410
|
+
response = make_response(make_invalid_exp_year_error, 402)
|
411
411
|
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 402))
|
412
412
|
|
413
413
|
rescued = false
|
@@ -436,7 +436,7 @@ module Stripe
|
|
436
436
|
}
|
437
437
|
})
|
438
438
|
|
439
|
-
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, 'legal_entity[first_name]=Bob').returns(
|
439
|
+
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, 'legal_entity[first_name]=Bob').returns(make_response({"id" => "myid"}))
|
440
440
|
|
441
441
|
acct.legal_entity.first_name = 'Bob'
|
442
442
|
acct.save
|
@@ -450,7 +450,7 @@ module Stripe
|
|
450
450
|
}
|
451
451
|
})
|
452
452
|
|
453
|
-
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, '').returns(
|
453
|
+
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, '').returns(make_response({"id" => "myid"}))
|
454
454
|
|
455
455
|
acct.save
|
456
456
|
end
|
@@ -464,7 +464,7 @@ module Stripe
|
|
464
464
|
}
|
465
465
|
})
|
466
466
|
|
467
|
-
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/charges/charge_id", nil, '').returns(
|
467
|
+
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/charges/charge_id", nil, '').returns(make_response({"id" => "charge_id"}))
|
468
468
|
|
469
469
|
ch.customer.description = 'Bob'
|
470
470
|
ch.save
|
@@ -485,7 +485,7 @@ module Stripe
|
|
485
485
|
'legal_entity[first_name]=Bob&legal_entity[last_name]=',
|
486
486
|
'legal_entity[last_name]=&legal_entity[first_name]=Bob'
|
487
487
|
)
|
488
|
-
).returns(
|
488
|
+
).returns(make_response({"id" => "myid"}))
|
489
489
|
|
490
490
|
acct.legal_entity = {:first_name => 'Bob'}
|
491
491
|
acct.save
|
@@ -497,7 +497,7 @@ module Stripe
|
|
497
497
|
:legal_entity => {}
|
498
498
|
})
|
499
499
|
|
500
|
-
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, 'legal_entity[additional_owners][0][first_name]=Bob').returns(
|
500
|
+
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, 'legal_entity[additional_owners][0][first_name]=Bob').returns(make_response({"id" => "myid"}))
|
501
501
|
|
502
502
|
acct.legal_entity.additional_owners = [{:first_name => 'Bob'}]
|
503
503
|
acct.save
|
@@ -511,7 +511,7 @@ module Stripe
|
|
511
511
|
}
|
512
512
|
})
|
513
513
|
|
514
|
-
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, 'legal_entity[additional_owners][0][first_name]=Bob').returns(
|
514
|
+
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, 'legal_entity[additional_owners][0][first_name]=Bob').returns(make_response({"id" => "myid"}))
|
515
515
|
|
516
516
|
acct.legal_entity.additional_owners << {:first_name => 'Bob'}
|
517
517
|
acct.save
|
@@ -525,7 +525,7 @@ module Stripe
|
|
525
525
|
}
|
526
526
|
})
|
527
527
|
|
528
|
-
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, 'legal_entity[additional_owners][1][first_name]=Janet').returns(
|
528
|
+
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, 'legal_entity[additional_owners][1][first_name]=Janet').returns(make_response({"id" => "myid"}))
|
529
529
|
|
530
530
|
acct.legal_entity.additional_owners[1].first_name = 'Janet'
|
531
531
|
acct.save
|
@@ -540,7 +540,7 @@ module Stripe
|
|
540
540
|
:currencies_supported => ['usd', 'cad']
|
541
541
|
})
|
542
542
|
|
543
|
-
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, '').returns(
|
543
|
+
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, '').returns(make_response({"id" => "myid"}))
|
544
544
|
|
545
545
|
acct.save
|
546
546
|
end
|
@@ -553,7 +553,7 @@ module Stripe
|
|
553
553
|
}
|
554
554
|
})
|
555
555
|
|
556
|
-
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, '').returns(
|
556
|
+
@mock.expects(:post).once.with("#{Stripe.api_base}/v1/accounts/myid", nil, '').returns(make_response({"id" => "myid"}))
|
557
557
|
|
558
558
|
acct.save
|
559
559
|
end
|