diff --git a/module/Rest/src/Action/AbstractRestAction.php b/module/Rest/src/Action/AbstractRestAction.php index 4acbe2ba..c71c0176 100644 --- a/module/Rest/src/Action/AbstractRestAction.php +++ b/module/Rest/src/Action/AbstractRestAction.php @@ -1,13 +1,17 @@ getMethod() === 'OPTIONS') { - return $response; + if ($request->getMethod() === self::METHOD_OPTIONS) { + return new EmptyResponse(); } - return $this->dispatch($request, $response, $out); + return $this->dispatch($request, $delegate); } /** * @param Request $request - * @param Response $response - * @param callable|null $out + * @param DelegateInterface $delegate * @return null|Response */ - abstract protected function dispatch(Request $request, Response $response, callable $out = null); + abstract protected function dispatch(Request $request, DelegateInterface $delegate); } diff --git a/module/Rest/src/Action/AuthenticateAction.php b/module/Rest/src/Action/AuthenticateAction.php index a20e5964..27d67bc3 100644 --- a/module/Rest/src/Action/AuthenticateAction.php +++ b/module/Rest/src/Action/AuthenticateAction.php @@ -2,9 +2,10 @@ namespace Shlinkio\Shlink\Rest\Action; use Acelaya\ZsmAnnotatedServices\Annotation\Inject; -use Firebase\JWT\JWT; +use Interop\Http\ServerMiddleware\DelegateInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; +use Psr\Log\LoggerInterface; use Shlinkio\Shlink\Rest\Authentication\JWTService; use Shlinkio\Shlink\Rest\Authentication\JWTServiceInterface; use Shlinkio\Shlink\Rest\Service\ApiKeyService; @@ -33,14 +34,17 @@ class AuthenticateAction extends AbstractRestAction * @param ApiKeyServiceInterface|ApiKeyService $apiKeyService * @param JWTServiceInterface|JWTService $jwtService * @param TranslatorInterface $translator + * @param LoggerInterface|null $logger * - * @Inject({ApiKeyService::class, JWTService::class, "translator"}) + * @Inject({ApiKeyService::class, JWTService::class, "translator", "Logger_Shlink"}) */ public function __construct( ApiKeyServiceInterface $apiKeyService, JWTServiceInterface $jwtService, - TranslatorInterface $translator + TranslatorInterface $translator, + LoggerInterface $logger = null ) { + parent::__construct($logger); $this->translator = $translator; $this->apiKeyService = $apiKeyService; $this->jwtService = $jwtService; @@ -48,11 +52,10 @@ class AuthenticateAction extends AbstractRestAction /** * @param Request $request - * @param Response $response - * @param callable|null $out + * @param DelegateInterface $delegate * @return null|Response */ - public function dispatch(Request $request, Response $response, callable $out = null) + public function dispatch(Request $request, DelegateInterface $delegate) { $authData = $request->getParsedBody(); if (! isset($authData['apiKey'])) { @@ -61,7 +64,7 @@ class AuthenticateAction extends AbstractRestAction 'message' => $this->translator->translate( 'You have to provide a valid API key under the "apiKey" param name.' ), - ], 400); + ], self::STATUS_BAD_REQUEST); } // Authenticate using provided API key @@ -70,7 +73,7 @@ class AuthenticateAction extends AbstractRestAction return new JsonResponse([ 'error' => RestUtils::INVALID_API_KEY_ERROR, 'message' => $this->translator->translate('Provided API key does not exist or is invalid.'), - ], 401); + ], self::STATUS_UNAUTHORIZED); } // Generate a JSON Web Token that will be used for authorization in next requests diff --git a/module/Rest/src/Action/CreateShortcodeAction.php b/module/Rest/src/Action/CreateShortcodeAction.php index fdecedef..e63db63a 100644 --- a/module/Rest/src/Action/CreateShortcodeAction.php +++ b/module/Rest/src/Action/CreateShortcodeAction.php @@ -2,6 +2,7 @@ namespace Shlinkio\Shlink\Rest\Action; use Acelaya\ZsmAnnotatedServices\Annotation\Inject; +use Interop\Http\ServerMiddleware\DelegateInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Log\LoggerInterface; @@ -52,18 +53,17 @@ class CreateShortcodeAction extends AbstractRestAction /** * @param Request $request - * @param Response $response - * @param callable|null $out + * @param DelegateInterface $delegate * @return null|Response */ - public function dispatch(Request $request, Response $response, callable $out = null) + public function dispatch(Request $request, DelegateInterface $delegate) { $postData = $request->getParsedBody(); if (! isset($postData['longUrl'])) { return new JsonResponse([ 'error' => RestUtils::INVALID_ARGUMENT_ERROR, 'message' => $this->translator->translate('A URL was not provided'), - ], 400); + ], self::STATUS_BAD_REQUEST); } $longUrl = $postData['longUrl']; $tags = isset($postData['tags']) && is_array($postData['tags']) ? $postData['tags'] : []; @@ -87,13 +87,13 @@ class CreateShortcodeAction extends AbstractRestAction $this->translator->translate('Provided URL %s is invalid. Try with a different one.'), $longUrl ), - ], 400); + ], self::STATUS_BAD_REQUEST); } catch (\Exception $e) { $this->logger->error('Unexpected error creating shortcode.' . PHP_EOL . $e); return new JsonResponse([ 'error' => RestUtils::UNKNOWN_ERROR, 'message' => $this->translator->translate('Unexpected error occurred'), - ], 500); + ], self::STATUS_INTERNAL_SERVER_ERROR); } } } diff --git a/module/Rest/src/Action/EditTagsAction.php b/module/Rest/src/Action/EditTagsAction.php index 3dd76333..a61e940a 100644 --- a/module/Rest/src/Action/EditTagsAction.php +++ b/module/Rest/src/Action/EditTagsAction.php @@ -2,6 +2,7 @@ namespace Shlinkio\Shlink\Rest\Action; use Acelaya\ZsmAnnotatedServices\Annotation\Inject; +use Interop\Http\ServerMiddleware\DelegateInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Log\LoggerInterface; @@ -43,11 +44,10 @@ class EditTagsAction extends AbstractRestAction /** * @param Request $request - * @param Response $response - * @param callable|null $out + * @param DelegateInterface $delegate * @return null|Response */ - protected function dispatch(Request $request, Response $response, callable $out = null) + protected function dispatch(Request $request, DelegateInterface $delegate) { $shortCode = $request->getAttribute('shortCode'); $bodyParams = $request->getParsedBody(); @@ -56,7 +56,7 @@ class EditTagsAction extends AbstractRestAction return new JsonResponse([ 'error' => RestUtils::INVALID_ARGUMENT_ERROR, 'message' => $this->translator->translate('A list of tags was not provided'), - ], 400); + ], self::STATUS_BAD_REQUEST); } $tags = $bodyParams['tags']; @@ -67,7 +67,7 @@ class EditTagsAction extends AbstractRestAction return new JsonResponse([ 'error' => RestUtils::getRestErrorCodeFromException($e), 'message' => sprintf($this->translator->translate('No URL found for short code "%s"'), $shortCode), - ], 404); + ], self::STATUS_NOT_FOUND); } } } diff --git a/module/Rest/src/Action/GetVisitsAction.php b/module/Rest/src/Action/GetVisitsAction.php index 0d78bcc1..c5e6b71b 100644 --- a/module/Rest/src/Action/GetVisitsAction.php +++ b/module/Rest/src/Action/GetVisitsAction.php @@ -2,6 +2,7 @@ namespace Shlinkio\Shlink\Rest\Action; use Acelaya\ZsmAnnotatedServices\Annotation\Inject; +use Interop\Http\ServerMiddleware\DelegateInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Log\LoggerInterface; @@ -44,11 +45,10 @@ class GetVisitsAction extends AbstractRestAction /** * @param Request $request - * @param Response $response - * @param callable|null $out + * @param DelegateInterface $delegate * @return null|Response */ - public function dispatch(Request $request, Response $response, callable $out = null) + public function dispatch(Request $request, DelegateInterface $delegate) { $shortCode = $request->getAttribute('shortCode'); $startDate = $this->getDateQueryParam($request, 'startDate'); @@ -70,13 +70,13 @@ class GetVisitsAction extends AbstractRestAction $this->translator->translate('Provided short code %s does not exist'), $shortCode ), - ], 404); + ], self::STATUS_NOT_FOUND); } catch (\Exception $e) { $this->logger->error('Unexpected error while parsing short code'. PHP_EOL . $e); return new JsonResponse([ 'error' => RestUtils::UNKNOWN_ERROR, 'message' => $this->translator->translate('Unexpected error occurred'), - ], 500); + ], self::STATUS_INTERNAL_SERVER_ERROR); } } diff --git a/module/Rest/src/Action/ListShortcodesAction.php b/module/Rest/src/Action/ListShortcodesAction.php index aa987c2f..b7099c1c 100644 --- a/module/Rest/src/Action/ListShortcodesAction.php +++ b/module/Rest/src/Action/ListShortcodesAction.php @@ -2,6 +2,7 @@ namespace Shlinkio\Shlink\Rest\Action; use Acelaya\ZsmAnnotatedServices\Annotation\Inject; +use Interop\Http\ServerMiddleware\DelegateInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Log\LoggerInterface; @@ -46,11 +47,10 @@ class ListShortcodesAction extends AbstractRestAction /** * @param Request $request - * @param Response $response - * @param callable|null $out + * @param DelegateInterface $delegate * @return null|Response */ - public function dispatch(Request $request, Response $response, callable $out = null) + public function dispatch(Request $request, DelegateInterface $delegate) { try { $params = $this->queryToListParams($request->getQueryParams()); @@ -61,7 +61,7 @@ class ListShortcodesAction extends AbstractRestAction return new JsonResponse([ 'error' => RestUtils::UNKNOWN_ERROR, 'message' => $this->translator->translate('Unexpected error occurred'), - ], 500); + ], self::STATUS_INTERNAL_SERVER_ERROR); } } diff --git a/module/Rest/src/Action/ResolveUrlAction.php b/module/Rest/src/Action/ResolveUrlAction.php index c99e233a..b705814a 100644 --- a/module/Rest/src/Action/ResolveUrlAction.php +++ b/module/Rest/src/Action/ResolveUrlAction.php @@ -2,6 +2,7 @@ namespace Shlinkio\Shlink\Rest\Action; use Acelaya\ZsmAnnotatedServices\Annotation\Inject; +use Interop\Http\ServerMiddleware\DelegateInterface; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Psr\Log\LoggerInterface; @@ -43,11 +44,10 @@ class ResolveUrlAction extends AbstractRestAction /** * @param Request $request - * @param Response $response - * @param callable|null $out + * @param DelegateInterface $delegate * @return null|Response */ - public function dispatch(Request $request, Response $response, callable $out = null) + public function dispatch(Request $request, DelegateInterface $delegate) { $shortCode = $request->getAttribute('shortCode'); @@ -57,7 +57,7 @@ class ResolveUrlAction extends AbstractRestAction return new JsonResponse([ 'error' => RestUtils::INVALID_ARGUMENT_ERROR, 'message' => sprintf($this->translator->translate('No URL found for short code "%s"'), $shortCode), - ], 404); + ], self::STATUS_NOT_FOUND); } return new JsonResponse([ @@ -71,13 +71,13 @@ class ResolveUrlAction extends AbstractRestAction $this->translator->translate('Provided short code "%s" has an invalid format'), $shortCode ), - ], 400); + ], self::STATUS_BAD_REQUEST); } catch (\Exception $e) { $this->logger->error('Unexpected error while resolving the URL behind a short code.' . PHP_EOL . $e); return new JsonResponse([ 'error' => RestUtils::UNKNOWN_ERROR, 'message' => $this->translator->translate('Unexpected error occurred'), - ], 500); + ], self::STATUS_INTERNAL_SERVER_ERROR); } } } diff --git a/module/Rest/test/Action/AuthenticateActionTest.php b/module/Rest/test/Action/AuthenticateActionTest.php index 13167073..2a929495 100644 --- a/module/Rest/test/Action/AuthenticateActionTest.php +++ b/module/Rest/test/Action/AuthenticateActionTest.php @@ -7,7 +7,7 @@ use Shlinkio\Shlink\Rest\Action\AuthenticateAction; use Shlinkio\Shlink\Rest\Authentication\JWTService; use Shlinkio\Shlink\Rest\Entity\ApiKey; use Shlinkio\Shlink\Rest\Service\ApiKeyService; -use Zend\Diactoros\Response; +use ShlinkioTest\Shlink\Common\Util\TestUtils; use Zend\Diactoros\ServerRequestFactory; use Zend\I18n\Translator\Translator; @@ -42,7 +42,7 @@ class AuthenticateActionTest extends TestCase */ public function notProvidingAuthDataReturnsError() { - $resp = $this->action->__invoke(ServerRequestFactory::fromGlobals(), new Response()); + $resp = $this->action->process(ServerRequestFactory::fromGlobals(), TestUtils::createDelegateMock()->reveal()); $this->assertEquals(400, $resp->getStatusCode()); } @@ -57,7 +57,7 @@ class AuthenticateActionTest extends TestCase $request = ServerRequestFactory::fromGlobals()->withParsedBody([ 'apiKey' => 'foo', ]); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(200, $response->getStatusCode()); $response->getBody()->rewind(); @@ -75,7 +75,7 @@ class AuthenticateActionTest extends TestCase $request = ServerRequestFactory::fromGlobals()->withParsedBody([ 'apiKey' => 'foo', ]); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(401, $response->getStatusCode()); } } diff --git a/module/Rest/test/Action/CreateShortcodeActionTest.php b/module/Rest/test/Action/CreateShortcodeActionTest.php index 4593fced..3b2eec10 100644 --- a/module/Rest/test/Action/CreateShortcodeActionTest.php +++ b/module/Rest/test/Action/CreateShortcodeActionTest.php @@ -8,7 +8,7 @@ use Shlinkio\Shlink\Core\Exception\InvalidUrlException; use Shlinkio\Shlink\Core\Service\UrlShortener; use Shlinkio\Shlink\Rest\Action\CreateShortcodeAction; use Shlinkio\Shlink\Rest\Util\RestUtils; -use Zend\Diactoros\Response; +use ShlinkioTest\Shlink\Common\Util\TestUtils; use Zend\Diactoros\ServerRequestFactory; use Zend\Diactoros\Uri; use Zend\I18n\Translator\Translator; @@ -38,7 +38,10 @@ class CreateShortcodeActionTest extends TestCase */ public function missingLongUrlParamReturnsError() { - $response = $this->action->__invoke(ServerRequestFactory::fromGlobals(), new Response()); + $response = $this->action->process( + ServerRequestFactory::fromGlobals(), + TestUtils::createDelegateMock()->reveal() + ); $this->assertEquals(400, $response->getStatusCode()); } @@ -54,7 +57,7 @@ class CreateShortcodeActionTest extends TestCase $request = ServerRequestFactory::fromGlobals()->withParsedBody([ 'longUrl' => 'http://www.domain.com/foo/bar', ]); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(200, $response->getStatusCode()); $this->assertTrue(strpos($response->getBody()->getContents(), 'http://foo.com/abc123') > 0); } @@ -71,7 +74,7 @@ class CreateShortcodeActionTest extends TestCase $request = ServerRequestFactory::fromGlobals()->withParsedBody([ 'longUrl' => 'http://www.domain.com/foo/bar', ]); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(400, $response->getStatusCode()); $this->assertTrue(strpos($response->getBody()->getContents(), RestUtils::INVALID_URL_ERROR) > 0); } @@ -88,7 +91,7 @@ class CreateShortcodeActionTest extends TestCase $request = ServerRequestFactory::fromGlobals()->withParsedBody([ 'longUrl' => 'http://www.domain.com/foo/bar', ]); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(500, $response->getStatusCode()); $this->assertTrue(strpos($response->getBody()->getContents(), RestUtils::UNKNOWN_ERROR) > 0); } diff --git a/module/Rest/test/Action/EditTagsActionTest.php b/module/Rest/test/Action/EditTagsActionTest.php index da3082f4..518925ab 100644 --- a/module/Rest/test/Action/EditTagsActionTest.php +++ b/module/Rest/test/Action/EditTagsActionTest.php @@ -7,7 +7,7 @@ use Shlinkio\Shlink\Core\Entity\ShortUrl; use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException; use Shlinkio\Shlink\Core\Service\ShortUrlService; use Shlinkio\Shlink\Rest\Action\EditTagsAction; -use Zend\Diactoros\Response; +use ShlinkioTest\Shlink\Common\Util\TestUtils; use Zend\Diactoros\ServerRequestFactory; use Zend\I18n\Translator\Translator; @@ -33,9 +33,9 @@ class EditTagsActionTest extends TestCase */ public function notProvidingTagsReturnsError() { - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withAttribute('shortCode', 'abc123'), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(400, $response->getStatusCode()); } @@ -49,10 +49,10 @@ class EditTagsActionTest extends TestCase $this->shortUrlService->setTagsByShortCode($shortCode, [])->willThrow(InvalidShortCodeException::class) ->shouldBeCalledTimes(1); - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withAttribute('shortCode', 'abc123') ->withParsedBody(['tags' => []]), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(404, $response->getStatusCode()); } @@ -66,10 +66,10 @@ class EditTagsActionTest extends TestCase $this->shortUrlService->setTagsByShortCode($shortCode, [])->willReturn(new ShortUrl()) ->shouldBeCalledTimes(1); - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withAttribute('shortCode', 'abc123') ->withParsedBody(['tags' => []]), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(200, $response->getStatusCode()); } diff --git a/module/Rest/test/Action/GetVisitsActionTest.php b/module/Rest/test/Action/GetVisitsActionTest.php index 152e5f48..ee356d1e 100644 --- a/module/Rest/test/Action/GetVisitsActionTest.php +++ b/module/Rest/test/Action/GetVisitsActionTest.php @@ -8,7 +8,7 @@ use Shlinkio\Shlink\Common\Exception\InvalidArgumentException; use Shlinkio\Shlink\Common\Util\DateRange; use Shlinkio\Shlink\Core\Service\VisitsTracker; use Shlinkio\Shlink\Rest\Action\GetVisitsAction; -use Zend\Diactoros\Response; +use ShlinkioTest\Shlink\Common\Util\TestUtils; use Zend\Diactoros\ServerRequestFactory; use Zend\I18n\Translator\Translator; @@ -38,9 +38,9 @@ class GetVisitsActionTest extends TestCase $this->visitsTracker->info($shortCode, Argument::type(DateRange::class))->willReturn([]) ->shouldBeCalledTimes(1); - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(200, $response->getStatusCode()); } @@ -55,9 +55,9 @@ class GetVisitsActionTest extends TestCase InvalidArgumentException::class )->shouldBeCalledTimes(1); - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(404, $response->getStatusCode()); } @@ -72,9 +72,9 @@ class GetVisitsActionTest extends TestCase \Exception::class )->shouldBeCalledTimes(1); - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(500, $response->getStatusCode()); } @@ -89,10 +89,10 @@ class GetVisitsActionTest extends TestCase ->willReturn([]) ->shouldBeCalledTimes(1); - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode) ->withQueryParams(['endDate' => '2016-01-01 00:00:00']), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(200, $response->getStatusCode()); } diff --git a/module/Rest/test/Action/ListShortcodesActionTest.php b/module/Rest/test/Action/ListShortcodesActionTest.php index 7c318f47..1fee9b28 100644 --- a/module/Rest/test/Action/ListShortcodesActionTest.php +++ b/module/Rest/test/Action/ListShortcodesActionTest.php @@ -5,13 +5,13 @@ use PHPUnit\Framework\TestCase; use Prophecy\Prophecy\ObjectProphecy; use Shlinkio\Shlink\Core\Service\ShortUrlService; use Shlinkio\Shlink\Rest\Action\ListShortcodesAction; -use Zend\Diactoros\Response; +use ShlinkioTest\Shlink\Common\Util\TestUtils; use Zend\Diactoros\ServerRequestFactory; use Zend\I18n\Translator\Translator; use Zend\Paginator\Adapter\ArrayAdapter; use Zend\Paginator\Paginator; -class ListShortcodesActionTest extends TestCase +class ListShortCodesActionTest extends TestCase { /** * @var ListShortcodesAction @@ -37,11 +37,11 @@ class ListShortcodesActionTest extends TestCase $this->service->listShortUrls($page, null, [], null)->willReturn(new Paginator(new ArrayAdapter())) ->shouldBeCalledTimes(1); - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withQueryParams([ 'page' => $page, ]), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(200, $response->getStatusCode()); } @@ -55,11 +55,11 @@ class ListShortcodesActionTest extends TestCase $this->service->listShortUrls($page, null, [], null)->willThrow(\Exception::class) ->shouldBeCalledTimes(1); - $response = $this->action->__invoke( + $response = $this->action->process( ServerRequestFactory::fromGlobals()->withQueryParams([ 'page' => $page, ]), - new Response() + TestUtils::createDelegateMock()->reveal() ); $this->assertEquals(500, $response->getStatusCode()); } diff --git a/module/Rest/test/Action/ResolveUrlActionTest.php b/module/Rest/test/Action/ResolveUrlActionTest.php index 4631eef1..5b6a8355 100644 --- a/module/Rest/test/Action/ResolveUrlActionTest.php +++ b/module/Rest/test/Action/ResolveUrlActionTest.php @@ -7,7 +7,7 @@ use Shlinkio\Shlink\Core\Exception\InvalidShortCodeException; use Shlinkio\Shlink\Core\Service\UrlShortener; use Shlinkio\Shlink\Rest\Action\ResolveUrlAction; use Shlinkio\Shlink\Rest\Util\RestUtils; -use Zend\Diactoros\Response; +use ShlinkioTest\Shlink\Common\Util\TestUtils; use Zend\Diactoros\ServerRequestFactory; use Zend\I18n\Translator\Translator; @@ -38,7 +38,7 @@ class ResolveUrlActionTest extends TestCase ->shouldBeCalledTimes(1); $request = ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(404, $response->getStatusCode()); $this->assertTrue(strpos($response->getBody()->getContents(), RestUtils::INVALID_ARGUMENT_ERROR) > 0); } @@ -53,7 +53,7 @@ class ResolveUrlActionTest extends TestCase ->shouldBeCalledTimes(1); $request = ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(200, $response->getStatusCode()); $this->assertTrue(strpos($response->getBody()->getContents(), 'http://domain.com/foo/bar') > 0); } @@ -68,7 +68,7 @@ class ResolveUrlActionTest extends TestCase ->shouldBeCalledTimes(1); $request = ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(400, $response->getStatusCode()); $this->assertTrue(strpos($response->getBody()->getContents(), RestUtils::INVALID_SHORTCODE_ERROR) > 0); } @@ -83,7 +83,7 @@ class ResolveUrlActionTest extends TestCase ->shouldBeCalledTimes(1); $request = ServerRequestFactory::fromGlobals()->withAttribute('shortCode', $shortCode); - $response = $this->action->__invoke($request, new Response()); + $response = $this->action->process($request, TestUtils::createDelegateMock()->reveal()); $this->assertEquals(500, $response->getStatusCode()); $this->assertTrue(strpos($response->getBody()->getContents(), RestUtils::UNKNOWN_ERROR) > 0); }