finapps 2.0.20 → 2.0.21

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
  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