finapps 5.0.43 → 5.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yaml +47 -0
  3. data/.github/workflows/release.yml +42 -42
  4. data/.rubocop.yml +1 -1
  5. data/.ruby-version +1 -1
  6. data/Guardfile +1 -1
  7. data/README.md +6 -4
  8. data/finapps.gemspec +8 -7
  9. data/lib/finapps.rb +1 -0
  10. data/lib/finapps/rest/client.rb +2 -1
  11. data/lib/finapps/rest/consumers.rb +5 -5
  12. data/lib/finapps/rest/documents_orders.rb +23 -4
  13. data/lib/finapps/rest/documents_orders_notifications.rb +2 -2
  14. data/lib/finapps/rest/documents_uploads.rb +8 -0
  15. data/lib/finapps/rest/operators.rb +3 -3
  16. data/lib/finapps/rest/orders.rb +6 -6
  17. data/lib/finapps/rest/screenings.rb +64 -0
  18. data/lib/finapps/version.rb +1 -1
  19. data/spec/rest/api_request.rb +8 -0
  20. data/spec/rest/documents_orders_notifications_spec.rb +2 -2
  21. data/spec/rest/documents_orders_spec.rb +37 -31
  22. data/spec/rest/documents_uploads_spec.rb +53 -0
  23. data/spec/rest/screenings_spec.rb +235 -0
  24. data/spec/rest/signed_documents_downloads_spec.rb +4 -7
  25. data/spec/rest/verix/verix_documents_spec.rb +4 -4
  26. data/spec/spec_helper.rb +1 -1
  27. data/spec/support/documents_uploads_routes.rb +39 -0
  28. data/spec/support/fake_api.rb +457 -456
  29. data/spec/support/fixtures/documents/retrieve_order.json +97 -0
  30. data/spec/support/fixtures/screening.json +26 -0
  31. data/spec/support/fixtures/screening_invalid_update.json +5 -0
  32. data/spec/support/fixtures/screening_list.json +25 -0
  33. data/spec/support/fixtures/session_not_found.json +5 -0
  34. data/spec/support/screenings_routes.rb +73 -0
  35. metadata +111 -79
  36. data/.github/workflows/main.yaml +0 -38
@@ -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
@@ -1,522 +1,523 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'sinatra/base'
4
+ require_relative 'documents_uploads_routes'
5
+ require_relative 'screenings_routes'
6
+
7
+ module Fake
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
- # the FakeApi class is used to mock API requests while testing.
6
- class FakeApi < Sinatra::Base
7
- def self.version
8
- "v#{FinAppsCore::REST::Defaults::API_VERSION}"
9
- end
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
- # verix_metadata
19
- get("/#{version}/v/metadata") do
20
- json_response 200, 'verix/metadata.json'
21
- end
21
+ # verix_metadata
22
+ get("/#{version}/v/metadata") do
23
+ json_response 200, 'verix/metadata.json'
24
+ end
22
25
 
