dnsphpadmin/util/unit.php
2020-06-02 11:54:43 +02:00

78 lines
3.5 KiB
PHP

<?php
require (dirname(__FILE__) . "/../psf/psf.php");
require (dirname(__FILE__) . "/../psf/includes/unit_test/ut.php");
define('G_DNSTOOL_ENTRY_POINT', 'unit.php');
require_once (dirname(__FILE__) . "/../config.default.php");
require_once (dirname(__FILE__) . "/../includes/record_list.php");
require_once (dirname(__FILE__) . "/../includes/validator.php");
require_once (dirname(__FILE__) . "/../includes/zones.php");
function CheckZone($data)
{
foreach ($data as $line)
{
if (count($line) != 5)
{
echo('Not 4 columns in line of data:\n');
var_dump($line);
die(10);
}
if (!is_numeric($line[1]))
{
echo('TTL is not a number');
var_dump($line);
die(10);
}
if ($line[2] != 'IN')
{
echo('Unknown scope');
var_dump($line);
die(10);
}
}
return true;
}
$ut = new UnitTest();
$ut->Evaluate('Check for non-existence of PTR zones (none) in empty list', Zones::HasPTRZones() === false);
$g_domains['168.192.in-addr.arpa'] = [ ];
$g_domains['192.in-addr.arpa'] = [ ];
$ut->Evaluate('Check for non-existence of PTR zones (none) in empty list', Zones::HasPTRZones() === true);
$ut->Evaluate('Get zone for FQDN', Zones::GetZoneForFQDN('0.0.168.192.in-addr.arpa') == '168.192.in-addr.arpa');
$dz1 = raw_zone_to_array(file_get_contents(dirname(__FILE__) . '/testdata/valid.zone1'));
$dz2 = raw_zone_to_array(file_get_contents(dirname(__FILE__) . '/testdata/invalid.zone'));
$dz3 = raw_zone_to_array(file_get_contents(dirname(__FILE__) . '/testdata/valid.zone2'));
$ut->Evaluate('Check validness of valid zone testdata/valid.zone1', CheckIfZoneIsComplete($dz1) === true);
$ut->Evaluate('Check validness of invalid zone testdata/invalid.zone', CheckIfZoneIsComplete($dz2) === false);
$ut->Evaluate('Check validness of valid zone testdata/valid.zone2', CheckIfZoneIsComplete($dz3) === true);
$ut->Evaluate('Check count of records in testdata/valid.zone1', count($dz1) === 389);
$ut->Evaluate('Parser test - zone 1', CheckZone($dz1));
$ut->Evaluate('Parser test - zone 2', CheckZone($dz3));
$ut->Evaluate('Validator - valid #1', IsValidHostName('insw.cz') === true);
$ut->Evaluate('Validator - valid #2', IsValidHostName('te-st1.petr.bena.rocks') === true);
$ut->Evaluate('Validator - valid #3', IsValidHostName('*.petr.bena.rocks') === true);
$ut->Evaluate('Validator - valid #4', IsValidHostName('_spf.petr.bena.rocks') === true);
$ut->Evaluate('Validator - valid #5', IsValidHostName('wqdcsrv331') === true);
$ut->Evaluate('Validator - valid #6', IsValidHostName('2.168.192.in-addr.arpa') === true);
$ut->Evaluate('Validator - invalid #1', IsValidHostName('-invalid') === false);
$ut->Evaluate('Validator - invalid #2', IsValidHostName('---') === false);
$ut->Evaluate('Validator - invalid #3', IsValidHostName('google domain') === false);
$ut->Evaluate('Validator - invalid #4', IsValidHostName('google.com;rm -rf /') === false);
$ut->Evaluate('Validator - invalid #5', IsValidHostName("google.com\ntest") === false);
$ut->Evaluate('Validator - invalid #6', IsValidHostName("google.com\ttest") === false);
$ut->Evaluate('Validator - invalid #7', IsValidHostName("'google.com") === false);
$ut->Evaluate('Validator - invalid #8', IsValidHostName("\"google.com") === false);
$ut->Evaluate('Validator - invalid #9', IsValidHostName('$test.org') === false);
$ut->Evaluate('Validator - invalid #10', IsValidHostName('/x.test.org') === false);
echo ("\n");
$ut->PrintResults();
$ut->ExitTest();