summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Middleware/ErrorHandler.php8
-rw-r--r--tests/Unit/Middleware/ErrorHandlerTest.php20
2 files changed, 26 insertions, 2 deletions
diff --git a/src/Middleware/ErrorHandler.php b/src/Middleware/ErrorHandler.php
index c99ac24f..9fc34722 100644
--- a/src/Middleware/ErrorHandler.php
+++ b/src/Middleware/ErrorHandler.php
@@ -46,7 +46,13 @@ class ErrorHandler implements MiddlewareInterface
}
$statusCode = $response->getStatusCode();
- if ($statusCode < 400 || !$response instanceof Response) {
+ $contentType = $response->getHeader('content-type');
+ $contentType = array_shift($contentType);
+ if (
+ $statusCode < 400
+ || !$response instanceof Response
+ || !empty($contentType)
+ ) {
return $response;
}
diff --git a/tests/Unit/Middleware/ErrorHandlerTest.php b/tests/Unit/Middleware/ErrorHandlerTest.php
index c0834591..cce752d1 100644
--- a/tests/Unit/Middleware/ErrorHandlerTest.php
+++ b/tests/Unit/Middleware/ErrorHandlerTest.php
@@ -32,6 +32,10 @@ class ErrorHandlerTest extends TestCase
$psrResponse->expects($this->once())
->method('getStatusCode')
->willReturn(505);
+ $psrResponse->expects($this->once())
+ ->method('getHeader')
+ ->with('content-type')
+ ->willReturn([]);
$errorHandler = new ErrorHandler($twigLoader);
@@ -41,13 +45,22 @@ class ErrorHandlerTest extends TestCase
/** @var Response|MockObject $response */
$response = $this->createMock(Response::class);
- $response->expects($this->exactly(3))
+ $response->expects($this->exactly(4))
->method('getStatusCode')
->willReturnOnConsecutiveCalls(
200,
418,
+ 505,
505
);
+ $response->expects($this->exactly(4))
+ ->method('getHeader')
+ ->willReturnOnConsecutiveCalls(
+ [],
+ [],
+ [],
+ ['application/json']
+ );
$returnResponseHandler->setResponse($response);
$return = $errorHandler->process($request, $returnResponseHandler);
@@ -85,6 +98,7 @@ class ErrorHandlerTest extends TestCase
$errorHandler->process($request, $returnResponseHandler);
$errorHandler->process($request, $returnResponseHandler);
+ $errorHandler->process($request, $returnResponseHandler);
}
/**
@@ -104,6 +118,10 @@ class ErrorHandlerTest extends TestCase
$psrResponse->expects($this->once())
->method('getStatusCode')
->willReturn(300);
+ $psrResponse->expects($this->once())
+ ->method('getHeader')
+ ->with('content-type')
+ ->willReturn([]);
$returnResponseHandler->expects($this->once())
->method('handle')