|
Packit |
e6c8bb |
# $Id: 06-packet-unique-push.t 1561 2017-04-19 13:08:13Z willem $
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
use strict;
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
BEGIN {
|
|
Packit |
e6c8bb |
use Test::More tests => 45;
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
use_ok('Net::DNS');
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
# Matching of RR name is not case sensitive
|
|
Packit |
e6c8bb |
my $domain = 'example.com';
|
|
Packit |
e6c8bb |
my $method = 'unique_push';
|
|
Packit |
e6c8bb |
my $packet = Net::DNS::Packet->new($domain);
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my $rr_1 = Net::DNS::RR->new('bla.foo 100 IN TXT "text" ;lower case');
|
|
Packit |
e6c8bb |
my $rr_2 = Net::DNS::RR->new('bla.Foo 100 IN Txt "text" ;mixed case');
|
|
Packit |
e6c8bb |
my $rr_3 = Net::DNS::RR->new('bla.foo 100 IN TXT "mixed CASE"');
|
|
Packit |
e6c8bb |
my $rr_4 = Net::DNS::RR->new('bla.foo 100 IN TXT "MIXED case"');
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
$packet->unique_push( "answer", $rr_1 );
|
|
Packit |
e6c8bb |
$packet->unique_push( "answer", $rr_2 );
|
|
Packit |
e6c8bb |
is( $packet->header->ancount, 1, "unique_push case sensitivity test 1" );
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
$packet->unique_push( "answer", $rr_3 );
|
|
Packit |
e6c8bb |
$packet->unique_push( "answer", $rr_4 );
|
|
Packit |
e6c8bb |
is( $packet->header->ancount, 3, "unique_push case sensitivity test 2" );
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my %sections = (
|
|
Packit |
e6c8bb |
answer => 'ancount',
|
|
Packit |
e6c8bb |
authority => 'nscount',
|
|
Packit |
e6c8bb |
additional => 'arcount',
|
|
Packit |
e6c8bb |
);
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my @tests = (
|
|
Packit |
e6c8bb |
[ 1,
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
],
|
|
Packit |
e6c8bb |
[ 2,
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('bar.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
],
|
|
Packit |
e6c8bb |
[ 1,
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 90 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
],
|
|
Packit |
e6c8bb |
[ 3,
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.2'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.3'),
|
|
Packit |
e6c8bb |
],
|
|
Packit |
e6c8bb |
[ 3,
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.2'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.3'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
],
|
|
Packit |
e6c8bb |
[ 3,
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.2'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.1'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 IN A 192.0.2.4'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com 60 HS A 192.0.2.4'),
|
|
Packit |
e6c8bb |
],
|
|
Packit |
e6c8bb |
[ 3,
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com IN A'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com ANY A'),
|
|
Packit |
e6c8bb |
Net::DNS::RR->new('foo.example.com NONE A'),
|
|
Packit |
e6c8bb |
],
|
|
Packit |
e6c8bb |
);
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
foreach my $test (@tests) {
|
|
Packit |
e6c8bb |
my ( $expect, @rrs ) = @$test;
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
while ( my ( $section, $count_meth ) = each %sections ) {
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my $packet = new Net::DNS::Update($domain);
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
$packet->$method( $section => @rrs );
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my $count = $packet->header->$count_meth();
|
|
Packit |
e6c8bb |
is( $count, $expect, "$method $section => RR, RR, ..." );
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
#
|
|
Packit |
e6c8bb |
# Now do it again, pushing each RR individually.
|
|
Packit |
e6c8bb |
#
|
|
Packit |
e6c8bb |
while ( my ( $section, $count_meth ) = each %sections ) {
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my $packet = new Net::DNS::Update($domain);
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
foreach my $rr (@rrs) {
|
|
Packit |
e6c8bb |
$packet->$method( $section => $rr );
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
|
|
Packit |
e6c8bb |
my $count = $packet->header->$count_meth();
|
|
Packit |
e6c8bb |
is( $count, $expect, "$method $section => RR" );
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
}
|
|
Packit |
e6c8bb |
|