From f2af301f16edd6cf47d2224024dc15f42eb4c41d Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 22 Sep 2022 14:16:13 +1200 Subject: [PATCH] Update functions vars -> variables --- tests/e2e/Services/GraphQL/GraphQLBase.php | 54 +++++++++++++++++-- .../GraphQL/GraphQLFunctionsClientTest.php | 44 +++++++++++---- .../GraphQL/GraphQLFunctionsServerTest.php | 42 +++++++++++---- 3 files changed, 118 insertions(+), 22 deletions(-) diff --git a/tests/e2e/Services/GraphQL/GraphQLBase.php b/tests/e2e/Services/GraphQL/GraphQLBase.php index dc8e744b79..352be539ad 100644 --- a/tests/e2e/Services/GraphQL/GraphQLBase.php +++ b/tests/e2e/Services/GraphQL/GraphQLBase.php @@ -115,6 +115,13 @@ trait GraphQLBase public static string $GET_RUNTIMES = 'list_runtimes'; public static string $UPDATE_FUNCTION = 'update_function'; public static string $DELETE_FUNCTION = 'delete_function'; + // Variables + public static string $CREATE_VARIABLE = 'create_variable'; + public static string $GET_VARIABLES = 'list_variables'; + public static string $GET_VARIABLE = 'get_variable'; + public static string $UPDATE_VARIABLE = 'update_variable'; + public static string $DELETE_VARIABLE = 'delete_variable'; + //Deployments public static string $CREATE_DEPLOYMENT = 'create_deployment'; public static string $GET_DEPLOYMENTS = 'list_deployments'; @@ -1126,8 +1133,8 @@ trait GraphQLBase } }'; case self::$CREATE_FUNCTION: - return 'mutation createFunction($functionId: String!, $name: String!, $execute: [String!]!, $runtime: String! $vars: Json, $events: [String], $schedule: String, $timeout: Int) { - functionsCreate(functionId: $functionId, name: $name, execute: $execute, runtime: $runtime, vars: $vars, events: $events, schedule: $schedule, timeout: $timeout) { + return 'mutation createFunction($functionId: String!, $name: String!, $execute: [String!]!, $runtime: String! $events: [String], $schedule: String, $timeout: Int) { + functionsCreate(functionId: $functionId, name: $name, execute: $execute, runtime: $runtime, events: $events, schedule: $schedule, timeout: $timeout) { _id name runtime @@ -1135,8 +1142,8 @@ trait GraphQLBase } }'; case self::$UPDATE_FUNCTION: - return 'mutation updateFunction($functionId: String!, $name: String!, $execute: [String!]!, $vars: Json, $events: [String], $schedule: String, $timeout: Int) { - functionsUpdate(functionId: $functionId, name: $name, execute: $execute, vars: $vars, events: $events, schedule: $schedule, timeout: $timeout) { + return 'mutation updateFunction($functionId: String!, $name: String!, $execute: [String!]!, $events: [String], $schedule: String, $timeout: Int) { + functionsUpdate(functionId: $functionId, name: $name, execute: $execute, events: $events, schedule: $schedule, timeout: $timeout) { _id name runtime @@ -1156,6 +1163,45 @@ trait GraphQLBase return 'mutation deleteFunction($functionId: String!) { functionsDelete(functionId: $functionId) }'; + case self::$CREATE_VARIABLE: + return 'mutation createVariable($functionId: String!, $key: String!, $value: String!) { + functionsCreateVariable(functionId: $functionId, key: $key, value: $value) { + _id + key + value + } + }'; + case self::$GET_VARIABLES: + return 'query listVariables($functionId: String!) { + functionsListVariables(functionId: $functionId) { + total + variables { + _id + key + value + } + } + }'; + case self::$GET_VARIABLE: + return 'query getVariable($functionId: String!, $variableId: String!) { + functionsGetVariable(functionId: $functionId, variableId: $variableId) { + _id + key + value + } + }'; + case self::$UPDATE_VARIABLE: + return 'mutation updateVariable($functionId: String!, $variableId: String!, $key: String!, $value: String) { + functionsUpdateVariable(functionId: $functionId, variableId: $variableId, key: $key, value: $value) { + _id + key + value + } + }'; + case self::$DELETE_VARIABLE: + return 'mutation deleteVariable($functionId: String!, $variableId: String!) { + functionsDeleteVariable(functionId: $functionId, variableId: $variableId) + }'; case self::$CREATE_DEPLOYMENT: return 'mutation createDeployment($functionId: String!, $entrypoint: String!, $code: InputFile!, $activate: Boolean!) { functionsCreateDeployment(functionId: $functionId, entrypoint: $entrypoint, code: $code, activate: $activate) { diff --git a/tests/e2e/Services/GraphQL/GraphQLFunctionsClientTest.php b/tests/e2e/Services/GraphQL/GraphQLFunctionsClientTest.php index 16ea649b55..ec84d7e075 100644 --- a/tests/e2e/Services/GraphQL/GraphQLFunctionsClientTest.php +++ b/tests/e2e/Services/GraphQL/GraphQLFunctionsClientTest.php @@ -25,12 +25,8 @@ class GraphQLFunctionsClientTest extends Scope 'variables' => [ 'functionId' => ID::unique(), 'name' => 'Test Function', - 'runtime' => 'ruby-3.0', - 'vars' => [ - 'name' => 'John Doe', - 'age' => 42, - ] - 'execute' => [Role::any()], + 'runtime' => 'php-8.0', + 'execute' => [Role::any()->toString()], ] ]; @@ -40,10 +36,40 @@ class GraphQLFunctionsClientTest extends Scope 'x-appwrite-key' => $this->getProject()['apiKey'], ], $gqlPayload); + $this->assertIsArray($function['body']['data']); $this->assertArrayNotHasKey('errors', $function['body']); - return $function['body']['data']['functionsCreate']; + $function = $function['body']['data']['functionsCreate']; + $functionId = $function['_id']; + + $query = ' + mutation createVariables($functionId: String!) { + var1: functionsCreateVariable(functionId: $functionId, key: "name", value: "John Doe") { + _id + } + var2: functionsCreateVariable(functionId: $functionId, key: "age", value: "42") { + _id + } + } + '; + $gqlPayload = [ + 'query' => $query, + 'variables' => [ + 'functionId' => $functionId, + ] + ]; + + $variables = $this->client->call(Client::METHOD_POST, '/graphql', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $projectId, + 'x-appwrite-key' => $this->getProject()['apiKey'], + ], $gqlPayload); + + $this->assertIsArray($variables['body']['data']); + $this->assertArrayNotHasKey('errors', $variables['body']); + + return $function; } /** @@ -56,13 +82,13 @@ class GraphQLFunctionsClientTest extends Scope { $projectId = $this->getProject()['$id']; $query = $this->getQuery(self::$CREATE_DEPLOYMENT); - $code = realpath(__DIR__ . '/../../../resources/functions') . "/ruby/code.tar.gz"; + $code = realpath(__DIR__ . '/../../../resources/functions') . "/php/code.tar.gz"; $gqlPayload = [ 'operations' => \json_encode([ 'query' => $query, 'variables' => [ 'functionId' => $function['_id'], - 'entrypoint' => 'main.rb', + 'entrypoint' => 'index.php', 'activate' => true, 'code' => null, ] diff --git a/tests/e2e/Services/GraphQL/GraphQLFunctionsServerTest.php b/tests/e2e/Services/GraphQL/GraphQLFunctionsServerTest.php index 6e396eda3c..e7992faf71 100644 --- a/tests/e2e/Services/GraphQL/GraphQLFunctionsServerTest.php +++ b/tests/e2e/Services/GraphQL/GraphQLFunctionsServerTest.php @@ -25,12 +25,8 @@ class GraphQLFunctionsServerTest extends Scope 'variables' => [ 'functionId' => ID::unique(), 'name' => 'Test Function', - 'runtime' => 'ruby-3.0', - 'vars' => [ - 'name' => 'John Doe', - 'age' => 42, - ] - 'execute' => [Role::any()], + 'runtime' => 'php-8.0', + 'execute' => [Role::any()->toString()], ] ]; @@ -41,7 +37,35 @@ class GraphQLFunctionsServerTest extends Scope $this->assertIsArray($function['body']['data']); $this->assertArrayNotHasKey('errors', $function['body']); + $function = $function['body']['data']['functionsCreate']; + $functionId = $function['_id']; + + $query = ' + mutation createVariables($functionId: String!) { + var1: functionsCreateVariable(functionId: $functionId, key: "name", value: "John Doe") { + _id + } + var2: functionsCreateVariable(functionId: $functionId, key: "age", value: "42") { + _id + } + } + '; + $gqlPayload = [ + 'query' => $query, + 'variables' => [ + 'functionId' => $functionId, + ] + ]; + + $variables = $this->client->call(Client::METHOD_POST, '/graphql', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $projectId, + 'x-appwrite-key' => $this->getProject()['apiKey'], + ], $gqlPayload); + + $this->assertIsArray($variables['body']['data']); + $this->assertArrayNotHasKey('errors', $variables['body']); return $function; } @@ -56,13 +80,13 @@ class GraphQLFunctionsServerTest extends Scope { $projectId = $this->getProject()['$id']; $query = $this->getQuery(self::$CREATE_DEPLOYMENT); - $code = realpath(__DIR__ . '/../../../resources/functions') . "/ruby/code.tar.gz"; + $code = realpath(__DIR__ . '/../../../resources/functions') . "/php/code.tar.gz"; $gqlPayload = [ 'operations' => \json_encode([ 'query' => $query, 'variables' => [ 'functionId' => $function['_id'], - 'entrypoint' => 'main.rb', + 'entrypoint' => 'index.php', 'activate' => true, 'code' => null, ] @@ -357,7 +381,7 @@ class GraphQLFunctionsServerTest extends Scope 'variables' => [ 'functionId' => $function['_id'], 'name' => 'Test Function Updated', - 'execute' => [Role::any()], + 'execute' => [Role::any()->toString()], 'vars' => [ 'name' => 'John Doe', 'age' => 42,