synapsis 0.0.3 → 0.0.4

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: c4a74f1ad20231953960bae852e5b6693e978f96
4
- data.tar.gz: 215f89362b3a8488d1d7589d6007fa731572a233
3
+ metadata.gz: a010707a291ff524db1960a548b8352e09c234ca
4
+ data.tar.gz: b3ade5344af580ff5b097de89de7a8b87ccf3541
5
5
  SHA512:
6
- metadata.gz: 465bbc3f41897a3baf214ff5f210746ab29d01614856d8912814d7fb2e2688f3b68b55d623b792cdce5929f501573269d3ad005486751771781e99712e781023
7
- data.tar.gz: 09b7fa936f75d0e5ffc524bea02ef4dddab0cf7f5da40a386ddcb036723b947ff5ba45130defb1c6df569218e110ea30abd075df035e6b093ef754c813ce6fba
6
+ metadata.gz: adcc1e4086f5fa54e6ea20b5057ea6ffe8cf7cc4d4c145f5e1bebfc8840e424cc17e5e916031e97d513bc5c673d932f99e023a9e5137130d8875fdd56a4ec71d
7
+ data.tar.gz: 39b71f8973a2e3b7b928967c65509f4270c5cc8af10900131dc3407a4823a941de52b0fd27c0ddc11c9a7beb7d61cbcfb5ab605cf84881bfa17f0cd8fa54d033
data/lib/synapsis/bank.rb CHANGED
@@ -1,6 +1,16 @@
1
1
  class Synapsis::Bank
2
2
  include Synapsis::Utilities
3
3
 
4
+ module AccountClass
5
+ PERSONAL = 1
6
+ BUSINESS = 2
7
+ end
8
+
9
+ module AccountType
10
+ CHECKING = 1
11
+ SAVINGS = 2
12
+ end
13
+
4
14
  attr_accessor :account_class,
5
15
  :account_num,
6
16
  :account_type,
@@ -40,7 +50,11 @@ class Synapsis::Bank
40
50
  req.body = build_json_from_variable_hash
41
51
  end
42
52
 
43
- return Synapsis::RetrievedBank.new(added_bank)
53
+ if JSON.parse(added_bank.body)['success']
54
+ Synapsis::RetrievedBank.new(added_bank)
55
+ else
56
+ Synapsis::Error.new(JSON.parse(added_bank.body))
57
+ end
44
58
  end
45
59
 
46
60
  def link
@@ -61,6 +75,17 @@ class Synapsis::Bank
61
75
  return Synapsis::RetrievedBank.new(new_bank)
62
76
  end
63
77
 
78
+ def self.remove(bank_id, oauth_consumer_key)
79
+ return Synapsis.connection.post do |req|
80
+ req.headers['Content-Type'] = 'application/json'
81
+ req.url "#{API_V2_PATH}bank/delete/"
82
+ req.body = JSON.generate(
83
+ bank_id: bank_id,
84
+ oauth_consumer_key: oauth_consumer_key
85
+ )
86
+ end
87
+ end
88
+
64
89
  def view_linked_banks
65
90
  Synapsis.connection.post do |req|
66
91
  req.headers['Content-Type'] = 'application/json'
@@ -68,39 +93,39 @@ class Synapsis::Bank
68
93
  req.body = build_json_from_variable_hash
69
94
  end
70
95
  end
96
+ end
97
+
98
+ class Synapsis::RetrievedBank
99
+ attr_accessor :account_class,
100
+ :account_number_string,
101
+ :account_type,
102
+ :address,
103
+ :balance,
104
+ :bank_name,
105
+ :date,
106
+ :email,
107
+ :id,
108
+ :is_active,
109
+ :is_buyer_default,
110
+ :is_seller_default,
111
+ :is_verified,
112
+ :mfa_verifed,
113
+ :name_on_account,
114
+ :nickname,
115
+ :phone_number,
116
+ :resource_uri,
117
+ :routing_number_string
71
118
 
72
- class Synapsis::RetrievedBank
73
- attr_accessor :account_class,
74
- :account_number_string,
75
- :account_type,
76
- :address,
77
- :balance,
78
- :bank_name,
79
- :date,
80
- :email,
81
- :id,
82
- :is_active,
83
- :is_buyer_default,
84
- :is_seller_default,
85
- :is_verified,
86
- :mfa_verifed,
87
- :name_on_account,
88
- :nickname,
89
- :phone_number,
90
- :resource_uri,
91
- :routing_number_string
92
-
93
- def initialize(synapse_response)
94
- parsed_response = JSON.parse(synapse_response.body)
95
-
96
- if parsed_response['banks']
97
- parsed_response['banks'].first.each do |k, v|
98
- send("#{k}=", v)
99
- end
100
- elsif parsed_response['bank']
101
- parsed_response['bank'].each do |k, v|
102
- send("#{k}=", v)
103
- end
119
+ def initialize(synapse_response)
120
+ parsed_response = JSON.parse(synapse_response.body)
121
+
122
+ if parsed_response['banks']
123
+ parsed_response['banks'].first.each do |k, v|
124
+ send("#{k}=", v)
125
+ end
126
+ elsif parsed_response['bank']
127
+ parsed_response['bank'].each do |k, v|
128
+ send("#{k}=", v)
104
129
  end
105
130
  end
106
131
  end
@@ -0,0 +1,7 @@
1
+ class Synapsis::Error
2
+ attr_accessor :reason
3
+
4
+ def initialize(error_params)
5
+ @reason = error_params['reason']
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Synapsis
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/synapsis.rb CHANGED
@@ -8,6 +8,7 @@ require "synapsis/utilities"
8
8
  require "synapsis/authentication"
