Skip to content

Commit

Permalink
Update Basic01 - initial commit
Browse files Browse the repository at this point in the history
Update to latest specification (zonemaster/zonemaster#1082)
  • Loading branch information
tgreenx committed Apr 5, 2023
1 parent 3bfc375 commit 706b010
Show file tree
Hide file tree
Showing 4 changed files with 138 additions and 25 deletions.
134 changes: 117 additions & 17 deletions lib/Zonemaster/Engine/Test/Basic.pm
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,15 @@ sub metadata {
],
basic01 => [
qw(
NO_PARENT
HAS_PARENT
B01_CHILD_IS_ALIAS
B01_CHILD_FOUND
B01_CHILD_NOT_EXIST
B01_INCONSISTENT_ALIAS
B01_INCONSISTENT_DELEGATION
B01_NO_CHILD
B01_PARENT_FOUND
B01_PARENT_UNDETERMINED
B01_UNEXPECTED_NS_RESPONSE
TEST_CASE_END
TEST_CASE_START
)
Expand Down Expand Up @@ -156,6 +163,45 @@ Readonly my %TAG_DESCRIPTIONS => (
__x # BASIC:A_QUERY_NO_RESPONSES
'Nameservers did not respond to A query.';
},
B01_CHILD_IS_ALIAS => sub {
__x # BASIC:B01_CHILD_IS_ALIAS
'"{domain_child}" is not a zone. It is an alias for "{domain_target}". Run a test for "{domain_target}" instead. '
. 'Returned from name servers "{ns_ip_list}.', @_;
},
B01_CHILD_FOUND => sub {
__x # BASIC:B01_CHILD_FOUND
'The zone "{domain}" is found.', @_;
},
B01_CHILD_NOT_EXIST => sub {
__x # BASIC:B01_CHILD_NOT_EXIST
'"{domain}" does not exist as it is not delegated.', @_;
},
B01_INCONSISTENT_ALIAS => sub {
__x # BASIC:B01_INCONSISTENT_ALIAS
'The alias for "{domain}" is inconsistent between name servers.', @_;
},
B01_INCONSISTENT_DELEGATION => sub {
__x # BASIC:B01_INCONSISTENT_DELEGATION
'The name servers for parent zone "{domain_parent}" give inconsistent delegation of "{domain_child}". '
. 'Returned from name servers "{ns_ip_list}".', @_;
},
B01_NO_CHILD => sub {
__x # BASIC:B01_NO_CHILD
'"{domain_child}" does not exist as a DNS zone. Try to test "{domain_super}" instead.', @_;
},
B01_PARENT_FOUND => sub {
__x # BASIC:B01_PARENT_FOUND
'The parent zone is "{domain}" as returned from name servers "{ns_ip_list}".', @_;
},
B01_PARENT_UNDETERMINED => sub {
__x # BASIC:B01_PARENT_UNDETERMINED
'The parent zone cannot be determined on name servers "{ns_ip_list}".', @_;
},
B01_UNEXPECTED_NS_RESPONSE => sub {
__x # BASIC:B01_UNEXPECTED_NS_RESPONSE
'Name servers for parent domain "{domain_parent}" give an incorrect response on SOA query for "{domain_child}". '
. 'Returned from name servers "{ns_ip_list}".', @_;
},
B02_AUTH_RESPONSE_SOA => sub {
__x # BASIC:B02_AUTH_RESPONSE_SOA
'Authoritative answer on SOA query for "{domain}" is returned by name servers "{ns_list}".', @_;
Expand Down Expand Up @@ -208,10 +254,6 @@ Readonly my %TAG_DESCRIPTIONS => (
__x # BASIC:HAS_NAMESERVER_NO_WWW_A_TEST
'Functional nameserver found. "A" query for www.{zname} test skipped.', @_;
},
HAS_PARENT => sub {
__x # BASIC:HAS_PARENT
'Parent domain \'{pname}\' was found for the tested domain.', @_;
},
IPV4_DISABLED => sub {
__x # BASIC:IPV4_DISABLED
'IPv4 is disabled, not sending "{rrtype}" query to {ns}.', @_;
Expand All @@ -232,10 +274,6 @@ Readonly my %TAG_DESCRIPTIONS => (
__x # BASIC:NO_A_RECORDS
'Nameserver {ns} did not return "A" record(s) for {domain}.', @_;
},
NO_PARENT => sub {
__x # BASIC:NO_PARENT
'No parent domain could be found for the domain under test.', @_;
},
TEST_CASE_END => sub {
__x # BASIC:TEST_CASE_END
'TEST_CASE_END {testcase}.', @_;
Expand Down Expand Up @@ -359,23 +397,85 @@ sub basic00 {
sub basic01 {
my ( $class, $zone ) = @_;
push my @results, info( TEST_CASE_START => { testcase => (split /::/, (caller(0))[3])[-1] } );

if ( $zone->name eq '.' ) {
push @results,
info(
B01_CHILD_FOUND => {
domain => $zone->name
}
);
return ( @results, info( TEST_CASE_END => { testcase => (split /::/, (caller(0))[3])[-1] } ) );
}

my $parent = $zone->parent;

if ( not $parent ) {
push @results,
info(
NO_PARENT => {
zone => $zone->name->string,
}
B01_PARENT_UNDETERMINED => {
ns_ip_list => join( q{;}, Zonemaster::Engine::Nameserver->all_known_nameservers() )
}
);
}
else {
push @results,
info(
HAS_PARENT => {
zone => $zone->name->string,
pname => $parent->name->string,
}
B01_PARENT_FOUND => {
domain => $parent->name,
ns_ip_list => join( q{;}, @{$parent->glue} )
}
);
}

if ( scalar @{$zone->ns} ) {
push @results,
info(
B01_CHILD_FOUND => {
domain => $zone->name
}
);
}
else {
if ( Zonemaster::Engine::Recursor->has_fake_addresses( $zone->name->string ) ){
push @results,
info(
B01_CHILD_NOT_EXIST => {
domain => $zone->name
}
);
}
else {
push @results,
info(
B01_NO_CHILD => {
domain_child => $zone->name,
domain_super => $zone->name->next_higher()
}
);

}
}

if ( scalar @{$zone->dname} ) {
foreach my $dname ( @{$zone->dname} ) {
push @results,
info(
B01_CHILD_IS_ALIAS => {
domain_child => $zone->name,
domain_target => $dname->name,
ns_ip_list => join( q{;}, @{$parent->ns} )
}
);
}
}

if ( scalar @{$zone->dname} > 1 ) {
push @results,
info(
B01_INCONSISTENT_ALIAS => {
domain => $zone->name
}
);
}

Expand Down
11 changes: 9 additions & 2 deletions share/profile.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@
},
"BASIC" : {
"A_QUERY_NO_RESPONSES" : "INFO",
"B01_CHILD_IS_ALIAS" : "NOTICE",
"B01_CHILD_FOUND" : "INFO",
"B01_CHILD_NOT_EXIST" : "INFO",
"B01_INCONSISTENT_ALIAS" : "ERROR",
"B01_INCONSISTENT_DELEGATION" : "ERROR",
"B01_NO_CHILD" : "ERROR",
"B01_PARENT_FOUND" : "INFO",
"B01_PARENT_UNDETERMINED" : "WARNING",
"B01_UNEXPECTED_NS_RESPONSE" : "WARNING",
"B02_AUTH_RESPONSE_SOA" : "INFO",
"B02_NO_DELEGATION" : "CRITICAL",
"B02_NO_WORKING_NS" : "CRITICAL",
Expand All @@ -52,12 +61,10 @@
"DOMAIN_NAME_ZERO_LENGTH_LABEL" : "CRITICAL",
"HAS_A_RECORDS" : "ERROR",
"HAS_NAMESERVER_NO_WWW_A_TEST" : "INFO",
"HAS_PARENT" : "INFO",
"IPV4_DISABLED" : "DEBUG",
"IPV4_ENABLED" : "DEBUG",
"IPV6_DISABLED" : "DEBUG",
"IPV6_ENABLED" : "DEBUG",
"NO_PARENT" : "CRITICAL",
"TEST_CASE_END" : "DEBUG",
"TEST_CASE_START" : "DEBUG"
},
Expand Down
14 changes: 10 additions & 4 deletions t/profiles/Test-all-levels.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@
},
"BASIC" : {
"A_QUERY_NO_RESPONSES" : "INFO",
"B01_CHILD_IS_ALIAS" : "NOTICE",
"B01_CHILD_FOUND" : "INFO",
"B01_CHILD_NOT_EXIST" : "INFO",
"B01_INCONSISTENT_ALIAS" : "ERROR",
"B01_INCONSISTENT_DELEGATION" : "ERROR",
"B01_NO_CHILD" : "ERROR",
"B01_PARENT_FOUND" : "INFO",
"B01_PARENT_UNDETERMINED" : "WARNING",
"B01_UNEXPECTED_NS_RESPONSE" : "WARNING",
"B02_AUTH_RESPONSE_SOA" : "INFO",
"B02_NO_DELEGATION" : "CRITICAL",
"B02_NO_WORKING_NS" : "CRITICAL",
Expand All @@ -24,13 +33,10 @@
"DOMAIN_NAME_TOO_LONG" : "CRITICAL",
"HAS_A_RECORDS" : "ERROR",
"HAS_NAMESERVER_NO_WWW_A_TEST" : "INFO",
"HAS_PARENT" : "INFO",
"IPV4_DISABLED" : "INFO",
"IPV4_ENABLED" : "INFO",
"IPV6_DISABLED" : "INFO",
"IPV6_ENABLED" : "INFO",
"NO_GLUE_PREVENTS_NAMESERVER_TESTS" : "CRITICAL",
"NO_PARENT" : "CRITICAL"
"IPV6_ENABLED" : "INFO"
},
"CONNECTIVITY" : {
"ASN_INFOS_ANNOUNCE_BY" : "DEBUG",
Expand Down
4 changes: 2 additions & 2 deletions t/translator.t
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ $profile_tmp = Zonemaster::Engine::Profile->from_json( $json );
Zonemaster::Engine::Profile->effective->merge( $profile_tmp );

my $trans = new_ok( 'Zonemaster::Engine::Translator' => [ { locale => 'C' } ] );
ok( exists $trans->data->{BASIC}{HAS_PARENT}, 'expected key from file exists' );
ok( exists $trans->data->{BASIC}{B01_PARENT_FOUND}, 'expected key from file exists' );
ok( exists $trans->data->{DNSSEC}{ALGORITHM_OK}, 'expected key from module exists' );

my $entry = Zonemaster::Engine::Logger::Entry->new(
{
module => 'BASIC',
tag => 'HAS_PARENT',
tag => 'B01_PARENT_FOUND',
args => { pname => 'nothing.nowhere' }
}
);
Expand Down

0 comments on commit 706b010

Please sign in to comment.