client->call(Client::METHOD_GET, '/health', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('pass', $response['body']['status']); $this->assertIsInt($response['body']['ping']); $this->assertLessThan(100, $response['body']['ping']); return []; } public function testDBSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/db', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('pass', $response['body']['statuses'][0]['status']); $this->assertIsInt($response['body']['statuses'][0]['ping']); $this->assertLessThan(100, $response['body']['statuses'][0]['ping']); return []; } public function testCacheSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/cache', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('pass', $response['body']['statuses'][0]['status']); $this->assertIsInt($response['body']['statuses'][0]['ping']); $this->assertLessThan(100, $response['body']['statuses'][0]['ping']); return []; } public function testQueueSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('pass', $response['body']['statuses'][0]['status']); $this->assertIsInt($response['body']['statuses'][0]['ping']); $this->assertLessThan(100, $response['body']['statuses'][0]['ping']); return []; } public function testPubSubSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/pubsub', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('pass', $response['body']['statuses'][0]['status']); $this->assertIsInt($response['body']['statuses'][0]['ping']); $this->assertLessThan(100, $response['body']['statuses'][0]['ping']); return []; } public function testTimeSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/time', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['remoteTime']); $this->assertIsInt($response['body']['localTime']); $this->assertNotEmpty($response['body']['remoteTime']); $this->assertNotEmpty($response['body']['localTime']); $this->assertLessThan(10, $response['body']['diff']); return []; } public function testWebhooksSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/webhooks', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/webhooks?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testLogsSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/logs', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/logs?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testCertificatesSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/certificates', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/certificates?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testFunctionsSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/functions', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/functions?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testBuildsSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/builds', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/builds?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testDatabasesSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/databases', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'name' => 'database_db_main', ]); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/databases', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'name' => 'database_db_main', 'threshold' => '0' ]); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testDeletesSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/deletes', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/deletes?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testMailsSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/mails', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/mails?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testMessagingSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/messaging', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/messaging?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testMigrationsSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/migrations', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/migrations?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); return []; } public function testStorageLocalSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/storage/local', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('pass', $response['body']['status']); $this->assertIsInt($response['body']['ping']); $this->assertLessThan(100, $response['body']['ping']); return []; } public function testStorageSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/storage', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('pass', $response['body']['status']); $this->assertIsInt($response['body']['ping']); $this->assertLessThan(100, $response['body']['ping']); return []; } public function testStorageAntiVirusSuccess(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/anti-virus', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['status']); $this->assertIsString($response['body']['status']); $this->assertIsString($response['body']['version']); return []; } public function testCertificateValidity(): array { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=www.google.com', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('/CN=www.google.com', $response['body']['name']); $this->assertEquals('www.google.com', $response['body']['subjectSN']); $this->assertEquals('Google Trust Services LLC', $response['body']['issuerOrganisation']); $this->assertIsInt($response['body']['validFrom']); $this->assertIsInt($response['body']['validTo']); $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=appwrite.io', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('/CN=appwrite.io', $response['body']['name']); $this->assertEquals('appwrite.io', $response['body']['subjectSN']); $this->assertEquals("Let's Encrypt", $response['body']['issuerOrganisation']); $this->assertIsInt($response['body']['validFrom']); $this->assertIsInt($response['body']['validTo']); $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=https://google.com', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=localhost', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(400, $response['headers']['status-code']); $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=doesnotexist.com', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(404, $response['headers']['status-code']); $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=www.google.com/usr/src/local', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(400, $response['headers']['status-code']); $response = $this->client->call(Client::METHOD_GET, '/health/certificate?domain=', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(400, $response['headers']['status-code']); return []; } public function testUsageSuccess() { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/usage', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/usage?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); } public function testUsageDumpSuccess() { /** * Test for SUCCESS */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/usage-dump', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); $this->assertIsInt($response['body']['size']); $this->assertLessThan(100, $response['body']['size']); /** * Test for FAILURE */ $response = $this->client->call(Client::METHOD_GET, '/health/queue/usage-dump?threshold=0', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), []); $this->assertEquals(503, $response['headers']['status-code']); } }