stripe-ruby-mock 2.3.1 → 2.5.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.env +2 -0
- data/.travis.yml +8 -4
- data/README.md +12 -5
- data/lib/stripe_mock/api/account_balance.rb +14 -0
- data/lib/stripe_mock/api/client.rb +4 -4
- data/lib/stripe_mock/api/conversion_rate.rb +14 -0
- data/lib/stripe_mock/api/errors.rb +25 -13
- data/lib/stripe_mock/api/instance.rb +16 -6
- data/lib/stripe_mock/api/webhooks.rb +8 -1
- data/lib/stripe_mock/client.rb +18 -2
- data/lib/stripe_mock/data/list.rb +14 -2
- data/lib/stripe_mock/data.rb +398 -58
- data/lib/stripe_mock/instance.rb +105 -9
- data/lib/stripe_mock/request_handlers/accounts.rb +41 -2
- data/lib/stripe_mock/request_handlers/balance.rb +17 -0
- data/lib/stripe_mock/request_handlers/balance_transactions.rb +18 -2
- data/lib/stripe_mock/request_handlers/charges.rb +44 -33
- data/lib/stripe_mock/request_handlers/country_spec.rb +22 -0
- data/lib/stripe_mock/request_handlers/coupons.rb +5 -4
- data/lib/stripe_mock/request_handlers/customers.rb +29 -11
- data/lib/stripe_mock/request_handlers/ephemeral_key.rb +13 -0
- data/lib/stripe_mock/request_handlers/external_accounts.rb +55 -0
- data/lib/stripe_mock/request_handlers/helpers/bank_account_helpers.rb +1 -1
- data/lib/stripe_mock/request_handlers/helpers/card_helpers.rb +9 -7
- data/lib/stripe_mock/request_handlers/helpers/coupon_helpers.rb +10 -6
- data/lib/stripe_mock/request_handlers/helpers/external_account_helpers.rb +49 -0
- data/lib/stripe_mock/request_handlers/helpers/subscription_helpers.rb +59 -16
- data/lib/stripe_mock/request_handlers/helpers/token_helpers.rb +3 -2
- data/lib/stripe_mock/request_handlers/invoices.rb +93 -14
- data/lib/stripe_mock/request_handlers/orders.rb +5 -5
- data/lib/stripe_mock/request_handlers/payouts.rb +32 -0
- data/lib/stripe_mock/request_handlers/plans.rb +1 -0
- data/lib/stripe_mock/request_handlers/products.rb +43 -0
- data/lib/stripe_mock/request_handlers/recipients.rb +12 -0
- data/lib/stripe_mock/request_handlers/refunds.rb +91 -0
- data/lib/stripe_mock/request_handlers/subscription_items.rb +36 -0
- data/lib/stripe_mock/request_handlers/subscriptions.rb +101 -39
- data/lib/stripe_mock/request_handlers/tax_rates.rb +36 -0
- data/lib/stripe_mock/request_handlers/tokens.rb +9 -3
- data/lib/stripe_mock/request_handlers/transfers.rb +11 -5
- data/lib/stripe_mock/request_handlers/validators/param_validators.rb +15 -1
- data/lib/stripe_mock/server.rb +14 -1
- data/lib/stripe_mock/test_strategies/base.rb +10 -5
- data/lib/stripe_mock/test_strategies/live.rb +5 -0
- data/lib/stripe_mock/test_strategies/mock.rb +8 -0
- data/lib/stripe_mock/util.rb +8 -2
- data/lib/stripe_mock/version.rb +1 -1
- data/lib/stripe_mock/webhook_fixtures/account.external_account.created.json +27 -0
- data/lib/stripe_mock/webhook_fixtures/account.external_account.deleted.json +27 -0
- data/lib/stripe_mock/webhook_fixtures/account.external_account.updated.json +27 -0
- data/lib/stripe_mock/webhook_fixtures/account.updated.json +1 -1
- data/lib/stripe_mock/webhook_fixtures/charge.dispute.funds_reinstated.json +88 -0
- data/lib/stripe_mock/webhook_fixtures/charge.dispute.funds_withdrawn.json +88 -0
- data/lib/stripe_mock/webhook_fixtures/charge.updated.json +58 -0
- data/lib/stripe_mock/webhook_fixtures/customer.subscription.created.json +40 -10
- data/lib/stripe_mock/webhook_fixtures/customer.subscription.deleted.json +39 -10
- data/lib/stripe_mock/webhook_fixtures/customer.subscription.trial_will_end.json +39 -10
- data/lib/stripe_mock/webhook_fixtures/customer.subscription.updated.json +40 -11
- data/lib/stripe_mock/webhook_fixtures/invoice.created.json +3 -2
- data/lib/stripe_mock/webhook_fixtures/invoice.payment_failed.json +1 -1
- data/lib/stripe_mock/webhook_fixtures/invoice.payment_succeeded.json +92 -85
- data/lib/stripe_mock/webhook_fixtures/invoice.updated.json +3 -2
- data/lib/stripe_mock/webhook_fixtures/plan.created.json +1 -1
- data/lib/stripe_mock/webhook_fixtures/plan.deleted.json +1 -1
- data/lib/stripe_mock/webhook_fixtures/plan.updated.json +1 -1
- data/lib/stripe_mock.rb +15 -0
- data/spec/api/instance_spec.rb +30 -0
- data/spec/instance_spec.rb +54 -4
- data/spec/integration_examples/prepare_error_examples.rb +6 -6
- data/spec/list_spec.rb +27 -10
- data/spec/readme_spec.rb +2 -0
- data/spec/server_spec.rb +7 -3
- data/spec/shared_stripe_examples/account_examples.rb +46 -0
- data/spec/shared_stripe_examples/balance_examples.rb +11 -0
- data/spec/shared_stripe_examples/balance_transaction_examples.rb +28 -0
- data/spec/shared_stripe_examples/bank_examples.rb +28 -1
- data/spec/shared_stripe_examples/card_examples.rb +23 -5
- data/spec/shared_stripe_examples/card_token_examples.rb +1 -0
- data/spec/shared_stripe_examples/charge_examples.rb +131 -26
- data/spec/shared_stripe_examples/country_specs_examples.rb +18 -0
- data/spec/shared_stripe_examples/coupon_examples.rb +8 -2
- data/spec/shared_stripe_examples/customer_examples.rb +90 -0
- data/spec/shared_stripe_examples/dispute_examples.rb +19 -8
- data/spec/shared_stripe_examples/ephemeral_key_examples.rb +17 -0
- data/spec/shared_stripe_examples/error_mock_examples.rb +15 -5
- data/spec/shared_stripe_examples/external_account_examples.rb +170 -0
- data/spec/shared_stripe_examples/extra_features_examples.rb +2 -0
- data/spec/shared_stripe_examples/invoice_examples.rb +314 -51
- data/spec/shared_stripe_examples/payout_examples.rb +68 -0
- data/spec/shared_stripe_examples/plan_examples.rb +47 -4
- data/spec/shared_stripe_examples/product_example.rb +65 -0
- data/spec/shared_stripe_examples/recipient_examples.rb +13 -7
- data/spec/shared_stripe_examples/refund_examples.rb +453 -84
- data/spec/shared_stripe_examples/subscription_examples.rb +477 -32
- data/spec/shared_stripe_examples/subscription_items_examples.rb +75 -0
- data/spec/shared_stripe_examples/tax_rate_examples.rb +42 -0
- data/spec/shared_stripe_examples/transfer_examples.rb +72 -23
- data/spec/shared_stripe_examples/webhook_event_examples.rb +74 -5
- data/spec/spec_helper.rb +7 -6
- data/spec/stripe_mock_spec.rb +16 -3
- data/spec/support/stripe_examples.rb +8 -1
- data/spec/util_spec.rb +35 -1
- data/stripe-ruby-mock.gemspec +1 -1
- metadata +44 -8
- data/ChangeLog.rdoc +0 -4
data/lib/stripe_mock/data.rb
CHANGED
@@ -3,6 +3,7 @@ module StripeMock
|
|
3
3
|
|
4
4
|
def self.mock_account(params = {})
|
5
5
|
id = params[:id] || 'acct_103ED82ePvKYlo2C'
|
6
|
+
currency = params[:currency] || StripeMock.default_currency
|
6
7
|
{
|
7
8
|
id: id,
|
8
9
|
email: "bob@example.com",
|
@@ -11,11 +12,11 @@ module StripeMock
|
|
11
12
|
timezone: "US/Pacific",
|
12
13
|
details_submitted: false,
|
13
14
|
charges_enabled: false,
|
14
|
-
|
15
|
+
payouts_enabled: false,
|
15
16
|
currencies_supported: [
|
16
17
|
"usd"
|
17
18
|
],
|
18
|
-
default_currency:
|
19
|
+
default_currency: currency,
|
19
20
|
country: "US",
|
20
21
|
object: "account",
|
21
22
|
business_name: "Stripe.com",
|
@@ -47,6 +48,15 @@ module StripeMock
|
|
47
48
|
date: nil,
|
48
49
|
user_agent: nil
|
49
50
|
},
|
51
|
+
external_accounts: {
|
52
|
+
object: "list",
|
53
|
+
data: [
|
54
|
+
|
55
|
+
],
|
56
|
+
has_more: false,
|
57
|
+
total_count: 0,
|
58
|
+
url: "/v1/accounts/#{id}/external_accounts"
|
59
|
+
},
|
50
60
|
legal_entity: {
|
51
61
|
type: nil,
|
52
62
|
business_name: nil,
|
@@ -91,8 +101,25 @@ module StripeMock
|
|
91
101
|
}.merge(params)
|
92
102
|
end
|
93
103
|
|
104
|
+
def self.mock_tax_rate(params)
|
105
|
+
{
|
106
|
+
id: 'test_cus_default',
|
107
|
+
object: 'tax_rate',
|
108
|
+
active: true,
|
109
|
+
created: 1559079603,
|
110
|
+
description: nil,
|
111
|
+
display_name: 'VAT',
|
112
|
+
inclusive: false,
|
113
|
+
jurisdiction: 'EU',
|
114
|
+
livemode: false,
|
115
|
+
metadata: {},
|
116
|
+
percentage: 21.0
|
117
|
+
}.merge(params)
|
118
|
+
end
|
119
|
+
|
94
120
|
def self.mock_customer(sources, params)
|
95
121
|
cus_id = params[:id] || "test_cus_default"
|
122
|
+
currency = params[:currency] || StripeMock.default_currency
|
96
123
|
sources.each {|source| source[:customer] = cus_id}
|
97
124
|
{
|
98
125
|
email: 'stripe_mock@example.com',
|
@@ -100,11 +127,12 @@ module StripeMock
|
|
100
127
|
object: "customer",
|
101
128
|
created: 1372126710,
|
102
129
|
id: cus_id,
|
130
|
+
name: nil,
|
103
131
|
livemode: false,
|
104
132
|
delinquent: false,
|
105
133
|
discount: nil,
|
106
134
|
account_balance: 0,
|
107
|
-
currency:
|
135
|
+
currency: currency,
|
108
136
|
sources: {
|
109
137
|
object: "list",
|
110
138
|
total_count: sources.size,
|
@@ -123,6 +151,7 @@ module StripeMock
|
|
123
151
|
|
124
152
|
def self.mock_charge(params={})
|
125
153
|
charge_id = params[:id] || "ch_1fD6uiR9FAA2zc"
|
154
|
+
currency = params[:currency] || StripeMock.default_currency
|
126
155
|
{
|
127
156
|
id: charge_id,
|
128
157
|
object: "charge",
|
@@ -131,7 +160,7 @@ module StripeMock
|
|
131
160
|
paid: true,
|
132
161
|
amount: 0,
|
133
162
|
application_fee: nil,
|
134
|
-
currency:
|
163
|
+
currency: currency,
|
135
164
|
destination: nil,
|
136
165
|
fraud_details: {},
|
137
166
|
receipt_email: nil,
|
@@ -184,17 +213,19 @@ module StripeMock
|
|
184
213
|
end
|
185
214
|
|
186
215
|
def self.mock_refund(params={})
|
216
|
+
currency = params[:currency] || StripeMock.default_currency
|
187
217
|
{
|
188
218
|
id: "re_4fWhgUh5si7InF",
|
189
219
|
amount: 1,
|
190
|
-
currency:
|
220
|
+
currency: currency,
|
191
221
|
created: 1409165988,
|
192
222
|
object: "refund",
|
193
223
|
balance_transaction: "txn_4fWh2RKvgxcXqV",
|
194
224
|
metadata: {},
|
195
225
|
charge: "ch_4fWhYjzQ23UFWT",
|
196
226
|
receipt_number: nil,
|
197
|
-
status: "succeeded"
|
227
|
+
status: "succeeded",
|
228
|
+
reason: "requested_by_customer"
|
198
229
|
}.merge(params)
|
199
230
|
end
|
200
231
|
|
@@ -228,23 +259,28 @@ module StripeMock
|
|
228
259
|
address_country: nil,
|
229
260
|
cvc_check: nil,
|
230
261
|
address_line1_check: nil,
|
231
|
-
address_zip_check: nil
|
262
|
+
address_zip_check: nil,
|
263
|
+
tokenization_method: nil,
|
264
|
+
metadata: {}
|
232
265
|
}, params)
|
233
266
|
end
|
234
267
|
|
235
268
|
def self.mock_bank_account(params={})
|
269
|
+
currency = params[:currency] || StripeMock.default_currency
|
236
270
|
{
|
271
|
+
id: "test_ba_default",
|
237
272
|
object: "bank_account",
|
238
273
|
bank_name: "STRIPEMOCK TEST BANK",
|
239
274
|
last4: "6789",
|
240
275
|
routing_number: '110000000',
|
241
276
|
country: "US",
|
242
|
-
currency:
|
277
|
+
currency: currency,
|
243
278
|
validated: false,
|
244
279
|
status: 'new',
|
245
280
|
account_holder_name: 'John Doe',
|
246
281
|
account_holder_type: 'individual',
|
247
|
-
fingerprint: "aBcFinGerPrINt123"
|
282
|
+
fingerprint: "aBcFinGerPrINt123",
|
283
|
+
metadata: {}
|
248
284
|
}.merge(params)
|
249
285
|
end
|
250
286
|
|
@@ -267,37 +303,59 @@ module StripeMock
|
|
267
303
|
#FIXME nested overrides would be better than hardcoding plan_id
|
268
304
|
def self.mock_subscription(params={})
|
269
305
|
StripeMock::Util.rmerge({
|
270
|
-
:
|
271
|
-
:
|
272
|
-
:
|
273
|
-
:
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
:
|
278
|
-
:
|
306
|
+
created: 1478204116,
|
307
|
+
billing: 'charge_automatically',
|
308
|
+
current_period_start: 1308595038,
|
309
|
+
current_period_end: 1308681468,
|
310
|
+
status: 'trialing',
|
311
|
+
trial_from_plan: false,
|
312
|
+
plan: {
|
313
|
+
interval: 'month',
|
314
|
+
amount: 7500,
|
315
|
+
trial_period_days: 30,
|
316
|
+
object: 'plan',
|
317
|
+
id: '__test_plan_id__'
|
318
|
+
},
|
319
|
+
items: {
|
320
|
+
object: 'list',
|
321
|
+
data: [{
|
322
|
+
id: 'si_1AwFf62eZvKYlo2C9u6Dhf9',
|
323
|
+
created: 1504035973,
|
324
|
+
metadata: {},
|
325
|
+
object: 'subscription_item',
|
326
|
+
plan: {
|
327
|
+
amount: 999,
|
328
|
+
created: 1504035972,
|
329
|
+
currency: StripeMock.default_currency
|
330
|
+
},
|
331
|
+
quantity: 1
|
332
|
+
}]
|
279
333
|
},
|
280
|
-
:
|
281
|
-
:
|
282
|
-
:
|
283
|
-
:
|
284
|
-
:
|
285
|
-
:
|
286
|
-
:
|
287
|
-
:
|
288
|
-
:
|
289
|
-
:
|
290
|
-
:
|
291
|
-
:
|
334
|
+
cancel_at_period_end: false,
|
335
|
+
canceled_at: nil,
|
336
|
+
ended_at: nil,
|
337
|
+
start: 1308595038,
|
338
|
+
object: 'subscription',
|
339
|
+
trial_start: 1308595038,
|
340
|
+
trial_end: 1308681468,
|
341
|
+
customer: 'c_test_customer',
|
342
|
+
quantity: 1,
|
343
|
+
tax_percent: nil,
|
344
|
+
discount: nil,
|
345
|
+
metadata: {}
|
292
346
|
}, params)
|
293
347
|
end
|
294
348
|
|
295
349
|
def self.mock_invoice(lines, params={})
|
296
350
|
in_id = params[:id] || "test_in_default"
|
351
|
+
currency = params[:currency] || StripeMock.default_currency
|
297
352
|
lines << Data.mock_line_item() if lines.empty?
|
298
|
-
{
|
353
|
+
invoice = {
|
299
354
|
id: 'in_test_invoice',
|
300
|
-
|
355
|
+
status: 'open',
|
356
|
+
invoice_pdf: 'pdf_url',
|
357
|
+
hosted_invoice_url: 'hosted_invoice_url',
|
358
|
+
created: 1349738950,
|
301
359
|
period_end: 1349738950,
|
302
360
|
period_start: 1349738950,
|
303
361
|
lines: {
|
@@ -307,7 +365,6 @@ module StripeMock
|
|
307
365
|
data: lines
|
308
366
|
},
|
309
367
|
subtotal: lines.map {|line| line[:amount]}.reduce(0, :+),
|
310
|
-
total: lines.map {|line| line[:amount]}.reduce(0, :+),
|
311
368
|
customer: "test_customer",
|
312
369
|
object: 'invoice',
|
313
370
|
attempted: false,
|
@@ -319,13 +376,14 @@ module StripeMock
|
|
319
376
|
paid: false,
|
320
377
|
receipt_number: nil,
|
321
378
|
statement_descriptor: nil,
|
322
|
-
tax:
|
379
|
+
tax: 10,
|
323
380
|
tax_percent: nil,
|
324
381
|
webhooks_delivered_at: 1349825350,
|
325
382
|
livemode: false,
|
326
383
|
attempt_count: 0,
|
327
|
-
amount_due:
|
328
|
-
|
384
|
+
amount_due: 100,
|
385
|
+
amount_paid: 0,
|
386
|
+
currency: currency,
|
329
387
|
starting_balance: 0,
|
330
388
|
ending_balance: nil,
|
331
389
|
next_payment_attempt: 1349825350,
|
@@ -333,22 +391,37 @@ module StripeMock
|
|
333
391
|
discount: nil,
|
334
392
|
subscription: nil
|
335
393
|
}.merge(params)
|
394
|
+
if invoice[:discount]
|
395
|
+
invoice[:total] = [0, invoice[:subtotal] - invoice[:discount][:coupon][:amount_off]].max if invoice[:discount][:coupon][:amount_off]
|
396
|
+
invoice[:total] = invoice[:subtotal] * invoice[:discount][:coupon][:percent_off] / 100 if invoice[:discount][:coupon][:percent_off]
|
397
|
+
else
|
398
|
+
invoice[:total] = invoice[:subtotal]
|
399
|
+
end
|
400
|
+
due = invoice[:total] + invoice[:starting_balance]
|
401
|
+
invoice[:amount_due] = due < 0 ? 0 : due
|
402
|
+
invoice
|
336
403
|
end
|
337
404
|
|
338
405
|
def self.mock_line_item(params = {})
|
406
|
+
currency = params[:currency] || StripeMock.default_currency
|
339
407
|
{
|
340
408
|
id: "ii_test",
|
341
409
|
object: "line_item",
|
342
410
|
type: "invoiceitem",
|
343
411
|
livemode: false,
|
344
412
|
amount: 1000,
|
345
|
-
currency:
|
413
|
+
currency: currency,
|
346
414
|
discountable: false,
|
347
415
|
proration: false,
|
348
416
|
period: {
|
349
417
|
start: 1349738920,
|
350
418
|
end: 1349738920
|
351
419
|
},
|
420
|
+
tax_amounts: [
|
421
|
+
{
|
422
|
+
amount: 10
|
423
|
+
}
|
424
|
+
],
|
352
425
|
quantity: nil,
|
353
426
|
subscription: nil,
|
354
427
|
plan: nil,
|
@@ -358,14 +431,15 @@ module StripeMock
|
|
358
431
|
end
|
359
432
|
|
360
433
|
def self.mock_invoice_item(params = {})
|
434
|
+
currency = params[:currency] || StripeMock.default_currency
|
361
435
|
{
|
362
436
|
id: "test_ii",
|
363
437
|
object: "invoiceitem",
|
364
|
-
|
438
|
+
created: 1349738920,
|
365
439
|
amount: 1099,
|
366
440
|
livemode: false,
|
367
441
|
proration: false,
|
368
|
-
currency:
|
442
|
+
currency: currency,
|
369
443
|
customer: "cus_test",
|
370
444
|
description: "invoice item desc",
|
371
445
|
metadata: {},
|
@@ -396,6 +470,7 @@ module StripeMock
|
|
396
470
|
|
397
471
|
def self.mock_order(order_items, params)
|
398
472
|
or_id = params[:id] || "test_or_default"
|
473
|
+
currency = params[:currency] || 'eur'
|
399
474
|
order_items << Data.mock_order_item if order_items.empty?
|
400
475
|
{
|
401
476
|
id: or_id,
|
@@ -405,7 +480,7 @@ module StripeMock
|
|
405
480
|
application_fee: nil,
|
406
481
|
charge: nil,
|
407
482
|
created: 1448272783,
|
408
|
-
currency:
|
483
|
+
currency: currency,
|
409
484
|
customer: nil,
|
410
485
|
email: nil,
|
411
486
|
items: order_items,
|
@@ -431,10 +506,11 @@ module StripeMock
|
|
431
506
|
end
|
432
507
|
|
433
508
|
def self.mock_order_item(params={})
|
509
|
+
currency = params[:currency] || 'eur'
|
434
510
|
{
|
435
511
|
object: "order_item",
|
436
512
|
amount: 5000,
|
437
|
-
currency:
|
513
|
+
currency: currency,
|
438
514
|
description: "Anyitem",
|
439
515
|
parent: "sku_parent",
|
440
516
|
quantity: 1,
|
@@ -443,12 +519,13 @@ module StripeMock
|
|
443
519
|
end
|
444
520
|
|
445
521
|
def self.mock_plan(params={})
|
522
|
+
currency = params[:currency] || StripeMock.default_currency
|
446
523
|
{
|
447
524
|
id: "2",
|
448
525
|
object: "plan",
|
449
526
|
amount: 2300,
|
450
527
|
created: 1466698898,
|
451
|
-
currency:
|
528
|
+
currency: currency,
|
452
529
|
interval: "month",
|
453
530
|
interval_count: 1,
|
454
531
|
livemode: false,
|
@@ -459,6 +536,21 @@ module StripeMock
|
|
459
536
|
}.merge(params)
|
460
537
|
end
|
461
538
|
|
539
|
+
def self.mock_product(params = {})
|
540
|
+
{
|
541
|
+
id: "default_test_prod",
|
542
|
+
object: "product",
|
543
|
+
active: true,
|
544
|
+
created: 1556896214,
|
545
|
+
livemode: false,
|
546
|
+
metadata: {},
|
547
|
+
name: "Default Test Product",
|
548
|
+
statement_descriptor: "PRODUCT",
|
549
|
+
type: "service",
|
550
|
+
updated: 1556918200,
|
551
|
+
}.merge(params)
|
552
|
+
end
|
553
|
+
|
462
554
|
def self.mock_recipient(cards, params={})
|
463
555
|
rp_id = params[:id] || "test_rp_default"
|
464
556
|
cards.each {|card| card[:recipient] = rp_id}
|
@@ -543,32 +635,47 @@ module StripeMock
|
|
543
635
|
end
|
544
636
|
|
545
637
|
def self.mock_transfer(params={})
|
638
|
+
currency = params[:currency] || StripeMock.default_currency
|
546
639
|
id = params[:id] || 'tr_test_transfer'
|
547
640
|
{
|
548
|
-
:status => 'pending',
|
549
641
|
:amount => 100,
|
550
|
-
:
|
551
|
-
|
552
|
-
:country => 'US',
|
553
|
-
:bank_name => 'STRIPE TEST BANK',
|
554
|
-
:last4 => '6789'
|
555
|
-
},
|
556
|
-
:recipient => 'test_recipient',
|
557
|
-
:fee => 0,
|
558
|
-
:fee_details => [],
|
642
|
+
:amount_reversed => 0,
|
643
|
+
:balance_transaction => "txn_2dyYXXP90MN26R",
|
559
644
|
:id => id,
|
560
645
|
:livemode => false,
|
561
|
-
:
|
646
|
+
:metadata => {},
|
647
|
+
:currency => currency,
|
562
648
|
:object => "transfer",
|
563
|
-
:
|
649
|
+
:created => 1304114826,
|
564
650
|
:description => "Transfer description",
|
565
651
|
:reversed => false,
|
566
652
|
:reversals => {
|
567
653
|
:object => "list",
|
654
|
+
:data => [],
|
568
655
|
:total_count => 0,
|
569
656
|
:has_more => false,
|
570
657
|
:url => "/v1/transfers/#{id}/reversals"
|
571
658
|
},
|
659
|
+
:destination => "acct_164wxjKbnvuxQXGu",
|
660
|
+
:destination_payment => "py_164xRvKbnvuxQXGuVFV2pZo1",
|
661
|
+
:source_transaction => "ch_164xRv2eZvKYlo2Clu1sIJWB",
|
662
|
+
:source_type => "card",
|
663
|
+
:transfer_group => "group_ch_164xRv2eZvKYlo2Clu1sIJWB",
|
664
|
+
}.merge(params)
|
665
|
+
end
|
666
|
+
|
667
|
+
def self.mock_payout(params={})
|
668
|
+
currency = params[:currency] || StripeMock.default_currency
|
669
|
+
id = params[:id] || 'po_test_payout'
|
670
|
+
{
|
671
|
+
:amount => 100,
|
672
|
+
:id => id,
|
673
|
+
:livemode => false,
|
674
|
+
:metadata => {},
|
675
|
+
:currency => currency,
|
676
|
+
:object => "payout",
|
677
|
+
:date => 1304114826,
|
678
|
+
:description => "Payout description",
|
572
679
|
}.merge(params)
|
573
680
|
end
|
574
681
|
|
@@ -581,6 +688,8 @@ module StripeMock
|
|
581
688
|
end
|
582
689
|
|
583
690
|
def self.mock_dispute(params={})
|
691
|
+
@timestamp ||= Time.now.to_i
|
692
|
+
currency = params[:currency] || StripeMock.default_currency
|
584
693
|
id = params[:id] || "dp_test_dispute"
|
585
694
|
{
|
586
695
|
:id => id,
|
@@ -588,8 +697,8 @@ module StripeMock
|
|
588
697
|
:amount => 195,
|
589
698
|
:balance_transactions => [],
|
590
699
|
:charge => "ch_15RsQR2eZvKYlo2CA8IfzCX0",
|
591
|
-
:created =>
|
592
|
-
:currency =>
|
700
|
+
:created => @timestamp += 1,
|
701
|
+
:currency => currency,
|
593
702
|
:evidence => self.mock_dispute_evidence,
|
594
703
|
:evidence_details => self.mock_dispute_evidence_details,
|
595
704
|
:is_charge_refundable => false,
|
@@ -705,6 +814,192 @@ module StripeMock
|
|
705
814
|
list.to_h
|
706
815
|
end
|
707
816
|
|
817
|
+
def self.mock_country_spec(country_code)
|
818
|
+
id = country_code || "US"
|
819
|
+
{
|
820
|
+
"id"=> "US",
|
821
|
+
"object"=> "country_spec",
|
822
|
+
"default_currency"=> "usd",
|
823
|
+
"supported_bank_account_currencies"=> {"usd"=>["US"]},
|
824
|
+
"supported_payment_currencies"=> [
|
825
|
+
"usd",
|
826
|
+
"aed",
|
827
|
+
"afn",
|
828
|
+
"all",
|
829
|
+
"amd",
|
830
|
+
"ang",
|
831
|
+
"aoa",
|
832
|
+
"ars",
|
833
|
+
"aud",
|
834
|
+
"awg",
|
835
|
+
"azn",
|
836
|
+
"bam",
|
837
|
+
"bbd",
|
838
|
+
"bdt",
|
839
|
+
"bgn",
|
840
|
+
"bif",
|
841
|
+
"bmd",
|
842
|
+
"bnd",
|
843
|
+
"bob",
|
844
|
+
"brl",
|
845
|
+
"bsd",
|
846
|
+
"bwp",
|
847
|
+
"bzd",
|
848
|
+
"cad",
|
849
|
+
"cdf",
|
850
|
+
"chf",
|
851
|
+
"clp",
|
852
|
+
"cny",
|
853
|
+
"cop",
|
854
|
+
"crc",
|
855
|
+
"cve",
|
856
|
+
"czk",
|
857
|
+
"djf",
|
858
|
+
"dkk",
|
859
|
+
"dop",
|
860
|
+
"dzd",
|
861
|
+
"egp",
|
862
|
+
"etb",
|
863
|
+
"eur",
|
864
|
+
"fjd",
|
865
|
+
"fkp",
|
866
|
+
"gbp",
|
867
|
+
"gel",
|
868
|
+
"gip",
|
869
|
+
"gmd",
|
870
|
+
"gnf",
|
871
|
+
"gtq",
|
872
|
+
"gyd",
|
873
|
+
"hkd",
|
874
|
+
"hnl",
|
875
|
+
"hrk",
|
876
|
+
"htg",
|
877
|
+
"huf",
|
878
|
+
"idr",
|
879
|
+
"ils",
|
880
|
+
"inr",
|
881
|
+
"isk",
|
882
|
+
"jmd",
|
883
|
+
"jpy",
|
884
|
+
"kes",
|
885
|
+
"kgs",
|
886
|
+
"khr",
|
887
|
+
"kmf",
|
888
|
+
"krw",
|
889
|
+
"kyd",
|
890
|
+
"kzt",
|
891
|
+
"lak",
|
892
|
+
"lbp",
|
893
|
+
"lkr",
|
894
|
+
"lrd",
|
895
|
+
"lsl",
|
896
|
+
"ltl",
|
897
|
+
"mad",
|
898
|
+
"mdl",
|
899
|
+
"mga",
|
900
|
+
"mkd",
|
901
|
+
"mnt",
|
902
|
+
"mop",
|
903
|
+
"mro",
|
904
|
+
"mur",
|
905
|
+
"mvr",
|
906
|
+
"mwk",
|
907
|
+
"mxn",
|
908
|
+
"myr",
|
909
|
+
"mzn",
|
910
|
+
"nad",
|
911
|
+
"ngn",
|
912
|
+
"nio",
|
913
|
+
"nok",
|
914
|
+
"npr",
|
915
|
+
"nzd",
|
916
|
+
"pab",
|
917
|
+
"pen",
|
918
|
+
"pgk",
|
919
|
+
"php",
|
920
|
+
"pkr",
|
921
|
+
"pln",
|
922
|
+
"pyg",
|
923
|
+
"qar",
|
924
|
+
"ron",
|
925
|
+
"rsd",
|
926
|
+
"rub",
|
927
|
+
"rwf",
|
928
|
+
"sar",
|
929
|
+
"sbd",
|
930
|
+
"scr",
|
931
|
+
"sek",
|
932
|
+
"sgd",
|
933
|
+
"shp",
|
934
|
+
"sll",
|
935
|
+
"sos",
|
936
|
+
"srd",
|
937
|
+
"std",
|
938
|
+
"svc",
|
939
|
+
"szl",
|
940
|
+
"thb",
|
941
|
+
"tjs",
|
942
|
+
"top",
|
943
|
+
"try",
|
944
|
+
"ttd",
|
945
|
+
"twd",
|
946
|
+
"tzs",
|
947
|
+
"uah",
|
948
|
+
"ugx",
|
949
|
+
"uyu",
|
950
|
+
"uzs",
|
951
|
+
"vnd",
|
952
|
+
"vuv",
|
953
|
+
"wst",
|
954
|
+
"xaf",
|
955
|
+
"xcd",
|
956
|
+
"xof",
|
957
|
+
"xpf",
|
958
|
+
"yer",
|
959
|
+
"zar",
|
960
|
+
"zmw"
|
961
|
+
],
|
962
|
+
"supported_payment_methods"=> [
|
963
|
+
"alipay",
|
964
|
+
"card",
|
965
|
+
"stripe"
|
966
|
+
],
|
967
|
+
"verification_fields"=> {"individual"=>{"minimum"=>["external_account","legal_entity.address.city","legal_entity.address.line1","legal_entity.address.postal_code","legal_entity.address.state","legal_entity.dob.day","legal_entity.dob.month","legal_entity.dob.year","legal_entity.first_name","legal_entity.last_name","legal_entity.personal_id_number","legal_entity.ssn_last_4","legal_entity.type","tos_acceptance.date","tos_acceptance.ip"],"additional"=>["legal_entity.personal_id_number","legal_entity.verification.document"]},"company"=>{"minimum"=>["external_account","legal_entity.address.city","legal_entity.address.line1","legal_entity.address.postal_code","legal_entity.address.state","legal_entity.business_name","legal_entity.business_tax_id","legal_entity.dob.day","legal_entity.dob.month","legal_entity.dob.year","legal_entity.first_name","legal_entity.last_name","legal_entity.ssn_last_4","legal_entity.type","tos_acceptance.date","tos_acceptance.ip"],"additional"=>["legal_entity.personal_id_number","legal_entity.verification.document"]}}
|
968
|
+
}
|
969
|
+
end
|
970
|
+
|
971
|
+
def self.mock_balance(usd_balance = 10000)
|
972
|
+
{
|
973
|
+
object: "balance",
|
974
|
+
available: [
|
975
|
+
{
|
976
|
+
currency: "usd",
|
977
|
+
amount: usd_balance,
|
978
|
+
source_types: {
|
979
|
+
card: 25907032203,
|
980
|
+
bank_account: 108476658,
|
981
|
+
bitcoin_receiver: 1545182
|
982
|
+
}
|
983
|
+
}],
|
984
|
+
connect_reserved: [
|
985
|
+
{
|
986
|
+
currency: "usd",
|
987
|
+
amount: 4700
|
988
|
+
}],
|
989
|
+
livemode: false,
|
990
|
+
pending: [
|
991
|
+
{
|
992
|
+
currency: "usd",
|
993
|
+
amount: 22738833554,
|
994
|
+
source_types: {
|
995
|
+
card: 22738826610,
|
996
|
+
bank_account: 0,
|
997
|
+
bitcoin_receiver: 6944
|
998
|
+
}
|
999
|
+
}]
|
1000
|
+
}
|
1001
|
+
end
|
1002
|
+
|
708
1003
|
def self.mock_balance_transactions(ids=[])
|
709
1004
|
bts = {}
|
710
1005
|
ids.each do |id|
|
@@ -714,6 +1009,7 @@ module StripeMock
|
|
714
1009
|
end
|
715
1010
|
|
716
1011
|
def self.mock_balance_transaction(params = {})
|
1012
|
+
currency = params[:currency] || StripeMock.default_currency
|
717
1013
|
bt_id = params[:id] || 'test_txn_default'
|
718
1014
|
source = params[:source] || 'ch_test_charge'
|
719
1015
|
{
|
@@ -722,14 +1018,14 @@ module StripeMock
|
|
722
1018
|
amount: 10000,
|
723
1019
|
available_on: 1462406400,
|
724
1020
|
created: 1461880226,
|
725
|
-
currency:
|
1021
|
+
currency: currency,
|
726
1022
|
description: nil,
|
727
1023
|
fee: 320,
|
728
1024
|
fee_details: [
|
729
1025
|
{
|
730
1026
|
amount: 320,
|
731
1027
|
application: nil,
|
732
|
-
currency:
|
1028
|
+
currency: currency,
|
733
1029
|
description: "Stripe processing fees",
|
734
1030
|
type: "stripe_fee"
|
735
1031
|
}
|
@@ -748,5 +1044,49 @@ module StripeMock
|
|
748
1044
|
}.merge(params)
|
749
1045
|
end
|
750
1046
|
|
1047
|
+
def self.mock_subscription_item(params = {})
|
1048
|
+
iid = params[:id] || 'test_txn_default'
|
1049
|
+
{
|
1050
|
+
id: iid,
|
1051
|
+
object: 'subscription_item',
|
1052
|
+
created: 1504716183,
|
1053
|
+
metadata: {
|
1054
|
+
},
|
1055
|
+
plan: {
|
1056
|
+
id: 'PER_USER_PLAN1',
|
1057
|
+
object: 'plan',
|
1058
|
+
amount: 1337,
|
1059
|
+
created: 1504716177,
|
1060
|
+
currency: StripeMock.default_currency,
|
1061
|
+
interval: 'month',
|
1062
|
+
interval_count: 1,
|
1063
|
+
livemode: false,
|
1064
|
+
metadata: {},
|
1065
|
+
name: 'StripeMock Default Plan ID',
|
1066
|
+
statement_descriptor: nil,
|
1067
|
+
trial_period_days: nil
|
1068
|
+
},
|
1069
|
+
quantity: 2
|
1070
|
+
}.merge(params)
|
1071
|
+
end
|
1072
|
+
|
1073
|
+
def self.mock_ephemeral_key(**params)
|
1074
|
+
created = Time.now.to_i
|
1075
|
+
expires = created + 34_000
|
1076
|
+
{
|
1077
|
+
id: "ephkey_default",
|
1078
|
+
object: "ephemeral_key",
|
1079
|
+
associated_objects: [
|
1080
|
+
{
|
1081
|
+
id: params[:customer],
|
1082
|
+
type: "customer"
|
1083
|
+
}
|
1084
|
+
],
|
1085
|
+
created: created,
|
1086
|
+
expires: expires,
|
1087
|
+
livemode: false,
|
1088
|
+
secret: "ek_test_default"
|
1089
|
+
}
|
1090
|
+
end
|
751
1091
|
end
|
752
1092
|
end
|