From 717abccd10a334cd259e85cf0024ca2a0585c064 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Tue, 13 Sep 2022 20:43:46 +0000 Subject: [PATCH] Fix V15 response format for functions and executions --- src/Appwrite/Utopia/Response/Filters/V15.php | 25 ++++++++++- .../unit/Utopia/Response/Filters/V15Test.php | 41 ++++++++++++++++--- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/Appwrite/Utopia/Response/Filters/V15.php b/src/Appwrite/Utopia/Response/Filters/V15.php index c927dd8605..8c56e65e2a 100644 --- a/src/Appwrite/Utopia/Response/Filters/V15.php +++ b/src/Appwrite/Utopia/Response/Filters/V15.php @@ -317,8 +317,23 @@ class V15 extends Filter private function parseExecution($content) { unset($content['stdout']); - $content = $this->parsePermissions($content); - $content = $this->parseDatetimeAttributes($content, ['$createdAt', '$updatedAt', 'startTime', 'endTime']); + + if (isset($content['$permissions'])) { + $read = []; + foreach ($content['$permissions'] as $role) { + $read[] = $this->parseRole($role); + } + $content['$read'] = $read; + unset($content['$permissions']); + } + + if (isset($content['duration'])) { + $content['time'] = $content['duration']; + unset($content['duration']); + } + + $content = $this->parseDatetimeAttributes($content, ['$createdAt', '$updatedAt']); + return $content; } @@ -344,7 +359,13 @@ class V15 extends Filter $content['vars'] = $vars; } + if (isset($content['enabled'])) { + $content['status'] = $content['enabled'] ? 'enabled' : 'disabled'; + unset($content['enabled']); + } + $content = $this->parseDatetimeAttributes($content, ['$createdAt', '$updatedAt', 'scheduleNext', 'schedulePrevious']); + return $content; } diff --git a/tests/unit/Utopia/Response/Filters/V15Test.php b/tests/unit/Utopia/Response/Filters/V15Test.php index dbec42c341..8998c759b1 100644 --- a/tests/unit/Utopia/Response/Filters/V15Test.php +++ b/tests/unit/Utopia/Response/Filters/V15Test.php @@ -576,15 +576,43 @@ class V15Test extends TestCase { return [ 'basic execution' => [ - ['stdout' => ''], - [], + [ + '$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 permissionsProvider * @dataProvider executionProvider */ public function testExecution(array $content, array $expected): void @@ -598,7 +626,6 @@ class V15Test extends TestCase /** * @dataProvider createdAtUpdatedAtProvider - * @dataProvider permissionsProvider * @dataProvider executionProvider */ public function testExecutionList(array $content, array $expected): void @@ -668,7 +695,7 @@ class V15Test extends TestCase Role::users()->toString(), ], 'name' => 'My Function', - 'status' => 'enabled', + 'enabled' => true, 'runtime' => 'python-3.8', 'deployment' => '5e5ea5c16897e', 'vars' => [ @@ -712,6 +739,10 @@ class V15Test extends TestCase 'timeout' => 1592981237 ], ], + 'enabled false' => [ + ['enabled' => false], + ['status' => 'disabled'], + ], ]; }