Browse Source

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

tags/0.0.0
Zane C. B-H 4 months ago
parent
commit
6fcfbb57d7
2 changed files with 126 additions and 10 deletions
  1. +53
    -10
      Net-Connection-Match/lib/Net/Connection/Match.pm
  2. +73
    -0
      Net-Connection-Match/t/Match.t

+ 53
- 10
Net-Connection-Match/lib/Net/Connection/Match.pm 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> >>

+ 73
- 0
Net-Connection-Match/t/Match.t 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);

Loading…
Cancel
Save