1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
# $Id: 05-rr-unknown.t 639 2007-05-25 12:00:15Z olaf $ -*-perl-*-
#
# RFC 3597 Unknown typecode implemntation test code.
# O.M. Kolkman RIPE NCC.
#
use Test::More tests => 18;
use strict;
BEGIN { use_ok('Net::DNS'); }
is(Net::DNS::typesbyname('TYPE10226'), 10226, 'typesbyname(TYPE10226) returns 10226');
is(Net::DNS::typesbyval(10226), 'TYPE10226','typesbyval(10226) returns TYPE10226');
is(Net::DNS::typesbyval(1), 'A',' typesbyval(1) returns A');
is(Net::DNS::typesbyval(Net::DNS::typesbyname('TYPE001')), 'A', 'typesbyval(typebyname(TYPE001)) returns A');
eval {
Net::DNS::typesbyval(0xffff+1);
};
like($@, '/Net::DNS::typesbyval\(\) argument larger than 65535/', 'Fails on large TYPE code');
is(Net::DNS::classesbyname('CLASS124'), 124, 'classesbyname(CLASS124) returns 124');
is(Net::DNS::classesbyval(125), 'CLASS125','classesbyval(125) returns CLASS125');
is(Net::DNS::classesbyval(1), 'IN', 'classesbyval(1) returns IN');
is(Net::DNS::classesbyval(Net::DNS::classesbyname('CLASS04')), 'HS', 'classesbyval(typebyname(CLASS04)) returns HS');
eval {
Net::DNS::classesbyval(0xffff+1);
};
like($@, '/Net::DNS::classesbyname\(\) argument larger than 65535/', 'Fails on large CLASS code');
{
my $rr = Net::DNS::RR->new('e.example CLASS01 TYPE01 10.0.0.2');
is($rr->type, 'A', 'TYPE01 parsed OK');
is($rr->class,'IN', 'CLASS01 parsed OK');
}
{
my $rr = Net::DNS::RR->new('e.example IN A \# 4 0A0000 01 ');
is($rr->address,'10.0.0.1', 'Unknown RR representation for A parsed OK');
}
eval {
Net::DNS::RR->new('e.example IN A \# 4 0A0000 01 11 ');
};
like($@, '/\\\# 4 0A0000 01 11 is inconsistent\; length does not match content/', 'Fails on inconsistent length and hex presentation');
{
my $rr = Net::DNS::RR->new('e.example IN TYPE4555 \# 4 0A0000 01 ');
is($rr->string, 'e.example. 0 IN TYPE4555 \# 4 0a000001', 'Fully unknown RR parsed correctly');
}
{
my $rr4 = Net::DNS::RR->new('e.example CLASS122 TYPE4555 \# 4 0A0000 01 ');
is($rr4->string, 'e.example. 0 CLASS122 TYPE4555 \# 4 0a000001', 'Fully unknown RR in unknown CLASS parsed correctly');
}
my $UUencodedPacket='
02 79 85 00 00 01
00 01 00 01 00 01 04 54 45 53 54 07 65 78 61 6d
70 6c 65 03 63 6f 6d 00 00 ff 00 01 c0 0c 30 39
00 01 00 00 00 7b 00 0a 11 22 33 44 55 aa bb cc
dd ee c0 11 00 02 00 01 00 00 03 84 00 05 02 6e
73 c0 11 c0 44 00 01 00 01 00 00 03 84 00 04 7f
00 00 01';
$UUencodedPacket =~ s/\s*//g;
my $packetdata = pack('H*',$UUencodedPacket);
my $packet = Net::DNS::Packet->new(\$packetdata);
my $string_representation = ($packet->answer)[0]->string;
$string_representation =~ s/\s+/ /g,
is (
$string_representation,
'TEST.example.com. 123 IN TYPE12345 \# 10 1122334455aabbccddee',
'Packet read from a packet dumped by bind...'
);
|