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
         |