plaid 1.0.1 → 1.1.0

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: 3b2355e11af0826a2ace7a6c8f01c439927d68d4
4
- data.tar.gz: ec087e866397828a734a808fa75e2400789ea8fb
3
+ metadata.gz: 2df30fbdad26bdf216850618dadf355fd17e3cee
4
+ data.tar.gz: 2e70845646767b8174a1b77314933b2bb8a384fb
5
5
  SHA512:
6
- metadata.gz: 29fe226dcbb38dc8987d02996c827a9c47d9854c1d782ae4b7de56020b491b2dafbbd5003da43682bf5d5f6d62896f0576e8b841109ffa2cf2a1369e3866ba8c
7
- data.tar.gz: a8181aaf03e10ebc3029d4535c979a9a988381714f5558cda88909190e8388753715534659b64fef540b689a45681bf6d51d22355ef781aeec1c797ee8850945
6
+ metadata.gz: 2fba432e8eb41e8abd6603f00327aa8d07da2ed5be065cd63b73784f8205f4524e7e4b486ef497a9a666f4714570c34e432119802a454b12c588e7e0a621d062
7
+ data.tar.gz: 3a01497f2fe95e950924fb314d00cb1fbdeb01cc779e201a2c48f541d4c55ce6dcd6fe3726d0281afe972be9b121a4e00dda0696131368e7c4c6dbddf08d1203
data/README.md CHANGED
@@ -4,11 +4,11 @@ Ruby bindings for the Plaid API
4
4
 
5
5
  ## Notes
6
6
 
7
- Latest stable version: **1.0.0**
7
+ Latest stable version: **1.1.0**
8
8
 
9
- Last stable version: 0.1.6
9
+ Last stable version: 1.0.1
10
10
 
11
- **Warning: If you have been using any version < 1 please switch to the correct branch (V0.1.6). Installing without specifying a version from RubyGems results in V1.0.0 build. **
11
+ **Warning: If you have been using any version < 1 please switch to the correct branch (V0.1.6). Installing without specifying a version from RubyGems results in V1.1 build. **
12
12
 
13
13
  ## Installation
14
14
 
@@ -34,16 +34,16 @@ Configure the gem with your customer id, secret key, and the environment path yo
34
34
 
35
35
  ```ruby
36
36
  Plaid.config do |p|
37
- p.customer_id = ['test_id']
38
- p.secret = ['test_secret']
39
- p.environment_location = ['https://tartan.plaid.com/']
37
+ p.customer_id = 'Plaid provided customer ID here'
38
+ p.secret = 'Plaid provided secret key here'
39
+ p.environment_location = 'URL for the development or production environment'
40
40
  end
41
41
  ```
42
42
 
43
43
  Authenticate a user to your desired level of api access (auth / connect).
44
44
 
45
45
  ```ruby
46
- user = Plaid.auth('auth','plaid_test','plaid_good','wells')
46
+ user = Plaid.add_user('auth','plaid_test','plaid_good','wells')
47
47
  ```
48
48
 
49
49
  ## Learn More
data/lib/plaid.rb CHANGED
@@ -2,7 +2,7 @@ require 'plaid/version'
2
2
  require 'plaid/config'
3
3
  require 'plaid/util'
4
4
 
5
- require 'plaid/auth'
5
+ require 'plaid/add_user'
6
6
  require 'plaid/user/user'
7
7
  require 'plaid/institution/institution'
8
8
  require 'plaid/category/category'
@@ -16,7 +16,7 @@ module Plaid
16
16
  include Plaid::Util
17
17
 
18
18
  # Includes the method to authenticate the user. Defined in auth.rb
19
- include Plaid::Auth
19
+ include Plaid::AddUser
20
20
 
21
21
  # Builds the user object and returns on successful authentication
22
22
  def user(res,api_level=nil)
@@ -1,8 +1,9 @@
1
1
  module Plaid
2
- module Auth
3
- def auth(api_level,username,password,type)
2
+ module AddUser
3
+ def add_user(api_level,username,password,type,pin=nil)
4
4
  begin
5
5
  options = {username:username,password:password,type:type}
6
+ options.merge!(pin:pin) if pin
6
7
  res = self.post(api_level,options)
7
8
  self.user(res,api_level)
8
9
  rescue => e
