finapps 5.0.36 → 5.0.45

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: d502756b01180a324db1ab9e232bd71810d1e9f950bcaf9f47df667c3bd2d7ed
4
- data.tar.gz: b1a9723d9944b250ff1d57917e66c903647929b3161ecb718dde62b9804f7d36
3
+ metadata.gz: c79a7e77e6c6496121b61c0b2d37324ec7ca7aa9ff7f8c4153ebf4cb5a4d764b
4
+ data.tar.gz: 2016bac07309e1817c0236ddb5b69f5cfb0577ff6c3af27d28ea195b9a56356e
5
5
  SHA512:
6
- metadata.gz: 643b7f796405c8d6d06f2f414098b23f4295627702c03d119599827f8977866c8ffc8f62ab7b60330ae679ef35be0247440d16f938686c75f1426be3fec3a068
7
- data.tar.gz: cb58c991c8b188221f9900d057e03d2394eaa7baaf712edf4f1f029a722436afe2e424e4562176778e00d294d9ebaac609ab7d578d57110162889e5b56a9ed2a
6
+ metadata.gz: ce58b007e2b3122c2bb4b6ac8e1fd435da08c69e81de23e566488ca52ac4d626d57a814c14dcec667a92d413f93cf746380aeb487ea3b31b7c9fcea048adaa33
7
+ data.tar.gz: 8642f81a12d89676bb95458a20d0eaa4ac1cc1be30d6384e2ba7a4a3960472f849aca73927bf11ac45045617904ec3a2cfafec48a7c3f34316e2df603b8447e1
@@ -0,0 +1,49 @@
1
+ name-template: 'version $RESOLVED_VERSION'
2
+ tag-template: 'v$RESOLVED_VERSION'
3
+ categories:
4
+ - title: 'Added'
5
+ labels: 'enhancement'
6
+ - title: 'Changed'
7
+ labels: 'change'
8
+ - title: 'Deprecated'
9
+ labels: 'deprecated'
10
+ - title: 'Removed'
11
+ labels: 'removed'
12
+ - title: 'Fixed'
13
+ labels: 'bug'
14
+ - title: 'Security'
15
+ label: 'dependencies'
16
+ - title: 'Documentation updates'
17
+ label: 'documentation'
18
+ - title: 'Maintenance'
19
+ labels: 'internal'
20
+
21
+ change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
22
+
23
+ version-resolver:
24
+ major:
25
+ labels:
26
+ - 'major'
27
+ minor:
28
+ labels:
29
+ - 'minor'
30
+ patch:
31
+ labels:
32
+ - 'patch'
33
+ default: patch
34
+
35
+ exclude-labels:
36
+ - reverted
37
+ - no-changelog
38
+ - skip-changelog
39
+ - invalid
40
+
41
+ template: |
42
+ ## [$RESOLVED_VERSION](https://github.com/finapps/ruby-client/compare/$PREVIOUS_TAG...$RESOLVED_VERSION)
43
+ $CHANGES
44
+
45
+ replacers:
46
+ - search: '/CVE-(\d{4})-(\d+)/g'
47
+ replace: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2'
48
+ - search: '@dependabot-preview'
49
+ replace: '@dependabot'
@@ -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
 
@@ -0,0 +1,15 @@
1
+ name: Release Drafter
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+
8
+ jobs:
9
+ update_release_draft:
10
+ if: "!contains(github.event.head_commit.message, 'skip ci')"
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: release-drafter/release-drafter@v5
14
+ env:
15
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -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
@@ -0,0 +1,14 @@
1
+ name: "Require PR labels"
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, labeled, unlabeled, synchronize]
6
+ jobs:
7
+ label:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: mheap/github-action-required-labels@v1
11
+ with:
12
+ mode: exactly
13
+ count: 1
14
+ labels: "bug, change, enhancement"
@@ -141,22 +141,8 @@ Style/OneLineConditional:
141
141
  Description: Favor the ternary operator(?:) over if/then/else/end constructs.
142
142
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
143
143
  Enabled: false
144
- Style/ExponentialNotation:
145
- Enabled: true
146
- Style/HashEachMethods:
147
- Enabled: true
148
- Style/HashTransformKeys:
149
- Enabled: true
150
- Style/HashTransformValues:
151
- Enabled: true
152
- Style/RedundantFetchBlock:
153
- Enabled: true
154
- Style/SlicingWithRange:
155
- Enabled: true
156
144
  Style/OptionalBooleanParameter:
157
145
  Enabled: false
158
- Style/StringConcatenation:
159
- Enabled: false
160
146
 
161
147
  RSpec/NestedGroups:
