1#!/usr/bin/perl 2 3 4use strict; 5#use blib; 6use File::Spec; 7use Cwd; 8use DBI; 9use File::Copy; 10use Test::DatabaseRow; 11use Test::More tests => 29; 12my $test_file = 'change2.xml'; 13use vars qw($host $np $session $svc $os $FH); 14 15is(system("sudo ./scanpbnj -x t/$test_file > /dev/null"),0,"Scanpbnj input from $test_file"); 16 17#my $dbh = DBI->connect('dbi:SQLite:dbname=data.dbl'); 18my $dsn = "DBI:Pg:database=pbnjdb;host=localhost;port=5432"; 19my $dbh = DBI->connect( $dsn, "pbnjdb", "tmp" ); 20 21# set the default database handle 22local $Test::DatabaseRow::dbh = $dbh; 23 24# service 25 25testService( { 26 service => 'ssh', 27 port => 22, 28 proto => 'tcp', 29 version => '4.2p1 Debian-7ubuntu3', 30 state => 'up', 31 banner => 'OpenSSH', 32 updated_on => 'Sat May 27 19:02:53 2006', 33 machine_updated => '1148770973' 34 }); 35testService( { 36 service => 'ipp', 37 port => 631, 38 proto => 'tcp', 39 version => '1.2', 40 state => 'up', 41 banner => 'CUPS', 42 updated_on => 'Sat May 27 19:02:53 2006', 43 machine_updated => '1148770973' 44 }); 45testService( { 46 service => 'smtp', 47 port => 25, 48 proto => 'tcp', 49 version => 'unknown version', 50 state => 'up', 51 banner => 'Postfix smtpd', 52 updated_on => 'Sat May 27 19:02:53 2006', 53 machine_updated => '1148770973' 54 }); 55 56testServiceChange( { 57 service => 'ssh', 58 port => 22, 59 proto => 'tcp', 60 version => '4.2p1 Debian-7ubuntu3', 61 state => 'down', 62 banner => 'OpenSSH', 63 updated_on => 'Sat May 27 19:03:24 2006', 64 machine_updated => '1148771004' 65 }); 66#system("./04change3.t"); 67 68 69 70 71 72 73sub testService{ 74 my ($href) = @_; 75 76 die "testService: port not defined" unless defined $href->{port}; 77 die "testService: service not defined" unless defined $href->{service}; 78 die "testService: version not defined" unless defined $href->{version}; 79 die "testService: proto not defined" unless defined $href->{proto}; 80 die "testService: state not defined" unless defined $href->{state}; 81 die "testService: updated_on not defined" unless defined $href->{updated_on}; 82 die "testService: machine_updated not defined" 83 unless defined $href->{machine_updated}; 84 85 my $service = $href->{service}; 86 my $port = $href->{port}; 87 my $version = $href->{version}; 88 my $proto = $href->{proto}; 89 my $state = $href->{state}; 90 my $updated = $href->{updated_on}; 91 my $machine_updated = $href->{machine_updated}; 92 93 94 row_ok( 95 sql => "SELECT service FROM services WHERE mid = '1' and port=$port", 96 tests => [ service => $service ], 97 label => "Testing table:service port $port element:service"); 98 row_ok( 99 sql => "SELECT port FROM services WHERE mid = '1' and port=$port", 100 tests => [ port => $port ], 101 label => "Testing table:service element:port"); 102 row_ok( 103 sql => "SELECT protocol FROM services WHERE mid = '1' and 104port=$port", 105 tests => [ protocol => $proto ], 106 label => "Testing table:service element:protocol"); 107 108 row_ok( 109 sql => "SELECT state FROM services WHERE mid = '1' and port=$port", 110 tests => [ state => $state ], 111 label => "Testing table:service element:state"); 112 113 row_ok( 114 sql => "SELECT version FROM services WHERE mid = '1' and port=$port", 115 tests => [ version => $version ], 116 label => "Testing table:service element:protocol"); 117 118 row_ok( 119 sql => "SELECT machine_updated FROM services WHERE mid = '1' and 120 port=$port", 121 tests => [ machine_updated => $machine_updated ], 122 label => "Testing table:service element:machine_updated"); 123 124 row_ok( 125 sql => "SELECT updated_on FROM services WHERE mid = '1' and port=$port", 126 tests => [ updated_on => $updated ], 127 label => "Testing table:service element:updated_on"); 128 } 129 130 131sub testServiceChange{ 132 my ($href) = @_; 133 134 die "testService: port not defined" unless defined $href->{port}; 135 die "testService: service not defined" unless defined $href->{service}; 136 die "testService: version not defined" unless defined $href->{version}; 137 die "testService: proto not defined" unless defined $href->{proto}; 138 die "testService: state not defined" unless defined $href->{state}; 139 die "testService: updated_on not defined" unless defined $href->{updated_on}; 140 die "testService: machine_updated not defined" unless defined $href->{machine_updated}; 141 142 my $service = $href->{service}; 143 my $port = $href->{port}; 144 my $version = $href->{version}; 145 my $proto = $href->{proto}; 146 my $state = $href->{state}; 147 my $updated = $href->{updated_on}; 148 my $machine_updated = $href->{machine_updated}; 149 150 row_ok( 151 sql => "SELECT service FROM services WHERE mid = '1' and port=$port", 152 tests => [ service => $service ], 153 label => "Testing table:service port $port element:service"); 154 row_ok( 155 sql => "SELECT port FROM services WHERE mid = '1' and port=$port", 156 tests => [ port => $port ], 157 label => "Testing table:service element:port"); 158 row_ok( 159 sql => "SELECT protocol FROM services WHERE mid = '1' and port=$port", 160 tests => [ protocol => $proto ], 161 label => "Testing table:service element:protocol"); 162 row_ok( 163 sql => "SELECT state FROM services WHERE mid = '1' and port=$port and machine_updated=$machine_updated", 164 tests => [ state => $state ], 165 label => "Testing table:service element:state"); 166 167 row_ok( 168 sql => "SELECT version FROM services WHERE mid = '1' and port=$port", 169 tests => [ version => $version ], 170 label => "Testing table:service element:protocol"); 171 172 row_ok( 173 sql => "SELECT machine_updated FROM services WHERE mid = '1' and 174port=$port and machine_updated=$machine_updated", 175 tests => [ machine_updated => $machine_updated ], 176 label => "Testing table:service element:machine_updated"); 177 178 row_ok( 179 sql => "SELECT updated_on FROM services WHERE mid = '1' and port=$port and machine_updated=$machine_updated", 180 tests => [ updated_on => $updated ], 181 label => "Testing table:service element:updated_on"); 182 } 183 184