9
9
  require "synapsis/user"
10
10
  require "synapsis/bank"
11
+ require "synapsis/error"
11
12
 
12
13
  module Synapsis
13
14
  class << self
@@ -1,9 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe Synapsis::Bank do
4
+ context 'namespacing' do
5
+ it 'has a namespace for both AccountClass and AccountType' do
6
+ expect(Synapsis::Bank::AccountClass::PERSONAL).to eq 1
7
+ expect(Synapsis::Bank::AccountClass::BUSINESS).to eq 2
8
+
9
+ expect(Synapsis::Bank::AccountType::CHECKING).to eq 1
10
+ expect(Synapsis::Bank::AccountType::SAVINGS).to eq 2
11
+ end
12
+ end
13
+
4
14
  context '#add' do
5
15
  it 'adds a bank account' do
6
-
7
16
  # We need to create a user because Synapse limits bank accounts to 5 per user.
8
17
  user_params = {
9
18
  email: Faker::Internet.email,
@@ -21,8 +30,8 @@ RSpec.describe Synapsis::Bank do
21
30
  routing_num: '121000358',
22
31
  nickname: 'Sourcepad Bank',
23
32
  oauth_consumer_key: new_user.access_token,
24
- account_type: '1',
25
- account_class: '1'
33
+ account_type: Synapsis::Bank::AccountType::CHECKING,
34
+ account_class: Synapsis::Bank::AccountClass::PERSONAL
26
35
  }
27
36
 
28
37
  new_bank = Synapsis::Bank.add(bank_params)
@@ -31,6 +40,34 @@ RSpec.describe Synapsis::Bank do
31
40
  expect(new_bank.name_on_account).to eq user_params[:fullname]
32
41
  expect(new_bank.nickname).to eq bank_params[:nickname]
33
42
  end
43
+
44
+ it 'adds a bank account (errors)' do
45
+ # We need to create a user because Synapse limits bank accounts to 5 per user.
46
+ user_params = {
47
+ email: Faker::Internet.email,
48
+ fullname: Faker::Name.name,
49
+ phonenumber: Faker::PhoneNumber.phone_number,
50
+ password: '5ourcep4d',
51
+ ip_address: '8.8.8.8'
52
+ }
53
+
54
+ new_user = Synapsis::User.create(user_params)
55
+
56
+ bank_params = {
57
+ fullname: 'NOT THE GUY',
58
+ account_num: '1111111112',
59
+ routing_num: '121000358',
60
+ nickname: 'Sourcepad Bank',
61
+ oauth_consumer_key: new_user.access_token,
62
+ account_type: Synapsis::Bank::AccountType::CHECKING,
63
+ account_class: Synapsis::Bank::AccountClass::PERSONAL
64
+ }
65
+
66
+ new_bank = Synapsis::Bank.add(bank_params)
67
+
68
+ expect(new_bank.class).to eq Synapsis::Error
69
+ expect(new_bank.reason).to be_a_kind_of String
70
+ end
34
71
  end
35
72
 
36
73
  context '#link' do
@@ -61,4 +98,34 @@ RSpec.describe Synapsis::Bank do
61
98
  expect(new_bank.bank_name).to eq bank_params[:bank]
62
99
  end
63
100
  end
101
+
102
+ context '#remove' do
103
+ it 'removes the bank' do
104
+ user_params = {
105
+ email: Faker::Internet.email,
106
+ fullname: Faker::Name.name,
107
+ phonenumber: Faker::PhoneNumber.phone_number,
108
+ password: '5ourcep4d',
109
+ ip_address: '8.8.8.8'
110
+ }
111
+
112
+ new_user = Synapsis::User.create(user_params)
113
+
114
+ bank_params = {
115
+ fullname: new_user.fullname,
116
+ account_num: '1111111112',
117
+ routing_num: '121000358',
118
+ nickname: 'Sourcepad Bank',
119
+ oauth_consumer_key: new_user.access_token,
120
+ account_type: Synapsis::Bank::AccountType::CHECKING,
121
+ account_class: Synapsis::Bank::AccountClass::PERSONAL
122
+ }
123
+
124
+ new_bank = Synapsis::Bank.add(bank_params)
125
+
126
+ removed_bank = Synapsis::Bank.remove(new_bank.id, new_user.access_token)
127
+
128
+ expect(JSON.parse(removed_bank.body)['success']).to eq true
129
+ end
130
+ end
64
131
  end
@@ -3,9 +3,11 @@ require 'spec_helper'
3
3
  RSpec.describe Synapsis::User do
4
4
  describe '#create' do
5
5
  it 'creates a user account and returns the SynapsePay username, access_token and refresh_token' do
6
+ user_email = Faker::Internet.email
7
+
6
8
  user_params = {
7
- email: Faker::Internet.email,
8
- fullname: Faker::Name.name,
9
+ email: user_email,
10
+ fullname: user_email,
9
11
  phonenumber: Faker::PhoneNumber.phone_number,
10
12
  password: '5ourcep4d',
11
13
  ip_address: '8.8.8.8'
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.3
4
+ version: 0.0.4
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-23 00:00:00.000000000 Z
11
+ date: 2015-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -111,6 +111,7 @@ files:
111
111
  - lib/synapsis.rb
112
112
  - lib/synapsis/authentication.rb
113
113
  - lib/synapsis/bank.rb
114
+ - lib/synapsis/error.rb
114
115
  - lib/synapsis/user.rb
115
116
  - lib/synapsis/utilities.rb
116
117
  - lib/synapsis/version.rb