finapps 2.0.20 → 2.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f9527628458941678b7c20016419c7ca28428977
4
- data.tar.gz: dde2b60589faa029658abcd22669950f7371cdf4
3
+ metadata.gz: 7f90c05a3e356a0316489b32a0842e65d95e34b0
4
+ data.tar.gz: f1086de23facb3c0b933ddfe1fb600d2a2863080
5
5
  SHA512:
6
- metadata.gz: 40e65b20cb6f4273c5f719e89a4ba59a13923de56039a152e83a8747430ec60975785909b19503f63538ba07dab593bbb4322ea2841e075b1382de8970895d46
7
- data.tar.gz: f8e53d38f9dcb25abd1531e4b3157c4ad87071c7ebbf1b16817f28507047a6462033d74d69cee14c2875578c4d24f9ff9aced2bacf4177d30e41f501de308ce2
6
+ metadata.gz: 43339a974da89238793047527cb29739eb81366d447465074a0cac543bfbb57db45d6365917979bbccd89599988b4a423054f4bb60ae06033e71e478a96e45c9
7
+ data.tar.gz: a4a63d8c72e182b9e86b6cf8024e8c42cea347ba30c0d9e0daa83fb7caebe3b5a36e11b5bdc972bcdbbe23c2bf2b38d9de7ec19a1df7ba4c5eab041361a2d7e0
data/lib/finapps.rb CHANGED
@@ -27,6 +27,9 @@ require 'finapps/rest/order_tokens'
27
27
  require 'finapps/rest/orders'
28
28
  require 'finapps/rest/institutions_forms'
29
29
  require 'finapps/rest/institutions'
30
+ require 'finapps/rest/user_institutions_statuses'
31
+ require 'finapps/rest/user_institutions'
32
+ require 'finapps/rest/user_institutions_forms'
30
33
 
31
34
  require 'finapps/rest/configuration'
32
35
  require 'finapps/rest/credentials'
@@ -43,6 +43,18 @@ module FinApps
43
43
  def institutions_forms
44
44
  @institutions_forms ||= FinApps::REST::InstitutionsForms.new self
45
45
  end
46
+
47
+ def user_institutions_statuses
48
+ @user_institutions_statuses ||= FinApps::REST::UserInstitutionsStatuses.new self
49
+ end
50
+
51
+ def user_institutions
52
+ @user_institutions ||= FinApps::REST::UserInstitutions.new self
53
+ end
54
+
55
+ def user_institutions_forms
56
+ @user_institutions_forms ||= FinApps::REST::UserInstitutionsForms.new self
57
+ end
46
58
  end
47
59
  end
48
60
  end
@@ -23,6 +23,18 @@ module FinApps
23
23
 
24
24
  super 'list/orders/1/10000/date/false'
25
25
  end
26
+
27
+ def update(id, params)
28
+ raise MissingArgumentsError.new 'Missing argument: id.' if id.blank?
29
+ raise MissingArgumentsError.new 'Missing argument: params' if params.blank?
30
+ # Params array need matching Institution ids & Account ids
31
+ # Validations to check each Institution id has at least one account id
32
+ # Validations to check at least 1 Institution id or 1 account "params.length >= 1"
33
+
34
+ path = "#{end_point}/#{ERB::Util.url_encode(id)}"
35
+
36
+ super params, path
37
+ end
26
38
  end
27
39
  end