162
148
  Max: 5
@@ -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'
@@ -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.36'
4
+ VERSION = '5.0.45'
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
 
@@ -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,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
- # 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/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
- # 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
255
+ # documents_uploads
256
+ include DocumentsUploadsRoutes
265
257
 
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
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
271
263
 
272
- # signed documents downloads
273
- get("/#{version}/consumers/:consumer_id/documents/:signature_request_id") do
274
- pdf_response 'signed_document.pdf'
275
- end
264
+ # signed documents downloads
265
+ get("/#{version}/consumers/:consumer_id/documents/:signature_request_id") do
266
+ pdf_response 'signed_document.pdf'
267
+ end
276
268
 
277
- # esign_templates
278
- get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
269
+ # esign_templates
270
+ get("/#{version}/esign_templates") { json_response 200, 'esign_templates.json' }
279
271
 
280
- # document_upload_types
281
- get("/#{version}/documents/upload_types") { json_response 200, 'upload_types.json' }
272
+ # document_upload_types
273
+ get("/#{version}/documents/upload_types") { json_response 200, 'upload_types.json' }
282
274
 
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'
275
+ # consumers
276
+ get("/#{version}/consumers") do
277
+ json_response 200, 'users.json'
300
278
  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 }
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 }
317
309
 
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'
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
346
321
  json_response 200, 'operator.json'
347
- else
348
- json_response 400, 'invalid_request_body.json'
349
322
  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'
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
358
351
  end
359
- end
360
352
 
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')
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
369
362
  end
370
- end
371
- post("/#{version}/operators/login") { json_response 200, 'operator.json' }
363
+ post("/#{version}/operators/login") { json_response 200, 'operator.json' }
372
364
 
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')
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'
387
383
  end
388
- end
389
- put("/#{version}/tenant/invalid_user_id/password") do
390
- json_response 404, 'resource_not_found.json'
391
- end
392
384
 
393
- # products
394
- get("/#{version}/products") { json_response 200, 'products.json' }
385
+ # products
386
+ get("/#{version}/products") { json_response 200, 'products.json' }
395
387
 
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')
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'
409
410
  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
411
 
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
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
430
422
 
431
- # alert occurrences
432
- get("/#{version}/portfolio/alerts/occurrences") do
433
- json_response 200, 'alert_occurrences.json'
434
- end
423
+ # alert occurrences
424
+ get("/#{version}/portfolio/alerts/occurrences") do
425
+ json_response 200, 'alert_occurrences.json'
426
+ end
435
427
 
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
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
451
443
 
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
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
471
463
 
472
- # portfolios available consumers
473
- get("/#{version}/portfolios/:id/consumers/available") do
474
- json_response 200, 'portfolios_available_consumers.json'
475
- end
464
+ # portfolios available consumers
465
+ get("/#{version}/portfolios/:id/consumers/available") do
466
+ json_response 200, 'portfolios_available_consumers.json'
467
+ end
476
468
 
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
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
484
476
 
485
- # portfolio reports
486
- get("/#{version}/portfolio/reports") do
487
- json_response 200, 'portfolio_reports.json'
488
- end
477
+ # portfolio reports
478
+ get("/#{version}/portfolio/reports") do
479
+ json_response 200, 'portfolio_reports.json'
480
+ end
489
481
 
490
- # relevance
491
- get("/#{version}/relevance/ruleset/names") do
492
- json_response 200, 'relevance_ruleset_names.json'
493
- end
482
+ # relevance
483
+ get("/#{version}/relevance/ruleset/names") do
484
+ json_response 200, 'relevance_ruleset_names.json'
485
+ end
494
486
 
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 }
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 }
499
491
 
500
- # timeout
501
- get("/#{version}/orders/timeout") { status 419 }
492
+ # timeout
493
+ get("/#{version}/orders/timeout") { status 419 }
502
494
 
503
- private
495
+ private
504
496
 
505
- def json_response(response_code, file_name)
506
- http_response :json, response_code, file_name
507
- end
497
+ def json_response(response_code, file_name)
498
+ http_response :json, response_code, file_name
499
+ end
508
500
 
509
- def png_response(file_name)
510
- http_response :png, 200, file_name
511
- end
501
+ def png_response(file_name)
502
+ http_response :png, 200, file_name
503
+ end
512
504
 
513
- def pdf_response(file_name)
514
- http_response 'application/pdf', 200, file_name
515
- end
505
+ def pdf_response(file_name)
506
+ http_response 'application/pdf', 200, file_name
507
+ end
516
508
 
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, 'rb').read
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
521
514
  end
522
515
  end