synapsis 0.0.5 → 0.0.6

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: 39515f4c9f57097c0b5f9d4e097f07380e8b4bff
4
- data.tar.gz: d4b8e0bc134bbdf006bf33a867bfd15476dcc1b9
3
+ metadata.gz: f053fe7ebb33a87d6481ae87b43a22afb95034cb
4
+ data.tar.gz: c56bb4477c91d0b0798e9973986a2bb33156e8ea
5
5
  SHA512:
6
- metadata.gz: 29d082c48d52b647aad48c9e9a5ea6f5eb6e827fff3a6a15b0521393b83d7370ea5af39e220a1dd7417f9355e637eeea96c52a1546ddf3cd115606b736fe7543
7
- data.tar.gz: 716e68aa24fd729df6e7855d05578c885595c11099438feb786fe21a7beab62a9c818e0ed90e15d702cbb9428d67e040c4353318cd0a9cdb41ab77b246c9d42d
6
+ metadata.gz: 4b4f36ac061188c9a2e1ce644c31dc2808d833ec9e63bce24c4510d29f2a54ef4b2201472bacd954f0b8456b9642409959555aef3f13a660e0c788ed468f5f3f
7
+ data.tar.gz: a85cbd37d511f08fff1c0116366ee9107649ff85610137248a4a96757b8758437b54513f09679a6db9c1cac8a634624af6a3e46b1a99ee447d70257e86c9ff1c
data/lib/synapsis/bank.rb CHANGED
@@ -64,18 +64,33 @@ class Synapsis::Bank
64
64
  req.body = build_json_from_variable_hash
65
65
  end
66
66
 
67
- @access_token = JSON.parse(partially_linked_bank.body)['response']['access_token']
67
+ parsed_partially_linked_bank = JSON.parse(partially_linked_bank.body)
68
68
 
69
- new_bank = Synapsis.connection.post do |req|
70
- req.headers['Content-Type'] = 'application/json'
71
- req.url "#{API_V2_PATH}bank/mfa/?is_dev=yes"
72
- req.body = build_json_from_variable_hash
73
- end
69
+ if parsed_partially_linked_bank['success']
70
+ if parsed_partially_linked_bank['banks'] # This happens if the added bank has no MFA
71
+ return Synapsis::RetrievedBank.new(partially_linked_bank)
72
+ end
74
73
 
75
- if JSON.parse(new_bank.body)['success']
76
- Synapsis::RetrievedBank.new(new_bank)
74
+ @access_token = parsed_partially_linked_bank['response']['access_token']
75
+
76
+ new_bank = Synapsis.connection.post do |req|
77
+ req.headers['Content-Type'] = 'application/json'
78
+ req.url "#{API_V2_PATH}bank/mfa/?is_dev=yes"
79
+ req.body = build_json_from_variable_hash
80
+ end
81
+
82
+ if JSON.parse(new_bank.body)['banks']
83
+ Synapsis::RetrievedBank.new(new_bank)
84
+ else
85
+ Synapsis::Error.new({
86
+ "reason" => "Wrong MFA answer."
87
+ })
88
+ end
77
89
  else
78
- Synapsis::Error.new(JSON.parse(new_bank.body))
90
+ # API response is different so we parse the API response to get the message we need
91
+ Synapsis::Error.new({
92
+ "reason" => JSON.parse(partially_linked_bank.body)['message']
93
+ })
79
94
  end
80
95
  end
81
96
 
