spreedly 1.4.0 → 2.0.0
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.
- data/.gitignore +8 -0
- data/Gemfile +4 -0
- data/HISTORY.md +5 -0
- data/README.md +362 -29
- data/Rakefile +32 -0
- data/lib/certs/cacert.pem +7815 -0
- data/lib/spreedly.rb +24 -282
- data/lib/spreedly/common/errors_parser.rb +15 -0
- data/lib/spreedly/common/fields.rb +90 -0
- data/lib/spreedly/connection.rb +40 -0
- data/lib/spreedly/environment.rb +176 -0
- data/lib/spreedly/error.rb +50 -0
- data/lib/spreedly/gateway.rb +10 -0
- data/lib/spreedly/model.rb +17 -0
- data/lib/spreedly/payment_methods/credit_card.rb +9 -0
- data/lib/spreedly/payment_methods/payment_method.rb +34 -0
- data/lib/spreedly/payment_methods/paypal.rb +7 -0
- data/lib/spreedly/payment_methods/sprel.rb +7 -0
- data/lib/spreedly/ssl_requester.rb +65 -0
- data/lib/spreedly/transactions/add_payment_method.rb +16 -0
- data/lib/spreedly/transactions/auth_purchase.rb +17 -0
- data/lib/spreedly/transactions/authorization.rb +7 -0
- data/lib/spreedly/transactions/capture.rb +14 -0
- data/lib/spreedly/transactions/gateway_transaction.rb +31 -0
- data/lib/spreedly/transactions/purchase.rb +7 -0
- data/lib/spreedly/transactions/redact_payment_method.rb +14 -0
- data/lib/spreedly/transactions/refund.rb +14 -0
- data/lib/spreedly/transactions/retain_payment_method.rb +14 -0
- data/lib/spreedly/transactions/transaction.rb +41 -0
- data/lib/spreedly/transactions/void.rb +9 -0
- data/lib/spreedly/urls.rb +64 -0
- data/lib/spreedly/version.rb +1 -1
- data/spreedly.gemspec +29 -0
- data/test/credentials/credentials.yml +9 -0
- data/test/credentials/test_credentials.rb +43 -0
- data/test/helpers/assertions.rb +29 -0
- data/test/helpers/communication_helper.rb +31 -0
- data/test/helpers/creation_helper.rb +26 -0
- data/test/helpers/stub_response.rb +18 -0
- data/test/remote/remote_add_credit_card_test.rb +62 -0
- data/test/remote/remote_add_gateway_test.rb +30 -0
- data/test/remote/remote_authorize_test.rb +48 -0
- data/test/remote/remote_capture_test.rb +71 -0
- data/test/remote/remote_find_gateway_test.rb +31 -0
- data/test/remote/remote_find_payment_method_test.rb +29 -0
- data/test/remote/remote_find_transaction_test.rb +33 -0
- data/test/remote/remote_list_transactions_test.rb +36 -0
- data/test/remote/remote_purchase_test.rb +69 -0
- data/test/remote/remote_redact_test.rb +38 -0
- data/test/remote/remote_refund_test.rb +65 -0
- data/test/remote/remote_retain_test.rb +39 -0
- data/test/remote/remote_void_test.rb +64 -0
- data/test/test_helper.rb +23 -0
- data/test/unit/add_credit_card_test.rb +74 -0
- data/test/unit/add_gateway_test.rb +26 -0
- data/test/unit/authorize_test.rb +87 -0
- data/test/unit/capture_test.rb +91 -0
- data/test/unit/environment_test.rb +18 -0
- data/test/unit/fields_test.rb +75 -0
- data/test/unit/find_gateway_test.rb +28 -0
- data/test/unit/find_payment_method_test.rb +90 -0
- data/test/unit/find_transaction_test.rb +31 -0
- data/test/unit/list_transactions_test.rb +46 -0
- data/test/unit/purchase_test.rb +95 -0
- data/test/unit/redact_payment_method_test.rb +51 -0
- data/test/unit/refund_test.rb +91 -0
- data/test/unit/response_stubs/add_credit_card_stubs.rb +43 -0
- data/test/unit/response_stubs/add_gateway_stubs.rb +39 -0
- data/test/unit/response_stubs/authorization_stubs.rb +139 -0
- data/test/unit/response_stubs/capture_stubs.rb +87 -0
- data/test/unit/response_stubs/find_gateway_stubs.rb +38 -0
- data/test/unit/response_stubs/find_payment_method_stubs.rb +108 -0
- data/test/unit/response_stubs/find_transaction_stubs.rb +43 -0
- data/test/unit/response_stubs/list_transactions_stubs.rb +110 -0
- data/test/unit/response_stubs/purchase_stubs.rb +139 -0
- data/test/unit/response_stubs/redact_payment_method_stubs.rb +54 -0
- data/test/unit/response_stubs/refund_stubs.rb +87 -0
- data/test/unit/response_stubs/retain_payment_method_stubs.rb +85 -0
- data/test/unit/response_stubs/void_stubs.rb +79 -0
- data/test/unit/retain_payment_method_test.rb +44 -0
- data/test/unit/timeout_test.rb +20 -0
- data/test/unit/void_test.rb +96 -0
- metadata +215 -29
- checksums.yaml +0 -15
- data/lib/spreedly/common.rb +0 -44
- data/lib/spreedly/mock.rb +0 -221
- data/lib/spreedly/test_hacks.rb +0 -27
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteAddGatewayTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
# TODO We'll add more to this soon.
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@environment = Spreedly::Environment.new(remote_test_environment_key, remote_test_access_secret)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_invalid_login
|
12
|
+
assert_invalid_login do |environment|
|
13
|
+
environment.add_gateway(:test)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_non_existent_gateway_type
|
18
|
+
assert_raise_with_message(Spreedly::TransactionCreationError, "The gateway_type parameter is invalid.") do
|
19
|
+
@environment.add_gateway(:non_existent)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_add_test_gateway
|
24
|
+
gateway = @environment.add_gateway(:test)
|
25
|
+
assert_equal "test", gateway.gateway_type
|
26
|
+
assert_equal "retained", gateway.state
|
27
|
+
assert_equal "Test", gateway.name
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteAuthorizeTest < 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.authorize_on_gateway('gtoken', 'ptoken', 100)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_payment_method_not_found
|
16
|
+
assert_raise_with_message(Spreedly::TransactionCreationError, "There is no payment method corresponding to the specified payment method token.") do
|
17
|
+
@environment.authorize_on_gateway('gateway_token', 'unknown_payment_method', 100)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_gateway_not_found
|
22
|
+
card_token = create_card_on(@environment).token
|
23
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified gateway.") do
|
24
|
+
@environment.authorize_on_gateway('unknown_gateway', card_token, 100)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_successful_authorize
|
29
|
+
gateway_token = @environment.add_gateway(:test).token
|
30
|
+
card_token = create_card_on(@environment).token
|
31
|
+
|
32
|
+
transaction = @environment.authorize_on_gateway(gateway_token, card_token, 899)
|
33
|
+
assert transaction.succeeded?
|
34
|
+
assert_equal card_token, transaction.payment_method.token
|
35
|
+
assert_equal 899, transaction.amount
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_failed_authorize
|
39
|
+
gateway_token = @environment.add_gateway(:test).token
|
40
|
+
card_token = create_failed_card_on(@environment).token
|
41
|
+
|
42
|
+
transaction = @environment.authorize_on_gateway(gateway_token, card_token, 144)
|
43
|
+
assert !transaction.succeeded?
|
44
|
+
assert_equal "Unable to process the authorize transaction.", transaction.message
|
45
|
+
assert_equal gateway_token, transaction.gateway_token
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteCaptureTest < 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.capture_transaction('authorize_token')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_authorization_token_found
|
16
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified reference transaction.") do
|
17
|
+
@environment.capture_transaction('unknown_auth_token')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_needs_succeeded_reference
|
22
|
+
gateway_token = @environment.add_gateway(:test).token
|
23
|
+
card_token = create_failed_card_on(@environment).token
|
24
|
+
authorization = @environment.authorize_on_gateway(gateway_token, card_token, 144)
|
25
|
+
assert !authorization.succeeded?
|
26
|
+
|
27
|
+
assert_raise_with_message(Spreedly::TransactionCreationError, "The reference transaction did not succeed. Only successful reference transactions are permitted.") do
|
28
|
+
@environment.capture_transaction(authorization.token)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_successful_capture_full_amount
|
33
|
+
gateway_token = @environment.add_gateway(:test).token
|
34
|
+
card_token = create_card_on(@environment).token
|
35
|
+
|
36
|
+
authorization = @environment.authorize_on_gateway(gateway_token, card_token, 800)
|
37
|
+
assert authorization.succeeded?
|
38
|
+
|
39
|
+
capture = @environment.capture_transaction(authorization.token)
|
40
|
+
assert capture.succeeded?
|
41
|
+
assert_equal authorization.token, capture.reference_token
|
42
|
+
assert_equal 800, capture.amount
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_successful_capture_partial_amount
|
46
|
+
gateway_token = @environment.add_gateway(:test).token
|
47
|
+
card_token = create_card_on(@environment).token
|
48
|
+
|
49
|
+
authorization = @environment.authorize_on_gateway(gateway_token, card_token, 800)
|
50
|
+
assert authorization.succeeded?
|
51
|
+
|
52
|
+
capture = @environment.capture_transaction(authorization.token, amount: 322)
|
53
|
+
assert capture.succeeded?
|
54
|
+
assert_equal authorization.token, capture.reference_token
|
55
|
+
assert_equal 322, capture.amount
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_failed_capture
|
59
|
+
gateway_token = @environment.add_gateway(:test).token
|
60
|
+
card_token = create_card_on(@environment).token
|
61
|
+
authorization = @environment.authorize_on_gateway(gateway_token, card_token, 800)
|
62
|
+
assert authorization.succeeded?
|
63
|
+
|
64
|
+
capture = @environment.capture_transaction(authorization.token, amount: 44)
|
65
|
+
assert !capture.succeeded?
|
66
|
+
assert_equal authorization.token, capture.reference_token
|
67
|
+
assert_equal 44, capture.amount
|
68
|
+
assert_equal 'Unable to process the capture transaction.', capture.message
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteFindGatewayTest < 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.find_gateway("SomeToken")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_gateway_not_found
|
16
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified gateway.") do
|
17
|
+
@environment.find_gateway("SomeUnknownToken")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_successfully_find_gateway
|
22
|
+
gateway = @environment.add_gateway(:test)
|
23
|
+
|
24
|
+
found = @environment.find_gateway(gateway.token)
|
25
|
+
|
26
|
+
assert_equal gateway.token, found.token
|
27
|
+
assert_equal "Test", gateway.name
|
28
|
+
assert_equal "retained", gateway.state
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteFindPaymentMethodTest < 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.find_payment_method("SomeToken")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_payment_method_not_found
|
16
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified payment method.") do
|
17
|
+
@environment.find_payment_method("SomeUnknownToken")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_successfully_find_card
|
22
|
+
found = @environment.find_payment_method(create_card_on(@environment).token)
|
23
|
+
assert_kind_of(Spreedly::CreditCard, found)
|
24
|
+
assert_equal("perrin@wot.com", found.email)
|
25
|
+
assert_equal('XXXX-XXXX-XXXX-4444', found.number)
|
26
|
+
assert_equal('Aybara', found.last_name)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteFindTransactionTest < 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.find_transaction("SomeToken")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_transaction_not_found
|
16
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the transaction SomeUnknownToken.") do
|
17
|
+
@environment.find_transaction("SomeUnknownToken")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_successfully_find_transaction
|
22
|
+
gateway_token = @environment.add_gateway(:test).token
|
23
|
+
card_token = create_failed_card_on(@environment).token
|
24
|
+
transaction = @environment.purchase_on_gateway(gateway_token, card_token, 144)
|
25
|
+
|
26
|
+
found = @environment.find_transaction(transaction.token)
|
27
|
+
|
28
|
+
assert_kind_of(Spreedly::Purchase, found)
|
29
|
+
assert_equal transaction.token, found.token
|
30
|
+
assert_equal('Aybara', found.payment_method.last_name)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteTransactionsTest < 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_transactions
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_successfully_list_transactions
|
16
|
+
gateway_token = @environment.add_gateway(:test).token
|
17
|
+
card_token = create_card_on(@environment).token
|
18
|
+
|
19
|
+
t1 = @environment.purchase_on_gateway(gateway_token, card_token, 144)
|
20
|
+
t2 = @environment.authorize_on_gateway(gateway_token, card_token, 444)
|
21
|
+
t3 = @environment.capture_transaction(t2.token, amount: 22)
|
22
|
+
|
23
|
+
first_twenty = @environment.list_transactions
|
24
|
+
assert_equal 20, first_twenty.size
|
25
|
+
assert_kind_of Spreedly::Model, first_twenty.first
|
26
|
+
|
27
|
+
transactions = @environment.list_transactions(t1.token)
|
28
|
+
assert_equal 2, transactions.size
|
29
|
+
assert_kind_of(Spreedly::Authorization, transactions.first)
|
30
|
+
assert_kind_of(Spreedly::Capture, transactions.last)
|
31
|
+
|
32
|
+
assert_equal 444, transactions.first.amount
|
33
|
+
assert_equal 22, transactions.last.amount
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemotePurchaseTest < 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.purchase_on_gateway('gtoken', 'ptoken', 100)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_payment_method_not_found
|
16
|
+
assert_raise_with_message(Spreedly::TransactionCreationError, "There is no payment method corresponding to the specified payment method token.") do
|
17
|
+
@environment.purchase_on_gateway('gateway_token', 'unknown_payment_method', 100)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_gateway_not_found
|
22
|
+
card_token = create_card_on(@environment).token
|
23
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified gateway.") do
|
24
|
+
@environment.purchase_on_gateway('unknown_gateway', card_token, 100)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_successful_purchase
|
29
|
+
gateway_token = @environment.add_gateway(:test).token
|
30
|
+
card_token = create_card_on(@environment).token
|
31
|
+
|
32
|
+
transaction = @environment.purchase_on_gateway(gateway_token, card_token, 144)
|
33
|
+
assert transaction.succeeded?
|
34
|
+
assert_equal card_token, transaction.payment_method.token
|
35
|
+
assert_equal 144, transaction.amount
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_failed_purchase
|
39
|
+
gateway_token = @environment.add_gateway(:test).token
|
40
|
+
card_token = create_failed_card_on(@environment).token
|
41
|
+
|
42
|
+
transaction = @environment.purchase_on_gateway(gateway_token, card_token, 144)
|
43
|
+
assert !transaction.succeeded?
|
44
|
+
assert_equal "Unable to process the purchase transaction.", transaction.message
|
45
|
+
assert_equal gateway_token, transaction.gateway_token
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_optional_arguments
|
49
|
+
gateway_token = @environment.add_gateway(:test).token
|
50
|
+
card_token = create_card_on(@environment, retained: false).token
|
51
|
+
|
52
|
+
transaction = @environment.purchase_on_gateway(gateway_token, card_token, 344,
|
53
|
+
order_id: "8675",
|
54
|
+
description: "SuperDuper",
|
55
|
+
ip: "183.128.100.103",
|
56
|
+
merchant_name_descriptor: "Real Stuff",
|
57
|
+
merchant_location_descriptor: "Raleigh",
|
58
|
+
retain_on_success: true)
|
59
|
+
|
60
|
+
assert transaction.succeeded?
|
61
|
+
assert_equal "8675", transaction.order_id
|
62
|
+
assert_equal "SuperDuper", transaction.description
|
63
|
+
assert_equal "183.128.100.103", transaction.ip
|
64
|
+
assert_equal "Real Stuff", transaction.merchant_name_descriptor
|
65
|
+
assert_equal "Raleigh", transaction.merchant_location_descriptor
|
66
|
+
assert_equal "retained", transaction.payment_method.storage_state
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteRedactTest < 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_payment_method('payment_method_token')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_payment_method_token_token_not_found
|
16
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified payment method.") do
|
17
|
+
@environment.redact_payment_method('unknown_token')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_successful_redact
|
22
|
+
card_token = create_card_on(@environment).token
|
23
|
+
|
24
|
+
transaction = @environment.redact_payment_method(card_token)
|
25
|
+
|
26
|
+
assert transaction.succeeded?
|
27
|
+
assert_equal 'redacted', transaction.payment_method.storage_state
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_remove_from_gateway_unknown_gateway
|
31
|
+
card_token = create_card_on(@environment).token
|
32
|
+
|
33
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified gateway.") do
|
34
|
+
transaction = @environment.redact_payment_method(card_token, remove_from_gateway: 'unknown_token')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RemoteRefundTest < 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.refund_transaction('authorize_token')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_transaction_token_found
|
16
|
+
assert_raise_with_message(Spreedly::NotFoundError, "Unable to find the specified reference transaction.") do
|
17
|
+
@environment.refund_transaction('unknown_transaction_token')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_needs_succeeded_reference
|
22
|
+
gateway_token = @environment.add_gateway(:test).token
|
23
|
+
card_token = create_failed_card_on(@environment).token
|
24
|
+
purchase = @environment.purchase_on_gateway(gateway_token, card_token, 144)
|
25
|
+
assert !purchase.succeeded?
|
26
|
+
|
27
|
+
assert_raise_with_message(Spreedly::TransactionCreationError, "The reference transaction did not succeed. Only successful reference transactions are permitted.") do
|
28
|
+
@environment.refund_transaction(purchase.token)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_successful_refund_full_amount
|
33
|
+
gateway_token = @environment.add_gateway(:test).token
|
34
|
+
card_token = create_card_on(@environment).token
|
35
|
+
purchase = @environment.purchase_on_gateway(gateway_token, card_token, 944)
|
36
|
+
|
37
|
+
refund = @environment.refund_transaction(purchase.token)
|
38
|
+
assert refund.succeeded?
|
39
|
+
assert_equal purchase.token, refund.reference_token
|
40
|
+
assert_equal 944, refund.amount
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_successful_refund_partial_amount
|
44
|
+
gateway_token = @environment.add_gateway(:test).token
|
45
|
+
card_token = create_card_on(@environment).token
|
46
|
+
purchase = @environment.purchase_on_gateway(gateway_token, card_token, 1944)
|
47
|
+
|
48
|
+
refund = @environment.refund_transaction(purchase.token, amount: 323)
|
49
|
+
assert refund.succeeded?
|
50
|
+
assert_equal 323, refund.amount
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_failed_refund
|
54
|
+
gateway_token = @environment.add_gateway(:test).token
|
55
|
+
card_token = create_card_on(@environment).token
|
56
|
+
purchase = @environment.purchase_on_gateway(gateway_token, card_token, 1944)
|
57
|
+
|
58
|
+
refund = @environment.refund_transaction(purchase.token, amount: 44)
|
59
|
+
assert !refund.succeeded?
|
60
|
+
assert_equal purchase.token, refund.reference_token
|
61
|
+
assert_equal 44, refund.amount
|
62
|
+
assert_equal 'Unable to process the credit transaction.', refund.message
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|