finapps 5.0.38 → 5.0.46

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8702c60512ab408154ba0a647fa5a453874e7bcd498eabaf51ae6f871d045a7
4
- data.tar.gz: bf2447e5c456b0b0c857bbf044ac59be2cc88b97e1cc7508550a85a8b8327c93
3
+ metadata.gz: 4501dd349460d436671d161a817432d9336cdb1722d2465baef3d65a7bb4d10f
4
+ data.tar.gz: cea911d0e0449e505aa4fd6229f0ca446fc45519a69b8955f22e8789a5b94132
5
5
  SHA512:
6
- metadata.gz: b8940de3d2bd5b0c61c86d32a78568538f44aab51dba0f967a3d47cb3e4804c377842c4984838a8b2ec3bb52ecc3b8ac248b18f8654b6f8dcd74ce42003bbca8
7
- data.tar.gz: 4ee4a515aa48474e52c5e485b7c31ad7d73541254ac294bc82d9f091cc1b69d94cf21bceb899d5ce98336dc13a7c9f1448e549c520ddddcb4df87fdc506cdb2a
6
+ metadata.gz: e4e89f43a67412901a05f0cd420973e7c87d2e14fb86191b966ca2381d2af0ee8de1df43a3db2b1a3b2b22df616eab186c49fde9f2373f156e9f8e5f3cbdfad7
7
+ data.tar.gz: bac2c749e5c60e123dfb02d5d767b1e8930ae9ef2178a3c9e1be6aff2fa55c596b12d9e64817c228839eb0c1b7aab1a9534ecabee90f1ab5ab667c0d87257910
@@ -1,9 +1,10 @@
1
- name: Main
1
+ name: Continuous Integration
2
2
 
3
3
  on: [push, pull_request]
4
4
 
5
5
  jobs:
6
6
  ci:
7
+ if: "!contains(github.event.head_commit.message, 'skip ci')"
7
8
  runs-on: ubuntu-latest
8
9
 
9
10
  strategy:
@@ -17,7 +18,7 @@ jobs:
17
18
  with:
18
19
  ruby-version: '2.6'
19
20
 
20
- - uses: actions/cache@v1
21
+ - uses: actions/cache@v2
21
22
  with:
22
23
  path: vendor/bundle
23
24
  key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
@@ -26,7 +27,7 @@ jobs:
26
27
 
27
28
  - name: Install gems
28
29
  run: |
29
- gem install bundler
30
+ gem install -N bundler
30
31
  bundle config path vendor/bundle
31
32
  bundle install --jobs 4 --retry 3
32
33
 
@@ -7,6 +7,7 @@ on:
7
7
 
8
8
  jobs:
9
9
  update_release_draft:
10
+ if: "!contains(github.event.head_commit.message, 'skip ci')"
10
11
  runs-on: ubuntu-latest
11
12
  steps:
12
13
  - uses: release-drafter/release-drafter@v5
@@ -0,0 +1,54 @@
1
+ name: Bump version and Release
2
+ on:
3
+ release:
4
+ types: [published]
5
+
6
+ jobs:
7
+ release:
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ fail-fast: true
11
+
12
+ steps:
13
+ - uses: actions/checkout@master
14
+ with:
15
+ persist-credentials: false
16
+ fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
17
+
18
+ - uses: actions/setup-ruby@v1
19
+ with:
20
+ ruby-version: '2.6'
21
+
22
+ - name: Get version from latest tag
23
+ id: get_version
24
+ uses: battila7/get-version-action@v2
25
+
26
+ - name: Bump version
27
+ run: |
28
+ gem install -N gem-release
29
+ git config --local user.email "action@github.com"
30
+ git config --local user.name "GitHub Action"
31
+ gem bump --skip-ci --version ${{ steps.get_version.outputs.version-without-v }}
32
+
33
+ - name: Push changes
34
+ uses: ad-m/github-push-action@master
35
+ with:
36
+ # GitHub Actions token does not support pushing to protected branches.
37
+ # github_token: ${{ secrets.GITHUB_TOKEN }}
38
+ #
39
+ # A manually populated`PERSONAL_ACCESS_TOKEN` environment variable
40
+ # with permissions to push to a protected branch must be used.
41
+ # not ideal - keep eyes open for a better solution
42
+ github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
43
+
44
+ - name: Release gem to rubygems.org
45
+ run: |
46
+ set +x
47
+ mkdir -p ~/.gem
48
+ cat << EOF > ~/.gem/credentials
49
+ ---
50
+ :rubygems_api_key: ${{ secrets.RUBYGEMS_API_KEY }}
51
+ EOF
52
+ chmod 0600 ~/.gem/credentials
53
+ set -x
54
+ gem release
data/README.md CHANGED
@@ -60,18 +60,20 @@ company_token = 'my-company-token'
60
60
  @client = FinApps::REST::Client.new company_identifier, company_token
