add a testing arg to make testing less noisy with expected alert messages and begin work on the tests for the Match module

This commit is contained in:
Zane C. B-H 2019-07-17 02:24:55 -05:00
parent 74894707d0
commit 6fcfbb57d7
2 changed files with 126 additions and 10 deletions

View File

@ -27,6 +27,33 @@ our $VERSION = '0.0.0';
=head2 new
This initializes a new check object.
It takes one value and thht is a hash ref with the key checks.
This is a array of hashes.
=head3 checks hash keys
=head4 type
This is the name of the check relative to 'Net::Connection::Match::'.
So 'Net::Connection::Match::PTR' would become 'PTR'.
=head4 args
This is a hash or args to pash to the check. These are passed to the new
method of the check module.
=head4 invert
This is either boolean on if the check should be inverted or not.
my $mce;
eval{
$ncm=Net::Connection::Match->new( $args );
};
=cut
sub new{
@ -41,14 +68,14 @@ sub new{
if ( ! defined( $args{checks} ) ){
die ('No check key specified in the argument hash');
}
if ( ref( $args{checks} ) eq 'ARRAY' ){
if ( ref( @{ $args{checks} } ) eq 'ARRAY' ){
die ('The checks key is not a array');
}
# Will never match anything.
if ( ! defined $args{checks}[0] ){
die ('Nothing in the checks array');
}
if ( ref( $args{checks}[0] ) eq 'HASH' ){
if ( ref( %{ $args{checks}[0] } ) eq 'HASH' ){
die ('The first item in the checks array is not a hash');
}
@ -56,6 +83,7 @@ sub new{
perror=>undef,
error=>undef,
errorString=>"",
testing=>0,
errorExtra=>{
flags=>{
1=>'failedCheckInit',
@ -122,11 +150,7 @@ sub new{
eval( $eval_string );
if (!defined( $check )){
$self->{error}=1;
$self->{errorString}='Failed to init the check for '.$check_int.' as it returned undef... '.$@;
$self->warn;
$self->{perror}=1;
return $self;
die 'Failed to init the check for '.$check_int.' as it returned undef... '.$@;
}
$new_check{check}=$check;
@ -136,16 +160,20 @@ sub new{
$check_int++;
}
if ( $args{testing} ){
$self->{testing}=1;
}
return $self;
}
=head2 matches
=head2 match
Checks if a single Net::Connection object matches the stack.
=cut
sub matches{
sub match{
my $self=$_[0];
my $conn=$_[1];
@ -159,7 +187,9 @@ sub matches{
){
$self->{error}=2;
$self->{errorString}='Either the connection is undefined or is not a Net::Connection object';
$self->warn;
if ( ! $self->{testing} ){
$self->warn;
}
return undef;
}
@ -198,6 +228,19 @@ sub matches{
return 0;
}
=head1 ERROR HANDLING / FLAGS
Error handling is provided by L<Error::Helper>.
=head2 1 / failedCheckInit
Calling new for one or more of the checks failed.
=head2 2 / notNCobj
Not a Net::Connection object. Either is is not defined
or what is being passed is not a Net::Connection object.
=head1 AUTHOR
Zane C. Bowers-Hadley, C<< <vvelox at vvelox.net> >>

View File

@ -0,0 +1,73 @@
#!perl -T
use 5.006;
use strict;
use warnings;
use Test::More;
use Net::Connection;
BEGIN {
use_ok( 'Net::Connection::Match' ) || print "Bail out!\n";
}
my $connection_args={
foreign_host=>'10.0.0.1',
foreign_port=>'22',
local_host=>'10.0.0.2',
local_port=>'12322',
proto=>'tcp4',
state=>'LISTEN',
};
my %args=(
testing=>1,
checks=>[
{
type=>'Ports',
invert=>0,
args=>{
ports=>[
'22',
],
lports=>[
'53',
],
fports=>[
'12345',
],
}
}
]
);
my $checker;
# makes sure we error with empty args
my $worked=0;
eval{
$checker=Net::Connection::Match->new();
$worked=1;
};
ok( $worked eq '0', 'empty init check') or diag('Calling new with empty args worked');
# makes sure we can init with good args
$worked=0;
eval{
$checker=Net::Connection::Match->new( \%args );
$worked=1;
};
ok( $worked eq '1', 'init check') or diag('Calling Net::Connection::Match::Ports->new resulted in... '.$@);
# make sure it will not accept a improper ref type
my $returned;
eval{
$returned=$checker->match($checker);
};
ok( $checker->error eq '2', 'match improper ref check') or diag('match accepted a ref other than Net::Connection');
# make sure it will not accept null input
eval{
$returned=$checker->match();
};
ok( $checker->error eq '2', 'match null input check') or diag('match accepted a ref other than Net::Connection');
done_testing(5);