summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2017-02-01 16:31:56 -0600
committerJonathan Prykop <jonathan@freeside.biz>2017-02-01 16:31:56 -0600
commit5701cfb8cfe8458f2083957bc13fef15190c201c (patch)
tree4ef8be5692803010dec73bf00483385f1054103d
parent6ebc654a3f2f82be62b16b5bec62b0dd1862e53e (diff)
71513: Card tokenization [American Express tests]
-rwxr-xr-xFS/t/suite/13-tokenization.t30
-rwxr-xr-xFS/t/suite/14-tokenization_refund.t7
2 files changed, 34 insertions, 3 deletions
diff --git a/FS/t/suite/13-tokenization.t b/FS/t/suite/13-tokenization.t
index 0a965aa..4b8794b 100755
--- a/FS/t/suite/13-tokenization.t
+++ b/FS/t/suite/13-tokenization.t
@@ -8,11 +8,13 @@ use FS::cust_main;
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
@@ -85,6 +87,32 @@ my $pending_failed = FS::cust_pay_pending->new({
$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;
diff --git a/FS/t/suite/14-tokenization_refund.t b/FS/t/suite/14-tokenization_refund.t
index 1a0f840..a7d9fa8 100755
--- a/FS/t/suite/14-tokenization_refund.t
+++ b/FS/t/suite/14-tokenization_refund.t
@@ -229,8 +229,10 @@ foreach my $voiding (0,1) {
exit;
sub random_card {
- my $payinfo = '4111' . join('', map { int(rand(10)) } 1 .. 11);
- $payinfo .= generate_last_digit($payinfo);
+# my $payinfo = '4111' . join('', map { int(rand(10)) } 1 .. 11);
+# $payinfo .= generate_last_digit($payinfo);
+# Use AmEx for everything, to make sure cardtype gets set correctly
+ my $payinfo = '347594362484937'; #American Express
my $paydate = DateTime->now
->add('years' => 1)
->truncate(to => 'month')
@@ -239,6 +241,7 @@ sub random_card {
'payinfo' => $payinfo,
'paydate' => $paydate,
'payname' => 'Tokenize Me',
+ 'paycvv' => '1234', #American Express
);
}