Merge pull request #706 from makuser/master

Implement CAA DNS records
This commit is contained in:
Michael Kaufmann
2019-07-30 09:53:46 +02:00
committed by GitHub
11 changed files with 491 additions and 29 deletions

View File

@@ -277,6 +277,366 @@ class DomainZonesTest extends TestCase
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAIssue()
{
global $admin_userdata;
$content = '0 issue "letsencrypt.org"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content)) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA 0 issue "letsencrypt.org"', $entry);
}
public function testAdminDomainZonesAddCAAIssueWithParameters()
{
global $admin_userdata;
$content = '0 issue "letsencrypt.org; account=230123"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content) * - 1) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA '.$content, $entry);
}
public function testAdminDomainZonesAddCAAIssueWithTwoParameters()
{
global $admin_userdata;
$content = '0 issue "letsencrypt.org; account=230123 policy=ev"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content) * - 1) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA '.$content, $entry);
}
public function testAdminDomainZonesAddCAAInvalidIssueValue()
{
global $admin_userdata;
$content = '0 issue ""letsencrypt.org"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAInvalidIssueDomain()
{
global $admin_userdata;
$content = '0 issue "no-valid-domain"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAInvalidIssueTld()
{
global $admin_userdata;
$content = '0 issue "no-valid-domai.n"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAIssueWild()
{
global $admin_userdata;
$content = '0 issuewild "letsencrypt.org"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content) * - 1) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA '.$content, $entry);
}
public function testAdminDomainZonesAddCAAIssueWildWithParameters()
{
global $admin_userdata;
$content = '0 issuewild "letsencrypt.org; account=230123"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content) * - 1) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA '.$content, $entry);
}
public function testAdminDomainZonesAddCAAIssueWildWithTwoParameters()
{
global $admin_userdata;
$content = '0 issuewild "letsencrypt.org; account=230123 policy=ev"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content) * - 1) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA '.$content, $entry);
}
public function testAdminDomainZonesAddCAAInvalidIssueWildValue()
{
global $admin_userdata;
$content = '0 issuewild ""letsencrypt.org"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAInvalidIssueWildDomain()
{
global $admin_userdata;
$content = '0 issuewild "no-valid-domain"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAInvalidIssueWildTld()
{
global $admin_userdata;
$content = '0 issuewild "no-valid-domai.n"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAIodefMail()
{
global $admin_userdata;
$content = '0 iodef "mailto:security@example.com"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content) * - 1) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA '.$content, $entry);
}
public function testAdminDomainZonesAddCAAIodefMailInvalid()
{
global $admin_userdata;
$content = '0 iodef "mailtosecurity@example.com"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAIodefHttp()
{
global $admin_userdata;
$content = '0 iodef "http://iodef.example.com/"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content) * - 1) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA '.$content, $entry);
}
public function testAdminDomainZonesAddCAAIodefHttpInvalid()
{
global $admin_userdata;
$content = '0 iodef "http:/iodef.example.com/"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCAAIodefHttps()
{
global $admin_userdata;
$content = '0 iodef "https://iodef.example.com/"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$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($content) * - 1) == $content) {
$found = true;
break;
}
}
$this->assertTrue($found);
$this->assertEquals('@ 18000 IN CAA '.$content, $entry);
}
public function testAdminDomainZonesAddCAAIodefHttpsInvalid()
{
global $admin_userdata;
$content = '0 iodef "https:/iodef.example.com/"';
$data = [
'domainname' => 'test2.local',
'record' => '@',
'type' => 'CAA',
'content' => $content,
];
$this->expectExceptionMessage("DNS content invalid");
DomainZones::getLocal($admin_userdata, $data)->add();
}
public function testAdminDomainZonesAddCname()
{
global $admin_userdata;