mirror of
https://github.com/retailcrm/mailgun-php.git
synced 2024-11-22 12:36:02 +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'])
|
||||
->getMock();
|
||||
}
|
||||
|
||||
return $this->getMockBuilder($this->getApiClass())
|
||||
->setMethods(['httpGet', 'httpPost', 'httpPostRaw', 'httpDelete', 'httpPut'])
|
||||
->setConstructorArgs([$httpClient, $requestClient, $hydrator])
|
||||
@ -101,7 +102,6 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
protected function getApiInstance()
|
||||
{
|
||||
|
||||
$httpClient = $this->getMockBuilder('Http\Client\HttpClient')
|
||||
->setMethods(['sendRequest'])
|
||||
->getMock();
|
||||
@ -121,7 +121,6 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
||||
)
|
||||
->willReturn(new Request('GET', '/'));
|
||||
|
||||
|
||||
$hydrator = new ModelHydrator();
|
||||
if (null === $this->httpResponse) {
|
||||
$hydrator = $this->getMockBuilder('Mailgun\Hydrator\Hydrator')
|
||||
@ -150,22 +149,41 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
||||
|
||||
public function validateRequestMethod($method)
|
||||
{
|
||||
return $this->veriyProperty($this->requestMethod, $method);
|
||||
return $this->verifyProperty($this->requestMethod, $method);
|
||||
}
|
||||
|
||||
public function validateRequestUri($uri)
|
||||
{
|
||||
return $this->veriyProperty($this->requestUri, $uri);
|
||||
return $this->verifyProperty($this->requestUri, $uri);
|
||||
}
|
||||
|
||||
public function validateRequestHeaders($headers)
|
||||
{
|
||||
return $this->veriyProperty($this->requestHeaders, $headers);
|
||||
return $this->verifyProperty($this->requestHeaders, $headers);
|
||||
}
|
||||
|
||||
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()
|
||||
@ -252,7 +270,7 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function veriyProperty($property, $value)
|
||||
private function verifyProperty($property, $value)
|
||||
{
|
||||
if (null === $property) {
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user