version 0.01
[Business-OnlinePayment-FirstDataGlobalGateway.git] / t / transaction_decline.t
index 47a4cd1..a8efafb 100644 (file)
@@ -3,25 +3,35 @@
 use strict;
 use warnings;
 use POSIX qw(strftime);
-use Test::More tests => 3;
-
+use Test::More;
 use Business::OnlinePayment;
 
-my %content = (                                                                 
-    action         => "Normal Authorization",                                   
-    type           => "CC",                                                     
-    description    => "Business::OnlinePayment::FirstDataGlobalGateway test",     
-    card_number    => '4111111111111111',
-    cvv2           => '123',
-    expiration     => '12/20',
-    amount         => '2.00',
-    first_name     => 'Tofu',
-    last_name      => 'Beast',
-    address        => '1234 Soybean Ln.',
-    city           => 'Soyville',
-    state          => 'CA', #where else?
-    zip            => '54545',
-);                                                                              
+my $login = $ENV{BOP_TEST_LOGIN};
+my $password = $ENV{BOP_TEST_PASSWORD};
+if (!$login) {
+  plan skip_all => "no test credentials provided; set BOP_TEST_LOGIN and BOP_TEST_PASSWORD to test communication with the gateway.",
+  1;
+  exit(0);
+}
+
+plan tests => 2;
+my %content = (
+  login    => $login,
+  password => $password,
+  action         => "Normal Authorization",
+  type           => "CC",
+  description    => "Business::OnlinePayment::FirstDataGlobalGateway test",
+  card_number    => '4111111111111111',
+  cvv2           => '123',
+  expiration     => '12/20',
+  amount         => '5521.00', # trigger error 521
+  first_name     => 'Tofu',
+  last_name      => 'Beast',
+  address        => '1234 Soybean Ln.',
+  city           => 'Soyville',
+  state          => 'CA', #where else?
+  zip            => '54545',
+);
 
 my $tx = new Business::OnlinePayment( 'FirstDataGlobalGateway' );
 
@@ -31,8 +41,9 @@ $tx->test_transaction(1);
 
 $tx->submit;
 
-unlike( $tx->error_message, qr/^Agent code has not been set up/, 'Test decline not a login error');
-is( $tx->is_success, 0, 'Test decline transaction successful');
-is( $tx->failure_status, 'decline', 'Test decline failure_status set');
+is( $tx->is_success, 0, 'declined purchase')
+  or diag('Test transaction should have failed, but succeeded');
+is( $tx->failure_status, 'nsf', 'failure status' )
+  or diag('Failure status reported as '.$tx->failure_status);
 
 1;