finapps 5.0.30 → 5.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yaml +37 -0
  3. data/.rubocop.yml +134 -61
  4. data/.rubocop_todo.yml +29 -0
  5. data/.tmuxinator.yml +1 -0
  6. data/.travis.yml +3 -1
  7. data/README.md +1 -0
  8. data/RELEASES.md +29 -0
  9. data/finapps.gemspec +4 -4
  10. data/lib/finapps/rest/alert_definitions.rb +1 -1
  11. data/lib/finapps/rest/alert_occurrences.rb +1 -1
  12. data/lib/finapps/rest/client.rb +6 -5
  13. data/lib/finapps/rest/consumers.rb +22 -6
  14. data/lib/finapps/rest/consumers_portfolios.rb +1 -1
  15. data/lib/finapps/rest/documents_orders.rb +43 -26
  16. data/lib/finapps/rest/operators.rb +5 -5
  17. data/lib/finapps/rest/operators_password_resets.rb +1 -1
  18. data/lib/finapps/rest/order_assignments.rb +1 -1
  19. data/lib/finapps/rest/order_reports.rb +1 -1
  20. data/lib/finapps/rest/orders.rb +33 -22
  21. data/lib/finapps/rest/plaid/plaid_consumer_institutions.rb +1 -1
  22. data/lib/finapps/rest/portfolio_reports.rb +1 -1
  23. data/lib/finapps/rest/portfolios.rb +1 -1
  24. data/lib/finapps/rest/portfolios_available_consumers.rb +1 -1
  25. data/lib/finapps/rest/portfolios_consumers.rb +1 -1
  26. data/lib/finapps/rest/sessions.rb +11 -9
  27. data/lib/finapps/rest/signed_documents_downloads.rb +3 -1
  28. data/lib/finapps/utils/query_builder.rb +13 -4
  29. data/lib/finapps/version.rb +1 -1
  30. data/spec/rest/alert_definitions_spec.rb +10 -6
  31. data/spec/rest/alert_occurrences_spec.rb +6 -1
  32. data/spec/rest/api_request.rb +1 -0
  33. data/spec/rest/client_spec.rb +33 -41
  34. data/spec/rest/consumers_portfolios_spec.rb +7 -2
  35. data/spec/rest/consumers_spec.rb +240 -192
  36. data/spec/rest/documents_orders_notifications_spec.rb +4 -2
  37. data/spec/rest/documents_orders_spec.rb +94 -17
  38. data/spec/rest/esign_templates_spec.rb +2 -1
  39. data/spec/rest/operators_password_resets_spec.rb +50 -52
  40. data/spec/rest/operators_spec.rb +181 -172
  41. data/spec/rest/order_assignments_spec.rb +6 -1
  42. data/spec/rest/order_notifications_spec.rb +4 -2
  43. data/spec/rest/order_refreshes_spec.rb +8 -5
  44. data/spec/rest/order_reports_spec.rb +21 -15
  45. data/spec/rest/order_statuses_spec.rb +14 -10
  46. data/spec/rest/order_tokens_spec.rb +37 -30
  47. data/spec/rest/orders_spec.rb +121 -73
  48. data/spec/rest/password_resets_spec.rb +46 -36
  49. data/spec/rest/plaid/plaid_account_permissions_spec.rb +5 -4
  50. data/spec/rest/plaid/plaid_accounts_spec.rb +9 -4
  51. data/spec/rest/plaid/plaid_consumer_institutions_spec.rb +11 -11
  52. data/spec/rest/plaid/plaid_institution_logos_spec.rb +1 -1
  53. data/spec/rest/plaid/plaid_webhooks_spec.rb +3 -1
  54. data/spec/rest/portfolio_reports_spec.rb +7 -2
  55. data/spec/rest/portfolios_alerts_spec.rb +9 -4
  56. data/spec/rest/portfolios_available_consumers_spec.rb +7 -2
  57. data/spec/rest/portfolios_consumers_spec.rb +15 -4
  58. data/spec/rest/portfolios_spec.rb +20 -17
  59. data/spec/rest/products_spec.rb +17 -14
  60. data/spec/rest/sessions_spec.rb +63 -58
  61. data/spec/rest/signed_documents_downloads_spec.rb +10 -6
  62. data/spec/rest/tenant_app_settings_spec.rb +9 -3
  63. data/spec/rest/tenant_settings_spec.rb +9 -3
  64. data/spec/rest/verix/verix_documents_spec.rb +15 -22
  65. data/spec/rest/verix/verix_metadata_spec.rb +1 -1
  66. data/spec/rest/verix/verix_pdf_documents_spec.rb +14 -19
  67. data/spec/rest/verix/verix_records_spec.rb +31 -10
  68. data/spec/rest/version_spec.rb +6 -4
  69. data/spec/spec_helper.rb +2 -2
  70. data/spec/support/fake_api.rb +9 -3
  71. data/spec/support/fixtures/documents_orders_none.json +6 -0
  72. data/spec/utils/query_builder_spec.rb +40 -14
  73. metadata +20 -17
