Data-Passphrase

 view release on metacpan or  search on metacpan

scripts/passphrase-test  view on Meta::CPAN

#!/usr/bin/perl

# $Id: passphrase-test,v 1.10 2007/08/14 15:45:51 ajk Exp $

use strict;
use warnings;

use Data::Passphrase;
use Data::Passphrase::Ruleset;
use Getopt::Long;
use Readonly;
use Test::More;

Readonly my $DEFAULT_RULES_FILE => '/etc/passphrase_rules';

# subclass of LWP::UserAgent that grabs credentials
my $Username = $ENV{LOGNAME};
my $Password;
package MyAgent;
use base qw(LWP::UserAgent);
sub get_basic_credentials { ($Username, $Password) };
package main;

# parse command line
my ($debug, $help, $location);
my $file = $DEFAULT_RULES_FILE;
GetOptions
    'd|debug'        => \$debug,
    'f|rules-file=s' => \$file,
    'l|location=s'   => \$location,
    'h|help'         => \$help,
    ;
Getopt::Long::Configure qw(bundling);

if ($help) {
    print <<"END";
usage: $0 [-dl]
usage: $0 -h
       -d  enable debugging messages when using a local service
       -f  specify a rules file other than $DEFAULT_RULES_FILE
       -h  display this help message
       -l  location of passphrase validation service [default: localhost]
END
    exit;
}

# read in the ruleset
my $ruleset = Data::Passphrase::Ruleset->new({
    debug => $debug,
    file  => $file,
});

# build passphrase object
my $passphrase_object = Data::Passphrase->new({
    debug    => $debug,
    ruleset  => $ruleset,
    username => $Username,
});

sub build_test_plan {
    my @test_plan = ();
    foreach my $rule ( @{ $ruleset->get_rules() } ) {

        # unpack rule attributes
        my $rule_code    = $rule->get_code   ();
        my $rule_message = $rule->get_message();

        # skip disabled tests
        next if $rule->get_disabled();

        # get list of passphrases from test specification if any
        my $battery  = $rule->get_test() or next;

        # if the battery is specified as code, run it
        if (ref $battery eq 'CODE') {
            $battery = $battery->($passphrase_object);
        }

        # if a hash, each test phrase may contain distinct code/message data
        my @tests;
        if (ref $battery eq 'HASH') {



( run in 0.852 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )