onfido 1.1.0 → 2.1.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 +5 -5
- data/.github/workflows/gem-push.yml +31 -0
- data/.github/workflows/ruby.yml +25 -0
- data/.rubocop.yml +5 -49
- data/.travis.yml +2 -8
- data/CHANGELOG.md +26 -1
- data/Gemfile +2 -0
- data/README.md +37 -148
- data/lib/onfido.rb +3 -3
- data/lib/onfido/api.rb +18 -12
- data/lib/onfido/errors/connection_error.rb +2 -0
- data/lib/onfido/errors/onfido_error.rb +2 -0
- data/lib/onfido/errors/request_error.rb +2 -0
- data/lib/onfido/errors/server_error.rb +2 -0
- data/lib/onfido/options.rb +38 -0
- data/lib/onfido/resource.rb +48 -59
- data/lib/onfido/resources/address.rb +3 -4
- data/lib/onfido/resources/applicant.rb +2 -0
- data/lib/onfido/resources/check.rb +6 -0
- data/lib/onfido/resources/document.rb +2 -0
- data/lib/onfido/resources/extraction.rb +2 -0
- data/lib/onfido/resources/live_photo.rb +2 -0
- data/lib/onfido/resources/live_video.rb +2 -0
- data/lib/onfido/resources/report.rb +2 -0
- data/lib/onfido/resources/sdk_token.rb +2 -0
- data/lib/onfido/resources/webhook.rb +4 -2
- data/lib/onfido/version.rb +3 -1
- data/onfido.gemspec +5 -6
- data/spec/integrations/address_spec.rb +4 -2
- data/spec/integrations/applicant_spec.rb +12 -7
- data/spec/integrations/check_spec.rb +17 -4
- data/spec/integrations/document_spec.rb +7 -3
- data/spec/integrations/extraction_spec.rb +6 -2
- data/spec/integrations/live_photo_spec.rb +7 -3
- data/spec/integrations/live_video_spec.rb +6 -1
- data/spec/integrations/report_spec.rb +6 -1
- data/spec/integrations/resource_spec.rb +106 -0
- data/spec/integrations/sdk_token_spec.rb +5 -1
- data/spec/integrations/webhook_spec.rb +28 -24
- data/spec/onfido/api_spec.rb +14 -25
- data/spec/onfido/connection_error_spec.rb +4 -2
- data/spec/onfido/options_spec.rb +39 -0
- data/spec/onfido/request_error_spec.rb +4 -2
- data/spec/spec_helper.rb +3 -5
- data/spec/support/fake_onfido_api.rb +63 -49
- data/spec/support/fixtures/applicant.json +1 -1
- data/spec/support/fixtures/check.json +1 -1
- data/spec/support/fixtures/checks.json +1 -1
- data/spec/support/fixtures/document.json +1 -1
- data/spec/support/fixtures/documents.json +2 -2
- data/spec/support/fixtures/live_photo.json +2 -2
- data/spec/support/fixtures/live_photos.json +4 -4
- data/spec/support/fixtures/live_video.json +2 -2
- data/spec/support/fixtures/live_videos.json +2 -2
- data/spec/support/fixtures/report.json +1 -1
- data/spec/support/fixtures/reports.json +2 -2
- data/spec/support/fixtures/webhook.json +1 -1
- data/spec/support/fixtures/webhooks.json +2 -2
- metadata +16 -33
- data/Rakefile +0 -1
- data/lib/onfido/configuration.rb +0 -47
- data/lib/onfido/null_logger.rb +0 -5
- data/spec/integrations/exceptions_spec.rb +0 -73
- data/spec/onfido/resource_spec.rb +0 -133
- data/spec/onfido_spec.rb +0 -83
@@ -6,7 +6,7 @@
|
|
6
6
|
"created_at": "2019-11-23T13:50:45Z",
|
7
7
|
"status": "in_progress",
|
8
8
|
"result": "pending",
|
9
|
-
"href": "/v3/reports/6951786-123123-422221",
|
9
|
+
"href": "/v3.2/reports/6951786-123123-422221",
|
10
10
|
"breakdown": {},
|
11
11
|
"properties": {}
|
12
12
|
},
|
@@ -16,7 +16,7 @@
|
|
16
16
|
"created_at": "2019-11-23T13:50:45Z",
|
17
17
|
"status": "in_progress",
|
18
18
|
"result": "pending",
|
19
|
-
"href": "/v3/reports/6951786-123123-316712",
|
19
|
+
"href": "/v3.2/reports/6951786-123123-316712",
|
20
20
|
"breakdown": {},
|
21
21
|
"properties": {}
|
22
22
|
}
|
@@ -4,7 +4,7 @@
|
|
4
4
|
"id": "dd0a89e4-d44e-417a-aec4-01137d01ae59",
|
5
5
|
"url": "https://demo.com",
|
6
6
|
"enabled":false,
|
7
|
-
"href": "/v3/webhooks/dd0a89e4-d44e-417a-aec4-01137d01ae59",
|
7
|
+
"href": "/v3.2/webhooks/dd0a89e4-d44e-417a-aec4-01137d01ae59",
|
8
8
|
"environments": [
|
9
9
|
"live"
|
10
10
|
],
|
@@ -18,7 +18,7 @@
|
|
18
18
|
"id": "bfc727a8-f7bf-4073-b123-ed70a70f58e5",
|
19
19
|
"url": "https://demo2.com",
|
20
20
|
"enabled": true,
|
21
|
-
"href": "/v3/webhooks/bfc727a8-f7bf-4073-b123-ed70a70f58e5",
|
21
|
+
"href": "/v3.2/webhooks/bfc727a8-f7bf-4073-b123-ed70a70f58e5",
|
22
22
|
"environments": [
|
23
23
|
"live"
|
24
24
|
],
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onfido
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Onfido
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rake
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '12.0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '12.0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rspec
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +44,14 @@ dependencies:
|
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
47
|
+
version: '1.11'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
54
|
+
version: '1.11'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: sinatra
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,6 +117,8 @@ executables: []
|
|
131
117
|
extensions: []
|
132
118
|
extra_rdoc_files: []
|
133
119
|
files:
|
120
|
+
- ".github/workflows/gem-push.yml"
|
121
|
+
- ".github/workflows/ruby.yml"
|
134
122
|
- ".gitignore"
|
135
123
|
- ".rspec"
|
136
124
|
- ".rubocop.yml"
|
@@ -139,15 +127,13 @@ files:
|
|
139
127
|
- Gemfile
|
140
128
|
- LICENSE
|
141
129
|
- README.md
|
142
|
-
- Rakefile
|
143
130
|
- lib/onfido.rb
|
144
131
|
- lib/onfido/api.rb
|
145
|
-
- lib/onfido/configuration.rb
|
146
132
|
- lib/onfido/errors/connection_error.rb
|
147
133
|
- lib/onfido/errors/onfido_error.rb
|
148
134
|
- lib/onfido/errors/request_error.rb
|
149
135
|
- lib/onfido/errors/server_error.rb
|
150
|
-
- lib/onfido/
|
136
|
+
- lib/onfido/options.rb
|
151
137
|
- lib/onfido/resource.rb
|
152
138
|
- lib/onfido/resources/address.rb
|
153
139
|
- lib/onfido/resources/applicant.rb
|
@@ -165,18 +151,17 @@ files:
|
|
165
151
|
- spec/integrations/applicant_spec.rb
|
166
152
|
- spec/integrations/check_spec.rb
|
167
153
|
- spec/integrations/document_spec.rb
|
168
|
-
- spec/integrations/exceptions_spec.rb
|
169
154
|
- spec/integrations/extraction_spec.rb
|
170
155
|
- spec/integrations/live_photo_spec.rb
|
171
156
|
- spec/integrations/live_video_spec.rb
|
172
157
|
- spec/integrations/report_spec.rb
|
158
|
+
- spec/integrations/resource_spec.rb
|
173
159
|
- spec/integrations/sdk_token_spec.rb
|
174
160
|
- spec/integrations/webhook_spec.rb
|
175
161
|
- spec/onfido/api_spec.rb
|
176
162
|
- spec/onfido/connection_error_spec.rb
|
163
|
+
- spec/onfido/options_spec.rb
|
177
164
|
- spec/onfido/request_error_spec.rb
|
178
|
-
- spec/onfido/resource_spec.rb
|
179
|
-
- spec/onfido_spec.rb
|
180
165
|
- spec/spec_helper.rb
|
181
166
|
- spec/support/fake_onfido_api.rb
|
182
167
|
- spec/support/fixtures/4xx_response.json
|
@@ -203,7 +188,7 @@ homepage: http://github.com/onfido/onfido-ruby
|
|
203
188
|
licenses:
|
204
189
|
- MIT
|
205
190
|
metadata: {}
|
206
|
-
post_install_message:
|
191
|
+
post_install_message:
|
207
192
|
rdoc_options: []
|
208
193
|
require_paths:
|
209
194
|
- lib
|
@@ -211,16 +196,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
211
196
|
requirements:
|
212
197
|
- - ">="
|
213
198
|
- !ruby/object:Gem::Version
|
214
|
-
version: 2.
|
199
|
+
version: 2.4.0
|
215
200
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
201
|
requirements:
|
217
202
|
- - ">="
|
218
203
|
- !ruby/object:Gem::Version
|
219
204
|
version: '0'
|
220
205
|
requirements: []
|
221
|
-
|
222
|
-
|
223
|
-
signing_key:
|
206
|
+
rubygems_version: 3.0.3.1
|
207
|
+
signing_key:
|
224
208
|
specification_version: 4
|
225
209
|
summary: A wrapper for Onfido API
|
226
210
|
test_files:
|
@@ -228,18 +212,17 @@ test_files:
|
|
228
212
|
- spec/integrations/applicant_spec.rb
|
229
213
|
- spec/integrations/check_spec.rb
|
230
214
|
- spec/integrations/document_spec.rb
|
231
|
-
- spec/integrations/exceptions_spec.rb
|
232
215
|
- spec/integrations/extraction_spec.rb
|
233
216
|
- spec/integrations/live_photo_spec.rb
|
234
217
|
- spec/integrations/live_video_spec.rb
|
235
218
|
- spec/integrations/report_spec.rb
|
219
|
+
- spec/integrations/resource_spec.rb
|
236
220
|
- spec/integrations/sdk_token_spec.rb
|
237
221
|
- spec/integrations/webhook_spec.rb
|
238
222
|
- spec/onfido/api_spec.rb
|
239
223
|
- spec/onfido/connection_error_spec.rb
|
224
|
+
- spec/onfido/options_spec.rb
|
240
225
|
- spec/onfido/request_error_spec.rb
|
241
|
-
- spec/onfido/resource_spec.rb
|
242
|
-
- spec/onfido_spec.rb
|
243
226
|
- spec/spec_helper.rb
|
244
227
|
- spec/support/fake_onfido_api.rb
|
245
228
|
- spec/support/fixtures/4xx_response.json
|
data/Rakefile
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'bundler/gem_tasks'
|
data/lib/onfido/configuration.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
module Onfido
|
2
|
-
module Configuration
|
3
|
-
REGION_HOSTS = {
|
4
|
-
us: "api.us.onfido.com",
|
5
|
-
ca: "api.ca.onfido.com"
|
6
|
-
}.freeze
|
7
|
-
|
8
|
-
attr_accessor :api_key, :region, :open_timeout, :read_timeout
|
9
|
-
|
10
|
-
def self.extended(base)
|
11
|
-
base.reset
|
12
|
-
end
|
13
|
-
|
14
|
-
def configure
|
15
|
-
yield self
|
16
|
-
end
|
17
|
-
|
18
|
-
def reset
|
19
|
-
self.api_key = nil
|
20
|
-
self.region = nil
|
21
|
-
self.open_timeout = 30
|
22
|
-
self.read_timeout = 80
|
23
|
-
RestClient.log = nil
|
24
|
-
end
|
25
|
-
|
26
|
-
def logger=(log)
|
27
|
-
unless log.respond_to?(:<<)
|
28
|
-
raise "#{log.class} doesn't seem to behave like a logger!"
|
29
|
-
end
|
30
|
-
|
31
|
-
RestClient.log = log
|
32
|
-
end
|
33
|
-
|
34
|
-
def logger
|
35
|
-
RestClient.log ||= NullLogger.new
|
36
|
-
end
|
37
|
-
|
38
|
-
def endpoint
|
39
|
-
region_host = region ? REGION_HOSTS[region.downcase.to_sym] : "api.onfido.com"
|
40
|
-
unless region_host
|
41
|
-
raise "The region \"#{region.downcase}\" is not currently supported"
|
42
|
-
end
|
43
|
-
|
44
|
-
"https://#{region_host}/v3/"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
data/lib/onfido/null_logger.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
describe Onfido::Resource do
|
2
|
-
let(:resource) { described_class.new }
|
3
|
-
let(:api_key) { 'some_key' }
|
4
|
-
let(:payload) { { postcode: 'SE1 4NG' } }
|
5
|
-
|
6
|
-
before { allow(Onfido).to receive(:api_key).and_return(api_key) }
|
7
|
-
|
8
|
-
context '4xx response' do
|
9
|
-
it 'raises a custom error' do
|
10
|
-
path = '4xx_response'
|
11
|
-
|
12
|
-
expect { resource.get(path: path, payload: payload) }.
|
13
|
-
to raise_error(Onfido::RequestError, 'Something went wrong')
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'unexpected error format' do
|
18
|
-
it 'raises a custom error' do
|
19
|
-
path = 'unexpected_error_format'
|
20
|
-
|
21
|
-
expect { resource.get(path: path, payload: payload) }.
|
22
|
-
to raise_error(Onfido::RequestError, /response code was 400/)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'unparseable JSON 5xx' do
|
27
|
-
it 'raises a server error' do
|
28
|
-
path = 'unparseable_response'
|
29
|
-
|
30
|
-
expect { resource.get(path: path, payload: payload) }.
|
31
|
-
to raise_error(Onfido::ServerError, /response code was 504/)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context 'timeout' do
|
36
|
-
before do
|
37
|
-
allow(RestClient::Request).
|
38
|
-
to receive(:execute).
|
39
|
-
and_raise(RestClient::RequestTimeout)
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'raises a ConnectionError' do
|
43
|
-
expect { resource.get(path: Onfido.endpoint, payload: payload) }.
|
44
|
-
to raise_error(Onfido::ConnectionError, /Could not connect/)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context 'broken connection' do
|
49
|
-
before do
|
50
|
-
allow(RestClient::Request).
|
51
|
-
to receive(:execute).
|
52
|
-
and_raise(RestClient::ServerBrokeConnection)
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'raises a ConnectionError' do
|
56
|
-
expect { resource.get(path: Onfido.endpoint, payload: payload) }.
|
57
|
-
to raise_error(Onfido::ConnectionError, /connection to the server/)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "bad SSL certificate" do
|
62
|
-
before do
|
63
|
-
allow(RestClient::Request).
|
64
|
-
to receive(:execute).
|
65
|
-
and_raise(RestClient::SSLCertificateNotVerified.new(nil))
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'raises a ConnectionError' do
|
69
|
-
expect { resource.get(path: Onfido.endpoint, payload: payload) }.
|
70
|
-
to raise_error(Onfido::ConnectionError, /SSL certificate/)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
@@ -1,133 +0,0 @@
|
|
1
|
-
require 'onfido/errors/connection_error'
|
2
|
-
|
3
|
-
describe Onfido::Resource do
|
4
|
-
subject(:resource) { described_class.new }
|
5
|
-
|
6
|
-
let(:endpoint) { 'https://api.onfido.com/v3/' }
|
7
|
-
let(:path) { 'addresses/pick' }
|
8
|
-
let(:url) { endpoint + path }
|
9
|
-
let(:payload) { { postcode: 'SE1 4NG' } }
|
10
|
-
let(:api_key) { 'some_key' }
|
11
|
-
|
12
|
-
let(:response) do
|
13
|
-
{
|
14
|
-
'addresses' => [
|
15
|
-
{
|
16
|
-
'street' => 'Main Street',
|
17
|
-
'town' => 'London',
|
18
|
-
'postcode' => 'SW4 6EH',
|
19
|
-
'country' => 'GBR'
|
20
|
-
}
|
21
|
-
]
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
|
-
before { allow(Onfido).to receive(:endpoint).and_return(endpoint) }
|
26
|
-
before { allow(Onfido).to receive(:api_key).and_return(api_key) }
|
27
|
-
|
28
|
-
describe '#method_missing' do
|
29
|
-
%i(patch).each do |method|
|
30
|
-
context "for unsupported HTTP method: #{method}" do
|
31
|
-
it 'raises an error' do
|
32
|
-
expect do
|
33
|
-
resource.public_send(method, path: endpoint)
|
34
|
-
end.to raise_error(NoMethodError)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe "API key" do
|
41
|
-
subject(:resource) { described_class.new(specific_api_key) }
|
42
|
-
|
43
|
-
before do
|
44
|
-
expect(RestClient::Request).to receive(:execute).with(
|
45
|
-
url: url,
|
46
|
-
payload: Rack::Utils.build_query(payload),
|
47
|
-
method: :get,
|
48
|
-
headers: resource.send(:headers),
|
49
|
-
open_timeout: 30,
|
50
|
-
timeout: 80
|
51
|
-
).and_call_original
|
52
|
-
|
53
|
-
WebMock.stub_request(:get, url).
|
54
|
-
to_return(body: response.to_json, status: 200)
|
55
|
-
end
|
56
|
-
|
57
|
-
context "when using a specific key" do
|
58
|
-
let(:specific_api_key) { "specific_key" }
|
59
|
-
|
60
|
-
it "uses that key when making the request" do
|
61
|
-
resource.get(path: path, payload: payload)
|
62
|
-
|
63
|
-
expect(WebMock).to have_requested(:get, url).with(
|
64
|
-
headers: {
|
65
|
-
'Authorization' => "Token token=#{specific_api_key}",
|
66
|
-
'Accept' => "application/json",
|
67
|
-
'User-Agent' => "onfido-ruby/#{Onfido::VERSION}"
|
68
|
-
}
|
69
|
-
)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "when not using a specific key" do
|
74
|
-
let(:specific_api_key) { nil }
|
75
|
-
|
76
|
-
it "uses the general config key when making the request" do
|
77
|
-
resource.get(path: path, payload: payload)
|
78
|
-
|
79
|
-
expect(WebMock).to have_requested(:get, url).with(
|
80
|
-
headers: {
|
81
|
-
'Authorization' => "Token token=#{api_key}",
|
82
|
-
'Accept' => "application/json",
|
83
|
-
'User-Agent' => "onfido-ruby/#{Onfido::VERSION}"
|
84
|
-
}
|
85
|
-
)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
describe "valid http methods" do
|
91
|
-
%i(get post put delete).each do |method|
|
92
|
-
context "for supported HTTP method: #{method}" do
|
93
|
-
context "with a success response" do
|
94
|
-
before do
|
95
|
-
expect(RestClient::Request).to receive(:execute).
|
96
|
-
with(
|
97
|
-
url: url,
|
98
|
-
payload: Rack::Utils.build_query(payload),
|
99
|
-
method: method,
|
100
|
-
headers: resource.send(:headers),
|
101
|
-
open_timeout: 30,
|
102
|
-
timeout: 80
|
103
|
-
).and_call_original
|
104
|
-
|
105
|
-
WebMock.stub_request(method, url).
|
106
|
-
to_return(body: response.to_json,
|
107
|
-
status: 200,
|
108
|
-
headers: { "Content-Type" => "application/json" })
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'makes a request to an endpoint' do
|
112
|
-
expect(resource.public_send(method, path: path, payload: payload)).
|
113
|
-
to eq(response)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
context "with a timeout error response" do
|
118
|
-
before do
|
119
|
-
allow_any_instance_of(RestClient::ExceptionWithResponse).
|
120
|
-
to receive(:response).and_return(double(body: "", code: "408"))
|
121
|
-
expect(RestClient::Request).to receive(:execute).
|
122
|
-
and_raise(RestClient::ExceptionWithResponse)
|
123
|
-
end
|
124
|
-
|
125
|
-
it "raises a ConnectionError" do
|
126
|
-
expect { resource.public_send(method, path: path, payload: payload) }.
|
127
|
-
to raise_error(Onfido::ConnectionError)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|