NAME

Zonemaster::Engine::Test::Syntax - Module implementing tests focused on validating the syntax of host names and other data

SYNOPSIS

my @results = Zonemaster::Engine::Test::Syntax->all( $zone );

METHODS

all()
my @logentry_array = all( $zone );

Runs the default set of tests for that module, i.e. between three and eight tests depending on the tested zone. If Syntax01 passes, the remaining tests are run.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

metadata()
my $hash_ref = metadata();

Returns a reference to a hash, the keys of which are the names of all Test Cases in the module, and the corresponding values are references to an array containing all the message tags that the Test Case can use in log entries.

tag_descriptions()
my $hash_ref = tag_descriptions();

Used by the built-in translation system.

Returns a reference to a hash, the keys of which are the message tags and the corresponding values are strings (message IDs).

version()
my $version_string = version();

Returns a string containing the version of the current module.

INTERNAL METHODS

_emit_log()
my $log_entry = _emit_log( $message_tag_string, $hash_ref );

Adds a message to the logger for this module. See "add($tag, $argref, $module, $testcase)" in Zonemaster::Engine::Logger::Entry for more details.

Takes a string (message tag) and a reference to a hash (arguments).

Returns a Zonemaster::Engine::Logger::Entry object.

_ip_disabled_message()
my $bool = _ip_disabled_message( $logentry_array_ref, $ns, @query_type_array );

Checks if the IP version of a given name server is allowed to be queried. If not, it adds a logging message and returns true. Else, it returns false.

Takes a reference to an array of Zonemaster::Engine::Logger::Entry objects, a Zonemaster::Engine::Nameserver object and an array of strings (query type).

Returns a boolean.

my $bool = _name_has_only_legal_characters( $name );

Checks if a given name contains only allowed characters.

Takes a Zonemaster::Engine::DNSName object.

Returns a boolean.

_label_starts_with_hyphen()
my $bool = _label_starts_with_hyphen( $name );

Checks if a given name starts with an hyphen ('-').

Takes a Zonemaster::Engine::DNSName object.

Returns a boolean.

_label_ends_with_hyphen()
my $bool = _label_ends_with_hyphen( $name );

Checks if a given name ends with an hyphen ('-').

Takes a Zonemaster::Engine::DNSName object.

Returns a boolean.

_label_not_ace_has_double_hyphen_in_position_3_and_4()
my $bool = _label_not_ace_has_double_hyphen_in_position_3_and_4( $name );

Checks if a given name does not contain a double hyphen ('--'), with the exception of 'xn--'.

Takes a Zonemaster::Engine::DNSName object.

Returns a boolean.

_check_name_syntax()
my @logentry_array = _check_name_syntax( $label_prefix_string, $name );

Checks the syntax of a given name. Makes use of "_name_has_only_legal_characters()" and "_label_not_ace_has_double_hyphen_in_position_3_and_4()". Used as an helper function for Test Cases Syntax04, Syntax07 and Syntax08.

Takes a string (label prefix) and either a string (name) or a Zonemaster::Engine::DNSName object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

TESTS

syntax01()
my @logentry_array = syntax01( $zone );

Runs the Syntax01 Test Case.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

syntax02()
my @logentry_array = syntax02( $zone );

Runs the Syntax02 Test Case.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

syntax03()
my @logentry_array = syntax03( $zone );

Runs the Syntax03 Test Case.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

syntax04()
my @logentry_array = syntax04( $zone );

Runs the Syntax04 Test Case.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

syntax05()
my @logentry_array = syntax05( $zone );

Runs the Syntax05 Test Case.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

syntax06()
my @logentry_array = syntax06( $zone );

Runs the Syntax06 Test Case.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

syntax07()
my @logentry_array = syntax07( $zone );

Runs the Syntax07 Test Case.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.

syntax08()
my @logentry_array = syntax08( $zone );

Runs the Syntax08 Test Case.

Takes a Zonemaster::Engine::Zone object.

Returns a list of Zonemaster::Engine::Logger::Entry objects.