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