diff --git a/lib/Alchemy/Phrasea/Controller/Api/Result.php b/lib/Alchemy/Phrasea/Controller/Api/Result.php index fd849e10b2..b2743cf197 100644 --- a/lib/Alchemy/Phrasea/Controller/Api/Result.php +++ b/lib/Alchemy/Phrasea/Controller/Api/Result.php @@ -112,7 +112,7 @@ class Result * * @return Result * - * @throws InvalidArgumentException + * @throws \InvalidArgumentException */ public static function createError(Request $request, $code, $message) { @@ -139,6 +139,10 @@ class Result $errorType = self::ERROR_METHODNOTALLOWED; $errorMessage = 'Attempting to use POST with a GET-only endpoint, or vice-versa'; break; + case 406: + $errorType = self::ERROR_UNACCEPTABLE; + $errorMessage = 'Request content type is not acceptable'; + break; case 500: $errorType = self::ERROR_INTERNALSERVERERROR; $errorMessage = 'Internal Server Error'; diff --git a/lib/Alchemy/Phrasea/Controller/Prod/BridgeController.php b/lib/Alchemy/Phrasea/Controller/Prod/BridgeController.php index fce6dfd3ad..fbb2f31236 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/BridgeController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/BridgeController.php @@ -9,11 +9,9 @@ */ namespace Alchemy\Phrasea\Controller\Prod; -use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Helper\Record as RecordHelper; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\HttpException; class BridgeController extends Controller diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/ApiExceptionHandlerSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/ApiExceptionHandlerSubscriber.php index 17a4539c28..1e5da4496d 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/ApiExceptionHandlerSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/ApiExceptionHandlerSubscriber.php @@ -55,10 +55,8 @@ class ApiExceptionHandlerSubscriber implements EventSubscriberInterface } elseif ($e instanceof NotFoundHttpException) { $code = 404; } elseif ($e instanceof HttpExceptionInterface) { - if (503 === $e->getStatusCode()) { - $code = Result::ERROR_MAINTENANCE; - } else if (406 === $e->getStatusCode()) { - $code = Result::ERROR_UNACCEPTABLE; + if (in_array($e->getStatusCode(), [503, 406])) { + $code = $e->getStatusCode(); } else { $code = 500; } diff --git a/tests/Alchemy/Tests/Phrasea/Controller/Api/ApiTestCase.php b/tests/Alchemy/Tests/Phrasea/Controller/Api/ApiTestCase.php index c20aecc46d..99680f8fd4 100644 --- a/tests/Alchemy/Tests/Phrasea/Controller/Api/ApiTestCase.php +++ b/tests/Alchemy/Tests/Phrasea/Controller/Api/ApiTestCase.php @@ -92,7 +92,10 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase $route, $this->getParameters(), $this->getAddRecordFile(), - array('HTTP_Accept' => $this->getAcceptMimeType()), + [ + 'HTTP_ACCEPT' => $this->getAcceptMimeType(), + 'CONTENT_TYPE' => 'application/json', + ], json_encode(array('stories' => array($story))) ); $content = $this->unserialize(self::$DI['client']->getResponse()->getContent()); @@ -134,7 +137,10 @@ abstract class ApiTestCase extends \PhraseanetWebTestCase $route, $this->getParameters(), $this->getAddRecordFile(), - array('HTTP_Accept' => $this->getAcceptMimeType()), + [ + 'HTTP_ACCEPT' => $this->getAcceptMimeType(), + 'CONTENT_TYPE' => 'application/json', + ], json_encode(array('story_records' => array($records))) ); $content = $this->unserialize(self::$DI['client']->getResponse()->getContent());