more DomainZones unit-tests

Signed-off-by: Michael Kaufmann (d00p) <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann (d00p)
2018-03-23 13:35:50 +01:00
parent 48d7110779
commit c149cbacf7
2 changed files with 413 additions and 7 deletions

View File

@@ -45,7 +45,7 @@ class DomainZones extends ApiCommand implements ResourceEntity
if ($result['parentdomainid'] != '0') {
throw new Exception("DNS zones can only be generated for the main domain, not for subdomains", 406);
}
if ($result['subisbinddomain'] != '1') {
standard_error('dns_domain_nodns', '', true);
}
@@ -206,10 +206,10 @@ class DomainZones extends ApiCommand implements ResourceEntity
$new_entry = array(
'record' => $record,
'type' => $type,
'prio' => $prio,
'prio' => (int) $prio,
'content' => $content,
'ttl' => $ttl,
'domain_id' => $id
'ttl' => (int) $ttl,
'domain_id' => (int) $id
);
ksort($new_entry);
@@ -297,7 +297,7 @@ class DomainZones extends ApiCommand implements ResourceEntity
if ($result['parentdomainid'] != '0') {
throw new Exception("DNS zones can only be generated for the main domain, not for subdomains", 406);
}
if ($result['subisbinddomain'] != '1') {
standard_error('dns_domain_nodns', '', true);
}

View File

