1
0
Fork 0
mirror of synced 2024-06-14 00:34:51 +12:00

adds test for provider controllers

This commit is contained in:
prateek banga 2023-08-23 15:31:29 +05:30
parent dbbf4522e3
commit c225563d77
5 changed files with 224 additions and 34 deletions

View file

@ -22,6 +22,10 @@ $member = [
'execution.write',
'targets.read',
'targets.write',
'providers.write',
'providers.read',
'messages.write',
'messages.read'
];
$admins = [
@ -57,6 +61,10 @@ $admins = [
'migrations.write',
'targets.read',
'targets.write',
'providers.write',
'providers.read',
'messages.write',
'messages.read'
];
return [

View file

@ -70,7 +70,7 @@ App::get('/v1/messaging/providers/:id')
->param('id', null, new UID(), 'Provider ID.')
->inject('dbForProject')
->inject('response')
->action(function (string $id, Response $response, Database $dbForProject) {
->action(function (string $id, Database $dbForProject, Response $response) {
$provider = $dbForProject->getDocument('providers', $id);
if ($provider->isEmpty()) {
@ -86,7 +86,7 @@ App::get('/v1/messaging/providers/:id')
App::post('/v1/messaging/providers/mailgun')
->desc('Create Mailgun Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -118,7 +118,7 @@ App::post('/v1/messaging/providers/mailgun')
App::patch('/v1/messaging/providers/:id/mailgun')
->desc('Update Mailgun Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -166,14 +166,13 @@ App::patch('/v1/messaging/providers/:id/mailgun')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::post('/v1/messaging/providers/sendgrid')
->desc('Create Sendgrid Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -203,7 +202,7 @@ App::post('/v1/messaging/providers/sendgrid')
App::patch('/v1/messaging/providers/:id/sendgrid')
->desc('Update Sendgrid Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -243,7 +242,6 @@ App::patch('/v1/messaging/providers/:id/sendgrid')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
@ -253,7 +251,7 @@ App::patch('/v1/messaging/providers/:id/sendgrid')
App::post('/v1/messaging/providers/msg91')
->desc('Create Msg91 Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -285,7 +283,7 @@ App::post('/v1/messaging/providers/msg91')
App::patch('/v1/messaging/providers/:id/msg91')
->desc('Update Msg91 Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -333,14 +331,13 @@ App::patch('/v1/messaging/providers/:id/msg91')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::post('/v1/messaging/providers/telesign')
->desc('Create Telesign Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -372,7 +369,7 @@ App::post('/v1/messaging/providers/telesign')
App::patch('/v1/messaging/providers/:id/telesign')
->desc('Update Telesign Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -420,14 +417,13 @@ App::patch('/v1/messaging/providers/:id/telesign')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::post('/v1/messaging/providers/textmagic')
->desc('Create Textmagic Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -459,7 +455,7 @@ App::post('/v1/messaging/providers/textmagic')
App::patch('/v1/messaging/providers/:id/textmagic')
->desc('Update Textmagic Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -507,14 +503,13 @@ App::patch('/v1/messaging/providers/:id/textmagic')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::post('/v1/messaging/providers/twilio')
->desc('Create Twilio Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -546,7 +541,7 @@ App::post('/v1/messaging/providers/twilio')
App::patch('/v1/messaging/providers/:id/twilio')
->desc('Update Twilio Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -594,14 +589,13 @@ App::patch('/v1/messaging/providers/:id/twilio')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::post('/v1/messaging/providers/vonage')
->desc('Create Vonage Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -633,7 +627,7 @@ App::post('/v1/messaging/providers/vonage')
App::patch('/v1/messaging/providers/:id/vonage')
->desc('Update Vonage Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -681,7 +675,6 @@ App::patch('/v1/messaging/providers/:id/vonage')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
@ -691,7 +684,7 @@ App::patch('/v1/messaging/providers/:id/vonage')
App::post('/v1/messaging/providers/fcm')
->desc('Create FCM Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -721,7 +714,7 @@ App::post('/v1/messaging/providers/fcm')
App::patch('/v1/messaging/providers/:id/fcm')
->desc('Update FCM Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -759,14 +752,13 @@ App::patch('/v1/messaging/providers/:id/fcm')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::post('/v1/messaging/providers/apns')
->desc('Create APNS Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.create')
->label('audits.event', 'messages.providers.create')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -804,7 +796,7 @@ App::post('/v1/messaging/providers/apns')
App::patch('/v1/messaging/providers/:id/apns')
->desc('Update APNS Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.update')
->label('audits.event', 'messages.providers.update')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
@ -858,27 +850,25 @@ App::patch('/v1/messaging/providers/:id/apns')
$dbForProject->deleteCachedDocument('providers', $provider->getId());
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($provider, Response::MODEL_PROVIDER);
});
App::delete('/v1/messaging/providers/:id')
->desc('Delete Provider')
->groups(['api', 'messaging'])
->label('event', 'messages.providers.[id].delete')
->label('audits.event', 'messages.providers.delete')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'deleteProvider')
->label('sdk.description', '/docs/references/messaging/delete-provider.md')
->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.code', Response::STATUS_CODE_NOCONTENT)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_NONE)
->param('id', '', new UID(), 'Provider ID.')
->inject('response')
->inject('dbForProject')
->inject('events')
->action(function (string $id, Response $response, Database $dbForProject) {
->inject('response')
->action(function (string $id, Database $dbForProject, Response $response) {
$provider = $dbForProject->getDocument('providers', $id);
if ($provider->isEmpty()) {
@ -894,7 +884,7 @@ App::delete('/v1/messaging/providers/:id')
App::post('/v1/messaging/messages/email')
->desc('Send an email.')
->groups(['api', 'messaging'])
->label('event', 'messages.create')
->label('audits.event', 'messages.create')
->label('scope', 'messages.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')

View file

@ -32,6 +32,7 @@
<directory>./tests/e2e/Services/Teams</directory>
<directory>./tests/e2e/Services/Users</directory>
<directory>./tests/e2e/Services/Webhooks</directory>
<directory>./tests/e2e/Services/Messaging</directory>
<file>./tests/e2e/Services/Functions/FunctionsBase.php</file>
<file>./tests/e2e/Services/Functions/FunctionsCustomServerTest.php</file>
<file>./tests/e2e/Services/Functions/FunctionsCustomClientTest.php</file>

View file

@ -81,6 +81,10 @@ trait ProjectCustom
'locale.read',
'avatars.read',
'health.read',
'providers.read',
'providers.write',
'messages.read',
'messages.write',
],
]);

View file

@ -0,0 +1,187 @@
<?php
namespace Tests\E2E\Services\Messaging;
use Tests\E2E\Client;
use Tests\E2E\Scopes\ProjectCustom;
use Tests\E2E\Scopes\Scope;
use Tests\E2E\Scopes\SideConsole;
class MessagingServerTest extends Scope
{
use ProjectCustom;
use SideConsole;
public function testCreateProviders(): array
{
$providersParams = [
'sendgrid' => [
'name' => 'Sengrid1',
'apiKey' => 'my-apikey',
],
'mailgun' => [
'name' => 'Mailgun1',
'apiKey' => 'my-apikey',
'domain' => 'my-domain',
],
'twilio' => [
'name' => 'Twilio1',
'accountSid' => 'my-accountSid',
'authToken' => 'my-authToken',
],
'telesign' => [
'name' => 'Telesign1',
'username' => 'my-username',
'password' => 'my-password',
],
'textmagic' => [
'name' => 'Textmagic1',
'username' => 'my-username',
'apiKey' => 'my-apikey',
],
'msg91' => [
'name' => 'Ms91-1',
'senderId' => 'my-senderid',
'authKey' => 'my-authkey',
],
'vonage' => [
'name' => 'Vonage1',
'apiKey' => 'my-apikey',
'apiSecret' => 'my-apisecret',
],
'fcm' => [
'name' => 'FCM1',
'serverKey' => 'my-serverkey',
],
'apns' => [
'name' => 'APNS1',
'authKey' => 'my-authkey',
'authKeyId' => 'my-authkeyid',
'teamId' => 'my-teamid',
'bundleId' => 'my-bundleid',
'endpoint' => 'my-endpoint',
],
];
$providers = [];
foreach (\array_keys($providersParams) as $key) {
$response = $this->client->call(Client::METHOD_POST, '/messaging/providers/'.$key, [
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
'x-appwrite-key' => $this->getProject()['apiKey'],
], $providersParams[$key]);
\array_push($providers, $response['body']);
$this->assertEquals(201, $response['headers']['status-code']);
$this->assertEquals($providersParams[$key]['name'], $response['body']['name']);
}
return $providers;
}
/**
* @depends testCreateProviders
*/
public function testUpdateProviders(array $providers): array
{
$providersParams = [
'sendgrid' => [
'name' => 'Sengrid2',
'apiKey' => 'my-apikey',
],
'mailgun' => [
'name' => 'Mailgun2',
'apiKey' => 'my-apikey',
'domain' => 'my-domain',
],
'twilio' => [
'name' => 'Twilio2',
'accountSid' => 'my-accountSid',
'authToken' => 'my-authToken',
],
'telesign' => [
'name' => 'Telesign2',
'username' => 'my-username',
'password' => 'my-password',
],
'textmagic' => [
'name' => 'Textmagic2',
'username' => 'my-username',
'apiKey' => 'my-apikey',
],
'msg91' => [
'name' => 'Ms91-2',
'senderId' => 'my-senderid',
'authKey' => 'my-authkey',
],
'vonage' => [
'name' => 'Vonage2',
'apiKey' => 'my-apikey',
'apiSecret' => 'my-apisecret',
],
'fcm' => [
'name' => 'FCM2',
'serverKey' => 'my-serverkey',
],
'apns' => [
'name' => 'APNS2',
'authKey' => 'my-authkey',
'authKeyId' => 'my-authkeyid',
'teamId' => 'my-teamid',
'bundleId' => 'my-bundleid',
'endpoint' => 'my-endpoint',
],
];
foreach (\array_keys($providersParams) as $index => $key) {
$response = $this->client->call(Client::METHOD_PATCH, '/messaging/providers/'. $providers[$index]['$id'] . '/' . $key, [
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
'x-appwrite-key' => $this->getProject()['apiKey'],
], $providersParams[$key]);
$providers[$index] = $response['body'];
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals($providersParams[$key]['name'], $response['body']['name']);
}
return $providers;
}
/**
* @depends testUpdateProviders
*/
public function testListProviders(array $providers) {
$response = $this->client->call(Client::METHOD_GET, '/messaging/providers/', [
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
'x-appwrite-key' => $this->getProject()['apiKey'],
]);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals(\count($providers), $response['body']['total']);
}
/**
* @depends testUpdateProviders
*/
public function testGetProvider(array $providers) {
$response = $this->client->call(Client::METHOD_GET, '/messaging/providers/' .$providers[0]['$id'], [
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
'x-appwrite-key' => $this->getProject()['apiKey'],
]);
$this->assertEquals(200, $response['headers']['status-code']);
$this->assertEquals($providers[0]['name'], $response['body']['name']);
}
/**
* @depends testUpdateProviders
*/
public function testDeleteProvider(array $providers) {
foreach ($providers as $provider) {
$response = $this->client->call(Client::METHOD_DELETE, '/messaging/providers/'. $provider['$id'], [
'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$id'],
'x-appwrite-key' => $this->getProject()['apiKey'],
]);
$this->assertEquals(204, $response['headers']['status-code']);
}
}
}