use Test::More tests => 41;
BEGIN { use_ok('String::MkPasswd') };
String::MkPasswd->import("mkpasswd");
my $passwd = mkpasswd();
ok(length $passwd == 9, "length = 9");
ok(&count_digits($passwd) == 2, "digits = 2");
ok(&count_lower($passwd) == 4, "lower = 4");
ok(&count_upper($passwd) == 2, "upper = 2");
ok(&count_special($passwd) == 1, "special = 1");
$passwd = mkpasswd(
-length => 20,
-minnum => 4,
-minlower => 7,
-minupper => 6,
-minspecial => 3,
);
ok(length $passwd == 20, "length = 20");
ok(&count_digits($passwd) == 4, "digits = 4");
ok(&count_lower($passwd) == 7, "lower = 7");
ok(&count_upper($passwd) == 6, "upper = 6");
ok(&count_special($passwd) == 3, "special = 3");
$passwd = mkpasswd(
-minnum => 0,
);
ok(length $passwd == 9, "length = 9");
ok(&count_digits($passwd) == 0, "digits = 0");
ok(&count_lower($passwd) == 6, "lower = 6");
ok(&count_upper($passwd) == 2, "upper = 2");
ok(&count_special($passwd) == 1, "special = 1");
$passwd = mkpasswd(
-minlower => 0,
);
ok(length $passwd == 9, "length = 9");
ok(&count_digits($passwd) == 2, "digits = 2");
ok(&count_lower($passwd) == 4, "lower = 4");
ok(&count_upper($passwd) == 2, "upper = 2");
ok(&count_special($passwd) == 1, "special = 1");
$passwd = mkpasswd(
-minupper => 0,
);
ok(length $passwd == 9, "length = 9");
ok(&count_digits($passwd) == 2, "digits = 2");
ok(&count_lower($passwd) == 6, "lower = 6");
ok(&count_upper($passwd) == 0, "upper = 0");
ok(&count_special($passwd) == 1, "special = 1");
$passwd = mkpasswd(
-minspecial => 0,
);
ok(length $passwd == 9, "length = 9");
ok(&count_digits($passwd) == 2, "digits = 2");
ok(&count_lower($passwd) == 5, "lower = 5");
ok(&count_upper($passwd) == 2, "upper = 2");
ok(&count_special($passwd) == 0, "special = 0");
$passwd = mkpasswd(
-minnum => 0,
-minlower => 0,
-minupper => 0,
-minspecial => 0,
);
ok(length $passwd == 9, "length = 9");
ok(&count_digits($passwd) == 0, "digits = 0");
ok(&count_lower($passwd) == 9, "lower = 9");
ok(&count_upper($passwd) == 0, "upper = 0");
ok(&count_special($passwd) == 0, "special = 0");
$passwd = mkpasswd(
-length => 3,
-minnum => 3,
-minlower => 0,
-minupper => 0,
-minspecial => 0,
);
ok(length $passwd == 3, "length = 3");
ok(&count_digits($passwd) == 3, "digits = 3");
ok(&count_lower($passwd) == 0, "lower = 0");
ok(&count_upper($passwd) == 0, "upper = 0");
ok(&count_special($passwd) == 0, "special = 0");
sub count_digits {
my $re = qr/([0-9])/;
my $count = 0;
$count++ while $_[0] =~ /$re/g;
return $count;
}
sub count_lower {
my $re = qr/([a-z])/;
my $count = 0;
$count++ while $_[0] =~ /$re/g;
return $count;
}
sub count_special {
my $re = qr/([!@#\$%~^&*()=_+\[\]{}\\|;:'"<>,.?\/-])/;
my $count = 0;
$count++ while $_[0] =~ /$re/g;
return $count;
}
sub count_upper {
my $re = qr/([A-Z])/;
my $count = 0;
$count++ while $_[0] =~ /$re/g;
return $count;
}