gocardless_pro 2.1.0 → 2.2.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 +4 -4
- data/.rubocop.yml +5 -0
- data/circle.yml +11 -3
- data/demo.rb +3 -3
- data/gocardless_pro.gemspec +6 -6
- data/lib/gocardless_pro.rb +2 -1
- data/lib/gocardless_pro/api_service.rb +3 -2
- data/lib/gocardless_pro/client.rb +6 -6
- data/lib/gocardless_pro/error.rb +4 -4
- data/lib/gocardless_pro/middlewares/raise_gocardless_errors.rb +4 -4
- data/lib/gocardless_pro/request.rb +2 -2
- data/lib/gocardless_pro/resources/bank_details_lookup.rb +1 -0
- data/lib/gocardless_pro/resources/creditor.rb +1 -0
- data/lib/gocardless_pro/resources/creditor_bank_account.rb +1 -0
- data/lib/gocardless_pro/resources/customer.rb +1 -0
- data/lib/gocardless_pro/resources/customer_bank_account.rb +1 -0
- data/lib/gocardless_pro/resources/event.rb +1 -0
- data/lib/gocardless_pro/resources/mandate.rb +1 -0
- data/lib/gocardless_pro/resources/mandate_pdf.rb +1 -0
- data/lib/gocardless_pro/resources/payment.rb +1 -0
- data/lib/gocardless_pro/resources/payout.rb +1 -0
- data/lib/gocardless_pro/resources/redirect_flow.rb +1 -0
- data/lib/gocardless_pro/resources/refund.rb +1 -0
- data/lib/gocardless_pro/resources/subscription.rb +1 -0
- data/lib/gocardless_pro/services/base_service.rb +1 -1
- data/lib/gocardless_pro/version.rb +1 -1
- data/spec/api_service_spec.rb +49 -49
- data/spec/client_spec.rb +1 -1
- data/spec/error_spec.rb +13 -13
- data/spec/middlewares/raise_gocardless_errors_spec.rb +15 -16
- data/spec/resources/bank_details_lookup_spec.rb +18 -18
- data/spec/resources/creditor_bank_account_spec.rb +46 -46
- data/spec/resources/creditor_spec.rb +42 -42
- data/spec/resources/customer_bank_account_spec.rb +48 -48
- data/spec/resources/customer_spec.rb +42 -42
- data/spec/resources/event_spec.rb +18 -18
- data/spec/resources/mandate_pdf_spec.rb +18 -18
- data/spec/resources/mandate_spec.rb +54 -54
- data/spec/resources/payment_spec.rb +54 -54
- data/spec/resources/payout_spec.rb +18 -18
- data/spec/resources/redirect_flow_spec.rb +36 -36
- data/spec/resources/refund_spec.rb +42 -42
- data/spec/resources/subscription_spec.rb +48 -48
- data/spec/response_spec.rb +1 -2
- data/spec/services/bank_details_lookups_service_spec.rb +25 -25
- data/spec/services/creditor_bank_accounts_service_spec.rb +86 -86
- data/spec/services/creditors_service_spec.rb +87 -87
- data/spec/services/customer_bank_accounts_service_spec.rb +95 -95
- data/spec/services/customers_service_spec.rb +87 -87
- data/spec/services/events_service_spec.rb +49 -49
- data/spec/services/mandate_pdfs_service_spec.rb +25 -25
- data/spec/services/mandates_service_spec.rb +103 -103
- data/spec/services/payments_service_spec.rb +103 -103
- data/spec/services/payouts_service_spec.rb +49 -49
- data/spec/services/redirect_flows_service_spec.rb +52 -52
- data/spec/services/refunds_service_spec.rb +87 -87
- data/spec/services/subscriptions_service_spec.rb +95 -95
- metadata +10 -10
@@ -28,13 +28,13 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
28
28
|
'postal_code' => 'postal_code-input',
|
29
29
|
'region' => 'region-input',
|
30
30
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
31
|
-
'verification_status' => 'verification_status-input'
|
31
|
+
'verification_status' => 'verification_status-input',
|
32
32
|
}
|
33
33
|
end
|
34
34
|
|
35
35
|
before do
|
36
|
-
stub_request(:post, %r{.*api.gocardless.com/creditors})
|
37
|
-
|
36
|
+
stub_request(:post, %r{.*api.gocardless.com/creditors}).
|
37
|
+
with(
|
38
38
|
body: {
|
39
39
|
'creditors' => {
|
40
40
|
|
@@ -51,11 +51,11 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
51
51
|
'postal_code' => 'postal_code-input',
|
52
52
|
'region' => 'region-input',
|
53
53
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
54
|
-
'verification_status' => 'verification_status-input'
|
55
|
-
}
|
54
|
+
'verification_status' => 'verification_status-input',
|
55
|
+
},
|
56
56
|
}
|
57
|
-
)
|
58
|
-
|
57
|
+
).
|
58
|
+
to_return(
|
59
59
|
body: {
|
60
60
|
'creditors' =>
|
61
61
|
|
@@ -74,8 +74,8 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
74
74
|
'postal_code' => 'postal_code-input',
|
75
75
|
'region' => 'region-input',
|
76
76
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
77
|
-
'verification_status' => 'verification_status-input'
|
78
|
-
}
|
77
|
+
'verification_status' => 'verification_status-input',
|
78
|
+
},
|
79
79
|
|
80
80
|
}.to_json,
|
81
81
|
headers: response_headers
|
@@ -90,19 +90,19 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
90
90
|
before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
|
91
91
|
|
92
92
|
it 'retries timeouts' do
|
93
|
-
stub = stub_request(:post, %r{.*api.gocardless.com/creditors})
|
94
|
-
|
93
|
+
stub = stub_request(:post, %r{.*api.gocardless.com/creditors}).
|
94
|
+
to_timeout.then.to_return(status: 200, headers: response_headers)
|
95
95
|
|
96
96
|
post_create_response
|
97
97
|
expect(stub).to have_been_requested.twice
|
98
98
|
end
|
99
99
|
|
100
100
|
it 'retries 5XX errors' do
|
101
|
-
stub = stub_request(:post, %r{.*api.gocardless.com/creditors})
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
101
|
+
stub = stub_request(:post, %r{.*api.gocardless.com/creditors}).
|
102
|
+
to_return(status: 502,
|
103
|
+
headers: { 'Content-Type' => 'text/html' },
|
104
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
105
|
+
then.to_return(status: 200, headers: response_headers)
|
106
106
|
|
107
107
|
post_create_response
|
108
108
|
expect(stub).to have_been_requested.twice
|
@@ -120,9 +120,9 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
120
120
|
type: 'validation_failed',
|
121
121
|
code: 422,
|
122
122
|
errors: [
|
123
|
-
{ message: 'test error message', field: 'test_field' }
|
124
|
-
]
|
125
|
-
}
|
123
|
+
{ message: 'test error message', field: 'test_field' },
|
124
|
+
],
|
125
|
+
},
|
126
126
|
}.to_json,
|
127
127
|
headers: response_headers,
|
128
128
|
status: 422
|
@@ -153,7 +153,7 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
153
153
|
'postal_code' => 'postal_code-input',
|
154
154
|
'region' => 'region-input',
|
155
155
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
156
|
-
'verification_status' => 'verification_status-input'
|
156
|
+
'verification_status' => 'verification_status-input',
|
157
157
|
}
|
158
158
|
end
|
159
159
|
|
@@ -168,11 +168,11 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
168
168
|
message: 'A resource has already been created with this idempotency key',
|
169
169
|
reason: 'idempotent_creation_conflict',
|
170
170
|
links: {
|
171
|
-
conflicting_resource_id: id
|
172
|
-
}
|
173
|
-
}
|
174
|
-
]
|
175
|
-
}
|
171
|
+
conflicting_resource_id: id,
|
172
|
+
},
|
173
|
+
},
|
174
|
+
],
|
175
|
+
},
|
176
176
|
}.to_json,
|
177
177
|
headers: response_headers,
|
178
178
|
status: 409
|
@@ -181,8 +181,8 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
181
181
|
|
182
182
|
let!(:get_stub) do
|
183
183
|
stub_url = "/creditors/#{id}"
|
184
|
-
stub_request(:get, /.*api.gocardless.com#{stub_url}/)
|
185
|
-
|
184
|
+
stub_request(:get, /.*api.gocardless.com#{stub_url}/).
|
185
|
+
to_return(
|
186
186
|
body: {
|
187
187
|
'creditors' => {
|
188
188
|
|
@@ -199,8 +199,8 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
199
199
|
'postal_code' => 'postal_code-input',
|
200
200
|
'region' => 'region-input',
|
201
201
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
202
|
-
'verification_status' => 'verification_status-input'
|
203
|
-
}
|
202
|
+
'verification_status' => 'verification_status-input',
|
203
|
+
},
|
204
204
|
}.to_json,
|
205
205
|
headers: response_headers
|
206
206
|
)
|
@@ -235,14 +235,14 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
235
235
|
'postal_code' => 'postal_code-input',
|
236
236
|
'region' => 'region-input',
|
237
237
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
238
|
-
'verification_status' => 'verification_status-input'
|
238
|
+
'verification_status' => 'verification_status-input',
|
239
239
|
}],
|
240
240
|
meta: {
|
241
241
|
cursors: {
|
242
242
|
before: nil,
|
243
|
-
after: 'ABC123'
|
244
|
-
}
|
245
|
-
}
|
243
|
+
after: 'ABC123',
|
244
|
+
},
|
245
|
+
},
|
246
246
|
}.to_json
|
247
247
|
end
|
248
248
|
|
@@ -294,19 +294,19 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
294
294
|
before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
|
295
295
|
|
296
296
|
it 'retries timeouts' do
|
297
|
-
stub = stub_request(:get, %r{.*api.gocardless.com/creditors})
|
298
|
-
|
297
|
+
stub = stub_request(:get, %r{.*api.gocardless.com/creditors}).
|
298
|
+
to_timeout.then.to_return(status: 200, headers: response_headers, body: body)
|
299
299
|
|
300
300
|
get_list_response
|
301
301
|
expect(stub).to have_been_requested.twice
|
302
302
|
end
|
303
303
|
|
304
304
|
it 'retries 5XX errors' do
|
305
|
-
stub = stub_request(:get, %r{.*api.gocardless.com/creditors})
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
305
|
+
stub = stub_request(:get, %r{.*api.gocardless.com/creditors}).
|
306
|
+
to_return(status: 502,
|
307
|
+
headers: { 'Content-Type' => 'text/html' },
|
308
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
309
|
+
then.to_return(status: 200, headers: response_headers, body: body)
|
310
310
|
|
311
311
|
get_list_response
|
312
312
|
expect(stub).to have_been_requested.twice
|
@@ -334,12 +334,12 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
334
334
|
'postal_code' => 'postal_code-input',
|
335
335
|
'region' => 'region-input',
|
336
336
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
337
|
-
'verification_status' => 'verification_status-input'
|
337
|
+
'verification_status' => 'verification_status-input',
|
338
338
|
}],
|
339
339
|
meta: {
|
340
340
|
cursors: { after: 'AB345' },
|
341
|
-
limit: 1
|
342
|
-
}
|
341
|
+
limit: 1,
|
342
|
+
},
|
343
343
|
}.to_json,
|
344
344
|
headers: response_headers
|
345
345
|
)
|
@@ -363,12 +363,12 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
363
363
|
'postal_code' => 'postal_code-input',
|
364
364
|
'region' => 'region-input',
|
365
365
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
366
|
-
'verification_status' => 'verification_status-input'
|
366
|
+
'verification_status' => 'verification_status-input',
|
367
367
|
}],
|
368
368
|
meta: {
|
369
369
|
limit: 2,
|
370
|
-
cursors: {}
|
371
|
-
}
|
370
|
+
cursors: {},
|
371
|
+
},
|
372
372
|
}.to_json,
|
373
373
|
headers: response_headers
|
374
374
|
)
|
@@ -401,19 +401,19 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
401
401
|
'postal_code' => 'postal_code-input',
|
402
402
|
'region' => 'region-input',
|
403
403
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
404
|
-
'verification_status' => 'verification_status-input'
|
404
|
+
'verification_status' => 'verification_status-input',
|
405
405
|
}],
|
406
406
|
meta: {
|
407
407
|
cursors: { after: 'AB345' },
|
408
|
-
limit: 1
|
409
|
-
}
|
408
|
+
limit: 1,
|
409
|
+
},
|
410
410
|
}.to_json,
|
411
411
|
headers: response_headers
|
412
412
|
)
|
413
413
|
|
414
|
-
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/creditors\?after=AB345})
|
415
|
-
|
416
|
-
|
414
|
+
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/creditors\?after=AB345}).
|
415
|
+
to_timeout.then.
|
416
|
+
to_return(
|
417
417
|
body: {
|
418
418
|
'creditors' => [{
|
419
419
|
|
@@ -430,12 +430,12 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
430
430
|
'postal_code' => 'postal_code-input',
|
431
431
|
'region' => 'region-input',
|
432
432
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
433
|
-
'verification_status' => 'verification_status-input'
|
433
|
+
'verification_status' => 'verification_status-input',
|
434
434
|
}],
|
435
435
|
meta: {
|
436
436
|
limit: 2,
|
437
|
-
cursors: {}
|
438
|
-
}
|
437
|
+
cursors: {},
|
438
|
+
},
|
439
439
|
}.to_json,
|
440
440
|
headers: response_headers
|
441
441
|
)
|
@@ -464,18 +464,18 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
464
464
|
'postal_code' => 'postal_code-input',
|
465
465
|
'region' => 'region-input',
|
466
466
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
467
|
-
'verification_status' => 'verification_status-input'
|
467
|
+
'verification_status' => 'verification_status-input',
|
468
468
|
}],
|
469
469
|
meta: {
|
470
470
|
cursors: { after: 'AB345' },
|
471
|
-
limit: 1
|
472
|
-
}
|
471
|
+
limit: 1,
|
472
|
+
},
|
473
473
|
}.to_json,
|
474
474
|
headers: response_headers
|
475
475
|
)
|
476
476
|
|
477
|
-
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/creditors\?after=AB345})
|
478
|
-
|
477
|
+
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/creditors\?after=AB345}).
|
478
|
+
to_return(
|
479
479
|
status: 502,
|
480
480
|
body: '<html><body>Response from Cloudflare</body></html>',
|
481
481
|
headers: { 'Content-Type' => 'text/html' }
|
@@ -496,12 +496,12 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
496
496
|
'postal_code' => 'postal_code-input',
|
497
497
|
'region' => 'region-input',
|
498
498
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
499
|
-
'verification_status' => 'verification_status-input'
|
499
|
+
'verification_status' => 'verification_status-input',
|
500
500
|
}],
|
501
501
|
meta: {
|
502
502
|
limit: 2,
|
503
|
-
cursors: {}
|
504
|
-
}
|
503
|
+
cursors: {},
|
504
|
+
},
|
505
505
|
}.to_json,
|
506
506
|
headers: response_headers
|
507
507
|
)
|
@@ -522,9 +522,9 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
522
522
|
context 'passing in a custom header' do
|
523
523
|
let!(:stub) do
|
524
524
|
stub_url = '/creditors/:identity'.gsub(':identity', id)
|
525
|
-
stub_request(:get, /.*api.gocardless.com#{stub_url}/)
|
526
|
-
|
527
|
-
|
525
|
+
stub_request(:get, /.*api.gocardless.com#{stub_url}/).
|
526
|
+
with(headers: { 'Foo' => 'Bar' }).
|
527
|
+
to_return(
|
528
528
|
body: {
|
529
529
|
'creditors' => {
|
530
530
|
|
@@ -541,8 +541,8 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
541
541
|
'postal_code' => 'postal_code-input',
|
542
542
|
'region' => 'region-input',
|
543
543
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
544
|
-
'verification_status' => 'verification_status-input'
|
545
|
-
}
|
544
|
+
'verification_status' => 'verification_status-input',
|
545
|
+
},
|
546
546
|
}.to_json,
|
547
547
|
headers: response_headers
|
548
548
|
)
|
@@ -550,7 +550,7 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
550
550
|
|
551
551
|
subject(:get_response) do
|
552
552
|
client.creditors.get(id, headers: {
|
553
|
-
'Foo' => 'Bar'
|
553
|
+
'Foo' => 'Bar',
|
554
554
|
})
|
555
555
|
end
|
556
556
|
|
@@ -580,8 +580,8 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
580
580
|
'postal_code' => 'postal_code-input',
|
581
581
|
'region' => 'region-input',
|
582
582
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
583
|
-
'verification_status' => 'verification_status-input'
|
584
|
-
}
|
583
|
+
'verification_status' => 'verification_status-input',
|
584
|
+
},
|
585
585
|
}.to_json,
|
586
586
|
headers: response_headers
|
587
587
|
)
|
@@ -620,8 +620,8 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
620
620
|
it 'retries timeouts' do
|
621
621
|
stub_url = '/creditors/:identity'.gsub(':identity', id)
|
622
622
|
|
623
|
-
stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/)
|
624
|
-
|
623
|
+
stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
|
624
|
+
to_timeout.then.to_return(status: 200, headers: response_headers)
|
625
625
|
|
626
626
|
get_response
|
627
627
|
expect(stub).to have_been_requested.twice
|
@@ -630,11 +630,11 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
630
630
|
it 'retries 5XX errors' do
|
631
631
|
stub_url = '/creditors/:identity'.gsub(':identity', id)
|
632
632
|
|
633
|
-
stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/)
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
633
|
+
stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
|
634
|
+
to_return(status: 502,
|
635
|
+
headers: { 'Content-Type' => 'text/html' },
|
636
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
637
|
+
then.to_return(status: 200, headers: response_headers)
|
638
638
|
|
639
639
|
get_response
|
640
640
|
expect(stub).to have_been_requested.twice
|
@@ -668,8 +668,8 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
668
668
|
'postal_code' => 'postal_code-input',
|
669
669
|
'region' => 'region-input',
|
670
670
|
'scheme_identifiers' => 'scheme_identifiers-input',
|
671
|
-
'verification_status' => 'verification_status-input'
|
672
|
-
}
|
671
|
+
'verification_status' => 'verification_status-input',
|
672
|
+
},
|
673
673
|
}.to_json,
|
674
674
|
headers: response_headers
|
675
675
|
)
|
@@ -685,8 +685,8 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
685
685
|
|
686
686
|
it 'retries timeouts' do
|
687
687
|
stub_url = '/creditors/:identity'.gsub(':identity', id)
|
688
|
-
stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/)
|
689
|
-
|
688
|
+
stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/).
|
689
|
+
to_timeout.then.to_return(status: 200, headers: response_headers)
|
690
690
|
|
691
691
|
put_update_response
|
692
692
|
expect(stub).to have_been_requested.twice
|
@@ -694,11 +694,11 @@ describe GoCardlessPro::Services::CreditorsService do
|
|
694
694
|
|
695
695
|
it 'retries 5XX errors' do
|
696
696
|
stub_url = '/creditors/:identity'.gsub(':identity', id)
|
697
|
-
stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/)
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
697
|
+
stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/).
|
698
|
+
to_return(status: 502,
|
699
|
+
headers: { 'Content-Type' => 'text/html' },
|
700
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
701
|
+
then.to_return(status: 200, headers: response_headers)
|
702
702
|
|
703
703
|
put_update_response
|
704
704
|
expect(stub).to have_been_requested.twice
|
@@ -24,13 +24,13 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
24
24
|
'enabled' => 'enabled-input',
|
25
25
|
'id' => 'id-input',
|
26
26
|
'links' => 'links-input',
|
27
|
-
'metadata' => 'metadata-input'
|
27
|
+
'metadata' => 'metadata-input',
|
28
28
|
}
|
29
29
|
end
|
30
30
|
|
31
31
|
before do
|
32
|
-
stub_request(:post, %r{.*api.gocardless.com/customer_bank_accounts})
|
33
|
-
|
32
|
+
stub_request(:post, %r{.*api.gocardless.com/customer_bank_accounts}).
|
33
|
+
with(
|
34
34
|
body: {
|
35
35
|
'customer_bank_accounts' => {
|
36
36
|
|
@@ -43,11 +43,11 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
43
43
|
'enabled' => 'enabled-input',
|
44
44
|
'id' => 'id-input',
|
45
45
|
'links' => 'links-input',
|
46
|
-
'metadata' => 'metadata-input'
|
47
|
-
}
|
46
|
+
'metadata' => 'metadata-input',
|
47
|
+
},
|
48
48
|
}
|
49
|
-
)
|
50
|
-
|
49
|
+
).
|
50
|
+
to_return(
|
51
51
|
body: {
|
52
52
|
'customer_bank_accounts' =>
|
53
53
|
|
@@ -62,8 +62,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
62
62
|
'enabled' => 'enabled-input',
|
63
63
|
'id' => 'id-input',
|
64
64
|
'links' => 'links-input',
|
65
|
-
'metadata' => 'metadata-input'
|
66
|
-
}
|
65
|
+
'metadata' => 'metadata-input',
|
66
|
+
},
|
67
67
|
|
68
68
|
}.to_json,
|
69
69
|
headers: response_headers
|
@@ -78,19 +78,19 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
78
78
|
before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
|
79
79
|
|
80
80
|
it 'retries timeouts' do
|
81
|
-
stub = stub_request(:post, %r{.*api.gocardless.com/customer_bank_accounts})
|
82
|
-
|
81
|
+
stub = stub_request(:post, %r{.*api.gocardless.com/customer_bank_accounts}).
|
82
|
+
to_timeout.then.to_return(status: 200, headers: response_headers)
|
83
83
|
|
84
84
|
post_create_response
|
85
85
|
expect(stub).to have_been_requested.twice
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'retries 5XX errors' do
|
89
|
-
stub = stub_request(:post, %r{.*api.gocardless.com/customer_bank_accounts})
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
89
|
+
stub = stub_request(:post, %r{.*api.gocardless.com/customer_bank_accounts}).
|
90
|
+
to_return(status: 502,
|
91
|
+
headers: { 'Content-Type' => 'text/html' },
|
92
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
93
|
+
then.to_return(status: 200, headers: response_headers)
|
94
94
|
|
95
95
|
post_create_response
|
96
96
|
expect(stub).to have_been_requested.twice
|
@@ -108,9 +108,9 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
108
108
|
type: 'validation_failed',
|
109
109
|
code: 422,
|
110
110
|
errors: [
|
111
|
-
{ message: 'test error message', field: 'test_field' }
|
112
|
-
]
|
113
|
-
}
|
111
|
+
{ message: 'test error message', field: 'test_field' },
|
112
|
+
],
|
113
|
+
},
|
114
114
|
}.to_json,
|
115
115
|
headers: response_headers,
|
116
116
|
status: 422
|
@@ -137,7 +137,7 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
137
137
|
'enabled' => 'enabled-input',
|
138
138
|
'id' => 'id-input',
|
139
139
|
'links' => 'links-input',
|
140
|
-
'metadata' => 'metadata-input'
|
140
|
+
'metadata' => 'metadata-input',
|
141
141
|
}
|
142
142
|
end
|
143
143
|
|
@@ -152,11 +152,11 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
152
152
|
message: 'A resource has already been created with this idempotency key',
|
153
153
|
reason: 'idempotent_creation_conflict',
|
154
154
|
links: {
|
155
|
-
conflicting_resource_id: id
|
156
|
-
}
|
157
|
-
}
|
158
|
-
]
|
159
|
-
}
|
155
|
+
conflicting_resource_id: id,
|
156
|
+
},
|
157
|
+
},
|
158
|
+
],
|
159
|
+
},
|
160
160
|
}.to_json,
|
161
161
|
headers: response_headers,
|
162
162
|
status: 409
|
@@ -165,8 +165,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
165
165
|
|
166
166
|
let!(:get_stub) do
|
167
167
|
stub_url = "/customer_bank_accounts/#{id}"
|
168
|
-
stub_request(:get, /.*api.gocardless.com#{stub_url}/)
|
169
|
-
|
168
|
+
stub_request(:get, /.*api.gocardless.com#{stub_url}/).
|
169
|
+
to_return(
|
170
170
|
body: {
|
171
171
|
'customer_bank_accounts' => {
|
172
172
|
|
@@ -179,8 +179,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
179
179
|
'enabled' => 'enabled-input',
|
180
180
|
'id' => 'id-input',
|
181
181
|
'links' => 'links-input',
|
182
|
-
'metadata' => 'metadata-input'
|
183
|
-
}
|
182
|
+
'metadata' => 'metadata-input',
|
183
|
+
},
|
184
184
|
}.to_json,
|
185
185
|
headers: response_headers
|
186
186
|
)
|
@@ -211,14 +211,14 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
211
211
|
'enabled' => 'enabled-input',
|
212
212
|
'id' => 'id-input',
|
213
213
|
'links' => 'links-input',
|
214
|
-
'metadata' => 'metadata-input'
|
214
|
+
'metadata' => 'metadata-input',
|
215
215
|
}],
|
216
216
|
meta: {
|
217
217
|
cursors: {
|
218
218
|
before: nil,
|
219
|
-
after: 'ABC123'
|
220
|
-
}
|
221
|
-
}
|
219
|
+
after: 'ABC123',
|
220
|
+
},
|
221
|
+
},
|
222
222
|
}.to_json
|
223
223
|
end
|
224
224
|
|
@@ -262,19 +262,19 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
262
262
|
before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
|
263
263
|
|
264
264
|
it 'retries timeouts' do
|
265
|
-
stub = stub_request(:get, %r{.*api.gocardless.com/customer_bank_accounts})
|
266
|
-
|
265
|
+
stub = stub_request(:get, %r{.*api.gocardless.com/customer_bank_accounts}).
|
266
|
+
to_timeout.then.to_return(status: 200, headers: response_headers, body: body)
|
267
267
|
|
268
268
|
get_list_response
|
269
269
|
expect(stub).to have_been_requested.twice
|
270
270
|
end
|
271
271
|
|
272
272
|
it 'retries 5XX errors' do
|
273
|
-
stub = stub_request(:get, %r{.*api.gocardless.com/customer_bank_accounts})
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
273
|
+
stub = stub_request(:get, %r{.*api.gocardless.com/customer_bank_accounts}).
|
274
|
+
to_return(status: 502,
|
275
|
+
headers: { 'Content-Type' => 'text/html' },
|
276
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
277
|
+
then.to_return(status: 200, headers: response_headers, body: body)
|
278
278
|
|
279
279
|
get_list_response
|
280
280
|
expect(stub).to have_been_requested.twice
|
@@ -298,12 +298,12 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
298
298
|
'enabled' => 'enabled-input',
|
299
299
|
'id' => 'id-input',
|
300
300
|
'links' => 'links-input',
|
301
|
-
'metadata' => 'metadata-input'
|
301
|
+
'metadata' => 'metadata-input',
|
302
302
|
}],
|
303
303
|
meta: {
|
304
304
|
cursors: { after: 'AB345' },
|
305
|
-
limit: 1
|
306
|
-
}
|
305
|
+
limit: 1,
|
306
|
+
},
|
307
307
|
}.to_json,
|
308
308
|
headers: response_headers
|
309
309
|
)
|
@@ -323,12 +323,12 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
323
323
|
'enabled' => 'enabled-input',
|
324
324
|
'id' => 'id-input',
|
325
325
|
'links' => 'links-input',
|
326
|
-
'metadata' => 'metadata-input'
|
326
|
+
'metadata' => 'metadata-input',
|
327
327
|
}],
|
328
328
|
meta: {
|
329
329
|
limit: 2,
|
330
|
-
cursors: {}
|
331
|
-
}
|
330
|
+
cursors: {},
|
331
|
+
},
|
332
332
|
}.to_json,
|
333
333
|
headers: response_headers
|
334
334
|
)
|
@@ -357,19 +357,19 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
357
357
|
'enabled' => 'enabled-input',
|
358
358
|
'id' => 'id-input',
|
359
359
|
'links' => 'links-input',
|
360
|
-
'metadata' => 'metadata-input'
|
360
|
+
'metadata' => 'metadata-input',
|
361
361
|
}],
|
362
362
|
meta: {
|
363
363
|
cursors: { after: 'AB345' },
|
364
|
-
limit: 1
|
365
|
-
}
|
364
|
+
limit: 1,
|
365
|
+
},
|
366
366
|
}.to_json,
|
367
367
|
headers: response_headers
|
368
368
|
)
|
369
369
|
|
370
|
-
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/customer_bank_accounts\?after=AB345})
|
371
|
-
|
372
|
-
|
370
|
+
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/customer_bank_accounts\?after=AB345}).
|
371
|
+
to_timeout.then.
|
372
|
+
to_return(
|
373
373
|
body: {
|
374
374
|
'customer_bank_accounts' => [{
|
375
375
|
|
@@ -382,12 +382,12 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
382
382
|
'enabled' => 'enabled-input',
|
383
383
|
'id' => 'id-input',
|
384
384
|
'links' => 'links-input',
|
385
|
-
'metadata' => 'metadata-input'
|
385
|
+
'metadata' => 'metadata-input',
|
386
386
|
}],
|
387
387
|
meta: {
|
388
388
|
limit: 2,
|
389
|
-
cursors: {}
|
390
|
-
}
|
389
|
+
cursors: {},
|
390
|
+
},
|
391
391
|
}.to_json,
|
392
392
|
headers: response_headers
|
393
393
|
)
|
@@ -412,18 +412,18 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
412
412
|
'enabled' => 'enabled-input',
|
413
413
|
'id' => 'id-input',
|
414
414
|
'links' => 'links-input',
|
415
|
-
'metadata' => 'metadata-input'
|
415
|
+
'metadata' => 'metadata-input',
|
416
416
|
}],
|
417
417
|
meta: {
|
418
418
|
cursors: { after: 'AB345' },
|
419
|
-
limit: 1
|
420
|
-
}
|
419
|
+
limit: 1,
|
420
|
+
},
|
421
421
|
}.to_json,
|
422
422
|
headers: response_headers
|
423
423
|
)
|
424
424
|
|
425
|
-
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/customer_bank_accounts\?after=AB345})
|
426
|
-
|
425
|
+
second_response_stub = stub_request(:get, %r{.*api.gocardless.com/customer_bank_accounts\?after=AB345}).
|
426
|
+
to_return(
|
427
427
|
status: 502,
|
428
428
|
body: '<html><body>Response from Cloudflare</body></html>',
|
429
429
|
headers: { 'Content-Type' => 'text/html' }
|
@@ -440,12 +440,12 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
440
440
|
'enabled' => 'enabled-input',
|
441
441
|
'id' => 'id-input',
|
442
442
|
'links' => 'links-input',
|
443
|
-
'metadata' => 'metadata-input'
|
443
|
+
'metadata' => 'metadata-input',
|
444
444
|
}],
|
445
445
|
meta: {
|
446
446
|
limit: 2,
|
447
|
-
cursors: {}
|
448
|
-
}
|
447
|
+
cursors: {},
|
448
|
+
},
|
449
449
|
}.to_json,
|
450
450
|
headers: response_headers
|
451
451
|
)
|
@@ -466,9 +466,9 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
466
466
|
context 'passing in a custom header' do
|
467
467
|
let!(:stub) do
|
468
468
|
stub_url = '/customer_bank_accounts/:identity'.gsub(':identity', id)
|
469
|
-
stub_request(:get, /.*api.gocardless.com#{stub_url}/)
|
470
|
-
|
471
|
-
|
469
|
+
stub_request(:get, /.*api.gocardless.com#{stub_url}/).
|
470
|
+
with(headers: { 'Foo' => 'Bar' }).
|
471
|
+
to_return(
|
472
472
|
body: {
|
473
473
|
'customer_bank_accounts' => {
|
474
474
|
|
@@ -481,8 +481,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
481
481
|
'enabled' => 'enabled-input',
|
482
482
|
'id' => 'id-input',
|
483
483
|
'links' => 'links-input',
|
484
|
-
'metadata' => 'metadata-input'
|
485
|
-
}
|
484
|
+
'metadata' => 'metadata-input',
|
485
|
+
},
|
486
486
|
}.to_json,
|
487
487
|
headers: response_headers
|
488
488
|
)
|
@@ -490,7 +490,7 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
490
490
|
|
491
491
|
subject(:get_response) do
|
492
492
|
client.customer_bank_accounts.get(id, headers: {
|
493
|
-
'Foo' => 'Bar'
|
493
|
+
'Foo' => 'Bar',
|
494
494
|
})
|
495
495
|
end
|
496
496
|
|
@@ -516,8 +516,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
516
516
|
'enabled' => 'enabled-input',
|
517
517
|
'id' => 'id-input',
|
518
518
|
'links' => 'links-input',
|
519
|
-
'metadata' => 'metadata-input'
|
520
|
-
}
|
519
|
+
'metadata' => 'metadata-input',
|
520
|
+
},
|
521
521
|
}.to_json,
|
522
522
|
headers: response_headers
|
523
523
|
)
|
@@ -556,8 +556,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
556
556
|
it 'retries timeouts' do
|
557
557
|
stub_url = '/customer_bank_accounts/:identity'.gsub(':identity', id)
|
558
558
|
|
559
|
-
stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/)
|
560
|
-
|
559
|
+
stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
|
560
|
+
to_timeout.then.to_return(status: 200, headers: response_headers)
|
561
561
|
|
562
562
|
get_response
|
563
563
|
expect(stub).to have_been_requested.twice
|
@@ -566,11 +566,11 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
566
566
|
it 'retries 5XX errors' do
|
567
567
|
stub_url = '/customer_bank_accounts/:identity'.gsub(':identity', id)
|
568
568
|
|
569
|
-
stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/)
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
569
|
+
stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
|
570
|
+
to_return(status: 502,
|
571
|
+
headers: { 'Content-Type' => 'text/html' },
|
572
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
573
|
+
then.to_return(status: 200, headers: response_headers)
|
574
574
|
|
575
575
|
get_response
|
576
576
|
expect(stub).to have_been_requested.twice
|
@@ -600,8 +600,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
600
600
|
'enabled' => 'enabled-input',
|
601
601
|
'id' => 'id-input',
|
602
602
|
'links' => 'links-input',
|
603
|
-
'metadata' => 'metadata-input'
|
604
|
-
}
|
603
|
+
'metadata' => 'metadata-input',
|
604
|
+
},
|
605
605
|
}.to_json,
|
606
606
|
headers: response_headers
|
607
607
|
)
|
@@ -617,8 +617,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
617
617
|
|
618
618
|
it 'retries timeouts' do
|
619
619
|
stub_url = '/customer_bank_accounts/:identity'.gsub(':identity', id)
|
620
|
-
stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/)
|
621
|
-
|
620
|
+
stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/).
|
621
|
+
to_timeout.then.to_return(status: 200, headers: response_headers)
|
622
622
|
|
623
623
|
put_update_response
|
624
624
|
expect(stub).to have_been_requested.twice
|
@@ -626,11 +626,11 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
626
626
|
|
627
627
|
it 'retries 5XX errors' do
|
628
628
|
stub_url = '/customer_bank_accounts/:identity'.gsub(':identity', id)
|
629
|
-
stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/)
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
629
|
+
stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/).
|
630
|
+
to_return(status: 502,
|
631
|
+
headers: { 'Content-Type' => 'text/html' },
|
632
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
633
|
+
then.to_return(status: 200, headers: response_headers)
|
634
634
|
|
635
635
|
put_update_response
|
636
636
|
expect(stub).to have_been_requested.twice
|
@@ -660,8 +660,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
660
660
|
'enabled' => 'enabled-input',
|
661
661
|
'id' => 'id-input',
|
662
662
|
'links' => 'links-input',
|
663
|
-
'metadata' => 'metadata-input'
|
664
|
-
}
|
663
|
+
'metadata' => 'metadata-input',
|
664
|
+
},
|
665
665
|
}.to_json,
|
666
666
|
headers: response_headers
|
667
667
|
)
|
@@ -676,8 +676,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
676
676
|
describe 'retry behaviour' do
|
677
677
|
it "doesn't retry errors" do
|
678
678
|
stub_url = '/customer_bank_accounts/:identity/actions/disable'.gsub(':identity', resource_id)
|
679
|
-
stub = stub_request(:post, /.*api.gocardless.com#{stub_url}/)
|
680
|
-
|
679
|
+
stub = stub_request(:post, /.*api.gocardless.com#{stub_url}/).
|
680
|
+
to_timeout
|
681
681
|
|
682
682
|
expect { post_response }.to raise_error(Faraday::TimeoutError)
|
683
683
|
expect(stub).to have_been_requested
|
@@ -694,8 +694,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
694
694
|
let!(:stub) do
|
695
695
|
# /customer_bank_accounts/%v/actions/disable
|
696
696
|
stub_url = '/customer_bank_accounts/:identity/actions/disable'.gsub(':identity', resource_id)
|
697
|
-
stub_request(:post, /.*api.gocardless.com#{stub_url}/)
|
698
|
-
|
697
|
+
stub_request(:post, /.*api.gocardless.com#{stub_url}/).
|
698
|
+
with(
|
699
699
|
body: { foo: 'bar' },
|
700
700
|
headers: { 'Foo' => 'Bar' }
|
701
701
|
).to_return(
|
@@ -711,8 +711,8 @@ describe GoCardlessPro::Services::CustomerBankAccountsService do
|
|
711
711
|
'enabled' => 'enabled-input',
|
712
712
|
'id' => 'id-input',
|
713
713
|
'links' => 'links-input',
|
714
|
-
'metadata' => 'metadata-input'
|
715
|
-
}
|
714
|
+
'metadata' => 'metadata-input',
|
715
|
+
},
|
716
716
|
}.to_json,
|
717
717
|
headers: response_headers
|
718
718
|
)
|