finapps 2.0.19 → 2.0.20

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: 8aabe52dfb750c8fdfa36a6c14719c55f0ac7fe3
4
- data.tar.gz: cb35dd9fc2145d027dd857ad4e2c0b753b2ed669
3
+ metadata.gz: f9527628458941678b7c20016419c7ca28428977
4
+ data.tar.gz: dde2b60589faa029658abcd22669950f7371cdf4
5
5
  SHA512:
6
- metadata.gz: 7732672b75583a484f87d8c154dca931b944bae7235297f53ba8d26f225f783d22289a1a578d8f1205f7785d1eae1607f85b292fb97c48842a658d9c9d8bbd03
7
- data.tar.gz: c9a3b2937ebfebe7c750ab46b525558d2a84047c3eb4f2d74aa9c12948fe0ddc07eb77997d60355f020fac300bbe79805669b6de8d2a5ff533887edd47950138
6
+ metadata.gz: 40e65b20cb6f4273c5f719e89a4ba59a13923de56039a152e83a8747430ec60975785909b19503f63538ba07dab593bbb4322ea2841e075b1382de8970895d46
7
+ data.tar.gz: f8e53d38f9dcb25abd1531e4b3157c4ad87071c7ebbf1b16817f28507047a6462033d74d69cee14c2875578c4d24f9ff9aced2bacf4177d30e41f501de308ce2
@@ -35,6 +35,14 @@ module FinApps
35
35
  def orders
36
36
  @orders ||= FinApps::REST::Orders.new self
37
37
  end
38
+
39
+ def institutions
40
+ @institutions ||= FinApps::REST::Institutions.new self
41
+ end
42
+
43
+ def institutions_forms
44
+ @institutions_forms ||= FinApps::REST::InstitutionsForms.new self
45
+ end
38
46
  end
39
47
  end
40
48
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ module FinApps
3
+ module REST
4
+ class Institutions < FinApps::REST::Resources
5
+ require 'erb'
6
+ using ObjectExtensions
7
+ using StringExtensions
8
+
9
+ def create(site_id, params)
10
+ raise MissingArgumentsError.new 'Missing argument: site_id.' if site_id.blank?
11
+ raise MissingArgumentsError.new 'Missing argument: params.' if params.blank?
12
+
13
+ path = "#{end_point}/site/#{ERB::Util.url_encode(site_id)}/add"
14
+
15
+ super params, path
16
+ end
17
+
18
+ def list(search_term)
19
+ raise MissingArgumentsError.new 'Missing argument: search_term' if search_term.blank?
20
+ # API errors when search_term is blank, maybe it shouldn't
21
+
22
+ path = "#{end_point}/search/#{ERB::Util.url_encode(search_term)}"
23
+ super path
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ module FinApps
3
+ module REST
4
+ class InstitutionsForms < FinApps::REST::Resources
5
+ require 'erb'
6
+ using ObjectExtensions
7
+ using StringExtensions
8
+
9
+ def show(site_id)
10
+ raise MissingArgumentsError.new 'Missing argument: site_id.' if site_id.blank?
11
+
12
+ path = "institutions/site/#{ERB::Util.url_encode(site_id)}/form"
13
+ super site_id, path
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module FinApps
3
- VERSION = '2.0.19'
3
+ VERSION = '2.0.20'
4
4
  end
data/lib/finapps.rb CHANGED
@@ -25,6 +25,8 @@ require 'finapps/rest/users'
25
25
  require 'finapps/rest/sessions'
26
26
  require 'finapps/rest/order_tokens'
27
27
  require 'finapps/rest/orders'
28
+ require 'finapps/rest/institutions_forms'
29
+ require 'finapps/rest/institutions'
28
30
 
29
31
  require 'finapps/rest/configuration'