23
- # verix_records
24
- get("/#{version}/v/record") do
25
- json_response 200, 'verix/record/list.json'
26
- end
27
- post("/#{version}/v/record") do
28
- json_response 200, 'verix/record/create.json'
29
- end
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
- # verix_pdf_documents
32
- get("/#{version}/v/record/:record_id/file/:provider_id") do
33
- pdf_response 'verix/document/document.pdf'
34
- end
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
- # verix_documents
37
- get("/#{version}/v/record/:record_id/document") do
38
- json_response 200, 'verix/document/show.json'
39
- end
40
- get("/#{version}/v/record/:record_id/document/:document_id") do
41
- json_response 200, 'verix/document/list.json'
42
- end
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
- # plaid_webhook/metadata
45
- get("/#{version}/p/metadata") do
46
- tenant_token = request.env['HTTP_X_TENANT_TOKEN']
47
- if tenant_token == 'invalid_tenant_token'
48
- json_response 404, 'invalid_tenant_credentials.json'
49
- else
50
- json_response 200, 'plaid/webhook.json'
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
- # plaid_institution_consumer
55
- get("/#{version}/p/institution/consumer/:consumer_institution_id") do
56
- json_response 200, 'plaid/institution/consumer/show.json'
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
- end
69
- post("/#{version}/p/institution/consumer") do
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
- end
77
- delete("/#{version}/p/institution/consumer/:consumer_institution_id") do
78
- status 204
79
- end
80
- put("/#{version}/p/institution/consumer/:consumer_institution_id") do
81
- status 204
82
- end
83
- get("/#{version}/p/institution/consumer/:consumer_institution_id/token") do
84
- json_response 200, 'plaid/institution/consumer/public_token.json'
85
- end
86
-
87
- # plaid_accounts
88
- get("/#{version}/p/account") do
89
- json_response 200, 'plaid/account/list.json'
90
- end
91
- get("/#{version}/p/account/:account_id") do
92
- json_response 200, 'plaid/account/show.json'
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
- end
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
- end
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
- # plaid_institution_logos
114
- get("/#{version}/p/institution/logo/:inst_id") do
115
- png_response 'plaid/institution/logo.png'
116
- end
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
- # version
119
- get("/#{version}/version") { 'Version => 2.1.29-.20161208.172810' }
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
- # tenants
122
- get("/#{version}/settings/tenant") do
123
- json_response 200, 'tenant_settings.json'
124
- end
125
- put("/#{version}/settings/tenant") do
126
- request.body.rewind
127
- request_payload = JSON.parse request.body.read
128
- if request_payload['bad_params']
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
- end
134
- get("/#{version}/settings/app") do
135
- json_response 200, 'tenant_app_settings.json'
136
- end
137
- put("/#{version}/settings/app") do
138
- request.body.rewind
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
- end
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
- end
195
- post("/#{version}/orders") do
196
- request.body.rewind
197
- request_payload = JSON.parse request.body.read
198
- if %w[applicant institutions product].all? {|s| request_payload.key? s }
199
- json_response 200, 'order_token.json'
200
- else
201
- json_response 400, 'invalid_request_body.json'
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
- # documents_orders
206
- get("/#{version}/documents/orders") do
207
- if params[:filter]&.include?('"status":2')
208
- json_response 200, 'documents_orders_none.json'
209
- else
210
- json_response 200, 'documents_orders.json'
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
- end
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
- end
228
- put("/#{version}/documents/orders/valid_order_id") do
229
- request.body.rewind
230
- request_payload = JSON.parse request.body.read
231
- if request_payload['tag'] == 'invalid'
232
- json_response 400, 'invalid_request_body.json'
233
- else
234
- status 204
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
- # documents_uploads
255
- get("/#{version}/consumers/:consumer_id/documents/:doc_id?thumbnail=false") do
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
- # documents orders notifications
267
- post("/#{version}/documents/orders/valid_id/notify") { status 204 }
268
- post("/#{version}/documents/orders/invalid_id/notify") do
269
- json_response 400, 'invalid_order_id.json'
270
- end
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
- # signed documents downloads
273
- get("/#{version}/consumers/:consumer_id/documents/:signature_request_id") do
274
- pdf_response 'signed_document.pdf'
275
- end
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
- # esign_templates
278
- get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
274
+ # esign_templates
275
+ get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
279
276
 
280
- # document_upload_types
281
- get("/#{version}/documents/upload_types") { json_response 200, 'upload_types.json' }
277
+ # document_upload_types
278
+ get("/#{version}/documents/upload_types") { json_response 200, 'upload_types.json' }
282
279
 
283
- # consumers
284
- get("/#{version}/consumers") do
285
- json_response 200, 'users.json'
286
- end
287
- get("/#{version}/consumers/valid_public_id") do
288
- json_response 200, 'user.json'
289
- end
290
- get("/#{version}/consumers/invalid_public_id") do
291
- json_response 404, 'resource_not_found.json'
292
- end
293
- post("/#{version}/consumers") do
294
- request.body.rewind
295
- request_payload = JSON.parse request.body.read
296
- if request_payload['password']
297
- json_response 201, 'user.json'
298
- else
299
- json_response 400, 'invalid_request_body.json'
280
+ # screenings
281
+ include ScreeningsRoutes
282
+
283
+ # consumers
284
+ get("/#{version}/consumers") do
285
+ json_response 200, 'users.json'
300
286
  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 }