@@ -2,241 +2,250 @@
2
2
 
3
3
  require 'spec_helpers/client'
4
4
 
5
- RSpec.describe FinApps::REST::Operators,
6
- 'initialized with valid FinApps::Client object' do
7
- include SpecHelpers::Client
8
- subject(:operators) { FinApps::REST::Operators.new(client) }
9
-
10
- describe '#list' do
11
- let(:list) { subject.list(params) }
12
- let(:results) { list[0] }
13
- let(:error_messages) { list[1] }
14
-
15
- context 'when missing params' do
16
- let(:params) { nil }
17
- it { expect { list }.not_to raise_error }
18
- it('performs a get and returns the response') do
19
- expect(results).to have_key(:records)
20
- end
21
- it('returns an array of records') do
22
- expect(results[:records]).to be_a(Array)
23
- end
24
- it('returns no error messages') { expect(error_messages).to be_empty }
25
- end
5
+ RSpec.describe FinApps::REST::Operators do
6
+ context 'when initialized with valid FinApps::Client object' do
7
+ include SpecHelpers::Client
8
+ subject(:operators) { described_class.new(client) }
26
9
 
27
- context 'when invalid params are provided' do
28
- let(:params) { ['invalid array'] }
10
+ describe '#list' do
11
+ let(:list) { subject.list(params) }
12
+ let(:results) { list[0] }
13
+ let(:error_messages) { list[1] }
29
14
 
30
- it { expect { list }.to raise_error(FinAppsCore::InvalidArgumentsError) }
31
- end
15
+ context 'when missing params' do
16
+ let(:params) { nil }
32
17
 
33
- context 'when including valid params' do
34
- let(:params) do
35
- {
36
- page: 2,
37
- sort: 'date_created',
38
- requested: 25,
39
- searchTerm: 'term',
40
- role: 2
41
- }
42
- end
18
+ it { expect { list }.not_to raise_error }
43
19
 
44
- it { expect { list }.not_to raise_error }
45
- it('performs a get and returns the response') do
46
- expect(results).to have_key(:records)
47
- end
48
- it('returns an array of records') do
49
- expect(results[:records]).to be_a(Array)
20
+ it('performs a get and returns the response') do
21
+ expect(results).to have_key(:records)
22
+ end
23
+
24
+ it('returns an array of records') do
25
+ expect(results[:records]).to be_a(Array)
26
+ end
27
+
28
+ it('returns no error messages') { expect(error_messages).to be_empty }
50
29
  end
51
- it('returns no error messages') { expect(error_messages).to be_empty }
52
- it 'builds query and sends proper request' do
53
- list
54
- url =
55
- "#{versioned_api_path}/operators?filter=%7B%22last_name%22:%22term%22," \
56
- '%22role%22:2%7D&page=2&requested=25&sort=date_created'
57
- expect(WebMock).to have_requested(:get, url)
30
+
31
+ context 'when invalid params are provided' do
32
+ let(:params) { ['invalid array'] }
33
+
34
+ it { expect { list }.to raise_error(FinAppsCore::InvalidArgumentsError) }
58
35
  end
59
- end
60
- end
61
36
 
62
- describe '#show' do
63
- let(:results) { show[0] }
64
- let(:error_messages) { show[1] }
37
+ context 'when including valid params' do
38
+ let(:params) do
39
+ {
40
+ page: 2,
41
+ sort: 'date_created',
42
+ requested: 25,
43
+ searchTerm: 'term',
44
+ role: 2
45
+ }
46
+ end
65
47
 
66
- context 'when missing id' do
67
- let(:show) { subject.show(nil) }
48
+ it { expect { list }.not_to raise_error }
68
49
 
69
- it { expect { show }.to raise_error(FinAppsCore::MissingArgumentsError) }
70
- end
50
+ it('performs a get and returns the response') do
51
+ expect(results).to have_key(:records)
52
+ end
53
+
54
+ it('returns an array of records') do
55
+ expect(results[:records]).to be_a(Array)
56
+ end
71
57
 