data/lib/plaid/util.rb CHANGED
@@ -30,7 +30,7 @@ module Plaid
30
30
  when 'Institution not supported'
31
31
  raise 'Institution not supported'
32
32
  when 'Corrupted token'
33
- raise 'It appears that the access_token has been corrupted'
33
+ raise 'It appears that the access token has been corrupted'
34
34
  else
35
35
  raise err
36
36
  end
@@ -68,5 +68,6 @@ module Plaid
68
68
  error_handler('Server Error',res)
69
69
  end
70
70
  end
71
+
71
72
  end
72
73
  end
data/lib/plaid/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Plaid
2
- VERSION = '1.0.1'
2
+ VERSION = '1.1.0'
3
3
  end
data/spec/plaid_spec.rb CHANGED
@@ -10,7 +10,7 @@ describe Plaid do
10
10
  p.secret = 'test_secret'
11
11
  p.environment_location = 'https://tartan.plaid.com/'
12
12
  end
13
- res = Plaid.auth('connect','plaid_test','plaid_good','wells')
13
+ res = Plaid.add_user('connect','plaid_test','plaid_good','wells')
14
14
  it { expect(res).to be_instance_of Plaid::User }
15
15
  end
16
16
 
@@ -20,7 +20,7 @@ describe Plaid do
20
20
  p.secret = 'test_secret'
21
21
  p.environment_location = 'https://api.plaid.com/'
22
22
  end
23
- res = Plaid.auth('connect','plaid_test','plaid_good','wells')
23
+ res = Plaid.add_user('connect','plaid_test','plaid_good','wells')
24
24
  it { expect(res).to be_instance_of Plaid::User }
25
25
  end
26
26
 
@@ -30,7 +30,7 @@ describe Plaid do
30
30
  p.secret = 'test_bad'
31
31
  p.environment_location = 'https://tartan.plaid.com/'
32
32
  end
33
- it { expect{Plaid.auth('connect','plaid_bad','plaid_bad','wells')}.to raise_error }
33
+ it { expect{Plaid.add_user('connect','plaid_bad','plaid_bad','wells')}.to raise_error }
34
34
  end
35
35
 
36
36
  context 'has invalid production keys' do
@@ -39,68 +39,87 @@ describe Plaid do
39
39
  p.secret = 'test_bad'
40
40
  p.environment_location = 'https://api.plaid.com/'
41
41
  end
42
- it { expect{Plaid.auth('connect','plaid_bad','plaid_bad','wells')}.to raise_error }
42
+ it { expect{Plaid.add_user('connect','plaid_bad','plaid_bad','wells')}.to raise_error }
43
43
  end
44
44
  end
45
45
 
46
46
  # Authentication flow specs - returns Plaid::User
47
47
  # TODO: Abstract the config from each section with the result in passing tests
48
- describe '.auth' do
48
+ describe '.add_user' do
49
49
 
50
- context 'has correct credentials for single factor auth, authenticates to the connect path' do
50
+ context 'has correct credentials for single factor auth, authenticates to the connect level of api access' do
51
51
  Plaid.config do |p|
52
52
  p.customer_id = 'test_id'
53
53
  p.secret = 'test_secret'
54
54
  p.environment_location = 'https://tartan.plaid.com/'
55
55
  end
56
- user = Plaid.auth('connect','plaid_test','plaid_good','wells')
56
+ user = Plaid.add_user('connect','plaid_test','plaid_good','wells')
57
57
  it { expect(user.accounts.empty?).to be_falsey }
58
58
  end
59
59
 
60
- context 'has correct credentials for single factor auth, authenticates to the auth path' do
60
+ context 'has correct credentials for single factor auth, authenticates to the auth level of api access' do
61
61
  Plaid.config do |p|
62
62
  p.customer_id = 'test_id'
63
63
  p.secret = 'test_secret'
64
64
  p.environment_location = 'https://tartan.plaid.com/'
65
65
  end
66
- user = Plaid.auth('auth','plaid_test','plaid_good','wells')
66
+ user = Plaid.add_user('auth','plaid_test','plaid_good','wells')
67
67
  it { expect(user.accounts[0].numbers.nil?).to be_falsey }
68
68
  end
69
69
 
70
- context 'has correct username, but incorrect password for single factor auth under auth path' do
70
+ context 'has correct username, but incorrect password for single factor auth under auth level of api access' do
71
71
  Plaid.config do |p|
