You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
4.7 KiB
PHP
164 lines
4.7 KiB
PHP
<?php
|
|
// Copyright 1999-2021. Plesk International GmbH.
|
|
|
|
namespace PleskXTest;
|
|
|
|
class DnsTest extends TestCase
|
|
{
|
|
/** @var \PleskX\Api\Struct\Webspace\Info */
|
|
private static $webspace;
|
|
|
|
private static $isDnsSupported;
|
|
|
|
public static function setUpBeforeClass(): void
|
|
{
|
|
parent::setUpBeforeClass();
|
|
|
|
$serviceStates = static::$_client->server()->getServiceStates();
|
|
static::$isDnsSupported = isset($serviceStates['dns']) && ('running' == $serviceStates['dns']['state']);
|
|
|
|
if (static::$isDnsSupported) {
|
|
static::$webspace = static::_createWebspace();
|
|
}
|
|
}
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
if (!static::$isDnsSupported) {
|
|
$this->markTestSkipped('DNS system is not supported.');
|
|
}
|
|
}
|
|
|
|
public function testCreate()
|
|
{
|
|
$dns = static::$_client->dns()->create([
|
|
'site-id' => static::$webspace->id,
|
|
'type' => 'TXT',
|
|
'host' => 'host',
|
|
'value' => 'value',
|
|
]);
|
|
$this->assertIsInt($dns->id);
|
|
$this->assertGreaterThan(0, $dns->id);
|
|
static::$_client->dns()->delete('id', $dns->id);
|
|
}
|
|
|
|
/**
|
|
* @return \PleskX\Api\XmlResponse[]
|
|
*/
|
|
public function testBulkCreate()
|
|
{
|
|
$response = static::$_client->dns()->bulkCreate([
|
|
[
|
|
'site-id' => static::$webspace->id,
|
|
'type' => 'TXT',
|
|
'host' => 'host',
|
|
'value' => 'value',
|
|
],
|
|
[
|
|
'site-id' => static::$webspace->id,
|
|
'type' => 'A',
|
|
'host' => 'host',
|
|
'value' => '1.1.1.1',
|
|
],
|
|
[
|
|
'site-id' => static::$webspace->id,
|
|
'type' => 'MX',
|
|
'host' => 'custom-mail',
|
|
'value' => '1.1.1.1',
|
|
'opt' => '10',
|
|
],
|
|
]);
|
|
|
|
$this->assertCount(3, $response);
|
|
|
|
foreach ($response as $xml) {
|
|
$this->assertEquals('ok', (string) $xml->status);
|
|
$this->assertGreaterThan(0, (int) $xml->id);
|
|
}
|
|
|
|
return $response;
|
|
}
|
|
|
|
/**
|
|
* @depends testBulkCreate
|
|
*
|
|
* @param \PleskX\Api\XmlResponse[] $createdRecords
|
|
*/
|
|
public function testBulkDelete(array $createdRecords)
|
|
{
|
|
$createdRecordIds = array_map(function ($record) {
|
|
return (int) $record->id;
|
|
}, $createdRecords);
|
|
|
|
$response = static::$_client->dns()->bulkDelete($createdRecordIds);
|
|
|
|
$this->assertCount(3, $response);
|
|
|
|
foreach ($response as $xml) {
|
|
$this->assertEquals('ok', (string) $xml->status);
|
|
$this->assertGreaterThan(0, (int) $xml->id);
|
|
}
|
|
}
|
|
|
|
public function testGetById()
|
|
{
|
|
$dns = static::$_client->dns()->create([
|
|
'site-id' => static::$webspace->id,
|
|
'type' => 'TXT',
|
|
'host' => '',
|
|
'value' => 'value',
|
|
]);
|
|
|
|
$dnsInfo = static::$_client->dns()->get('id', $dns->id);
|
|
$this->assertEquals('TXT', $dnsInfo->type);
|
|
$this->assertEquals(static::$webspace->id, $dnsInfo->siteId);
|
|
$this->assertEquals('value', $dnsInfo->value);
|
|
|
|
static::$_client->dns()->delete('id', $dns->id);
|
|
}
|
|
|
|
public function testGetAllByWebspaceId()
|
|
{
|
|
$dns = static::$_client->dns()->create([
|
|
'site-id' => static::$webspace->id,
|
|
'type' => 'DS',
|
|
'host' => '',
|
|
'value' => '60485 5 1 2BB183AF5F22588179A53B0A98631FAD1A292118',
|
|
]);
|
|
$dns2 = static::$_client->dns()->create([
|
|
'site-id' => static::$webspace->id,
|
|
'type' => 'DS',
|
|
'host' => '',
|
|
'value' => '60485 5 1 2BB183AF5F22588179A53B0A98631FAD1A292119',
|
|
]);
|
|
$dnsInfo = static::$_client->dns()->getAll('site-id', static::$webspace->id);
|
|
$dsRecords = [];
|
|
foreach ($dnsInfo as $dnsRec) {
|
|
if ('DS' == $dnsRec->type) {
|
|
$dsRecords[] = $dnsRec;
|
|
}
|
|
}
|
|
$this->assertEquals(2, count($dsRecords));
|
|
foreach ($dsRecords as $dsRecord) {
|
|
$this->assertEquals(static::$webspace->id, $dsRecord->siteId);
|
|
}
|
|
|
|
static::$_client->dns()->delete('id', $dns->id);
|
|
static::$_client->dns()->delete('id', $dns2->id);
|
|
}
|
|
|
|
public function testDelete()
|
|
{
|
|
$dns = static::$_client->dns()->create([
|
|
'site-id' => static::$webspace->id,
|
|
'type' => 'TXT',
|
|
'host' => 'host',
|
|
'value' => 'value',
|
|
]);
|
|
$result = static::$_client->dns()->delete('id', $dns->id);
|
|
$this->assertTrue($result);
|
|
}
|
|
}
|