61
61
  ```
62
62
 
63
- ## More Information
63
+ ### Release
64
64
 
65
- Please check the [FinApps wiki][wiki] for extended documentation.
65
+ For approved Pull Requests against the master branch, an aggregated release draft will be generated. This draft by default bumps the patch number of previous version.
66
+ Please refer to the [Release Drafter] action documentation for information on this process, specifically how to bump the major or minor numbers of the gem version.
66
67
 
68
+ As soon as this draft is converted into an actual release, an automated process also running on GitHub actions will be triggered to build the gem and release it to rubygems.org.
67
69
 
68
- [FinancialApps.com][financialapps]
69
70
 
71
+ [FinancialApps.com][financialapps]
70
72
 
71
73
  [bundler]: http://bundler.io
72
74
  [financialapps]: https://financialapps.com
73
- [wiki]: https://github.com/finapps/ruby-client/wiki
74
75
  [builder]: http://builder.rubyforge.org/
75
76
  [bundler]: http://bundler.io
76
77
  [rubygems]: http://rubygems.org
77
78
  [build_status]: http://teamciti.powerwallet.com/viewType.html?buildTypeId=FaRuby_BuildMaster&guest=1
79
+ [Release Drafter]: https://github.com/release-drafter/release-drafter
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_development_dependency 'bundler', '~> 2.0', '>= 2.0.2'
26
26
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0', '>= 1.0.9'
27
- spec.add_development_dependency 'gem-release', '~> 2.1', '>= 2.1.1'
28
27
  spec.add_development_dependency 'guard', '~> 2.16', '>= 2.16.1'
29
28
  spec.add_development_dependency 'guard-rspec', '~> 4.7', '>= 4.7.3'
30
29
  spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
@@ -17,7 +17,12 @@ module FinApps
17
17
 
18
18
  def show(id)
19
19
  not_blank(id, :order_id)
20
- super(id, "documents/orders/#{id}")
20
+
21
+ if matches_token_format?(id)
22
+ show_by_token id
23
+ else
24
+ show_by_id id
25
+ end
21
26
  end
22
27
 
23
28
  def create(params)
@@ -45,6 +50,20 @@ module FinApps
45
50
 
46
51
  private
47
52
 
53
+ def show_by_id(id)
54
+ path = "documents/orders/#{id}"
55
+ send_request path, :get
56
+ end
57
+
58
+ def show_by_token(jwt)
59
+ path = "documents/retrieve_order?token=#{jwt}"
60
+ send_request path, :get
61
+ end
62
+
63
+ def matches_token_format?(str)
64
+ str.match(/^.+\..+\..+$/)
65
+ end
66
+
48
67
  def build_filter(params)
49
68
  search_query(params[:searchTerm])
50
69
  .merge(consumer_query(params[:consumer]))
@@ -3,11 +3,11 @@
3
3
  module FinApps
4
4
  module REST
5
5
  class DocumentsOrdersNotifications < FinAppsCore::REST::Resources
6
- def create(id)
6
+ def create(id, params = [])
7
7
  not_blank(id, :id)
8
8
 
9
9
  path = "documents/orders/#{ERB::Util.url_encode(id)}/notify"
10
- super nil, path
10
+ super params, path
11
11
  end
12
12
  end
13
13
  end
@@ -18,6 +18,14 @@ module FinApps
18
18
  not_blank(doc_id, :doc_id)
19
19
  super(nil, "documents/orders/#{order_id}/#{doc_id}")
20
20
  end
21
+
22
+ def destroy_by_consumer(consumer_id, document_id)
23
+ not_blank(consumer_id, :consumer_id)
24
+ not_blank(document_id, :document_id)
25
+
26
+ path = "consumers/#{consumer_id}/documents/#{document_id}"
27
+ send_request path, :delete
28
+ end
21
29
  end
22
30
  end
23
31
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FinApps
4
- VERSION = '5.0.38'
4
+ VERSION = '5.0.46'
5
5
  end
@@ -17,7 +17,7 @@ RSpec.describe FinApps::REST::DocumentsOrdersNotifications do
17
17
  end
18
18
 
19
19
  context 'when invalid id is provided' do
20
- let(:create) { subject.create(:invalid_id) }
20
+ let(:create) { subject.create(:invalid_id, ['1234']) }
21
21
  let(:results) { create[RESULTS] }
22
22
  let(:error_messages) { create[ERROR_MESSAGES] }
23
23
 
@@ -30,7 +30,7 @@ RSpec.describe FinApps::REST::DocumentsOrdersNotifications do
30
30
  end
31
31
 
32
32
  context 'with valid id' do
33
- let(:create) { subject.create(:valid_id) }
33
+ let(:create) { subject.create(:valid_id, ['1234']) }
34
34
  let(:results) { create[RESULTS] }
35
35
  let(:error_messages) { create[ERROR_MESSAGES] }
36
36
 
@@ -134,14 +134,28 @@ RSpec.describe FinApps::REST::DocumentsOrders do
134
134
  let(:error_messages) { show[1] }
135
135
 
136
136
  context 'with valid id' do
137
- let(:id) { :valid_order_id }
137
+ context 'when id is an identifier' do
138
+ let(:id) { :valid_order_id }
138
139
 
139
- it_behaves_like 'an API request'
140
- it_behaves_like 'a successful request'
141
- it('results is a Hash') { expect(results).to be_a(Hash) }
140
+ it_behaves_like 'an API request'
141
+ it_behaves_like 'a successful request'
142
+ it('has an order_id node in the response') do
143
+ expect(results).to have_key(:order_id)
144
+ end
145
+ end
142
146
 
143
- it('performs a get and returns the response') do
144
- expect(results).to have_key(:order_id)
147
+ context 'when id is a token' do
148
+ let(:id) { '0123456abc.0123456abc.0123456abc' }
149
+
150
+ it_behaves_like 'an API request'
151
+ it_behaves_like 'a successful request'
152
+ it('has an order node in the response') do
153
+ expect(results).to have_key(:order)
154
+ end
155
+
156
+ it('has a consumer node in the response') do
157
+ expect(results).to have_key(:consumer)
158
+ end
145
159
  end
146
160
  end
147
161
 
@@ -101,4 +101,57 @@ RSpec.describe FinApps::REST::DocumentsUploads do
101
101
  end
102
102
  end
103
103
  end
104
+
105
+ describe '#destroy_by_consumer' do
106
+ subject(:destroy_by_consumer) do
107
+ described_class.new(client).destroy_by_consumer(consumer_id, document_id)
108
+ end
109
+
110
+ let(:results) { destroy_by_consumer[0] }
111
+ let(:error_messages) { destroy_by_consumer[1] }
112
+
113
+ context 'with valid params' do
114
+ let(:consumer_id) { :valid_consumer_id }
115
+ let(:document_id) { :valid_document_id }
116
+
117
+ it_behaves_like 'an API request'
118
+ it_behaves_like 'a successful request'
119
+ it('results is nil') { expect(results).to be_nil }
120
+ end
121
+
122
+ context 'with invalid consumer_id' do
123
+ let(:consumer_id) { :invalid_consumer_id }
124
+ let(:document_id) { :valid_document_id }
125
+
126
+ it_behaves_like 'an API request'
127
+ it('results is nil') { expect(results).to be_nil }
128
+
129
+ it('error messages array is populated') do
130
+ expect(error_messages.first.downcase).to eq('resource not found')
131
+ end
132
+ end
133
+
134
+ context 'with invalid document id' do
135
+ let(:consumer_id) { :valid_consumer_id }
136
+ let(:document_id) { :invalid_document_id }
137
+
138
+ it_behaves_like 'an API request'
139
+ it('results is nil') { expect(results).to be_nil }
140
+
141
+ it('error messages array is populated') do
142
+ expect(error_messages.first.downcase).to eq('resource not found')
143
+ end
144
+ end
145
+
146
+ context 'with missing id' do
147
+ let(:consumer_id) { nil }
148
+ let(:document_id) { nil }
149
+
150
+ it do
151
+ expect { destroy_by_consumer }.to raise_error(
152
+ FinAppsCore::MissingArgumentsError
153
+ )
154
+ end
155
+ end
156
+ end
104
157
  end
@@ -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
@@ -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,518 @@
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
- # 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 }
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
- # verix_metadata
19
- get("/#{version}/v/metadata") do
20
- json_response 200, 'verix/metadata.json'
21
- end
19
+ # verix_metadata
20
+ get("/#{version}/v/metadata") do
21
+ json_response 200, 'verix/metadata.json'
22
+ end
22
23
 
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
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
- # verix_pdf_documents
32
- get("/#{version}/v/record/:record_id/file/:provider_id") do
33
- pdf_response 'verix/document/document.pdf'
34
- end
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
- # 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
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
- # 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'
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
- # 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'
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
- 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'
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
- 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
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
- 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
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
- end
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
- # plaid_institution_logos
114
- get("/#{version}/p/institution/logo/:inst_id") do
115
- png_response 'plaid/institution/logo.png'
116
- end
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
- # version
119
- get("/#{version}/version") { 'Version => 2.1.29-.20161208.172810' }
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
- # 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']
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
- 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
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
- 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
163
+ get("/#{version}/orders/valid_id/status") do
164
+ json_response 200, 'order_status.json'
193
165
  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'
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
- # 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'
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
- 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 }
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
- 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
217
+ get("/#{version}/documents/retrieve_order") do
218
+ json_response 200, 'documents/retrieve_order.json'
219
+ end
220
+ get("/#{version}/documents/orders/invalid_order_id") do
221
+ json_response 404, 'resource_not_found.json'
222
+ end
223
+ post("/#{version}/documents/orders") do
224
+ request.body.rewind
225
+ request_payload = JSON.parse request.body.read
226
+ if %w[applicant esign_documents tag].all? {|s| request_payload.key? s }
227
+ json_response 200, 'documents_order.json'
228
+ else
229
+ json_response 400, 'invalid_request_body.json'
230
+ end
231
+ end
232
+ put("/#{version}/documents/orders/valid_order_id") do
233
+ request.body.rewind
234
+ request_payload = JSON.parse request.body.read
235
+ if request_payload['tag'] == 'invalid'
236
+ json_response 400, 'invalid_request_body.json'
237
+ else
238
+ status 204
239
+ end
240
+ end
241
+ put("/#{version}/documents/orders/invalid_order_id") do
242
+ json_response 400, 'invalid_order_id.json'
243
+ end
244
+ delete("/#{version}/documents/orders/valid_order_id") { status 204 }
245
+ delete("/#{version}/documents/orders/invalid_order_id") do
246
+ json_response 404, 'resource_not_found.json'
247
+ end
248
+ get("/#{version}/documents/orders/valid_order_id/sign_url/valid_signature_id") do
249
+ json_response 200, 'sign_url.json'
250
+ end
251
+ get("/#{version}/documents/orders/invalid_order_id/sign_url/valid_signature_id") do
252
+ json_response 400, 'invalid_order_id.json'
253
+ end
254
+ get("/#{version}/documents/orders/valid_order_id/sign_url/invalid_signature_id") do
255
+ json_response 404, 'invalid_signature_id.json'
235
256
  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
257
 
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
258
+ # documents_uploads
259
+ include DocumentsUploadsRoutes
265
260
 
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
261
+ # documents orders notifications
262
+ post("/#{version}/documents/orders/valid_id/notify") { status 204 }
263
+ post("/#{version}/documents/orders/invalid_id/notify") do
264
+ json_response 400, 'invalid_order_id.json'
265
+ end
271
266
 
272
- # signed documents downloads
273
- get("/#{version}/consumers/:consumer_id/documents/:signature_request_id") do
274
- pdf_response 'signed_document.pdf'
275
- end
267
+ # signed documents downloads
268
+ get("/#{version}/consumers/:consumer_id/documents/:signature_request_id") do
269
+ pdf_response 'signed_document.pdf'
270
+ end
276
271
 
277
- # esign_templates
278
- get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
272
+ # esign_templates
273
+ get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
279
274
 
280
- # document_upload_types
281
- get("/#{version}/documents/upload_types") { json_response 200, 'upload_types.json' }
275
+ # document_upload_types
276
+ get("/#{version}/documents/upload_types") { json_response 200, 'upload_types.json' }
282
277
 
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'
278
+ # consumers
279
+ get("/#{version}/consumers") do
280
+ json_response 200, 'users.json'
300
281
  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 }
282
+ get("/#{version}/consumers/valid_public_id") do
283
+ json_response 200, 'user.json'
284
+ end
285
+ get("/#{version}/consumers/invalid_public_id") do
286
+ json_response 404, 'resource_not_found.json'
287
+ end
288
+ post("/#{version}/consumers") do
289
+ request.body.rewind
290
+ request_payload = JSON.parse request.body.read
291
+ if request_payload['password']
292
+ json_response 201, 'user.json'
293
+ else
294
+ json_response 400, 'invalid_request_body.json'
295
+ end
296
+ end
297
+ put("/#{version}/consumers/valid_public_id") { status 204 }
298
+ put("/#{version}/consumers/invalid_public_id") do
299
+ json_response 400, 'invalid_user_id.json'
300
+ end
301
+ put("/#{version}/consumers/valid_public_id/password") do
302
+ json_response 200, 'user.json'
303
+ end
304
+ put("/#{version}/consumers/invalid_public_id/password") do
305
+ json_response 404, 'resource_not_found.json'
306
+ end
307
+ delete("/#{version}/consumers/valid_public_id") { status 204 }
308
+ delete("/#{version}/consumers/invalid_public_id") do
309
+ json_response 404, 'resource_not_found.json'
310
+ end
311
+ post("/#{version}/logout") { status 204 }
317
312
 
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'
313
+ # operators
314
+ get("/#{version}/operators") { json_response 200, 'operator_list.json' }
315
+ get("/#{version}/operators/invalid_id") do
316
+ json_response 404, 'resource_not_found.json'
317
+ end
318
+ get("/#{version}/operators/valid_id") { json_response 200, 'operator.json' }
319
+ delete("/#{version}/operators/invalid_id") do
320
+ json_response 404, 'resource_not_found.json'
321
+ end
322
+ delete("/#{version}/operators/valid_id") { status 204 }
323
+ post("/#{version}/operators/password/change") do
346
324
  json_response 200, 'operator.json'
347
- else
348
- json_response 400, 'invalid_request_body.json'
349
325
  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'
326
+ put("/#{version}/operators/invalid_id") do
327
+ json_response 404, 'resource_not_found.json'
328
+ end
329
+ put("/#{version}/operators/valid_id") { json_response 200, 'operator.json' }
330
+ put("/#{version}/operators/valid_id/assign") { status 204 }
331
+ put("/#{version}/operators/invalid_id/assign") do
332
+ json_response 404, 'resource_not_found.json'
333
+ end
334
+ post("/#{version}/operators/password/forgot") do
335
+ json_response 200, 'operator_forgot_password.json'
336
+ end
337
+ post("/#{version}/operators/password/reset") do
338
+ request.body.rewind
339
+ request_payload = JSON.parse request.body.read
340
+ if request_payload['params'] == 'valid'
341
+ json_response 200, 'operator.json'
342
+ else
343
+ json_response 400, 'invalid_request_body.json'
344
+ end
345
+ end
346
+ post("/#{version}/operators") do
347
+ request.body.rewind
348
+ request_payload = JSON.parse request.body.read
349
+ if request_payload['params'] == 'valid'
350
+ json_response 201, 'operator.json'
351
+ else
352
+ json_response 400, 'invalid_request_body.json'
353
+ end
358
354
  end
359
- end
360
355
 
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')
356
+ # session
357
+ post("/#{version}/login") do
358
+ request.body.rewind
359
+ request_payload = JSON.parse request.body.read
360
+ if request_payload['password'] == 'valid_password'
361
+ json_response(200, 'user.json')
362
+ else
363
+ json_response(401, 'unauthorized.json')
364
+ end
369
365
  end
370
- end
371
- post("/#{version}/operators/login") { json_response 200, 'operator.json' }
366
+ post("/#{version}/operators/login") { json_response 200, 'operator.json' }
372
367
 
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')
368
+ # password resets
369
+ post("/#{version}/tenant/valid_user_id/password") do
370
+ json_response 200, 'password_reset_token.json'
371
+ end
372
+ post("/#{version}/tenant/invalid_user_id/password") do
373
+ json_response 404, 'resource_not_found.json'
374
+ end
375
+ put("/#{version}/tenant/valid_user_id/password") do
376
+ request.body.rewind
377
+ request_payload = JSON.parse request.body.read
378
+ if request_payload['token'] == 'valid_token'
379
+ json_response(200, 'user.json')
380
+ else
381
+ json_response(400, 'invalid_request_body.json')
382
+ end
383
+ end
384
+ put("/#{version}/tenant/invalid_user_id/password") do
385
+ json_response 404, 'resource_not_found.json'
387
386
  end
388
- end
389
- put("/#{version}/tenant/invalid_user_id/password") do
390
- json_response 404, 'resource_not_found.json'
391
- end
392
387
 
393
- # products
394
- get("/#{version}/products") { json_response 200, 'products.json' }
388
+ # products
389
+ get("/#{version}/products") { json_response 200, 'products.json' }
395
390
 
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')
391
+ # portfolios
392
+ get("/#{version}/portfolios") { json_response 200, 'portfolios.json' }
393
+ get("/#{version}/portfolios/valid_id") { json_response 200, 'portfolio.json' }
394
+ get("/#{version}/portfolios/invalid_id") do
395
+ json_response 404, 'resource_not_found.json'
396
+ end
397
+ post("/#{version}/portfolios") do
398
+ request.body.rewind
399
+ request_payload = JSON.parse request.body.read
400
+ if request_payload['product'] == 'invalid'
401
+ json_response(400, 'invalid_request_body.json')
402
+ else
403
+ json_response(200, 'portfolio.json')
404
+ end
405
+ end
406
+ put("/#{version}/portfolios/valid_id") { json_response 200, 'portfolio.json' }
407
+ put("/#{version}/portfolios/invalid_id") do
408
+ json_response 404, 'resource_not_found.json'
409
+ end
410
+ delete("/#{version}/portfolios/valid_id") { status 204 }
411
+ delete("/#{version}/portfolios/invalid_id") do
412
+ json_response 404, 'resource_not_found.json'
409
413
  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
414
 
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
415
+ # alert definitions
416
+ get("/#{version}/portfolio/alerts/definitions") do
417
+ json_response 200, 'alert_definitions.json'
418
+ end
419
+ get("/#{version}/portfolio/alerts/definitions/valid_id") do
420
+ json_response 200, 'alert_definition.json'
421
+ end
422
+ get("/#{version}/portfolio/alerts/definitions/invalid_id") do
423
+ json_response 404, 'resource_not_found.json'
424
+ end
430
425
 
431
- # alert occurrences
432
- get("/#{version}/portfolio/alerts/occurrences") do
433
- json_response 200, 'alert_occurrences.json'
434
- end
426
+ # alert occurrences
427
+ get("/#{version}/portfolio/alerts/occurrences") do
428
+ json_response 200, 'alert_occurrences.json'
429
+ end
435
430
 
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
431
+ # portfolios alerts
432
+ get("/#{version}/portfolios/valid_id/alerts") do
433
+ json_response 200, 'portfolios_alerts.json'
434
+ end
435
+ get("/#{version}/portfolios/invalid_id/alerts") do
436
+ json_response 404, 'resource_not_found.json'
437
+ end
438
+ put("/#{version}/portfolios/valid_id/alerts/valid_id") { status 204 }
439
+ put("/#{version}/portfolios/invalid_id/alerts/invalid_id") do
440
+ json_response 404, 'resource_not_found.json'
441
+ end
442
+ delete("/#{version}/portfolios/valid_id/alerts/valid_id") { status 204 }
443
+ delete("/#{version}/portfolios/invalid_id/alerts/invalid_id") do
444
+ json_response 404, 'resource_not_found.json'
445
+ end
451
446
 
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
447
+ # portfolios consumers
448
+ get("/#{version}/portfolios/valid_id/consumers") do
449
+ json_response 200, 'portfolios_consumers.json'
450
+ end
451
+ get("/#{version}/portfolios/invalid_id/consumers") do
452
+ json_response 404, 'resource_not_found.json'
453
+ end
454
+ post("/#{version}/portfolios/valid_id/consumers") { status 204 }
455
+ post("/#{version}/portfolios/invalid_id/consumers") do
456
+ json_response 400, 'multiple_consumer_subscribe_error.json'
457
+ end
458
+ post("/#{version}/portfolios/valid_id/consumers/valid_id") { status 204 }
459
+ post("/#{version}/portfolios/invalid_id/consumers/invalid_id") do
460
+ json_response 400, 'single_consumer_subscribe_error.json'
461
+ end
462
+ delete("/#{version}/portfolios/valid_id/consumers/valid_id") { status 204 }
463
+ delete("/#{version}/portfolios/invalid_id/consumers/invalid_id") do
464
+ json_response 404, 'resource_not_found.json'
465
+ end
471
466
 
472
- # portfolios available consumers
473
- get("/#{version}/portfolios/:id/consumers/available") do
474
- json_response 200, 'portfolios_available_consumers.json'
475
- end
467
+ # portfolios available consumers
468
+ get("/#{version}/portfolios/:id/consumers/available") do
469
+ json_response 200, 'portfolios_available_consumers.json'
470
+ end
476
471
 
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
472
+ # consumers portfolios
473
+ get("/#{version}/consumers/valid_id/portfolios") do
474
+ json_response 200, 'portfolios.json'
475
+ end
476
+ get("/#{version}/consumers/invalid_id/portfolios") do
477
+ json_response 404, 'resource_not_found.json'
478
+ end
484
479
 
485
- # portfolio reports
486
- get("/#{version}/portfolio/reports") do
487
- json_response 200, 'portfolio_reports.json'
488
- end
480
+ # portfolio reports
481
+ get("/#{version}/portfolio/reports") do
482
+ json_response 200, 'portfolio_reports.json'
483
+ end
489
484
 
490
- # relevance
491
- get("/#{version}/relevance/ruleset/names") do
492
- json_response 200, 'relevance_ruleset_names.json'
493
- end
485
+ # relevance
486
+ get("/#{version}/relevance/ruleset/names") do
487
+ json_response 200, 'relevance_ruleset_names.json'
488
+ end
494
489
 
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 }
490
+ # errors
491
+ get("/#{version}/client_error") { json_response 400, 'error.json' }
492
+ get("/#{version}/server_error") { status 500 }
493
+ get("/#{version}/proxy_error") { status 407 }
499
494
 
500
- # timeout
501
- get("/#{version}/orders/timeout") { status 419 }
495
+ # timeout
496
+ get("/#{version}/orders/timeout") { status 419 }
502
497
 
503
- private
498
+ private
504
499
 
505
- def json_response(response_code, file_name)
506
- http_response :json, response_code, file_name
507
- end
500
+ def json_response(response_code, file_name)
501
+ http_response :json, response_code, file_name
502
+ end
508
503
 
509
- def png_response(file_name)
510
- http_response :png, 200, file_name
511
- end
504
+ def png_response(file_name)
505
+ http_response :png, 200, file_name
506
+ end
512
507
 
513
- def pdf_response(file_name)
514
- http_response 'application/pdf', 200, file_name
515
- end
508
+ def pdf_response(file_name)
509
+ http_response 'application/pdf', 200, file_name
510
+ end
516
511
 
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
512
+ def http_response(content_type, response_code, file_name)
513
+ content_type content_type
514
+ status response_code
515
+ File.open("#{File.dirname(__FILE__)}/fixtures/#{file_name}").read
516
+ end
521
517
  end
522
518
  end