30
32
  require 'finapps/rest/credentials'
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe FinApps::REST::InstitutionsForms 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::InstitutionsForms.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::InstitutionsForms.new(client).show('valid_site_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::InstitutionsForms.new(client).show('invalid_site_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,45 @@
1
+ # frozen_string_literal: true
2
+ RSpec.describe FinApps::REST::Institutions do
3
+ let(:client) { FinApps::REST::Client.new(:company_identifier, :company_token) }
4
+ describe '#create' do
5
+ subject(:institutions) { FinApps::REST::Institutions.new(client) }
6
+
7
+ context 'when missing site_id' do
8
+ let(:create) { subject.create(nil, :params) }
9
+ it { expect { create }.to raise_error(FinApps::MissingArgumentsError) }
10
+ end
11
+
12
+ context 'when missing params' do
13
+ let(:create) { subject.create(:site_id, nil) }
14
+ it { expect { create }.to raise_error(FinApps::MissingArgumentsError) }
15
+ end
16
+
17
+ context 'when valid site_id and params are provided' do
18
+ let(:create) { subject.create('valid_site_id', :params) }
19
+
20
+ it { expect { create }.not_to raise_error }
21
+ it('performs a post and returns the response') { expect(create[0]).to respond_to(:user_institution) }
22
+ it('returns no error messages') { expect(create[1]).to be_empty }
23
+ end
24
+
25
+ # No tests for invalid site_id/params because of API/Yodlee flow
26
+ end
27
+
28
+ describe '#list' do
29
+ subject(:institutions) { FinApps::REST::Institutions.new(client) }
30
+
31
+ context 'when search_term is missing' do
32
+ let(:list) { subject.list(nil) }
33
+ it { expect { list }.to raise_error(FinApps::MissingArgumentsError) }
34
+ end
35
+
36
+ context 'when proper search_term is provided' do
37
+ let(:list) { subject.list(:search_term) }
38
+
39
+ it { expect { list }.not_to raise_error }
40
+ it('returns an array') { expect(list).to be_a(Array) }
41
+ it('performs a get and returns institution array') { expect(list[0]).to be_a(Array) }
42
+ it('returns no error messages') { expect(list[1]).to be_empty }
43
+ end
44
+ end
45
+ end
@@ -16,6 +16,14 @@ class FakeApi < Sinatra::Base
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
18
 
19
+ # institutions
20
+ get('/v2/institutions/site/valid_site_id/form') { json_response 200, 'institution_login_form.json' }
21
+ get('/v2/institutions/site/invalid_site_id/form') { json_response 400, 'invalid_institution_id.json' }
22
+ post('/v2/institutions/site/valid_site_id/add') { json_response 200, 'institution_add.json' }
23
+ post('/v2/institutions/site/invalid_site_id/add') { json_response 400, 'invalid_institution_id.json' }
24
+ get('/v2/institutions/search/:search_term') { json_response 200, 'institutions_search_list.json' }
25
+
26
+
19
27
  # users
20
28
  get('/v2/users/valid_public_id') { json_response 200, 'user.json' }
21
29
  get('/v2/users/invalid_public_id') { json_response 404, 'resource_not_found.json' }
@@ -0,0 +1,11 @@
1
+ {
2
+ "user_institution": {
3
+ "_id": "57ade50924fb4800013042de",
4
+ "account_id": 16412510,
5
+ "institution_name": "Dag Site (US)",
6
+ "status": 3,
7
+ "status_message": "queued",
8
+ "last_refreshed": "2016-08-12T15:02:33.416615465Z"
9
+ },
10
+ "mfa": ""
11
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "login_form_html": "<div class='loginField'><label class='loginFieldName'>Catalog</label><input class='loginFieldInput' type='TEXT' name='LOGIN' value='' maxlength='40' size='20'></div><div class='loginField'><label class='loginFieldName'>Password</label><input class='loginFieldInput' type='PASSWORD' name='PASSWORD' value='' maxlength='40' size='20'></div>"
3
+ }
@@ -0,0 +1,74 @@
1
+ [
2
+ {
3
+ "base_url": "https://www.citibank.co.th",
4
+ "display_name": "CITIBANK (Thailand)",
5
+ "site_id": 20638,
6
+ "org_display_name": "Citigroup Inc"
7
+ },
8
+ {
9
+ "base_url": "http://www.citibank.com.au/",
10
+ "display_name": "Citibank (Australia)",
11
+ "site_id": 10388,
12
+ "org_display_name": "Citigroup"
13
+ },
14
+ {
15
+ "base_url": "https://www.citibank.com.br/BRGCB/JPS/portal/Index.do",
16
+ "display_name": "Citibank (Brazil)",
17
+ "site_id": 17781,
18
+ "org_display_name": "Citibank (Brazil)"
19
+ },
20
+ {
21
+ "base_url": "https://online.citibank.com/US/Welcome.c",
22
+ "display_name": "Citibank (Colombia)",
23
+ "site_id": 17780,
24
+ "org_display_name": "Citibank (Colombia)"
25
+ },
26
+ {
27
+ "base_url": "https://www.citibank.co.in",
28
+ "display_name": "Citibank (India)",
29
+ "site_id": 9864,
30
+ "org_display_name": "Citigroup"
31
+ },
32
+ {
33
+ "base_url": "http://www.citibank.com.sg/",
34
+ "display_name": "Citibank (Singapore)",
35
+ "site_id": 18079,
36
+ "org_display_name": "Citibank (Singapore)"
37
+ },
38
+ {
39
+ "base_url": "http://www.citibank.com/uk/",
40
+ "display_name": "Citibank (UK)",
41
+ "site_id": 4057,
42
+ "org_display_name": "Citigroup"
43
+ },
44
+ {
45
+ "base_url": "https://online.citibank.com/US/Welcome.c",
46
+ "display_name": "Citibank (online.citibank.com) (US)",
47
+ "site_id": 1603,
48
+ "org_display_name": "Citigroup"
49
+ },
50
+ {
51
+ "base_url": "http://citibankonline.com",
52
+ "display_name": "Citibank AT1 (US)",
53
+ "site_id": 5732,
54
+ "org_display_name": "Citigroup"
55
+ },
56
+ {
57
+ "base_url": "http://hsa.citibank.com/",
58
+ "display_name": "Citibank Health Savings Account (US)",
59
+ "site_id": 13256,
60
+ "org_display_name": "Citigroup"
61
+ },
62
+ {
63
+ "base_url": "http://www.citibank.com.au/",
64
+ "display_name": "Citibank Personal Loan (Australia)",
65
+ "site_id": 12718,
66
+ "org_display_name": "Citigroup"
67
+ },
68
+ {
69
+ "base_url": "http://www.citibank.com/uk/portal/consumer/investments/sharedealing/index_td.htm",
70
+ "display_name": "Citibank Sharedealing Service (UK)",
71
+ "site_id": 8646,
72
+ "org_display_name": "Citigroup"
73
+ }
74
+ ]
@@ -0,0 +1,5 @@
1
+ {
2
+ "messages": [
3
+ "Invalid Institution Id"
4
+ ]
5
+ }
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.19
4
+ version: 2.0.20
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-10 00:00:00.000000000 Z
11
+ date: 2016-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -261,6 +261,8 @@ files:
261
261
  - lib/finapps/rest/connection.rb
262
262
  - lib/finapps/rest/credentials.rb
263
263
  - lib/finapps/rest/defaults.rb
264
+ - lib/finapps/rest/institutions.rb
265
+ - lib/finapps/rest/institutions_forms.rb
264
266
  - lib/finapps/rest/order_tokens.rb
265
267
  - lib/finapps/rest/orders.rb
266
268
  - lib/finapps/rest/resources.rb
@@ -279,6 +281,8 @@ files:
279
281
  - spec/rest/client_spec.rb
280
282
  - spec/rest/configuration_spec.rb
281
283
  - spec/rest/credentials_spec.rb
284
+ - spec/rest/institutions_forms_spec.rb
285
+ - spec/rest/institutions_spec.rb
282
286
  - spec/rest/order_tokens_spec.rb
283
287
  - spec/rest/orders_spec.rb
284
288
  - spec/rest/resources_spec.rb
@@ -288,6 +292,10 @@ files:
288
292
  - spec/spec_helpers/client.rb
289
293
  - spec/support/fake_api.rb
290
294
  - spec/support/fixtures/error.json
295
+ - spec/support/fixtures/institution_add.json
296
+ - spec/support/fixtures/institution_login_form.json
297
+ - spec/support/fixtures/institutions_search_list.json
298
+ - spec/support/fixtures/invalid_institution_id.json
291
299
  - spec/support/fixtures/order_token.json
292
300
  - spec/support/fixtures/orders.json
293
301
  - spec/support/fixtures/relevance_ruleset_names.json
@@ -322,26 +330,28 @@ required_rubygems_version: !ruby/object:Gem::Requirement
322
330
  version: '0'
323
331
  requirements: []
324
332
  rubyforge_project:
325
- rubygems_version: 2.5.1
333
+ rubygems_version: 2.6.6
326
334
  signing_key:
327
335
  specification_version: 4
328
336
  summary: FinApps REST API ruby client.
329
337
  test_files:
330
- - spec/support/fake_api.rb
331
- - spec/middleware/request/user_agent_spec.rb
338
+ - spec/spec_helpers/client.rb
339
+ - spec/core_extensions/object/is_integer_spec.rb
340
+ - spec/core_extensions/hash/compact_spec.rb
332
341
  - spec/middleware/request/tenant_authentication_spec.rb
333
342
  - spec/middleware/request/accept_json_spec.rb
343
+ - spec/middleware/request/user_agent_spec.rb
334
344
  - spec/middleware/response/raise_error_spec.rb
335
- - spec/core_extensions/hash/compact_spec.rb
336
- - spec/core_extensions/object/is_integer_spec.rb
337
- - spec/spec_helpers/client.rb
345
+ - spec/support/fake_api.rb
338
346
  - spec/spec_helper.rb
339
- - spec/rest/credentials_spec.rb
340
- - spec/rest/order_tokens_spec.rb
341
- - spec/rest/users_spec.rb
342
- - spec/rest/base_client_spec.rb
343
- - spec/rest/client_spec.rb
344
- - spec/rest/orders_spec.rb
345
347
  - spec/rest/configuration_spec.rb
346
- - spec/rest/resources_spec.rb
348
+ - spec/rest/institutions_forms_spec.rb
349
+ - spec/rest/users_spec.rb
347
350
  - spec/rest/sessions_spec.rb
351
+ - spec/rest/resources_spec.rb
352
+ - 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
+ - spec/rest/order_tokens_spec.rb
357
+ - spec/rest/institutions_spec.rb