72
- context 'for invalid id' do
73
- let(:show) { subject.show(:invalid_id) }
58
+ it('returns no error messages') { expect(error_messages).to be_empty }
74
59
 
75
- it { expect { show }.not_to raise_error }
76
- it('results is nil') { expect(results).to be_nil }
77
- it('error messages array is populated') do
78
- expect(error_messages.first.downcase).to eq('resource not found')
60
+ it 'builds query and sends proper request' do
61
+ list
62
+ url =
63
+ "#{versioned_api_path}/operators?filter=%7B%22last_name%22:%22term%22," \
64
+ '%22role%22:2%7D&page=2&requested=25&sort=date_created'
65
+ expect(WebMock).to have_requested(:get, url)
66
+ end
79
67
  end
80
68
  end
81
69
 
82
- context 'for valid id' do
83
- let(:show) { subject.show(:valid_id) }
70
+ describe '#show' do
71
+ let(:results) { show[0] }
72
+ let(:error_messages) { show[1] }
73
+
74
+ context 'when missing id' do
75
+ let(:show) { subject.show(nil) }
84
76
 
85
- it { expect { show }.not_to raise_error }
86
- it('returns an array') { expect(show).to be_a(Array) }
87
- it('performs a get and returns the response') do
88
- expect(results).to have_key(:public_id)
77
+ it { expect { show }.to raise_error(FinAppsCore::MissingArgumentsError) }
89
78
  end
90
- it('returns no error messages') { expect(error_messages).to be_empty }
91
- end
92
- end
93
79
 
94
- describe '#create' do
95
- let(:results) { create[0] }
96
- let(:error_messages) { create[1] }
80
+ context 'with invalid id' do
81
+ let(:show) { subject.show(:invalid_id) }
97
82
 
98
- context 'when missing params' do
99
- let(:create) { subject.create(nil) }
83
+ it { expect { show }.not_to raise_error }
84
+ it('results is nil') { expect(results).to be_nil }
100
85
 
101
- it do
102
- expect { create }.to raise_error(FinAppsCore::MissingArgumentsError)
86
+ it('error messages array is populated') do
87
+ expect(error_messages.first.downcase).to eq('resource not found')
88
+ end
103
89
  end
104
- end
105
90
 
106
- context 'when invalid params are provided' do
107
- let(:create) { subject.create(params: 'invalid') }
91
+ context 'with valid id' do
92
+ let(:show) { subject.show(:valid_id) }
93
+
94
+ it { expect { show }.not_to raise_error }
95
+ it('returns an array') { expect(show).to be_a(Array) }
108
96
 
109
- it { expect { create }.not_to raise_error }
110
- it('results is nil') { expect(results).to be_nil }
111
- it('error messages array is populated') do
112
- expect(error_messages.first.downcase).to eq('invalid request body')
97
+ it('performs a get and returns the response') do
98
+ expect(results).to have_key(:public_id)
99
+ end
100
+
101
+ it('returns no error messages') { expect(error_messages).to be_empty }
113
102
  end
114
103
  end
115
104
 
116
- context 'when valid params are provided' do
117
- let(:create) { subject.create(params: 'valid') }
105
+ describe '#create' do
106
+ let(:results) { create[0] }
107
+ let(:error_messages) { create[1] }
108
+
109
+ context 'when missing params' do
110
+ let(:create) { subject.create(nil) }
118
111
 
119
- it { expect { create }.not_to raise_error }
120
- it('returns an array') { expect(create).to be_a(Array) }
121
- it('performs a post and returns the response') do
122
- expect(results).to have_key(:public_id)
123
- expect(results).to have_key(:role)
112
+ it do
113
+ expect { create }.to raise_error(FinAppsCore::MissingArgumentsError)
114
+ end
124
115
  end
125
- it('returns no error messages') { expect(error_messages).to be_empty }
126
- end
127
- end
128
116
 
129
- describe '#update' do
130
- let(:results) { update[0] }
131
- let(:error_messages) { update[1] }
117
+ context 'when invalid params are provided' do
118
+ let(:create) { subject.create(params: 'invalid') }
132
119
 
133
- context 'when missing id' do
134
- let(:update) { subject.update(nil, params: 'params') }
120
+ it { expect { create }.not_to raise_error }
121
+ it('results is nil') { expect(results).to be_nil }
135
122
 
136
- it do
137
- expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
123
+ it('error messages array is populated') do
124
+ expect(error_messages.first.downcase).to eq('invalid request body')
125
+ end
138
126
  end
139
- end
140
127
 