72
72
  p.customer_id = 'test_id'
73
73
  p.secret = 'test_secret'
74
74
  p.environment_location = 'https://tartan.plaid.com/'
75
75
  end
76
- it { expect{Plaid.auth('auth','plaid_test','plaid_bad','wells')}.to raise_error }
76
+ it { expect{Plaid.add_user('auth','plaid_test','plaid_bad','wells')}.to raise_error }
77
77
  end
78
78
 
79
- context 'has incorrect username under auth path' do
79
+ context 'has incorrect username under auth level of api access' do
80
80
  Plaid.config do |p|
81
81
  p.customer_id = 'test_id'
82
82
  p.secret = 'test_secret'
83
83
  p.environment_location = 'https://tartan.plaid.com/'
84
84
  end
85
- it { expect{Plaid.auth('auth','plaid_bad','plaid_bad','wells')}.to raise_error }
85
+ it { expect{Plaid.add_user('auth','plaid_bad','plaid_bad','wells')}.to raise_error }
86
86
  end
87
87
 
88
- context 'has correct username, but incorrect password for single factor auth under connect path' do
88
+ context 'has correct username, but incorrect password for single factor auth under connect level of api access' do
89
89
  Plaid.config do |p|
90
90
  p.customer_id = 'test_id'
91
91
  p.secret = 'test_secret'
92
92
  p.environment_location = 'https://tartan.plaid.com/'
93
93
  end
94
- it { expect{Plaid.auth('connect','plaid_test','plaid_bad','wells')}.to raise_error }
94
+ it { expect{Plaid.add_user('connect','plaid_test','plaid_bad','wells')}.to raise_error }
95
95
  end
96
96
 
97
- context 'has incorrect username under connect path' do
97
+ context 'has incorrect username under connect level of api access' do
98
98
  Plaid.config do |p|
99
99
  p.customer_id = 'test_id'
100
100
  p.secret = 'test_secret'
101
101
  p.environment_location = 'https://tartan.plaid.com/'
102
102
  end
103
- it { expect{Plaid.auth('connect','plaid_bad','plaid_bad','wells')}.to raise_error }
103
+ it { expect{Plaid.add_user('connect','plaid_bad','plaid_bad','wells')}.to raise_error }
104
+ end
105
+
106
+ context 'enters pin for extra parameter authentication required by certain institutions' do
107
+ Plaid.config do |p|
108
+ p.customer_id = 'test_id'
109
+ p.secret = 'test_secret'
110
+ p.environment_location = 'https://tartan.plaid.com/'
111
+ end
112
+ user = Plaid.add_user('connect','plaid_test','plaid_good','usaa','1234')
113
+ it { expect(user.api_res).to eq 'Requires further authentication' }
114
+ end
115
+
116
+ context 'enters incorrect pin for extra parameter authentication required by certain institutions' do
117
+ Plaid.config do |p|
118
+ p.customer_id = 'test_id'
119
+ p.secret = 'test_secret'
120
+ p.environment_location = 'https://tartan.plaid.com/'
121
+ end
122
+ it { expect{Plaid.add_user('connect','plaid_test','plaid_good','usaa','0000')}.to raise_error }
104
123
  end
105
124
 
106
125
  context 'has to enter MFA credentials' do
@@ -109,7 +128,7 @@ describe Plaid do
109
128
  p.secret = 'test_secret'
110
129
  p.environment_location = 'https://tartan.plaid.com/'
111
130
  end
112
- user = Plaid.auth('connect','plaid_selections', 'plaid_good','bofa')
131
+ user = Plaid.add_user('connect','plaid_selections', 'plaid_good','bofa')
113
132
  it { expect(user.api_res).to eq 'Requires further authentication' }
114
133
  end
115
134
 
@@ -119,7 +138,7 @@ describe Plaid do
119
138
  p.secret = 'test_secret'
120
139
  p.environment_location = 'https://tartan.plaid.com/'
121
140
  end
122
- user = Plaid.auth('connect','plaid_selections', 'plaid_locked','wells')
141
+ user = Plaid.add_user('connect','plaid_selections', 'plaid_locked','wells')
123
142
  it { expect(user.api_res).to eq 'User account is locked' }
124
143
  end
125
144
  end