287
+ get("/#{version}/consumers/valid_public_id") do
288
+ json_response 200, 'user.json'
289
+ end
290
+ get("/#{version}/consumers/invalid_public_id") do
291
+ json_response 404, 'resource_not_found.json'
292
+ end
293
+ post("/#{version}/consumers") do
294
+ request.body.rewind
295
+ request_payload = JSON.parse request.body.read
296
+ if request_payload['password']
297
+ json_response 201, 'user.json'
298
+ else
299
+ json_response 400, 'invalid_request_body.json'
300
+ 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
317
 
318
- # operators
319
- get("/#{version}/operators") { json_response 200, 'operator_list.json' }
320
- get("/#{version}/operators/invalid_id") do
321
- json_response 404, 'resource_not_found.json'
322
- end
323
- get("/#{version}/operators/valid_id") { json_response 200, 'operator.json' }
324
- delete("/#{version}/operators/invalid_id") do
325
- json_response 404, 'resource_not_found.json'
326
- end
327
- delete("/#{version}/operators/valid_id") { status 204 }
328
- post("/#{version}/operators/password/change") do
329
- json_response 200, 'operator.json'
330
- end
331
- put("/#{version}/operators/invalid_id") do
332
- json_response 404, 'resource_not_found.json'
333
- end
334
- put("/#{version}/operators/valid_id") { json_response 200, 'operator.json' }
335
- put("/#{version}/operators/valid_id/assign") { status 204 }
336
- put("/#{version}/operators/invalid_id/assign") do
337
- json_response 404, 'resource_not_found.json'
338
- end
339
- post("/#{version}/operators/password/forgot") do
340
- json_response 200, 'operator_forgot_password.json'
341
- end
342
- post("/#{version}/operators/password/reset") do
343
- request.body.rewind
344
- request_payload = JSON.parse request.body.read
345
- if request_payload['params'] == 'valid'
318
+ # operators
319
+ get("/#{version}/operators") { json_response 200, 'operator_list.json' }
320
+ get("/#{version}/operators/invalid_id") do
321
+ json_response 404, 'resource_not_found.json'
322
+ end
323
+ get("/#{version}/operators/valid_id") { json_response 200, 'operator.json' }
324
+ delete("/#{version}/operators/invalid_id") do
325
+ json_response 404, 'resource_not_found.json'
326
+ end
327
+ delete("/#{version}/operators/valid_id") { status 204 }
328
+ post("/#{version}/operators/password/change") do
346
329
  json_response 200, 'operator.json'
347
- else
348
- json_response 400, 'invalid_request_body.json'
349
330
  end
350
- end
351
- post("/#{version}/operators") do
352
- request.body.rewind
353
- request_payload = JSON.parse request.body.read
354
- if request_payload['params'] == 'valid'
355
- json_response 201, 'operator.json'
356
- else
357
- json_response 400, 'invalid_request_body.json'
331
+ put("/#{version}/operators/invalid_id") do
332
+ json_response 404, 'resource_not_found.json'
333
+ end
334
+ put("/#{version}/operators/valid_id") { json_response 200, 'operator.json' }
335
+ put("/#{version}/operators/valid_id/assign") { status 204 }
336
+ put("/#{version}/operators/invalid_id/assign") do
337
+ json_response 404, 'resource_not_found.json'
338
+ end
339
+ post("/#{version}/operators/password/forgot") do
340
+ json_response 200, 'operator_forgot_password.json'
341
+ end
342
+ post("/#{version}/operators/password/reset") do
343
+ request.body.rewind
344
+ request_payload = JSON.parse request.body.read
345
+ if request_payload['params'] == 'valid'
346
+ json_response 200, 'operator.json'
347
+ else
348
+ json_response 400, 'invalid_request_body.json'
349
+ end
350
+ end
351
+ post("/#{version}/operators") do
352
+ request.body.rewind
353
+ request_payload = JSON.parse request.body.read
354
+ if request_payload['params'] == 'valid'
355
+ json_response 201, 'operator.json'
356
+ else
357
+ json_response 400, 'invalid_request_body.json'
358
+ end
358
359
  end
