diff options
Diffstat (limited to 't/021-generate_token.t')
-rwxr-xr-x | t/021-generate_token.t | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/t/021-generate_token.t b/t/021-generate_token.t index 14d38c1..39972e3 100755 --- a/t/021-generate_token.t +++ b/t/021-generate_token.t @@ -5,6 +5,7 @@ use Test::More; use lib 't'; use Business::OnlinePayment; +use Business::CreditCard qw/ validate /; my $tr; ok( $tr = Business::OnlinePayment->new('Bambora'), 'Instantiatiate $tr' ); @@ -12,4 +13,25 @@ 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 |