plaid 1.5.2 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 368e233ca55b0e688f8d58faaaa9a3316d80d663
4
- data.tar.gz: 7034e5662cac8e09fb029719abdbbbcb9ecd1e61
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MjcyODE1ZDJkZmVhM2EzNDNhNDhmNzU3ZjJhYTkzM2E2NmMzMzY3Nw==
5
+ data.tar.gz: !binary |-
6
+ NDdlOWQzNzFhZTFkNmEwYjI1NGFkM2NjZmQ5NDkyOGQxZDYwNzQwNA==
5
7
  SHA512:
6
- metadata.gz: f22fb8efa56472c28389840bb817d1ad6d6e8180d88f4d960db334404b8f1308b7a39e76f83fc234542e30b03b36ee47d512153ffb25106a88489b359004c306
7
- data.tar.gz: 82af4b00d019397e0de3e26feb70797e93eaeff967698571e1b8cd6ffcbf89b18f446fa63f7f598d5240cd283af6a6e844547f43ab6fd8fea09c1dec11fc4b75
8
+ metadata.gz: !binary |-
9
+ YjIyODZmMWY4ZmYyMWM0MTc5Yzg5MGVkZThkMzlkZDc3NjEyMzExNmY0NDI1
10
+ ODE1Y2QwMmExMGY5Yzc1MjNjYzkyYjk5NmZjZjAzMTJhZWM3YWZmYWU1OGIw
11
+ ZDcwZGMxM2M0YTJkMTNmODMxMjg2ZmFlYjM1MWM5MTBhOWU4YmI=
12
+ data.tar.gz: !binary |-
13
+ ZDc3NjExNjFhMGM4NDNkZmY3NGMwMmI4OGI2YjBjOGQ1MGNkYmViYzVkNDE0
14
+ MjA5Mzc2ZGI0OTQyNDE4NWQwNjVkNzlkMGNhM2E0ZWU3YWFkYjg5MWVlYzdj
15
+ ZTlhNDM5ZmU1MjFkYTFhYjRlZTZlMThjNzAwMmMyMTZiNTFlNWU=
data/README.md CHANGED
@@ -6,7 +6,7 @@ Ruby bindings for the Plaid API
6
6
 
7
7
  This version is a beta version that contains failing tests for the new 'info' endpoint. While these have been tested individually on real accounts the tests here will fail with the test accounts supplied. These will be updated soon with test credentials.
8
8
 
9
- Latest stable version: **1.5.2**
9
+ Latest stable version: **1.5.3**
10
10
 
11
11
  This version removes the need to use 'type' in each additional call.
12
12
 
@@ -71,7 +71,7 @@ user = Plaid.set_user('access_token')
71
71
  ```
72
72
 
73
73
  ```ruby
