diff --git a/tests/e2e/Services/Webhooks/WebhooksBase.php b/tests/e2e/Services/Webhooks/WebhooksBase.php index dfbdc524c..dcf509fdc 100644 --- a/tests/e2e/Services/Webhooks/WebhooksBase.php +++ b/tests/e2e/Services/Webhooks/WebhooksBase.php @@ -20,24 +20,6 @@ trait WebhooksBase 'name' => 'Actors', 'read' => ['role:all'], 'write' => ['role:all'], - 'rules' => [ - [ - 'label' => 'First Name', - 'key' => 'firstName', - 'type' => 'text', - 'default' => '', - 'required' => true, - 'array' => false - ], - [ - 'label' => 'Last Name', - 'key' => 'lastName', - 'type' => 'text', - 'default' => '', - 'required' => true, - 'array' => false - ], - ], ]); $this->assertEquals($actors['headers']['status-code'], 201); @@ -55,12 +37,10 @@ trait WebhooksBase $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], 'Actors'); - $this->assertIsArray($webhook['data']['$permissions']); $this->assertIsArray($webhook['data']['$read']); $this->assertIsArray($webhook['data']['$write']); $this->assertCount(1, $webhook['data']['$read']); $this->assertCount(1, $webhook['data']['$write']); - $this->assertCount(2, $webhook['data']['rules']); return array_merge(['actorsId' => $actors['body']['$id']]); } @@ -68,6 +48,59 @@ trait WebhooksBase /** * @depends testCreateCollection */ + public function testCreateAttributes(array $data): array + { + $firstName = $this->client->call(Client::METHOD_POST, '/database/collections/' . $data['actorsId'] . '/attributes', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'id' => 'firstName', + 'type' => 'string', + 'size' => 256, + 'required' => true, + ]); + + $lastName = $this->client->call(Client::METHOD_POST, '/database/collections/' . $data['actorsId'] . '/attributes', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + 'x-appwrite-key' => $this->getProject()['apiKey'] + ]), [ + 'id' => 'lastName', + 'type' => 'string', + 'size' => 256, + 'required' => true, + ]); + + $this->assertEquals($firstName['headers']['status-code'], 201); + $this->assertEquals($firstName['body']['$collection'], $data['actorsId']); + $this->assertEquals($firstName['body']['$id'], 'firstName'); + $this->assertEquals($lastName['headers']['status-code'], 201); + $this->assertEquals($lastName['body']['$collection'], $data['actorsId']); + $this->assertEquals($lastName['body']['$id'], 'lastName'); + + // wait for database worker to kick in + sleep(5); + + $webhook = $this->getLastRequest(); + + $this->assertEquals($webhook['method'], 'POST'); + $this->assertEquals($webhook['headers']['Content-Type'], 'application/json'); + $this->assertEquals($webhook['headers']['User-Agent'], 'Appwrite-Server vdev. Please report abuse at security@appwrite.io'); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Event'], 'database.attributes.create'); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Signature'], 'not-yet-implemented'); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Id'] ?? '', $this->getProject()['webhookId']); + $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); + $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); + $this->assertNotEmpty($webhook['data']['$id']); + $this->assertEquals($webhook['data']['$id'], 'lastName'); + + return $data; + } + + /** + * @depends testCreateAttributes + */ public function testCreateDocument(array $data): array { $document = $this->client->call(Client::METHOD_POST, '/database/collections/' . $data['actorsId'] . '/documents', array_merge([ diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php index dbb44e0de..55be01e8e 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php @@ -15,7 +15,7 @@ class WebhooksCustomServerTest extends Scope use SideServer; /** - * @depends testCreateCollection + * @depends testCreateAttributes */ public function testUpdateCollection($data): array { @@ -28,26 +28,6 @@ class WebhooksCustomServerTest extends Scope 'x-appwrite-key' => $this->getProject()['apiKey'] ]), [ 'name' => 'Actors1', - 'read' => ['role:all'], - 'write' => ['role:all'], - 'rules' => [ - [ - 'label' => 'First Name', - 'key' => 'firstName', - 'type' => 'text', - 'default' => '', - 'required' => true, - 'array' => false - ], - [ - 'label' => 'Last Name', - 'key' => 'lastName', - 'type' => 'text', - 'default' => '', - 'required' => true, - 'array' => false - ], - ], ]); $this->assertEquals($actors['headers']['status-code'], 200); @@ -65,12 +45,10 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], 'Actors1'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertIsArray($webhook['data']['$permissions']['read']); - $this->assertIsArray($webhook['data']['$permissions']['write']); - $this->assertCount(1, $webhook['data']['$permissions']['read']); - $this->assertCount(1, $webhook['data']['$permissions']['write']); - $this->assertCount(2, $webhook['data']['rules']); + $this->assertIsArray($webhook['data']['$read']); + $this->assertIsArray($webhook['data']['$write']); + $this->assertCount(1, $webhook['data']['$read']); + $this->assertCount(1, $webhook['data']['$write']); return array_merge(['actorsId' => $actors['body']['$id']]); } @@ -88,24 +66,6 @@ class WebhooksCustomServerTest extends Scope 'name' => 'Demo', 'read' => ['role:all'], 'write' => ['role:all'], - 'rules' => [ - [ - 'label' => 'First Name', - 'key' => 'firstName', - 'type' => 'text', - 'default' => '', - 'required' => true, - 'array' => false - ], - [ - 'label' => 'Last Name', - 'key' => 'lastName', - 'type' => 'text', - 'default' => '', - 'required' => true, - 'array' => false - ], - ], ]); $this->assertEquals($actors['headers']['status-code'], 201); @@ -131,12 +91,10 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), true); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], 'Demo'); - $this->assertIsArray($webhook['data']['$permissions']); - $this->assertIsArray($webhook['data']['$permissions']['read']); - $this->assertIsArray($webhook['data']['$permissions']['write']); - $this->assertCount(1, $webhook['data']['$permissions']['read']); - $this->assertCount(1, $webhook['data']['$permissions']['write']); - $this->assertCount(2, $webhook['data']['rules']); + $this->assertIsArray($webhook['data']['$read']); + $this->assertIsArray($webhook['data']['$write']); + $this->assertCount(1, $webhook['data']['$read']); + $this->assertCount(1, $webhook['data']['$write']); return []; }