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' );
$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;