28
40
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+ module FinApps
3
+ module REST
4
+ class UserInstitutions < FinApps::REST::Resources # :nodoc:
5
+ require 'erb'
6
+
7
+ END_POINT = 'institutions/user'
8
+
9
+ using ObjectExtensions
10
+ using StringExtensions
11
+
12
+ def list
13
+ path = 'institutions/user'
14
+ super path
15
+ end
16
+
17
+ def show(id)
18
+ raise MissingArgumentsError.new 'Missing Argument: id.' if id.blank?
19
+
20
+ path = "#{END_POINT}/#{ERB::Util.url_encode(id)}"
21
+ super id, path
22
+ end
23
+
24
+ def credentials_update(id, params)
25
+ raise MissingArgumentsError.new 'Missing Argument: id.' if id.blank?
26
+ raise MissingArgumentsError.new 'Missing argument: params.' if params.blank?
27
+
28
+ path = "#{END_POINT}/#{ERB::Util.url_encode(id)}/credentials"
29
+ update params, path
30
+ end
31
+
32
+ def mfa_update(id, params)
33
+ raise MissingArgumentsError.new 'Missing Argument: id.' if id.blank?
34
+ raise MissingArgumentsError.new 'Missing argument: params.' if params.blank?
35
+
36
+ path = "#{END_POINT}/#{ERB::Util.url_encode(id)}/mfa"
37
+ update params, path
38
+ end
39
+
40
+ def destroy(id)
41
+ raise MissingArgumentsError.new 'Missing Argument: id.' if id.blank?
42
+
43
+ path = "#{END_POINT}/#{ERB::Util.url_encode(id)}"
44
+ super id, path
45
+ end
46
+
47
+ private
48
+
49
+ def update(params, path)
50
+ super params, path
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ module FinApps
3
+ module REST
4
+ class UserInstitutionsForms < FinApps::REST::Resources
5
+ require 'erb'
6
+ using ObjectExtensions
7
+ using StringExtensions
8
+
9
+ def show(id)
10
+ raise MissingArgumentsError.new 'Missing argument: id.' if id.blank?
11
+
12
+ path = "institutions/user/#{ERB::Util.url_encode(id)}/form"
13
+ super id, path
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ module FinApps
3
+ module REST
4
+ class UserInstitutionsStatuses < FinApps::REST::Resources # :nodoc:
5
+ require 'erb'
6
+
7
+ using ObjectExtensions
8
+ using StringExtensions
9
+
10
+ def show(id)
11
+ raise MissingArgumentsError.new 'Missing argument: ui_id' if id.blank?
12
+
13
+ path = "institutions/user/#{ERB::Util.url_encode(id)}/status"
14
+ super id, path
15
+ end
16
+
17
+ def update
18
+ path = 'institutions/user/refresh'
19
+ super nil, path
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module FinApps
3
- VERSION = '2.0.20'
3
+ VERSION = '2.0.21'
4
4
  end
@@ -13,7 +13,7 @@ RSpec.describe FinApps::REST::Client do
13
13
  context 'an instance of Client' do
14
14
  subject { FinApps::REST::Client.new(:company_identifier, :company_token) }
15
15
 
16
- %i(users sessions orders order_tokens).each do |method|
16
+ %i(users sessions orders order_tokens institutions institutions_forms user_institutions_statuses user_institutions user_institutions_forms).each do |method|
17
17
  it "responds to #{method}" do
18
18
  expect(subject).to respond_to(method)
19
19
  end
@@ -35,10 +35,30 @@ RSpec.describe FinApps::REST::Client do
35
35
  it { expect(subject.orders).to be_an_instance_of(FinApps::REST::Orders) }
36
36
  end
37
37
 
38
+ describe '#institutions' do
39
+ it { expect(subject.institutions).to be_an_instance_of(FinApps::REST::Institutions) }
40
+ end
41
+
42
+ describe '#institutions_forms' do
43
+ it { expect(subject.institutions_forms).to be_an_instance_of(FinApps::REST::InstitutionsForms) }
44
+ end
45
+
46
+ describe '#user_institutions_statuses' do
47
+ it { expect(subject.user_institutions_statuses).to be_an_instance_of(FinApps::REST::UserInstitutionsStatuses) }
48
+ end
49
+
50
+ describe '#user_institutions' do
51
+ it { expect(subject.user_institutions).to be_an_instance_of(FinApps::REST::UserInstitutions) }
52
+ end
53
+
54
+ describe '#user_institutions_forms' do
55
+ it { expect(subject.user_institutions_forms).to be_an_instance_of(FinApps::REST::UserInstitutionsForms) }
56
+ end
57
+
38
58
  # [:users, :institutions, :user_institutions, :transactions, :categories,
39
59
  # :budget_models, :budget_calculation, :budgets, :cashflows,
40
60
  # :alert, :alert_definition, :alert_preferences, :alert_settings, :rule_sets]
41
- %i(users sessions orders order_tokens).each do |method|
61
+ %i(users sessions orders order_tokens institutions institutions_forms user_institutions_statuses user_institutions user_institutions_forms).each do |method|
42
62
  it "memoizes the result of #{method}" do
43
63
  first = subject.send(method)
44
64
  second = subject.send(method)
@@ -29,4 +29,49 @@ RSpec.describe FinApps::REST::Orders do
29
29
  it('returns no error messages') { expect(subject[1]).to be_empty }
30
30
  end
31
31
  end
