mirror of
https://github.com/retailcrm/mailgun-php.git
synced 2024-11-26 06:46:08 +03:00
Added test for Domain API
This commit is contained in:
parent
afc8671eac
commit
42503f72ce
185
tests/Api/DomainTest.php
Normal file
185
tests/Api/DomainTest.php
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Mailgun
|
||||||
|
*
|
||||||
|
* This software may be modified and distributed under the terms
|
||||||
|
* of the MIT license. See the LICENSE file for details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Mailgun\Tests\Api;
|
||||||
|
|
||||||
|
use GuzzleHttp\Psr7\Response;
|
||||||
|
use Mailgun\Api\Domain;
|
||||||
|
use Mailgun\Api\Event;
|
||||||
|
use Mailgun\Exception\InvalidArgumentException;
|
||||||
|
use Mailgun\Model\Domain\ConnectionResponse;
|
||||||
|
use Mailgun\Model\Domain\CreateCredentialResponse;
|
||||||
|
use Mailgun\Model\Domain\CreateResponse;
|
||||||
|
use Mailgun\Model\Domain\DeleteCredentialResponse;
|
||||||
|
use Mailgun\Model\Domain\DeleteResponse;
|
||||||
|
use Mailgun\Model\Domain\IndexResponse;
|
||||||
|
use Mailgun\Model\Domain\ShowResponse;
|
||||||
|
use Mailgun\Model\Domain\UpdateConnectionResponse;
|
||||||
|
use Mailgun\Model\Domain\UpdateCredentialResponse;
|
||||||
|
use Mailgun\Model\Domain\VerifyResponse;
|
||||||
|
use Mailgun\Model\Event\EventResponse;
|
||||||
|
|
||||||
|
class DomainTest extends TestCase
|
||||||
|
{
|
||||||
|
protected function getApiClass()
|
||||||
|
{
|
||||||
|
return Domain::class;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testIndex()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('GET');
|
||||||
|
$this->setRequestUri('/v3/domains?limit=100&skip=0');
|
||||||
|
$this->setHttpResponse(new Response(200, ['Content-Type' => 'application/json'], <<<'JSON'
|
||||||
|
{
|
||||||
|
"total_count": 1,
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"created_at": "Wed, 10 Jul 2013 19:26:52 GMT",
|
||||||
|
"smtp_login": "postmaster@samples.mailgun.org",
|
||||||
|
"name": "samples.mailgun.org",
|
||||||
|
"smtp_password": "4rtqo4p6rrx9",
|
||||||
|
"wildcard": true,
|
||||||
|
"spam_action": "disabled",
|
||||||
|
"state": "active"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
JSON
|
||||||
|
));
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
/** @var IndexResponse $response */
|
||||||
|
$response = $api->index();
|
||||||
|
$this->assertInstanceOf(IndexResponse::class, $response);
|
||||||
|
$this->assertEquals(1, $response->getTotalCount());
|
||||||
|
$this->assertEquals('samples.mailgun.org', $response->getDomains()[0]->getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testShow()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('GET');
|
||||||
|
$this->setRequestUri('/v3/domains/example.com');
|
||||||
|
$this->setHydrateClass(ShowResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->show('example.com');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreate()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('POST');
|
||||||
|
$this->setRequestUri('/v3/domains');
|
||||||
|
$this->setRequestBody([
|
||||||
|
'name'=>'example.com'
|
||||||
|
]);
|
||||||
|
$this->setHydrateClass(CreateResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->create('example.com');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreateWithPassword()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('POST');
|
||||||
|
$this->setRequestUri('/v3/domains');
|
||||||
|
$this->setRequestBody([
|
||||||
|
'name'=>'example.com',
|
||||||
|
'smtp_password'=>'foo',
|
||||||
|
'spam_action'=>'bar',
|
||||||
|
]);
|
||||||
|
$this->setHydrateClass(CreateResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->create('example.com', 'foo', 'bar', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDelete()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('DELETE');
|
||||||
|
$this->setRequestUri('/v3/domains/example.com');
|
||||||
|
$this->setHydrateClass(DeleteResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->delete('example.com');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCreateCredential()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('POST');
|
||||||
|
$this->setRequestUri('/v3/domains/example.com/credentials');
|
||||||
|
$this->setRequestBody([
|
||||||
|
'login' => 'foo',
|
||||||
|
'password' => 'barbar',
|
||||||
|
]);
|
||||||
|
$this->setHydrateClass(CreateCredentialResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->createCredential('example.com', 'foo', 'barbar');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateCredential()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('PUT');
|
||||||
|
$this->setRequestUri('/v3/domains/example.com/credentials/foo');
|
||||||
|
$this->setRequestBody([
|
||||||
|
'password' => 'barbar',
|
||||||
|
]);
|
||||||
|
$this->setHydrateClass(UpdateCredentialResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->updateCredential('example.com', 'foo', 'barbar');
|
||||||
|
}
|
||||||
|
public function testDeleteCredential()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('DELETE');
|
||||||
|
$this->setRequestUri('/v3/domains/example.com/credentials/foo');
|
||||||
|
$this->setHydrateClass(DeleteCredentialResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->deleteCredential('example.com', 'foo', 'barbar');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testConnection()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('GET');
|
||||||
|
$this->setRequestUri('/v3/domains/example.com/connection');
|
||||||
|
$this->setHydrateClass(ConnectionResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->connection('example.com');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateConnection()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('PUT');
|
||||||
|
$this->setRequestUri('/v3/domains/example.com/connection');
|
||||||
|
$this->setRequestBody([
|
||||||
|
'require_tls' => 'true',
|
||||||
|
'skip_verification' => 'false',
|
||||||
|
]);
|
||||||
|
$this->setHydrateClass(UpdateConnectionResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->updateConnection('example.com', true , false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testVerify()
|
||||||
|
{
|
||||||
|
$this->setRequestMethod('PUT');
|
||||||
|
$this->setRequestUri('/v3/domains/example.com/verify');
|
||||||
|
$this->setHydrateClass(VerifyResponse::class);
|
||||||
|
|
||||||
|
$api = $this->getApiInstance();
|
||||||
|
$api->verify('example.com');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -89,6 +89,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
|||||||
->setMethods(['hydrate'])
|
->setMethods(['hydrate'])
|
||||||
->getMock();
|
->getMock();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->getMockBuilder($this->getApiClass())
|
return $this->getMockBuilder($this->getApiClass())
|
||||||
->setMethods(['httpGet', 'httpPost', 'httpPostRaw', 'httpDelete', 'httpPut'])
|
->setMethods(['httpGet', 'httpPost', 'httpPostRaw', 'httpDelete', 'httpPut'])
|
||||||
->setConstructorArgs([$httpClient, $requestClient, $hydrator])
|
->setConstructorArgs([$httpClient, $requestClient, $hydrator])
|
||||||
@ -101,7 +102,6 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
protected function getApiInstance()
|
protected function getApiInstance()
|
||||||
{
|
{
|
||||||
|
|
||||||
$httpClient = $this->getMockBuilder('Http\Client\HttpClient')
|
$httpClient = $this->getMockBuilder('Http\Client\HttpClient')
|
||||||
->setMethods(['sendRequest'])
|
->setMethods(['sendRequest'])
|
||||||
->getMock();
|
->getMock();
|
||||||
@ -121,7 +121,6 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
|||||||
)
|
)
|
||||||
->willReturn(new Request('GET', '/'));
|
->willReturn(new Request('GET', '/'));
|
||||||
|
|
||||||
|
|
||||||
$hydrator = new ModelHydrator();
|
$hydrator = new ModelHydrator();
|
||||||
if (null === $this->httpResponse) {
|
if (null === $this->httpResponse) {
|
||||||
$hydrator = $this->getMockBuilder('Mailgun\Hydrator\Hydrator')
|
$hydrator = $this->getMockBuilder('Mailgun\Hydrator\Hydrator')
|
||||||
@ -150,22 +149,41 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
public function validateRequestMethod($method)
|
public function validateRequestMethod($method)
|
||||||
{
|
{
|
||||||
return $this->veriyProperty($this->requestMethod, $method);
|
return $this->verifyProperty($this->requestMethod, $method);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateRequestUri($uri)
|
public function validateRequestUri($uri)
|
||||||
{
|
{
|
||||||
return $this->veriyProperty($this->requestUri, $uri);
|
return $this->verifyProperty($this->requestUri, $uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateRequestHeaders($headers)
|
public function validateRequestHeaders($headers)
|
||||||
{
|
{
|
||||||
return $this->veriyProperty($this->requestHeaders, $headers);
|
return $this->verifyProperty($this->requestHeaders, $headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function validateRequestBody($body)
|
public function validateRequestBody($body)
|
||||||
{
|
{
|
||||||
return $this->veriyProperty($this->requestBody, $body);
|
if ($this->verifyProperty($this->requestBody, $body)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assert: $body is prepared for a "multipart stream".
|
||||||
|
|
||||||
|
// Check length
|
||||||
|
if (count($this->requestBody) !== count($body)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check every item in body.
|
||||||
|
foreach ($body as $item) {
|
||||||
|
if ($this->requestBody[$item['name']] !== $item['content']) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getMailgunClient()
|
protected function getMailgunClient()
|
||||||
@ -252,7 +270,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
|||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
private function veriyProperty($property, $value)
|
private function verifyProperty($property, $value)
|
||||||
{
|
{
|
||||||
if (null === $property) {
|
if (null === $property) {
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user