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