@@ -1,3 +1,3 @@
1
1
  module Synapsis
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -0,0 +1,252 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Synapsis::Bank do
4
+ context '#link' do
5
+ let(:user_params) { {
6
+ email: Faker::Internet.email,
7
+ fullname: Faker::Name.name,
8
+ phonenumber: Faker::PhoneNumber.phone_number,
9
+ password: '5ourcep4d',
10
+ ip_address: '8.8.8.8'
11
+ }}
12
+
13
+ context 'question-based MFA' do
14
+ context 'happy path' do
15
+ it 'adds a bank account' do
16
+ new_user = Synapsis::User.create(user_params)
17
+
18
+ bank_params = {
19
+ username: 'synapse_good',
20
+ password: 'test1234',
21
+ oauth_consumer_key: new_user.access_token,
22
+ bank: 'PNC',
23
+ mfa: 'test_answer'
24
+ }
25
+
26
+ new_bank = Synapsis::Bank.link(bank_params)
27
+
28
+ expect(new_bank.name_on_account).to eq user_params[:fullname]
29
+ expect(new_bank.bank_name).to eq bank_params[:bank]
30
+ end
31
+ end
32
+
33
+ context 'errors' do
34
+ it 'bad username returns a SynapsisError' do
35
+ new_user = Synapsis::User.create(user_params)
36
+
37
+ bank_params = {
38
+ username: 'WRONG USERNAME',
39
+ password: 'test1234',
40
+ pin: '1234',
41
+ oauth_consumer_key: new_user.access_token,
42
+ bank: 'Regions North Carolina',
43
+ mfa: 'test_answer'
44
+ }
45
+
46
+ new_bank = Synapsis::Bank.link(bank_params)
47
+
48
+ expect(new_bank.class).to eq Synapsis::Error
49
+ expect(new_bank.reason).to be_a_kind_of String
50
+ end
51
+
52
+ it 'bad password returns a SynapsisError' do
53
+ new_user = Synapsis::User.create(user_params)
54
+
55
+ bank_params = {
56
+ username: 'synapse_good',
57
+ password: 'WRONG PASSWORD',
58
+ pin: '1234',
59
+ oauth_consumer_key: new_user.access_token,
60
+ bank: 'US Bank',
61
+ mfa: 'test_answer'
62
+ }
63
+
64
+ new_bank = Synapsis::Bank.link(bank_params)
65
+
66
+ expect(new_bank.class).to eq Synapsis::Error
67
+ expect(new_bank.reason).to be_a_kind_of String
68
+ end
69
+
70
+ it 'bad mfa answer returns a SynapsisError' do
71
+ new_user = Synapsis::User.create(user_params)
72
+
73
+ bank_params = {
74
+ username: 'synapse_good',
75
+ password: 'test1234',
76
+ oauth_consumer_key: new_user.access_token,
77
+ bank: 'Regions Kentucky',
78
+ mfa: 'WRONG MFA ANSWER'
79
+ }
80
+
81
+ new_bank = Synapsis::Bank.link(bank_params)
82
+
83
+ expect(new_bank.class).to eq Synapsis::Error
84
+ expect(new_bank.reason).to be_a_kind_of String
85
+ end
86
+
87
+ xit 'bad PIN returns a SynapsisError--pending since trying test data with a wrong PIN still completes the linking process' do
88
+ new_user = Synapsis::User.create(user_params)
89
+
90
+ bank_params = {
91
+ username: 'synapse_good',
92
+ password: 'test1234',
93
+ pin: 'WRONG PIN',
94
+ oauth_consumer_key: new_user.access_token,
95
+ bank: 'USAA',
96
+ mfa: 'test_answer'
97
+ }
98
+
99
+ new_bank = Synapsis::Bank.link(bank_params)
100
+
101
+ expect(new_bank.class).to eq Synapsis::Error
102
+ expect(new_bank.reason).to be_a_kind_of String
103
+ end
104
+ end
105
+ end
106
+
107
+ context 'code-based MFA' do
108
+ it 'adds a bank account' do
109
+ new_user = Synapsis::User.create(user_params)
110
+
111
+ bank_params = {
112
+ username: 'synapse_code',
113
+ password: 'test1234',
114
+ oauth_consumer_key: new_user.access_token,
115
+ bank: 'Ally',
116
+ mfa: 'test_answer'
117
+ }
118
+
119
+ new_bank = Synapsis::Bank.link(bank_params)
120
+
121
+ expect(new_bank.name_on_account).to eq user_params[:fullname]
122
+ expect(new_bank.bank_name).to eq bank_params[:bank]
123
+ end
124
+
125
+ context 'errors' do
126
+ it 'bad username returns a SynapsisError' do
127
+ new_user = Synapsis::User.create(user_params)
128
+
129
+ bank_params = {
130
+ username: 'WRONG USERNAME',
131
+ password: 'test1234',
132
+ pin: '1234',
133
+ oauth_consumer_key: new_user.access_token,
134
+ bank: 'Ally',
135
+ mfa: 'test_answer'
136
+ }
137
+
138
+ new_bank = Synapsis::Bank.link(bank_params)
139
+
140
+ expect(new_bank.class).to eq Synapsis::Error
141
+ expect(new_bank.reason).to be_a_kind_of String
142
+ end
143
+
144
+ it 'bad password returns a SynapsisError' do
145
+ new_user = Synapsis::User.create(user_params)
146
+
147
+ bank_params = {
148
+ username: 'synapse_code',
149
+ password: 'WRONG PASSWORD',
150
+ pin: '1234',
151
+ oauth_consumer_key: new_user.access_token,
152
+ bank: 'Ally',
153
+ mfa: 'test_answer'
154
+ }
155
+
156
+ new_bank = Synapsis::Bank.link(bank_params)
157
+
158
+ expect(new_bank.class).to eq Synapsis::Error
159
+ expect(new_bank.reason).to be_a_kind_of String
160
+ end
161
+
162
+ it 'bad mfa answer returns a SynapsisError' do
163
+ new_user = Synapsis::User.create(user_params)
164
+
165
+ bank_params = {
166
+ username: 'synapse_code',
167
+ password: 'test1234',
168
+ oauth_consumer_key: new_user.access_token,
169
+ bank: 'Chase',
170
+ mfa: 'WRONG MFA ANSWER'
171
+ }
172
+
173
+ new_bank = Synapsis::Bank.link(bank_params)
174
+
175
+ expect(new_bank.class).to eq Synapsis::Error
176
+ expect(new_bank.reason).to be_a_kind_of String
177
+ end
178
+ end
179
+ end
180
+
181
+ context 'no MFA' do
182
+ context 'happy path' do
183
+ it 'adds a bank account' do
184
+ new_user = Synapsis::User.create(user_params)
185
+
186
+ bank_params = {
187
+ username: 'synapse_nomfa',
188
+ password: 'test1234',
189
+ oauth_consumer_key: new_user.access_token,
190
+ bank: 'Capital One 360'
191
+ }
192
+
193
+ new_bank = Synapsis::Bank.link(bank_params)
194
+
195
+ expect(new_bank.name_on_account).to eq user_params[:fullname]
196
+ expect(new_bank.bank_name).to eq bank_params[:bank]
197
+ end
198
+ end
199
+
200
+ context 'errors' do
201
+ it 'bad username returns a SynapsisError' do
202
+ new_user = Synapsis::User.create(user_params)
203
+
204
+ bank_params = {
205
+ username: 'WRONG USERNAME',
206
+ password: 'test1234',
207
+ oauth_consumer_key: new_user.access_token,
208
+ bank: 'Capital One 360'
209
+ }
210
+
211
+ new_bank = Synapsis::Bank.link(bank_params)
212
+
213
+ expect(new_bank.class).to eq Synapsis::Error
214
+ expect(new_bank.reason).to be_a_kind_of String
215
+ end
216
+
217
+ it 'bad password returns a SynapsisError' do
218
+ new_user = Synapsis::User.create(user_params)
219
+
220
+ bank_params = {
221
+ username: 'synapsenomfa',
222
+ password: 'test12345',
223
+ oauth_consumer_key: new_user.access_token,
224
+ bank: 'Capital One 360'
225
+ }
226
+
227
+ new_bank = Synapsis::Bank.link(bank_params)
228
+
229
+ expect(new_bank.class).to eq Synapsis::Error
230
+ expect(new_bank.reason).to be_a_kind_of String
231
+ end
232
+
233
+ it 'bad mfa answer returns a SynapsisError' do
234
+ new_user = Synapsis::User.create(user_params)
235
+
236
+ bank_params = {
237
+ username: 'synapse_good',
238
+ password: 'test1234',
239
+ oauth_consumer_key: new_user.access_token,
240
+ bank: 'Regions Kentucky',
241
+ mfa: 'WRONG MFA ANSWER'
242
+ }
243
+
244
+ new_bank = Synapsis::Bank.link(bank_params)
245
+
246
+ expect(new_bank.class).to eq Synapsis::Error
247
+ expect(new_bank.reason).to be_a_kind_of String
248
+ end
249
+ end
250
+ end
251
+ end
252
+ end
@@ -36,7 +36,6 @@ RSpec.describe Synapsis::Bank do
36
36
 
