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;
|
||||
|
||||
use Mailgun\Model\ApiResponse;
|
||||
use Mailgun\Model\Route\Route;
|
||||
|
||||
/**
|
||||
* @author David Garcia <me@davidgarcia.cat>
|
||||
@ -17,10 +18,15 @@ use Mailgun\Model\ApiResponse;
|
||||
final class UpdateResponse implements ApiResponse
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
* @var string|null
|
||||
*/
|
||||
private $message;
|
||||
|
||||
/**
|
||||
* @var Route|null
|
||||
*/
|
||||
private $route;
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
*
|
||||
@ -28,24 +34,35 @@ final class UpdateResponse implements ApiResponse
|
||||
*/
|
||||
public static function create(array $data)
|
||||
{
|
||||
return new self(
|
||||
isset($data['message']) ? $data['message'] : null
|
||||
);
|
||||
$message = 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->route = $route;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @return string|null
|
||||
*/
|
||||
public function getMessage()
|
||||
{
|
||||
return $this->message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Route|null
|
||||
*/
|
||||
public function getRoute()
|
||||
{
|
||||
return $this->route;
|
||||
}
|
||||
}
|
||||
|
@ -9,6 +9,8 @@
|
||||
|
||||
namespace Mailgun\Tests\Api;
|
||||
|
||||
use Mailgun\Mailgun;
|
||||
|
||||
/**
|
||||
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
|
||||
* @author Contributors of https://github.com/KnpLabs/php-github-api
|
||||
@ -70,6 +72,6 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase
|
||||
|
||||
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