s/JetPay/ippay/ per new spec
[Business-OnlinePayment-IPPay.git] / t / card.t
index a47d623..f00ce4e 100644 (file)
--- a/t/card.t
+++ b/t/card.t
@@ -1,10 +1,10 @@
 #!/usr/bin/perl -w
 
 use Test::More;
+require "t/lib/test_account.pl";
 
-my($login, $password, @opts) = ('TESTMERCHANT', '',
-                                'default_Origin' => 'RECURRING' );
-plan tests => 43;
+my($login, $password, %opt) = test_account_or_skip('card');
+plan tests => 50;
   
 use_ok 'Business::OnlinePayment';
 
@@ -35,7 +35,7 @@ my $voidable_amount = 0;
 
 # valid card number test
 {
-  my $tx = Business::OnlinePayment->new("IPPay", @opts);
+  my $tx = Business::OnlinePayment->new("IPPay", %opt);
   $tx->content(%content);
   tx_check(
     $tx,
@@ -55,23 +55,24 @@ my $voidable_amount = 0;
 
 # invalid card number test
 {
-  my $tx = Business::OnlinePayment->new("IPPay", @opts);
+  my $tx = Business::OnlinePayment->new("IPPay", %opt);
   $tx->content(%content, card_number => "4111111111111112" );
   tx_check(
     $tx,
     desc          => "invalid card_number",
     is_success    => 0,
-    result_code   => '912',
-    error_message => 'INVALID CARD NUMBER',
+    result_code   => '900', #'912' with old jetpay gw
+    error_message => 'Invalid card number.  ', #'INVALID CARD NUMBER' w/old gw
     authorization => qr/^$/,
     avs_code      => '',           # so rather pointless :\
     cvv2_response => '',           # ...
+    order_number  => qr/^$/,
   );
 }
 
 # authorization only test
 {
-  my $tx = Business::OnlinePayment->new("IPPay", @opts);
+  my $tx = Business::OnlinePayment->new("IPPay", %opt);
   $tx->content(%content, action => 'authorization only',  amount => '3.00' );
   tx_check(
     $tx,
@@ -89,9 +90,38 @@ my $voidable_amount = 0;
   $postable_amount = $content{amount} if $tx->is_success;
 }
 
+# authorization void test
+{
+
+  my $tx = Business::OnlinePayment->new("IPPay", %opt);
+  $tx->content(%content, action => 'authorization only',  amount => '3.00' );
+  $tx->test_transaction(1);
+  $tx->submit;
+
+  if ($tx->is_success) {
+    my $void_tx = Business::OnlinePayment->new("IPPay", %opt );
+
+    $tx->content(%content, action       => 'reverse authorization',
+                           order_number => $tx->order_number );
+    tx_check(
+      $tx,
+      desc          => "reverse authorization",
+      is_success    => 1,
+      result_code   => '000',
+      error_message => 'VOID SUCCESSFUL',
+      authorization => qr/TEST\d{2}/,
+      avs_code      => '',          # so rather pointless :\
+      cvv2_response => 'P',          # ...
+    );
+  }
+  else {
+    
+  }
+}
+
 # post authorization test
-SKIP: {
-  my $tx = new Business::OnlinePayment( "IPPay", %opts );
+{
+  my $tx = new Business::OnlinePayment( "IPPay", %opt );
   $tx->content( %content, 'action'       => "post authorization", 
                           'amount'       => $postable_amount,    # not required
                           'order_number' => $postable,
@@ -109,8 +139,8 @@ SKIP: {
 }
 
 # void test
-SKIP: {
-  my $tx = new Business::OnlinePayment( "IPPay", %opts );
+{
+  my $tx = new Business::OnlinePayment( "IPPay", %opt );
   $tx->content( %content, 'action' => "Void",
                           'order_number' => $voidable,
                           'authorization' => $voidable_auth,
@@ -120,26 +150,26 @@ SKIP: {
     desc          => "void",
     is_success    => 1,
     result_code   => '000',
-    error_message => 'VOID PROCESSED',
-    authorization => qr/^$voidable_auth$/,
+    error_message => 'VOID SUCCESSFUL',
+    authorization => qr/TEST\d{2}/,
     avs_code      => '',
-    cvv2_response => '',
+    cvv2_response => 'P',
     );
 }
 
 # credit test
-SKIP: {
-  my $tx = new Business::OnlinePayment( "IPPay", %opts );
+{
+  my $tx = new Business::OnlinePayment( "IPPay", %opt );
   $tx->content( %content, 'action' => "credit");
   tx_check(
     $tx,
     desc          => "credit",
     is_success    => 1,
     result_code   => '000',
-    error_message => 'RETURN ACCEPTED',
-    authorization => qr/\d{6}/,
+    error_message => 'APPROVED',
+    authorization => qr/TEST\d{2}/,
     avs_code      => '',
-    cvv2_response => '',
+    cvv2_response => 'P',
     );
 }
 
@@ -151,13 +181,14 @@ sub tx_check {
     $tx->test_transaction(1);
     $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( $tx->error_message, $o{error_message}, "error_message() / RESPMSG" );
-    like( $tx->authorization, $o{authorization}, "authorization() / AUTHCODE" );
-    is( $tx->avs_code,  $o{avs_code},  "avs_code() / AVSADDR and AVSZIP" );
-    is( $tx->cvv2_response, $o{cvv2_response}, "cvv2_response() / CVV2MATCH" );
-    like( $tx->order_number, qr/^\w{18}/, "order_number() / PNREF" );
+    is(   $tx->is_success,    $o{is_success},    "$o{desc}: ". tx_info($tx)  );
+    is(   $tx->result_code,   $o{result_code},   "$o{desc}: result_code()"   );
+    is(   $tx->error_message, $o{error_message}, "$o{desc}: error_message()" );
+    like( $tx->authorization, $o{authorization}, "$o{desc}: authorization()" );
+    is(   $tx->avs_code,      $o{avs_code},      "$o{desc}: avs_code()"      );
+    is(   $tx->cvv2_response, $o{cvv2_response}, "$o{desc}: cvv2_response()" );
+    like( $tx->order_number,  $o{order_number}
+                                || qr/^\w{18}/,  "$o{desc}: order_number()"  );
 }
 
 sub tx_info {
@@ -178,10 +209,3 @@ sub tx_info {
     );
 }
 
-sub expiration_date {
-    my($month, $year) = (localtime)[4,5];
-    $year++;       # So we expire next year.
-    $year %= 100;  # y2k?  What's that?
-
-    return sprintf("%02d/%02d", $month, $year);
-}