finapps 5.0.41 → 5.0.47
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/main.yaml +4 -6
- data/.github/workflows/release.yml +13 -2
- data/README.md +6 -4
- data/finapps.gemspec +4 -4
- data/lib/finapps.rb +1 -0
- data/lib/finapps/rest/client.rb +1 -0
- data/lib/finapps/rest/documents_orders.rb +20 -1
- data/lib/finapps/rest/documents_orders_notifications.rb +2 -2
- data/lib/finapps/rest/documents_uploads.rb +8 -0
- data/lib/finapps/rest/screenings.rb +58 -0
- data/lib/finapps/version.rb +1 -1
- data/spec/rest/api_request.rb +8 -0
- data/spec/rest/documents_orders_notifications_spec.rb +2 -2
- data/spec/rest/documents_orders_spec.rb +20 -14
- data/spec/rest/documents_uploads_spec.rb +53 -0
- data/spec/rest/screenings_spec.rb +198 -0
- data/spec/rest/signed_documents_downloads_spec.rb +4 -7
- data/spec/rest/verix/verix_documents_spec.rb +4 -4
- data/spec/spec_helper.rb +1 -1
- data/spec/support/documents_uploads_routes.rb +39 -0
- data/spec/support/fake_api.rb +484 -456
- data/spec/support/fixtures/documents/retrieve_order.json +97 -0
- data/spec/support/fixtures/screening.json +26 -0
- data/spec/support/fixtures/screening_invalid_update.json +5 -0
- data/spec/support/fixtures/screening_list.json +25 -0
- metadata +62 -53
@@ -10,6 +10,10 @@ RSpec.describe FinApps::REST::SignedDocumentsDownloads do
|
|
10
10
|
let(:document) { described_class.new(api_client) }
|
11
11
|
|
12
12
|
describe '#show' do
|
13
|
+
subject(:show) do
|
14
|
+
document.show(:consumer_id, :signature_request_id)
|
15
|
+
end
|
16
|
+
|
13
17
|
context 'when missing signature request id' do
|
14
18
|
subject(:show) { document.show(:consumer_id, nil) }
|
15
19
|
|
@@ -26,13 +30,6 @@ RSpec.describe FinApps::REST::SignedDocumentsDownloads do
|
|
26
30
|
end
|
27
31
|
end
|
28
32
|
|
29
|
-
subject(:show) do
|
30
|
-
document.show(
|
31
|
-
:consumer_id,
|
32
|
-
:signature_request_id
|
33
|
-
)
|
34
|
-
end
|
35
|
-
|
36
33
|
it_behaves_like 'an API request'
|
37
34
|
it_behaves_like 'a successful request'
|
38
35
|
end
|
@@ -10,6 +10,8 @@ RSpec.describe FinApps::REST::VerixDocuments do
|
|
10
10
|
let(:document) { described_class.new(api_client) }
|
11
11
|
|
12
12
|
describe '#list' do
|
13
|
+
subject { document.list(:record_id) }
|
14
|
+
|
13
15
|
context 'when missing parameters' do
|
14
16
|
subject(:list) { document.list(nil) }
|
15
17
|
|
@@ -18,13 +20,13 @@ RSpec.describe FinApps::REST::VerixDocuments do
|
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
21
|
-
subject { document.list(:record_id) }
|
22
|
-
|
23
23
|
it_behaves_like 'an API request'
|
24
24
|
it_behaves_like 'a successful request'
|
25
25
|
end
|
26
26
|
|
27
27
|
describe '#show' do
|
28
|
+
subject { document.show(:record_id, :document_id) }
|
29
|
+
|
28
30
|
context 'when missing record_id' do
|
29
31
|
subject(:show) { document.show(nil, :document_id) }
|
30
32
|
|
@@ -37,8 +39,6 @@ RSpec.describe FinApps::REST::VerixDocuments do
|
|
37
39
|
it { expect { show }.to raise_error(FinAppsCore::MissingArgumentsError) }
|
38
40
|
end
|
39
41
|
|
40
|
-
subject { document.show(:record_id, :document_id) }
|
41
|
-
|
42
42
|
it_behaves_like 'an API request'
|
43
43
|
it_behaves_like 'a successful request'
|
44
44
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -32,7 +32,7 @@ RSpec.configure do |config|
|
|
32
32
|
config.before do
|
33
33
|
base_url =
|
34
34
|
"#{FinAppsCore::REST::Defaults::DEFAULTS[:host]}/v#{FinAppsCore::REST::Defaults::API_VERSION}/"
|
35
|
-
stub_request(:any, /#{base_url}/).to_rack(::FakeApi)
|
35
|
+
stub_request(:any, /#{base_url}/).to_rack(::Fake::FakeApi)
|
36
36
|
end
|
37
37
|
WebMock.disable_net_connect!(allow: 'codeclimate.com')
|
38
38
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Fake
|
4
|
+
module DocumentsUploadsRoutes
|
5
|
+
class << self
|
6
|
+
def included(base)
|
7
|
+
base.get("/#{base.version}/consumers/:consumer_id/documents/:doc_id?thumbnail=false") do
|
8
|
+
pdf_response 'signed_document.pdf'
|
9
|
+
end
|
10
|
+
destroy_routes(base)
|
11
|
+
destroy_by_consumer_routes(base)
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
def destroy_routes(base)
|
16
|
+
base.delete("/#{base.version}/documents/orders/valid_order_id/valid_doc_id") { status 204 }
|
17
|
+
base.delete("/#{base.version}/documents/orders/valid_order_id/invalid_doc_id") do
|
18
|
+
json_response 404, 'resource_not_found.json'
|
19
|
+
end
|
20
|
+
base.delete("/#{base.version}/documents/orders/invalid_order_id/valid_doc_id") do
|
21
|
+
json_response 404, 'resource_not_found.json'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy_by_consumer_routes(base)
|
26
|
+
base.delete("/#{base.version}/consumers/valid_consumer_id/documents/valid_document_id") { status 204 }
|
27
|
+
base.delete("/#{base.version}/consumers/invalid_consumer_id/documents/invalid_document_id") do
|
28
|
+
json_response 404, 'resource_not_found.json'
|
29
|
+
end
|
30
|
+
base.delete("/#{base.version}/consumers/invalid_consumer_id/documents/valid_document_id") do
|
31
|
+
json_response 404, 'resource_not_found.json'
|
32
|
+
end
|
33
|
+
base.delete("/#{base.version}/consumers/valid_consumer_id/documents/invalid_document_id") do
|
34
|
+
json_response 404, 'resource_not_found.json'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/spec/support/fake_api.rb
CHANGED
@@ -1,522 +1,550 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'sinatra/base'
|
4
|
+
require_relative 'documents_uploads_routes'
|
5
|
+
|
6
|
+
module Fake
|
7
|
+
# rubocop:disable Metrics/ClassLength
|
8
|
+
# the FakeApi class is used to mock API requests while testing.
|
9
|
+
class FakeApi < Sinatra::Base
|
10
|
+
def self.version
|
11
|
+
"v#{FinAppsCore::REST::Defaults::API_VERSION}"
|
12
|
+
end
|
4
13
|
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
"
|
9
|
-
|
10
|
-
|
11
|
-
# resource
|
12
|
-
post("/#{version}/resources") { json_response 201, 'resource.json' }
|
13
|
-
get("/#{version}/resources/:id") { json_response 200, 'resource.json' }
|
14
|
-
get("/#{version}/resources") { json_response 200, 'resources.json' }
|
15
|
-
put("/#{version}/resources") { json_response 201, 'resource.json' }
|
16
|
-
delete("/#{version}/resources/:id") { status 202 }
|
14
|
+
# resource
|
15
|
+
post("/#{version}/resources") { json_response 201, 'resource.json' }
|
16
|
+
get("/#{version}/resources/:id") { json_response 200, 'resource.json' }
|
17
|
+
get("/#{version}/resources") { json_response 200, 'resources.json' }
|
18
|
+
put("/#{version}/resources") { json_response 201, 'resource.json' }
|
19
|
+
delete("/#{version}/resources/:id") { status 202 }
|
17
20
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
21
|
+
# verix_metadata
|
22
|
+
get("/#{version}/v/metadata") do
|
23
|
+
json_response 200, 'verix/metadata.json'
|
24
|
+
end
|
22
25
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
# verix_records
|
27
|
+
get("/#{version}/v/record") do
|
28
|
+
json_response 200, 'verix/record/list.json'
|
29
|
+
end
|
30
|
+
post("/#{version}/v/record") do
|
31
|
+
json_response 200, 'verix/record/create.json'
|
32
|
+
end
|
30
33
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
# verix_pdf_documents
|
35
|
+
get("/#{version}/v/record/:record_id/file/:provider_id") do
|
36
|
+
pdf_response 'verix/document/document.pdf'
|
37
|
+
end
|
35
38
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
# verix_documents
|
40
|
+
get("/#{version}/v/record/:record_id/document") do
|
41
|
+
json_response 200, 'verix/document/show.json'
|
42
|
+
end
|
43
|
+
get("/#{version}/v/record/:record_id/document/:document_id") do
|
44
|
+
json_response 200, 'verix/document/list.json'
|
45
|
+
end
|
43
46
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
# plaid_webhook/metadata
|
48
|
+
get("/#{version}/p/metadata") do
|
49
|
+
tenant_token = request.env['HTTP_X_TENANT_TOKEN']
|
50
|
+
if tenant_token == 'invalid_tenant_token'
|
51
|
+
json_response 404, 'invalid_tenant_credentials.json'
|
52
|
+
else
|
53
|
+
json_response 200, 'plaid/webhook.json'
|
54
|
+
end
|
51
55
|
end
|
52
|
-
end
|
53
56
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
58
|
-
get("/#{version}/p/institution/consumer/:consumer_institution_id/account") do
|
59
|
-
json_response 200, 'plaid/institution/consumer/show_accounts.json'
|
60
|
-
end
|
61
|
-
get("/#{version}/p/institution/consumer") do
|
62
|
-
tenant_token = request.env['HTTP_X_TENANT_TOKEN']
|
63
|
-
if tenant_token == 'invalid_tenant_token'
|
64
|
-
json_response 404, 'resource_not_found.json'
|
65
|
-
else
|
66
|
-
json_response 200, 'plaid/institution/consumer/list.json'
|
57
|
+
# plaid_institution_consumer
|
58
|
+
get("/#{version}/p/institution/consumer/:consumer_institution_id") do
|
59
|
+
json_response 200, 'plaid/institution/consumer/show.json'
|
67
60
|
end
|
68
|
-
|
69
|
-
|
70
|
-
tenant_token = request.env['HTTP_X_TENANT_TOKEN']
|
71
|
-
if tenant_token == 'invalid_tenant_token'
|
72
|
-
json_response 404, 'resource_not_found.json'
|
73
|
-
else
|
74
|
-
json_response 200, 'plaid/institution/consumer/add.json'
|
61
|
+
get("/#{version}/p/institution/consumer/:consumer_institution_id/account") do
|
62
|
+
json_response 200, 'plaid/institution/consumer/show_accounts.json'
|
75
63
|
end
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
end
|
94
|
-
put("/#{version}/p/accounts/permissions") do
|
95
|
-
request.body.rewind
|
96
|
-
request_payload = JSON.parse request.body.read
|
97
|
-
if request_payload.is_a? Array
|
64
|
+
get("/#{version}/p/institution/consumer") do
|
65
|
+
tenant_token = request.env['HTTP_X_TENANT_TOKEN']
|
66
|
+
if tenant_token == 'invalid_tenant_token'
|
67
|
+
json_response 404, 'resource_not_found.json'
|
68
|
+
else
|
69
|
+
json_response 200, 'plaid/institution/consumer/list.json'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
post("/#{version}/p/institution/consumer") do
|
73
|
+
tenant_token = request.env['HTTP_X_TENANT_TOKEN']
|
74
|
+
if tenant_token == 'invalid_tenant_token'
|
75
|
+
json_response 404, 'resource_not_found.json'
|
76
|
+
else
|
77
|
+
json_response 200, 'plaid/institution/consumer/add.json'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
delete("/#{version}/p/institution/consumer/:consumer_institution_id") do
|
98
81
|
status 204
|
99
|
-
else
|
100
|
-
json_response 400, 'invalid_request_body.json'
|
101
82
|
end
|
102
|
-
|
103
|
-
delete("/#{version}/p/accounts/permissions") do
|
104
|
-
request.body.rewind
|
105
|
-
request_payload = JSON.parse request.body.read
|
106
|
-
if request_payload.is_a? Array
|
83
|
+
put("/#{version}/p/institution/consumer/:consumer_institution_id") do
|
107
84
|
status 204
|
108
|
-
else
|
109
|
-
json_response 400, 'invalid_request_body.json'
|
110
85
|
end
|
111
|
-
|
86
|
+
get("/#{version}/p/institution/consumer/:consumer_institution_id/token") do
|
87
|
+
json_response 200, 'plaid/institution/consumer/public_token.json'
|
88
|
+
end
|
112
89
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
90
|
+
# plaid_accounts
|
91
|
+
get("/#{version}/p/account") do
|
92
|
+
json_response 200, 'plaid/account/list.json'
|
93
|
+
end
|
94
|
+
get("/#{version}/p/account/:account_id") do
|
95
|
+
json_response 200, 'plaid/account/show.json'
|
96
|
+
end
|
97
|
+
put("/#{version}/p/accounts/permissions") do
|
98
|
+
request.body.rewind
|
99
|
+
request_payload = JSON.parse request.body.read
|
100
|
+
if request_payload.is_a? Array
|
101
|
+
status 204
|
102
|
+
else
|
103
|
+
json_response 400, 'invalid_request_body.json'
|
104
|
+
end
|
105
|
+
end
|
106
|
+
delete("/#{version}/p/accounts/permissions") do
|
107
|
+
request.body.rewind
|
108
|
+
request_payload = JSON.parse request.body.read
|
109
|
+
if request_payload.is_a? Array
|
110
|
+
status 204
|
111
|
+
else
|
112
|
+
json_response 400, 'invalid_request_body.json'
|
113
|
+
end
|
114
|
+
end
|
117
115
|
|
118
|
-
|
119
|
-
|
116
|
+
# plaid_institution_logos
|
117
|
+
get("/#{version}/p/institution/logo/:inst_id") do
|
118
|
+
png_response 'plaid/institution/logo.png'
|
119
|
+
end
|
120
120
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
121
|
+
# version
|
122
|
+
get("/#{version}/version") { 'Version => 2.1.29-.20161208.172810' }
|
123
|
+
|
124
|
+
# tenants
|
125
|
+
get("/#{version}/settings/tenant") do
|
126
|
+
json_response 200, 'tenant_settings.json'
|
127
|
+
end
|
128
|
+
put("/#{version}/settings/tenant") do
|
129
|
+
request.body.rewind
|
130
|
+
request_payload = JSON.parse request.body.read
|
131
|
+
if request_payload['bad_params']
|
132
|
+
json_response 404, 'resource_not_found.json'
|
133
|
+
else
|
134
|
+
status 204
|
135
|
+
end
|
136
|
+
end
|
137
|
+
get("/#{version}/settings/app") do
|
138
|
+
json_response 200, 'tenant_app_settings.json'
|
139
|
+
end
|
140
|
+
put("/#{version}/settings/app") do
|
141
|
+
request.body.rewind
|
142
|
+
request_payload = JSON.parse request.body.read
|
143
|
+
if request_payload['pdf_statement_months']
|
144
|
+
status 204
|
145
|
+
else
|
146
|
+
json_response 404, 'resource_not_found.json'
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# orders
|
151
|
+
post("/#{version}/orders/valid_token") do
|
152
|
+
json_response 200, 'order_token.json'
|
153
|
+
end
|
154
|
+
post("/#{version}/orders/invalid_token") do
|
129
155
|
json_response 404, 'resource_not_found.json'
|
130
|
-
else
|
131
|
-
status 204
|
132
156
|
end
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
request_payload = JSON.parse request.body.read
|
140
|
-
if request_payload['pdf_statement_months']
|
141
|
-
status 204
|
142
|
-
else
|
157
|
+
get("/#{version}/orders/valid_id") { json_response 200, 'order.json' }
|
158
|
+
get("/#{version}/orders") { json_response 200, 'orders.json' }
|
159
|
+
get("/#{version}/orders/valid_id/report.:format") do
|
160
|
+
json_response 200, 'order_report.json'
|
161
|
+
end
|
162
|
+
get("/#{version}/orders/invalid_id/report.:format") do
|
143
163
|
json_response 404, 'resource_not_found.json'
|
144
164
|
end
|
145
|
-
|
146
|
-
|
147
|
-
# orders
|
148
|
-
post("/#{version}/orders/valid_token") do
|
149
|
-
json_response 200, 'order_token.json'
|
150
|
-
end
|
151
|
-
post("/#{version}/orders/invalid_token") do
|
152
|
-
json_response 404, 'resource_not_found.json'
|
153
|
-
end
|
154
|
-
get("/#{version}/orders/valid_id") { json_response 200, 'order.json' }
|
155
|
-
get("/#{version}/orders") { json_response 200, 'orders.json' }
|
156
|
-
get("/#{version}/orders/valid_id/report.:format") do
|
157
|
-
json_response 200, 'order_report.json'
|
158
|
-
end
|
159
|
-
get("/#{version}/orders/invalid_id/report.:format") do
|
160
|
-
json_response 404, 'resource_not_found.json'
|
161
|
-
end
|
162
|
-
get("/#{version}/orders/valid_id/status") do
|
163
|
-
json_response 200, 'order_status.json'
|
164
|
-
end
|
165
|
-
get("/#{version}/orders/invalid_id/status") do
|
166
|
-
json_response 404, 'resource_not_found.json'
|
167
|
-
end
|
168
|
-
put("/#{version}/orders/valid_id/cancel") { status 204 }
|
169
|
-
put("/#{version}/orders/invalid_id/cancel") do
|
170
|
-
json_response 404, 'resource_not_found.json'
|
171
|
-
end
|
172
|
-
put("/#{version}/orders/valid_id/notify") { status 204 }
|
173
|
-
put("/#{version}/orders/invalid_id/notify") do
|
174
|
-
json_response 404, 'resource_not_found.json'
|
175
|
-
end
|
176
|
-
put("/#{version}/orders/valid_id/refresh") do
|
177
|
-
json_response 200, 'order_refresh.json'
|
178
|
-
end
|
179
|
-
put("/#{version}/orders/invalid_id/refresh") do
|
180
|
-
json_response 404, 'resource_not_found.json'
|
181
|
-
end
|
182
|
-
put("/#{version}/orders/invalid_id") do
|
183
|
-
json_response 404, 'resource_not_found.json'
|
184
|
-
end
|
185
|
-
put("/#{version}/orders/valid_id") { status 204 }
|
186
|
-
put("/#{version}/orders") do
|
187
|
-
request.body.rewind
|
188
|
-
request_payload = JSON.parse request.body.read
|
189
|
-
if request_payload['params'] == 'invalid'
|
190
|
-
json_response 400, 'invalid_request_body.json'
|
191
|
-
else
|
192
|
-
status 204
|
165
|
+
get("/#{version}/orders/valid_id/status") do
|
166
|
+
json_response 200, 'order_status.json'
|
193
167
|
end
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
json_response
|
200
|
-
|
201
|
-
|
168
|
+
get("/#{version}/orders/invalid_id/status") do
|
169
|
+
json_response 404, 'resource_not_found.json'
|
170
|
+
end
|
171
|
+
put("/#{version}/orders/valid_id/cancel") { status 204 }
|
172
|
+
put("/#{version}/orders/invalid_id/cancel") do
|
173
|
+
json_response 404, 'resource_not_found.json'
|
174
|
+
end
|
175
|
+
put("/#{version}/orders/valid_id/notify") { status 204 }
|
176
|
+
put("/#{version}/orders/invalid_id/notify") do
|
177
|
+
json_response 404, 'resource_not_found.json'
|
178
|
+
end
|
179
|
+
put("/#{version}/orders/valid_id/refresh") do
|
180
|
+
json_response 200, 'order_refresh.json'
|
181
|
+
end
|
182
|
+
put("/#{version}/orders/invalid_id/refresh") do
|
183
|
+
json_response 404, 'resource_not_found.json'
|
184
|
+
end
|
185
|
+
put("/#{version}/orders/invalid_id") do
|
186
|
+
json_response 404, 'resource_not_found.json'
|
187
|
+
end
|
188
|
+
put("/#{version}/orders/valid_id") { status 204 }
|
189
|
+
put("/#{version}/orders") do
|
190
|
+
request.body.rewind
|
191
|
+
request_payload = JSON.parse request.body.read
|
192
|
+
if request_payload['params'] == 'invalid'
|
193
|
+
json_response 400, 'invalid_request_body.json'
|
194
|
+
else
|
195
|
+
status 204
|
196
|
+
end
|
197
|
+
end
|
198
|
+
post("/#{version}/orders") do
|
199
|
+
request.body.rewind
|
200
|
+
request_payload = JSON.parse request.body.read
|
201
|
+
if %w[applicant institutions product].all? {|s| request_payload.key? s }
|
202
|
+
json_response 200, 'order_token.json'
|
203
|
+
else
|
204
|
+
json_response 400, 'invalid_request_body.json'
|
205
|
+
end
|
202
206
|
end
|
203
|
-
end
|
204
207
|
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
208
|
+
# documents_orders
|
209
|
+
get("/#{version}/documents/orders") do
|
210
|
+
if params[:filter]&.include?('"status":2')
|
211
|
+
json_response 200, 'documents_orders_none.json'
|
212
|
+
else
|
213
|
+
json_response 200, 'documents_orders.json'
|
214
|
+
end
|
211
215
|
end
|
212
|
-
|
213
|
-
get("/#{version}/documents/orders/valid_order_id") do
|
214
|
-
json_response 200, 'documents_order.json'
|
215
|
-
end
|
216
|
-
get("/#{version}/documents/orders/invalid_order_id") do
|
217
|
-
json_response 404, 'resource_not_found.json'
|
218
|
-
end
|
219
|
-
post("/#{version}/documents/orders") do
|
220
|
-
request.body.rewind
|
221
|
-
request_payload = JSON.parse request.body.read
|
222
|
-
if %w[applicant esign_documents tag].all? {|s| request_payload.key? s }
|
216
|
+
get("/#{version}/documents/orders/valid_order_id") do
|
223
217
|
json_response 200, 'documents_order.json'
|
224
|
-
else
|
225
|
-
json_response 400, 'invalid_request_body.json'
|
226
218
|
end
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
219
|
+
get("/#{version}/documents/retrieve_order") do
|
220
|
+
json_response 200, 'documents/retrieve_order.json'
|
221
|
+
end
|
222
|
+
get("/#{version}/documents/orders/invalid_order_id") do
|
223
|
+
json_response 404, 'resource_not_found.json'
|
224
|
+
end
|
225
|
+
post("/#{version}/documents/orders") do
|
226
|
+
request.body.rewind
|
227
|
+
request_payload = JSON.parse request.body.read
|
228
|
+
if %w[applicant esign_documents tag].all? {|s| request_payload.key? s }
|
229
|
+
json_response 200, 'documents_order.json'
|
230
|
+
else
|
231
|
+
json_response 400, 'invalid_request_body.json'
|
232
|
+
end
|
233
|
+
end
|
234
|
+
put("/#{version}/documents/orders/valid_order_id") do
|
235
|
+
request.body.rewind
|
236
|
+
request_payload = JSON.parse request.body.read
|
237
|
+
if request_payload['tag'] == 'invalid'
|
238
|
+
json_response 400, 'invalid_request_body.json'
|
239
|
+
else
|
240
|
+
status 204
|
241
|
+
end
|
242
|
+
end
|
243
|
+
put("/#{version}/documents/orders/invalid_order_id") do
|
244
|
+
json_response 400, 'invalid_order_id.json'
|
245
|
+
end
|
246
|
+
delete("/#{version}/documents/orders/valid_order_id") { status 204 }
|
247
|
+
delete("/#{version}/documents/orders/invalid_order_id") do
|
248
|
+
json_response 404, 'resource_not_found.json'
|
249
|
+
end
|
250
|
+
get("/#{version}/documents/orders/valid_order_id/sign_url/valid_signature_id") do
|
251
|
+
json_response 200, 'sign_url.json'
|
252
|
+
end
|
253
|
+
get("/#{version}/documents/orders/invalid_order_id/sign_url/valid_signature_id") do
|
254
|
+
json_response 400, 'invalid_order_id.json'
|
255
|
+
end
|
256
|
+
get("/#{version}/documents/orders/valid_order_id/sign_url/invalid_signature_id") do
|
257
|
+
json_response 404, 'invalid_signature_id.json'
|
235
258
|
end
|
236
|
-
end
|
237
|
-
put("/#{version}/documents/orders/invalid_order_id") do
|
238
|
-
json_response 400, 'invalid_order_id.json'
|
239
|
-
end
|
240
|
-
delete("/#{version}/documents/orders/valid_order_id") { status 204 }
|
241
|
-
delete("/#{version}/documents/orders/invalid_order_id") do
|
242
|
-
json_response 404, 'resource_not_found.json'
|
243
|
-
end
|
244
|
-
get("/#{version}/documents/orders/valid_order_id/sign_url/valid_signature_id") do
|
245
|
-
json_response 200, 'sign_url.json'
|
246
|
-
end
|
247
|
-
get("/#{version}/documents/orders/invalid_order_id/sign_url/valid_signature_id") do
|
248
|
-
json_response 400, 'invalid_order_id.json'
|
249
|
-
end
|
250
|
-
get("/#{version}/documents/orders/valid_order_id/sign_url/invalid_signature_id") do
|
251
|
-
json_response 404, 'invalid_signature_id.json'
|
252
|
-
end
|
253
259
|
|
254
|
-
|
255
|
-
|
256
|
-
pdf_response 'signed_document.pdf'
|
257
|
-
end
|
258
|
-
delete("/#{version}/documents/orders/valid_order_id/valid_doc_id") { status 204 }
|
259
|
-
delete("/#{version}/documents/orders/valid_order_id/invalid_doc_id") do
|
260
|
-
json_response 404, 'resource_not_found.json'
|
261
|
-
end
|
262
|
-
delete("/#{version}/documents/orders/invalid_order_id/valid_doc_id") do
|
263
|
-
json_response 404, 'resource_not_found.json'
|
264
|
-
end
|
260
|
+
# documents_uploads
|
261
|
+
include DocumentsUploadsRoutes
|
265
262
|
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
263
|
+
# documents orders notifications
|
264
|
+
post("/#{version}/documents/orders/valid_id/notify") { status 204 }
|
265
|
+
post("/#{version}/documents/orders/invalid_id/notify") do
|
266
|
+
json_response 400, 'invalid_order_id.json'
|
267
|
+
end
|
271
268
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
269
|
+
# signed documents downloads
|
270
|
+
get("/#{version}/consumers/:consumer_id/documents/:signature_request_id") do
|
271
|
+
pdf_response 'signed_document.pdf'
|
272
|
+
end
|
276
273
|
|
277
|
-
|
278
|
-
|
274
|
+
# esign_templates
|
275
|
+
get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
|
279
276
|
|
280
|
-
|
281
|
-
|
277
|
+
# document_upload_types
|
278
|
+
get("/#{version}/documents/upload_types") { json_response 200, 'upload_types.json' }
|
282
279
|
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
json_response 200, '
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
280
|
+
# screenings
|
281
|
+
get("/#{version}/screenings") { json_response 200, 'screening_list.json' }
|
282
|
+
get("/#{version}/screenings/invalid_id/resume") do
|
283
|
+
json_response 404, 'resource_not_found.json'
|
284
|
+
end
|
285
|
+
get("/#{version}/screenings/valid_id/resume") { json_response 200, 'screening.json' }
|
286
|
+
put("/#{version}/screenings/invalid_id") do
|
287
|
+
json_response 404, 'resource_not_found.json'
|
288
|
+
end
|
289
|
+
put("/#{version}/screenings/valid_id") do
|
290
|
+
request.body.rewind
|
291
|
+
request_payload = JSON.parse request.body.read
|
292
|
+
if request_payload['question_id'] == 'invalid'
|
293
|
+
json_response 400, 'screening_invalid_update.json'
|
294
|
+
else
|
295
|
+
json_response 200, 'screening.json'
|
296
|
+
end
|
300
297
|
end
|
301
|
-
end
|
302
|
-
put("/#{version}/consumers/valid_public_id") { status 204 }
|
303
|
-
put("/#{version}/consumers/invalid_public_id") do
|
304
|
-
json_response 400, 'invalid_user_id.json'
|
305
|
-
end
|
306
|
-
put("/#{version}/consumers/valid_public_id/password") do
|
307
|
-
json_response 200, 'user.json'
|
308
|
-
end
|
309
|
-
put("/#{version}/consumers/invalid_public_id/password") do
|
310
|
-
json_response 404, 'resource_not_found.json'
|
311
|
-
end
|
312
|
-
delete("/#{version}/consumers/valid_public_id") { status 204 }
|
313
|
-
delete("/#{version}/consumers/invalid_public_id") do
|
314
|
-
json_response 404, 'resource_not_found.json'
|
315
|
-
end
|
316
|
-
post("/#{version}/logout") { status 204 }
|
317
298
|
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
299
|
+
post("/#{version}/screenings") do
|
300
|
+
request.body.rewind
|
301
|
+
request_payload = JSON.parse request.body.read
|
302
|
+
if request_payload.key? 'email'
|
303
|
+
json_response 201, 'screening.json'
|
304
|
+
else
|
305
|
+
json_response 400, 'invalid_request_body.json'
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
# consumers
|
310
|
+
get("/#{version}/consumers") do
|
311
|
+
json_response 200, 'users.json'
|
312
|
+
end
|
313
|
+
get("/#{version}/consumers/valid_public_id") do
|
314
|
+
json_response 200, 'user.json'
|
315
|
+
end
|
316
|
+
get("/#{version}/consumers/invalid_public_id") do
|
317
|
+
json_response 404, 'resource_not_found.json'
|
318
|
+
end
|
319
|
+
post("/#{version}/consumers") do
|
320
|
+
request.body.rewind
|
321
|
+
request_payload = JSON.parse request.body.read
|
322
|
+
if request_payload['password']
|
323
|
+
json_response 201, 'user.json'
|
324
|
+
else
|
325
|
+
json_response 400, 'invalid_request_body.json'
|
326
|
+
end
|
327
|
+
end
|
328
|
+
put("/#{version}/consumers/valid_public_id") { status 204 }
|
329
|
+
put("/#{version}/consumers/invalid_public_id") do
|
330
|
+
json_response 400, 'invalid_user_id.json'
|
331
|
+
end
|
332
|
+
put("/#{version}/consumers/valid_public_id/password") do
|
333
|
+
json_response 200, 'user.json'
|
334
|
+
end
|
335
|
+
put("/#{version}/consumers/invalid_public_id/password") do
|
336
|
+
json_response 404, 'resource_not_found.json'
|
337
|
+
end
|
338
|
+
delete("/#{version}/consumers/valid_public_id") { status 204 }
|
339
|
+
delete("/#{version}/consumers/invalid_public_id") do
|
340
|
+
json_response 404, 'resource_not_found.json'
|
341
|
+
end
|
342
|
+
post("/#{version}/logout") { status 204 }
|
343
|
+
|
344
|
+
# operators
|
345
|
+
get("/#{version}/operators") { json_response 200, 'operator_list.json' }
|
346
|
+
get("/#{version}/operators/invalid_id") do
|
347
|
+
json_response 404, 'resource_not_found.json'
|
348
|
+
end
|
349
|
+
get("/#{version}/operators/valid_id") { json_response 200, 'operator.json' }
|
350
|
+
delete("/#{version}/operators/invalid_id") do
|
351
|
+
json_response 404, 'resource_not_found.json'
|
352
|
+
end
|
353
|
+
delete("/#{version}/operators/valid_id") { status 204 }
|
354
|
+
post("/#{version}/operators/password/change") do
|
346
355
|
json_response 200, 'operator.json'
|
347
|
-
else
|
348
|
-
json_response 400, 'invalid_request_body.json'
|
349
356
|
end
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
357
|
+
put("/#{version}/operators/invalid_id") do
|
358
|
+
json_response 404, 'resource_not_found.json'
|
359
|
+
end
|
360
|
+
put("/#{version}/operators/valid_id") { json_response 200, 'operator.json' }
|
361
|
+
put("/#{version}/operators/valid_id/assign") { status 204 }
|
362
|
+
put("/#{version}/operators/invalid_id/assign") do
|
363
|
+
json_response 404, 'resource_not_found.json'
|
364
|
+
end
|
365
|
+
post("/#{version}/operators/password/forgot") do
|
366
|
+
json_response 200, 'operator_forgot_password.json'
|
367
|
+
end
|
368
|
+
post("/#{version}/operators/password/reset") do
|
369
|
+
request.body.rewind
|
370
|
+
request_payload = JSON.parse request.body.read
|
371
|
+
if request_payload['params'] == 'valid'
|
372
|
+
json_response 200, 'operator.json'
|
373
|
+
else
|
374
|
+
json_response 400, 'invalid_request_body.json'
|
375
|
+
end
|
376
|
+
end
|
377
|
+
post("/#{version}/operators") do
|
378
|
+
request.body.rewind
|
379
|
+
request_payload = JSON.parse request.body.read
|
380
|
+
if request_payload['params'] == 'valid'
|
381
|
+
json_response 201, 'operator.json'
|
382
|
+
else
|
383
|
+
json_response 400, 'invalid_request_body.json'
|
384
|
+
end
|
358
385
|
end
|
359
|
-
end
|
360
386
|
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
387
|
+
# session
|
388
|
+
post("/#{version}/login") do
|
389
|
+
request.body.rewind
|
390
|
+
request_payload = JSON.parse request.body.read
|
391
|
+
if request_payload['password'] == 'valid_password'
|
392
|
+
json_response(200, 'user.json')
|
393
|
+
else
|
394
|
+
json_response(401, 'unauthorized.json')
|
395
|
+
end
|
369
396
|
end
|
370
|
-
|
371
|
-
post("/#{version}/operators/login") { json_response 200, 'operator.json' }
|
397
|
+
post("/#{version}/operators/login") { json_response 200, 'operator.json' }
|
372
398
|
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
399
|
+
# password resets
|
400
|
+
post("/#{version}/tenant/valid_user_id/password") do
|
401
|
+
json_response 200, 'password_reset_token.json'
|
402
|
+
end
|
403
|
+
post("/#{version}/tenant/invalid_user_id/password") do
|
404
|
+
json_response 404, 'resource_not_found.json'
|
405
|
+
end
|
406
|
+
put("/#{version}/tenant/valid_user_id/password") do
|
407
|
+
request.body.rewind
|
408
|
+
request_payload = JSON.parse request.body.read
|
409
|
+
if request_payload['token'] == 'valid_token'
|
410
|
+
json_response(200, 'user.json')
|
411
|
+
else
|
412
|
+
json_response(400, 'invalid_request_body.json')
|
413
|
+
end
|
414
|
+
end
|
415
|
+
put("/#{version}/tenant/invalid_user_id/password") do
|
416
|
+
json_response 404, 'resource_not_found.json'
|
387
417
|
end
|
388
|
-
end
|
389
|
-
put("/#{version}/tenant/invalid_user_id/password") do
|
390
|
-
json_response 404, 'resource_not_found.json'
|
391
|
-
end
|
392
418
|
|
393
|
-
|
394
|
-
|
419
|
+
# products
|
420
|
+
get("/#{version}/products") { json_response 200, 'products.json' }
|
395
421
|
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
422
|
+
# portfolios
|
423
|
+
get("/#{version}/portfolios") { json_response 200, 'portfolios.json' }
|
424
|
+
get("/#{version}/portfolios/valid_id") { json_response 200, 'portfolio.json' }
|
425
|
+
get("/#{version}/portfolios/invalid_id") do
|
426
|
+
json_response 404, 'resource_not_found.json'
|
427
|
+
end
|
428
|
+
post("/#{version}/portfolios") do
|
429
|
+
request.body.rewind
|
430
|
+
request_payload = JSON.parse request.body.read
|
431
|
+
if request_payload['product'] == 'invalid'
|
432
|
+
json_response(400, 'invalid_request_body.json')
|
433
|
+
else
|
434
|
+
json_response(200, 'portfolio.json')
|
435
|
+
end
|
436
|
+
end
|
437
|
+
put("/#{version}/portfolios/valid_id") { json_response 200, 'portfolio.json' }
|
438
|
+
put("/#{version}/portfolios/invalid_id") do
|
439
|
+
json_response 404, 'resource_not_found.json'
|
440
|
+
end
|
441
|
+
delete("/#{version}/portfolios/valid_id") { status 204 }
|
442
|
+
delete("/#{version}/portfolios/invalid_id") do
|
443
|
+
json_response 404, 'resource_not_found.json'
|
409
444
|
end
|
410
|
-
end
|
411
|
-
put("/#{version}/portfolios/valid_id") { json_response 200, 'portfolio.json' }
|
412
|
-
put("/#{version}/portfolios/invalid_id") do
|
413
|
-
json_response 404, 'resource_not_found.json'
|
414
|
-
end
|
415
|
-
delete("/#{version}/portfolios/valid_id") { status 204 }
|
416
|
-
delete("/#{version}/portfolios/invalid_id") do
|
417
|
-
json_response 404, 'resource_not_found.json'
|
418
|
-
end
|
419
445
|
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
446
|
+
# alert definitions
|
447
|
+
get("/#{version}/portfolio/alerts/definitions") do
|
448
|
+
json_response 200, 'alert_definitions.json'
|
449
|
+
end
|
450
|
+
get("/#{version}/portfolio/alerts/definitions/valid_id") do
|
451
|
+
json_response 200, 'alert_definition.json'
|
452
|
+
end
|
453
|
+
get("/#{version}/portfolio/alerts/definitions/invalid_id") do
|
454
|
+
json_response 404, 'resource_not_found.json'
|
455
|
+
end
|
430
456
|
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
457
|
+
# alert occurrences
|
458
|
+
get("/#{version}/portfolio/alerts/occurrences") do
|
459
|
+
json_response 200, 'alert_occurrences.json'
|
460
|
+
end
|
435
461
|
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
462
|
+
# portfolios alerts
|
463
|
+
get("/#{version}/portfolios/valid_id/alerts") do
|
464
|
+
json_response 200, 'portfolios_alerts.json'
|
465
|
+
end
|
466
|
+
get("/#{version}/portfolios/invalid_id/alerts") do
|
467
|
+
json_response 404, 'resource_not_found.json'
|
468
|
+
end
|
469
|
+
put("/#{version}/portfolios/valid_id/alerts/valid_id") { status 204 }
|
470
|
+
put("/#{version}/portfolios/invalid_id/alerts/invalid_id") do
|
471
|
+
json_response 404, 'resource_not_found.json'
|
472
|
+
end
|
473
|
+
delete("/#{version}/portfolios/valid_id/alerts/valid_id") { status 204 }
|
474
|
+
delete("/#{version}/portfolios/invalid_id/alerts/invalid_id") do
|
475
|
+
json_response 404, 'resource_not_found.json'
|
476
|
+
end
|
451
477
|
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
478
|
+
# portfolios consumers
|
479
|
+
get("/#{version}/portfolios/valid_id/consumers") do
|
480
|
+
json_response 200, 'portfolios_consumers.json'
|
481
|
+
end
|
482
|
+
get("/#{version}/portfolios/invalid_id/consumers") do
|
483
|
+
json_response 404, 'resource_not_found.json'
|
484
|
+
end
|
485
|
+
post("/#{version}/portfolios/valid_id/consumers") { status 204 }
|
486
|
+
post("/#{version}/portfolios/invalid_id/consumers") do
|
487
|
+
json_response 400, 'multiple_consumer_subscribe_error.json'
|
488
|
+
end
|
489
|
+
post("/#{version}/portfolios/valid_id/consumers/valid_id") { status 204 }
|
490
|
+
post("/#{version}/portfolios/invalid_id/consumers/invalid_id") do
|
491
|
+
json_response 400, 'single_consumer_subscribe_error.json'
|
492
|
+
end
|
493
|
+
delete("/#{version}/portfolios/valid_id/consumers/valid_id") { status 204 }
|
494
|
+
delete("/#{version}/portfolios/invalid_id/consumers/invalid_id") do
|
495
|
+
json_response 404, 'resource_not_found.json'
|
496
|
+
end
|
471
497
|
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
498
|
+
# portfolios available consumers
|
499
|
+
get("/#{version}/portfolios/:id/consumers/available") do
|
500
|
+
json_response 200, 'portfolios_available_consumers.json'
|
501
|
+
end
|
476
502
|
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
503
|
+
# consumers portfolios
|
504
|
+
get("/#{version}/consumers/valid_id/portfolios") do
|
505
|
+
json_response 200, 'portfolios.json'
|
506
|
+
end
|
507
|
+
get("/#{version}/consumers/invalid_id/portfolios") do
|
508
|
+
json_response 404, 'resource_not_found.json'
|
509
|
+
end
|
484
510
|
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
511
|
+
# portfolio reports
|
512
|
+
get("/#{version}/portfolio/reports") do
|
513
|
+
json_response 200, 'portfolio_reports.json'
|
514
|
+
end
|
489
515
|
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
516
|
+
# relevance
|
517
|
+
get("/#{version}/relevance/ruleset/names") do
|
518
|
+
json_response 200, 'relevance_ruleset_names.json'
|
519
|
+
end
|
494
520
|
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
521
|
+
# errors
|
522
|
+
get("/#{version}/client_error") { json_response 400, 'error.json' }
|
523
|
+
get("/#{version}/server_error") { status 500 }
|
524
|
+
get("/#{version}/proxy_error") { status 407 }
|
499
525
|
|
500
|
-
|
501
|
-
|
526
|
+
# timeout
|
527
|
+
get("/#{version}/orders/timeout") { status 419 }
|
502
528
|
|
503
|
-
|
529
|
+
private
|
504
530
|
|
505
|
-
|
506
|
-
|
507
|
-
|
531
|
+
def json_response(response_code, file_name)
|
532
|
+
http_response :json, response_code, file_name
|
533
|
+
end
|
508
534
|
|
509
|
-
|
510
|
-
|
511
|
-
|
535
|
+
def png_response(file_name)
|
536
|
+
http_response :png, 200, file_name
|
537
|
+
end
|
512
538
|
|
513
|
-
|
514
|
-
|
515
|
-
|
539
|
+
def pdf_response(file_name)
|
540
|
+
http_response 'application/pdf', 200, file_name
|
541
|
+
end
|
516
542
|
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
543
|
+
def http_response(content_type, response_code, file_name)
|
544
|
+
content_type content_type
|
545
|
+
status response_code
|
546
|
+
File.open("#{File.dirname(__FILE__)}/fixtures/#{file_name}").read
|
547
|
+
end
|
521
548
|
end
|
549
|
+
# rubocop:enable Metrics/ClassLength
|
522
550
|
end
|