gocardless_pro 2.40.0 → 2.41.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/.github/workflows/tests.yml +3 -5
- data/Gemfile +2 -1
- data/lib/gocardless_pro/client.rb +11 -1
- data/lib/gocardless_pro/resources/mandate.rb +2 -0
- data/lib/gocardless_pro/resources/scheme_identifier.rb +75 -0
- data/lib/gocardless_pro/resources/verification_detail.rb +68 -0
- data/lib/gocardless_pro/services/creditors_service.rb +44 -0
- data/lib/gocardless_pro/services/scheme_identifiers_service.rb +114 -0
- data/lib/gocardless_pro/services/verification_details_service.rb +51 -0
- data/lib/gocardless_pro/version.rb +1 -1
- data/lib/gocardless_pro.rb +6 -0
- data/spec/resources/creditor_spec.rb +94 -0
- data/spec/resources/mandate_spec.rb +17 -0
- data/spec/resources/scheme_identifier_spec.rb +484 -0
- data/spec/resources/verification_detail_spec.rb +145 -0
- data/spec/services/creditors_service_spec.rb +105 -0
- data/spec/services/mandates_service_spec.rb +21 -0
- data/spec/services/scheme_identifiers_service_spec.rb +754 -0
- data/spec/services/verification_details_service_spec.rb +168 -0
- metadata +14 -2
@@ -0,0 +1,168 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GoCardlessPro::Services::VerificationDetailsService 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.verification_details.create(params: new_resource) }
|
14
|
+
context 'with a valid request' do
|
15
|
+
let(:new_resource) do
|
16
|
+
{
|
17
|
+
|
18
|
+
'address_line1' => 'address_line1-input',
|
19
|
+
'address_line2' => 'address_line2-input',
|
20
|
+
'address_line3' => 'address_line3-input',
|
21
|
+
'city' => 'city-input',
|
22
|
+
'company_number' => 'company_number-input',
|
23
|
+
'description' => 'description-input',
|
24
|
+
'directors' => 'directors-input',
|
25
|
+
'links' => 'links-input',
|
26
|
+
'postal_code' => 'postal_code-input',
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
before do
|
31
|
+
stub_request(:post, %r{.*api.gocardless.com/verification_details}).
|
32
|
+
with(
|
33
|
+
body: {
|
34
|
+
'verification_details' => {
|
35
|
+
|
36
|
+
'address_line1' => 'address_line1-input',
|
37
|
+
'address_line2' => 'address_line2-input',
|
38
|
+
'address_line3' => 'address_line3-input',
|
39
|
+
'city' => 'city-input',
|
40
|
+
'company_number' => 'company_number-input',
|
41
|
+
'description' => 'description-input',
|
42
|
+
'directors' => 'directors-input',
|
43
|
+
'links' => 'links-input',
|
44
|
+
'postal_code' => 'postal_code-input',
|
45
|
+
},
|
46
|
+
}
|
47
|
+
).
|
48
|
+
to_return(
|
49
|
+
body: {
|
50
|
+
'verification_details' =>
|
51
|
+
|
52
|
+
{
|
53
|
+
|
54
|
+
'address_line1' => 'address_line1-input',
|
55
|
+
'address_line2' => 'address_line2-input',
|
56
|
+
'address_line3' => 'address_line3-input',
|
57
|
+
'city' => 'city-input',
|
58
|
+
'company_number' => 'company_number-input',
|
59
|
+
'description' => 'description-input',
|
60
|
+
'directors' => 'directors-input',
|
61
|
+
'links' => 'links-input',
|
62
|
+
'postal_code' => 'postal_code-input',
|
63
|
+
},
|
64
|
+
|
65
|
+
}.to_json,
|
66
|
+
headers: response_headers
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'creates and returns the resource' do
|
71
|
+
expect(post_create_response).to be_a(GoCardlessPro::Resources::VerificationDetail)
|
72
|
+
end
|
73
|
+
|
74
|
+
describe 'retry behaviour' do
|
75
|
+
before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
|
76
|
+
|
77
|
+
it 'retries timeouts' do
|
78
|
+
stub = stub_request(:post, %r{.*api.gocardless.com/verification_details}).
|
79
|
+
to_timeout.then.to_return(status: 200, headers: response_headers)
|
80
|
+
|
81
|
+
post_create_response
|
82
|
+
expect(stub).to have_been_requested.twice
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'retries 5XX errors' do
|
86
|
+
stub = stub_request(:post, %r{.*api.gocardless.com/verification_details}).
|
87
|
+
to_return(status: 502,
|
88
|
+
headers: { 'Content-Type' => 'text/html' },
|
89
|
+
body: '<html><body>Response from Cloudflare</body></html>').
|
90
|
+
then.to_return(status: 200, headers: response_headers)
|
91
|
+
|
92
|
+
post_create_response
|
93
|
+
expect(stub).to have_been_requested.twice
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'with a request that returns a validation error' do
|
99
|
+
let(:new_resource) { {} }
|
100
|
+
|
101
|
+
before do
|
102
|
+
stub_request(:post, %r{.*api.gocardless.com/verification_details}).to_return(
|
103
|
+
body: {
|
104
|
+
error: {
|
105
|
+
type: 'validation_failed',
|
106
|
+
code: 422,
|
107
|
+
errors: [
|
108
|
+
{ message: 'test error message', field: 'test_field' },
|
109
|
+
],
|
110
|
+
},
|
111
|
+
}.to_json,
|
112
|
+
headers: response_headers,
|
113
|
+
status: 422
|
114
|
+
)
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'throws the correct error' do
|
118
|
+
expect { post_create_response }.to raise_error(GoCardlessPro::ValidationError)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
context 'with a request that returns an idempotent creation conflict error' do
|
123
|
+
let(:id) { 'ID123' }
|
124
|
+
|
125
|
+
let(:new_resource) do
|
126
|
+
{
|
127
|
+
|
128
|
+
'address_line1' => 'address_line1-input',
|
129
|
+
'address_line2' => 'address_line2-input',
|
130
|
+
'address_line3' => 'address_line3-input',
|
131
|
+
'city' => 'city-input',
|
132
|
+
'company_number' => 'company_number-input',
|
133
|
+
'description' => 'description-input',
|
134
|
+
'directors' => 'directors-input',
|
135
|
+
'links' => 'links-input',
|
136
|
+
'postal_code' => 'postal_code-input',
|
137
|
+
}
|
138
|
+
end
|
139
|
+
|
140
|
+
let!(:post_stub) do
|
141
|
+
stub_request(:post, %r{.*api.gocardless.com/verification_details}).to_return(
|
142
|
+
body: {
|
143
|
+
error: {
|
144
|
+
type: 'invalid_state',
|
145
|
+
code: 409,
|
146
|
+
errors: [
|
147
|
+
{
|
148
|
+
message: 'A resource has already been created with this idempotency key',
|
149
|
+
reason: 'idempotent_creation_conflict',
|
150
|
+
links: {
|
151
|
+
conflicting_resource_id: id,
|
152
|
+
},
|
153
|
+
},
|
154
|
+
],
|
155
|
+
},
|
156
|
+
}.to_json,
|
157
|
+
headers: response_headers,
|
158
|
+
status: 409
|
159
|
+
)
|
160
|
+
end
|
161
|
+
|
162
|
+
it 'raises an InvalidStateError' do
|
163
|
+
expect { post_create_response }.to raise_error(GoCardlessPro::InvalidStateError)
|
164
|
+
expect(post_stub).to have_been_requested
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gocardless_pro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.41.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GoCardless
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -188,8 +188,10 @@ files:
|
|
188
188
|
- lib/gocardless_pro/resources/redirect_flow.rb
|
189
189
|
- lib/gocardless_pro/resources/refund.rb
|
190
190
|
- lib/gocardless_pro/resources/scenario_simulator.rb
|
191
|
+
- lib/gocardless_pro/resources/scheme_identifier.rb
|
191
192
|
- lib/gocardless_pro/resources/subscription.rb
|
192
193
|
- lib/gocardless_pro/resources/tax_rate.rb
|
194
|
+
- lib/gocardless_pro/resources/verification_detail.rb
|
193
195
|
- lib/gocardless_pro/resources/webhook.rb
|
194
196
|
- lib/gocardless_pro/response.rb
|
195
197
|
- lib/gocardless_pro/services/bank_authorisations_service.rb
|
@@ -219,8 +221,10 @@ files:
|
|
219
221
|
- lib/gocardless_pro/services/redirect_flows_service.rb
|
220
222
|
- lib/gocardless_pro/services/refunds_service.rb
|
221
223
|
- lib/gocardless_pro/services/scenario_simulators_service.rb
|
224
|
+
- lib/gocardless_pro/services/scheme_identifiers_service.rb
|
222
225
|
- lib/gocardless_pro/services/subscriptions_service.rb
|
223
226
|
- lib/gocardless_pro/services/tax_rates_service.rb
|
227
|
+
- lib/gocardless_pro/services/verification_details_service.rb
|
224
228
|
- lib/gocardless_pro/services/webhooks_service.rb
|
225
229
|
- lib/gocardless_pro/version.rb
|
226
230
|
- lib/gocardless_pro/webhook.rb
|
@@ -255,8 +259,10 @@ files:
|
|
255
259
|
- spec/resources/redirect_flow_spec.rb
|
256
260
|
- spec/resources/refund_spec.rb
|
257
261
|
- spec/resources/scenario_simulator_spec.rb
|
262
|
+
- spec/resources/scheme_identifier_spec.rb
|
258
263
|
- spec/resources/subscription_spec.rb
|
259
264
|
- spec/resources/tax_rate_spec.rb
|
265
|
+
- spec/resources/verification_detail_spec.rb
|
260
266
|
- spec/resources/webhook_spec.rb
|
261
267
|
- spec/response_spec.rb
|
262
268
|
- spec/services/bank_authorisations_service_spec.rb
|
@@ -285,8 +291,10 @@ files:
|
|
285
291
|
- spec/services/redirect_flows_service_spec.rb
|
286
292
|
- spec/services/refunds_service_spec.rb
|
287
293
|
- spec/services/scenario_simulators_service_spec.rb
|
294
|
+
- spec/services/scheme_identifiers_service_spec.rb
|
288
295
|
- spec/services/subscriptions_service_spec.rb
|
289
296
|
- spec/services/tax_rates_service_spec.rb
|
297
|
+
- spec/services/verification_details_service_spec.rb
|
290
298
|
- spec/services/webhooks_service_spec.rb
|
291
299
|
- spec/spec_helper.rb
|
292
300
|
- spec/webhook_spec.rb
|
@@ -345,8 +353,10 @@ test_files:
|
|
345
353
|
- spec/resources/redirect_flow_spec.rb
|
346
354
|
- spec/resources/refund_spec.rb
|
347
355
|
- spec/resources/scenario_simulator_spec.rb
|
356
|
+
- spec/resources/scheme_identifier_spec.rb
|
348
357
|
- spec/resources/subscription_spec.rb
|
349
358
|
- spec/resources/tax_rate_spec.rb
|
359
|
+
- spec/resources/verification_detail_spec.rb
|
350
360
|
- spec/resources/webhook_spec.rb
|
351
361
|
- spec/response_spec.rb
|
352
362
|
- spec/services/bank_authorisations_service_spec.rb
|
@@ -375,8 +385,10 @@ test_files:
|
|
375
385
|
- spec/services/redirect_flows_service_spec.rb
|
376
386
|
- spec/services/refunds_service_spec.rb
|
377
387
|
- spec/services/scenario_simulators_service_spec.rb
|
388
|
+
- spec/services/scheme_identifiers_service_spec.rb
|
378
389
|
- spec/services/subscriptions_service_spec.rb
|
379
390
|
- spec/services/tax_rates_service_spec.rb
|
391
|
+
- spec/services/verification_details_service_spec.rb
|
380
392
|
- spec/services/webhooks_service_spec.rb
|
381
393
|
- spec/spec_helper.rb
|
382
394
|
- spec/webhook_spec.rb
|