[ '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']); } } }