From da4c67ef2fc959785f1ec3b91434981f5c26cdcd Mon Sep 17 00:00:00 2001 From: plobbes Date: Mon, 22 Jan 2007 05:55:10 +0000 Subject: [PATCH] - added tests for avs_code() and cvv2_code() --- t/credit_card.t | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 129 insertions(+), 13 deletions(-) diff --git a/t/credit_card.t b/t/credit_card.t index 7b57484..108f859 100644 --- a/t/credit_card.t +++ b/t/credit_card.t @@ -14,7 +14,7 @@ my $runinfo = plan( ( $ENV{"PFPRO_USER"} && $ENV{"PFPRO_VENDOR"} && $ENV{"PFPRO_PWD"} ) - ? ( tests => 2 ) + ? ( tests => 56 ) : ( skip_all => $runinfo ) ); @@ -25,40 +25,155 @@ my %opts = ( ); my %content = ( - type => "VISA", login => $ENV{"PFPRO_USER"}, password => $ENV{"PFPRO_PWD"}, action => "Normal Authorization", + type => "VISA", description => "Business::OnlinePayment::PayflowPro test", + card_number => "4111111111111111", + cvv2 => "123", + expiration => "12/" . strftime( "%y", localtime ), amount => "0.01", first_name => "Tofu", last_name => "Beast", + email => 'ivan-payflowpro@420.am', address => "123 Anystreet", city => "Anywhere", state => "GA", zip => "30004", country => "US", - email => 'ivan-payflowpro@420.am', - expiration => "12/" . strftime( "%y", localtime ), - cvv2 => "123", - - #card_number specified in test case ); { # valid card number test my $tx = new Business::OnlinePayment( "PayflowPro", %opts ); - $tx->content( %content, card_number => "4111111111111111" ); - $tx->test_transaction(1); - $tx->submit; - is( $tx->is_success, 1, "valid card num: " . tx_info($tx) ); + $tx->content(%content); + tx_check( + $tx, + desc => "valid card_number", + is_success => 1, + result_code => 0, + error_message => "Approved", + authorization => "010101", + avs_code => "Y", + cvv2_code => "Y", + ); } { # invalid card number test my $tx = new Business::OnlinePayment( "PayflowPro", %opts ); $tx->content( %content, card_number => "4111111111111112" ); + tx_check( + $tx, + desc => "invalid card_number", + is_success => 0, + result_code => 23, + error_message => "Invalid account number", + authorization => undef, + avs_code => undef, + cvv2_code => undef, + ); +} + +{ # avs_code() / AVSZIP and AVSADDR tests + my $tx = new Business::OnlinePayment( "PayflowPro", %opts ); + + # IF first 3 chars of STREET <= 334 and >= 666 THEN AVSADDR == "N" + $tx->content( %content, "address" => "500 Any street" ); + tx_check( + $tx, + desc => "AVSADDR=N,AVSZIP=Y", + is_success => 0, + result_code => 126, + error_message => "Under review by Fraud Service", + authorization => "010101", + avs_code => "Z", + cvv2_code => "Y", + ); + + # IF first 3 chars of STREET >= 667 THEN AVSADDR == "X" (and AVSZIP="X") + $tx->content( %content, "address" => "700 Any street" ); + tx_check( + $tx, + desc => "AVSADDR=X,AVSZIP=X", + is_success => 1, + result_code => 0, + error_message => "Approved", + authorization => "010101", + avs_code => "", + cvv2_code => "Y", + ); + + # IF ZIP <= 50001 and >= 99999 THEN AVSZIP == "N" + $tx->content( %content, "zip" => "99999" ); + tx_check( + $tx, + desc => "AVSADDR=Y,AVSZIP=N", + is_success => 0, + result_code => 126, + error_message => "Under review by Fraud Service", + authorization => "010101", + avs_code => "A", + cvv2_code => "Y", + ); + + # Both AVSADDR and AVSZIP == "N" + $tx->content( %content, "address" => "500 Any street", "zip" => "99999" ); + tx_check( + $tx, + desc => "AVSADDR=N,AVSZIP=N", + is_success => 0, + result_code => 126, + error_message => "Under review by Fraud Service", + authorization => "010101", + avs_code => "N", + cvv2_code => "Y", + ); +} + +{ # cvv2_code() / CVV2MATCH + my $tx = new Business::OnlinePayment( "PayflowPro", %opts ); + + # IF CVV2 >= 301 and <= 600 THEN CVV2MATCH == "N" + $tx->content( %content, "cvv2" => "301" ); + tx_check( + $tx, + desc => "cvv2(301)", + is_success => 0, + result_code => 126, + error_message => "Under review by Fraud Service", + authorization => "010101", + avs_code => "Y", + cvv2_code => "N", + ); + + # IF CVV2 >= 601 THEN CVV2MATCH == "X" + $tx->content( %content, "cvv2" => "601" ); + tx_check( + $tx, + desc => "cvv2(601)", + is_success => 0, + result_code => 126, + error_message => "Under review by Fraud Service", + authorization => "010101", + avs_code => "Y", + cvv2_code => "X", + ); +} + +sub tx_check { + my $tx = shift; + my %o = @_; + $tx->test_transaction(1); $tx->submit; - is( $tx->is_success, 0, "invalid card num: " . tx_info($tx) ); + + is( $tx->is_success, $o{is_success}, $o{desc} . ": " . tx_info($tx) ); + is( $tx->result_code, $o{result_code}, "result_code(): RESULT" ); + like( $tx->order_number, qr/^\w{12}/, "order_number() / PNREF" ); + is( $tx->error_message, $o{error_message}, "error_message() / RESPMSG" ); + is( $tx->authorization, $o{authorization}, "authorization() / AUTHCODE" ); + is( $tx->avs_code, $o{avs_code}, "avs_code() / AVSADDR and AVSZIP" ); + is( $tx->cvv2_code, $o{cvv2_code}, "cvv2_code() / CVV2MATCH" ); } sub tx_info { @@ -68,7 +183,8 @@ sub tx_info { return ( join( "", - "order_number(", $tx->order_number, ")", + "is_success(", $tx->is_success, ")", + " order_number(", $tx->order_number, ")", " error_message(", $tx->error_message, ")", " result_code(", $tx->result_code, ")", " auth_info(", $tx->authorization, ")", -- 2.11.0