359
- end
360
360
 
361
- # session
362
- post("/#{version}/login") do
363
- request.body.rewind
364
- request_payload = JSON.parse request.body.read
365
- if request_payload['password'] == 'valid_password'
366
- json_response(200, 'user.json')
367
- else
368
- json_response(401, 'unauthorized.json')
361
+ # session
362
+ post("/#{version}/login") do
363
+ request.body.rewind
364
+ request_payload = JSON.parse request.body.read
365
+ if request_payload['password'] == 'valid_password'
366
+ json_response(200, 'user.json')
367
+ else
368
+ json_response(401, 'unauthorized.json')
369
+ end
369
370
  end
370
- end
371
- post("/#{version}/operators/login") { json_response 200, 'operator.json' }
371
+ post("/#{version}/operators/login") { json_response 200, 'operator.json' }
372
372
 
373
- # password resets
374
- post("/#{version}/tenant/valid_user_id/password") do
375
- json_response 200, 'password_reset_token.json'
376
- end
377
- post("/#{version}/tenant/invalid_user_id/password") do
378
- json_response 404, 'resource_not_found.json'
379
- end
380
- put("/#{version}/tenant/valid_user_id/password") do
381
- request.body.rewind
382
- request_payload = JSON.parse request.body.read
383
- if request_payload['token'] == 'valid_token'
384
- json_response(200, 'user.json')
385
- else
386
- json_response(400, 'invalid_request_body.json')
373
+ # password resets
374
+ post("/#{version}/tenant/valid_user_id/password") do
375
+ json_response 200, 'password_reset_token.json'
376
+ end
377
+ post("/#{version}/tenant/invalid_user_id/password") do
378
+ json_response 404, 'resource_not_found.json'
379
+ end
380
+ put("/#{version}/tenant/valid_user_id/password") do
381
+ request.body.rewind
382
+ request_payload = JSON.parse request.body.read
383
+ if request_payload['token'] == 'valid_token'
384
+ json_response(200, 'user.json')
385
+ else
386
+ json_response(400, 'invalid_request_body.json')
387
+ end
388
+ end
389
+ put("/#{version}/tenant/invalid_user_id/password") do
390
+ json_response 404, 'resource_not_found.json'
387
391
  end
388
- end
389
- put("/#{version}/tenant/invalid_user_id/password") do
390
- json_response 404, 'resource_not_found.json'
391
- end
392
392
 
393
- # products
394
- get("/#{version}/products") { json_response 200, 'products.json' }
393
+ # products
394
+ get("/#{version}/products") { json_response 200, 'products.json' }
395
395
 
396
- # portfolios
397
- get("/#{version}/portfolios") { json_response 200, 'portfolios.json' }
398
- get("/#{version}/portfolios/valid_id") { json_response 200, 'portfolio.json' }
399
- get("/#{version}/portfolios/invalid_id") do
400
- json_response 404, 'resource_not_found.json'
401
- end
402
- post("/#{version}/portfolios") do
403
- request.body.rewind
404
- request_payload = JSON.parse request.body.read
405
- if request_payload['product'] == 'invalid'
406
- json_response(400, 'invalid_request_body.json')
407
- else
408
- json_response(200, 'portfolio.json')
396
+ # portfolios
397
+ get("/#{version}/portfolios") { json_response 200, 'portfolios.json' }
398
+ get("/#{version}/portfolios/valid_id") { json_response 200, 'portfolio.json' }
399
+ get("/#{version}/portfolios/invalid_id") do
400
+ json_response 404, 'resource_not_found.json'
401
+ end
402
+ post("/#{version}/portfolios") do
403
+ request.body.rewind
404
+ request_payload = JSON.parse request.body.read
405
+ if request_payload['product'] == 'invalid'
406
+ json_response(400, 'invalid_request_body.json')
407
+ else
408
+ json_response(200, 'portfolio.json')
409
+ 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'
409
418
  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
419
 
