appwrite/tests/unit/Network/Validators/DNSTest.php
2025-08-05 13:44:06 +02:00

77 lines
2.9 KiB
PHP

<?php
namespace Tests\Unit\Network\Validators;
use Appwrite\Network\Validator\DNS;
use PHPUnit\Framework\TestCase;
class DNSTest extends TestCase
{
public function setUp(): void
{
}
public function tearDown(): void
{
}
public function testCNAME(): void
{
$validator = new DNS('appwrite.io', DNS::RECORD_CNAME);
$this->assertEquals($validator->isValid(''), false);
$this->assertEquals($validator->isValid(null), false);
$this->assertEquals($validator->isValid(false), false);
$this->assertEquals($validator->isValid('cname-unit-test.appwrite.org'), true);
$this->assertEquals($validator->isValid('test1.appwrite.org'), false);
}
public function testA(): void
{
// IPv4 for documentation purposes
$validator = new DNS('203.0.113.1', DNS::RECORD_A);
$this->assertEquals($validator->isValid(''), false);
$this->assertEquals($validator->isValid(null), false);
$this->assertEquals($validator->isValid(false), false);
$this->assertEquals($validator->isValid('a-unit-test.appwrite.org'), true);
$this->assertEquals($validator->isValid('test1.appwrite.org'), false);
}
public function testAAAA(): void
{
// IPv6 for documentation purposes
$validator = new DNS('2001:db8::1', DNS::RECORD_AAAA);
$this->assertEquals($validator->isValid(''), false);
$this->assertEquals($validator->isValid(null), false);
$this->assertEquals($validator->isValid(false), false);
$this->assertEquals($validator->isValid('aaaa-unit-test.appwrite.org'), true);
$this->assertEquals($validator->isValid('test1.appwrite.org'), false);
}
public function testCAA(): void
{
$validator = new DNS('digicert.com', DNS::RECORD_CAA);
$this->assertEquals($validator->isValid('github.com'), true);
$this->assertEquals($validator->isValid('test1.appwrite.org'), true);
$validator = new DNS('0 issue "digicert.com"', DNS::RECORD_CAA);
$this->assertEquals($validator->isValid('github.com'), true);
$validator = new DNS('0 issuewild "digicert.com"', DNS::RECORD_CAA);
$this->assertEquals($validator->isValid('github.com'), true);
$validator = new DNS('128 issue "digicert.com"', DNS::RECORD_CAA);
$this->assertEquals($validator->isValid('github.com'), false);
$validator = new DNS('letsencrypt.org', DNS::RECORD_CAA);
$this->assertEquals($validator->isValid('github.com'), false);
// Valid becasue no CAA record configured
$validator = new DNS('anything.com', DNS::RECORD_CAA);
$this->assertEquals($validator->isValid('cloud.appwrite.io'), true);
// Valid becasue no CAA record configured
$validator = new DNS('something.org', DNS::RECORD_CAA);
$this->assertEquals($validator->isValid('cloud.appwrite.io'), true);
}
}