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 95 96 97 98 99 100
|
use Test::More;
use 5.12.4;
use Zonemaster::Engine;
use Zonemaster::Engine::Nameserver;
use Zonemaster::Engine::Util;
###
my $datafile = 't/undelegated.data';
if ( not $ENV{ZONEMASTER_RECORD} ) {
die "Stored data file missing" if not -r $datafile;
Zonemaster::Engine::Nameserver->restore( $datafile );
Zonemaster::Engine->profile->set( q{no_network}, 1 );
}
###
my $plain_p = Zonemaster::Engine->recurse( 'www.lysator.liu.se', 'AAAA' );
isa_ok( $plain_p, 'Zonemaster::Engine::Packet' );
ok( $plain_p, 'Got answer' );
Zonemaster::Engine->add_fake_delegation(
'lysator.liu.se' => {
'ns-slave.lysator.liu.se' => [ '130.236.254.4', '130.236.255.2' ],
'ns-master.lysator.liu.se' => [ '130.236.254.2', '2001:6b0:17:f0a0::2' ],
'ns-slave-1.ifm.liu.se' => [ '130.236.160.2', '2001:6b0:17:f180::1001' ],
'ns-slave-2.ifm.liu.se' => [ '130.236.160.3', '2001:6b0:17:f180::1002' ]
},
fill_in_empty_oob_glue => 0,
);
my $fake_happened = 0;
Zonemaster::Engine->logger->callback(
sub {
$fake_happened = 1 if $_[0]->tag eq 'FAKE_DELEGATION_RETURNED';
}
);
my $fake_p = Zonemaster::Engine->recurse( 'www.lysator.liu.se', 'AAAA' );
ok( $fake_happened, 'Fake delegation logged' );
ok( $fake_p, 'Got answer' );
if ( $fake_p ) {
is( $fake_p->rcode, 'NOERROR', 'expected RCODE' );
}
Zonemaster::Engine->logger->callback( undef );
Zonemaster::Engine->add_fake_ds( 'lysator.liu.se' => [ { keytag => 4711, algorithm => 17, type => 42, digest => 'FACEB00C' } ],
);
my $lys = Zonemaster::Engine->zone( 'lysator.liu.se' );
my $ds_p = $lys->parent->query_one( 'lysator.liu.se', 'DS' );
isa_ok( $ds_p, 'Zonemaster::Engine::Packet' );
my ( $ds ) = $ds_p->answer;
isa_ok( $ds, 'Zonemaster::LDNS::RR::DS' );
is( $ds->hexdigest, 'faceb00c', 'Correct digest' );
Zonemaster::Engine->logger->clear_history;
Zonemaster::Engine->add_fake_delegation(
'nic.se' => {
'ns.nic.se' => [ '212.247.7.228', '2a00:801:f0:53::53' ],
'i.ns.se' => [ '194.146.106.22', '2001:67c:1010:5::53' ],
'ns3.nic.se' => [ '212.247.8.152', '2a00:801:f0:211::152' ]
},
fill_in_empty_oob_glue => 0,
);
ok( !!( grep { $_->tag eq 'FAKE_DELEGATION_TO_SELF' } @{ Zonemaster::Engine->logger->entries } ),
'Refused adding circular fake delegation.' );
Zonemaster::Engine->logger->clear_history;
Zonemaster::Engine->add_fake_delegation(
'lysator.liu.se' => {
'frfr.sesefrfr' => [ ],
'i.ns.se' => [ '194.146.106.22', '2001:67c:1010:5::53' ],
'ns3.nic.se' => [ '212.247.8.152', '2a00:801:f0:211::152' ]
},
fill_in_empty_oob_glue => 0,
);
ok( !!( grep { $_->tag eq 'FAKE_DELEGATION_NO_IP' } @{ Zonemaster::Engine->logger->entries } ),
'Refused fake delegation without IP address for bad ns.' );
Zonemaster::Engine->logger->clear_history;
Zonemaster::Engine->add_fake_delegation(
'nic.se' => {
'ns.nic.se' => [ '212.247.7.228', '2a00:801:f0:53::53' ],
'i.ns.se' => [ '194.146.106.22', '2001:67c:1010:5::53' ],
'ns3.nic.se' => [ '212.247.8.152', '2a00:801:f0:211::152' ],
'ns4.nic.se' => [ ]
},
fill_in_empty_oob_glue => 0,
);
ok( !!( grep { $_->tag eq 'FAKE_DELEGATION_IN_ZONE_NO_IP' } @{ Zonemaster::Engine->logger->entries } ),
'Refused in-zone fake delegation without IP address.' );
if ( $ENV{ZONEMASTER_RECORD} ) {
Zonemaster::Engine::Nameserver->save( $datafile );
}
done_testing;
|