# $Id: 01-resolver.t 673 2007-08-01 09:56:57Z olaf $ -*-perl-*- use Test::More tests => 45; use strict; use File::Spec; BEGIN { use_ok('Net::DNS'); } my $res = Net::DNS::Resolver->new(); ok($res, 'new() returned something'); isa_ok($res, 'Net::DNS::Resolver', 'new() returns an object of the correct class.'); ok(scalar $res->nameservers, 'nameservers() works'); my $searchlist = [qw(t.net-dns.org t2.net-dns.org)]; is_deeply([$res->searchlist(@$searchlist)], $searchlist, 'setting searchlist returns correctly.'); is_deeply([$res->searchlist], $searchlist, 'setting searchlist stickts.'); my %good_input = ( port => 54, srcaddr => '10.1.0.1', srcport => 53, domain => 'net-dns.org', retrans => 6, retry => 5, usevc => 1, stayopen => 1, igntc => 1, recurse => 0, defnames => 0, dnsrch => 0, debug => 1, tcp_timeout => 60, udp_timeout => 60, persistent_tcp => 1, dnssec => 1, force_v4 => 1, ); #diag "\n\nIf you do not have Net::DNS::SEC installed you will see a warning.\n"; #diag "It is safe to ignore this\n"; while (my ($param, $value) = each %good_input) { open (TMPFH,">/dev/null") or die "can't open /dev/null"; local *STDERR=*TMPFH; is_deeply($res->$param($value), $value, "setting $param returns correctly"); is_deeply($res->$param(), $value, "setting $param sticks"); close (TMPFH); } my %bad_input = ( tsig_rr => 'set', errorstring => 'set', answerfrom => 'set', answersize => 'set', querytime => 'set', axfr_sel => 'set', axfr_rr => 'set', axfr_soa_count => 'set', udppacketsize => 'set', cdflag => 'set', ); # Some people try to run these on private address space." use Net::IP; use IO::Socket::INET; my $sock = IO::Socket::INET->new(PeerAddr => '193.0.14.129', # k.root-servers.net. PeerPort => '25', Proto => 'udp'); my $ip=Net::IP->new(inet_ntoa($sock->sockaddr)); SKIP: { skip 'Online tests disabled.', 3 unless -e 't/online.enabled'; skip 'Tests may not run succesful from private IP('.$ip->ip() .')', 3 if ($ip->iptype() ne "PUBLIC"); my $res = Net::DNS::Resolver->new; $res->nameservers('a.t.net-dns.org'); my $ip = ($res->nameservers)[0]; is($ip, '10.0.1.128', 'Nameservers() looks up IP.') or diag ($res->errorstring . $res->print) ; $res->nameservers('cname.t.net-dns.org'); $ip = ($res->nameservers)[0]; is($ip, '10.0.1.128', 'Nameservers() looks up cname.') or diag ($res->errorstring . $res->print) ; # Test to trigger a bug in release 0.59 of Question.pm # (rt.cpan.org #28198) (modification of $_ value in various # places my $die = 0; undef ($res); # default values again $res = Net::DNS::Resolver->new(); eval{ local $^W = 1; local $SIG{__DIE__} = sub { $die++ }; for (0) # Sets $_ to 0 { my $q=$res->send("net-dns.org","SOA"); } }; is($die, 0, 'No deaths because of \$_'); }