gocardless_pro 2.41.0 → 2.41.1

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.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gocardless_pro/api_service.rb +4 -5
  3. data/lib/gocardless_pro/client.rb +3 -3
  4. data/lib/gocardless_pro/error/invalid_state_error.rb +1 -0
  5. data/lib/gocardless_pro/error.rb +1 -0
  6. data/lib/gocardless_pro/middlewares/raise_gocardless_errors.rb +7 -9
  7. data/lib/gocardless_pro/request.rb +5 -7
  8. data/lib/gocardless_pro/resources/bank_authorisation.rb +0 -2
  9. data/lib/gocardless_pro/resources/bank_details_lookup.rb +0 -2
  10. data/lib/gocardless_pro/resources/billing_request.rb +0 -2
  11. data/lib/gocardless_pro/resources/billing_request_flow.rb +0 -2
  12. data/lib/gocardless_pro/resources/billing_request_template.rb +0 -2
  13. data/lib/gocardless_pro/resources/block.rb +0 -2
  14. data/lib/gocardless_pro/resources/creditor.rb +0 -2
  15. data/lib/gocardless_pro/resources/creditor_bank_account.rb +0 -2
  16. data/lib/gocardless_pro/resources/currency_exchange_rate.rb +0 -2
  17. data/lib/gocardless_pro/resources/customer.rb +0 -2
  18. data/lib/gocardless_pro/resources/customer_bank_account.rb +0 -2
  19. data/lib/gocardless_pro/resources/customer_notification.rb +0 -2
  20. data/lib/gocardless_pro/resources/event.rb +0 -2
  21. data/lib/gocardless_pro/resources/instalment_schedule.rb +0 -2
  22. data/lib/gocardless_pro/resources/institution.rb +0 -2
  23. data/lib/gocardless_pro/resources/mandate.rb +0 -2
  24. data/lib/gocardless_pro/resources/mandate_import.rb +0 -2
  25. data/lib/gocardless_pro/resources/mandate_import_entry.rb +0 -2
  26. data/lib/gocardless_pro/resources/mandate_pdf.rb +0 -2
  27. data/lib/gocardless_pro/resources/payer_authorisation.rb +0 -2
  28. data/lib/gocardless_pro/resources/payment.rb +0 -2
  29. data/lib/gocardless_pro/resources/payout.rb +0 -2
  30. data/lib/gocardless_pro/resources/payout_item.rb +0 -2
  31. data/lib/gocardless_pro/resources/redirect_flow.rb +0 -2
  32. data/lib/gocardless_pro/resources/refund.rb +0 -2
  33. data/lib/gocardless_pro/resources/scenario_simulator.rb +0 -2
  34. data/lib/gocardless_pro/resources/scheme_identifier.rb +0 -2
  35. data/lib/gocardless_pro/resources/subscription.rb +0 -2
  36. data/lib/gocardless_pro/resources/tax_rate.rb +0 -2
  37. data/lib/gocardless_pro/resources/verification_detail.rb +0 -2
  38. data/lib/gocardless_pro/resources/webhook.rb +0 -2
  39. data/lib/gocardless_pro/services/bank_authorisations_service.rb +3 -1
  40. data/lib/gocardless_pro/services/billing_request_flows_service.rb +3 -1
  41. data/lib/gocardless_pro/services/billing_request_templates_service.rb +6 -2
  42. data/lib/gocardless_pro/services/billing_requests_service.rb +27 -9
  43. data/lib/gocardless_pro/services/blocks_service.rb +9 -3
  44. data/lib/gocardless_pro/services/creditor_bank_accounts_service.rb +6 -2
  45. data/lib/gocardless_pro/services/creditors_service.rb +9 -3
  46. data/lib/gocardless_pro/services/customer_bank_accounts_service.rb +9 -3
  47. data/lib/gocardless_pro/services/customer_notifications_service.rb +3 -1
  48. data/lib/gocardless_pro/services/customers_service.rb +9 -3
  49. data/lib/gocardless_pro/services/events_service.rb +3 -1
  50. data/lib/gocardless_pro/services/instalment_schedules_service.rb +9 -3
  51. data/lib/gocardless_pro/services/mandate_imports_service.rb +9 -3
  52. data/lib/gocardless_pro/services/mandates_service.rb +12 -4
  53. data/lib/gocardless_pro/services/payer_authorisations_service.rb +12 -4
  54. data/lib/gocardless_pro/services/payments_service.rb +12 -4
  55. data/lib/gocardless_pro/services/payouts_service.rb +6 -2
  56. data/lib/gocardless_pro/services/redirect_flows_service.rb +6 -2
  57. data/lib/gocardless_pro/services/refunds_service.rb +6 -2
  58. data/lib/gocardless_pro/services/scenario_simulators_service.rb +3 -1
  59. data/lib/gocardless_pro/services/scheme_identifiers_service.rb +3 -1
  60. data/lib/gocardless_pro/services/subscriptions_service.rb +15 -5
  61. data/lib/gocardless_pro/services/tax_rates_service.rb +3 -1
  62. data/lib/gocardless_pro/services/webhooks_service.rb +6 -2
  63. data/lib/gocardless_pro/version.rb +1 -2
  64. data/lib/gocardless_pro/webhook.rb +5 -4
  65. data/lib/gocardless_pro.rb +2 -4
  66. metadata +5 -195
  67. data/.github/workflows/tests.yml +0 -40
  68. data/.gitignore +0 -1
  69. data/.rspec +0 -2
  70. data/.rubocop.yml +0 -5
  71. data/.travis.yml +0 -10
  72. data/LICENSE.txt +0 -22
  73. data/demo.rb +0 -9
  74. data/gocardless_pro.gemspec +0 -39
  75. data/spec/api_response_spec.rb +0 -28
  76. data/spec/api_service_spec.rb +0 -188
  77. data/spec/client_spec.rb +0 -19
  78. data/spec/error_spec.rb +0 -53
  79. data/spec/middlewares/raise_gocardless_errors_spec.rb +0 -127
  80. data/spec/resources/bank_authorisation_spec.rb +0 -259
  81. data/spec/resources/bank_details_lookup_spec.rb +0 -121
  82. data/spec/resources/billing_request_flow_spec.rb +0 -257
  83. data/spec/resources/billing_request_spec.rb +0 -962
  84. data/spec/resources/billing_request_template_spec.rb +0 -515
  85. data/spec/resources/block_spec.rb +0 -577
  86. data/spec/resources/creditor_bank_account_spec.rb +0 -472
  87. data/spec/resources/creditor_spec.rb +0 -659
  88. data/spec/resources/currency_exchange_rate_spec.rb +0 -103
  89. data/spec/resources/customer_bank_account_spec.rb +0 -509
  90. data/spec/resources/customer_notification_spec.rb +0 -75
  91. data/spec/resources/customer_spec.rb +0 -616
  92. data/spec/resources/event_spec.rb +0 -210
  93. data/spec/resources/instalment_schedule_spec.rb +0 -636
  94. data/spec/resources/institution_spec.rb +0 -113
  95. data/spec/resources/mandate_import_entry_spec.rb +0 -206
  96. data/spec/resources/mandate_import_spec.rb +0 -344
  97. data/spec/resources/mandate_pdf_spec.rb +0 -117
  98. data/spec/resources/mandate_spec.rb +0 -600
  99. data/spec/resources/payer_authorisation_spec.rb +0 -422
  100. data/spec/resources/payment_spec.rb +0 -617
  101. data/spec/resources/payout_item_spec.rb +0 -101
  102. data/spec/resources/payout_spec.rb +0 -284
  103. data/spec/resources/redirect_flow_spec.rb +0 -347
  104. data/spec/resources/refund_spec.rb +0 -409
  105. data/spec/resources/scenario_simulator_spec.rb +0 -65
  106. data/spec/resources/scheme_identifier_spec.rb +0 -484
  107. data/spec/resources/subscription_spec.rb +0 -828
  108. data/spec/resources/tax_rate_spec.rb +0 -198
  109. data/spec/resources/verification_detail_spec.rb +0 -145
  110. data/spec/resources/webhook_spec.rb +0 -325
  111. data/spec/response_spec.rb +0 -34
  112. data/spec/services/bank_authorisations_service_spec.rb +0 -353
  113. data/spec/services/bank_details_lookups_service_spec.rb +0 -144
  114. data/spec/services/billing_request_flows_service_spec.rb +0 -291
  115. data/spec/services/billing_request_templates_service_spec.rb +0 -806
  116. data/spec/services/billing_requests_service_spec.rb +0 -1288
  117. data/spec/services/blocks_service_spec.rb +0 -840
  118. data/spec/services/creditor_bank_accounts_service_spec.rb +0 -725
  119. data/spec/services/creditors_service_spec.rb +0 -977
  120. data/spec/services/currency_exchange_rates_service_spec.rb +0 -223
  121. data/spec/services/customer_bank_accounts_service_spec.rb +0 -787
  122. data/spec/services/customer_notifications_service_spec.rb +0 -86
  123. data/spec/services/customers_service_spec.rb +0 -922
  124. data/spec/services/events_service_spec.rb +0 -401
  125. data/spec/services/instalment_schedules_service_spec.rb +0 -945
  126. data/spec/services/institutions_service_spec.rb +0 -241
  127. data/spec/services/mandate_import_entries_service_spec.rb +0 -345
  128. data/spec/services/mandate_imports_service_spec.rb +0 -460
  129. data/spec/services/mandate_pdfs_service_spec.rb +0 -140
  130. data/spec/services/mandates_service_spec.rb +0 -893
  131. data/spec/services/payer_authorisations_service_spec.rb +0 -563
  132. data/spec/services/payments_service_spec.rb +0 -914
  133. data/spec/services/payout_items_service_spec.rb +0 -221
  134. data/spec/services/payouts_service_spec.rb +0 -520
  135. data/spec/services/redirect_flows_service_spec.rb +0 -452
  136. data/spec/services/refunds_service_spec.rb +0 -668
  137. data/spec/services/scenario_simulators_service_spec.rb +0 -76
  138. data/spec/services/scheme_identifiers_service_spec.rb +0 -754
  139. data/spec/services/subscriptions_service_spec.rb +0 -1164
  140. data/spec/services/tax_rates_service_spec.rb +0 -381
  141. data/spec/services/verification_details_service_spec.rb +0 -168
  142. data/spec/services/webhooks_service_spec.rb +0 -547
  143. data/spec/spec_helper.rb +0 -90
  144. data/spec/webhook_spec.rb +0 -122
