mirror of
https://github.com/retailcrm/mailgun-php.git
synced 2025-02-06 08:19:25 +03:00
Add integration tests for Route API (#334)
This commit is contained in:
parent
7665700b00
commit
edcfcc397f
@ -10,6 +10,7 @@
|
|||||||
namespace Mailgun\Model\Route\Response;
|
namespace Mailgun\Model\Route\Response;
|
||||||
|
|
||||||
use Mailgun\Model\ApiResponse;
|
use Mailgun\Model\ApiResponse;
|
||||||
|
use Mailgun\Model\Route\Route;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author David Garcia <me@davidgarcia.cat>
|
* @author David Garcia <me@davidgarcia.cat>
|
||||||
@ -17,10 +18,15 @@ use Mailgun\Model\ApiResponse;
|
|||||||
final class UpdateResponse implements ApiResponse
|
final class UpdateResponse implements ApiResponse
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string|null
|
||||||
*/
|
*/
|
||||||
private $message;
|
private $message;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Route|null
|
||||||
|
*/
|
||||||
|
private $route;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $data
|
* @param array $data
|
||||||
*
|
*
|
||||||
@ -28,24 +34,35 @@ final class UpdateResponse implements ApiResponse
|
|||||||
*/
|
*/
|
||||||
public static function create(array $data)
|
public static function create(array $data)
|
||||||
{
|
{
|
||||||
return new self(
|
$message = isset($data['message']) ? $data['message'] : null;
|
||||||
isset($data['message']) ? $data['message'] : null
|
$route = isset($data['id']) ? Route::create($data) : null;
|
||||||
);
|
|
||||||
|
return new self($message, $route);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $message
|
* @param string|null $message
|
||||||
|
* @param Route|null $route
|
||||||
*/
|
*/
|
||||||
private function __construct($message)
|
private function __construct($message = null, Route $route = null)
|
||||||
{
|
{
|
||||||
$this->message = $message;
|
$this->message = $message;
|
||||||
|
$this->route = $route;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string|null
|
||||||
*/
|
*/
|
||||||
public function getMessage()
|
public function getMessage()
|
||||||
{
|
{
|
||||||
return $this->message;
|
return $this->message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Route|null
|
||||||
|
*/
|
||||||
|
public function getRoute()
|
||||||
|
{
|
||||||
|
return $this->route;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
namespace Mailgun\Tests\Api;
|
namespace Mailgun\Tests\Api;
|
||||||
|
|
||||||
|
use Mailgun\Mailgun;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
||||||
* @author Contributors of https://github.com/KnpLabs/php-github-api
|
* @author Contributors of https://github.com/KnpLabs/php-github-api
|
||||||
@ -70,6 +72,6 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
protected function getMailgunClient()
|
protected function getMailgunClient()
|
||||||
{
|
{
|
||||||
return new \Mailgun\Mailgun($this->apiPrivKey);
|
return Mailgun::create($this->apiPrivKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
148
tests/Integration/RouteApiTest.php
Normal file
148
tests/Integration/RouteApiTest.php
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013-2016 Mailgun
|
||||||
|
*
|
||||||
|
* This software may be modified and distributed under the terms
|
||||||
|
* of the MIT license. See the LICENSE file for details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Mailgun\Tests\Integration;
|
||||||
|
|
||||||
|
use Mailgun\Model\Route\Response\CreateResponse;
|
||||||
|
use Mailgun\Model\Route\Response\IndexResponse;
|
||||||
|
use Mailgun\Model\Route\Response\DeleteResponse;
|
||||||
|
use Mailgun\Model\Route\Response\ShowResponse;
|
||||||
|
use Mailgun\Model\Route\Response\UpdateResponse;
|
||||||
|
use Mailgun\Model\Route\Action;
|
||||||
|
use Mailgun\Model\Route\Route;
|
||||||
|
use Mailgun\Tests\Api\TestCase;
|
||||||
|
|
||||||
|
class RouteApiTest extends TestCase
|
||||||
|
{
|
||||||
|
protected function getApiClass()
|
||||||
|
{
|
||||||
|
return 'Mailgun\Api\Route';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testRouteCreate()
|
||||||
|
{
|
||||||
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
|
$response = $mg->routes()->create(
|
||||||
|
'catch_all()',
|
||||||
|
['forward("test@example.tld")', 'stop()'],
|
||||||
|
'test-route',
|
||||||
|
100
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(CreateResponse::class, $response);
|
||||||
|
$this->assertInstanceOf(Route::class, $response->getRoute());
|
||||||
|
$this->assertSame('catch_all()', $response->getRoute()->getFilter());
|
||||||
|
$this->assertCount(2, $response->getRoute()->getActions());
|
||||||
|
|
||||||
|
return $response->getRoute()->getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Mailgun\Exception\HttpClientException
|
||||||
|
* @expectedExceptionCode 400
|
||||||
|
*/
|
||||||
|
public function testRouteCreateInvalidFilter()
|
||||||
|
{
|
||||||
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
|
$mg->routes()->create(
|
||||||
|
'invalid_function()',
|
||||||
|
['stop()'],
|
||||||
|
''
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @depends testRouteCreate
|
||||||
|
*/
|
||||||
|
public function testRouteShow($routeId)
|
||||||
|
{
|
||||||
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
|
$response = $mg->routes()->show($routeId);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(ShowResponse::class, $response);
|
||||||
|
$this->assertInstanceOf(Route::class, $response->getRoute());
|
||||||
|
$this->assertSame('test-route', $response->getRoute()->getDescription());
|
||||||
|
$this->assertCount(2, $response->getRoute()->getActions());
|
||||||
|
$this->assertContainsOnlyInstancesOf(Action::class, $response->getRoute()->getActions());
|
||||||
|
$this->assertSame('forward("test@example.tld")', $response->getRoute()->getActions()[0]->getAction());
|
||||||
|
|
||||||
|
return $routeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @depends testRouteShow
|
||||||
|
*/
|
||||||
|
public function testRouteUpdate($routeId)
|
||||||
|
{
|
||||||
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
|
$response = $mg->routes()->update(
|
||||||
|
$routeId,
|
||||||
|
'match_recipient("foo@bar.com")',
|
||||||
|
['stop()'],
|
||||||
|
'test-route-updated',
|
||||||
|
200
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(UpdateResponse::class, $response);
|
||||||
|
$this->assertInstanceOf(Route::class, $response->getRoute());
|
||||||
|
$this->assertSame('test-route-updated', $response->getRoute()->getDescription());
|
||||||
|
|
||||||
|
return $routeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @depends testRouteUpdate
|
||||||
|
*/
|
||||||
|
public function testRouteIndex($routeId)
|
||||||
|
{
|
||||||
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
|
$response = $mg->routes()->index();
|
||||||
|
|
||||||
|
$this->assertInstanceOf(IndexResponse::class, $response);
|
||||||
|
$this->assertContainsOnlyInstancesOf(Route::class, $response->getRoutes());
|
||||||
|
$foundTestRoute = false;
|
||||||
|
foreach ($response->getRoutes() as $route) {
|
||||||
|
if ($route->getId() === $routeId && $route->getDescription() === 'test-route-updated') {
|
||||||
|
$foundTestRoute = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->assertTrue($foundTestRoute);
|
||||||
|
|
||||||
|
return $routeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @depends testRouteIndex
|
||||||
|
*/
|
||||||
|
public function testRouteDelete($routeId)
|
||||||
|
{
|
||||||
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
|
$response = $mg->routes()->delete($routeId);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(DeleteResponse::class, $response);
|
||||||
|
$this->assertSame('Route has been deleted', $response->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Mailgun\Exception\HttpClientException
|
||||||
|
* @expectedExceptionCode 404
|
||||||
|
*/
|
||||||
|
public function testRouteDeleteInvalid()
|
||||||
|
{
|
||||||
|
$mg = $this->getMailgunClient();
|
||||||
|
|
||||||
|
$mg->routes()->delete('000000000000000000000000');
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user