synapsis 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/synapsis.rb +1 -0
- data/lib/synapsis/bank.rb +5 -0
- data/lib/synapsis/card.rb +2 -0
- data/lib/synapsis/order.rb +10 -0
- data/lib/synapsis/user.rb +43 -0
- data/lib/synapsis/version.rb +1 -1
- data/spec/support/create_user_helper.rb +14 -0
- data/spec/synapsis/bank_link_spec.rb +17 -2
- data/spec/synapsis/bank_spec.rb +5 -3
- data/spec/synapsis/mass_pay_spec.rb +7 -10
- data/spec/synapsis/order_spec.rb +11 -1
- data/spec/synapsis/user_spec.rb +83 -1
- data/spec/test_file.txt +1 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4dba020d1db06c8514fcbd98c992fe177f30965
|
4
|
+
data.tar.gz: ae4bdaececc8d77fd3d9f8356d9b3c8f08f7f5ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b095652236ee088bd5828fee5113638347ee053863962a932c5be0c5233ffe333787e65d78a1dda9df54bf20327d64a3572bd433dbd54cb8aa4b44413beeb369
|
7
|
+
data.tar.gz: 825c6e99316e02f09c84b46f8f9eb3a36c9335b8c497d262f29793e11d66cf5b9bdcb929b9a304d4e6788137fcea3637b2021a9621e35849df77bc42746134ac
|
data/lib/synapsis.rb
CHANGED
@@ -31,6 +31,7 @@ module Synapsis
|
|
31
31
|
|
32
32
|
def connection
|
33
33
|
@connection ||= Faraday.new(url: synapse_url) do |faraday|
|
34
|
+
faraday.request :multipart # form-encode POST params
|
34
35
|
faraday.request :url_encoded # form-encode POST params
|
35
36
|
faraday.response :logger # log requests to STDOUT
|
36
37
|
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
|
data/lib/synapsis/bank.rb
CHANGED
@@ -66,6 +66,11 @@ class Synapsis::Bank < Synapsis::APIResource
|
|
66
66
|
return_response(response)
|
67
67
|
end
|
68
68
|
|
69
|
+
def self.view_bank(oauth_token:, bank_id: )
|
70
|
+
response = view_request(oauth_consumer_key: oauth_token, id: bank_id)
|
71
|
+
return_response(response)
|
72
|
+
end
|
73
|
+
|
69
74
|
def self.remove(bank_id, oauth_consumer_key)
|
70
75
|
params = {
|
71
76
|
bank_id: bank_id,
|
data/lib/synapsis/card.rb
CHANGED
data/lib/synapsis/order.rb
CHANGED
@@ -21,6 +21,12 @@ class Synapsis::Order < Synapsis::APIResource
|
|
21
21
|
return_response(response)
|
22
22
|
end
|
23
23
|
|
24
|
+
# oauth_consumer_key (required):, order_id:, supp_id:
|
25
|
+
def self.view_recent(params)
|
26
|
+
response = request(:post, view_recent_url, params)
|
27
|
+
return_response(response)
|
28
|
+
end
|
29
|
+
|
24
30
|
# Consumer key of the seller
|
25
31
|
def self.void(order_id:, oauth_consumer_key:)
|
26
32
|
params = {
|
@@ -49,5 +55,9 @@ class Synapsis::Order < Synapsis::APIResource
|
|
49
55
|
def self.void_url
|
50
56
|
"#{API_V2_PATH}order/void"
|
51
57
|
end
|
58
|
+
|
59
|
+
def self.view_recent_url
|
60
|
+
"#{API_V2_PATH}order/recent"
|
61
|
+
end
|
52
62
|
end
|
53
63
|
|
data/lib/synapsis/user.rb
CHANGED
@@ -23,10 +23,41 @@ class Synapsis::User < Synapsis::APIResource
|
|
23
23
|
return_response(response)
|
24
24
|
end
|
25
25
|
|
26
|
+
def self.add_ssn(params)
|
27
|
+
response = request(:post, add_ssn_url, params)
|
28
|
+
|
29
|
+
# Synapse incorrectly returns SSN validation fails as 200. Thus we have to override default return_reponse behavior
|
30
|
+
if parse_as_synapse_resource(response).success
|
31
|
+
return_response(response)
|
32
|
+
else
|
33
|
+
raise Synapsis::Error, parse_as_synapse_resource(response).reason
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.verify(params)
|
38
|
+
response = request(:post, verify_ssn_url, params)
|
39
|
+
|
40
|
+
# Synapse incorrectly returns SSN validation fails as 200. Thus we have to override default return_reponse behavior
|
41
|
+
if parse_as_synapse_resource(response).success
|
42
|
+
return_response(response)
|
43
|
+
else
|
44
|
+
raise Synapsis::Error, parse_as_synapse_resource(response).reason
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.add_document(params)
|
49
|
+
response = request(:post, add_document_url, params.merge(attachment: Faraday::UploadIO.new(params[:attachment], 'image/jpeg')))
|
50
|
+
return_response(response)
|
51
|
+
end
|
52
|
+
|
26
53
|
def self.view_linked_banks(oauth_token)
|
27
54
|
Synapsis::Bank.view_linked_banks(oauth_token)
|
28
55
|
end
|
29
56
|
|
57
|
+
def self.view_recent_orders(params)
|
58
|
+
Synapsis::Order.view_recent_orders(params)
|
59
|
+
end
|
60
|
+
|
30
61
|
private
|
31
62
|
|
32
63
|
def self.client_credentials
|
@@ -43,5 +74,17 @@ class Synapsis::User < Synapsis::APIResource
|
|
43
74
|
def self.refresh_url
|
44
75
|
"#{API_V2_PATH}user/refresh"
|
45
76
|
end
|
77
|
+
|
78
|
+
def self.add_ssn_url
|
79
|
+
"#{API_V2_PATH}user/ssn/add"
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.verify_ssn_url
|
83
|
+
"#{API_V2_PATH}user/ssn/answer"
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.add_document_url
|
87
|
+
"#{API_V2_PATH}user/doc/add"
|
88
|
+
end
|
46
89
|
end
|
47
90
|
|
data/lib/synapsis/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
def create_user
|
2
|
+
user_email = Faker::Internet.email[0, 29] # Limit 30 characters
|
3
|
+
|
4
|
+
user_params = {
|
5
|
+
email: user_email,
|
6
|
+
fullname: user_email,
|
7
|
+
phonenumber: Faker::PhoneNumber.phone_number,
|
8
|
+
password: '5ourcep4d',
|
9
|
+
ip_address: '8.8.8.8'
|
10
|
+
}
|
11
|
+
|
12
|
+
return Synapsis::User.create(user_params)
|
13
|
+
end
|
14
|
+
|
@@ -99,7 +99,22 @@ RSpec.describe Synapsis::Bank do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
context 'errors' do
|
102
|
-
it 'bad username returns a SynapsisError' do
|
102
|
+
it 'bad username returns a SynapsisError--generic error (used Chase as an example)' do
|
103
|
+
new_user = Synapsis::User.create(user_params)
|
104
|
+
|
105
|
+
bank_params = {
|
106
|
+
username: 'WRONG USERNAME',
|
107
|
+
password: 'test1234',
|
108
|
+
pin: '1234',
|
109
|
+
oauth_consumer_key: new_user.access_token,
|
110
|
+
bank: 'Chase',
|
111
|
+
mfa: 'test_answer'
|
112
|
+
}
|
113
|
+
|
114
|
+
expect { Synapsis::Bank.link(bank_params) }.to raise_error(Synapsis::Error).with_message('The username or password provided were not correct.')
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'bad username returns a SynapsisError--Ally bank specific error message' do
|
103
118
|
new_user = Synapsis::User.create(user_params)
|
104
119
|
|
105
120
|
bank_params = {
|
@@ -111,7 +126,7 @@ RSpec.describe Synapsis::Bank do
|
|
111
126
|
mfa: 'test_answer'
|
112
127
|
}
|
113
128
|
|
114
|
-
expect { Synapsis::Bank.link(bank_params) }.to raise_error(Synapsis::Error).with_message('
|
129
|
+
expect { Synapsis::Bank.link(bank_params) }.to raise_error(Synapsis::Error).with_message('Problems logging in? You can go to the online banking login page at allybank.com and select Forgot Your Username or call us 24/7 for help. Mobile banking is not available to Ally Auto or Mortgage customers at this time.')
|
115
130
|
end
|
116
131
|
|
117
132
|
it 'bad mfa answer returns a SynapsisError' do
|
data/spec/synapsis/bank_spec.rb
CHANGED
@@ -11,7 +11,7 @@ RSpec.describe Synapsis::Bank do
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
context '.add/#remove' do
|
14
|
+
context '.add/.view_bank/#remove' do
|
15
15
|
it 'adds and removes a bank account' do
|
16
16
|
random_persons_access_token = 'dcd234d9d9fb55ad9711c4c41e254868ef3768d4'
|
17
17
|
|
@@ -31,6 +31,8 @@ RSpec.describe Synapsis::Bank do
|
|
31
31
|
expect(new_bank.bank.name_on_account).to eq viewed_user.user.fullname
|
32
32
|
expect(new_bank.bank.nickname.downcase).to eq bank_params[:nickname].downcase
|
33
33
|
|
34
|
+
viewed_bank = Synapsis::Bank.view_bank(oauth_token: random_persons_access_token, bank_id: new_bank.bank.id)
|
35
|
+
|
34
36
|
removed_bank = Synapsis::Bank.remove(new_bank.bank.id, random_persons_access_token)
|
35
37
|
|
36
38
|
expect(removed_bank.success).to eq true
|
@@ -80,7 +82,7 @@ RSpec.describe Synapsis::Bank do
|
|
80
82
|
account_num: '1111111112',
|
81
83
|
routing_num: '121000358',
|
82
84
|
nickname: 'Sourcepad Bank',
|
83
|
-
oauth_consumer_key: new_user_response.
|
85
|
+
oauth_consumer_key: new_user_response.oauth_consumer_key,
|
84
86
|
account_type: Synapsis::Bank::AccountType::CHECKING,
|
85
87
|
account_class: Synapsis::Bank::AccountClass::PERSONAL
|
86
88
|
}
|
@@ -89,7 +91,7 @@ RSpec.describe Synapsis::Bank do
|
|
89
91
|
second_bank_response = Synapsis::Bank.add(bank_params)
|
90
92
|
third_bank_response = Synapsis::Bank.add(bank_params)
|
91
93
|
|
92
|
-
set_bank_primary_response = Synapsis::Bank.set_as_primary(bank_id: second_bank_response.bank.id, oauth_consumer_key: new_user_response.
|
94
|
+
set_bank_primary_response = Synapsis::Bank.set_as_primary(bank_id: second_bank_response.bank.id, oauth_consumer_key: new_user_response.oauth_consumer_key)
|
93
95
|
|
94
96
|
expect(set_bank_primary_response.success).to be_truthy
|
95
97
|
end
|
@@ -118,19 +118,16 @@ RSpec.describe Synapsis::MassPay do
|
|
118
118
|
expect { Synapsis::MassPay.show(mass_pay_id: 721, oauth_consumer_key: 'WRONG KEY') }.to raise_error(Synapsis::Error).with_message('Error in OAuth Authentication.')
|
119
119
|
|
120
120
|
# Bad ID
|
121
|
-
expect { Synapsis::MassPay.show(mass_pay_id: 'a', oauth_consumer_key: users_consumer_key) }.to raise_error(Synapsis::Error).with_message('
|
121
|
+
expect { Synapsis::MassPay.show(mass_pay_id: 'a', oauth_consumer_key: users_consumer_key) }.to raise_error(Synapsis::Error).with_message('id not formatted correctly.')
|
122
122
|
|
123
|
-
#
|
124
|
-
expect
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
123
|
+
# No mass_pay_id argument: fails
|
124
|
+
expect { Synapsis::MassPay.show(oauth_consumer_key: users_consumer_key) }.to raise_error(Synapsis::Error).with_message('id not formatted correctly.')
|
128
125
|
|
129
|
-
|
130
|
-
|
131
|
-
mass_pay_response = Synapsis::MassPay.show(oauth_consumer_key: users_consumer_key)
|
126
|
+
# If mass_pay_id isn't owned by the user, Synapse's behavior is to return an array of empty mass_pays.
|
127
|
+
mass_pay_with_bad_id_but_is_integer = Synapsis::MassPay.show(mass_pay_id: 99999, oauth_consumer_key: users_consumer_key)
|
132
128
|
|
133
|
-
|
129
|
+
expect(mass_pay_with_bad_id_but_is_integer.mass_pays.count).to eq 0
|
130
|
+
end
|
134
131
|
end
|
135
132
|
end
|
136
133
|
end
|
data/spec/synapsis/order_spec.rb
CHANGED
@@ -29,7 +29,7 @@ RSpec.describe Synapsis::Order do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
it 'pending due to a bug wherein the buyer\'s balance does not get decremented--subtracts the money from the consumer\'s account and adds to the seller\'s account' do
|
33
33
|
buyer_account_balance = Synapsis::User.view(buyer_consumer_key).user.balance
|
34
34
|
seller_account_balance = Synapsis::User.view(seller_consumer_key).user.balance
|
35
35
|
|
@@ -107,4 +107,14 @@ RSpec.describe Synapsis::Order do
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
end
|
110
|
+
|
111
|
+
describe '.view_recent_orders' do
|
112
|
+
it 'views the recent orders' do
|
113
|
+
token = 'M9Ned3lWBokYMsdZcDLUBIFuOOmCyG1fYauuNpzT'
|
114
|
+
order_response = Synapsis::Order.view_recent(oauth_consumer_key: token)
|
115
|
+
|
116
|
+
expect(order_response.success).to be_truthy
|
117
|
+
expect(order_response).to respond_to(:orders)
|
118
|
+
end
|
119
|
+
end
|
110
120
|
end
|
data/spec/synapsis/user_spec.rb
CHANGED
@@ -16,7 +16,7 @@ RSpec.describe Synapsis::User do
|
|
16
16
|
new_synapse_user = Synapsis::User.create(user_params)
|
17
17
|
|
18
18
|
['access_token', 'oauth_consumer_key', 'expires_in',
|
19
|
-
'
|
19
|
+
'refresh_token', 'success', 'username', 'user_id'].each do |k|
|
20
20
|
expect(new_synapse_user.send(k)).not_to be_nil
|
21
21
|
end
|
22
22
|
end
|
@@ -81,6 +81,88 @@ RSpec.describe Synapsis::User do
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
describe '.add_ssn and .verify_ssn' do
|
85
|
+
let!(:ssn_information) {{
|
86
|
+
birth_day: 23,
|
87
|
+
birth_month: 8,
|
88
|
+
birth_year: 1980,
|
89
|
+
name_first: 'Jon',
|
90
|
+
name_last: 'Doe',
|
91
|
+
ssn: '1111',
|
92
|
+
address_street1: '1 Infinite Loop',
|
93
|
+
address_postal_code: '95014',
|
94
|
+
address_country_code: 'US'
|
95
|
+
}}
|
96
|
+
|
97
|
+
context 'happy path' do
|
98
|
+
it 'SSN validations fails: return a Synapsis error' do
|
99
|
+
new_synapse_user = create_user
|
100
|
+
|
101
|
+
SYNAPSE_SANDBOX_SSN_VALIDATION_SUCCEEDS_VALUE = '0000'
|
102
|
+
|
103
|
+
ssn_validation_succeeds_params = ssn_information.merge(oauth_consumer_key: new_synapse_user.oauth_consumer_key, ssn: SYNAPSE_SANDBOX_SSN_VALIDATION_SUCCEEDS_VALUE)
|
104
|
+
|
105
|
+
successful_add_ssn_response = Synapsis::User.add_ssn(ssn_validation_succeeds_params)
|
106
|
+
|
107
|
+
expect(successful_add_ssn_response.success).to eq true
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'errors' do
|
112
|
+
it 'SSN validations fails: return a Synapsis error' do
|
113
|
+
user_email = Faker::Internet.email[0, 29] # Limit 30 characters
|
114
|
+
|
115
|
+
user_params = {
|
116
|
+
email: user_email,
|
117
|
+
fullname: user_email,
|
118
|
+
phonenumber: Faker::PhoneNumber.phone_number,
|
119
|
+
password: '5ourcep4d',
|
120
|
+
ip_address: '8.8.8.8'
|
121
|
+
}
|
122
|
+
|
123
|
+
new_synapse_user = Synapsis::User.create(user_params)
|
124
|
+
|
125
|
+
SYNAPSE_SANDBOX_SSN_VALIDATION_FAILS_VALUE = '1111'
|
126
|
+
|
127
|
+
ssn_validation_fails_params = ssn_information.merge(oauth_consumer_key: new_synapse_user.oauth_consumer_key, ssn: SYNAPSE_SANDBOX_SSN_VALIDATION_FAILS_VALUE)
|
128
|
+
|
129
|
+
expect { Synapsis::User.add_ssn(ssn_validation_fails_params) }.to raise_error(Synapsis::Error).with_message('Invalid SSN information supplied')
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'verify ssn' do
|
134
|
+
xit 'need to consult with synapse re: verify SSN intended results' do
|
135
|
+
new_synapse_user = create_user
|
136
|
+
|
137
|
+
SYNAPSE_SANDBOX_SSN_VALIDATION_NEEDS_TO_BE_VERIFIED_VALUE = '3333'
|
138
|
+
|
139
|
+
ssn_validation_succeeds_params = ssn_information.merge(oauth_consumer_key: new_synapse_user.oauth_consumer_key, ssn: SYNAPSE_SANDBOX_SSN_VALIDATION_NEEDS_TO_BE_VERIFIED_VALUE)
|
140
|
+
|
141
|
+
successful_add_ssn_response = Synapsis::User.add_ssn(ssn_validation_succeeds_params)
|
142
|
+
|
143
|
+
expect(successful_add_ssn_response.success).to eq true
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe '.add_document' do
|
149
|
+
context 'happy path' do
|
150
|
+
it 'shows the user\'s balance and linked banks' do
|
151
|
+
token = 'da2e45d5665551667ba6e08292407b56daa6ea43'
|
152
|
+
|
153
|
+
doc_params = {
|
154
|
+
attachment: 'spec/test_file.txt',
|
155
|
+
is_base_64: true,
|
156
|
+
oauth_consumer_key: token
|
157
|
+
}
|
158
|
+
|
159
|
+
successful_add_document_response = Synapsis::User.add_document(doc_params)
|
160
|
+
|
161
|
+
expect(successful_add_document_response.success).to eq true
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
84
166
|
describe '.view_linked_banks' do
|
85
167
|
context 'happy path' do
|
86
168
|
it 'shows the user\'s balance and linked banks' do
|
data/spec/test_file.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Hello
|
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.12
|
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-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -125,6 +125,7 @@ files:
|
|
125
125
|
- lib/synapsis/withdrawal.rb
|
126
126
|
- spec/config.yml
|
127
127
|
- spec/spec_helper.rb
|
128
|
+
- spec/support/create_user_helper.rb
|
128
129
|
- spec/support/routing_number_helpers.rb
|
129
130
|
- spec/synapsis/api_resource_spec.rb
|
130
131
|
- spec/synapsis/bank_link_spec.rb
|
@@ -136,6 +137,7 @@ files:
|
|
136
137
|
- spec/synapsis/order_spec.rb
|
137
138
|
- spec/synapsis/user_spec.rb
|
138
139
|
- spec/synapsis/withdrawal_spec.rb
|
140
|
+
- spec/test_file.txt
|
139
141
|
- synapsis.gemspec
|
140
142
|
homepage: ''
|
141
143
|
licenses:
|
@@ -164,6 +166,7 @@ summary: Ruby wrapper to the SynapsePay API
|
|
164
166
|
test_files:
|
165
167
|
- spec/config.yml
|
166
168
|
- spec/spec_helper.rb
|
169
|
+
- spec/support/create_user_helper.rb
|
167
170
|
- spec/support/routing_number_helpers.rb
|
168
171
|
- spec/synapsis/api_resource_spec.rb
|
169
172
|
- spec/synapsis/bank_link_spec.rb
|
@@ -175,3 +178,4 @@ test_files:
|
|
175
178
|
- spec/synapsis/order_spec.rb
|
176
179
|
- spec/synapsis/user_spec.rb
|
177
180
|
- spec/synapsis/withdrawal_spec.rb
|
181
|
+
- spec/test_file.txt
|