37
37
  new_bank = Synapsis::Bank.add(bank_params)
38
38
 
39
- expect(new_bank.is_active).to eq true
40
39
  expect(new_bank.name_on_account).to eq user_params[:fullname]
41
40
  expect(new_bank.nickname).to eq bank_params[:nickname]
42
41
  end
@@ -70,35 +69,6 @@ RSpec.describe Synapsis::Bank do
70
69
  end
71
70
  end
72
71
 
73
- context '#link' do
74
- it 'adds a bank account' do
75
- user_params = {
76
- email: Faker::Internet.email,
77
- fullname: Faker::Name.name,
78
- phonenumber: Faker::PhoneNumber.phone_number,
79
- password: '5ourcep4d',
80
- ip_address: '8.8.8.8'
81
- }
82
-
83
- new_user = Synapsis::User.create(user_params)
84
-
85
- bank_params = {
86
- username: 'synapse_good',
87
- password: 'test1234',
88
- pin: '1234',
89
- oauth_consumer_key: new_user.access_token,
90
- bank: 'Wells Fargo',
91
- mfa: 'test_answer'
92
- }
93
-
94
- new_bank = Synapsis::Bank.link(bank_params)
95
-
96
- expect(new_bank.is_active).to eq true
97
- expect(new_bank.name_on_account).to eq user_params[:fullname]
98
- expect(new_bank.bank_name).to eq bank_params[:bank]
99
- end
100
- end
101
-
102
72
  context '#remove' do
103
73
  it 'removes the bank' do
104
74
  user_params = {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synapsis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daryll Santos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-29 00:00:00.000000000 Z
11
+ date: 2015-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -119,6 +119,7 @@ files:
119
119
  - spec/spec_helper.rb
120
120
  - spec/support/json_helpers.rb
121
121
  - spec/synapsis/authentication_spec.rb
122
+ - spec/synapsis/bank_link_spec.rb
122
123
  - spec/synapsis/bank_spec.rb
123
124
  - spec/synapsis/user_spec.rb
124
125
  - synapsis.gemspec
@@ -151,5 +152,6 @@ test_files:
151
152
  - spec/spec_helper.rb
152
153
  - spec/support/json_helpers.rb
153
154
  - spec/synapsis/authentication_spec.rb
155
+ - spec/synapsis/bank_link_spec.rb
154
156
  - spec/synapsis/bank_spec.rb
155
157
  - spec/synapsis/user_spec.rb