More tests and updates for requests

This commit is contained in:
wess
2023-04-10 15:07:52 -04:00
parent 684c0e5467
commit ff58c98162
2 changed files with 148 additions and 51 deletions
+2 -7
View File
@@ -94,7 +94,7 @@ App::post('/v1/domains')
Registrar $registrar
) {
if($registrar->available($domain)) {
if(!$registrar->available($domain)) {
throw new Exception(Exception::DOMAIN_ALREADY_EXISTS);
}
@@ -310,11 +310,6 @@ App::post('/v1/domains/transfer/in')
Registrar $registrar
) {
if(!$registrar->available($domain)) {
throw new Exception();
}
$contact = new Contact(
$firstname,
$lastname,
@@ -504,7 +499,7 @@ App::patch('/v1/domains/:domainId/project')
App::delete('/v1/domains/:domainId')
->desc("Remove a domain")
->groups(['api', 'domains'])
->label('scope', 'domains.read')
->label('scope', 'projects.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'domains')
->label('sdk.method', 'list')
@@ -12,6 +12,8 @@ use Utopia\Database\Database;
use Utopia\Database\DateTime;
use Utopia\Database\Helpers\ID;
use function PHPUnit\Framework\isEmpty;
class DomainsRegistrarClientTest extends Scope
{
use DomainsBase;
@@ -123,20 +125,19 @@ class DomainsRegistrarClientTest extends Scope
public function testCreate3rdPartyDomain($data): array
{
$id = $data['projectId'] ?? '';
$domain = $this->generateRandomString() . '.net';
$response = $this->client->call(Client::METHOD_POST, '/domains', array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), [
'projectId' => $id,
'domain' => 'example.com',
'domain' => $domain,
]);
$this->assertEquals(201, $response['headers']['status-code']);
$this->assertNotEmpty($response['body']['$id']);
$this->assertEquals('example.com', $response['body']['domain']);
$this->assertEquals('com', $response['body']['tld']);
$this->assertEquals('example.com', $response['body']['registerable']);
$this->assertEquals($domain, $response['body']['domain']);
$this->assertEquals(false, $response['body']['verification']);
@@ -151,55 +152,156 @@ class DomainsRegistrarClientTest extends Scope
'domain' => 'sdkljgfhsdflkjghsdflkgjsh.com',
]);
$this->assertEquals(409, $response['headers']['status-code']);
$response = $response = $this->client->call(Client::METHOD_POST, '/domains', array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), [
'type' => 'web',
'name' => 'Too Long Hostname',
'key' => '',
'store' => '',
'hostname' => \str_repeat("bestdomain", 25) . '.com' // 250 + 4 chars total (exactly above limit)
]);
return [];
}
/**
/**
* @depends testCreateProject
*/
// public function testPurchaseDomain($data): void
// {
// $id = $data['projectId'] ?? '';
public function testPurchaseDomain($data): array
{
$id = $data['projectId'] ?? '';
$domain = $this->generateRandomString() . '.net';
$response = $this->client->call(Client::METHOD_POST, '/domains/purchase', array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), [
'projectId' => $id,
'domain' => $domain,
'firstname' => 'firstname',
'lastname' => 'lastname',
'phone' => '+18037889693',
'email' => 'email@email.com',
'address1' => 'address1 st',
'address2' => 'unit address2',
'address3' => 'apt. address3',
'city' => 'city',
'state' => 'state',
'country' => 'us',
'postalcode' => '29223',
'org' => 'myorg',
]);
// $response = $this->client->call(Client::METHOD_POST, '/domains/purchase', array_merge([
// 'content-type' => 'application/json',
// 'x-appwrite-project' => $this->getProject()['$id'],
// ], $this->getHeaders()), [
// 'projectId' => $id,
// 'domain' => 'dfksljgh24rlkgjhvlsdfkjgbhl.org',
// 'firstname' => 'firstname',
// 'lastname' => 'lastname',
// 'phone' => '+18037889693',
// 'email' => 'email@email.com',
// 'address1' => 'address1 st',
// 'address2' => 'unit address2',
// 'address3' => 'apt. address3',
// 'city' => 'city',
// 'state' => 'state',
// 'country' => 'us',
// 'postalcode' => '29223',
// 'org' => 'myorg',
// ]);
$this->assertEquals(201, $response['headers']['status-code']);
$this->assertTrue($response['body']['registered']);
return [
'projectId' => $id,
'domain' => $domain,
];
}
public function testTransferInDomain(): void
{
// This will always fail mainly because it's a test env,
// but also because:
// - we use random domains to test
// - transfer lock is default
// - unable to unlock transfer because domains (in tests) are new.
// ** Even when testing against my own live domains, it failed.
// So we test for a proper formatted response,
// with "successful" being "false".
// $this->assertEquals(200, $response['headers']['status-code']);
// $this->assertNotEmpty($response['body']);
// $this->assertTrue($response['body'])
// }
$this->markTestSkipped("Transfer test skipped because it always fails.");
}
public function testTransferOutDomain(): void
{
// This will always fail mainly because it's a test env,
// but also because:
// - we use random domains to test
// - transfer lock is default
// - unable to unlock transfer because domains (in tests) are new.
// ** Even when testing against my own live domains, it failed.
// So we test for a proper formatted response,
// with "successful" being "false".
$this->markTestSkipped("Transfer test skipped because it always fails.");
}
/**
* @depends testCreateProject
*/
public function testDomainList($data): array
{
$id = $data['projectId'] ?? '';
$response = $this->client->call(Client::METHOD_GET, '/domains', array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), [
'projectId' => $id,
]);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertTrue($response['body']['total'] > 0);
$this->assertTrue(count($response['body']['domains']) > 0);
return [
'projectId' => $id,
'domains' => $response['body']['domains'],
];
}
/**
* @depends testDomainList
*/
public function testDomainGet($data): array
{
$id = $data['projectId'] ?? '';
$domains = $data['domains'] ?? [];
$domain = $domains[0];
$domainId = $domain['$id'];
$response = $this->client->call(Client::METHOD_GET, '/domains/' . $domainId, array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), [
'projectId' => $id,
'domainId' => $domains[0]['$id'],
]);
$this->assertEquals(200, $response['headers']['status-code']);
return [
'projectId' => $id,
'domainId' => $domainId
];
}
/**
* @depends testDomainGet
*/
public function testDomainDelete($data): string
{
$id = $data['projectId'] ?? '';
$domainId = $data['domainId'] ?? '';
$response = $this->client->call(Client::METHOD_DELETE, '/domains/' . $domainId, array_merge([
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
], $this->getHeaders()), [
'projectId' => $id,
'domainId' => $domainId,
]);
$this->assertEquals(204, $response['headers']['status-code']);
return $domainId;
}
private function generateRandomString(int $length = 10): string
{
$characters = 'abcdefghijklmnopqrstuvwxyz';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[random_int(0, $charactersLength - 1)];
}
return $randomString;
}
}