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 +4 -4
- data/lib/synapsis/bank.rb +24 -9
- data/lib/synapsis/version.rb +1 -1
- data/spec/synapsis/bank_link_spec.rb +252 -0
- data/spec/synapsis/bank_spec.rb +0 -30
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f053fe7ebb33a87d6481ae87b43a22afb95034cb
|
4
|
+
data.tar.gz: c56bb4477c91d0b0798e9973986a2bb33156e8ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
67
|
+
parsed_partially_linked_bank = JSON.parse(partially_linked_bank.body)
|
68
68
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
-
|
76
|
-
|
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
|
-
|
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
|
|
data/lib/synapsis/version.rb
CHANGED
@@ -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
|
data/spec/synapsis/bank_spec.rb
CHANGED
@@ -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.
|
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-
|
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
|