finapps 5.0.34 → 5.0.35
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/main.yaml +1 -7
- data/.rubocop_todo.yml +3 -94
- data/README.md +1 -0
- data/RELEASES.md +11 -0
- data/lib/finapps/rest/client.rb +6 -5
- data/lib/finapps/rest/orders.rb +26 -15
- data/lib/finapps/rest/sessions.rb +10 -8
- data/lib/finapps/utils/query_builder.rb +13 -4
- data/lib/finapps/version.rb +1 -1
- data/spec/rest/alert_definitions_spec.rb +2 -6
- data/spec/rest/client_spec.rb +32 -40
- data/spec/rest/consumers_spec.rb +221 -220
- data/spec/rest/documents_orders_notifications_spec.rb +1 -1
- data/spec/rest/documents_orders_spec.rb +1 -1
- data/spec/rest/operators_password_resets_spec.rb +49 -56
- data/spec/rest/operators_spec.rb +167 -178
- data/spec/rest/order_notifications_spec.rb +1 -1
- data/spec/rest/order_refreshes_spec.rb +2 -5
- data/spec/rest/order_reports_spec.rb +14 -14
- data/spec/rest/order_statuses_spec.rb +10 -10
- data/spec/rest/order_tokens_spec.rb +33 -32
- data/spec/rest/orders_spec.rb +78 -64
- data/spec/rest/password_resets_spec.rb +28 -28
- data/spec/rest/plaid/plaid_consumer_institutions_spec.rb +1 -1
- data/spec/rest/portfolios_alerts_spec.rb +3 -3
- data/spec/rest/portfolios_consumers_spec.rb +2 -2
- data/spec/rest/portfolios_spec.rb +6 -18
- data/spec/rest/products_spec.rb +16 -15
- data/spec/rest/sessions_spec.rb +61 -60
- data/spec/rest/signed_documents_downloads_spec.rb +8 -4
- data/spec/rest/verix/verix_documents_spec.rb +2 -2
- data/spec/rest/version_spec.rb +4 -4
- metadata +3 -3
@@ -5,39 +5,39 @@ RSpec.describe FinApps::REST::PasswordResets do
|
|
5
5
|
|
6
6
|
describe '#create' do
|
7
7
|
context 'when missing id' do
|
8
|
-
subject { described_class.new(client).create(nil) }
|
8
|
+
subject(:create) { described_class.new(client).create(nil) }
|
9
9
|
|
10
10
|
it do
|
11
|
-
expect {
|
11
|
+
expect { create }.to raise_error(FinAppsCore::MissingArgumentsError)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
context 'when invalid id is provided' do
|
16
|
-
subject do
|
16
|
+
subject(:create) do
|
17
17
|
described_class.new(client).create(:invalid_user_id)
|
18
18
|
end
|
19
19
|
|
20
|
-
it { expect {
|
21
|
-
it('results is nil') { expect(
|
20
|
+
it { expect { create }.not_to raise_error }
|
21
|
+
it('results is nil') { expect(create[0]).to be_nil }
|
22
22
|
|
23
23
|
it('error messages array is populated') do
|
24
|
-
expect(
|
24
|
+
expect(create[1]).not_to be_nil
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
context 'when valid id is provided' do
|
29
|
-
subject do
|
29
|
+
subject(:create) do
|
30
30
|
described_class.new(client).create(:valid_user_id)
|
31
31
|
end
|
32
32
|
|
33
|
-
it { expect {
|
34
|
-
it('returns an array') { expect(
|
33
|
+
it { expect { create }.not_to raise_error }
|
34
|
+
it('returns an array') { expect(create).to be_a(Array) }
|
35
35
|
|
36
36
|
it('performs a post and returns the response') do
|
37
|
-
expect(
|
37
|
+
expect(create[0]).to have_key(:token)
|
38
38
|
end
|
39
39
|
|
40
|
-
it('returns no error messages') { expect(
|
40
|
+
it('returns no error messages') { expect(create[1]).to be_empty }
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -46,71 +46,71 @@ RSpec.describe FinApps::REST::PasswordResets do
|
|
46
46
|
let(:invalid_params) { {token: 'invalid_token'} }
|
47
47
|
|
48
48
|
context 'when missing id' do
|
49
|
-
subject { described_class.new(client).update(nil, :params) }
|
49
|
+
subject(:update) { described_class.new(client).update(nil, :params) }
|
50
50
|
|
51
51
|
it do
|
52
|
-
expect {
|
52
|
+
expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
context 'when missing params' do
|
57
|
-
subject do
|
57
|
+
subject(:update) do
|
58
58
|
described_class.new(client).update(:valid_user_id, nil)
|
59
59
|
end
|
60
60
|
|
61
61
|
it do
|
62
|
-
expect {
|
62
|
+
expect { update }.to raise_error(FinAppsCore::MissingArgumentsError)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
66
|
context 'when invalid id is provided' do
|
67
|
-
subject do
|
67
|
+
subject(:update) do
|
68
68
|
described_class.new(client).update(
|
69
69
|
:invalid_user_id,
|
70
70
|
valid_params
|
71
71
|
)
|
72
72
|
end
|
73
73
|
|
74
|
-
it { expect {
|
75
|
-
it('results is nil') { expect(
|
74
|
+
it { expect { update }.not_to raise_error }
|
75
|
+
it('results is nil') { expect(update[0]).to be_nil }
|
76
76
|
|
77
77
|
it('error messages array is populated') do
|
78
|
-
expect(
|
78
|
+
expect(update[1]).not_to be_nil
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
82
|
context 'when invalid params are provided' do
|
83
|
-
subject do
|
83
|
+
subject(:update) do
|
84
84
|
described_class.new(client).update(
|
85
85
|
:valid_user_id,
|
86
86
|
invalid_params
|
87
87
|
)
|
88
88
|
end
|
89
89
|
|
90
|
-
it { expect {
|
91
|
-
it('results is nil') { expect(
|
90
|
+
it { expect { update }.not_to raise_error }
|
91
|
+
it('results is nil') { expect(update[0]).to be_nil }
|
92
92
|
|
93
93
|
it('error messages array is populated') do
|
94
|
-
expect(
|
94
|
+
expect(update[1]).not_to be_nil
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
98
|
context 'when valid params are provided' do
|
99
|
-
subject do
|
99
|
+
subject(:update) do
|
100
100
|
described_class.new(client).update(
|
101
101
|
:valid_user_id,
|
102
102
|
valid_params
|
103
103
|
)
|
104
104
|
end
|
105
105
|
|
106
|
-
it { expect {
|
107
|
-
it('returns an array') { expect(
|
106
|
+
it { expect { update }.not_to raise_error }
|
107
|
+
it('returns an array') { expect(update).to be_a(Array) }
|
108
108
|
|
109
109
|
it('performs a post and returns the response') do
|
110
|
-
expect(
|
110
|
+
expect(update[0]).to have_key(:token)
|
111
111
|
end
|
112
112
|
|
113
|
-
it('returns no error messages') { expect(
|
113
|
+
it('returns no error messages') { expect(update[1]).to be_empty }
|
114
114
|
end
|
115
115
|
end
|
116
116
|
end
|
@@ -48,7 +48,7 @@ RSpec.describe FinApps::REST::PlaidConsumerInstitutions do
|
|
48
48
|
it_behaves_like 'a successful request'
|
49
49
|
it_behaves_like 'a request that returns institution data'
|
50
50
|
it('returns institution account data') do
|
51
|
-
expect(
|
51
|
+
expect(show[RESULTS]).to have_key(:accounts)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -23,12 +23,12 @@ RSpec.describe FinApps::REST::PortfoliosAlerts do
|
|
23
23
|
it { expect { list }.not_to raise_error }
|
24
24
|
it('returns an array') { expect(list).to be_a(Array) }
|
25
25
|
|
26
|
-
it('performs a get and returns
|
26
|
+
it('performs a get and returns a results array') do
|
27
27
|
expect(results).to be_a(Array)
|
28
|
-
expect(results.first).to have_key(:_id)
|
29
|
-
expect(results.first).to have_key(:rule_name)
|
30
28
|
end
|
31
29
|
|
30
|
+
it { expect(results.first).to have_key(:_id) }
|
31
|
+
it { expect(results.first).to have_key(:rule_name) }
|
32
32
|
it('returns no error messages') { expect(errors).to be_empty }
|
33
33
|
end
|
34
34
|
|
@@ -97,7 +97,7 @@ RSpec.describe FinApps::REST::PortfoliosConsumers do
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
100
|
-
context '
|
100
|
+
context 'with bulk subscribe' do
|
101
101
|
context 'when valid id and params are provided' do
|
102
102
|
let(:portfolio_id) { 'valid_id' }
|
103
103
|
let(:params) { %w[id1 id2 id3] }
|
@@ -130,7 +130,7 @@ RSpec.describe FinApps::REST::PortfoliosConsumers do
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
-
context '
|
133
|
+
context 'with single subscribe' do
|
134
134
|
context 'when valid ids are provided' do
|
135
135
|
let(:portfolio_id) { 'valid_id' }
|
136
136
|
let(:params) { portfolio_id }
|
@@ -67,12 +67,8 @@ RSpec.describe FinApps::REST::Portfolios do
|
|
67
67
|
|
68
68
|
it { expect { show }.not_to raise_error }
|
69
69
|
it('returns an array') { expect(show).to be_a(Array) }
|
70
|
-
|
71
|
-
it
|
72
|
-
expect(results).to have_key(:_id)
|
73
|
-
expect(results).to have_key(:product)
|
74
|
-
end
|
75
|
-
|
70
|
+
it { expect(results).to have_key(:_id) }
|
71
|
+
it { expect(results).to have_key(:product) }
|
76
72
|
it('returns no error messages') { expect(errors).to be_empty }
|
77
73
|
end
|
78
74
|
|
@@ -112,12 +108,8 @@ RSpec.describe FinApps::REST::Portfolios do
|
|
112
108
|
|
113
109
|
it { expect { create }.not_to raise_error }
|
114
110
|
it('returns an array') { expect(create).to be_a(Array) }
|
115
|
-
|
116
|
-
it
|
117
|
-
expect(results).to have_key(:_id)
|
118
|
-
expect(results).to have_key(:product)
|
119
|
-
end
|
120
|
-
|
111
|
+
it { expect(results).to have_key(:_id) }
|
112
|
+
it { expect(results).to have_key(:product) }
|
121
113
|
it('returns no error messages') { expect(errors).to be_empty }
|
122
114
|
end
|
123
115
|
|
@@ -180,12 +172,8 @@ RSpec.describe FinApps::REST::Portfolios do
|
|
180
172
|
|
181
173
|
it { expect { update }.not_to raise_error }
|
182
174
|
it('returns an array') { expect(update).to be_a(Array) }
|
183
|
-
|
184
|
-
it
|
185
|
-
expect(results).to have_key(:_id)
|
186
|
-
expect(results).to have_key(:product)
|
187
|
-
end
|
188
|
-
|
175
|
+
it { expect(results).to have_key(:_id) }
|
176
|
+
it { expect(results).to have_key(:product) }
|
189
177
|
it('returns no error messages') { expect(errors).to be_empty }
|
190
178
|
end
|
191
179
|
end
|
data/spec/rest/products_spec.rb
CHANGED
@@ -2,25 +2,26 @@
|
|
2
2
|
|
3
3
|
require 'spec_helpers/client'
|
4
4
|
|
5
|
-
RSpec.describe FinApps::REST::Products
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
RSpec.describe FinApps::REST::Products do
|
6
|
+
context 'when initialized with valid FinApps::Client object' do
|
7
|
+
include SpecHelpers::Client
|
8
|
+
subject(:products) { described_class.new(client) }
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
describe '#list' do
|
11
|
+
context 'when called' do
|
12
|
+
let(:list) { subject.list }
|
13
|
+
let(:results) { list[0] }
|
14
|
+
let(:error_messages) { list[1] }
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
it { expect { list }.not_to raise_error }
|
17
|
+
it('returns an array of records') { expect(results).to be_a(Array) }
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
it('performs a get and returns the response') do
|
20
|
+
expect(results[0]).to have_key(:code)
|
21
|
+
end
|
22
22
|
|
23
|
-
|
23
|
+
it('returns no error messages') { expect(error_messages).to be_empty }
|
24
|
+
end
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
data/spec/rest/sessions_spec.rb
CHANGED
@@ -2,80 +2,81 @@
|
|
2
2
|
|
3
3
|
require 'spec_helpers/client'
|
4
4
|
|
5
|
-
RSpec.describe FinApps::REST::Sessions
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
5
|
+
RSpec.describe FinApps::REST::Sessions do
|
6
|
+
context 'when initialized with valid FinApps::Client object' do
|
7
|
+
include SpecHelpers::Client
|
8
|
+
subject(:session) { described_class.new(client) }
|
9
|
+
|
10
|
+
describe '#create' do
|
11
|
+
let(:create) { session.create(credentials) }
|
12
|
+
let(:results) { create[0] }
|
13
|
+
let(:error_messages) { create[1] }
|
14
|
+
|
15
|
+
context 'when missing email or password' do
|
16
|
+
message = 'Invalid argument: params.'
|
17
|
+
it do
|
18
|
+
expect do
|
19
|
+
session.create(email: nil, password: 'password')
|
20
|
+
end.to raise_error(FinAppsCore::InvalidArgumentsError, message)
|
21
|
+
end
|
22
|
+
|
23
|
+
it do
|
24
|
+
expect { session.create(email: 'email', password: nil) }.to raise_error(
|
25
|
+
FinAppsCore::InvalidArgumentsError,
|
26
|
+
message
|
27
|
+
)
|
28
|
+
end
|
21
29
|
end
|
22
30
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
)
|
28
|
-
end
|
29
|
-
end
|
31
|
+
context 'with invalid credentials' do
|
32
|
+
let(:credentials) do
|
33
|
+
{email: 'email@domain.com', password: 'invalid_password'}
|
34
|
+
end
|
30
35
|
|
31
|
-
|
32
|
-
|
33
|
-
|
36
|
+
it { expect { create }.not_to raise_error }
|
37
|
+
it('results is nil') { expect(results).to be_nil }
|
38
|
+
|
39
|
+
error_message = 'Invalid Consumer Identifier or Credentials'
|
40
|
+
it('error_messages are populated') do
|
41
|
+
expect(error_messages.first).to eq(error_message)
|
42
|
+
end
|
34
43
|
end
|
35
44
|
|
36
|
-
|
37
|
-
|
45
|
+
context 'with valid credentials' do
|
46
|
+
let(:credentials) do
|
47
|
+
{email: 'email@domain.com', password: 'valid_password'}
|
48
|
+
end
|
38
49
|
|
39
|
-
|
40
|
-
|
41
|
-
expect(error_messages
|
50
|
+
it('results is a Hash') { expect(results).to be_a(Hash) }
|
51
|
+
it('token value is in the result') { expect(results).to have_key(:token) }
|
52
|
+
it('error_messages is empty') { expect(error_messages).to be_empty }
|
42
53
|
end
|
43
|
-
end
|
44
54
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
55
|
+
context 'with valid credentials & path argument' do
|
56
|
+
let(:create) { subject.create(credentials, 'operators/login') }
|
57
|
+
let(:credentials) do
|
58
|
+
{email: 'email@domain.com', password: 'valid_password'}
|
59
|
+
end
|
49
60
|
|
50
|
-
|
51
|
-
|
52
|
-
it('error_messages is empty') { expect(error_messages).to be_empty }
|
53
|
-
end
|
61
|
+
it('results is a Hash') { expect(results).to be_a(Hash) }
|
62
|
+
it('token value is in the result') { expect(results).to have_key(:token) }
|
54
63
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
{email: 'email@domain.com', password: 'valid_password'}
|
59
|
-
end
|
60
|
-
|
61
|
-
it('results is a Hash') { expect(results).to be_a(Hash) }
|
62
|
-
it('token value is in the result') { expect(results).to have_key(:token) }
|
64
|
+
it('returns operator for operator path') do
|
65
|
+
expect(results).to have_key(:role)
|
66
|
+
end
|
63
67
|
|
64
|
-
|
65
|
-
expect(results).to have_key(:role)
|
68
|
+
it('error_messages is empty') { expect(error_messages).to be_empty }
|
66
69
|
end
|
67
|
-
|
68
|
-
it('error_messages is empty') { expect(error_messages).to be_empty }
|
69
70
|
end
|
70
|
-
end
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
72
|
+
describe '#destroy' do
|
73
|
+
let(:destroy) { subject.destroy }
|
74
|
+
let(:results) { destroy[0] }
|
75
|
+
let(:error_messages) { destroy[1] }
|
76
76
|
|
77
|
-
|
78
|
-
|
79
|
-
|
77
|
+
it { expect { destroy }.not_to raise_error }
|
78
|
+
it('results is nil') { expect(results).to be_nil }
|
79
|
+
it('error_messages array is empty') { expect(error_messages).to eq([]) }
|
80
|
+
end
|
80
81
|
end
|
81
82
|
end
|
@@ -10,15 +10,19 @@ RSpec.describe FinApps::REST::SignedDocumentsDownloads do
|
|
10
10
|
let(:document) { described_class.new(api_client) }
|
11
11
|
|
12
12
|
describe '#show' do
|
13
|
-
context 'when missing
|
14
|
-
subject { document.show(:consumer_id, nil) }
|
13
|
+
context 'when missing signature request id' do
|
14
|
+
subject(:show) { document.show(:consumer_id, nil) }
|
15
15
|
|
16
16
|
it 'raises an error when missing consumer id' do
|
17
|
-
expect {
|
17
|
+
expect { show }.to raise_error(FinAppsCore::MissingArgumentsError)
|
18
18
|
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'when missing consumer id' do
|
22
|
+
subject(:show) { document.show(nil, :signature_request_id) }
|
19
23
|
|
20
24
|
it 'raises an error when missing signature request id' do
|
21
|
-
expect {
|
25
|
+
expect { show }.to raise_error(FinAppsCore::MissingArgumentsError)
|
22
26
|
end
|
23
27
|
end
|
24
28
|
|
@@ -11,10 +11,10 @@ RSpec.describe FinApps::REST::VerixDocuments do
|
|
11
11
|
|
12
12
|
describe '#list' do
|
13
13
|
context 'when missing parameters' do
|
14
|
-
subject { document.list(nil) }
|
14
|
+
subject(:list) { document.list(nil) }
|
15
15
|
|
16
16
|
it 'raises an error when missing record id' do
|
17
|
-
expect {
|
17
|
+
expect { list }.to raise_error(FinAppsCore::MissingArgumentsError)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|