@@ -32,12 +32,13 @@ class DomainZonesTest extends TestCase
$this->assertEquals('$ORIGIN test2.local.', $result[1]);
}
/**
* @depends testCustomerDomainZonesGet
*/
public function testCustomerDomainZonesGetNoSubdomains()
{
global $admin_userdata;
Settings::Set('system.dnsenabled', 1, true);
// get customer
$json_result = Customers::getLocal($admin_userdata, array(
'loginname' => 'test1'
@@ -65,4 +66,409 @@ class DomainZonesTest extends TestCase
$this->expectExceptionCode(303);
DomainZones::getLocal($admin_userdata)->update();
}
/**
* @depends testCustomerDomainZonesGet
*/
public function testCustomerDomainZonesAddA()
{
global $admin_userdata;
// get customer
$json_result = Customers::getLocal($admin_userdata, array(
'loginname' => 'test1'
))->get();
$customer_userdata = json_decode($json_result, true)['data'];
$data = [
'domainname' => 'test2.local',
'record' => 'www2',
'type' => 'A',
'content' => '127.0.0.1'
];
$json_result = DomainZones::getLocal($customer_userdata, $data)->add();
$result = json_decode($json_result, true)['data'];
$this->assertTrue(count($result) > 1);
$found = false;
foreach ($result as $entry) {
if (substr($entry, 0, 4) == 'www2') {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('www2 18000 IN A 127.0.0.1', $entry);
}
/**
* @depends testCustomerDomainZonesAddA
*/
public function testCustomerDomainZonesAddAInvalid()
{
global $admin_userdata;
// get customer
$json_result = Customers::getLocal($admin_userdata, array(
'loginname' => 'test1'
))->get();
$customer_userdata = json_decode($json_result, true)['data'];
$data = [
'domainname' => 'test2.local',
'record' => 'www3',
'type' => 'A',
'content' => 'a.b.c.d',
'ttl' => -1
];
$this->expectExceptionMessage("No valid IP address for A-record given");
DomainZones::getLocal($customer_userdata, $data)->add();
}
/**
* @depends testCustomerDomainZonesAddA
*/
public function testCustomerDomainZonesAddADuplicate()
{
global $admin_userdata;
// get customer
$json_result = Customers::getLocal($admin_userdata, array(
'loginname' => 'test1'
))->get();
$customer_userdata = json_decode($json_result, true)['data'];
$data = [
'domainname' => 'test2.local',
'record' => 'www2',
'type' => 'A',
'content' => '127.0.0.1',
'ttl' => -1
];
$this->expectExceptionMessage("Record already exists");
DomainZones::getLocal($customer_userdata, $data)->add();
}
/**
* @depends testCustomerDomainZonesGet
*/
public function testCustomerDomainZonesAddAAAA()
{
global $admin_userdata;
// get customer
$json_result = Customers::getLocal($admin_userdata, array(
'loginname' => 'test1'
))->get();
$customer_userdata = json_decode($json_result, true)['data'];
$data = [
'domainname' => 'test2.local',
'record' => 'www3',
'type' => 'AAAA',
'content' => '::1'
];
$json_result = DomainZones::getLocal($customer_userdata, $data)->add();
$result = json_decode($json_result, true)['data'];
$this->assertTrue(count($result) > 1);
$found = false;
foreach ($result as $entry) {
if (substr($entry, 0, 4) == 'www3') {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('www3 18000 IN AAAA ::1', $entry);
}
/**
* @depends testCustomerDomainZonesAddA
*/
public function testCustomerDomainZonesAddAAAAInvalid()
{
global $admin_userdata;
// get customer
$json_result = Customers::getLocal($admin_userdata, array(
'loginname' => 'test1'
))->get();
$customer_userdata = json_decode($json_result, true)['data'];
$data = [
'domainname' => 'test2.local',
'record' => 'www4',
'type' => 'AAAA',
'content' => 'z:z123.123',
'ttl' => -1
];
$this->expectExceptionMessage("No valid IP address for AAAA-record given");
DomainZones::getLocal($customer_userdata, $data)->add();
}
public function testAdminDomainZonesAddMX()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '',
'type' => 'MX',
'prio' => 10,
'content' => 'mail.example.com.'
];
$json_result = DomainZones::getLocal($admin_userdata, $data)->add();
$result = json_decode($json_result, true)['data'];
$this->assertTrue(count($result) > 1);
$found = false;
foreach ($result as $entry) {
if (substr($entry, strlen('mail.example.com.') * -1) == 'mail.example.com.') {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN MX 10 mail.example.com.', $entry);
}
/**
* @depends testAdminDomainZonesAddMX
*/
public function testAdminDomainZonesAddMXNoPrio()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '',
'type' => 'MX',
'content' => 'mail.example.com.'
];
$this->expectExceptionMessage("Invalid MX priority given");
DomainZones::getLocal($admin_userdata, $data)->add();
}
/**
* @depends testAdminDomainZonesAddMX
*/
public function testAdminDomainZonesAddMXInvalid()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '',
'type' => 'MX',
'prio' => 20,
'content' => 'localhost'
];
$this->expectExceptionMessage("The MX content value must be a valid domain-name");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCname()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => 'db',
'type' => 'CNAME',
'content' => 'db.example.com.'
];
$json_result = DomainZones::getLocal($admin_userdata, $data)->add();
$result = json_decode($json_result, true)['data'];
$this->assertTrue(count($result) > 1);
$found = false;
foreach ($result as $entry) {
if (substr($entry, strlen('db.example.com.') * -1) == 'db.example.com.') {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('db 18000 IN CNAME db.example.com.', $entry);
}
public function testAdminDomainZonesAddCnameLocal()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => 'db',
'type' => 'CNAME',
'content' => 'db2'
];
$json_result = DomainZones::getLocal($admin_userdata, $data)->add();
$result = json_decode($json_result, true)['data'];
$this->assertTrue(count($result) > 1);
$found = false;
foreach ($result as $entry) {
if (substr($entry, strlen('db2.test2.local.') * -1) == 'db2.test2.local.') {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('db 18000 IN CNAME db2.test2.local.', $entry);
}
/**
* @depends testAdminDomainZonesAddCname
*/
public function testAdminDomainZonesAddCnameInvalid()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '',
'type' => 'CNAME',
'content' => 'localhost.'
];
$this->expectExceptionMessage("Invalid domain-name for CNAME record");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddNS()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '',
'type' => 'NS',
'content' => 'ns.example.com.'
];
$json_result = DomainZones::getLocal($admin_userdata, $data)->add();
$result = json_decode($json_result, true)['data'];
$this->assertTrue(count($result) > 1);
$found = false;
foreach ($result as $entry) {
if (substr($entry, strlen('ns.example.com.') * -1) == 'ns.example.com.') {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN NS ns.example.com.', $entry);
}
public function testAdminDomainZonesAddNsInvalid()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '',
'type' => 'NS',
'content' => 'localhost.'
];
$this->expectExceptionMessage("Invalid domain-name for NS record");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddTXT()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '_test1',
'type' => 'TXT',
'content' => 'aw yeah'
];
$json_result = DomainZones::getLocal($admin_userdata, $data)->add();
$result = json_decode($json_result, true)['data'];
$this->assertTrue(count($result) > 1);
$found = false;
foreach ($result as $entry) {
if (substr($entry, 0, 6) == '_test1') {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('_test1 18000 IN TXT aw yeah', $entry);
}
public function testAdminDomainZonesAddSRV()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '_test2',
'type' => 'SRV',
'prio' => 50,
'content' => '2 1 srv.example.com.'
];
$json_result = DomainZones::getLocal($admin_userdata, $data)->add();
$result = json_decode($json_result, true)['data'];
$this->assertTrue(count($result) > 1);
$found = false;
foreach ($result as $entry) {
if (substr($entry, 0, 6) == '_test2') {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('_test2 18000 IN SRV 50 2 1 srv.example.com.', $entry);
}
public function testAdminDomainZonesAddSrvInvalid()
{
global $admin_userdata;
$data = [
'domainname' => 'test2.local',
'record' => '_test2',
'type' => 'SRV',
'prio' => 50,
'content' => 'srv.example.com.'
];
$this->expectExceptionMessage("Invalid SRV content, must contain of fields weight, port and target, e.g.: 5 5060 sipserver.example.com.");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testCustomerDomainZonesDelete()
{
global $admin_userdata;
// get customer
$json_result = Customers::getLocal($admin_userdata, array(
'loginname' => 'test1'
))->get();
$customer_userdata = json_decode($json_result, true)['data'];
$data = [
'domainname' => 'test2.local',
'entry_id' => 1
];
$json_result = DomainZones::getLocal($customer_userdata, $data)->delete();
$result = json_decode($json_result, true);
$this->assertTrue($result['data']);
$this->assertEquals(200, $result['status']);
}
public function testCustomerDomainZonesDeleteUnmodified()
{
global $admin_userdata;
// get customer
$json_result = Customers::getLocal($admin_userdata, array(
'loginname' => 'test1'
))->get();
$customer_userdata = json_decode($json_result, true)['data'];
$data = [
'domainname' => 'test2.local',
'entry_id' => 1337
];
$json_result = DomainZones::getLocal($customer_userdata, $data)->delete();
$result = json_decode($json_result, true);
$this->assertTrue($result['data']);
$this->assertEquals(304, $result['status']);
}
}