finapps 5.0.25 → 5.0.30
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/.codeclimate.yml +2 -1
- data/RELEASES.md +40 -0
- data/finapps.gemspec +1 -1
- data/lib/finapps.rb +6 -1
- data/lib/finapps/rest/client.rb +14 -8
- data/lib/finapps/rest/consumers.rb +3 -1
- data/lib/finapps/rest/documents_orders.rb +88 -0
- data/lib/finapps/rest/documents_orders_notifications.rb +14 -0
- data/lib/finapps/rest/esign_templates.rb +11 -0
- data/lib/finapps/rest/signed_documents_downloads.rb +15 -0
- data/lib/finapps/rest/verix/verix_documents.rb +21 -0
- data/lib/finapps/rest/verix/verix_pdf_documents.rb +15 -0
- data/lib/finapps/version.rb +1 -1
- data/spec/rest/consumers_spec.rb +24 -1
- data/spec/rest/documents_orders_notifications_spec.rb +40 -0
- data/spec/rest/documents_orders_spec.rb +272 -0
- data/spec/rest/esign_templates_spec.rb +20 -0
- data/spec/rest/signed_documents_downloads_spec.rb +35 -0
- data/spec/rest/verix/verix_documents_spec.rb +52 -0
- data/spec/rest/verix/verix_pdf_documents_spec.rb +35 -0
- data/spec/rest/verix/verix_records_spec.rb +3 -14
- data/spec/support/fake_api.rb +74 -8
- data/spec/support/fixtures/documents_order.json +75 -0
- data/spec/support/fixtures/documents_orders.json +32 -0
- data/spec/support/fixtures/esign_templates.json +6 -0
- data/spec/support/fixtures/invalid_order_id.json +5 -0
- data/spec/support/fixtures/invalid_signature_id.json +5 -0
- data/spec/support/fixtures/sign_url.json +4 -0
- data/spec/support/fixtures/signed_document.pdf +0 -0
- data/spec/support/fixtures/verix/document/document.pdf +0 -0
- data/spec/support/fixtures/verix/document/list.json +36 -0
- data/spec/support/fixtures/verix/document/show.json +35 -0
- data/spec/support/fixtures/verix/record/create.json +25 -17
- data/spec/support/fixtures/verix/record/list.json +121 -45
- metadata +80 -56
- data/lib/finapps/rest/statements.rb +0 -16
- data/spec/rest/statements_spec.rb +0 -42
- data/spec/support/fixtures/fake_pdf_statement.json +0 -3
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helpers/client'
|
4
|
+
require 'rest/api_request'
|
5
|
+
|
6
|
+
RSpec.describe FinApps::REST::EsignTemplates do
|
7
|
+
include SpecHelpers::Client
|
8
|
+
subject(:templates) { FinApps::REST::EsignTemplates.new(client).list }
|
9
|
+
let(:results) { templates[0] }
|
10
|
+
|
11
|
+
describe '#list' do
|
12
|
+
context 'when called' do
|
13
|
+
it_behaves_like 'an API request'
|
14
|
+
it_behaves_like 'a successful request'
|
15
|
+
it('performs a get and returns the response') do
|
16
|
+
expect(results[0]).to have_key(:template_id)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helpers/client'
|
4
|
+
require 'rest/api_request'
|
5
|
+
|
6
|
+
RSpec.describe FinApps::REST::SignedDocumentsDownloads do
|
7
|
+
include SpecHelpers::Client
|
8
|
+
|
9
|
+
let(:api_client) { client }
|
10
|
+
let(:document) { FinApps::REST::SignedDocumentsDownloads.new(api_client) }
|
11
|
+
|
12
|
+
describe '#show' do
|
13
|
+
context 'when missing parameters' do
|
14
|
+
subject { document.show(nil, :signature_request_id) }
|
15
|
+
it 'raises an error when missing consumer id' do
|
16
|
+
expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
|
17
|
+
end
|
18
|
+
|
19
|
+
subject { document.show(:consumer_id, nil) }
|
20
|
+
it 'raises an error when missing signature request id' do
|
21
|
+
expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
subject(:show) do
|
26
|
+
document.show(
|
27
|
+
:consumer_id,
|
28
|
+
:signature_request_id
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
it_behaves_like 'an API request'
|
33
|
+
it_behaves_like 'a successful request'
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helpers/client'
|
4
|
+
require 'rest/api_request'
|
5
|
+
|
6
|
+
RSpec.describe FinApps::REST::VerixDocuments do
|
7
|
+
include SpecHelpers::Client
|
8
|
+
|
9
|
+
let(:api_client) { client }
|
10
|
+
let(:document) { FinApps::REST::VerixDocuments.new(api_client) }
|
11
|
+
|
12
|
+
describe '#list' do
|
13
|
+
context 'when missing parameters' do
|
14
|
+
subject { document.list(nil) }
|
15
|
+
it 'raises an error when missing record id' do
|
16
|
+
expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
subject(:list) do
|
21
|
+
document.list(
|
22
|
+
:record_id
|
23
|
+
)
|
24
|
+
end
|
25
|
+
it_behaves_like 'an API request'
|
26
|
+
it_behaves_like 'a successful request'
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#show' do
|
30
|
+
context 'when missing parameters' do
|
31
|
+
subject { document.show(nil, :document_id) }
|
32
|
+
it 'raises an error when missing record id' do
|
33
|
+
expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
|
34
|
+
end
|
35
|
+
|
36
|
+
subject { document.show(:record_id, nil) }
|
37
|
+
it 'raises an error when missing document id' do
|
38
|
+
expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
subject(:show) do
|
43
|
+
document.show(
|
44
|
+
:record_id,
|
45
|
+
:document_id
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
it_behaves_like 'an API request'
|
50
|
+
it_behaves_like 'a successful request'
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helpers/client'
|
4
|
+
require 'rest/api_request'
|
5
|
+
|
6
|
+
RSpec.describe FinApps::REST::VerixPdfDocuments do
|
7
|
+
include SpecHelpers::Client
|
8
|
+
|
9
|
+
let(:api_client) { client }
|
10
|
+
let(:document) { FinApps::REST::VerixPdfDocuments.new(api_client) }
|
11
|
+
|
12
|
+
describe '#show' do
|
13
|
+
context 'when missing parameters' do
|
14
|
+
subject { document.show(nil, :provider_id) }
|
15
|
+
it 'raises an error when missing record id' do
|
16
|
+
expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
|
17
|
+
end
|
18
|
+
|
19
|
+
subject { document.show(:record_id, nil) }
|
20
|
+
it 'raises an error when missing provider id' do
|
21
|
+
expect { subject }.to raise_error(FinAppsCore::MissingArgumentsError)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
subject(:show) do
|
26
|
+
document.show(
|
27
|
+
:record_id,
|
28
|
+
:provider_id
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
it_behaves_like 'an API request'
|
33
|
+
it_behaves_like 'a successful request'
|
34
|
+
end
|
35
|
+
end
|
@@ -12,10 +12,7 @@ RSpec.describe FinApps::REST::VerixRecords do
|
|
12
12
|
describe '#create' do
|
13
13
|
subject(:create) do
|
14
14
|
FinApps::REST::VerixRecords.new(api_client).create(
|
15
|
-
code: 'authcode'
|
16
|
-
download: [
|
17
|
-
'form_1040'
|
18
|
-
]
|
15
|
+
code: 'authcode'
|
19
16
|
)
|
20
17
|
end
|
21
18
|
|
@@ -26,11 +23,7 @@ RSpec.describe FinApps::REST::VerixRecords do
|
|
26
23
|
it('returns a status') { expect(create[RESULTS]).to have_key(:status) }
|
27
24
|
it('returns an error node') { expect(create[RESULTS]).to have_key(:error) }
|
28
25
|
it('returns a list of documents') { expect(create[RESULTS]).to have_key(:documents) }
|
29
|
-
it('returns a
|
30
|
-
it('returns a document date sycned node') { expect(create[RESULTS][:documents].first).to have_key(:date_synced) }
|
31
|
-
it('returns a document id') { expect(create[RESULTS][:documents].first).to have_key(:document_id) }
|
32
|
-
it('returns a document downloaded bool') { expect(create[RESULTS][:documents].first).to have_key(:downloaded) }
|
33
|
-
it('returns a document type') { expect(create[RESULTS][:documents].first).to have_key(:type) }
|
26
|
+
it('returns a list of downloaded documents') { expect(create[RESULTS]).to have_key(:downloaded_documents) }
|
34
27
|
end
|
35
28
|
|
36
29
|
describe '#list' do
|
@@ -44,10 +37,6 @@ RSpec.describe FinApps::REST::VerixRecords do
|
|
44
37
|
it('returns a consumer id') { expect(list[RESULTS].first).to have_key(:consumer_id) }
|
45
38
|
it('returns an error node') { expect(list[RESULTS].first).to have_key(:error) }
|
46
39
|
it('returns a list of documents') { expect(list[RESULTS].first).to have_key(:documents) }
|
47
|
-
it('returns a
|
48
|
-
it('returns a document id') { expect(list[RESULTS].first[:documents].first).to have_key(:document_id) }
|
49
|
-
it('returns a document count') { expect(list[RESULTS].first[:documents].first).to have_key(:count) }
|
50
|
-
it('returns a document downloaded bool') { expect(list[RESULTS].first[:documents].first).to have_key(:downloaded) }
|
51
|
-
it('returns a document date_synced') { expect(list[RESULTS].first[:documents].first).to have_key(:date_synced) }
|
40
|
+
it('returns a list of downloaded documents') { expect(list[RESULTS].first).to have_key(:downloaded_documents) }
|
52
41
|
end
|
53
42
|
end
|
data/spec/support/fake_api.rb
CHANGED
@@ -28,6 +28,19 @@ class FakeApi < Sinatra::Base
|
|
28
28
|
json_response 200, 'verix/record/create.json'
|
29
29
|
end
|
30
30
|
|
31
|
+
# verix_pdf_documents
|
32
|
+
get("/#{version}/v/record/:record_id/file/:provider_id") do
|
33
|
+
pdf_response 'verix/document/document.pdf'
|
34
|
+
end
|
35
|
+
|
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
|
43
|
+
|
31
44
|
# plaid_webhook/metadata
|
32
45
|
get("/#{version}/p/metadata") do
|
33
46
|
tenant_token = request.env['HTTP_X_TENANT_TOKEN']
|
@@ -189,6 +202,63 @@ class FakeApi < Sinatra::Base
|
|
189
202
|
end
|
190
203
|
end
|
191
204
|
|
205
|
+
# documents_orders
|
206
|
+
get("/#{version}/documents/orders") { json_response 200, 'documents_orders.json' }
|
207
|
+
get("/#{version}/documents/orders/valid_order_id") do
|
208
|
+
json_response 200, 'documents_order.json'
|
209
|
+
end
|
210
|
+
get("/#{version}/documents/orders/invalid_order_id") do
|
211
|
+
json_response 404, 'resource_not_found.json'
|
212
|
+
end
|
213
|
+
post("/#{version}/documents/orders") do
|
214
|
+
request.body.rewind
|
215
|
+
request_payload = JSON.parse request.body.read
|
216
|
+
if %w[applicant esign_documents tag].all? { |s| request_payload.key? s }
|
217
|
+
json_response 200, 'documents_order.json'
|
218
|
+
else
|
219
|
+
json_response 400, 'invalid_request_body.json'
|
220
|
+
end
|
221
|
+
end
|
222
|
+
put("/#{version}/documents/orders/valid_order_id") do
|
223
|
+
request.body.rewind
|
224
|
+
request_payload = JSON.parse request.body.read
|
225
|
+
if request_payload['tag'] == 'invalid'
|
226
|
+
json_response 400, 'invalid_request_body.json'
|
227
|
+
else
|
228
|
+
status 204
|
229
|
+
end
|
230
|
+
end
|
231
|
+
put("/#{version}/documents/orders/invalid_order_id") do
|
232
|
+
json_response 400, 'invalid_order_id.json'
|
233
|
+
end
|
234
|
+
delete("/#{version}/documents/orders/valid_order_id") { status 204 }
|
235
|
+
delete("/#{version}/documents/orders/invalid_order_id") do
|
236
|
+
json_response 404, 'resource_not_found.json'
|
237
|
+
end
|
238
|
+
get("/#{version}/documents/orders/valid_order_id/sign_url/valid_signature_id") do
|
239
|
+
json_response 200, 'sign_url.json'
|
240
|
+
end
|
241
|
+
get("/#{version}/documents/orders/invalid_order_id/sign_url/valid_signature_id") do
|
242
|
+
json_response 400, 'invalid_order_id.json'
|
243
|
+
end
|
244
|
+
get("/#{version}/documents/orders/valid_order_id/sign_url/invalid_signature_id") do
|
245
|
+
json_response 404, 'invalid_signature_id.json'
|
246
|
+
end
|
247
|
+
|
248
|
+
# documents orders notifications
|
249
|
+
post("/#{version}/documents/orders/valid_id/notify") { status 204 }
|
250
|
+
post("/#{version}/documents/orders/invalid_id/notify") do
|
251
|
+
json_response 400, 'invalid_order_id.json'
|
252
|
+
end
|
253
|
+
|
254
|
+
# signed documents downloads
|
255
|
+
get("/#{version}/consumers/:consumer_id/documents/:signature_request_id") do
|
256
|
+
pdf_response 'signed_document.pdf'
|
257
|
+
end
|
258
|
+
|
259
|
+
# esign_templates
|
260
|
+
get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
|
261
|
+
|
192
262
|
# consumers
|
193
263
|
get("/#{version}/consumers") do
|
194
264
|
json_response 200, 'users.json'
|
@@ -224,14 +294,6 @@ class FakeApi < Sinatra::Base
|
|
224
294
|
end
|
225
295
|
post("/#{version}/logout") { status 204 }
|
226
296
|
|
227
|
-
# accounts
|
228
|
-
get("/#{version}/accounts/valid_id/statement/valid_id") do
|
229
|
-
json_response 200, 'fake_pdf_statement.json'
|
230
|
-
end
|
231
|
-
get("/#{version}/accounts/invalid_id/statement/valid_id") do
|
232
|
-
json_response 404, 'resource_not_found.json'
|
233
|
-
end
|
234
|
-
|
235
297
|
# operators
|
236
298
|
get("/#{version}/operators") { json_response 200, 'operator_list.json' }
|
237
299
|
get("/#{version}/operators/invalid_id") do
|
@@ -427,6 +489,10 @@ class FakeApi < Sinatra::Base
|
|
427
489
|
http_response :png, 200, file_name
|
428
490
|
end
|
429
491
|
|
492
|
+
def pdf_response(file_name)
|
493
|
+
http_response 'application/pdf', 200, file_name
|
494
|
+
end
|
495
|
+
|
430
496
|
def http_response(content_type, response_code, file_name)
|
431
497
|
content_type content_type
|
432
498
|
status response_code
|
@@ -0,0 +1,75 @@
|
|
1
|
+
{
|
2
|
+
"order_id": "572c0ae0-bdb8-4e68-a5fd-8ac15870f2fe",
|
3
|
+
"consumer_id": "fc136a18-af0c-4d36-4743-1babb89cbbd0",
|
4
|
+
"applicant": {
|
5
|
+
"role": "patient",
|
6
|
+
"email": "validemail@financialapps.com",
|
7
|
+
"first_name": "Documents",
|
8
|
+
"last_name": "Testing"
|
9
|
+
},
|
10
|
+
"reference_no": "REFNO87687687",
|
11
|
+
"esign_documents": [
|
12
|
+
{
|
13
|
+
"document_id": "",
|
14
|
+
"template_id": "f6e9c513486c6a9468209a91ec14c25258eed515",
|
15
|
+
"name": "BH Form"
|
16
|
+
}
|
17
|
+
],
|
18
|
+
"completed_documents": [],
|
19
|
+
"tag": "denied",
|
20
|
+
"status": 1,
|
21
|
+
"signature_requests": [
|
22
|
+
{
|
23
|
+
"signature_request_id": "b32f0073f7817f353199dcaab683d129a939e7be",
|
24
|
+
"test_mode": true,
|
25
|
+
"title": "Document for review",
|
26
|
+
"subject": "Document for review",
|
27
|
+
"message": "",
|
28
|
+
"created_at": 1588689298,
|
29
|
+
"is_complete": false,
|
30
|
+
"is_declined": false,
|
31
|
+
"has_error": false,
|
32
|
+
"signing_url": null,
|
33
|
+
"signing_redirect_url": null,
|
34
|
+
"details_url": "",
|
35
|
+
"files_url": "",
|
36
|
+
"cc_email_addresses": [],
|
37
|
+
"requester_email_address": "validemail@financialapps.com",
|
38
|
+
"custom_fields": [
|
39
|
+
{
|
40
|
+
"name": "PatientName",
|
41
|
+
"type": "text",
|
42
|
+
"value": "",
|
43
|
+
"required": true,
|
44
|
+
"editor": ""
|
45
|
+
}
|
46
|
+
],
|
47
|
+
"response_data": [],
|
48
|
+
"signatures": [
|
49
|
+
{
|
50
|
+
"signature_id": "00b2bbdc50d4d6a6486965a921cb81f8",
|
51
|
+
"signer_email_address": "validemail@financialapps.com",
|
52
|
+
"signer_name": "Documents Testing",
|
53
|
+
"signer_role": "patient",
|
54
|
+
"order": null,
|
55
|
+
"status_code": "awaiting_signature",
|
56
|
+
"signed_at": null,
|
57
|
+
"last_viewed_at": null,
|
58
|
+
"last_reminded_at": null,
|
59
|
+
"has_pin": false,
|
60
|
+
"reassigned_by": null,
|
61
|
+
"reassignment_reason": null,
|
62
|
+
"error": null
|
63
|
+
}
|
64
|
+
],
|
65
|
+
"metadata": {
|
66
|
+
"consumer_id": "fc136a18-af0c-4d36-4743-1babb89cbbd0",
|
67
|
+
"order_id": "572c0ae0-bdb8-4e68-a5fd-8ac15870f2fe",
|
68
|
+
"tenant_id": "4dd607b1-565f-4da4-722c-2e84c5c87f43"
|
69
|
+
}
|
70
|
+
}
|
71
|
+
],
|
72
|
+
"reset_pwd": true,
|
73
|
+
"date_created": "2020-05-05T14:34:58.435Z",
|
74
|
+
"date_modified": "2020-05-07T14:38:08.271Z"
|
75
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
{
|
2
|
+
"total_records": 1,
|
3
|
+
"page": 1,
|
4
|
+
"total_pages": 1,
|
5
|
+
"records": [
|
6
|
+
{
|
7
|
+
"order_id": "2f02be2c-0cbc-4980-bd8f-b2dee986c885",
|
8
|
+
"consumer_id": "6dadcf93-5305-4c4b-4136-465f9cd6d5e6",
|
9
|
+
"applicant": {
|
10
|
+
"role": "patient",
|
11
|
+
"email": "validemail@financialapps.com",
|
12
|
+
"first_name": "Documents",
|
13
|
+
"last_name": "Testing"
|
14
|
+
},
|
15
|
+
"reference_no": "REFNO87687687",
|
16
|
+
"esign_documents": [
|
17
|
+
{
|
18
|
+
"document_id": "",
|
19
|
+
"template_id": "f6e9c513486c6a9468209a91ec14c25258eed515",
|
20
|
+
"name": "BH Form"
|
21
|
+
}
|
22
|
+
],
|
23
|
+
"completed_documents": [],
|
24
|
+
"tag": "approved",
|
25
|
+
"status": 1,
|
26
|
+
"signature_requests": null,
|
27
|
+
"reset_pwd": false,
|
28
|
+
"date_created": "2020-05-05T14:12:21.428Z",
|
29
|
+
"date_modified": null
|
30
|
+
}
|
31
|
+
]
|
32
|
+
}
|
Binary file
|
Binary file
|
@@ -0,0 +1,36 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"_id": "5e4c44a5b778c00001a81277",
|
4
|
+
"consumer_id": "1f50bddc-4cbf-4e16-6782-a2295d695d4e",
|
5
|
+
"date_synced": "2020-02-18T20:10:13.469Z",
|
6
|
+
"document": {
|
7
|
+
"form_type": "schedule_d",
|
8
|
+
"id": 34790,
|
9
|
+
"net_long_term_gain_loss": 1275,
|
10
|
+
"net_short_term_gain_loss": 2,
|
11
|
+
"tax_period_ends_at": "2017-12-31"
|
12
|
+
},
|
13
|
+
"document_id": "5e4c44a5b778c00001a81277",
|
14
|
+
"record_id": "5e4c44a46c20ec0001e3a505",
|
15
|
+
"tax_period_ends_at": "2017-12-31",
|
16
|
+
"tenant_id": "4dd607b1-565f-4da4-722c-2e84c5c87f43",
|
17
|
+
"type": "schedule_d"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"_id": "5e4c44a5b778c00001a81278",
|
21
|
+
"consumer_id": "1f50bddc-4cbf-4e16-6782-a2295d695d4e",
|
22
|
+
"date_synced": "2020-02-18T20:10:13.469Z",
|
23
|
+
"document": {
|
24
|
+
"form_type": "schedule_d",
|
25
|
+
"id": 34793,
|
26
|
+
"net_long_term_gain_loss": 5816,
|
27
|
+
"net_short_term_gain_loss": 0,
|
28
|
+
"tax_period_ends_at": "2018-12-31"
|
29
|
+
},
|
30
|
+
"document_id": "5e4c44a5b778c00001a81278",
|
31
|
+
"record_id": "5e4c44a46c20ec0001e3a505",
|
32
|
+
"tax_period_ends_at": "2018-12-31",
|
33
|
+
"tenant_id": "4dd607b1-565f-4da4-722c-2e84c5c87f43",
|
34
|
+
"type": "schedule_d"
|
35
|
+
}
|
36
|
+
]
|