From d721843ea8b744f4fc7e26539987bebd3dc96e5a Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 7 Mar 2024 15:03:43 +0100 Subject: [PATCH] test: response filters --- tests/unit/Utopia/Request/Filters/V15Test.php | 742 ------- .../unit/Utopia/Response/Filters/V15Test.php | 1920 ----------------- tests/unit/Utopia/ResponseTest.php | 15 +- 3 files changed, 8 insertions(+), 2669 deletions(-) delete mode 100644 tests/unit/Utopia/Request/Filters/V15Test.php delete mode 100644 tests/unit/Utopia/Response/Filters/V15Test.php diff --git a/tests/unit/Utopia/Request/Filters/V15Test.php b/tests/unit/Utopia/Request/Filters/V15Test.php deleted file mode 100644 index 70bf71d4cb..0000000000 --- a/tests/unit/Utopia/Request/Filters/V15Test.php +++ /dev/null @@ -1,742 +0,0 @@ -filter = new V15(); - } - - public function tearDown(): void - { - } - - public function limitOffsetProvider(): array - { - return [ - 'basic test' => [ - ['limit' => '12', 'offset' => '0'], - ['queries' => ['limit(12)', 'offset(0)']] - ], - ]; - } - - /** - * @dataProvider limitOffsetProvider - */ - public function testListAccountLogs(array $content, array $expected): void - { - $model = 'account.listLogs'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function testGetAccountInitials(): void - { - $model = 'account.initials'; - - $content = ['color' => 'deadbeef']; - $expected = []; - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function limitOffsetCursorOrderTypeProvider(): array - { - return [ - 'basic test' => [ - [ - 'limit' => '12', - 'offset' => '0', - 'cursor' => 'abcd', - 'cursorDirection' => 'before', - 'orderType' => 'asc', - ], - [ - 'queries' => [ - 'limit(12)', - 'offset(0)', - 'cursorBefore("abcd")', - 'orderAsc("")' - ] - ], - ], - ]; - } - - public function cursorProvider(): array - { - return [ - 'cursorDirection after' => [ - [ - 'cursor' => 'abcd', - 'cursorDirection' => 'after', - ], - [ - 'queries' => [ - 'cursorAfter("abcd")', - ] - ], - ], - 'cursorDirection invalid' => [ - [ - 'cursor' => 'abcd', - 'cursorDirection' => 'invalid', - ], - [ - 'queries' => [ - 'cursorAfter("abcd")', - ] - ], - ], - ]; - } - - public function orderTypeProvider(): array - { - return [ - 'orderType desc' => [ - [ - 'orderType' => 'DESC', - ], - [ - 'queries' => [ - 'orderDesc("")', - ] - ], - ], - 'orderType invalid' => [ - [ - 'orderType' => 'invalid', - ], - [ - 'queries' => [ - 'orderAsc("")', - ] - ], - ], - ]; - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListDatabases(array $content, array $expected): void - { - $model = 'databases.list'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetProvider - */ - public function testListDatabaseLogs(array $content, array $expected): void - { - $model = 'databases.listLogs'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function collectionPermissionProvider(): array - { - return [ - 'permission collection' => [ - ['permission' => 'collection'], - ['documentSecurity' => false], - ], - 'permission document' => [ - ['permission' => 'document'], - ['documentSecurity' => true], - ], - 'permission empty' => [ - [], - [], - ], - 'permission invalid' => [ - ['permission' => 'invalid'], - ['documentSecurity' => false], - ], - ]; - } - - public function readWriteProvider(): array - { - return [ - 'read all types' => [ - [ - 'read' => [ - 'role:all', - 'role:guest', - 'role:member', - 'user:a', - 'team:b', - 'team:c/member', - 'member:z', - ], - ], - [ - 'permissions' => [ - 'read("any")', - 'read("guests")', - 'read("users")', - 'read("user:a")', - 'read("team:b")', - 'read("team:c/member")', - 'read("member:z")', - ], - ], - ], - 'read invalid' => [ - ['read' => ['invalid', 'invalid:a']], - ['permissions' => ['read("invalid:a")']], - ], - 'write all types' => [ - [ - 'write' => [ - 'role:all', - 'role:guest', - 'role:member', - 'user:a', - 'team:b', - 'team:c/member', - 'member:z', - ], - ], - [ - 'permissions' => [ - 'write("users")', - 'write("users")', - 'write("user:a")', - 'write("team:b")', - 'write("team:c/member")', - 'write("member:z")', - ], - ], - ], - 'write invalid' => [ - ['write' => ['invalid', 'invalid:a']], - ['permissions' => ['write("invalid:a")']], - ] - ]; - } - - /** - * @dataProvider collectionPermissionProvider - * @dataProvider readWriteProvider - */ - public function testCreateCollection(array $content, array $expected): void - { - $model = 'databases.createCollection'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListCollections(array $content, array $expected): void - { - $model = 'databases.listCollections'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetProvider - */ - public function testListCollectionLogs(array $content, array $expected): void - { - $model = 'databases.listCollectionLogs'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider collectionPermissionProvider - * @dataProvider readWriteProvider - */ - public function testUpdateCollection(array $content, array $expected): void - { - $model = 'databases.updateCollection'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider readWriteProvider - */ - public function testCreateDocument(array $content, array $expected): void - { - $model = 'databases.createDocument'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function ordersProvider(): array - { - return [ - 'basic test' => [ - [ - 'orderAttributes' => ['lastName', 'firstName'], - 'orderTypes' => ['DESC', 'ASC'], - ], - [ - 'queries' => [ - 'orderDesc("lastName")', - 'orderAsc("firstName")', - ] - ], - ], - 'orderType only' => [ - [ - 'orderTypes' => ['DESC'], - ], - [ - 'queries' => [ - 'orderDesc("")', - ] - ], - ], - 'orderType invalid' => [ - [ - 'orderAttributes' => ['lastName'], - 'orderTypes' => ['invalid'], - ], - [ - 'queries' => [ - 'orderAsc("lastName")', - ] - ], - ], - ]; - } - - public function filtersProvider(): array - { - return [ - 'all filters' => [ - [ - 'queries' => [ - 'lastName.equal("Smith", "Jackson")', - 'firstName.notEqual("John")', - 'age.lesser(50)', - 'age.lesserEqual(51)', - 'age.greater(20)', - 'age.greaterEqual(21)', - 'address.search("pla")', - ], - ], - [ - 'queries' => [ - 'equal("lastName", ["Smith", "Jackson"])', - 'notEqual("firstName", ["John"])', - 'lessThan("age", [50])', - 'lessThanEqual("age", [51])', - 'greaterThan("age", [20])', - 'greaterThanEqual("age", [21])', - 'search("address", ["pla"])', - ] - ], - ], - ]; - } - - /** - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider ordersProvider - * @dataProvider filtersProvider - */ - public function testListDocuments(array $content, array $expected): void - { - $model = 'databases.listDocuments'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetProvider - */ - public function testListDocumentLogs(array $content, array $expected): void - { - $model = 'databases.listDocumentLogs'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider readWriteProvider - */ - public function testUpdateDocument(array $content, array $expected): void - { - $model = 'databases.updateDocument'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function executeProvider(): array - { - return [ - 'all roles' => [ - [ - 'execute' => [ - 'role:all', - 'role:guest', - 'role:member', - 'user:a', - 'team:b', - 'team:c/member', - 'member:z', - ], - ], - [ - 'execute' => [ - 'users', - 'users', - 'user:a', - 'team:b', - 'team:c/member', - 'member:z', - ] - ], - ], - ]; - } - - /** - * @dataProvider executeProvider - */ - public function testCreateFunction(array $content, array $expected): void - { - $model = 'functions.create'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListFunctions(array $content, array $expected): void - { - $model = 'functions.list'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider executeProvider - */ - public function testUpdateFunction(array $content, array $expected): void - { - $model = 'functions.update'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListDeployments(array $content, array $expected): void - { - $model = 'functions.listDeployments'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - */ - public function testListExecutions(array $content, array $expected): void - { - $model = 'functions.listExecutions'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListProjects(array $content, array $expected): void - { - $model = 'projects.list'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function expireProvider(): array - { - return [ - 'empty' => [ - [], - [], - ], - 'zero' => [ - ['expire' => '0'], - ['expire' => null], - ], - 'value' => [ - ['expire' => '1602743880'], - ['expire' => Model::TYPE_DATETIME_EXAMPLE], - ], - ]; - } - - /** - * @dataProvider expireProvider - */ - public function testCreateKey(array $content, array $expected) - { - $model = 'projects.createKey'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider expireProvider - */ - public function testUpdateKey(array $content, array $expected) - { - $model = 'projects.updateKey'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function bucketPermissionProvider(): array - { - return [ - 'permission bucket' => [ - ['permission' => 'bucket'], - ['fileSecurity' => false], - ], - 'permission document' => [ - ['permission' => 'file'], - ['fileSecurity' => true], - ], - 'permission empty' => [ - [], - [], - ], - 'permission invalid' => [ - ['permission' => 'invalid'], - ['fileSecurity' => false], - ], - ]; - } - - /** - * @dataProvider bucketPermissionProvider - * @dataProvider readWriteProvider - */ - public function testCreateBucket(array $content, array $expected) - { - $model = 'storage.createBucket'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListBuckets(array $content, array $expected): void - { - $model = 'storage.listBuckets'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider bucketPermissionProvider - * @dataProvider readWriteProvider - */ - public function testUpdateBucket(array $content, array $expected) - { - $model = 'storage.updateBucket'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider readWriteProvider - */ - public function testCreateFile(array $content, array $expected) - { - $model = 'storage.createFile'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListFiles(array $content, array $expected): void - { - $model = 'storage.listFiles'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider readWriteProvider - */ - public function testUpdateFile(array $content, array $expected) - { - $model = 'storage.updateFile'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListTeams(array $content, array $expected): void - { - $model = 'teams.list'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListTeamMemberships(array $content, array $expected): void - { - $model = 'teams.listMemberships'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetProvider - */ - public function testListTeamLogs(array $content, array $expected): void - { - $model = 'teams.listLogs'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetCursorOrderTypeProvider - * @dataProvider limitOffsetProvider - * @dataProvider cursorProvider - * @dataProvider orderTypeProvider - */ - public function testListUsers(array $content, array $expected): void - { - $model = 'users.list'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider limitOffsetProvider - */ - public function testListUserLogs(array $content, array $expected): void - { - $model = 'users.listLogs'; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } -} diff --git a/tests/unit/Utopia/Response/Filters/V15Test.php b/tests/unit/Utopia/Response/Filters/V15Test.php deleted file mode 100644 index d65ffebc63..0000000000 --- a/tests/unit/Utopia/Response/Filters/V15Test.php +++ /dev/null @@ -1,1920 +0,0 @@ -filter = new V15(); - } - - public function tearDown(): void - { - } - - public function createdAtUpdatedAtProvider(): array - { - return [ - 'basic datetimes' => [ - [ - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - ], - [ - '$createdAt' => 1592981250, - '$updatedAt' => 1592981250, - ], - ], - 'null datetime' => [ - [ - '$createdAt' => null, - '$updatedAt' => null, - ], - [ - '$createdAt' => 0, - '$updatedAt' => 0, - ], - ], - 'empty datetime' => [ - [ - '$createdAt' => '', - '$updatedAt' => '', - ], - [ - '$createdAt' => 0, - '$updatedAt' => 0, - ], - ], - ]; - } - - public function permissionsProvider(): array - { - return [ - 'basic permissions' => [ - [ - '$permissions' => [ - Permission::read(Role::any()), - Permission::write(Role::user('608f9da25e7e1')), - ], - ], - [ - '$read' => ['role:all'], - '$write' => ['user:608f9da25e7e1'], - ], - ], - 'all roles' => [ - [ - '$permissions' => [ - Permission::read(Role::any()), - Permission::read(Role::guests()), - Permission::read(Role::users()), - Permission::read(Role::user('asdf')), - Permission::read(Role::team('qwer')), - Permission::read(Role::team('qwer', 'uiop')), - Permission::read(Role::member('zxcv')), - ], - ], - [ - '$read' => [ - 'role:all', - 'role:guest', - 'role:member', - 'user:asdf', - 'team:qwer', - 'team:qwer/uiop', - 'member:zxcv', - ], - '$write' => [], - ], - ], - 'create conversion' => [ - [ - '$permissions' => [Permission::create(Role::user('a'))], - ], - [ - '$read' => [], - '$write' => ['user:a'], - ], - ], - 'update conversion' => [ - [ - '$permissions' => [Permission::update(Role::user('a'))], - ], - [ - '$read' => [], - '$write' => ['user:a'], - ], - ], - 'delete conversion' => [ - [ - '$permissions' => [Permission::delete(Role::user('a'))], - ], - [ - '$read' => [], - '$write' => ['user:a'], - ], - ], - 'write conversion' => [ - [ - '$permissions' => [Permission::write(Role::user('a'))], - ], - [ - '$read' => [], - '$write' => ['user:a'], - ], - ], - ]; - } - - public function testAccount(): void - { - $model = Response::MODEL_ACCOUNT; - - $content = [ - '$id' => '6264711f995c5b012b48', - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - 'name' => 'John Doe', - 'registration' => '2020-06-24T06:47:30.000Z', - 'status' => true, - 'passwordUpdate' => '2020-06-24T06:47:30.000Z', - 'email' => 'john@appwrite.io', - 'phone' => '+4930901820', - 'emailVerification' => true, - 'phoneVerification' => true, - 'prefs' => new \stdClass(), - ]; - - $expected = [ - '$id' => '6264711f995c5b012b48', - '$createdAt' => 1592981250, - '$updatedAt' => 1592981250, - 'name' => 'John Doe', - 'registration' => 1592981250, - 'status' => true, - 'passwordUpdate' => 1592981250, - 'email' => 'john@appwrite.io', - 'phone' => '+4930901820', - 'emailVerification' => true, - 'phoneVerification' => true, - 'prefs' => new \stdClass(), - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function bucketProvider(): array - { - return [ - 'basic bucket' => [ - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - 'fileSecurity' => true, - '$permissions' => [ - Permission::read(Role::any()), - Permission::write(Role::user('608f9da25e7e1')), - ], - 'name' => 'Documents', - 'enabled' => false, - 'maximumFileSize' => 100, - 'allowedFileExtensions' => [ - 'jpg', - 'png' - ], - 'encryption' => false, - 'antivirus' => false, - ], - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => 1592981250, - '$updatedAt' => 1592981250, - '$read' => ['role:all'], - '$write' => ['user:608f9da25e7e1'], - 'permission' => 'file', - 'name' => 'Documents', - 'enabled' => false, - 'maximumFileSize' => 100, - 'allowedFileExtensions' => [ - 'jpg', - 'png' - ], - 'encryption' => false, - 'antivirus' => false, - ], - ], - 'false fileSecurity' => [ - ['fileSecurity' => false], - ['permission' => 'bucket'], - ], - ]; - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider - * @dataProvider bucketProvider - */ - public function testBucket(array $content, array $expected): void - { - $model = Response::MODEL_BUCKET; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider - * @dataProvider bucketProvider - */ - public function testBucketList(array $content, array $expected): void - { - $model = Response::MODEL_BUCKET_LIST; - - $content = [ - 'buckets' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'buckets' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function buildProvider(): array - { - return [ - 'build start and end time' => [ - [ - 'startTime' => '2020-06-24T06:47:30.000Z', - 'endTime' => '2020-06-24T06:47:30.000Z', - ], - [ - 'startTime' => 1592981250, - 'endTime' => 1592981250, - ] - ] - ]; - } - - /** - * @dataProvider buildProvider - */ - public function testBuild(): void - { - $model = Response::MODEL_BUILD; - - $content = [ - 'startTime' => '2020-06-24T06:47:30.000Z', - 'endTime' => '2020-06-24T06:47:30.000Z', - ]; - - $expected = [ - 'startTime' => 1592981250, - 'endTime' => 1592981250, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider buildProvider - */ - public function testBuildList(array $content, array $expected): void - { - $model = Response::MODEL_BUILD_LIST; - - $content = [ - 'builds' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'builds' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function collectionProvider(): array - { - return [ - 'basic collection' => [ - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - '$permissions' => [ - Permission::read(Role::any()), - Permission::write(Role::user('608f9da25e7e1')), - ], - 'documentSecurity' => true, - 'databaseId' => '5e5ea5c16897e', - 'name' => 'My Collection', - 'enabled' => false, - 'attributes' => [ - 'key' => 'isEnabled', - 'type' => 'boolean', - 'status' => 'available', - 'required' => true, - 'array' => false, - 'default' => false - ], - 'indexes' => [ - 'key' => 'index1', - 'type' => 'primary', - 'status' => 'available', - 'attributes' => [], - 'orders' => [] - ], - ], - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => 1592981250, - '$updatedAt' => 1592981250, - '$read' => [ - 'role:all' - ], - '$write' => [ - 'user:608f9da25e7e1' - ], - 'databaseId' => '5e5ea5c16897e', - 'name' => 'My Collection', - 'enabled' => false, - 'permission' => 'document', - 'attributes' => [ - 'key' => 'isEnabled', - 'type' => 'boolean', - 'status' => 'available', - 'required' => true, - 'array' => false, - 'default' => false - ], - 'indexes' => [ - 'key' => 'index1', - 'type' => 'primary', - 'status' => 'available', - 'attributes' => [], - 'orders' => [] - ], - ], - ], - 'false documentSecurity' => [ - ['documentSecurity' => false], - ['permission' => 'collection'], - ], - - ]; - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider - * @dataProvider collectionProvider - */ - public function testCollection(array $content, array $expected): void - { - $model = Response::MODEL_COLLECTION; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider - * @dataProvider collectionProvider - */ - public function testCollectionList(array $content, array $expected): void - { - $model = Response::MODEL_COLLECTION_LIST; - - $content = [ - 'collections' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'collections' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testDatabase(array $content, array $expected): void - { - $model = Response::MODEL_DATABASE; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testDatabaseList(array $content, array $expected): void - { - $model = Response::MODEL_DATABASE_LIST; - - $content = [ - 'databases' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'databases' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testDeployment(array $content, array $expected): void - { - $model = Response::MODEL_DEPLOYMENT; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testDeploymentList(array $content, array $expected): void - { - $model = Response::MODEL_DEPLOYMENT_LIST; - - $content = [ - 'deployments' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'deployments' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function documentProvider(): array - { - return [ - 'basic document' => [ - [ - '$id' => '5e5ea5c16897e', - '$collectionId' => '5e5ea5c15117e', - '$databaseId' => '5e5ea5c15117e', - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - '$permissions' => [Permission::read(Role::any())] - ], - [ - '$id' => '5e5ea5c16897e', - '$collection' => '5e5ea5c15117e', - '$createdAt' => 1592981250, - '$updatedAt' => 1592981250, - '$read' => ['role:all'], - '$write' => [], - ], - ], - ]; - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider - * @dataProvider documentProvider - */ - public function testDocument(array $content, array $expected): void - { - $model = Response::MODEL_DOCUMENT; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider - */ - public function testDocumentList(array $content, array $expected): void - { - $model = Response::MODEL_DOCUMENT_LIST; - - $content = [ - 'documents' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'documents' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testDomain(array $content, array $expected): void - { - $model = Response::MODEL_DOMAIN; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testDomainList(array $content, array $expected): void - { - $model = Response::MODEL_DOMAIN_LIST; - - $content = [ - 'domains' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'domains' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function executionProvider(): array - { - return [ - 'basic execution' => [ - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - '$permissions' => [ - "any" - ], - 'functionId' => '5e5ea6g16897e', - 'trigger' => 'http', - 'status' => 'processing', - 'statusCode' => 0, - 'response' => '', - 'stdout' => '', - 'stderr' => '', - 'duration' => 0.4 - ], - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => 1592981250, - '$updatedAt' => 1592981250, - '$read' => [ - "role:all" - ], - 'functionId' => '5e5ea6g16897e', - 'trigger' => 'http', - 'status' => 'processing', - 'statusCode' => 0, - 'response' => '', - 'stderr' => '', - 'time' => 0.4 - ], - ], - ]; - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider executionProvider - */ - public function testExecution(array $content, array $expected): void - { - $model = Response::MODEL_EXECUTION; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider executionProvider - */ - public function testExecutionList(array $content, array $expected): void - { - $model = Response::MODEL_EXECUTION_LIST; - - $content = [ - 'executions' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'executions' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider - */ - public function testFile(array $content, array $expected): void - { - $model = Response::MODEL_FILE; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider - */ - public function testFileList(array $content, array $expected): void - { - $model = Response::MODEL_FILE_LIST; - - $content = [ - 'files' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'files' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function functionProvider(): array - { - return [ - 'basic function' => [ - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - 'execute' => [ - Role::users()->toString(), - ], - 'name' => 'My Function', - 'enabled' => true, - 'runtime' => 'python-3.8', - 'deployment' => '5e5ea5c16897e', - 'vars' => [ - [ - '$id' => '631bd31717e034f14aa8', - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - 'key' => 'key', - 'value' => 'value', - 'functionId' => '5e5ea5c16897e', - ] - ], - 'events' => [ - 'account.create' - ], - 'schedule' => '5 4 * * *', - 'scheduleNext' => '2020-06-24T06:48:12.000Z', - 'schedulePrevious' => '2020-06-24T06:47:17.000Z', - 'timeout' => 1592981237 - ], - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => 1592981250, - '$updatedAt' => 1592981250, - 'execute' => [ - 'role:member' - ], - 'name' => 'My Function', - 'status' => 'enabled', - 'runtime' => 'python-3.8', - 'deployment' => '5e5ea5c16897e', - 'vars' => [ - 'key' => 'value' - ], - 'events' => [ - 'account.create' - ], - 'schedule' => '5 4 * * *', - 'scheduleNext' => 1592981292, - 'schedulePrevious' => 1592981237, - 'timeout' => 1592981237 - ], - ], - 'enabled false' => [ - ['enabled' => false], - ['status' => 'disabled'], - ], - ]; - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider functionProvider - */ - public function testFunc(array $content, array $expected): void - { - $model = Response::MODEL_FUNCTION; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider functionProvider - */ - public function testFuncList(array $content, array $expected): void - { - $model = Response::MODEL_FUNCTION_LIST; - - $content = [ - 'functions' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'functions' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function keyProvider(): array - { - return [ - 'basic key' => [ - ['expire' => '2020-06-24T06:47:30.000Z'], - ['expire' => 1592981250], - ], - ]; - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider keyProvider - */ - public function testKey(array $content, array $expected): void - { - $model = Response::MODEL_KEY; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider keyProvider - */ - public function testKeyList(array $content, array $expected): void - { - $model = Response::MODEL_KEY_LIST; - - $content = [ - 'keys' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'keys' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function logProvider(): array - { - return [ - 'basic log' => [ - [ - 'event' => 'account.sessions.create', - 'userId' => '610fc2f985ee0', - 'userEmail' => 'john@appwrite.io', - 'userName' => 'John Doe', - 'mode' => 'admin', - 'ip' => '127.0.0.1', - 'time' => '2020-06-24T06:47:30.000Z', - 'osCode' => 'Mac', - 'osName' => 'Mac', - 'osVersion' => 'Mac', - 'clientType' => 'browser', - 'clientCode' => 'CM', - 'clientName' => 'Chrome Mobile iOS', - 'clientVersion' => '84.0', - 'clientEngine' => 'WebKit', - 'clientEngineVersion' => '605.1.15', - 'deviceName' => 'smartphone', - 'deviceBrand' => 'Google', - 'deviceModel' => 'Nexus 5', - 'countryCode' => 'US', - 'countryName' => 'United States' - ], - [ - 'event' => 'account.sessions.create', - 'userId' => '610fc2f985ee0', - 'userEmail' => 'john@appwrite.io', - 'userName' => 'John Doe', - 'mode' => 'admin', - 'ip' => '127.0.0.1', - 'time' => 1592981250, - 'osCode' => 'Mac', - 'osName' => 'Mac', - 'osVersion' => 'Mac', - 'clientType' => 'browser', - 'clientCode' => 'CM', - 'clientName' => 'Chrome Mobile iOS', - 'clientVersion' => '84.0', - 'clientEngine' => 'WebKit', - 'clientEngineVersion' => '605.1.15', - 'deviceName' => 'smartphone', - 'deviceBrand' => 'Google', - 'deviceModel' => 'Nexus 5', - 'countryCode' => 'US', - 'countryName' => 'United States' - ] - ], - ]; - } - - /** - * @dataProvider logProvider - */ - public function testLog(array $content, array $expected): void - { - $model = Response::MODEL_LOG; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider logProvider - */ - public function testLogList(array $content, array $expected): void - { - $model = Response::MODEL_LOG_LIST; - - $content = [ - 'logs' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'logs' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function membershipProvider(): array - { - return [ - 'basic membership' => [ - [ - 'invited' => '2020-06-24T06:47:30.000Z', - 'joined' => '2020-06-24T06:47:30.000Z', - ], - [ - 'invited' => 1592981250, - 'joined' => 1592981250, - ], - ], - ]; - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider membershipProvider - */ - public function testMembership(array $content, array $expected): void - { - $model = Response::MODEL_MEMBERSHIP; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider membershipProvider - */ - public function testMembershipList(array $content, array $expected): void - { - $model = Response::MODEL_MEMBERSHIP_LIST; - - $content = [ - 'memberships' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'memberships' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function metricProvider(): array - { - return [ - 'basic metric' => [ - [ - 'date' => '2020-06-24T06:47:30.000Z', - ], - [ - 'date' => 1592981250, - ], - ], - ]; - } - - /** - * @dataProvider metricProvider - */ - public function testMetric(array $content, array $expected): void - { - $model = Response::MODEL_METRIC; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testPlatform(array $content, array $expected): void - { - $model = Response::MODEL_PLATFORM; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testPlatformList(array $content, array $expected): void - { - $model = Response::MODEL_PLATFORM_LIST; - - $content = [ - 'platforms' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'platforms' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testProject(array $content, array $expected): void - { - $model = Response::MODEL_PROJECT; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testProjectList(array $content, array $expected): void - { - $model = Response::MODEL_PROJECT_LIST; - - $content = [ - 'projects' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'projects' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function sessionProvider(): array - { - return [ - 'basic session' => [ - [ - '$createdAt' => '2020-06-24T06:47:30.000Z', - 'expire' => '2020-06-24T06:47:30.000Z', - 'providerAccessTokenExpiry' => '2020-06-24T06:47:30.000Z', - ], - [ - '$createdAt' => 1592981250, - 'expire' => 1592981250, - 'providerAccessTokenExpiry' => 1592981250, - ], - ], - 'empty values' => [ - [ - 'providerAccessTokenExpiry' => '', - ], - [ - 'providerAccessTokenExpiry' => 0, - ], - ], - ]; - } - - /** - * @dataProvider sessionProvider - */ - public function testSession(array $content, array $expected): void - { - $model = Response::MODEL_SESSION; - - $result = $this->filter->parse($content, $model); - - $this->assertSame($expected, $result); - } - - /** - * @dataProvider sessionProvider - */ - public function testSessionList(array $content, array $expected): void - { - $model = Response::MODEL_SESSION_LIST; - - $content = [ - 'sessions' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'sessions' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testTeam(array $content, array $expected): void - { - $model = Response::MODEL_TEAM; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testTeamList(array $content, array $expected): void - { - $model = Response::MODEL_TEAM_LIST; - - $content = [ - 'teams' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'teams' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function tokenProvider(): array - { - return [ - 'basic token' => [ - [ - '$createdAt' => '2020-06-24T06:47:30.000Z', - 'expire' => '2020-06-24T06:47:30.000Z', - ], - [ - '$createdAt' => 1592981250, - 'expire' => 1592981250, - ], - ], - ]; - } - - /** - * @dataProvider tokenProvider - */ - public function testToken(array $content, array $expected): void - { - $model = Response::MODEL_TOKEN; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function usageDatabasesProvider(): array - { - return [ - 'basic usage databases' => [ - [ - 'databasesCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'databasesCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'databasesRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'databasesUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'databasesDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - ], - [ - 'databasesCount' => [ - ['date' => 1592981250], - ], - 'documentsCount' => [ - ['date' => 1592981250], - ], - 'collectionsCount' => [ - ['date' => 1592981250], - ], - 'databasesCreate' => [ - ['date' => 1592981250], - ], - 'databasesRead' => [ - ['date' => 1592981250], - ], - 'databasesUpdate' => [ - ['date' => 1592981250], - ], - 'databasesDelete' => [ - ['date' => 1592981250], - ], - 'documentsCreate' => [ - ['date' => 1592981250], - ], - 'documentsRead' => [ - ['date' => 1592981250], - ], - 'documentsUpdate' => [ - ['date' => 1592981250], - ], - 'documentsDelete' => [ - ['date' => 1592981250], - ], - 'collectionsCreate' => [ - ['date' => 1592981250], - ], - 'collectionsRead' => [ - ['date' => 1592981250], - ], - 'collectionsUpdate' => [ - ['date' => 1592981250], - ], - 'collectionsDelete' => [ - ['date' => 1592981250], - ], - ], - ], - ]; - } - - /** - * @dataProvider usageDatabasesProvider - */ - public function testUsageDatabases(array $content, array $expected): void - { - $model = Response::MODEL_USAGE_DATABASES; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function usageDatabaseProvider(): array - { - return [ - 'basic usage database' => [ - [ - 'documentsCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'collectionsDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - ], - [ - 'documentsCount' => [ - ['date' => 1592981250], - ], - 'collectionsCount' => [ - ['date' => 1592981250], - ], - 'documentsCreate' => [ - ['date' => 1592981250], - ], - 'documentsRead' => [ - ['date' => 1592981250], - ], - 'documentsUpdate' => [ - ['date' => 1592981250], - ], - 'documentsDelete' => [ - ['date' => 1592981250], - ], - 'collectionsCreate' => [ - ['date' => 1592981250], - ], - 'collectionsRead' => [ - ['date' => 1592981250], - ], - 'collectionsUpdate' => [ - ['date' => 1592981250], - ], - 'collectionsDelete' => [ - ['date' => 1592981250], - ], - ], - ], - ]; - } - - /** - * @dataProvider usageDatabaseProvider - */ - public function testUsageDatabase(array $content, array $expected): void - { - $model = Response::MODEL_USAGE_DATABASE; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function usageCollectionProvider(): array - { - return [ - 'basic usage collection' => [ - [ - 'documentsCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documentsDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - ], - [ - 'documentsCount' => [ - ['date' => 1592981250], - ], - 'documentsCreate' => [ - ['date' => 1592981250], - ], - 'documentsRead' => [ - ['date' => 1592981250], - ], - 'documentsUpdate' => [ - ['date' => 1592981250], - ], - 'documentsDelete' => [ - ['date' => 1592981250], - ], - ], - ], - ]; - } - - /** - * @dataProvider usageCollectionProvider - */ - public function testUsageCollection(array $content, array $expected): void - { - $model = Response::MODEL_USAGE_COLLECTION; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function usageUsersProvider(): array - { - return [ - 'basic usage users' => [ - [ - 'usersCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'usersCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'usersRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'usersUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'usersDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'sessionsCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'sessionsProviderCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'sessionsDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - ], - [ - 'usersCount' => [ - ['date' => 1592981250], - ], - 'usersCreate' => [ - ['date' => 1592981250], - ], - 'usersRead' => [ - ['date' => 1592981250], - ], - 'usersUpdate' => [ - ['date' => 1592981250], - ], - 'usersDelete' => [ - ['date' => 1592981250], - ], - 'sessionsCreate' => [ - ['date' => 1592981250], - ], - 'sessionsProviderCreate' => [ - ['date' => 1592981250], - ], - 'sessionsDelete' => [ - ['date' => 1592981250], - ], - ], - ], - ]; - } - - /** - * @dataProvider usageUsersProvider - */ - public function testUsageUsers(array $content, array $expected): void - { - $model = Response::MODEL_USAGE_USERS; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function usageBucketsProvider(): array - { - return [ - 'basic usage buckets' => [ - [ - 'filesCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesStorage' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - ], - [ - 'filesCount' => [ - ['date' => 1592981250], - ], - 'filesStorage' => [ - ['date' => 1592981250], - ], - 'filesCreate' => [ - ['date' => 1592981250], - ], - 'filesRead' => [ - ['date' => 1592981250], - ], - 'filesUpdate' => [ - ['date' => 1592981250], - ], - 'filesDelete' => [ - ['date' => 1592981250], - ], - ], - ], - ]; - } - - /** - * @dataProvider usageBucketsProvider - */ - public function testUsageBuckets(array $content, array $expected): void - { - $model = Response::MODEL_USAGE_BUCKETS; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function usageFunctionsProvider(): array - { - return [ - 'basic usage functions' => [ - [ - 'executionsTotal' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'executionsFailure' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'executionsSuccess' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'executionsTime' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'buildsTotal' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'buildsFailure' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'buildsSuccess' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'buildsTime' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - ], - [ - 'functionsExecutions' => [ - ['date' => 1592981250], - ], - 'functionsFailures' => [ - ['date' => 1592981250], - ], - 'functionsCompute' => [ - ['date' => 1592981250], - ], - ], - ], - ]; - } - - /** - * @dataProvider usageFunctionsProvider - */ - public function testUsageFunctions(array $content, array $expected): void - { - $model = Response::MODEL_USAGE_FUNCTIONS; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function usageProjectProvider(): array - { - return [ - 'basic usage project' => [ - [ - 'collections' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'documents' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'executions' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'network' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'requests' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'storage' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'users' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - ], - [ - 'collections' => [ - ['date' => 1592981250], - ], - 'documents' => [ - ['date' => 1592981250], - ], - 'functions' => [ - ['date' => 1592981250], - ], - 'network' => [ - ['date' => 1592981250], - ], - 'requests' => [ - ['date' => 1592981250], - ], - 'storage' => [ - ['date' => 1592981250], - ], - 'users' => [ - ['date' => 1592981250], - ], - ], - ], - ]; - } - - /** - * @dataProvider usageProjectProvider - */ - public function testUsageProject(array $content, array $expected): void - { - $model = Response::MODEL_USAGE_PROJECT; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function usageStorageProvider(): array - { - return [ - 'basic usage storage' => [ - [ - 'bucketsCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'bucketsCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'bucketsDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'bucketsRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'bucketsUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesCount' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesCreate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesDelete' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesRead' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'storage' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - 'filesUpdate' => [ - ['date' => '2020-06-24T06:47:30.000Z'], - ], - ], - [ - 'bucketsCount' => [ - ['date' => 1592981250], - ], - 'bucketsCreate' => [ - ['date' => 1592981250], - ], - 'bucketsDelete' => [ - ['date' => 1592981250], - ], - 'bucketsRead' => [ - ['date' => 1592981250], - ], - 'bucketsUpdate' => [ - ['date' => 1592981250], - ], - 'filesCount' => [ - ['date' => 1592981250], - ], - 'filesCreate' => [ - ['date' => 1592981250], - ], - 'filesDelete' => [ - ['date' => 1592981250], - ], - 'filesRead' => [ - ['date' => 1592981250], - ], - 'filesStorage' => [ - ['date' => 1592981250], - ], - 'filesUpdate' => [ - ['date' => 1592981250], - ], - ], - ], - ]; - } - - /** - * @dataProvider usageStorageProvider - */ - public function testUsageStorage(array $content, array $expected): void - { - $model = Response::MODEL_USAGE_STORAGE; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - public function userProvider(): array - { - return [ - 'basic user' => [ - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => '2020-06-24T06:47:30.000Z', - '$updatedAt' => '2020-06-24T06:47:30.000Z', - 'name' => 'John Doe', - 'password' => '$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L/4LdgrVRXxE', - 'hash' => 'argon2', - 'hashOptions' => [ - 'memoryCost' => 65536, - 'timeCost' => 4, - 'threads' => 3, - ], - 'registration' => '2020-06-24T06:47:30.000Z', - 'status' => true, - 'passwordUpdate' => '2020-06-24T06:47:30.000Z', - 'email' => 'john@appwrite.io', - 'phone' => '+4930901820', - 'emailVerification' => true, - 'phoneVerification' => true, - 'prefs' => new \stdClass(), - ], - [ - '$id' => '5e5ea5c16897e', - '$createdAt' => 1592981250, - '$updatedAt' => 1592981250, - 'name' => 'John Doe', - 'registration' => 1592981250, - 'status' => true, - 'passwordUpdate' => 1592981250, - 'email' => 'john@appwrite.io', - 'phone' => '+4930901820', - 'emailVerification' => true, - 'phoneVerification' => true, - 'prefs' => new \stdClass(), - ], - ], - ]; - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider userProvider - */ - public function testUser(array $content, array $expected): void - { - $model = Response::MODEL_USER; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - * @dataProvider userProvider - */ - public function testUserList(array $content, array $expected): void - { - $model = Response::MODEL_USER_LIST; - - $content = [ - 'users' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'users' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testWebhook(array $content, array $expected): void - { - $model = Response::MODEL_WEBHOOK; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } - - /** - * @dataProvider createdAtUpdatedAtProvider - */ - public function testWebhookList(array $content, array $expected): void - { - $model = Response::MODEL_WEBHOOK_LIST; - - $content = [ - 'webhooks' => [$content], - 'total' => 1, - ]; - - $expected = [ - 'webhooks' => [$expected], - 'total' => 1, - ]; - - $result = $this->filter->parse($content, $model); - - $this->assertEquals($expected, $result); - } -} diff --git a/tests/unit/Utopia/ResponseTest.php b/tests/unit/Utopia/ResponseTest.php index e621036506..374285fb35 100644 --- a/tests/unit/Utopia/ResponseTest.php +++ b/tests/unit/Utopia/ResponseTest.php @@ -4,6 +4,7 @@ namespace Tests\Unit\Utopia; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Filters\V11; +use Appwrite\Utopia\Response\Filters\V16; use Exception; use PHPUnit\Framework\TestCase; use Swoole\Http\Response as SwooleResponse; @@ -21,16 +22,16 @@ class ResponseTest extends TestCase $this->response->setModel(new Nested()); } - public function testSetFilter(): void + public function testSetFilters(): void { - $this->assertEquals($this->response->hasFilter(), false); - $this->assertEquals($this->response->getFilter(), null); + $this->assertEquals($this->response->hasFilters(), false); + $this->assertEquals($this->response->getFilters(), []); - $filter = new V11(); - $this->response->setFilter($filter); + $filter = new V16(); + $this->response->addFilter($filter); - $this->assertEquals($this->response->hasFilter(), true); - $this->assertEquals($this->response->getFilter(), $filter); + $this->assertEquals($this->response->hasFilters(), true); + $this->assertEquals($this->response->getFilters(), [$filter]); } public function testResponseModel(): void