141
- context 'when missing params' do
142
- let(:update) { subject.update(:valid_id, nil) }
128
+ context 'when valid params are provided' do
129
+ let(:create) { subject.create(params: 'valid') }
143
130
 
144
- it do
145
- expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
131
+ it { expect { create }.not_to raise_error }
132
+ it('returns an array') { expect(create).to be_a(Array) }
133
+ it { expect(results).to have_key(:public_id) }
134
+ it { expect(results).to have_key(:role) }
135
+ it('returns no error messages') { expect(error_messages).to be_empty }
146
136
  end
147
137
  end
148
138
 
149
- context 'with invalid params' do
150
- let(:update) { subject.update(:invalid_id, params: 'params') }
139
+ describe '#update' do
140
+ let(:results) { update[0] }
141
+ let(:error_messages) { update[1] }
151
142
 
152
- it { expect { update }.not_to raise_error }
153
- it('results is nil') { expect(results).to be_nil }
154
- it('error messages array is populated') do
155
- expect(error_messages.first.downcase).to eq('resource not found')
143
+ context 'when missing id' do
144
+ let(:update) { subject.update(nil, params: 'params') }
145
+
146
+ it do
147
+ expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
148
+ end
156
149
  end
157
- end
158
150
 
159
- context 'with valid params' do
160
- let(:update) { subject.update(:valid_id, params: 'valid params') }
151
+ context 'when missing params' do
152
+ let(:update) { subject.update(:valid_id, nil) }
161
153
 
162
- it { expect { update }.not_to raise_error }
163
- it('returns an array') { expect(update).to be_a(Array) }
164
- it('performs a put and returns the response') do
165
- expect(results).to have_key(:email)
166
- expect(results).to have_key(:role)
154
+ it do
155
+ expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
156
+ end
167
157
  end
168
- it('returns no error messages') { expect(error_messages).to be_empty }
169
- end
170
- end
171
158
 
172
- describe '#update_password' do
173
- let(:results) { update_password[0] }
174
- let(:error_messages) { update_password[1] }
159
+ context 'with invalid params' do
160
+ let(:update) { subject.update(:invalid_id, params: 'params') }
175
161
 
176
- context 'when missing params' do
177
- let(:update_password) { subject.update_password(nil) }
162
+ it { expect { update }.not_to raise_error }
163
+ it('results is nil') { expect(results).to be_nil }
178
164
 
179
- it do
180
- expect { update_password }.to raise_error(
181
- FinAppsCore::MissingArgumentsError
182
- )
165
+ it('error messages array is populated') do
166
+ expect(error_messages.first.downcase).to eq('resource not found')
167
+ end
183
168
  end
184
- end
185
169
 
186
- context 'with invalid params' do
187
- let(:update_password) { subject.update_password(password: 'invalid') }
170
+ context 'with valid params' do
171
+ let(:update) { subject.update(:valid_id, params: 'valid params') }
188
172
 
189
- it do
190
- expect { update_password }.to raise_error(
191
- FinAppsCore::InvalidArgumentsError
192
- )
173
+ it { expect { update }.not_to raise_error }
174
+ it('returns an array') { expect(update).to be_a(Array) }
175
+ it { expect(results).to have_key(:email) }
176
+ it { expect(results).to have_key(:role) }
177
+ it('returns no error messages') { expect(error_messages).to be_empty }
193
178
  end
194
179
  end
195
180
 
196
- context 'with valid params' do
197
- let(:valid_params) do
198
- { password: 'valid password', password_confirm: 'valid_password' }
181
+ describe '#update_password' do
182
+ let(:results) { update_password[0] }
183
+ let(:error_messages) { update_password[1] }
184
+
185
+ context 'when missing params' do
186
+ let(:update_password) { subject.update_password(nil) }
187
+
188
+ it do
189
+ expect { update_password }.to raise_error(
190
+ FinAppsCore::MissingArgumentsError
191
+ )
192
+ end
199
193
  end
200
- let(:update_password) { subject.update_password(valid_params) }
201
194
 
202
- it { expect { update_password }.not_to raise_error }
203
- it('returns an array') { expect(update_password).to be_a(Array) }
204
- it('performs a post and returns the response') do
205
- expect(results).to have_key(:public_id)
206
- expect(results).to have_key(:role)
195
+ context 'with invalid params' do
196
+ let(:update_password) { subject.update_password(password: 'invalid') }
197
+
198
+ it do
199
+ expect { update_password }.to raise_error(
200
+ FinAppsCore::InvalidArgumentsError
201
+ )
202
+ end
203
+ end
204
+
205
+ context 'with valid params' do
206
+ let(:valid_params) do
207
+ {password: 'valid password', password_confirm: 'valid_password'}
208
+ end
209
+ let(:update_password) { subject.update_password(valid_params) }
210
+
211
+ it { expect { update_password }.not_to raise_error }
212
+ it('returns an array') { expect(update_password).to be_a(Array) }
213
+ it { expect(results).to have_key(:public_id) }
214
+ it { expect(results).to have_key(:role) }
215
+ it('returns no error messages') { expect(error_messages).to be_empty }
207
216
  end
