# $Id: 07-misc.t 625 2007-01-24 14:35:58Z olaf $ -*-perl-*- use Test::More tests => 37; use strict; BEGIN { use_ok('Net::DNS'); } # test to make sure that wildcarding works. # my $rr; eval { $rr = Net::DNS::RR->new('*.t.net-dns.org 60 IN A 10.0.0.1'); }; ok($rr, 'RR got made'); is($rr->name, '*.t.net-dns.org', 'Name is correct' ); is($rr->ttl, 60, 'TTL is correct' ); is($rr->class, 'IN', 'CLASS is correct' ); is($rr->type, 'A', 'TYPE is correct' ); is($rr->address, '10.0.0.1', 'Address is correct'); # # Make sure the underscore in SRV hostnames work. # my $srv; eval { $srv = Net::DNS::RR->new('_rvp._tcp.t.net-dns.org. 60 IN SRV 0 0 80 im.bastardsinc.biz'); }; ok(!$@, 'No errors'); ok($srv, 'SRV got made'); # # Test that the 5.005 Use of uninitialized value at # /usr/local/lib/perl5/site_perl/5.005/Net/DNS/RR.pm line 639. bug is gone # my $warning = 0; { local $^W = 1; local $SIG{__WARN__} = sub { $warning++ }; my $rr = Net::DNS::RR->new('mx.t.net-dns.org 60 IN MX 10 a.t.net-dns.org'); ok($rr, 'RR created'); is($rr->preference, 10, 'Preference works'); } is($warning, 0, 'No evil warning'); { my $mx = Net::DNS::RR->new('mx.t.net-dns.org 60 IN MX 0 mail.net-dns.org'); like($mx->string, '/0 mail.net-dns.org/'); is($mx->preference, 0); is($mx->exchange, 'mail.net-dns.org'); } { my $srv = Net::DNS::RR->new('srv.t.net-dns.org 60 IN SRV 0 2 3 target.net-dns.org'); like($srv->string, '/0 2 3 target.net-dns.org\./'); is($srv->rdatastr, '0 2 3 target.net-dns.org.'); } # # # Below are some thests that have to do with TXT RRs # # #;; QUESTION SECTION: #;txt2.t.net-dns.org. IN TXT #;; ANSWER SECTION: #txt2.t.net-dns.org. 60 IN TXT "Net-DNS\; complicated $tuff" "sort of \" text\; and binary \000 data" #;; AUTHORITY SECTION: #net-dns.org. 3600 IN NS ns1.net-dns.org. #net-dns.org. 3600 IN NS ns.ripe.net. #net-dns.org. 3600 IN NS ns.hactrn.net. #;; ADDITIONAL SECTION: #ns1.net-dns.org. 3600 IN A 193.0.4.49 #ns1.net-dns.org. 3600 IN AAAA my $UUencodedPacket=' 11 99 85 00 00 01 00 01 00 03 00 02 04 74 78 74 32 01 74 07 6e 65 74 2d 64 6e 73 03 6f 72 67 00 00 10 00 01 c0 0c 00 10 00 01 00 00 00 3c 00 3d 1a 4e 65 74 2d 44 4e 53 3b 20 63 6f 6d 70 6c 69 63 61 74 65 64 20 24 74 75 66 66 21 73 6f 72 74 20 6f 66 20 22 20 74 65 78 74 3b 20 61 6e 64 20 62 69 6e 61 72 79 20 00 20 64 61 74 61 c0 13 00 02 00 01 00 00 0e 10 00 06 03 6e 73 31 c0 13 c0 13 00 02 00 01 00 00 0e 10 00 0d 02 6e 73 04 72 69 70 65 03 6e 65 74 00 c0 13 00 02 00 01 00 00 0e 10 00 0c 02 6e 73 06 68 61 63 74 72 6e c0 93 c0 79 00 01 00 01 00 00 0e 10 00 04 c1 00 04 31 c0 79 00 1c 00 01 00 00 0e 10 00 10 20 01 06 10 02 40 00 03 00 00 12 34 be 21 e3 1e '; $UUencodedPacket =~ s/\s*//g; my $packetdata = pack('H*',$UUencodedPacket); my $packet = Net::DNS::Packet->new(\$packetdata); my $TXTrr=($packet->answer)[0]; is(($TXTrr->char_str_list())[0],'Net-DNS; complicated $tuff',"First Char string in TXT RR read from wireformat"); # Compare the second char_str this contains a NULL byte (space NULL # space=200020 in hex) is(unpack('H*',($TXTrr->char_str_list())[1]),"736f7274206f66202220746578743b20616e642062696e61727920002064617461", "Second Char string in TXT RR read from wireformat"); my $TXTrr2=Net::DNS::RR->new('txt2.t.net-dns.org. 60 IN TXT "Test1 \" \; more stuff" "Test2"'); is(($TXTrr2->char_str_list())[0],'Test1 " ; more stuff', "First arg string in TXT RR read from zonefileformat"); is(($TXTrr2->char_str_list())[1],'Test2',"Second Char string in TXT RR read from zonefileformat"); my $TXTrr3 = Net::DNS::RR->new("baz.example.com 3600 HS TXT '\"' 'Char Str2'"); is( ($TXTrr3->char_str_list())[0],'"',"Escaped \" between the single quotes"); ok(Net::DNS::Resolver::Base::_ip_is_ipv4("10.0.0.9"),"_ip_is_ipv4, test 1"); ok(Net::DNS::Resolver::Base::_ip_is_ipv4("1"),"_ip_is_ipv4, test 2"); # remember 1.1 expands to 1.0.0.1 and is legal. ok( Net::DNS::Resolver::Base::_ip_is_ipv4("1.1"),"_ip_is_ipv4, test 3"); ok( ! Net::DNS::Resolver::Base::_ip_is_ipv4("256.1.0.9"),"_ip_is_ipv4, test 4"); ok( ! Net::DNS::Resolver::Base::_ip_is_ipv4("10.11.12.13.14"),"_ip_is_ipv4, test 5"); ok(Net::DNS::Resolver::Base::_ip_is_ipv6("::1"),"_ip_is_ipv6, test 1"); ok(Net::DNS::Resolver::Base::_ip_is_ipv6("1::1"),"_ip_is_ipv6, test 2"); ok(Net::DNS::Resolver::Base::_ip_is_ipv6("1::1:1"),"_ip_is_ipv6, test 3"); ok(! Net::DNS::Resolver::Base::_ip_is_ipv6("1::1:1::1"),"_ip_is_ipv6, test 4"); ok(Net::DNS::Resolver::Base::_ip_is_ipv6("1:2:3:4:4:6:7:8"),"_ip_is_ipv6, test 5"); ok(! Net::DNS::Resolver::Base::_ip_is_ipv6("1:2:3:4:4:6:7:8:9"),"_ip_is_ipv6, test 6"); ok( Net::DNS::Resolver::Base::_ip_is_ipv6("0001:0002:0003:0004:0004:0006:0007:0008"),"_ip_is_ipv6, test 7"); ok( Net::DNS::Resolver::Base::_ip_is_ipv6("abcd:ef01:2345:6789::"),"_ip_is_ipv6, test 8"); ok(! Net::DNS::Resolver::Base::_ip_is_ipv6("abcd:efgh:2345:6789::"),"_ip_is_ipv6, test 9"); ok( Net::DNS::Resolver::Base::_ip_is_ipv6("0001:0002:0003:0004:0004:0006:0007:10.0.0.1"),"_ip_is_ipv6, test 10");