420
- # alert definitions
421
- get("/#{version}/portfolio/alerts/definitions") do
422
- json_response 200, 'alert_definitions.json'
423
- end
424
- get("/#{version}/portfolio/alerts/definitions/valid_id") do
425
- json_response 200, 'alert_definition.json'
426
- end
427
- get("/#{version}/portfolio/alerts/definitions/invalid_id") do
428
- json_response 404, 'resource_not_found.json'
429
- end
420
+ # alert definitions
421
+ get("/#{version}/portfolio/alerts/definitions") do
422
+ json_response 200, 'alert_definitions.json'
423
+ end
424
+ get("/#{version}/portfolio/alerts/definitions/valid_id") do
425
+ json_response 200, 'alert_definition.json'
426
+ end
427
+ get("/#{version}/portfolio/alerts/definitions/invalid_id") do
428
+ json_response 404, 'resource_not_found.json'
429
+ end
430
430
 
431
- # alert occurrences
432
- get("/#{version}/portfolio/alerts/occurrences") do
433
- json_response 200, 'alert_occurrences.json'
434
- end
431
+ # alert occurrences
432
+ get("/#{version}/portfolio/alerts/occurrences") do
433
+ json_response 200, 'alert_occurrences.json'
434
+ end
435
435
 
436
- # portfolios alerts
437
- get("/#{version}/portfolios/valid_id/alerts") do
438
- json_response 200, 'portfolios_alerts.json'
439
- end
440
- get("/#{version}/portfolios/invalid_id/alerts") do
441
- json_response 404, 'resource_not_found.json'
442
- end
443
- put("/#{version}/portfolios/valid_id/alerts/valid_id") { status 204 }
444
- put("/#{version}/portfolios/invalid_id/alerts/invalid_id") do
445
- json_response 404, 'resource_not_found.json'
446
- end
447
- delete("/#{version}/portfolios/valid_id/alerts/valid_id") { status 204 }
448
- delete("/#{version}/portfolios/invalid_id/alerts/invalid_id") do
449
- json_response 404, 'resource_not_found.json'
450
- end
436
+ # portfolios alerts
437
+ get("/#{version}/portfolios/valid_id/alerts") do
438
+ json_response 200, 'portfolios_alerts.json'
439
+ end
440
+ get("/#{version}/portfolios/invalid_id/alerts") do
441
+ json_response 404, 'resource_not_found.json'
442
+ end
443
+ put("/#{version}/portfolios/valid_id/alerts/valid_id") { status 204 }
444
+ put("/#{version}/portfolios/invalid_id/alerts/invalid_id") do
445
+ json_response 404, 'resource_not_found.json'
446
+ end
447
+ delete("/#{version}/portfolios/valid_id/alerts/valid_id") { status 204 }
448
+ delete("/#{version}/portfolios/invalid_id/alerts/invalid_id") do
449
+ json_response 404, 'resource_not_found.json'
450
+ end
451
451
 
452
- # portfolios consumers
453
- get("/#{version}/portfolios/valid_id/consumers") do
454
- json_response 200, 'portfolios_consumers.json'
455
- end
456
- get("/#{version}/portfolios/invalid_id/consumers") do
457
- json_response 404, 'resource_not_found.json'
458
- end
459
- post("/#{version}/portfolios/valid_id/consumers") { status 204 }
460
- post("/#{version}/portfolios/invalid_id/consumers") do
461
- json_response 400, 'multiple_consumer_subscribe_error.json'
462
- end
463
- post("/#{version}/portfolios/valid_id/consumers/valid_id") { status 204 }
464
- post("/#{version}/portfolios/invalid_id/consumers/invalid_id") do
465
- json_response 400, 'single_consumer_subscribe_error.json'
466
- end
467
- delete("/#{version}/portfolios/valid_id/consumers/valid_id") { status 204 }
468
- delete("/#{version}/portfolios/invalid_id/consumers/invalid_id") do
469
- json_response 404, 'resource_not_found.json'
470
- end
452
+ # portfolios consumers
453
+ get("/#{version}/portfolios/valid_id/consumers") do
454
+ json_response 200, 'portfolios_consumers.json'
455
+ end
456
+ get("/#{version}/portfolios/invalid_id/consumers") do
457
+ json_response 404, 'resource_not_found.json'
458
+ end
459
+ post("/#{version}/portfolios/valid_id/consumers") { status 204 }
460
+ post("/#{version}/portfolios/invalid_id/consumers") do
461
+ json_response 400, 'multiple_consumer_subscribe_error.json'
462
+ end
463
+ post("/#{version}/portfolios/valid_id/consumers/valid_id") { status 204 }
464
+ post("/#{version}/portfolios/invalid_id/consumers/invalid_id") do
465
+ json_response 400, 'single_consumer_subscribe_error.json'
466
+ end
467
+ delete("/#{version}/portfolios/valid_id/consumers/valid_id") { status 204 }
468
+ delete("/#{version}/portfolios/invalid_id/consumers/invalid_id") do
469
+ json_response 404, 'resource_not_found.json'
470
+ end
471
471
 