208
- it('returns no error messages') { expect(error_messages).to be_empty }
209
217
  end
210
- end
211
218
 
212
- describe '#destroy' do
213
- let(:results) { destroy[0] }
214
- let(:error_messages) { destroy[1] }
219
+ describe '#destroy' do
220
+ let(:results) { destroy[0] }
221
+ let(:error_messages) { destroy[1] }
215
222
 
216
- context 'when missing id' do
217
- let(:destroy) { subject.destroy(nil) }
223
+ context 'when missing id' do
224
+ let(:destroy) { subject.destroy(nil) }
218
225
 
219
- it do
220
- expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError)
226
+ it do
227
+ expect { destroy }.to raise_error(FinAppsCore::MissingArgumentsError)
228
+ end
221
229
  end
222
- end
223
230
 
224
- context 'for invalid id' do
225
- let(:destroy) { subject.destroy(:invalid_id) }
231
+ context 'with invalid id' do
232
+ let(:destroy) { subject.destroy(:invalid_id) }
233
+
234
+ it { expect { destroy }.not_to raise_error }
235
+ it('results is nil') { expect(results).to be_nil }
226
236
 
227
- it { expect { destroy }.not_to raise_error }
228
- it('results is nil') { expect(results).to be_nil }
229
- it('error messages array is populated') do
230
- expect(error_messages.first.downcase).to eq('resource not found')
237
+ it('error messages array is populated') do
238
+ expect(error_messages.first.downcase).to eq('resource not found')
239
+ end
231
240
  end
232
- end
233
241
 
234
- context 'for valid id' do
235
- let(:destroy) { subject.destroy(:valid_id) }
242
+ context 'with valid id' do
243
+ let(:destroy) { subject.destroy(:valid_id) }
236
244
 
237
- it { expect { destroy }.not_to raise_error }
238
- it('results is nil') { expect(results).to be_nil }
239
- it('error_messages array is empty') { expect(error_messages).to eq([]) }
245
+ it { expect { destroy }.not_to raise_error }
246
+ it('results is nil') { expect(results).to be_nil }
247
+ it('error_messages array is empty') { expect(error_messages).to eq([]) }
248
+ end
240
249
  end
241
250
  end
242
251
  end
@@ -6,12 +6,14 @@ RSpec.describe FinApps::REST::OrderAssignments do
6
6
  include SpecHelpers::Client
7
7
 
8
8
  describe '#update' do
9
- subject(:order_assignments) { FinApps::REST::OrderAssignments.new(client) }
9
+ subject(:order_assignments) { described_class.new(client) }
10
+
10
11
  let(:results) { update[RESULTS] }
11
12
  let(:error_messages) { update[ERROR_MESSAGES] }
12
13
 
13
14
  context 'when missing id' do
14
15
  let(:update) { subject.update(nil, []) }
16
+
15
17
  it('returns missing argument error') do
16
18
  expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
17
19
  end
@@ -19,6 +21,7 @@ RSpec.describe FinApps::REST::OrderAssignments do
19
21
 
20
22
  context 'when missing params' do
21
23
  let(:update) { subject.update(:valid_id, nil) }
24
+
22
25
  it('returns missing argument error') do
23
26
  expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
24
27
  end
@@ -26,6 +29,7 @@ RSpec.describe FinApps::REST::OrderAssignments do
26
29
 
27
30
  context 'with invalid params' do
28
31
  let(:update) { subject.update(:valid_id, params: 'params') }
32
+
29
33
  it('returns invalid argument error') do
30
34
  expect { update }.to raise_error(FinAppsCore::InvalidArgumentsError)
31
35
  end
@@ -36,6 +40,7 @@ RSpec.describe FinApps::REST::OrderAssignments do
36
40
 
37
41
  it { expect { update }.not_to raise_error }
38
42
  it('results is nil') { expect(results).to be_nil }
43
+
39
44
  it('error messages array is populated') do
40
45
  expect(error_messages.first.downcase).to eq('resource not found')
41
46
  end