spreedly 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY.md +11 -0
- data/README.md +2 -2
- data/lib/spreedly/common/fields.rb +0 -1
- data/lib/spreedly/connection.rb +2 -2
- data/lib/spreedly/environment.rb +34 -5
- data/lib/spreedly/gateway.rb +22 -0
- data/lib/spreedly/payment_methods/bank_account.rb +9 -0
- data/lib/spreedly/payment_methods/payment_method.rb +9 -0
- data/lib/spreedly/transactions/redact_gateway.rb +14 -0
- data/lib/spreedly/transactions/transaction.rb +2 -0
- data/lib/spreedly/urls.rb +22 -2
- data/lib/spreedly/version.rb +1 -1
- data/lib/spreedly.rb +2 -0
- data/test/remote/remote_add_gateway_test.rb +7 -1
- data/test/remote/remote_find_gateway_test.rb +4 -3
- data/test/remote/remote_list_gateways_test.rb +35 -0
- data/test/remote/remote_list_payment_methods_test.rb +34 -0
- data/test/remote/remote_list_transactions_test.rb +29 -1
- data/test/remote/remote_redact_gateway_test.rb +30 -0
- data/test/remote/{remote_redact_test.rb → remote_redact_payment_method_test.rb} +1 -1
- data/test/remote/remote_update_credit_card_test.rb +54 -0
- data/test/unit/add_gateway_test.rb +17 -7
- data/test/unit/find_gateway_test.rb +5 -4
- data/test/unit/find_payment_method_test.rb +23 -0
- data/test/unit/list_gateways_test.rb +47 -0
- data/test/unit/list_payment_methods_test.rb +47 -0
- data/test/unit/list_transactions_test.rb +17 -5
- data/test/unit/redact_gateway_test.rb +42 -0
- data/test/unit/redact_payment_method_test.rb +3 -3
- data/test/unit/response_stubs/find_gateway_stubs.rb +30 -20
- data/test/unit/response_stubs/find_payment_method_stubs.rb +26 -0
- data/test/unit/response_stubs/list_gateways_stubs.rb +75 -0
- data/test/unit/response_stubs/list_payment_methods_stubs.rb +63 -0
- data/test/unit/response_stubs/redact_gateway_stubs.rb +47 -0
- data/test/unit/response_stubs/redact_payment_method_stubs.rb +1 -6
- data/test/unit/response_stubs/update_credit_card_stubs.rb +34 -0
- data/test/unit/update_credit_card_test.rb +59 -0
- metadata +32 -6
data/HISTORY.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 2.0.1
|
4
|
+
* List the transactions for a payment method
|
5
|
+
* Allow adding other gateways
|
6
|
+
* Listing Payment Methods (retained on an account)
|
7
|
+
* Updating a Payment Method
|
8
|
+
* Listing Your Gateways
|
9
|
+
* Finding a Gateway
|
10
|
+
* Fix Ruby 1.9.2 private method issue
|
11
|
+
* Add ability to find a bank account payment method
|
12
|
+
* Add ability to redact a gateway
|
13
|
+
|
3
14
|
## 2.0.0
|
4
15
|
* This gem is now intended for the Spreedly API. For the Spreedly
|
5
16
|
Subscriptions API, you can use the spreedly_subscriptions gem
|
data/README.md
CHANGED
@@ -230,10 +230,10 @@ transaction.order_id # => '30-9904-31114'
|
|
230
230
|
env.find_transaction_transcript(transaction_token)
|
231
231
|
```
|
232
232
|
|
233
|
-
#### Updating a
|
233
|
+
#### Updating a credit card
|
234
234
|
|
235
235
|
``` ruby
|
236
|
-
env.
|
236
|
+
env.update_credit_card(credit_card_token, first_name: 'JimBob', last_name: 'Jones')
|
237
237
|
```
|
238
238
|
|
239
239
|
#### Adding other types of gateways
|
data/lib/spreedly/connection.rb
CHANGED
@@ -28,8 +28,8 @@ module Spreedly
|
|
28
28
|
private
|
29
29
|
def http
|
30
30
|
http = Net::HTTP.new(endpoint.host, endpoint.port)
|
31
|
-
http.open_timeout =
|
32
|
-
http.read_timeout =
|
31
|
+
http.open_timeout = 64
|
32
|
+
http.read_timeout = 64
|
33
33
|
http.use_ssl = true
|
34
34
|
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
35
35
|
http.ca_file = File.dirname(__FILE__) + '/../certs/cacert.pem'
|
data/lib/spreedly/environment.rb
CHANGED
@@ -66,13 +66,28 @@ module Spreedly
|
|
66
66
|
Transaction.new_from(xml_doc)
|
67
67
|
end
|
68
68
|
|
69
|
-
def
|
70
|
-
xml_doc =
|
69
|
+
def redact_gateway(gateway_token, options = {})
|
70
|
+
xml_doc = ssl_put(redact_gateway_url(gateway_token), '', headers)
|
71
|
+
Transaction.new_from(xml_doc)
|
72
|
+
end
|
73
|
+
|
74
|
+
def list_transactions(since_token = nil, payment_method_token = nil)
|
75
|
+
xml_doc = ssl_get(list_transactions_url(since_token, payment_method_token), headers)
|
71
76
|
Transaction.new_list_from(xml_doc)
|
72
77
|
end
|
73
78
|
|
74
|
-
def
|
75
|
-
|
79
|
+
def list_payment_methods(since_token = nil)
|
80
|
+
xml_doc = ssl_get(list_payment_methods_url(since_token), headers)
|
81
|
+
PaymentMethod.new_list_from(xml_doc)
|
82
|
+
end
|
83
|
+
|
84
|
+
def list_gateways(since_token = nil)
|
85
|
+
xml_doc = ssl_get(list_gateways_url(since_token), headers)
|
86
|
+
Gateway.new_list_from(xml_doc)
|
87
|
+
end
|
88
|
+
|
89
|
+
def add_gateway(gateway_type, credentials = {})
|
90
|
+
body = add_gateway_body(gateway_type, credentials)
|
76
91
|
xml_doc = ssl_post(add_gateway_url, body, headers)
|
77
92
|
Gateway.new(xml_doc)
|
78
93
|
end
|
@@ -81,6 +96,12 @@ module Spreedly
|
|
81
96
|
api_post(add_payment_method_url, add_credit_card_body(options))
|
82
97
|
end
|
83
98
|
|
99
|
+
def update_credit_card(credit_card_token, options)
|
100
|
+
body = update_credit_card_body(options)
|
101
|
+
xml_doc = ssl_put(update_payment_method_url(credit_card_token), body, headers)
|
102
|
+
PaymentMethod.new_from(xml_doc)
|
103
|
+
end
|
104
|
+
|
84
105
|
private
|
85
106
|
def headers
|
86
107
|
{
|
@@ -132,9 +153,10 @@ module Spreedly
|
|
132
153
|
end
|
133
154
|
end
|
134
155
|
|
135
|
-
def add_gateway_body(gateway_type,
|
156
|
+
def add_gateway_body(gateway_type, credentials)
|
136
157
|
build_xml_request('gateway') do |doc|
|
137
158
|
doc.gateway_type gateway_type
|
159
|
+
add_to_doc(doc, credentials, *credentials.keys)
|
138
160
|
end
|
139
161
|
end
|
140
162
|
|
@@ -148,6 +170,13 @@ module Spreedly
|
|
148
170
|
end
|
149
171
|
end
|
150
172
|
|
173
|
+
def update_credit_card_body(options)
|
174
|
+
build_xml_request('payment_method') do |doc|
|
175
|
+
add_to_doc(doc, options, :email, :month, :first_name, :last_name, :year,
|
176
|
+
:address1, :address2, :city, :state, :zip, :country, :phone_number)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
151
180
|
def add_to_doc(doc, options, *attributes)
|
152
181
|
attributes.each do |attr|
|
153
182
|
doc.send(attr, options[attr.to_sym]) if options[attr.to_sym]
|
data/lib/spreedly/gateway.rb
CHANGED
@@ -4,6 +4,28 @@ module Spreedly
|
|
4
4
|
class Gateway < Model
|
5
5
|
|
6
6
|
field :gateway_type, :state, :name
|
7
|
+
attr_reader :credentials
|
8
|
+
|
9
|
+
def initialize(xml_doc)
|
10
|
+
super
|
11
|
+
init_credentials(xml_doc)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.new_list_from(xml_doc)
|
15
|
+
gateways = xml_doc.xpath('.//gateways/gateway')
|
16
|
+
gateways.map do |each|
|
17
|
+
self.new(each)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def init_credentials(xml_doc)
|
23
|
+
@credentials = {}
|
24
|
+
|
25
|
+
xml_doc.xpath('.//credentials/credential').each do |each|
|
26
|
+
@credentials[each.at_xpath('.//name').text] = each.at_xpath('.//value').text
|
27
|
+
end
|
28
|
+
end
|
7
29
|
|
8
30
|
end
|
9
31
|
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module Spreedly
|
2
|
+
|
3
|
+
class BankAccount < PaymentMethod
|
4
|
+
field :first_name, :last_name, :full_name, :bank_name
|
5
|
+
field :account_type, :account_holder_type, :routing_number_display_digits
|
6
|
+
field :account_number_display_digits, :routing_number, :account_number
|
7
|
+
end
|
8
|
+
|
9
|
+
end
|
@@ -22,6 +22,15 @@ module Spreedly
|
|
22
22
|
return Paypal.new(xml_doc)
|
23
23
|
when 'sprel'
|
24
24
|
return Sprel.new(xml_doc)
|
25
|
+
when 'bank_account'
|
26
|
+
return BankAccount.new(xml_doc)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.new_list_from(xml_doc)
|
31
|
+
payment_methods = xml_doc.xpath('.//payment_methods/payment_method')
|
32
|
+
payment_methods.map do |each|
|
33
|
+
self.new_from(each)
|
25
34
|
end
|
26
35
|
end
|
27
36
|
|
data/lib/spreedly/urls.rb
CHANGED
@@ -46,9 +46,25 @@ module Spreedly
|
|
46
46
|
"#{base_url}/v1/payment_methods/#{payment_method_token}/redact.xml"
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
49
|
+
def redact_gateway_url(gateway_token)
|
50
|
+
"#{base_url}/v1/gateways/#{gateway_token}/redact.xml"
|
51
|
+
end
|
52
|
+
|
53
|
+
def list_transactions_url(since_token, payment_method_token)
|
54
|
+
since_param = "?since_token=#{since_token}" if since_token
|
55
|
+
return "#{base_url}/v1/transactions.xml#{since_param}" unless payment_method_token
|
56
|
+
|
57
|
+
"#{base_url}/v1/payment_methods/#{payment_method_token}/transactions.xml#{since_param}"
|
58
|
+
end
|
59
|
+
|
60
|
+
def list_payment_methods_url(since_token)
|
50
61
|
since_param = "?since_token=#{since_token}" if since_token
|
51
|
-
"#{base_url}/v1/
|
62
|
+
"#{base_url}/v1/payment_methods.xml#{since_param}"
|
63
|
+
end
|
64
|
+
|
65
|
+
def list_gateways_url(since_token)
|
66
|
+
since_param = "?since_token=#{since_token}" if since_token
|
67
|
+
"#{base_url}/v1/gateways.xml#{since_param}"
|
52
68
|
end
|
53
69
|
|
54
70
|
def add_gateway_url
|
@@ -59,6 +75,10 @@ module Spreedly
|
|
59
75
|
"#{base_url}/v1/payment_methods.xml"
|
60
76
|
end
|
61
77
|
|
78
|
+
def update_payment_method_url(token)
|
79
|
+
"#{base_url}/v1/payment_methods/#{token}.xml"
|
80
|
+
end
|
81
|
+
|
62
82
|
end
|
63
83
|
|
64
84
|
end
|
data/lib/spreedly/version.rb
CHANGED
data/lib/spreedly.rb
CHANGED
@@ -9,6 +9,7 @@ require 'spreedly/payment_methods/payment_method'
|
|
9
9
|
require 'spreedly/payment_methods/credit_card'
|
10
10
|
require 'spreedly/payment_methods/paypal'
|
11
11
|
require 'spreedly/payment_methods/sprel'
|
12
|
+
require 'spreedly/payment_methods/bank_account'
|
12
13
|
require 'spreedly/transactions/transaction'
|
13
14
|
require 'spreedly/transactions/gateway_transaction'
|
14
15
|
require 'spreedly/transactions/add_payment_method'
|
@@ -20,6 +21,7 @@ require 'spreedly/transactions/capture'
|
|
20
21
|
require 'spreedly/transactions/refund'
|
21
22
|
require 'spreedly/transactions/retain_payment_method'
|
22
23
|
require 'spreedly/transactions/redact_payment_method'
|
24
|
+
require 'spreedly/transactions/redact_gateway'
|
23
25
|
require 'spreedly/gateway'
|
24
26
|
require 'spreedly/error'
|
25
27
|
|
@@ -24,7 +24,13 @@ class RemoteAddGatewayTest < Test::Unit::TestCase
|
|
24
24
|
gateway = @environment.add_gateway(:test)
|
25
25
|
assert_equal "test", gateway.gateway_type
|
26
26
|
assert_equal "retained", gateway.state
|
27
|
-
assert_equal "Test", gateway.name
|
27
|
+
assert_equal "Spreedly Test", gateway.name
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_need_active_account
|
31
|
+
assert_raise_with_message(Spreedly::PaymentRequiredError, "Your account has not been activated for real transactions. Please update your subscription settings.") do
|
32
|
+
gateway = @environment.add_gateway(:wirecard)
|
33
|
+
end
|
28
34
|
end
|
29
35
|
|
30
36
|
end
|
@@ -23,9 +23,10 @@ class RemoteFindGatewayTest < Test::Unit::TestCase
|
|
23
23
|
|
24
24
|
found = @environment.find_gateway(gateway.token)
|
25
25
|
|
26
|
-
assert_equal
|
27
|
-
assert_equal
|
28
|
-
assert_equal
|
26
|
+
assert_equal(gateway.token, found.token)
|
27
|
+
assert_equal("Spreedly Test", gateway.name)
|
28
|
+
assert_equal("retained", gateway.state)
|
29
|
+
assert_equal({}, gateway.credentials)
|
29
30
|
end
|
30
31
|
|
31
32
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class RemoteListGatewaysTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_invalid_login
|
11
|
+
assert_invalid_login do |environment|
|
12
|
+
environment.list_gateways
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_successfully_list_gateways
|
17
|
+
g1 = @environment.add_gateway(:test).token
|
18
|
+
g2 = @environment.add_gateway(:test).token
|
19
|
+
g3 = @environment.add_gateway(:test).token
|
20
|
+
|
21
|
+
first_twenty = @environment.list_gateways
|
22
|
+
assert_equal 20, first_twenty.size
|
23
|
+
assert_kind_of Spreedly::Model, first_twenty.first
|
24
|
+
|
25
|
+
gateways = @environment.list_gateways(g1)
|
26
|
+
assert_equal 2, gateways.size
|
27
|
+
assert_kind_of(Spreedly::Gateway, gateways.first)
|
28
|
+
assert_kind_of(Spreedly::Gateway, gateways.last)
|
29
|
+
|
30
|
+
assert_equal g2, gateways.first.token
|
31
|
+
assert_equal g3, gateways.last.token
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteListPaymentMethodsTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_invalid_login
|
10
|
+
assert_invalid_login do |environment|
|
11
|
+
environment.list_payment_methods
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_successfully_list_payment_methods
|
16
|
+
c1 = create_card_on(@environment).token
|
17
|
+
c2 = create_card_on(@environment).token
|
18
|
+
c3 = create_card_on(@environment).token
|
19
|
+
|
20
|
+
first_twenty = @environment.list_payment_methods
|
21
|
+
assert_equal 20, first_twenty.size
|
22
|
+
assert_kind_of Spreedly::Model, first_twenty.first
|
23
|
+
|
24
|
+
payment_methods = @environment.list_payment_methods(c1)
|
25
|
+
assert_equal 2, payment_methods.size
|
26
|
+
assert_kind_of(Spreedly::CreditCard, payment_methods.first)
|
27
|
+
assert_kind_of(Spreedly::CreditCard, payment_methods.last)
|
28
|
+
|
29
|
+
assert_equal c2, payment_methods.first.token
|
30
|
+
assert_equal c3, payment_methods.last.token
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class RemoteListTransactionsTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
6
|
@environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret)
|
@@ -33,4 +33,32 @@ class RemoteTransactionsTest < Test::Unit::TestCase
|
|
33
33
|
assert_equal 22, transactions.last.amount
|
34
34
|
end
|
35
35
|
|
36
|
+
def test_successfully_list_transactions_for_a_payment_method
|
37
|
+
gateway_token = @environment.add_gateway(:test).token
|
38
|
+
card_token = create_card_on(@environment).token
|
39
|
+
|
40
|
+
t1 = @environment.purchase_on_gateway(gateway_token, card_token, 144)
|
41
|
+
t2 = @environment.authorize_on_gateway(gateway_token, card_token, 444)
|
42
|
+
t3 = @environment.capture_transaction(t2.token, amount: 22)
|
43
|
+
|
44
|
+
all = @environment.list_transactions(nil, card_token)
|
45
|
+
assert_equal 5, all.size
|
46
|
+
assert_kind_of Spreedly::Model, all.first
|
47
|
+
|
48
|
+
next_group = @environment.list_transactions(t1.token, card_token)
|
49
|
+
assert_equal 2, next_group.size
|
50
|
+
assert_kind_of(Spreedly::Authorization, next_group.first)
|
51
|
+
assert_kind_of(Spreedly::Capture, next_group.last)
|
52
|
+
|
53
|
+
assert_equal 444, next_group.first.amount
|
54
|
+
assert_equal 22, next_group.last.amount
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_list_transactions_non_existent_payment_method
|
58
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified payment method.") do
|
59
|
+
@environment.list_transactions(nil, 'nonExistentToken')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
36
63
|
end
|
64
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteRedactGatewayTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_invalid_login
|
10
|
+
assert_invalid_login do |environment|
|
11
|
+
environment.redact_gateway('gateway_token')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_gateway_token_token_not_found
|
16
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified gateway.") do
|
17
|
+
@environment.redact_gateway('unknown_token')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_successful_redact
|
22
|
+
gateway = @environment.add_gateway(:test)
|
23
|
+
|
24
|
+
transaction = @environment.redact_gateway(gateway.token)
|
25
|
+
|
26
|
+
assert transaction.succeeded?
|
27
|
+
assert_equal 'redacted', transaction.gateway.state
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteUpdateCreditCardTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_invalid_login
|
10
|
+
assert_invalid_login do |environment|
|
11
|
+
environment.update_credit_card("card_token", card_deets)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_non_existent_card_token
|
16
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified payment method.") do
|
17
|
+
@environment.update_credit_card('unknown_card', card_deets)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_failed_with_validation_errors
|
22
|
+
card = create_card_on(@environment)
|
23
|
+
error = assert_raises(Spreedly::TransactionCreationError) do
|
24
|
+
@environment.update_credit_card(card.token, card_deets(last_name: '', first_name: ' '))
|
25
|
+
end
|
26
|
+
|
27
|
+
expected_errors = [
|
28
|
+
{ attribute: "first_name", key: "errors.blank", message: "First name can't be blank" },
|
29
|
+
{ attribute: "last_name", key: "errors.blank", message: "Last name can't be blank" }
|
30
|
+
]
|
31
|
+
|
32
|
+
assert_equal expected_errors, error.errors
|
33
|
+
assert_equal "First name can't be blank\nLast name can't be blank", error.message
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_successful_update_card
|
37
|
+
card = create_card_on(@environment)
|
38
|
+
result = @environment.update_credit_card(card.token, card_deets)
|
39
|
+
|
40
|
+
assert_kind_of(Spreedly::CreditCard, result)
|
41
|
+
assert_equal 'Cauthon', result.last_name
|
42
|
+
assert_equal 'Mat', result.first_name
|
43
|
+
assert_equal 'cauthon@wot.com', result.email
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
def card_deets(options = {})
|
48
|
+
{
|
49
|
+
email: 'cauthon@wot.com', month: 1, year: 2019,
|
50
|
+
last_name: 'Cauthon', first_name: 'Mat'
|
51
|
+
}.merge(options)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -13,14 +13,24 @@ class AddGatewayTest < Test::Unit::TestCase
|
|
13
13
|
@environment.stubs(:raw_ssl_request).returns(successful_add_test_gateway_response)
|
14
14
|
|
15
15
|
gateway = @environment.add_gateway(:test)
|
16
|
-
assert_equal
|
17
|
-
assert_equal
|
18
|
-
assert_equal
|
19
|
-
assert_equal
|
16
|
+
assert_equal("4dFb93AiRDEJ18MS9xDGMyu22uO", gateway.token)
|
17
|
+
assert_equal("test", gateway.gateway_type)
|
18
|
+
assert_equal("retained", gateway.state)
|
19
|
+
assert_equal("Test", gateway.name)
|
20
|
+
assert_equal({}, gateway.credentials)
|
20
21
|
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
def test_request_body_params
|
24
|
+
body = get_request_body(successful_add_test_gateway_response) do
|
25
|
+
@environment.add_gateway(:wirecard, username: "TheUserName", password: "ThePassword", business_case_signature: "TheSig")
|
26
|
+
end
|
27
|
+
|
28
|
+
gateway = body.xpath('./gateway')
|
29
|
+
assert_xpaths_in gateway,
|
30
|
+
[ './gateway_type', 'wirecard' ],
|
31
|
+
[ './username', 'TheUserName' ],
|
32
|
+
[ './password', 'ThePassword' ],
|
33
|
+
[ './business_case_signature', 'TheSig']
|
34
|
+
end
|
25
35
|
|
26
36
|
end
|
@@ -13,10 +13,11 @@ class FindGatewayTest < Test::Unit::TestCase
|
|
13
13
|
g = find_using(successful_get_gateway_response)
|
14
14
|
|
15
15
|
assert_kind_of(Spreedly::Gateway, g)
|
16
|
-
assert_equal("
|
17
|
-
assert_equal
|
18
|
-
assert_equal
|
19
|
-
assert_equal
|
16
|
+
assert_equal("5YqAdCL5AaxdbDdo1yZCkB4r74p", g.token)
|
17
|
+
assert_equal(Time.parse("2013-08-23 14:52:25 UTC"), g.created_at)
|
18
|
+
assert_equal(Time.parse("2013-08-23 14:52:25 UTC"), g.updated_at)
|
19
|
+
assert_equal('redacted', g.state)
|
20
|
+
assert_equal({ 'username' => "UsernameOfAwesome", 'business_case_signature' => "Super Sig" }, g.credentials)
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
@@ -80,6 +80,29 @@ class FindPaymentMethodTest < Test::Unit::TestCase
|
|
80
80
|
assert_equal("retained", paypal.storage_state)
|
81
81
|
end
|
82
82
|
|
83
|
+
def test_successfully_find_bank_account
|
84
|
+
b = find_using(successful_get_bank_account_response)
|
85
|
+
|
86
|
+
assert_kind_of(Spreedly::BankAccount, b)
|
87
|
+
assert_equal "seeQDV0jwJwFa1FUUsph6kPMTj", b.token
|
88
|
+
assert_equal "daniel@waterhouse.com", b.email
|
89
|
+
assert_equal(1376673633, b.created_at.to_i)
|
90
|
+
assert_equal(1376673633, b.updated_at.to_i)
|
91
|
+
assert_equal("GeekyNote", b.data)
|
92
|
+
assert_equal("cached", b.storage_state)
|
93
|
+
assert_equal("Daniel", b.first_name)
|
94
|
+
assert_equal("Waterhouse", b.last_name)
|
95
|
+
assert_equal("Daniel Waterhouse", b.full_name)
|
96
|
+
assert_equal("First Bank of Crypto", b.bank_name)
|
97
|
+
assert_equal("checking", b.account_type)
|
98
|
+
assert_equal("personal", b.account_holder_type)
|
99
|
+
assert_equal("021", b.routing_number_display_digits)
|
100
|
+
assert_equal("4321", b.account_number_display_digits)
|
101
|
+
assert_equal("021*", b.routing_number)
|
102
|
+
assert_equal("*4321", b.account_number)
|
103
|
+
assert_equal([], b.errors)
|
104
|
+
end
|
105
|
+
|
83
106
|
private
|
84
107
|
def find_using(response)
|
85
108
|
@environment.stubs(:raw_ssl_request).returns(response)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'unit/response_stubs/list_gateways_stubs'
|
3
|
+
|
4
|
+
class ListGatewaysTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include ListGatewaysStubs
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@environment = Spreedly::Environment.new("key", "secret")
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_successful_list_payment_methods
|
13
|
+
list = list_using(successful_list_gateways_response)
|
14
|
+
|
15
|
+
assert_kind_of(Array, list)
|
16
|
+
assert_equal 2, list.size
|
17
|
+
|
18
|
+
assert_equal 'OJUFe5ZR6pFfL4i4ZGVmvGWkZUY', list.first.token
|
19
|
+
assert_equal '52wqOssuKZSXEYde30AGTG6xl8v', list.last.token
|
20
|
+
assert_kind_of Spreedly::Gateway, list.first
|
21
|
+
assert_kind_of Spreedly::Gateway, list.last
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_request_url
|
25
|
+
assert_request_url 'https://core.spreedly.com/v1/gateways.xml' do
|
26
|
+
@environment.list_gateways
|
27
|
+
end
|
28
|
+
|
29
|
+
assert_request_url 'https://core.spreedly.com/v1/gateways.xml?since_token=SomeToken' do
|
30
|
+
@environment.list_gateways("SomeToken")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def list_using(response)
|
36
|
+
@environment.stubs(:raw_ssl_request).returns(response)
|
37
|
+
@environment.list_gateways
|
38
|
+
end
|
39
|
+
|
40
|
+
def assert_request_url(expected_url)
|
41
|
+
actual_url = get_request_url(successful_list_gateways_response) do
|
42
|
+
yield
|
43
|
+
end
|
44
|
+
assert_equal expected_url, actual_url
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|