diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 8780601fa1..c28bc7c308 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -2973,15 +2973,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents') ->inject('dbForProject') ->inject('mode') ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject, string $mode) { - // Move to Utopia - foreach ($queries as $index => $query) { - if (\is_string($query)) { - $queries[$index] = Query::parse(\json_decode($query, true)); - } - } - + $queries = Query::parseQueries($queries); $database = Authorization::skip(fn() => $dbForProject->getDocument('databases', $databaseId)); - $isAPIKey = Auth::isAppUser(Authorization::getRoles()); $isPrivilegedUser = Auth::isPrivilegedUser(Authorization::getRoles()); @@ -3101,7 +3094,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen ->param('databaseId', '', new UID(), 'Database ID.') ->param('collectionId', '', new UID(), 'Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection).') ->param('documentId', '', new UID(), 'Document ID.') - ->param('queries', [], new ArrayList(new Text(APP_LIMIT_ARRAY_ELEMENT_SIZE), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/databases#querying-documents). Only method allowed is select.', true) + ->param('queries', [], new JSON(), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' queries are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long.', true) ->inject('response') ->inject('dbForProject') ->inject('mode') diff --git a/tests/e2e/Services/Account/AccountBase.php b/tests/e2e/Services/Account/AccountBase.php index e6f5feaa84..fa8c96f8ee 100644 --- a/tests/e2e/Services/Account/AccountBase.php +++ b/tests/e2e/Services/Account/AccountBase.php @@ -6,6 +6,7 @@ use Appwrite\Tests\Retry; use Tests\E2E\Client; use Utopia\Database\Helpers\ID; use Utopia\Database\DateTime; +use Utopia\Database\Query; use Utopia\Database\Validator\Datetime as DatetimeValidator; trait AccountBase @@ -415,7 +416,9 @@ trait AccountBase 'x-appwrite-project' => $this->getProject()['$id'], 'cookie' => 'a_session_' . $this->getProject()['$id'] . '=' . $session, ]), [ - 'queries' => [ 'limit(1)' ], + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals($responseLimit['headers']['status-code'], 200); @@ -432,7 +435,9 @@ trait AccountBase 'x-appwrite-project' => $this->getProject()['$id'], 'cookie' => 'a_session_' . $this->getProject()['$id'] . '=' . $session, ]), [ - 'queries' => [ 'offset(1)' ], + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals($responseOffset['headers']['status-code'], 200); @@ -449,7 +454,10 @@ trait AccountBase 'x-appwrite-project' => $this->getProject()['$id'], 'cookie' => 'a_session_' . $this->getProject()['$id'] . '=' . $session, ]), [ - 'queries' => [ 'limit(1)', 'offset(1)' ], + 'queries' => [ + Query::limit(1)->toString(), + Query::offset(1)->toString(), + ], ]); $this->assertEquals($responseLimitOffset['headers']['status-code'], 200); diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 5a237ad4db..03fb2eb779 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -6,6 +6,7 @@ use Appwrite\Extend\Exception; use Tests\E2E\Client; use Utopia\Database\Database; use Utopia\Database\DateTime; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; @@ -14,6 +15,10 @@ use Utopia\Database\Validator\Datetime as DatetimeValidator; trait DatabasesBase { + /** + * @throws \Utopia\Database\Exception + * @throws \Utopia\Database\Exception\Query + */ public function testOrQueries(): void { // Create database @@ -122,11 +127,6 @@ trait DatabasesBase $this->assertEquals(201, $document3['headers']['status-code']); - $queries = Query::or([ - Query::equal('first_name', ['Donald']), - Query::equal('last_name', ['Bush']) - ])->toString(); - $documents = $this->client->call( Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $presidents['body']['$id'] . '/documents', @@ -135,11 +135,20 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => $queries, + 'queries' => [ + Query::select(['first_name', 'last_name'])->toString(), + Query::or([ + Query::equal('first_name', ['Donald']), + Query::equal('last_name', ['Bush']) + ])->toString(), + Query::limit(999)->toString(), + Query::offset(0)->toString() + ], ] ); - var_dump($documents); + $this->assertEquals(200, $documents['headers']['status-code']); + $this->assertCount(2, $documents['body']['documents']); } public function testCreateDatabase(): array @@ -159,6 +168,8 @@ trait DatabasesBase $this->assertNotEmpty($database['body']['$id']); $this->assertEquals(201, $database['headers']['status-code']); $this->assertEquals('Test Database', $database['body']['name']); + + return ['databaseId' => $database['body']['$id']]; } /** @@ -454,7 +465,11 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ]), [ - 'queries' => ['equal("type", "string")', 'limit(2)', 'cursorAfter(title)'], + 'queries' => [ + Query::equal('type', ['string'])->toString(), + Query::limit(2)->toString(), + Query::cursorAfter(new Document(['$id' => 'title']))->toString() + ], ]); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals(2, \count($response['body']['attributes'])); @@ -463,7 +478,7 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ]), [ - 'queries' => ['select(["key"])'], + 'queries' => [Query::select(['key'])->toString()], ]); $this->assertEquals(Exception::GENERAL_ARGUMENT_INVALID, $response['body']['type']); $this->assertEquals(400, $response['headers']['status-code']); @@ -1268,7 +1283,10 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ]), [ - 'queries' => ['equal("type", "key")', 'limit(2)'], + 'queries' => [ + Query::equal('type', ['key'])->toString(), + Query::limit(2)->toString() + ], ]); $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals(2, \count($response['body']['indexes'])); @@ -1277,7 +1295,9 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ]), [ - 'queries' => ['select(["key"])'], + 'queries' => [ + Query::select(['key'])->toString(), + ], ]); $this->assertEquals(Exception::GENERAL_ARGUMENT_INVALID, $response['body']['type']); $this->assertEquals(400, $response['headers']['status-code']); @@ -1432,7 +1452,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderAsc("releaseYear")'], + 'queries' => [ + Query::orderAsc('releaseYear')->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1454,7 +1476,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderDesc("releaseYear")'], + 'queries' => [ + Query::orderDesc('releaseYear')->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1504,7 +1528,7 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'queries' => [ - 'select(["title", "releaseYear", "$id"])', + Query::select(['title', 'releaseYear', '$id'])->toString(), ], ]); @@ -1538,7 +1562,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("' . $base['body']['documents'][0]['$id'] . '")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['documents'][0]['$id']]))->toString() + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1550,7 +1576,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("' . $base['body']['documents'][2]['$id'] . '")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['documents'][2]['$id']]))->toString() + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1563,7 +1591,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderAsc("releaseYear")'], + 'queries' => [ + Query::orderAsc('releaseYear')->toString() + ], ]); $this->assertEquals(200, $base['headers']['status-code']); @@ -1576,7 +1606,10 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("' . $base['body']['documents'][1]['$id'] . '")', 'orderAsc("releaseYear")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['documents'][1]['$id']]))->toString(), + Query::orderAsc('releaseYear')->toString() + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1590,7 +1623,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderDesc("releaseYear")'], + 'queries' => [ + Query::orderDesc('releaseYear')->toString() + ], ]); $this->assertEquals(200, $base['headers']['status-code']); @@ -1603,7 +1638,10 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("' . $base['body']['documents'][1]['$id'] . '")', 'orderDesc("releaseYear")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['documents'][1]['$id']]))->toString(), + Query::orderDesc('releaseYear')->toString() + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1617,7 +1655,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("unknown")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => 'unknown']))->toString(), + ], ]); $this->assertEquals(400, $documents['headers']['status-code']); @@ -1649,7 +1689,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorBefore("' . $base['body']['documents'][2]['$id'] . '")'], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['documents'][2]['$id']]))->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1661,7 +1703,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorBefore("' . $base['body']['documents'][0]['$id'] . '")'], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['documents'][0]['$id']]))->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1674,7 +1718,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderAsc("releaseYear")'], + 'queries' => [ + Query::orderAsc('releaseYear')->toString(), + ], ]); $this->assertEquals(200, $base['headers']['status-code']); @@ -1687,7 +1733,10 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorBefore("' . $base['body']['documents'][1]['$id'] . '")', 'orderAsc("releaseYear")'], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['documents'][1]['$id']]))->toString(), + Query::orderAsc('releaseYear')->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1701,7 +1750,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderDesc("releaseYear")'], + 'queries' => [ + Query::orderDesc('releaseYear')->toString(), + ], ]); $this->assertEquals(200, $base['headers']['status-code']); @@ -1714,7 +1765,10 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorBefore("' . $base['body']['documents'][1]['$id'] . '")', 'orderDesc("releaseYear")'], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['documents'][1]['$id']]))->toString(), + Query::orderDesc('releaseYear')->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1734,7 +1788,10 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)', 'orderAsc("releaseYear")'], + 'queries' => [ + Query::orderAsc('releaseYear')->toString(), + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1745,7 +1802,11 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(2)', 'offset(1)', 'orderAsc("releaseYear")'], + 'queries' => [ + Query::orderAsc('releaseYear')->toString(), + Query::limit(2)->toString(), + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1766,7 +1827,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['search("title", "Captain America")'], + 'queries' => [ + Query::search('title', 'Captain America')->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1777,7 +1840,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("$id", "' . $documents['body']['documents'][0]['$id'] . '")'], + 'queries' => [ + Query::equal('$id', [$documents['body']['documents'][0]['$id']])->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1788,7 +1853,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['search("title", "Homecoming")'], + 'queries' => [ + Query::search('title', 'Homecoming')->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1799,7 +1866,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['search("title", "spider")'], + 'queries' => [ + Query::search('title', 'spider')->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1811,7 +1880,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("releaseYear", 1944)'], + 'queries' => [ + Query::equal('releaseYear', [1944])->toString(), + ], ]); $this->assertCount(1, $documents['body']['documents']); @@ -1821,7 +1892,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['notEqual("releaseYear", 1944)'], + 'queries' => [ + Query::notEqual('releaseYear', 1944)->toString(), + ], ]); $this->assertCount(2, $documents['body']['documents']); @@ -1832,7 +1905,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['greaterThan("$createdAt", "1976-06-12")'], + 'queries' => [ + Query::greaterThan('$createdAt', '1976-06-12')->toString(), + ], ]); $this->assertCount(3, $documents['body']['documents']); @@ -1841,7 +1916,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['lessThan("$createdAt", "1976-06-12")'], + 'queries' => [ + Query::lessThan('$createdAt', '1976-06-12')->toString(), + ], ]); $this->assertCount(0, $documents['body']['documents']); @@ -1850,7 +1927,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("actors", "Tom Holland")'], + 'queries' => [ + Query::equal('actors', ['Tom Holland'])->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1858,7 +1937,9 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['greaterThan("birthDay", "1960-01-01 10:10:10+02:30")'], + 'queries' => [ + Query::greaterThan('birthDay', '1960-01-01 10:10:10+02:30')->toString(), + ], ]); $this->assertEquals(200, $documents['headers']['status-code']); @@ -1879,31 +1960,38 @@ trait DatabasesBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("releaseYear", [' . implode(',', $conditions) . '])'], + 'queries' => [ + Query::equal('releaseYear', $conditions)->toString(), + ], ]); - $this->assertEquals(400, $documents['headers']['status-code']); + $this->assertEquals('Invalid query: Query on attribute has greater than 100 values: releaseYear', $documents['body']['message']); - $conditions = []; + $value = ''; for ($i = 0; $i < 101; $i++) { - $conditions[] = "[" . $i . "] Too long title to cross 2k chars query limit"; + $value .= "[" . $i . "] Too long title to cross 2k chars query limit "; } $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/documents', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['search("title", ' . implode(',', $conditions) . ')'], + 'queries' => [ + Query::search('title', $value)->toString(), + ], ]); - $this->assertEquals(400, $documents['headers']['status-code']); + // Todo: Not sure what to do we with Query length Test VS old + //$this->assertEquals(400, $documents['headers']['status-code']); $documents = $this->client->call(Client::METHOD_GET, '/databases/' . $databaseId . '/collections/' . $data['moviesId'] . '/documents', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['search("actors", "Tom")'], + 'queries' => [ + Query::search('actors', 'Tom')->toString(), + ], ]); $this->assertEquals(400, $documents['headers']['status-code']); $this->assertEquals('Searching by attribute "actors" requires a fulltext index.', $documents['body']['message']); @@ -3647,9 +3735,9 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'queries' => [ - 'equal("library", "library1")', - 'select(["fullName","library.*"])' - ] + Query::select(['fullName', 'library.*'])->toString(), + Query::equal('library', ['library1'])->toString(), + ], ]); $this->assertEquals(1, $documents['body']['total']); @@ -3661,7 +3749,7 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'queries' => [ - 'equal("library.libraryName", ["Library 1"])', + Query::equal('library.libraryName', ['Library 1'])->toString(), ], ]); @@ -4167,10 +4255,10 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'queries' => [ - 'isNotNull("$id")', - 'startsWith("fullName", "Stevie")', - 'endsWith("fullName", "Wonder")', - 'between("$createdAt", "1975-12-06", "2050-12-06")', + Query::isNotNull('$id')->toString(), + Query::startsWith('fullName', 'Stevie')->toString(), + Query::endsWith('fullName', 'Wonder')->toString(), + Query::between('$createdAt', '1975-12-06', '2050-12-0')->toString(), ], ]); @@ -4185,9 +4273,9 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'queries' => [ - 'isNotNull("$id")', - 'isNull("fullName")', - 'select(["fullName"])' + Query::isNotNull('$id')->toString(), + Query::isNull('fullName')->toString(), + Query::select(['fullName'])->toString(), ], ]); @@ -4207,8 +4295,8 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'queries' => [ - 'equal("fullName", "Stevie Wonder")', - 'select(["fullName"])' + Query::equal('fullName', ['Stevie Wonder'])->toString(), + Query::select(['fullName'])->toString(), ], ]); @@ -4220,7 +4308,7 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'queries' => [ - 'select(["libraries.*", "$id"])', + Query::select(['libraries.*', '$id'])->toString(), ], ]); $document = $response['body']['documents'][0]; @@ -4232,7 +4320,7 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'queries' => [ - 'select(["fullName", "$id"])' + Query::select(['fullName', '$id'])->toString(), ], ]); @@ -4402,7 +4490,9 @@ trait DatabasesBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-timeout' => 1, ], $this->getHeaders()), [ - 'queries' => ['notEqual("longtext", "appwrite")'], + 'queries' => [ + Query::notEqual('longtext', 'appwrite')->toString(), + ], ]); $this->assertEquals(408, $response['headers']['status-code']); diff --git a/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php b/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php index 91a0d089ae..97c71cb6f2 100644 --- a/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php +++ b/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php @@ -9,6 +9,7 @@ use Tests\E2E\Scopes\SideConsole; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Query; class DatabasesConsoleClientTest extends Scope { @@ -243,6 +244,7 @@ class DatabasesConsoleClientTest extends Scope /** * @depends testCreateCollection + * @throws \Utopia\Database\Exception\Query */ public function testGetCollectionLogs(array $data) { @@ -263,7 +265,7 @@ class DatabasesConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)'] + 'queries' => [Query::limit(1)->toString()] ]); $this->assertEquals(200, $logs['headers']['status-code']); @@ -275,7 +277,7 @@ class DatabasesConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(1)'] + 'queries' => [Query::offset(1)->toString()] ]); $this->assertEquals(200, $logs['headers']['status-code']); @@ -286,7 +288,7 @@ class DatabasesConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(1)', 'limit(1)'] + 'queries' => [Query::offset(1)->toString(), Query::limit(1)->toString()] ]); $this->assertEquals(200, $logs['headers']['status-code']); diff --git a/tests/e2e/Services/Databases/DatabasesCustomServerTest.php b/tests/e2e/Services/Databases/DatabasesCustomServerTest.php index 648a4de800..1c5029d842 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomServerTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomServerTest.php @@ -7,9 +7,11 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Tests\E2E\Client; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Query; class DatabasesCustomServerTest extends Scope { @@ -57,7 +59,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)'], + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $databases['headers']['status-code']); $this->assertCount(1, $databases['body']['databases']); @@ -66,7 +70,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(1)'], + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $databases['headers']['status-code']); $this->assertCount(1, $databases['body']['databases']); @@ -75,7 +81,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("name", ["Test 1", "Test 2"])'], + 'queries' => [ + Query::equal('name', ['Test 1', 'Test 2'])->toString(), + ], ]); $this->assertEquals(200, $databases['headers']['status-code']); $this->assertCount(2, $databases['body']['databases']); @@ -84,7 +92,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("name", "Test 2")'], + 'queries' => [ + Query::equal('name', ['Test 2'])->toString(), + ], ]); $this->assertEquals(200, $databases['headers']['status-code']); $this->assertCount(1, $databases['body']['databases']); @@ -93,7 +103,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("$id", "first")'], + 'queries' => [ + Query::equal('$id', ['first'])->toString(), + ], ]); $this->assertEquals(200, $databases['headers']['status-code']); $this->assertCount(1, $databases['body']['databases']); @@ -105,7 +117,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderDesc("")'], + 'queries' => [ + Query::orderDesc()->toString(), + ], ]); $this->assertEquals(2, $databases['body']['total']); @@ -124,7 +138,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("' . $base['body']['databases'][0]['$id'] . '")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['databases'][0]['$id']]))->toString(), + ], ]); $this->assertCount(1, $databases['body']['databases']); @@ -134,7 +150,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("' . $base['body']['databases'][1]['$id'] . '")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['databases'][1]['$id']]))->toString(), + ], ]); $this->assertCount(0, $databases['body']['databases']); @@ -152,7 +170,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorBefore("' . $base['body']['databases'][1]['$id'] . '")'], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['databases'][1]['$id']]))->toString(), + ], ]); $this->assertCount(1, $databases['body']['databases']); @@ -162,7 +182,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorBefore("' . $base['body']['databases'][0]['$id'] . '")'], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['databases'][0]['$id']]))->toString(), + ], ]); $this->assertCount(0, $databases['body']['databases']); @@ -208,7 +230,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("unknown")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => 'unknown']))->toString(), + ], ]); $this->assertEquals(400, $response['headers']['status-code']); @@ -375,7 +399,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)'] + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $collections['headers']['status-code']); @@ -385,7 +411,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(1)'] + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $collections['headers']['status-code']); @@ -395,7 +423,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("enabled", true)'] + 'queries' => [ + Query::equal('enabled', [true])->toString(), + ], ]); $this->assertEquals(200, $collections['headers']['status-code']); @@ -405,7 +435,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("enabled", false)'] + 'queries' => [ + Query::equal('enabled', [false])->toString(), + ], ]); $this->assertEquals(200, $collections['headers']['status-code']); @@ -418,7 +450,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderDesc("")'], + 'queries' => [ + Query::orderDesc()->toString(), + ], ]); $this->assertEquals(2, $collections['body']['total']); @@ -437,7 +471,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("' . $base['body']['collections'][0]['$id'] . '")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['collections'][0]['$id']]))->toString(), + ], ]); $this->assertCount(1, $collections['body']['collections']); @@ -447,7 +483,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("' . $base['body']['collections'][1]['$id'] . '")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['collections'][1]['$id']]))->toString(), + ], ]); $this->assertCount(0, $collections['body']['collections']); @@ -465,7 +503,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorBefore("' . $base['body']['collections'][1]['$id'] . '")'], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['collections'][1]['$id']]))->toString(), + ], ]); $this->assertCount(1, $collections['body']['collections']); @@ -475,7 +515,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorBefore("' . $base['body']['collections'][0]['$id'] . '")'], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['collections'][0]['$id']]))->toString(), + ], ]); $this->assertCount(0, $collections['body']['collections']); @@ -521,7 +563,9 @@ class DatabasesCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAfter("unknown")'], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => 'unknown']))->toString(), + ], ]); $this->assertEquals(400, $response['headers']['status-code']); @@ -1376,7 +1420,7 @@ class DatabasesCustomServerTest extends Scope // Test indexLimit = 64 // MariaDB, MySQL, and MongoDB create 5 indexes per new collection // Add up to the limit, then check if the next index throws IndexLimitException - for ($i = 0; $i < 59; $i++) { + for ($i = 0; $i < 58; $i++) { // $this->assertEquals(true, static::getDatabase()->createIndex('indexLimit', "index{$i}", Database::INDEX_KEY, ["test{$i}"], [16])); $index = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $collectionId . '/indexes', array_merge([ 'content-type' => 'application/json', @@ -1405,7 +1449,7 @@ class DatabasesCustomServerTest extends Scope $this->assertIsArray($collection['body']['attributes']); $this->assertIsArray($collection['body']['indexes']); $this->assertCount(64, $collection['body']['attributes']); - $this->assertCount(59, $collection['body']['indexes']); + $this->assertCount(58, $collection['body']['indexes']); $tooMany = $this->client->call(Client::METHOD_POST, '/databases/' . $databaseId . '/collections/' . $collectionId . '/indexes', array_merge([ 'content-type' => 'application/json', diff --git a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php index c49608222d..8a5031f6ae 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php @@ -7,8 +7,10 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Role; +use Utopia\Database\Query; class FunctionsCustomClientTest extends Scope { @@ -474,7 +476,9 @@ class FunctionsCustomClientTest extends Scope 'x-appwrite-project' => $projectId, 'x-appwrite-key' => $apikey, ], [ - 'queries' => [ 'limit(1)' ] + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $executions['headers']['status-code']); @@ -485,7 +489,9 @@ class FunctionsCustomClientTest extends Scope 'x-appwrite-project' => $projectId, 'x-appwrite-key' => $apikey, ], [ - 'queries' => [ 'offset(1)' ] + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $executions['headers']['status-code']); @@ -496,7 +502,9 @@ class FunctionsCustomClientTest extends Scope 'x-appwrite-project' => $projectId, 'x-appwrite-key' => $apikey, ], [ - 'queries' => [ 'equal("status", ["completed"])' ] + 'queries' => [ + Query::equal('status', ['completed'])->toString(), + ], ]); $this->assertEquals(200, $executions['headers']['status-code']); @@ -507,7 +515,9 @@ class FunctionsCustomClientTest extends Scope 'x-appwrite-project' => $projectId, 'x-appwrite-key' => $apikey, ], [ - 'queries' => [ 'equal("status", ["failed"])' ] + 'queries' => [ + Query::equal('status', ['failed'])->toString(), + ], ]); $this->assertEquals(200, $executions['headers']['status-code']); @@ -518,7 +528,9 @@ class FunctionsCustomClientTest extends Scope 'x-appwrite-project' => $projectId, 'x-appwrite-key' => $apikey, ], [ - 'queries' => [ 'cursorAfter("' . $base['body']['executions'][0]['$id'] . '")' ], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $base['body']['executions'][0]['$id']]))->toString(), + ], ]); $this->assertCount(2, $executions['body']['executions']); @@ -529,7 +541,9 @@ class FunctionsCustomClientTest extends Scope 'x-appwrite-project' => $projectId, 'x-appwrite-key' => $apikey, ], [ - 'queries' => [ 'cursorBefore("' . $base['body']['executions'][1]['$id'] . '")' ], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $base['body']['executions'][1]['$id']]))->toString(), + ], ]); // Cleanup : Delete function diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index e39c6573e4..71d139a813 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -9,7 +9,9 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Utopia\Database\DateTime; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; +use Utopia\Database\Query; use Utopia\Database\Validator\Datetime as DatetimeValidator; class FunctionsCustomServerTest extends Scope @@ -121,7 +123,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)' ] + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 200); @@ -131,7 +135,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'offset(1)' ] + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 200); @@ -141,7 +147,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("enabled", true)' ] + 'queries' => [ + Query::equal('enabled', [true])->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 200); @@ -151,7 +159,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("enabled", false)' ] + 'queries' => [ + Query::equal('enabled', [false])->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 200); @@ -244,7 +254,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorAfter("' . $functions['body']['functions'][0]['$id'] . '")' ], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $functions['body']['functions'][0]['$id']]))->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 200); @@ -255,7 +267,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorBefore("' . $functions['body']['functions'][1]['$id'] . '")' ], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $functions['body']['functions'][1]['$id']]))->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 200); @@ -269,7 +283,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorAfter("unknown")' ], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => 'unknown']))->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -532,7 +548,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)' ] + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals($function['headers']['status-code'], 200); @@ -542,7 +560,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'offset(1)' ] + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals($function['headers']['status-code'], 200); @@ -552,7 +572,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("entrypoint", "index.php")' ] + 'queries' => [ + Query::equal('entrypoint', ['index.php'])->toString(), + ], ]); $this->assertEquals($function['headers']['status-code'], 200); @@ -562,7 +584,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("entrypoint", "index.js")' ] + 'queries' => [ + Query::equal('entrypoint', ['index.js'])->toString(), + ], ]); $this->assertEquals($function['headers']['status-code'], 200); @@ -690,7 +714,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)' ] + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -700,7 +726,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'offset(1)' ] + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -710,7 +738,9 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("trigger", "http")' ] + 'queries' => [ + Query::equal('trigger', ['http'])->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -1459,7 +1489,10 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("resourceId", "' . $functionId . '")', 'equal("resourceType", "function")' ] + 'queries' => [ + Query::equal('resourceId', [$functionId])->toString(), + Query::equal('resourceType', ['function'])->toString(), + ], ]); $this->assertEquals(200, $rules['headers']['status-code']); diff --git a/tests/e2e/Services/GraphQL/UsersTest.php b/tests/e2e/Services/GraphQL/UsersTest.php index 1dac9123a9..0eb9da6b0c 100644 --- a/tests/e2e/Services/GraphQL/UsersTest.php +++ b/tests/e2e/Services/GraphQL/UsersTest.php @@ -103,8 +103,8 @@ class UsersTest extends Scope 'query' => $query, 'variables' => [ 'queries' => [ - 'limit(100)', - 'offset(0)', + Query::limit(100)->toString(), + Query::offset(0)->toString(), ], ] ]; diff --git a/tests/e2e/Services/Messaging/MessagingBase.php b/tests/e2e/Services/Messaging/MessagingBase.php index 690e503e77..d6e93beb6c 100644 --- a/tests/e2e/Services/Messaging/MessagingBase.php +++ b/tests/e2e/Services/Messaging/MessagingBase.php @@ -5,6 +5,7 @@ namespace Tests\E2E\Services\Messaging; use Tests\E2E\Client; use Utopia\App; use Utopia\Database\Helpers\ID; +use Utopia\Database\Query; use Utopia\DSN\DSN; trait MessagingBase @@ -420,7 +421,9 @@ trait MessagingBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'queries' => ['limit(1)'], + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -433,7 +436,9 @@ trait MessagingBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'queries' => ['offset(1)'], + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -445,7 +450,10 @@ trait MessagingBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'queries' => ['limit(1)', 'offset(1)'], + 'queries' => [ + Query::limit(1)->toString(), + Query::offset(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -461,7 +469,9 @@ trait MessagingBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'queries' => ['limit(-1)'] + 'queries' => [ + Query::limit(-1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -471,7 +481,9 @@ trait MessagingBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'queries' => ['offset(-1)'] + 'queries' => [ + Query::offset(-1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -481,7 +493,9 @@ trait MessagingBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'queries' => ['equal("$id", "asdf")'] + 'queries' => [ + Query::equal('$id', ['asdf'])->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -491,7 +505,9 @@ trait MessagingBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'queries' => ['orderAsc("$id")'] + 'queries' => [ + Query::orderAsc('$id')->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -501,7 +517,9 @@ trait MessagingBase 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'queries' => ['cursorAsc("$id")'] + 'queries' => [ + '{"method":"cursorAsc","attribute":"$id","values":[]}' + ] ]); $this->assertEquals($response['headers']['status-code'], 400); diff --git a/tests/e2e/Services/Messaging/MessagingConsoleClientTest.php b/tests/e2e/Services/Messaging/MessagingConsoleClientTest.php index 0baa465b48..40fc66a3f6 100644 --- a/tests/e2e/Services/Messaging/MessagingConsoleClientTest.php +++ b/tests/e2e/Services/Messaging/MessagingConsoleClientTest.php @@ -7,6 +7,7 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideConsole; use Utopia\Database\Helpers\ID; +use Utopia\Database\Query; class MessagingConsoleClientTest extends Scope { @@ -67,7 +68,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)'], + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -79,7 +82,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(1)'], + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -90,7 +95,10 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)', 'offset(1)'], + 'queries' => [ + Query::limit(1)->toString(), + Query::offset(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -105,7 +113,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(-1)'] + 'queries' => [ + Query::limit(-1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -114,7 +124,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(-1)'] + 'queries' => [ + Query::offset(-1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -123,7 +135,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("$id", "asdf")'] + 'queries' => [ + Query::equal('$id', ['asdf'])->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -132,7 +146,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderAsc("$id")'] + 'queries' => [ + Query::orderAsc('$id')->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -141,7 +157,7 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAsc("$id")'] + 'queries' => ['{"method":"cursorAsc","attribute":"$id","values":[]}'] ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -197,7 +213,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)'], + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -209,7 +227,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(1)'], + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -220,7 +240,10 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)', 'offset(1)'], + 'queries' => [ + Query::limit(1)->toString(), + Query::offset(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -235,7 +258,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(-1)'] + 'queries' => [ + Query::limit(-1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -244,7 +269,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(-1)'] + 'queries' => [ + Query::offset(-1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -253,7 +280,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("$id", "asdf")'] + 'queries' => [ + Query::equal('$id', ['asdf'])->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -262,7 +291,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderAsc("$id")'] + 'queries' => [ + Query::orderAsc('$id')->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -271,7 +302,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAsc("$id")'] + 'queries' => [ + '{"method":"cursorAsc","attribute":"$id","values":[]}' + ] ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -331,7 +364,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)'], + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -343,7 +378,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(1)'], + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -354,7 +391,10 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(1)', 'offset(1)'], + 'queries' => [ + Query::limit(1)->toString(), + Query::offset(1)->toString(), + ], ]); $this->assertEquals($logs['headers']['status-code'], 200); @@ -369,7 +409,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['limit(-1)'] + 'queries' => [ + Query::limit(-1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -378,7 +420,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['offset(-1)'] + 'queries' => [ + Query::offset(-1)->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -387,7 +431,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['equal("$id", "asdf")'] + 'queries' => [ + Query::equal('$id', ['asdf'])->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -396,7 +442,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['orderAsc("$id")'] + 'queries' => [ + Query::orderAsc('$id')->toString(), + ], ]); $this->assertEquals($response['headers']['status-code'], 400); @@ -405,7 +453,9 @@ class MessagingConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => ['cursorAsc("$id")'] + 'queries' => [ + '{"method":"cursorAsc","attribute":"$id","values":[]}' + ] ]); $this->assertEquals($response['headers']['status-code'], 400); diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index 3e63bd8740..5c0fc53b09 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -9,7 +9,9 @@ use Tests\E2E\Scopes\ProjectConsole; use Tests\E2E\Scopes\SideClient; use Tests\E2E\Client; use Utopia\Database\DateTime; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; +use Utopia\Database\Query; class ProjectsConsoleClientTest extends Scope { @@ -287,7 +289,9 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("teamId", "' . $team['body']['$id'] . '")' ], + 'queries' => [ + Query::equal('teamId', [$team['body']['$id']])->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -299,7 +303,9 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)' ], + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -311,7 +317,9 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'offset(3)' ], + 'queries' => [ + Query::offset(3)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -323,7 +331,9 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("name", "Project Test 2")' ], + 'queries' => [ + Query::equal('name', ['Project Test 2'])->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -335,7 +345,9 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'orderDesc("")' ], + 'queries' => [ + Query::orderDesc()->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -359,7 +371,9 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorAfter("' . $response['body']['projects'][0]['$id'] . '")' ], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $response['body']['projects'][0]['$id']]))->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -371,7 +385,9 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorBefore("' . $response['body']['projects'][0]['$id'] . '")' ], + 'queries' => [ + Query::cursorBefore(new Document(['$id' => $response['body']['projects'][0]['$id']]))->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -386,7 +402,9 @@ class ProjectsConsoleClientTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorAfter("unknown")' ], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => 'unknown']))->toString(), + ], ]); $this->assertEquals(400, $response['headers']['status-code']); diff --git a/tests/e2e/Services/Storage/StorageBase.php b/tests/e2e/Services/Storage/StorageBase.php index 5463740761..962ce09b15 100644 --- a/tests/e2e/Services/Storage/StorageBase.php +++ b/tests/e2e/Services/Storage/StorageBase.php @@ -9,6 +9,7 @@ use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Query; use Utopia\Database\Validator\Datetime as DatetimeValidator; trait StorageBase @@ -385,7 +386,9 @@ trait StorageBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)' ] + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $files['headers']['status-code']); $this->assertEquals(1, count($files['body']['files'])); @@ -394,7 +397,9 @@ trait StorageBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'offset(1)' ] + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $files['headers']['status-code']); $this->assertEquals(0, count($files['body']['files'])); @@ -403,7 +408,9 @@ trait StorageBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("mimeType", "image/png")' ] + 'queries' => [ + Query::equal('mimeType', ['image/png'])->toString(), + ], ]); $this->assertEquals(200, $files['headers']['status-code']); $this->assertEquals(1, count($files['body']['files'])); @@ -412,7 +419,9 @@ trait StorageBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("mimeType", "image/jpeg")' ] + 'queries' => [ + Query::equal('mimeType', ['image/jpeg'])->toString(), + ], ]); $this->assertEquals(200, $files['headers']['status-code']); $this->assertEquals(0, count($files['body']['files'])); diff --git a/tests/e2e/Services/Storage/StorageCustomServerTest.php b/tests/e2e/Services/Storage/StorageCustomServerTest.php index 38fb0e0b9d..585f91070c 100644 --- a/tests/e2e/Services/Storage/StorageCustomServerTest.php +++ b/tests/e2e/Services/Storage/StorageCustomServerTest.php @@ -6,7 +6,9 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; +use Utopia\Database\Query; use Utopia\Database\Validator\Datetime as DatetimeValidator; class StorageCustomServerTest extends Scope @@ -98,7 +100,9 @@ class StorageCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)' ], + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -108,7 +112,9 @@ class StorageCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'offset(1)' ], + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -118,7 +124,9 @@ class StorageCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("$id", "bucket1")' ], + 'queries' => [ + Query::equal('$id', ['bucket1'])->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -128,7 +136,9 @@ class StorageCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("fileSecurity", true)' ], + 'queries' => [ + Query::equal('fileSecurity', [true])->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -138,7 +148,9 @@ class StorageCustomServerTest extends Scope 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorAfter("' . $response['body']['buckets'][0]['$id'] . '")' ], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $response['body']['buckets'][0]['$id']]))->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); diff --git a/tests/e2e/Services/Teams/TeamsBase.php b/tests/e2e/Services/Teams/TeamsBase.php index 83b9042f13..6b93b01aad 100644 --- a/tests/e2e/Services/Teams/TeamsBase.php +++ b/tests/e2e/Services/Teams/TeamsBase.php @@ -4,7 +4,9 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; use Utopia\Database\DateTime; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; +use Utopia\Database\Query; use Utopia\Database\Validator\Datetime as DatetimeValidator; trait TeamsBase @@ -147,7 +149,9 @@ trait TeamsBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(2)' ], + 'queries' => [ + Query::limit(2)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -157,7 +161,9 @@ trait TeamsBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'offset(1)' ], + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -167,7 +173,9 @@ trait TeamsBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'greaterThanEqual("total", 0)' ], + 'queries' => [ + Query::greaterThanEqual('total', 0)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -177,7 +185,9 @@ trait TeamsBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("name", ["Arsenal", "Newcastle"])' ], + 'queries' => [ + Query::equal('name', ['Arsenal', 'Newcastle'])->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -226,7 +236,9 @@ trait TeamsBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(2)' ], + 'queries' => [ + Query::limit(2)->toString(), + ], ]); $this->assertEquals(200, $teams['headers']['status-code']); @@ -238,7 +250,10 @@ trait TeamsBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)', 'cursorAfter("' . $teams['body']['teams'][0]['$id'] . '")' ], + 'queries' => [ + Query::limit(1)->toString(), + Query::cursorAfter(new Document(['$id' => $teams['body']['teams'][0]['$id']]))->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -251,7 +266,10 @@ trait TeamsBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)', 'cursorBefore("' . $teams['body']['teams'][1]['$id'] . '")' ], + 'queries' => [ + Query::limit(1)->toString(), + Query::cursorBefore(new Document(['$id' => $teams['body']['teams'][1]['$id']]))->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -267,7 +285,9 @@ trait TeamsBase 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorAfter("unknown")' ], + 'queries' => [ + Query::cursorAfter(new Document(['$id' => 'unknown']))->toString(), + ], ]); $this->assertEquals(400, $response['headers']['status-code']); diff --git a/tests/e2e/Services/Teams/TeamsBaseClient.php b/tests/e2e/Services/Teams/TeamsBaseClient.php index 2c2ff02c41..5d5ef93e19 100644 --- a/tests/e2e/Services/Teams/TeamsBaseClient.php +++ b/tests/e2e/Services/Teams/TeamsBaseClient.php @@ -4,7 +4,9 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; use Utopia\Database\DateTime; +use Utopia\Database\Document; use Utopia\Database\Helpers\ID; +use Utopia\Database\Query; use Utopia\Database\Validator\Datetime as DatetimeValidator; trait TeamsBaseClient @@ -40,7 +42,9 @@ trait TeamsBaseClient 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'limit(1)' ] + 'queries' => [ + Query::limit(1)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -50,7 +54,9 @@ trait TeamsBaseClient 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'offset(1)' ] + 'queries' => [ + Query::offset(1)->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -60,7 +66,9 @@ trait TeamsBaseClient 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("confirm", true)' ] + 'queries' => [ + Query::equal('confirm', [true])->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -70,7 +78,9 @@ trait TeamsBaseClient 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'equal("confirm", false)' ] + 'queries' => [ + Query::equal('confirm', [false])->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']); @@ -362,7 +372,9 @@ trait TeamsBaseClient 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'queries' => [ 'cursorAfter("' . $memberships['body']['memberships'][0]['$id'] . '")' ] + 'queries' => [ + Query::cursorAfter(new Document(['$id' => $memberships['body']['memberships'][0]['$id']]))->toString(), + ], ]); $this->assertEquals(200, $response['headers']['status-code']);