X-Git-Url: http://git.freeside.biz/gitweb/?p=Business-OnlinePayment-TransFirsteLink.git;a=blobdiff_plain;f=t%2Flive_check.t;fp=t%2Flive_check.t;h=7e272cd87f71b1dec99205865b2b329fdf0425b8;hp=0000000000000000000000000000000000000000;hb=6d0e232586bb93244951a46844e28a0828ce872a;hpb=16b0d66bcbecea3bc0369b7a37f00a36a3001683 diff --git a/t/live_check.t b/t/live_check.t new file mode 100644 index 0000000..7e272cd --- /dev/null +++ b/t/live_check.t @@ -0,0 +1,120 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use POSIX qw(strftime); +use Test::More; + +use Business::OnlinePayment; + +my $runinfo = + "to test set environment variables:" + . " (required) ELINK_ACH_ACCOUNT, ELINK_ACH_PASSWORD" + . " ELINK_ROUTING_CODE, ELINK_BANK_ACCOUNT, ELINK_ACH_NAME" + . " ELINK_ACH_ADDRESS, ELINK_ACH_CITY, ELINK_ACH_STATE" + . " ELINK_ACH_ZIP, ELINK_ACH_PHONE, ELINK_DO_LIVE"; + +plan( + ( $ENV{"ELINK_ACH_ACCOUNT"} && $ENV{"ELINK_ACH_PASSWORD"} && + $ENV{"ELINK_ROUTING_CODE"} && $ENV{"ELINK_BANK_ACCOUNT"} && + $ENV{"ELINK_ACH_NAME"} && $ENV{"ELINK_ACH_ADDRESS"} && + $ENV{"ELINK_ACH_CITY"} && $ENV{"ELINK_ACH_STATE"} && + $ENV{"ELINK_ACH_ZIP"} && $ENV{"ELINK_ACH_PHONE"} && + $ENV{"ELINK_DO_LIVE"} + ) + ? ( tests => 12 ) + : ( skip_all => $runinfo ) +); + +my %opts = ( + "debug" => 0, + "merchantcustservnum" => "8005551212", +); + +my %content = ( + login => $ENV{"ELINK_ACH_ACCOUNT"}, + password => $ENV{"ELINK_ACH_PASSWORD"}, + action => "Normal Authorization", + type => "CHECK", + description => "Business::OnlinePayment::TransFirsteLink live test", + routing_code => $ENV{"ELINK_ROUTING_CODE"}, + account_number => $ENV{"ELINK_BANK_ACCOUNT"}, + check_number => "99", + amount => "1.01", + invoice_number => "LiveTest", + customer_id => "LiveTestCust", + account_name => $ENV{"ELINK_ACH_NAME"}, + address => $ENV{"ELINK_ACH_ADDRESS"}, + city => $ENV{"ELINK_ACH_CITY"}, + state => $ENV{"ELINK_ACH_STATE"}, + zip => $ENV{"ELINK_ACH_ZIP"}, + phone => $ENV{"ELINK_ACH_PHONE"}, +); + +{ # valid account test + my $tx = new Business::OnlinePayment( "TransFirsteLink", %opts ); + $tx->content(%content); + tx_check( + $tx, + desc => "valid account", + is_success => 1, + result_code => "P00", + ); +} + +SKIP: { # invalid account test + + skip "invalid account tests broken", 4; + + my $tx = new Business::OnlinePayment( "TransFirsteLink", %opts ); + $tx->content( %content, routing_code => "052000113", + account_number => "000000000001", + ); + + tx_check( + $tx, + desc => "invalid account", + is_success => 0, + result_code => 214, + ); +} + +{ # credit/refund test + + my $tx = new Business::OnlinePayment( "TransFirsteLink", %opts ); + $tx->content( %content, action => "Credit"); + + tx_check( + $tx, + desc => "credit/refund", + is_success => 1, + result_code => "ACCEPTED", + ); +} + +sub tx_check { + my $tx = shift; + my %o = @_; + + $tx->submit; + + is( $tx->is_success, $o{is_success}, "$o{desc}: " . tx_info($tx) ); + is( $tx->result_code, $o{result_code}, "result_code(): RESULT" ); + is( scalar(@{$tx->junk}), 0, "junk() / JUNK " ); + like( $tx->order_number, qr/^(\d{9}|)$/, "order_number() / PNREF" ); +} + +sub tx_info { + my $tx = shift; + + no warnings 'uninitialized'; + + return ( + join( "", + "is_success(", $tx->is_success, ")", + " order_number(", $tx->order_number, ")", + " result_code(", $tx->result_code, ")", + $tx->junk ? " junk(". join('|', @{$tx->junk}). ")" : '', + ) + ); +}