472
- # portfolios available consumers
473
- get("/#{version}/portfolios/:id/consumers/available") do
474
- json_response 200, 'portfolios_available_consumers.json'
475
- end
472
+ # portfolios available consumers
473
+ get("/#{version}/portfolios/:id/consumers/available") do
474
+ json_response 200, 'portfolios_available_consumers.json'
475
+ end
476
476
 
477
- # consumers portfolios
478
- get("/#{version}/consumers/valid_id/portfolios") do
479
- json_response 200, 'portfolios.json'
480
- end
481
- get("/#{version}/consumers/invalid_id/portfolios") do
482
- json_response 404, 'resource_not_found.json'
483
- end
477
+ # consumers portfolios
478
+ get("/#{version}/consumers/valid_id/portfolios") do
479
+ json_response 200, 'portfolios.json'
480
+ end
481
+ get("/#{version}/consumers/invalid_id/portfolios") do
482
+ json_response 404, 'resource_not_found.json'
483
+ end
484
484
 
485
- # portfolio reports
486
- get("/#{version}/portfolio/reports") do
487
- json_response 200, 'portfolio_reports.json'
488
- end
485
+ # portfolio reports
486
+ get("/#{version}/portfolio/reports") do
487
+ json_response 200, 'portfolio_reports.json'
488
+ end
489
489
 
490
- # relevance
491
- get("/#{version}/relevance/ruleset/names") do
492
- json_response 200, 'relevance_ruleset_names.json'
493
- end
490
+ # relevance
491
+ get("/#{version}/relevance/ruleset/names") do
492
+ json_response 200, 'relevance_ruleset_names.json'
493
+ end
494
494
 
495
- # errors
496
- get("/#{version}/client_error") { json_response 400, 'error.json' }
497
- get("/#{version}/server_error") { status 500 }
498
- get("/#{version}/proxy_error") { status 407 }
495
+ # errors
496
+ get("/#{version}/client_error") { json_response 400, 'error.json' }
497
+ get("/#{version}/server_error") { status 500 }
498
+ get("/#{version}/proxy_error") { status 407 }
499
499
 
500
- # timeout
501
- get("/#{version}/orders/timeout") { status 419 }
500
+ # timeout
501
+ get("/#{version}/orders/timeout") { status 419 }
502
502
 
503
- private
503
+ private
504
504
 
505
- def json_response(response_code, file_name)
506
- http_response :json, response_code, file_name
507
- end
505
+ def json_response(response_code, file_name)
506
+ http_response :json, response_code, file_name
507
+ end
508
508
 
509
- def png_response(file_name)
510
- http_response :png, 200, file_name
511
- end
509
+ def png_response(file_name)
510
+ http_response :png, 200, file_name
511
+ end
512
512
 
513
- def pdf_response(file_name)
514
- http_response 'application/pdf', 200, file_name
515
- end
513
+ def pdf_response(file_name)
514
+ http_response 'application/pdf', 200, file_name
515
+ end
516
516
 
517
- def http_response(content_type, response_code, file_name)
518
- content_type content_type
519
- status response_code
520
- File.open("#{File.dirname(__FILE__)}/fixtures/#{file_name}").read
517
+ def http_response(content_type, response_code, file_name)
518
+ content_type content_type
519
+ status response_code
520
+ File.open("#{File.dirname(__FILE__)}/fixtures/#{file_name}").read
521
+ end
521
522
  end
522
523
  end