use lib 't';
use Business::OnlinePayment;
+use Business::CreditCard qw/ validate /;
my $tr;
ok( $tr = Business::OnlinePayment->new('Bambora'), 'Instantiatiate $tr' );
my $token;
ok( $token = $tr->generate_token, "\$tr->generate_token: $token" );
ok( $token =~ /^99\d{14}$/, 'Token matches expected format' );
+
+#
+# Generate 1,000,000 tokens in series, and check for token collissions
+#
+
+my $start = time();
+my $invalid = 0;
+my %seen;
+for my $i ( 1..1000000 ) {
+ my $token = Business::OnlinePayment::Bambora->generate_token;
+ $invalid++ unless validate( $token );
+ $seen{$token}++;
+}
+my $end = time();
+ok(
+ scalar keys %seen == 1000000,
+ sprintf 'Generated %s tokens in %s seconds', scalar(keys(%seen)), $end-$start
+);
+ok( $invalid == 0, 'All generated tokens pass Luhn check' );
+ok( ! grep( {$_ > 1} values %seen ), "All 1M tokens were unique" );
+
done_testing;
\ No newline at end of file