use Business::CreditCard qw(generate_last_digit);
use DateTime;
if ( stat('/usr/local/etc/freeside/cardfortresstest.txt') ) {
- plan tests => 18;
+ plan tests => 25;
} else {
plan skip_all => 'CardFortress test encryption key is not installed.';
}
+#local $FS::cust_main::Billing_Realtime::DEBUG = 2;
+
### can only run on test database (company name "Freeside Test")
### will run upgrade, which uses lots of prints & warns beyond regular test output
$err = $pending_failed->insert;
ok( !$err, "create a failed payment attempt" ) or BAIL_OUT($err);
+# create two customers with an AmEx card & paycvv,
+# then run a payment with one, just to generate some test AmEx data
+
+my $amex_cust;
+foreach my $i (0,1) {
+ my $cust_main = $fs->new_customer("AmEx $i");
+ isa_ok ( $cust_main, 'FS::cust_main', "AmEx $i customer" ) or BAIL_OUT('');
+ $err = $cust_main->insert;
+ ok( !$err, "insert AmEx $i customer" ) or BAIL_OUT($err);
+ # add card
+ my $cust_payby;
+ my %card = random_card();
+ $card{'payinfo'} = '347594362484937';
+ $card{'paycvv'} = '1234';
+ $err = $cust_main->save_cust_payby(
+ %card,
+ payment_payby => $card{'payby'},
+ auto => 1,
+ saved_cust_payby => \$cust_payby
+ );
+ ok( !$err, "save AmEx $i card" ) or BAIL_OUT($err);
+ $amex_cust = $cust_main;
+}
+$err = $amex_cust->realtime_cust_payby( amount => '1.00' );
+ok( !$err, "run AmEx payment" ) or BAIL_OUT($err);
+
# find two stored credit cards.
my @cust = map { FS::cust_main->by_key($_) } (10, 12);
my @payby = map { ($_->cust_payby)[0] } @cust;
$payby[1] = $payby[1]->replace_old;
ok( $payby[1]->tokenized, "card is now tokenized" );
-# test db doesn't have this
-#foreach my $pg ($fs->qsearch('payment_gateway')) {
-# unless ($pg->gateway_module eq 'CardFortress') {
-# note('UPGRADING NON-CF PAYMENT GATEWAY');
-# my %pgopts = (
-# gateway => $pg->gateway_module,
-# gateway_login => $pg->gateway_username,
-# gateway_password => $pg->gateway_password,
-# private_key => '/usr/local/etc/freeside/cardfortresstest.txt',
-# );
-# $pg->gateway_module('CardFortress');
-# $pg->gateway_username('cardfortresstest');
-# $pg->gateway_password('(TEST54)');
-# $err = $pg->replace(\%pgopts);
-# last if $err;
-# }
-#}
-#ok( !$err, "remove non-CF payment gateways" ) or BAIL_OUT($err);
-
# invoke the part of freeside-upgrade that tokenizes
-FS::cust_main->queueable_upgrade( quiet => 1 );
+FS::cust_main->queueable_upgrade();
#$err = system('freeside-upgrade','admin');
#ok( !$err, 'tokenizable upgrade' ) or BAIL_OUT('Error string: '.$!);