74
- user = Plaid.set_user('access_token', 'wells')
74
+ user = Plaid.set_user('access_token', ['connect'])
75
75
  ```
76
76
 
77
77
  ### Exchanging a Link public_token for a Plaid access_token
@@ -1,11 +1,13 @@
1
1
  require 'plaid/version'
2
2
  require 'plaid/config'
3
+ require 'plaid/errors'
3
4
 
4
5
  require 'plaid/models/user'
5
6
  require 'plaid/models/institution'
6
7
  require 'plaid/models/category'
7
8
  require 'plaid/models/exchange_token_response'
8
9
 
10
+
9
11
  require 'json'
10
12
 
11
13
  module Plaid
@@ -1,6 +1,7 @@
1
1
  require 'net/http'
2
2
  require 'json'
3
3
  require 'uri'
4
+
4
5
  module Plaid
5
6
  class Connection
6
7
  class << self
@@ -51,22 +52,6 @@ module Plaid
51
52
  Net::HTTP.start(uri.hostname, uri.port, :use_ssl => uri.scheme == 'https') { |http| http.request(req) }
52
53
  end
53
54
 
54
- # API: semi-private
55
- # TODO: Refactor these to use symbols instead of strings
56
- def error_handler(err, res = nil)
57
- case err
58
- when 'Bad Request'
59
- puts res.body
60
- raise 'The request was malformed. Did you check the API docs?'
61
- when 'Unauthorized'
62
- raise 'Access denied: Try using the correct credentials.'
63
- when 'Corrupted token'
64
- raise 'It appears that the access token has been corrupted'
65
- else
66
- raise err
67
- end
68
- end
69
-
70
55
  protected
71
56
 
72
57
  # API: semi-private
@@ -82,23 +67,16 @@ module Plaid
82
67
  case res.code.delete('.').to_i
83
68
  when 200 then body
84
69
  when 201 then { msg: 'Requires further authentication', body: body}
85
- when 400 then error_handler('Bad Request',res)
70
+ when 400
71
+ raise Plaid::BadRequest.new(body['code'], body['message'], body['resolve'])
86
72
  when 401
87
- case body['code']
88
- when 1108 then error_handler('Institution not supported', res)
89
- when 1105 then error_handler('Corrupted token', res)
90
- when 1106 then error_handler('Corrupted public_token', res)
91
- when 1107 then error_handler('Missing public_token', res)
92
- when 1501 then error_handler('Not Found', res)
93
- else error_handler('Unauthorized',res)
94
- end
73
+ raise Plaid::Unauthorized.new(body['code'], body['message'], body['resolve'])
95
74
  when 402
96
- return {msg: 'User account is locked', body: body} if body['code'] == 1205
97
- error_handler('Request Failed', res)
75
+ raise Plaid::RequestFailed.new(body['code'], body['message'], body['resolve'])
98
76
  when 404
99
- error_handler('Not Found',res)
77
+ raise Plaid::NotFound.new(body['code'], body['message'], body['resolve'])
100
78
  else
101
- error_handler('Server Error',res)
79
+ raise Plaid::ServerError.new(body['code'], body['message'], body['resolve'])
102
80
  end
103
81
  end
104
82
 
@@ -110,7 +88,7 @@ module Plaid
110
88
  when nil
111
89
  body
112
90
  when 1301, 1401, 1501, 1601
113
- error_handler('Not Found',body)
91
+ raise Plaid::NotFound.new(body['code'], body['message'], body['resolve'])
114
92
  else
115
93
  body
116
94
  end
@@ -0,0 +1,27 @@
1
+ module Plaid
2
+ class PlaidError < StandardError
3
+ attr_reader :code
4
+ attr_reader :resolve
5
+
6
+ def initialize(code, message, resolve)
7
+ super(message)
8
+ @code = code
9
+ @resolve = resolve
10
+ end
11
+ end
12
+
13
+ class BadRequest < PlaidError
14
+ end
15
+
16
+ class Unauthorized < PlaidError
17
+ end
18
+
19
+ class RequestFailed < PlaidError
20
+ end
21
+
22
+ class NotFound < PlaidError
23
+ end
24
+
25
+ class ServerError < PlaidError
26
+ end
27
+ end
@@ -1,3 +1,3 @@
1
1
  module Plaid
2
- VERSION = '1.5.2'
2
+ VERSION = '1.5.3'
3
3
  end
@@ -23,5 +23,6 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'rspec', '~>3.1'
24
24
  spec.add_development_dependency 'pry'
25
25
  spec.add_development_dependency 'pry-stack_explorer'
26
+ spec.add_development_dependency 'webmock'
26
27
  end
27
28
 
@@ -0,0 +1,180 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Plaid::Connection do
4
+
5
+ let(:stub_url) { "https://tartan.plaid.com/testing" }
6
+ let(:bad_req_response) { {"code" => 1005, "message" => "invalid credentials", "resolve" => "The username or password provided is not correct."}.to_json }
7
+ let(:unauth_response) { {"code" => 1105, "message" => "bad access_token", "resolve" => "This access_token appears to be corrupted."}.to_json }
8
+ let(:req_fail_response) { {"code" => 1200, "message" => "invalid credentials", "resolve" => "The username or password provided is not correct."}.to_json }
9
+ let(:req_not_found) { {"code" => 1600, "message" => "product not found", "resolve" => "This product doesn't exist yet, we're actually not sure how you reached this error..."}.to_json }
10
+
11
+ describe "#post" do
12
+ it "should send a post request" do
13
+ stub = stub_request(:post, stub_url).to_return({:body => {"response" => "OK"}.to_json})
14
+ Plaid::Connection.post("testing")
15
+ expect(stub).to have_requested(:post, stub_url)
16
+ end
17
+
18
+ it "should return response on 200 response" do
19
+ stub = stub_request(:post, stub_url).to_return({:body => {"response" => "OK"}.to_json})
20
+ response = Plaid::Connection.post("testing")
21
+ expect(response).to eq({"response" => "OK"})
22
+ end
23
+
24
+ it "should return message on 201 response" do
25
+ stub = stub_request(:post, stub_url).to_return(status: 201, body: {"response" => "OK"}.to_json)
26
+ response = Plaid::Connection.post("testing")
27
+ expect(response).to eq({:msg => "Requires further authentication", :body => {"response" => "OK"}})
28
+ end
29
+
30
+ it "should throw Plaid::BadRequest on 400 response" do
31
+ stub = stub_request(:post, stub_url).to_return(status: 400, body: bad_req_response)
32
+ expect { Plaid::Connection.post("testing") }.to raise_error(Plaid::BadRequest, "invalid credentials")
33
+ end
34
+
35
+ it "should throw Plaid::Unauthorized on 401 response" do
36
+ stub = stub_request(:post, stub_url).to_return(status: 401, body: unauth_response)
37
+ expect { Plaid::Connection.post("testing") }.to raise_error(Plaid::Unauthorized, "bad access_token")
38
+ end
39
+
40
+ it "should throw Plaid::RequestFailed on 402 response" do
41
+ stub = stub_request(:post, stub_url).to_return(status: 402, body: req_fail_response)
42
+ expect { Plaid::Connection.post("testing") }.to raise_error(Plaid::RequestFailed, "invalid credentials")
43
+ end
44
+
45
+ it "should throw a Plaid::NotFound on 404 response" do
46
+ stub = stub_request(:post, stub_url).to_return(status: 404, body: req_not_found)
47
+ expect { Plaid::Connection.post("testing") }.to raise_error(Plaid::NotFound, "product not found")
48
+ end
49
+ end
50
+
51
+ describe "#get" do
52
+ it "should send a get request" do
53
+ stub = stub_request(:get, stub_url).to_return({:body => {"response" => "OK"}.to_json})
54
+ Plaid::Connection.get("testing")
55
+ expect(stub).to have_requested(:get, stub_url)
56
+ end
57
+
58
+ it "should return response when no code available" do
59
+ stub = stub_request(:get, stub_url).to_return({:body => {"response" => "OK"}.to_json})
60
+ response = Plaid::Connection.get("testing")
61
+ expect(response).to eq({"response" => "OK"})
62
+ end
63
+
64
+ it "should return response when code not [1301, 1401, 1501, 1601]" do
65
+ stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1502, "response" => "OK"}.to_json})
66
+ response = Plaid::Connection.get("testing")
67
+ expect(response).to eq({"code" => 1502, "response" => "OK"})
68
+ end
69
+
70
+ it "should throw 404 for 1301 code" do
71
+ stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1301, "message" => "Doesn't matter", "resolve" => "Yep."}.to_json})
72
+ expect { Plaid::Connection.get("testing")}.to raise_error(Plaid::NotFound, "Doesn't matter")
73
+ end
74
+
75
+ it "should throw 404 for 1401 code" do
76
+ stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1401, "message" => "Doesn't matter", "resolve" => "Yep."}.to_json})
77
+ expect { Plaid::Connection.get("testing")}.to raise_error(Plaid::NotFound, "Doesn't matter")
78
+ end
79
+
80
+ it "should throw 404 for 1501 code" do
81
+ stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1501, "message" => "Doesn't matter", "resolve" => "Yep."}.to_json})
82
+ expect { Plaid::Connection.get("testing")}.to raise_error(Plaid::NotFound, "Doesn't matter")
83
+ end
84
+
85
+ it "should throw 404 for 1601 code" do
86
+ stub = stub_request(:get, stub_url).to_return({:body => {"code" => 1601, "message" => "Doesn't matter", "resolve" => "Yep."}.to_json})
87
+ expect { Plaid::Connection.get("testing")}.to raise_error(Plaid::NotFound, "Doesn't matter")
88
+ end
89
+
90
+ end
91
+
92
+ describe "#secure_get" do
93
+ it "should send a secure get request" do
94
+ stub = stub_request(:get, stub_url).to_return({:body => {"response" => "OK"}.to_json})
95
+ Plaid::Connection.secure_get("testing", "test_wells")
96
+ expect(stub).to have_requested(:get, stub_url).with(:body => {:access_token => "test_wells"})
97
+ end
98
+
99
+ it "should return response on 200 response" do
100
+ stub = stub_request(:get, stub_url).to_return({:body => {"response" => "OK"}.to_json})
101
+ response = Plaid::Connection.secure_get("testing", "test_wells")
102
+ expect(response).to eq({"response" => "OK"})
103
+ end
104
+
105
+ it "should return message on 201 response" do
106
+ stub = stub_request(:get, stub_url).to_return(status: 201, body: {"response" => "OK"}.to_json)
107
+ response = Plaid::Connection.secure_get("testing", "test_wells")
108
+ expect(response).to eq({:msg => "Requires further authentication", :body => {"response" => "OK"}})
109
+ end
110
+
111
+ it "should throw Plaid::BadRequest on 400 response" do
112
+ stub = stub_request(:get, stub_url).to_return(status: 400, body: bad_req_response)
113
+ expect { Plaid::Connection.secure_get("testing", "test_wells") }.to raise_error(Plaid::BadRequest, "invalid credentials")
114
+ end
115
+
116
+ it "should throw Plaid::Unauthorized on 401 response" do
117
+ stub = stub_request(:get, stub_url).to_return(status: 401, body: unauth_response)
118
+ expect { Plaid::Connection.secure_get("testing", "test_wells") }.to raise_error(Plaid::Unauthorized, "bad access_token")
119
+ end
120
+
121
+ it "should throw Plaid::RequestFailed on 402 response" do
122
+ stub = stub_request(:get, stub_url).to_return(status: 402, body: req_fail_response)
123
+ expect { Plaid::Connection.secure_get("testing", "test_wells") }.to raise_error(Plaid::RequestFailed, "invalid credentials")
124
+ end
125
+
126
+ it "should throw a Plaid::NotFound on 404 response" do
127
+ stub = stub_request(:get, stub_url).to_return(status: 404, body: req_not_found)
128
+ expect { Plaid::Connection.secure_get("testing", "test_wells") }.to raise_error(Plaid::NotFound, "product not found")
129
+ end
130
+ end
131
+
132
+ describe "#patch" do
133
+ it "should send a patch request" do
134
+ stub = stub_request(:patch, stub_url).to_return({:body => {"response" => "OK"}.to_json})
135
+ Plaid::Connection.patch("testing")
136
+ expect(stub).to have_requested(:patch, stub_url)
137
+ end
138
+
139
+ it "should return response on 200 response" do
140
+ stub = stub_request(:patch, stub_url).to_return({:body => {"response" => "OK"}.to_json})
141
+ response = Plaid::Connection.patch("testing")
142
+ expect(response).to eq({"response" => "OK"})
143
+ end
144
+
145
+ it "should return message on 201 response" do
146
+ stub = stub_request(:patch, stub_url).to_return(status: 201, body: {"response" => "OK"}.to_json)
147
+ response = Plaid::Connection.patch("testing")
148
+ expect(response).to eq({:msg => "Requires further authentication", :body => {"response" => "OK"}})
149
+ end
150
+
151
+ it "should throw Plaid::BadRequest on 400 response" do
152
+ stub = stub_request(:patch, stub_url).to_return(status: 400, body: bad_req_response)
153
+ expect { Plaid::Connection.patch("testing") }.to raise_error(Plaid::BadRequest, "invalid credentials")
154
+ end
155
+
156
+ it "should throw Plaid::Unauthorized on 401 response" do
157
+ stub = stub_request(:patch, stub_url).to_return(status: 401, body: unauth_response)
158
+ expect { Plaid::Connection.patch("testing") }.to raise_error(Plaid::Unauthorized, "bad access_token")
159
+ end
160
+
161
+ it "should throw Plaid::RequestFailed on 402 response" do
162
+ stub = stub_request(:patch, stub_url).to_return(status: 402, body: req_fail_response)
163
+ expect { Plaid::Connection.patch("testing") }.to raise_error(Plaid::RequestFailed, "invalid credentials")
164
+ end
165
+
166
+ it "should throw a Plaid::NotFound on 404 response" do
167
+ stub = stub_request(:patch, stub_url).to_return(status: 404, body: req_not_found)
168
+ expect { Plaid::Connection.patch("testing") }.to raise_error(Plaid::NotFound, "product not found")
169
+ end
170
+ end
171
+
172
+ describe "#delete" do
173
+ it "should send a delete request" do
174
+ stub = stub_request(:delete, stub_url)
175
+ Plaid::Connection.delete("testing")
176
+ expect(stub).to have_requested(:delete, stub_url)
177
+ end
178
+ end
179
+
180
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Plaid::PlaidError do
4
+ describe "#new" do
5
+ it "should allow code, message and resolution" do
6
+ error = Plaid::PlaidError.new 1, "testing", "fix it"
7
+ expect(error.code).to eq(1)
8
+ expect(error.message).to eq("testing")
9
+ expect(error.resolve).to eq("fix it")
10
+ end
11
+ end
12
+ end
@@ -28,7 +28,13 @@ RSpec.describe Plaid do
28
28
 
29
29
  context 'when account is locked' do
30
30
  let(:password) { 'plaid_locked' }
31
- it { expect(user.api_res).to eq 'User account is locked' }
31
+ it "raises a locked error" do
32
+ expect { user }.to raise_error { |error|
33
+ expect(error).to be_a(Plaid::RequestFailed)
34
+ expect(error.code).to eq(1205)
35
+ }
36
+ end
37
+
32
38
  end
33
39
 
34
40
  context 'with connection options' do
@@ -4,6 +4,9 @@ Bundler.setup
4
4
  require 'plaid'
5
5
  require 'pry' if ENV['DEBUG']
6
6
 
7
+ require 'webmock/rspec'
8
+ WebMock.allow_net_connect!
9
+
7
10
  Plaid.config do |p|
8
11
  p.customer_id = 'test_id'
9
12
  p.secret = 'test_secret'
metadata CHANGED
@@ -1,83 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plaid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.5.3
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-06-19 00:00:00.000000000 Z
11
+ date: 2015-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.1'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry-stack_explorer
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  description: Ruby gem wrapper for the Plaid API. Read more at the homepage, the wiki,
@@ -88,8 +102,8 @@ executables: []
88
102
  extensions: []
89
103
  extra_rdoc_files: []
90
104
  files:
91
- - ".gitignore"
92
- - ".travis.yml"
105
+ - .gitignore
106
+ - .travis.yml
93
107
  - Gemfile
94
108
  - LICENSE.txt
95
109
  - README.md
@@ -97,6 +111,7 @@ files:
97
111
  - lib/plaid.rb
98
112
  - lib/plaid/config.rb
99
113
  - lib/plaid/connection.rb
114
+ - lib/plaid/errors.rb
100
115
  - lib/plaid/models/account.rb
101
116
  - lib/plaid/models/category.rb
102
117
  - lib/plaid/models/exchange_token_response.rb
@@ -109,7 +124,9 @@ files:
109
124
  - spec/account_spec.rb
110
125
  - spec/category_spec.rb
111
126
  - spec/config_spec.rb
127
+ - spec/connection_spec.rb
112
128
  - spec/institution_spec.rb
129
+ - spec/plaid_error_spec.rb
113
130
  - spec/plaid_spec.rb
114
131
  - spec/spec_helper.rb
115
132
  - spec/transaction_spec.rb
@@ -124,17 +141,17 @@ require_paths:
124
141
  - lib
125
142
  required_ruby_version: !ruby/object:Gem::Requirement
126
143
  requirements:
127
- - - ">="
144
+ - - ! '>='
128
145
  - !ruby/object:Gem::Version
129
146
  version: '2.0'
130
147
  required_rubygems_version: !ruby/object:Gem::Requirement
131
148
  requirements:
132
- - - ">="
149
+ - - ! '>='
133
150
  - !ruby/object:Gem::Version
134
151
  version: '0'
135
152
  requirements: []
136
153
  rubyforge_project:
137
- rubygems_version: 2.4.7
154
+ rubygems_version: 2.4.8
138
155
  signing_key:
139
156
  specification_version: 4
140
157
  summary: Ruby bindings for Plaid
@@ -142,7 +159,9 @@ test_files:
142
159
  - spec/account_spec.rb
143
160
  - spec/category_spec.rb
144
161
  - spec/config_spec.rb
162
+ - spec/connection_spec.rb
145
163
  - spec/institution_spec.rb
164
+ - spec/plaid_error_spec.rb
146
165
  - spec/plaid_spec.rb
147
166
  - spec/spec_helper.rb
148
167
  - spec/transaction_spec.rb