...and here is the test:
#!/usr/bin/perl
use Test::More qw(no_plan) ;
my ($username,@userinfo) =
(qw(bronto Marco Marongiu),'San Gavino') ;
my $good = 'c0m&c@z%' ;
my @passwords = ('shrt', # too short
'waytoolong', # too long
'pitbull', # doesn't contain digits/symbols
'!@#$%^&', # doesn't contain digits/alphas
'12345678', # doesn't contain symbols/alphas
'pitbul1', # doesn't contain symbols
'pitbull@', # doesn't contain digits
'!@#$1234', # doesn't contain alphas
'manyyyyy', # too many y's
't1c&t1c&', # password matches itself after rotatio
+ns
'nto1bro%', # stripped rot. password matches userna
+me
'oc$ra1m;', # stripped reversed password matches na
+me
"comar1\$", # stripped rot. password matches name
'ma0$ron', # stripped rot. password matches surnam
+e
'sang@v1n', # stripped rot. password matches city
'!gavian0', # stripped rot. password and city match
) ;
my $ok = "password ok" ;
require './passcheck.pl' ;
is($ok,passcheck($username,$good,@userinfo),"$good is good") ;
foreach (@passwords) {
my $check = passcheck($username,$_,@userinfo) ;
isnt($ok,$check,"$_: $check") ;
}
Ciao!
--bronto
The very nature of Perl to be like natural language--inconsistant and full of dwim and special cases--makes it impossible to know it all without simply memorizing the documentation (which is not complete or totally correct anyway).
--John M. Dlugosz