From 37c33c3c7b2cab1700255bc97b33b18e50cebf9d Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Fri, 3 Sep 2021 13:41:42 +0200 Subject: [PATCH] fix(functions): environment variables --- app/workers/functions.php | 4 ++-- composer.json | 2 +- composer.lock | 15 ++++++++------- .../Functions/FunctionsCustomClientTest.php | 1 + .../Functions/FunctionsCustomServerTest.php | 1 + tests/resources/functions/php-fn.tar.gz | Bin 24954 -> 24711 bytes tests/resources/functions/php-fn/index.php | 1 + 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/workers/functions.php b/app/workers/functions.php index 171e7c78f..cb15412e7 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -414,8 +414,8 @@ class FunctionsV1 extends Worker $orchestration->setMemory(App::getEnv('_APP_FUNCTIONS_MEMORY', '256')); $orchestration->setSwap(App::getEnv('_APP_FUNCTIONS_MEMORY_SWAP', '256')); - foreach ($vars as &$value) { - $value = strval($value); + foreach ($vars as $key => $value) { + $vars[$key] = strval($value); } $id = $orchestration->run( diff --git a/composer.json b/composer.json index 1e424fc4a..22635d9d1 100644 --- a/composer.json +++ b/composer.json @@ -55,7 +55,7 @@ "utopia-php/image": "0.5.*", "resque/php-resque": "1.3.6", "matomo/device-detector": "4.2.3", - "utopia-php/orchestration": "0.2.0", + "utopia-php/orchestration": "0.2.1", "dragonmantank/cron-expression": "3.1.0", "influxdb/influxdb-php": "1.15.2", "phpmailer/phpmailer": "6.5.0", diff --git a/composer.lock b/composer.lock index 747f8cc80..b465c73b7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "86c1d7779c0c083c4493e154d6bb3ee0", + "content-hash": "e86dfb61222e6281eaa23561c5958534", "packages": [ { "name": "adhocore/jwt", @@ -1909,16 +1909,16 @@ }, { "name": "utopia-php/orchestration", - "version": "0.2.0", + "version": "0.2.1", "source": { "type": "git", "url": "https://github.com/utopia-php/orchestration.git", - "reference": "de10509017768cf2b62363bb39912002ab41dafb" + "reference": "55da7a331a45d5887de8122268dfccd15fee94d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/orchestration/zipball/de10509017768cf2b62363bb39912002ab41dafb", - "reference": "de10509017768cf2b62363bb39912002ab41dafb", + "url": "https://api.github.com/repos/utopia-php/orchestration/zipball/55da7a331a45d5887de8122268dfccd15fee94d1", + "reference": "55da7a331a45d5887de8122268dfccd15fee94d1", "shasum": "" }, "require": { @@ -1958,9 +1958,9 @@ ], "support": { "issues": "https://github.com/utopia-php/orchestration/issues", - "source": "https://github.com/utopia-php/orchestration/tree/0.2.0" + "source": "https://github.com/utopia-php/orchestration/tree/0.2.1" }, - "time": "2021-08-16T12:52:42+00:00" + "time": "2021-09-03T11:29:20+00:00" }, { "name": "utopia-php/preloader", @@ -4995,6 +4995,7 @@ "type": "github" } ], + "abandoned": true, "time": "2020-09-28T06:45:17+00:00" }, { diff --git a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php index 4b52aa26c..77968e503 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php @@ -209,6 +209,7 @@ class FunctionsCustomClientTest extends Scope $this->assertEquals('foobar', $output['APPWRITE_FUNCTION_DATA']); $this->assertEquals($this->getUser()['$id'], $output['APPWRITE_FUNCTION_USER_ID']); $this->assertNotEmpty($output['APPWRITE_FUNCTION_JWT']); + $this->assertEquals($projectId, $output['APPWRITE_FUNCTION_PROJECT_ID']); $executions = $this->client->call(Client::METHOD_GET, '/functions/'.$functionId.'/executions', [ 'content-type' => 'application/json', diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 58740150d..e14a35d93 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -606,6 +606,7 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals('foobar', $output['APPWRITE_FUNCTION_DATA']); $this->assertEquals('', $output['APPWRITE_FUNCTION_USER_ID']); $this->assertEmpty($output['APPWRITE_FUNCTION_JWT']); + $this->assertEquals($this->getProject()['$id'], $output['APPWRITE_FUNCTION_PROJECT_ID']); $executions = $this->client->call(Client::METHOD_GET, '/functions/'.$functionId.'/executions', array_merge([ 'content-type' => 'application/json', diff --git a/tests/resources/functions/php-fn.tar.gz b/tests/resources/functions/php-fn.tar.gz index 5e359122fa62f29d9de63305b82d9bb0b5680417..96cdc5b25a035cacf8eaf60c4132bda27384dbd6 100644 GIT binary patch literal 24711 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 bDpQ%tRHibOsZ3>h?CJjlk4HwS0B{2Ub;Z~Q diff --git a/tests/resources/functions/php-fn/index.php b/tests/resources/functions/php-fn/index.php index 449658e1e..343214b3f 100644 --- a/tests/resources/functions/php-fn/index.php +++ b/tests/resources/functions/php-fn/index.php @@ -29,6 +29,7 @@ $output = [ 'APPWRITE_FUNCTION_DATA' => $_ENV['APPWRITE_FUNCTION_DATA'], 'APPWRITE_FUNCTION_USER_ID' => $_ENV['APPWRITE_FUNCTION_USER_ID'], 'APPWRITE_FUNCTION_JWT' => $_ENV['APPWRITE_FUNCTION_JWT'], + 'APPWRITE_FUNCTION_PROJECT_ID' => $_ENV['APPWRITE_FUNCTION_PROJECT_ID'], ]; echo json_encode($output);