stripe-ruby-mock 2.3.1 → 2.5.8
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/.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
|