From 975b444761bc9affb901ae5941f65ee6ce08303a Mon Sep 17 00:00:00 2001 From: Prateek Banga Date: Wed, 20 Sep 2023 20:51:03 +0530 Subject: [PATCH 1/2] fix test cases and bug fix in messaging worker --- app/controllers/api/account.php | 22 ++++++++++++++++++---- app/workers/messaging.php | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index cda5c030ed..8cce5a57f8 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -1330,15 +1330,22 @@ App::post('/v1/account/sessions/phone') $message = $message->setParam('{{token}}', $secret); $message = $message->render(); + $target = $dbForProject->createDocument('targets', new Document([ + 'userId' => $user->getId(), + 'userInternalId' => $user->getInternalId(), + 'providerId' => $provider->getId(), + 'providerInternalId' => $provider->getInternalId(), + 'identifier' => $phone, + ])); + $messageDoc = $dbForProject->createDocument('messages', new Document([ - 'to' => [$phone], + 'to' => [$target->getId()], 'data' => [ 'content' => $message, 'from' => $from, ], 'providerId' => $provider->getId(), 'providerInternalId' => $provider->getInternalId(), - 'deliveryTime' => Datetime::now(), ])); $messaging @@ -2952,15 +2959,22 @@ App::post('/v1/account/verification/phone') $message = $message->setParam('{{token}}', $secret); $message = $message->render(); + $target = $dbForProject->createDocument('targets', new Document([ + 'userId' => $user->getId(), + 'userInternalId' => $user->getInternalId(), + 'providerId' => $provider->getId(), + 'providerInternalId' => $provider->getInternalId(), + 'identifier' => $user->getAttribute('phone'), + ])); + $messageDoc = $dbForProject->createDocument('messages', new Document([ - 'to' => [$user->getAttribute('phone')], + 'to' => [$target->getId()], 'data' => [ 'content' => $message, 'from' => $from, ], 'providerId' => $provider->getId(), 'providerInternalId' => $provider->getInternalId(), - 'deliveryTime' => Datetime::now(), ])); $messaging diff --git a/app/workers/messaging.php b/app/workers/messaging.php index 65a519a98a..6fb1f42dc6 100644 --- a/app/workers/messaging.php +++ b/app/workers/messaging.php @@ -127,7 +127,7 @@ class MessagingV1 extends Worker } $targets = $this->dbForProject->find('targets', [Query::equal('$id', $recipientsId)]); - \array_merge($recipients, $targets); + $recipients = \array_merge($recipients, $targets); $identifiers = \array_map(function (Document $recipient) { return $recipient->getAttribute('identifier'); From 2fd7467e2ae463abdec8ec1bfe1a9b082c1a3b05 Mon Sep 17 00:00:00 2001 From: Prateek Banga Date: Wed, 20 Sep 2023 22:59:47 +0530 Subject: [PATCH 2/2] fix graphQL test --- app/config/services.php | 2 +- tests/e2e/Services/GraphQL/AccountTest.php | 22 ++++++++++++++++ tests/e2e/Services/GraphQL/Base.php | 29 ++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/config/services.php b/app/config/services.php index 6b57c01bff..cfefd60c8b 100644 --- a/app/config/services.php +++ b/app/config/services.php @@ -260,7 +260,7 @@ return [ 'sdk' => true, 'docs' => true, 'docsUrl' => 'https://appwrite.io/docs/server/messaging', - 'tests' => false, + 'tests' => true, 'optional' => true, 'icon' => '/images/services/messaging.png', ] diff --git a/tests/e2e/Services/GraphQL/AccountTest.php b/tests/e2e/Services/GraphQL/AccountTest.php index 7fd70b5015..93c6b007ee 100644 --- a/tests/e2e/Services/GraphQL/AccountTest.php +++ b/tests/e2e/Services/GraphQL/AccountTest.php @@ -123,6 +123,28 @@ class AccountTest extends Scope public function testCreatePhoneVerification(): array { $projectId = $this->getProject()['$id']; + $query = $this->getQuery(self::$CREATE_PROVIDER); + $graphQLPayload = [ + 'query' => $query, + 'variables' => [ + 'providerId' => 'unique()', + 'name' => 'Mock', + 'provider' => 'mock', + 'type' => 'sms', + 'credentials' => [ + 'username' => 'username', + 'password' => 'password', + ], + 'default' => true, + ], + ]; + + $this->client->call(Client::METHOD_POST, '/graphql', [ + 'content-type' => 'application/json', + 'x-appwrite-project' => $projectId, + 'x-appwrite-key' => $this->getProject()['apiKey'], + ], $graphQLPayload); + $query = $this->getQuery(self::$CREATE_PHONE_VERIFICATION); $graphQLPayload = [ 'query' => $query, diff --git a/tests/e2e/Services/GraphQL/Base.php b/tests/e2e/Services/GraphQL/Base.php index 3a4b88e2c2..bed34d4455 100644 --- a/tests/e2e/Services/GraphQL/Base.php +++ b/tests/e2e/Services/GraphQL/Base.php @@ -296,6 +296,8 @@ trait Base } '; + public static string $CREATE_PROVIDER = 'create_provider'; + public function getQuery(string $name): string { switch ($name) { @@ -1929,6 +1931,33 @@ trait Base } } }' . PHP_EOL . self::$FRAGMENT_ATTRIBUTES; + case self::$CREATE_PROVIDER: + return 'mutation CreateGeneralProvider( + $providerId: String!, + $provider: String!, + $name: String!, + $type: String!, + $default: Boolean, + $enabled: Boolean, + $credentials: Json! + ) { + messagingCreateGeneralProvider( + providerId: $providerId, + provider: $provider, + name: $name, + type: $type, + default: $default, + enabled: $enabled, + credentials: $credentials + ) { + _id + name + provider + type + default + enabled + } + }'; } throw new \InvalidArgumentException('Invalid query type');