require 'test_helper'
class ExactTest < Test::Unit::TestCase
def setup
@gateway = ExactGateway.new( :login => "A00427-01",
:password => "testus" )
@credit_card = credit_card
@amount = 100
@options = {
:order_id => '1',
:billing_address => address,
:description => 'Store Purchase'
}
end
def test_successful_purchase
@gateway.expects(:ssl_post).returns(successful_purchase_response)
assert response = @gateway.purchase(@amount, @credit_card, @options)
assert_success response
assert_equal 'ET1700;106625152', response.authorization
assert response.test?
assert_equal 'Transaction Normal - VER UNAVAILABLE', response.message
ExactGateway::SENSITIVE_FIELDS.each{ |f| assert !response.params.has_key?(f.to_s) }
end
def test_failed_purchase
@gateway.expects(:ssl_post).returns(failed_purchase_response)
assert response = @gateway.purchase(@amount, @credit_card, @options)
assert_instance_of Response, response
assert_failure response
end
def test_expdate
assert_equal( "%02d%s" % [ @credit_card.month,
@credit_card.year.to_s[-2..-1] ],
@gateway.send(:expdate, @credit_card) )
end
def test_soap_fault
@gateway.expects(:ssl_post).returns(soap_fault_response)
assert response = @gateway.purchase(100, @credit_card, {})
assert_failure response
assert response.test?
assert_equal 'Unable to handle request without a valid action parameter. Please supply a valid soap action.', response.message
end
def test_supported_countries
assert_equal ['CA', 'US'], ExactGateway.supported_countries
end
def test_supported_card_types
assert_equal [:visa, :master, :american_express, :jcb, :discover], ExactGateway.supported_cardtypes
end
def test_avs_result
@gateway.expects(:ssl_post).returns(successful_purchase_response)
response = @gateway.purchase(@amount, @credit_card)
assert_equal 'U', response.avs_result['code']
end
def test_cvv_result
@gateway.expects(:ssl_post).returns(successful_purchase_response)
response = @gateway.purchase(@amount, @credit_card)
assert_equal 'M', response.cvv_result['code']
end
private
def successful_purchase_response
<<-RESPONSE
A00427-01#######00104242424242424242106625152ET17000909Longbob Longsen123100001Store Purchase0Processed by:
E-xact Transaction Gateway :- Version 8.4.0 B19b
Copyright 2006
{34:2652}0falsetrue00Transaction Normal00VER UNAVAILABLE 377UM200801181700E-xact ConnectionShopSuite 400 - 1152 Mainland St.VancouverBCCanadaV6B 4X2www.e-xact.com========== TRANSACTION RECORD =========
E-xact ConnectionShop
Suite 400 - 1152 Mainland St.
Vancouver, BC V6B 4X2
www.e-xact.com
TYPE: Purchase
ACCT: Visa $1.00 USD
CARD NUMBER : ############4242
TRANS. REF. : 1
CARD HOLDER : Longbob Longsen
EXPIRY DATE : xx/xx
DATE/TIME : 18 Jan 08 14:17:00
REFERENCE # : 5999 377 M
AUTHOR.# : ET1700
Approved - Thank You 00
SIGNATURE
_______________________________________
RESPONSE
end
def failed_purchase_response
<<-RESPONSE
A00427-01#######005013041111111111111111066246680909Longbob Longsen123100001Store Purchase0Processed by:
E-xact Transaction Gateway :- Version 8.4.0 B19b
Copyright 2006
{34:2652}0falsefalse00Transaction Normal13AMOUNT ERR376UME-xact ConnectionShopSuite 400 - 1152 Mainland St.VancouverBCCanadaV6B 4X2www.e-xact.com========== TRANSACTION RECORD =========
E-xact ConnectionShop
Suite 400 - 1152 Mainland St.
Vancouver, BC V6B 4X2
www.e-xact.com
TYPE: Purchase
ACCT: Visa $5,013.00 USD
CARD NUMBER : ############1111
TRANS. REF. : 1
CARD HOLDER : Longbob Longsen
EXPIRY DATE : xx/xx
DATE/TIME : 18 Jan 08 14:11:09
REFERENCE # : 5999 376 M
AUTHOR.# :
Transaction not Approved 13
RESPONSE
end
def soap_fault_response
<<-RESPONSE
soap:Client
Unable to handle request without a valid action parameter. Please supply a valid soap action.
RESPONSE
end
end