@@ -1,452 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe GoCardlessPro::Services::RedirectFlowsService do
4
- let(:client) do
5
- GoCardlessPro::Client.new(
6
- access_token: 'SECRET_TOKEN'
7
- )
8
- end
9
-
10
- let(:response_headers) { { 'Content-Type' => 'application/json' } }
11
-
12
- describe '#create' do
13
- subject(:post_create_response) { client.redirect_flows.create(params: new_resource) }
14
- context 'with a valid request' do
15
- let(:new_resource) do
16
- {
17
-
18
- 'confirmation_url' => 'confirmation_url-input',
19
- 'created_at' => 'created_at-input',
20
- 'description' => 'description-input',
21
- 'id' => 'id-input',
22
- 'links' => 'links-input',
23
- 'mandate_reference' => 'mandate_reference-input',
24
- 'metadata' => 'metadata-input',
25
- 'redirect_url' => 'redirect_url-input',
26
- 'scheme' => 'scheme-input',
27
- 'session_token' => 'session_token-input',
28
- 'success_redirect_url' => 'success_redirect_url-input',
29
- }
30
- end
31
-
32
- before do
33
- stub_request(:post, %r{.*api.gocardless.com/redirect_flows}).
34
- with(
35
- body: {
36
- 'redirect_flows' => {
37
-
38
- 'confirmation_url' => 'confirmation_url-input',
39
- 'created_at' => 'created_at-input',
40
- 'description' => 'description-input',
41
- 'id' => 'id-input',
42
- 'links' => 'links-input',
43
- 'mandate_reference' => 'mandate_reference-input',
44
- 'metadata' => 'metadata-input',
45
- 'redirect_url' => 'redirect_url-input',
46
- 'scheme' => 'scheme-input',
47
- 'session_token' => 'session_token-input',
48
- 'success_redirect_url' => 'success_redirect_url-input',
49
- },
50
- }
51
- ).
52
- to_return(
53
- body: {
54
- 'redirect_flows' =>
55
-
56
- {
57
-
58
- 'confirmation_url' => 'confirmation_url-input',
59
- 'created_at' => 'created_at-input',
60
- 'description' => 'description-input',
61
- 'id' => 'id-input',
62
- 'links' => 'links-input',
63
- 'mandate_reference' => 'mandate_reference-input',
64
- 'metadata' => 'metadata-input',
65
- 'redirect_url' => 'redirect_url-input',
66
- 'scheme' => 'scheme-input',
67
- 'session_token' => 'session_token-input',
68
- 'success_redirect_url' => 'success_redirect_url-input',
69
- },
70
-
71
- }.to_json,
72
- headers: response_headers
73
- )
74
- end
75
-
76
- it 'creates and returns the resource' do
77
- expect(post_create_response).to be_a(GoCardlessPro::Resources::RedirectFlow)
78
- end
79
-
80
- describe 'retry behaviour' do
81
- before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
82
-
83
- it 'retries timeouts' do
84
- stub = stub_request(:post, %r{.*api.gocardless.com/redirect_flows}).
85
- to_timeout.then.to_return(status: 200, headers: response_headers)
86
-
87
- post_create_response
88
- expect(stub).to have_been_requested.twice
89
- end
90
-
91
- it 'retries 5XX errors' do
92
- stub = stub_request(:post, %r{.*api.gocardless.com/redirect_flows}).
93
- to_return(status: 502,
94
- headers: { 'Content-Type' => 'text/html' },
95
- body: '<html><body>Response from Cloudflare</body></html>').
96
- then.to_return(status: 200, headers: response_headers)
97
-
98
- post_create_response
99
- expect(stub).to have_been_requested.twice
100
- end
101
- end
102
- end
103
-
104
- context 'with a request that returns a validation error' do
105
- let(:new_resource) { {} }
106
-
107
- before do
108
- stub_request(:post, %r{.*api.gocardless.com/redirect_flows}).to_return(
109
- body: {
110
- error: {
111
- type: 'validation_failed',
112
- code: 422,
113
- errors: [
114
- { message: 'test error message', field: 'test_field' },
115
- ],
116
- },
117
- }.to_json,
118
- headers: response_headers,
119
- status: 422
120
- )
121
- end
122
-
123
- it 'throws the correct error' do
124
- expect { post_create_response }.to raise_error(GoCardlessPro::ValidationError)
125
- end
126
- end
127
-
128
- context 'with a request that returns an idempotent creation conflict error' do
129
- let(:id) { 'ID123' }
130
-
131
- let(:new_resource) do
132
- {
133
-
134
- 'confirmation_url' => 'confirmation_url-input',
135
- 'created_at' => 'created_at-input',
136
- 'description' => 'description-input',
137
- 'id' => 'id-input',
138
- 'links' => 'links-input',
139
- 'mandate_reference' => 'mandate_reference-input',
140
- 'metadata' => 'metadata-input',
141
- 'redirect_url' => 'redirect_url-input',
142
- 'scheme' => 'scheme-input',
143
- 'session_token' => 'session_token-input',
144
- 'success_redirect_url' => 'success_redirect_url-input',
145
- }
146
- end
147
-
148
- let!(:post_stub) do
149
- stub_request(:post, %r{.*api.gocardless.com/redirect_flows}).to_return(
150
- body: {
151
- error: {
152
- type: 'invalid_state',
153
- code: 409,
154
- errors: [
155
- {
156
- message: 'A resource has already been created with this idempotency key',
157
- reason: 'idempotent_creation_conflict',
158
- links: {
159
- conflicting_resource_id: id,
160
- },
161
- },
162
- ],
163
- },
164
- }.to_json,
165
- headers: response_headers,
166
- status: 409
167
- )
168
- end
169
-
170
- let!(:get_stub) do
171
- stub_url = "/redirect_flows/#{id}"
172
- stub_request(:get, /.*api.gocardless.com#{stub_url}/).
173
- to_return(
174
- body: {
175
- 'redirect_flows' => {
176
-
177
- 'confirmation_url' => 'confirmation_url-input',
178
- 'created_at' => 'created_at-input',
179
- 'description' => 'description-input',
180
- 'id' => 'id-input',
181
- 'links' => 'links-input',
182
- 'mandate_reference' => 'mandate_reference-input',
183
- 'metadata' => 'metadata-input',
184
- 'redirect_url' => 'redirect_url-input',
185
- 'scheme' => 'scheme-input',
186
- 'session_token' => 'session_token-input',
187
- 'success_redirect_url' => 'success_redirect_url-input',
188
- },
189
- }.to_json,
190
- headers: response_headers
191
- )
192
- end
193
-
194
- context 'with default behaviour' do
195
- it 'fetches the already-created resource' do
196
- post_create_response
197
- expect(post_stub).to have_been_requested
198
- expect(get_stub).to have_been_requested
199
- end
200
- end
201
-
202
- context 'with on_idempotency_conflict: :raise' do
203
- let(:client) do
204
- GoCardlessPro::Client.new(
205
- access_token: 'SECRET_TOKEN',
206
- on_idempotency_conflict: :raise
207
- )
208
- end
209
-
210
- it 'raises an IdempotencyConflict error' do
211
- expect { post_create_response }.
212
- to raise_error(GoCardlessPro::IdempotencyConflict)
213
- end
214
- end
215
- end
216
- end
217
-
218
- describe '#get' do
219
- let(:id) { 'ID123' }
220
-
221
- subject(:get_response) { client.redirect_flows.get(id) }
222
-
223
- context 'passing in a custom header' do
224
- let!(:stub) do
225
- stub_url = '/redirect_flows/:identity'.gsub(':identity', id)
226
- stub_request(:get, /.*api.gocardless.com#{stub_url}/).
227
- with(headers: { 'Foo' => 'Bar' }).
228
- to_return(
229
- body: {
230
- 'redirect_flows' => {
231
-
232
- 'confirmation_url' => 'confirmation_url-input',
233
- 'created_at' => 'created_at-input',
234
- 'description' => 'description-input',
235
- 'id' => 'id-input',
236
- 'links' => 'links-input',
237
- 'mandate_reference' => 'mandate_reference-input',
238
- 'metadata' => 'metadata-input',
239
- 'redirect_url' => 'redirect_url-input',
240
- 'scheme' => 'scheme-input',
241
- 'session_token' => 'session_token-input',
242
- 'success_redirect_url' => 'success_redirect_url-input',
243
- },
244
- }.to_json,
245
- headers: response_headers
246
- )
247
- end
248
-
249
- subject(:get_response) do
250
- client.redirect_flows.get(id, headers: {
251
- 'Foo' => 'Bar',
252
- })
253
- end
254
-
255
- it 'includes the header' do
256
- get_response
257
- expect(stub).to have_been_requested
258
- end
259
- end
260
-
261
- context 'when there is a redirect_flow to return' do
262
- before do
263
- stub_url = '/redirect_flows/:identity'.gsub(':identity', id)
264
- stub_request(:get, /.*api.gocardless.com#{stub_url}/).to_return(
265
- body: {
266
- 'redirect_flows' => {
267
-
268
- 'confirmation_url' => 'confirmation_url-input',
269
- 'created_at' => 'created_at-input',
270
- 'description' => 'description-input',
271
- 'id' => 'id-input',
272
- 'links' => 'links-input',
273
- 'mandate_reference' => 'mandate_reference-input',
274
- 'metadata' => 'metadata-input',
275
- 'redirect_url' => 'redirect_url-input',
276
- 'scheme' => 'scheme-input',
277
- 'session_token' => 'session_token-input',
278
- 'success_redirect_url' => 'success_redirect_url-input',
279
- },
280
- }.to_json,
281
- headers: response_headers
282
- )
283
- end
284
-
285
- it 'wraps the response in a resource' do
286
- expect(get_response).to be_a(GoCardlessPro::Resources::RedirectFlow)
287
- end
288
- end
289
-
290
- context 'when nothing is returned' do
291
- before do
292
- stub_url = '/redirect_flows/:identity'.gsub(':identity', id)
293
- stub_request(:get, /.*api.gocardless.com#{stub_url}/).to_return(
294
- body: '',
295
- headers: response_headers
296
- )
297
- end
298
-
299
- it 'returns nil' do
300
- expect(get_response).to be_nil
301
- end
302
- end
303
-
304
- context "when an ID is specified which can't be included in a valid URI" do
305
- let(:id) { '`' }
306
-
307
- it "doesn't raise an error" do
308
- expect { get_response }.to_not raise_error(/bad URI/)
309
- end
310
- end
311
-
312
- describe 'retry behaviour' do
313
- before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
314
-
315
- it 'retries timeouts' do
316
- stub_url = '/redirect_flows/:identity'.gsub(':identity', id)
317
-
318
- stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
319
- to_timeout.then.to_return(status: 200, headers: response_headers)
320
-
321
- get_response
322
- expect(stub).to have_been_requested.twice
323
- end
324
-
325
- it 'retries 5XX errors, other than 500s' do
326
- stub_url = '/redirect_flows/:identity'.gsub(':identity', id)
327
-
328
- stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
329
- to_return(status: 502,
330
- headers: { 'Content-Type' => 'text/html' },
331
- body: '<html><body>Response from Cloudflare</body></html>').
332
- then.to_return(status: 200, headers: response_headers)
333
-
334
- get_response
335
- expect(stub).to have_been_requested.twice
336
- end
337
-
338
- it 'retries 500 errors returned by the API' do
339
- stub_url = '/redirect_flows/:identity'.gsub(':identity', id)
340
-
341
- gocardless_error = {
342
- 'error' => {
343
- 'message' => 'Internal server error',
344
- 'documentation_url' => 'https://developer.gocardless.com/#gocardless',
345
- 'errors' => [{
346
- 'message' => 'Internal server error',
347
- 'reason' => 'internal_server_error',
348
- }],
349
- 'type' => 'gocardless',
350
- 'code' => 500,
351
- 'request_id' => 'dummy_request_id',
352
- 'id' => 'dummy_exception_id',
353
- },
354
- }
355
-
356
- stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
357
- to_return(status: 500,
358
- headers: response_headers,
359
- body: gocardless_error.to_json).
360
- then.to_return(status: 200, headers: response_headers)
361
-
362
- get_response
363
- expect(stub).to have_been_requested.twice
364
- end
365
- end
366
- end
367
-
368
- describe '#complete' do
369
- subject(:post_response) { client.redirect_flows.complete(resource_id) }
370
-
371
- let(:resource_id) { 'ABC123' }
372
-
373
- let!(:stub) do
374
- # /redirect_flows/%v/actions/complete
375
- stub_url = '/redirect_flows/:identity/actions/complete'.gsub(':identity', resource_id)
376
- stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
377
-
378
- body: {
379
- 'redirect_flows' => {
380
-
381
- 'confirmation_url' => 'confirmation_url-input',
382
- 'created_at' => 'created_at-input',
383
- 'description' => 'description-input',
384
- 'id' => 'id-input',
385
- 'links' => 'links-input',
386
- 'mandate_reference' => 'mandate_reference-input',
387
- 'metadata' => 'metadata-input',
388
- 'redirect_url' => 'redirect_url-input',
389
- 'scheme' => 'scheme-input',
390
- 'session_token' => 'session_token-input',
391
- 'success_redirect_url' => 'success_redirect_url-input',
392
- },
393
- }.to_json,
394
-
395
- headers: response_headers
396
- )
397
- end
398
-
399
- it 'wraps the response and calls the right endpoint' do
400
- expect(post_response).to be_a(GoCardlessPro::Resources::RedirectFlow)
401
-
402
- expect(stub).to have_been_requested
403
- end
404
-
405
- describe 'retry behaviour' do
406
- it "doesn't retry errors" do
407
- stub_url = '/redirect_flows/:identity/actions/complete'.gsub(':identity', resource_id)
408
- stub = stub_request(:post, /.*api.gocardless.com#{stub_url}/).
409
- to_timeout
410
-
411
- expect { post_response }.to raise_error(Faraday::ConnectionFailed)
412
- expect(stub).to have_been_requested
413
- end
414
- end
415
-
416
- context 'when the request needs a body and custom header' do
417
- let(:body) { { foo: 'bar' } }
418
- let(:headers) { { 'Foo' => 'Bar' } }
419
- subject(:post_response) { client.redirect_flows.complete(resource_id, body, headers) }
420
-
421
- let(:resource_id) { 'ABC123' }
422
-
423
- let!(:stub) do
424
- # /redirect_flows/%v/actions/complete
425
- stub_url = '/redirect_flows/:identity/actions/complete'.gsub(':identity', resource_id)
426
- stub_request(:post, /.*api.gocardless.com#{stub_url}/).
427
- with(
428
- body: { foo: 'bar' },
429
- headers: { 'Foo' => 'Bar' }
430
- ).to_return(
431
- body: {
432
- 'redirect_flows' => {
433
-
434
- 'confirmation_url' => 'confirmation_url-input',
435
- 'created_at' => 'created_at-input',
436
- 'description' => 'description-input',
437
- 'id' => 'id-input',
438
- 'links' => 'links-input',
439
- 'mandate_reference' => 'mandate_reference-input',
440
- 'metadata' => 'metadata-input',
441
- 'redirect_url' => 'redirect_url-input',
442
- 'scheme' => 'scheme-input',
443
- 'session_token' => 'session_token-input',
444
- 'success_redirect_url' => 'success_redirect_url-input',
445
- },
446
- }.to_json,
447
- headers: response_headers
448
- )
449
- end
450
- end
451
- end
452
- end