@@ -205,7 +224,7 @@ describe Plaid do
205
224
  p.secret = 'test_secret'
206
225
  p.environment_location = 'https://tartan.plaid.com/'
207
226
  end
208
- new_mfa_user = Plaid.auth('connect','plaid_selections', 'plaid_good','bofa')
227
+ new_mfa_user = Plaid.add_user('connect','plaid_selections', 'plaid_good','bofa')
209
228
  new_mfa_user.mfa_authentication('tomato','bofa')
210
229
  it { expect(new_mfa_user.accounts).to be_truthy }
211
230
  end
@@ -216,7 +235,7 @@ describe Plaid do
216
235
  p.secret = 'test_secret'
217
236
  p.environment_location = 'https://tartan.plaid.com/'
218
237
  end
219
- mfa_again = Plaid.auth('connect','plaid_selections', 'plaid_good','bofa')
238
+ mfa_again = Plaid.add_user('connect','plaid_selections', 'plaid_good','bofa')
220
239
  mfa_again.mfa_authentication('again','bofa')
221
240
  it { expect(mfa_again.api_res).to eq 'Requires further authentication' }
222
241
  end
@@ -227,17 +246,17 @@ describe Plaid do
227
246
  p.secret = 'test_secret'
228
247
  p.environment_location = 'https://tartan.plaid.com/'
229
248
  end
230
- mfa_user = Plaid.auth('connect','plaid_selections', 'plaid_good','bofa')
249
+ mfa_user = Plaid.add_user('connect','plaid_selections', 'plaid_good','bofa')
231
250
  mfa_user.mfa_authentication('tomato','bofa')
232
- mfa_user = Plaid.auth('connect','plaid_selections', 'plaid_good','bofa')
251
+ mfa_user = Plaid.add_user('connect','plaid_selections', 'plaid_good','bofa')
233
252
  it { expect { mfa_user.mfa_authentication('bad','bofa') }.to raise_error }
234
253
  end
235
254
  end
236
255
 
237
256
  # Auth specs
238
257
  describe '#get_auth' do
239
- auth_user = Plaid.auth('auth','plaid_test','plaid_good','wells')
240
- connect_user = Plaid.auth('connect','plaid_test','plaid_good','wells')
258
+ auth_user = Plaid.add_user('auth','plaid_test','plaid_good','wells')
259
+ connect_user = Plaid.add_user('connect','plaid_test','plaid_good','wells')
241
260
 
242
261
  context 'has access and returns accounts' do
243
262
  it { expect(auth_user.permissions[0]).to eq('auth') }
@@ -250,8 +269,8 @@ describe Plaid do
250
269
 
251
270
  # Connect specs
252
271
  describe '#get_connect' do
253
- auth_user = Plaid.auth('auth','plaid_test','plaid_good','wells')
254
- connect_user = Plaid.auth('connect','plaid_test','plaid_good','wells')
272
+ auth_user = Plaid.add_user('auth','plaid_test','plaid_good','wells')
273
+ connect_user = Plaid.add_user('connect','plaid_test','plaid_good','wells')
255
274
 
256
275
  context 'has access and returns accounts' do
257
276
  it { expect(connect_user.permissions[0]).to eq('connect') }
@@ -265,8 +284,8 @@ describe Plaid do
265
284
  # Upgrade specs - either pass or fails
266
285
  =begin TODO: Write upgrade methods to pass without paying
267
286
  describe '#upgrade' do
268
- auth_user = Plaid.auth('auth','plaid_test','plaid_good','wells')
269
- connect_user = Plaid.auth('connect','plaid_test','plaid_good','wells')
287
+ auth_user = Plaid.add_user('auth','plaid_test','plaid_good','wells')
288
+ connect_user = Plaid.add_user('connect','plaid_test','plaid_good','wells')
270
289
 
271
290
  context 'auth upgrade is successful' do
272
291
  connect_user.upgrade
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plaid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Crites
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-23 00:00:00.000000000 Z
11
+ date: 2015-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,7 +67,7 @@ files:
67
67
  - README.md
68
68
  - Rakefile
69
69
  - lib/plaid.rb
70
- - lib/plaid/auth.rb
70
+ - lib/plaid/add_user.rb
71
71
  - lib/plaid/category/category.rb
72
72
  - lib/plaid/config.rb
73
73
  - lib/plaid/institution/institution.rb