synapsis 0.0.5 → 0.0.6

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