mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
More tests and updates for requests
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user