1#!/usr/bin/perl
2use strict;
3use Nmap::Parser;
4use File::Spec;
5use Cwd;
6use Test::More 'no_plan';
7use constant HOST1 => '127.0.0.1';
8my @UP_HOSTS = (HOST1);
9use constant TOTAL_HOSTS => 1;
10
11use constant TEST_FILE =>'test1.xml';
12use vars qw($host $np $session $svc $os $FH);
13
14$FH = File::Spec->catfile(cwd(),'t',TEST_FILE);
15$FH = File::Spec->catfile(cwd(),    TEST_FILE)  unless(-e $FH);
16
17my $np = new Nmap::Parser;
18
19parser_test();
20session_test();
21host_1();
22
23sub parser_test {
24    ok($np->parsefile($FH),"Parsing nmap data: $FH");
25
26    #TESTING GET_IPS()
27    is_deeply([$np->get_ips()],[HOST1], 'Testing get_ips for correct number of hosts');
28    is_deeply([$np->get_ips('up')],[HOST1], 'Testing get_ips for correct hosts with status = up');
29    #is_deeply([$np->get_ips('down')],[HOST2], 'Testing get_ips for correct hosts for with status = down');
30}
31
32
33
34sub session_test {
35
36    isa_ok($session = $np->get_session(), 'Nmap::Parser::Session');
37    print $session->nmap_version() . "\n";;
38    is($session->numservices(),1670,'Session: total number of services');
39    is($session->numservices('syn'),1670,'Session: numservices type = connect');
40    is($session->numservices('udp'),undef,'Session: numservices type = udp');
41    is($session->start_time(),1144909629,'Session: start_time');
42    is($session->start_str(),'Thu Apr 13 02:27:09 2006','Session: start_str');
43    is($session->finish_time(),1144909633,'Session: finish_time');
44    is($session->time_str(),'Thu Apr 13 02:27:13 2006','Session: time_str');
45    is($session->nmap_version(),'3.95','Session: nmap_version');
46    is($session->xml_version(),'1.01','Session: xml_version');
47    is($session->scan_args(),'nmap -A -vv -O -oX test1 127.0.0.1','Session: scan_args');
48    is($session->scan_type_proto(),undef,'Session: scan_type_proto()');
49    is($session->scan_type_proto('syn'),'tcp','Session: scan_type_proto(syn)');
50
51    }
52
53
54sub host_1 {
55
56    isa_ok($host = $np->get_host(HOST1), 'Nmap::Parser::Host','GET '.HOST1);
57    is($host->status,'up','Host1: status');
58    is($host->addr,HOST1,'Host1: addr');
59    is($host->addrtype,'ipv4','Host1: addrtype');
60    is($host->ipv4_addr,HOST1,'Host1: ipv4_addr');
61    is($host->hostname,'localhost.localdomain','Host1: hostname()');
62    is($host->hostname(0),$host->hostname, 'Host1: hostname(0)');
63    is($host->hostname(1),'localhost.localdomain', 'Host1: hostname(1)');
64    is($host->extraports_state(),'closed','Host1: extraports_state');
65    is($host->extraports_count(),1670,'Host1: extraports_count');
66
67
68    is($host->tcp_port_count(),0,'Host1: tcp_port_count');
69    is($host->udp_port_count(),0,'Host1: udp_port_count');
70
71    is_deeply([$host->tcp_ports()],[qw()],'Host1: tcp_ports()');
72    is_deeply([$host->tcp_ports('open')],[qw()],'Host1: tcp_ports(open)');
73    is_deeply([$host->tcp_ports('closed')], [qw()],'Host1: tcp_ports(closed)');
74    is_deeply([$host->tcp_ports('filtered')],[qw()],'Host1: tcp_ports(filtered)');
75    is_deeply([$host->tcp_ports('open|filtered')],[qw()],'Host1: tcp_ports(open|filtered)');
76    is_deeply([$host->udp_ports()], [qw()],'Host1: udp_ports()');
77    is_deeply([$host->udp_ports('open')],[qw()],'Host1: udp_ports(open)');
78    is_deeply([$host->udp_ports('filtered')], [qw()],'Host1: udp_ports(filtered)');
79    is_deeply([$host->udp_ports('closed')],  [qw()],'Host1: udp_ports(closed)');
80
81    is($host->tcp_ports('open'),    $host->tcp_open_ports(),    'Host1: tcp_open_ports');
82    is($host->tcp_ports('filtered'),$host->tcp_filtered_ports(),'Host1: tcp_filtered_ports');
83    is($host->tcp_ports('closed'),  $host->tcp_closed_ports(),  'Host1: tcp_closed_ports');
84
85    is($host->udp_ports('open'),    $host->udp_open_ports(),    'Host1: udp_open_ports');
86    is($host->udp_ports('filtered'),$host->udp_filtered_ports(),'Host1: udp_filtered_ports');
87    is($host->udp_ports('closed'),  $host->udp_closed_ports(),  'Host1: udp_closed_ports');
88
89    isa_ok($np->del_host(HOST1), 'Nmap::Parser::Host','DEL '.HOST1);
90    is($np->get_host(HOST1),undef, 'Testing deletion of '.HOST1);
91
92
93    #TESTING OS OBJECT FOR HOST 1
94    my $os;
95    isa_ok($os = $host->os_sig(),'Nmap::Parser::Host::OS','os_sig()');
96
97    }
98