32
+
33
+ describe '#update' do
34
+ subject(:orders) { FinApps::REST::Orders.new(client) }
35
+
36
+ context 'when missing id' do
37
+ let(:update) { subject.update(nil, :params) }
38
+ it ('returns missing argument error') { expect { update }.to raise_error(FinApps::MissingArgumentsError) }
39
+ end
40
+
41
+ context 'when missing params' do
42
+ let(:update) { subject.update(:id, nil) }
43
+ it ('returns missing argument error') { expect { update }.to raise_error(FinApps::MissingArgumentsError) }
44
+ end
45
+
46
+ context 'when valid id and params are provided' do
47
+ let(:update) { subject.update('valid_id', {accounts: 'valid_account'}) } #how to stub params
48
+ let(:results) { update[0] }
49
+ let(:error_messages) { update[1] }
50
+
51
+ it { expect { update }.not_to raise_error }
52
+ it('results is nil') { expect(results).to be_nil }
53
+ it('error_messages array is empty') { expect(error_messages).to eq([]) }
54
+ end
55
+
56
+ context 'when invalid id is provided' do
57
+ let(:update) { subject.update('invalid_id', :params) }
58
+ let(:results) { update[0] }
59
+ let(:error_messages) { update[1] }
60
+
61
+ it { expect { update }.not_to raise_error }
62
+ it('results is nil') { expect(results).to be_nil }
63
+ it('error messages array is populated') { expect(error_messages.first.downcase).to eq('resource not found') }
64
+ end
65
+
66
+ context 'when invalid params are provided' do
67
+ let(:update) { subject.update('valid_id', {accounts: 'invalid_account'}) }
68
+ let(:results) { update[0] }
69
+ let(:error_messages) { update[1] }
70
+
71
+ it { expect { update }.not_to raise_error }
72
+ it('results is nil') { expect(results).to be_nil }
73
+ it('error messages array is populated') { expect(error_messages.first.downcase).to eq('invalid request body') }
74
+
75
+ end
76
+ end
32
77
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe FinApps::REST::UserInstitutionsForms do
3
+ let(:client) { FinApps::REST::Client.new(:company_identifier, :company_token) }
4
+ describe '#show' do
5
+ context 'when missing site id' do
6
+ subject { FinApps::REST::UserInstitutionsForms.new(client).show(nil) }
7
+ it('raises missing argument error') { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
8
+ end
9
+
10
+ context 'when valid site id provided' do
11
+ subject { FinApps::REST::UserInstitutionsForms.new(client).show('valid_id') }
12
+
13
+ it { expect { subject }.not_to raise_error }
14
+ it('performs a get and returns the login html') { expect(subject[0]).to respond_to(:login_form_html) }
15
+ it('returns no error messages') { expect(subject[1]).to be_empty }
16
+ end
17
+
18
+ context 'when invalid site id provided' do
19
+ subject { FinApps::REST::UserInstitutionsForms.new(client).show('invalid_id') }
20
+
21
+ it { expect { subject }.not_to raise_error }
22
+ it('results is nil') { expect(subject[0]).to be_nil }
23
+ it('error messages array is populated') { expect(subject[1].first.downcase).to eq('invalid institution id') }
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe FinApps::REST::UserInstitutions do
3
+ let(:client) { FinApps::REST::Client.new(:company_identifier, :company_token) }
4
+ describe '#list' do
5
+ context 'when successful' do
6
+ subject { FinApps::REST::UserInstitutions.new(client).list }
7
+
8
+ it('returns an array') { expect(subject).to be_a(Array) }
9
+ it('performs a get and returns array of user institutions') { expect(subject[0]).to be_a(Array) }
10
+ it('returns no error messages') { expect(subject[1]).to be_empty }
11
+ end
12
+ end
13
+
14
+ describe '#show' do
15
+ context 'when missing id' do
16
+ subject { FinApps::REST::UserInstitutions.new(client).show(nil) }
17
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
18
+ end
19
+
20
+ context 'when valid id is provided' do
21
+ subject { FinApps::REST::UserInstitutions.new(client).show('valid_id') }
22
+
23
+ it { expect { subject }.not_to raise_error }
24
+ it('returns an array') { expect(subject).to be_a(Array) }
25
+ it('performs a get and returns the response') { expect(subject[0]).to respond_to(:_id) }
26
+ it('returns no error messages') { expect(subject[1]).to be_empty }
27
+ end
28
+
29
+ context 'when invalid id is provided' do
30
+ subject { FinApps::REST::UserInstitutions.new(client).show('invalid_id') }
31
+
32
+ it { expect { subject }.not_to raise_error }
33
+ it('results is nil') { expect(subject[0]).to be_nil }
34
+ it('error messages array is populated') { expect(subject[1].first.downcase).to eq('invalid user institution id') }
35
+ end
36
+ end
37
+
38
+ describe '#mfa_update' do
39
+ context 'when missing id' do
40
+ subject { FinApps::REST::UserInstitutions.new(client).mfa_update(nil, :params) }
41
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
42
+ end
43
+
44
+ context 'when missing params' do
45
+ subject { FinApps::REST::UserInstitutions.new(client).mfa_update(:id, nil) }
46
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
47
+ end
48
+
49
+ context 'when valid id and params are provided' do
50
+ subject { FinApps::REST::UserInstitutions.new(client).mfa_update('valid_id', :params) }
51
+
52
+ it { expect { subject }.not_to raise_error }
53
+ it('performs a post and returns the response') { expect(subject[0]).to respond_to(:user_institution) }
54
+ it('returns no error messages') { expect(subject[1]).to be_empty }
55
+ end
56
+
57
+ context 'when invalid id is provided w/ params' do
58
+ subject { FinApps::REST::UserInstitutions.new(client).mfa_update('invalid_id', :params) }
59
+
60
+ it { expect { subject }.not_to raise_error }
61
+ it('results is nil') { expect(subject[0]).to be_nil }
62
+ it('error messages array is populated') { expect(subject[1].first.downcase).to eq('invalid user institution id') }
63
+ end
64
+ end
65
+
66
+ describe '#credentials_update' do
67
+ context 'when missing id' do
68
+ subject { FinApps::REST::UserInstitutions.new(client).credentials_update(nil, :params) }
69
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
70
+ end
71
+
72
+ context 'when missing params' do
73
+ subject { FinApps::REST::UserInstitutions.new(client).credentials_update(:id, nil) }
74
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
75
+ end
76
+
77
+ context 'when valid id and params are provided' do
78
+ subject { FinApps::REST::UserInstitutions.new(client).credentials_update('valid_id', :params) }
79
+
80
+ it { expect { subject }.not_to raise_error }
81
+ it('performs a post and returns the response') { expect(subject[0]).to respond_to(:user_institution) }
82
+ it('returns no error messages') { expect(subject[1]).to be_empty }
83
+ end
84
+
85
+ context 'when invalid id is provided w/ params' do
86
+ subject { FinApps::REST::UserInstitutions.new(client).credentials_update('invalid_id', :params) }
87
+
88
+ it { expect { subject }.not_to raise_error }
89
+ it('results is nil') { expect(subject[0]).to be_nil }
90
+ it('error messages array is populated') { expect(subject[1].first.downcase).to eq('invalid user institution id') }
91
+ end
92
+ end
93
+
94
+ describe '#destroy' do
95
+ context 'when missing id' do
96
+ subject { FinApps::REST::UserInstitutions.new(client).destroy(nil) }
97
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
98
+ end
99
+
100
+ context 'when valid id is provided' do
101
+ subject { FinApps::REST::UserInstitutions.new(client).destroy('valid_id') }
102
+
103
+ it { expect { subject }.not_to raise_error }
104
+ it('returns an array') { expect(subject).to be_a(Array) }
105
+ it('performs a delete and returns empty response') { expect(subject[0]).to be_nil }
106
+ it('returns no error messages') { expect(subject[1]).to be_empty }
107
+ end
108
+
109
+ context 'when invalid id is provided' do
110
+ subject { FinApps::REST::UserInstitutions.new(client).destroy('invalid_id') }
111
+
112
+ it { expect { subject }.not_to raise_error }
113
+ it('returns an array') { expect(subject).to be_a(Array) }
114
+ it('results is nil') { expect(subject[0]).to be_nil }
115
+ it('error messages array is populated') { expect(subject[1].first.downcase).to eq('invalid user institution id') }
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe FinApps::REST::UserInstitutionsStatuses do
3
+ let(:client) { FinApps::REST::Client.new(:company_identifier, :company_token) }
4
+ describe '#show' do
5
+ context 'when missing id' do
6
+ subject { FinApps::REST::UserInstitutionsStatuses.new(client).show(nil) }
7
+ it { expect { subject }.to raise_error(FinApps::MissingArgumentsError) }
8
+ end
9
+
10
+ context 'when valid id is provided' do
11
+ subject { FinApps::REST::UserInstitutionsStatuses.new(client).show('valid_id') }
12
+
13
+ it { expect { subject }.not_to raise_error }
14
+ it('returns an array') { expect(subject).to be_a(Array) }
15
+ it('performs a get and returns the response') { expect(subject[0]).to respond_to(:_id) }
16
+ it('returns no error messages') { expect(subject[1]).to be_empty }
17
+ end
18
+
19
+ context 'when invalid id is provided' do
20
+ subject { FinApps::REST::UserInstitutionsStatuses.new(client).show('invalid_id') }
21
+
22
+ it { expect { subject }.not_to raise_error }
23
+ it('results is nil') { expect(subject[0]).to be_nil }
24
+ it('error messages array is populated') { expect(subject[1].first.downcase).to eq('invalid user institution id') }
25
+ end
26
+ end
27
+
28
+ describe '#update' do
29
+ context 'when successful' do
30
+ subject { FinApps::REST::UserInstitutions.new(client).list }
31
+
32
+ it('returns an array') { expect(subject).to be_a(Array) }
33
+ it('performs a get and returns array of user institutions statuses') { expect(subject[0]).to be_a(Array) }
34
+ it('returns no error messages') { expect(subject[1]).to be_empty }
35
+ end
36
+ end
37
+ end
@@ -15,6 +15,17 @@ class FakeApi < Sinatra::Base
15
15
  post('/v2/orders/invalid_token') { json_response 404, 'resource_not_found.json' }
16
16
  get('/v2/orders/:id') { json_response 200, 'resource.json' }
17
17
  get('/v2/list/orders/:page/:requested/:sort/:asc') { json_response 200, 'orders.json' }
18
+ put('/v2/orders/invalid_id') { json_response 404, 'resource_not_found.json' }
19
+ put('/v2/orders/valid_id') do
20
+ request.body.rewind
21
+ request_payload = JSON.parse request.body.read
22
+ if request_payload['accounts'] == 'valid_account'
23
+ status 204
24
+ else
25
+ json_response 400, 'invalid_request_body.json'
26
+ end
27
+ end
28
+
18
29
 
19
30
  # institutions
20
31
  get('/v2/institutions/site/valid_site_id/form') { json_response 200, 'institution_login_form.json' }
@@ -23,6 +34,21 @@ class FakeApi < Sinatra::Base
23
34
  post('/v2/institutions/site/invalid_site_id/add') { json_response 400, 'invalid_institution_id.json' }
24
35
  get('/v2/institutions/search/:search_term') { json_response 200, 'institutions_search_list.json' }
25
36
 
37
+ # user institutions
38
+ get('/v2/institutions/user/valid_id/status') { json_response 200, 'user_institution_status.json' }
39
+ get('/v2/institutions/user/invalid_id/status') { json_response 400, 'invalid_user_institution_id.json' }
40
+ get('/v2/institutions/user') { json_response 200, 'user_institutions_list.json' }
41
+ get('/v2/institutions/user/valid_id') { json_response 200, 'user_institutions_show.json' }
42
+ get('/v2/institutions/user/invalid_id') { json_response 400, 'invalid_user_institution_id.json' }
43
+ put('/v2/institutions/user/refresh') { json_response 200, 'user_institutions_refresh_all.json' }
44
+ put('/v2/institutions/user/valid_id/credentials') { json_response 200, 'institution_add.json' }
45
+ put('/v2/institutions/user/invalid_id/credentials') { json_response 400, 'invalid_user_institution_id.json' }
46
+ put('/v2/institutions/user/valid_id/mfa') { json_response 200, 'institution_add.json' }
47
+ put('/v2/institutions/user/invalid_id/mfa') { json_response 400, 'invalid_user_institution_id.json' }
48
+ delete('/v2/institutions/user/valid_id') { status 204 }
49
+ delete('/v2/institutions/user/invalid_id') { json_response 400, 'invalid_user_institution_id.json' }
50
+ get('/v2/institutions/user/valid_id/form') { json_response 200, 'institution_login_form.json' }
51
+ get('/v2/institutions/user/invalid_id/form') { json_response 400, 'invalid_institution_id.json' }
26
52
 
27
53
  # users
28
54
  get('/v2/users/valid_public_id') { json_response 200, 'user.json' }
@@ -0,0 +1,5 @@
1
+ {
2
+ "messages": [
3
+ "Invalid Request Body"
4
+ ]
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "messages": [
3
+ "Invalid User Institution Id"
4
+ ]
5
+ }
@@ -0,0 +1,89 @@
1
+ [
2
+ {
3
+ "_id": "57ade50924fb4800013042de",
4
+ "name": "Dag Site (US)",
5
+ "status": 3,
6
+ "status_message": "queued",
7
+ "last_refreshed": "2016-08-12T15:02:33.416Z"
8
+ },
9
+ {
10
+ "_id": "57ae12f1b0ac9800012b2a00",
11
+ "name": "Dag Site (US)",
12
+ "status": 3,
13
+ "status_message": "queued",
14
+ "last_refreshed": "2016-08-12T18:18:34.518Z"
15
+ },
16
+ {
17
+ "_id": "57ae12f9b0ac9800012b2a04",
18
+ "name": "Dag Site (US)",
19
+ "status": 3,
20
+ "status_message": "queued",
21
+ "last_refreshed": "2016-08-12T18:18:33.952Z"
22
+ },
23
+ {
24
+ "_id": "57ae1304b0ac9800012b2a08",
25
+ "name": "Dag Site (US)",
26
+ "status": 6,
27
+ "status_message": "login failure",
28
+ "last_refreshed": "2016-08-12T18:18:48.043Z",
29
+ "reason": "login failure"
30
+ },
31
+ {
32
+ "_id": "57ae13a7b0ac9800012b2a0d",
33
+ "name": "Dag Site (US)",
34
+ "status": 6,
35
+ "status_message": "login failure",
36
+ "last_refreshed": "2016-08-12T18:21:35.988Z",
37
+ "reason": "login failure"
38
+ },
39
+ {
40
+ "_id": "57b1c04624fb48000130432f",
41
+ "name": "Dag Site (US)",
42
+ "status": 3,
43
+ "status_message": "queued",
44
+ "last_refreshed": "2016-08-15T13:14:46.019Z"
45
+ },
46
+ {
47
+ "_id": "57b1c06524fb480001304333",
48
+ "name": "Dag Site (US)",
49
+ "status": 6,
50
+ "status_message": "login failure",
51
+ "last_refreshed": "2016-08-15T13:15:21.701Z",
52
+ "reason": "login failure"
53
+ },
54
+ {
55
+ "_id": "57b1d13324fb48000130437c",
56
+ "name": "Dag Site (US)",
57
+ "status": 3,
58
+ "status_message": "queued",
59
+ "last_refreshed": "2016-08-15T14:26:59.886Z"
60
+ },
61
+ {
62
+ "_id": "57ae161924fb480001304327",
63
+ "name": "Genesis Credit (US)",
64
+ "status": 3,
65
+ "status_message": "queued",
66
+ "last_refreshed": "2016-08-12T18:32:58.586Z"
67
+ },
68
+ {
69
+ "_id": "57b1c0c6b0ac9800012b2a22",
70
+ "name": "Genesis Credit (US)",
71
+ "status": 3,
72
+ "status_message": "queued",
73
+ "last_refreshed": "2016-08-15T13:16:54.964Z"
74
+ },
75
+ {
76
+ "_id": "57ae154224fb48000130431e",
77
+ "name": "Pincher Creek CU Limited (Canada)",
78
+ "status": 3,
79
+ "status_message": "queued",
80
+ "last_refreshed": "2016-08-12T18:28:43.752Z"
81
+ },
82
+ {
83
+ "_id": "57ae15b824fb480001304322",
84
+ "name": "United Auto Credit (US)",
85
+ "status": 3,
86
+ "status_message": "queued",
87
+ "last_refreshed": "2016-08-12T18:30:26.659Z"
88
+ }
89
+ ]
@@ -0,0 +1,7 @@
1
+ {
2
+ "_id": "57b1d13324fb48000130437c",
3
+ "institution_name": "Dag Site (US)",
4
+ "status": 5,
5
+ "status_message": "processing",
6
+ "last_refreshed": "2016-08-15T14:26:59.886Z"
7
+ }
@@ -0,0 +1,162 @@
1
+ [
2
+ {
3
+ "_id": "57ade50924fb4800013042de",
4
+ "account_id": 16412510,
5
+ "institution_name": "Dag Site (US)",
6
+ "status": 5,
7
+ "status_message": "processing",
8
+ "last_refreshed": "2016-08-12T15:02:33.416Z",
9
+ "accounts": [
10
+ {
11
+ "_id": "57ade52c6e3b09000af9d91b",
12
+ "user_institution_id": "57ade50924fb4800013042de",
13
+ "user_institution_name": "Dag Site (US)",
14
+ "account_type": "bank",
15
+ "account_name": "Wells Fargo Checking",
16
+ "account_holder": "FinancialApps",
17
+ "account_display_name": "Dag Site - Bank - Wells Fargo Checking",
18
+ "details": {
19
+ "available_balance": 11673.83,
20
+ "current_balance": 11673.83,
21
+ "routing_number": ""
22
+ }
23
+ }
24
+ ]
25
+ },
26
+ {
27
+ "_id": "57ae12f1b0ac9800012b2a00",
28
+ "account_id": 16414778,
29
+ "institution_name": "Dag Site (US)",
30
+ "status": 1,
31
+ "status_message": "ok",
32
+ "last_refreshed": "2016-08-12T18:18:34.518Z"
33
+ },
34
+ {
35
+ "_id": "57ae12f9b0ac9800012b2a04",
36
+ "account_id": 16412510,
37
+ "institution_name": "Dag Site (US)",
38
+ "status": 5,
39
+ "status_message": "processing",
40
+ "last_refreshed": "2016-08-12T18:18:33.952Z",
41
+ "accounts": [
42
+ {
43
+ "_id": "57ae13086e3b09000a115643",
44
+ "user_institution_id": "57ae12f9b0ac9800012b2a04",
45
+ "user_institution_name": "Dag Site (US)",
46
+ "account_type": "bank",
47
+ "account_name": "Wells Fargo Checking",
48
+ "account_holder": "FinancialApps",
49
+ "account_display_name": "Dag Site - Bank - Wells Fargo Checking",
50
+ "details": {
51
+ "available_balance": 11673.83,
52
+ "current_balance": 11673.83,
53
+ "routing_number": ""
54
+ }
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "_id": "57ae1304b0ac9800012b2a08",
60
+ "account_id": 16414779,
61
+ "institution_name": "Dag Site (US)",
62
+ "status": 6,
63
+ "status_message": "login failure",
64
+ "last_refreshed": "2016-08-12T18:18:48.043Z"
65
+ },
66
+ {
67
+ "_id": "57ae13a7b0ac9800012b2a0d",
68
+ "account_id": 16414781,
69
+ "institution_name": "Dag Site (US)",
70
+ "status": 6,
71
+ "status_message": "login failure",
72
+ "last_refreshed": "2016-08-12T18:21:35.988Z"
73
+ },
74
+ {
75
+ "_id": "57b1c04624fb48000130432f",
76
+ "account_id": 16412510,
77
+ "institution_name": "Dag Site (US)",
78
+ "status": 5,
79
+ "status_message": "processing",
80
+ "last_refreshed": "2016-08-15T13:14:46.019Z",
81
+ "accounts": [
82
+ {
83
+ "_id": "57b1c05512958000094763bb",
84
+ "user_institution_id": "57b1c04624fb48000130432f",
85
+ "user_institution_name": "Dag Site (US)",
86
+ "account_type": "bank",
87
+ "account_name": "Wells Fargo Checking",
88
+ "account_holder": "FinancialApps",
89
+ "account_display_name": "Dag Site - Bank - Wells Fargo Checking",
90
+ "details": {
91
+ "available_balance": 11673.83,
92
+ "current_balance": 11673.83,
93
+ "routing_number": ""
94
+ }
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ "_id": "57b1c06524fb480001304333",
100
+ "account_id": 16443655,
101
+ "institution_name": "Dag Site (US)",
102
+ "status": 6,
103
+ "status_message": "login failure",
104
+ "last_refreshed": "2016-08-15T13:15:21.701Z"
105
+ },
106
+ {
107
+ "_id": "57b1d13324fb48000130437c",
108
+ "account_id": 16412510,
109
+ "institution_name": "Dag Site (US)",
110
+ "status": 5,
111
+ "status_message": "processing",
112
+ "last_refreshed": "2016-08-15T14:26:59.886Z",
113
+ "accounts": [
114
+ {
115
+ "_id": "57b1d1476e3b09000a73d715",
116
+ "user_institution_id": "57b1d13324fb48000130437c",
117
+ "user_institution_name": "Dag Site (US)",
118
+ "account_type": "bank",
119
+ "account_name": "Wells Fargo Checking",
120
+ "account_holder": "FinancialApps",
121
+ "account_display_name": "Dag Site - Bank - Wells Fargo Checking",
122
+ "details": {
123
+ "available_balance": 11673.83,
124
+ "current_balance": 11673.83,
125
+ "routing_number": ""
126
+ }
127
+ }
128
+ ]
129
+ },
130
+ {
131
+ "_id": "57ae161924fb480001304327",
132
+ "account_id": 16415373,
133
+ "institution_name": "Genesis Credit (US)",
134
+ "status": 11,
135
+ "status_message": "institution site error",
136
+ "last_refreshed": "2016-08-12T18:32:58.586Z"
137
+ },
138
+ {
139
+ "_id": "57b1c0c6b0ac9800012b2a22",
140
+ "account_id": 16415373,
141
+ "institution_name": "Genesis Credit (US)",
142
+ "status": 4,
143
+ "status_message": "refreshing",
144
+ "last_refreshed": "2016-08-15T13:16:54.964Z"
145
+ },
146
+ {
147
+ "_id": "57ae154224fb48000130431e",
148
+ "account_id": 16414784,
149
+ "institution_name": "Pincher Creek CU Limited (Canada)",
150
+ "status": 11,
151
+ "status_message": "institution site error",
152
+ "last_refreshed": "2016-08-12T18:28:43.752Z"
153
+ },
154
+ {
155
+ "_id": "57ae15b824fb480001304322",
156
+ "account_id": 16415370,
157
+ "institution_name": "United Auto Credit (US)",
158
+ "status": 11,
159
+ "status_message": "institution site error",
160
+ "last_refreshed": "2016-08-12T18:30:26.659Z"
161
+ }
162
+ ]
@@ -0,0 +1,24 @@
1
+ {
2
+ "_id": "57ade50924fb4800013042de",
3
+ "account_id": 16412510,
4
+ "institution_name": "Dag Site (US)",
5
+ "status": 5,
6
+ "status_message": "processing",
7
+ "last_refreshed": "2016-08-12T15:02:33.416Z",
8
+ "accounts": [
9
+ {
10
+ "_id": "57ade52c6e3b09000af9d91b",
11
+ "user_institution_id": "57ade50924fb4800013042de",
12
+ "user_institution_name": "Dag Site (US)",
13
+ "account_type": "bank",
14
+ "account_name": "Wells Fargo Checking",
15
+ "account_holder": "FinancialApps",
16
+ "account_display_name": "Dag Site - Bank - Wells Fargo Checking",
17
+ "details": {
18
+ "available_balance": 11673.83,
19
+ "current_balance": 11673.83,
20
+ "routing_number": ""
21
+ }
22
+ }
23
+ ]
24
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finapps
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.20
4
+ version: 2.0.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erich Quintero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-15 00:00:00.000000000 Z
11
+ date: 2016-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -267,6 +267,9 @@ files:
267
267
  - lib/finapps/rest/orders.rb
268
268
  - lib/finapps/rest/resources.rb
269
269
  - lib/finapps/rest/sessions.rb
270
+ - lib/finapps/rest/user_institutions.rb
271
+ - lib/finapps/rest/user_institutions_forms.rb
272
+ - lib/finapps/rest/user_institutions_statuses.rb
270
273
  - lib/finapps/rest/users.rb
271
274
  - lib/finapps/utils/loggeable.rb
272
275
  - lib/finapps/version.rb
@@ -287,6 +290,9 @@ files:
287
290
  - spec/rest/orders_spec.rb
288
291
  - spec/rest/resources_spec.rb
289
292
  - spec/rest/sessions_spec.rb
293
+ - spec/rest/user_institutions_forms_spec.rb
294
+ - spec/rest/user_institutions_spec.rb
295
+ - spec/rest/user_institutions_statuses_spec.rb
290
296
  - spec/rest/users_spec.rb
291
297
  - spec/spec_helper.rb
292
298
  - spec/spec_helpers/client.rb
@@ -296,6 +302,8 @@ files:
296
302
  - spec/support/fixtures/institution_login_form.json
297
303
  - spec/support/fixtures/institutions_search_list.json
298
304
  - spec/support/fixtures/invalid_institution_id.json
305
+ - spec/support/fixtures/invalid_request_body.json
306
+ - spec/support/fixtures/invalid_user_institution_id.json
299
307
  - spec/support/fixtures/order_token.json
300
308
  - spec/support/fixtures/orders.json
301
309
  - spec/support/fixtures/relevance_ruleset_names.json
@@ -304,6 +312,10 @@ files:
304
312
  - spec/support/fixtures/resources.json
305
313
  - spec/support/fixtures/unauthorized.json
306
314
  - spec/support/fixtures/user.json
315
+ - spec/support/fixtures/user_institution_refresh_all.json
316
+ - spec/support/fixtures/user_institution_status.json
317
+ - spec/support/fixtures/user_institutions_list.json
318
+ - spec/support/fixtures/user_institutions_show.json
307
319
  homepage: https://github.com/finapps/ruby-client
308
320
  licenses:
309
321
  - MIT
@@ -330,28 +342,31 @@ required_rubygems_version: !ruby/object:Gem::Requirement
330
342
  version: '0'
331
343
  requirements: []
332
344
  rubyforge_project:
333
- rubygems_version: 2.6.6
345
+ rubygems_version: 2.5.1
334
346
  signing_key:
335
347
  specification_version: 4
336
348
  summary: FinApps REST API ruby client.
337
349
  test_files:
338
- - spec/spec_helpers/client.rb
339
- - spec/core_extensions/object/is_integer_spec.rb
340
- - spec/core_extensions/hash/compact_spec.rb
350
+ - spec/support/fake_api.rb
351
+ - spec/middleware/request/user_agent_spec.rb
341
352
  - spec/middleware/request/tenant_authentication_spec.rb
342
353
  - spec/middleware/request/accept_json_spec.rb
343
- - spec/middleware/request/user_agent_spec.rb
344
354
  - spec/middleware/response/raise_error_spec.rb
345
- - spec/support/fake_api.rb
355
+ - spec/core_extensions/hash/compact_spec.rb
356
+ - spec/core_extensions/object/is_integer_spec.rb
357
+ - spec/spec_helpers/client.rb
346
358
  - spec/spec_helper.rb
347
- - spec/rest/configuration_spec.rb
348
- - spec/rest/institutions_forms_spec.rb
349
- - spec/rest/users_spec.rb
350
- - spec/rest/sessions_spec.rb
351
- - spec/rest/resources_spec.rb
352
359
  - spec/rest/credentials_spec.rb
353
- - spec/rest/orders_spec.rb
354
- - spec/rest/client_spec.rb
355
- - spec/rest/base_client_spec.rb
356
360
  - spec/rest/order_tokens_spec.rb
357
361
  - spec/rest/institutions_spec.rb
362
+ - spec/rest/users_spec.rb
363
+ - spec/rest/base_client_spec.rb
364
+ - spec/rest/user_institutions_forms_spec.rb
365
+ - spec/rest/user_institutions_statuses_spec.rb
366
+ - spec/rest/user_institutions_spec.rb
367
+ - spec/rest/client_spec.rb
368
+ - spec/rest/orders_spec.rb
369
+ - spec/rest/configuration_spec.rb
370
+ - spec/rest/resources_spec.rb
371
+ - spec/rest/institutions_forms_spec.rb
372
+ - spec/rest/sessions_spec.rb