diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Unit/Http/Exceptions/HttpExceptionTest.php | 26 | ||||
-rw-r--r-- | tests/Unit/Middleware/ErrorHandlerTest.php | 40 |
2 files changed, 66 insertions, 0 deletions
diff --git a/tests/Unit/Http/Exceptions/HttpExceptionTest.php b/tests/Unit/Http/Exceptions/HttpExceptionTest.php new file mode 100644 index 00000000..ce2b064d --- /dev/null +++ b/tests/Unit/Http/Exceptions/HttpExceptionTest.php @@ -0,0 +1,26 @@ +<?php + +namespace Engelsystem\Test\Unit\Http\Exceptions; + +use Engelsystem\Http\Exceptions\HttpException; +use PHPUnit\Framework\TestCase; + +class HttpExceptionTest extends TestCase +{ + /** + * @covers \Engelsystem\Http\Exceptions\HttpException::__construct + * @covers \Engelsystem\Http\Exceptions\HttpException::getStatusCode + * @covers \Engelsystem\Http\Exceptions\HttpException::getHeaders + */ + public function testConstruct() + { + $exception = new HttpException(123); + $this->assertEquals(123, $exception->getStatusCode()); + $this->assertEquals('', $exception->getMessage()); + $this->assertEquals([], $exception->getHeaders()); + + $exception = new HttpException(404, 'Nothing found', ['page' => '/test']); + $this->assertEquals('Nothing found', $exception->getMessage()); + $this->assertEquals(['page' => '/test'], $exception->getHeaders()); + } +} diff --git a/tests/Unit/Middleware/ErrorHandlerTest.php b/tests/Unit/Middleware/ErrorHandlerTest.php index abf9c52f..c0834591 100644 --- a/tests/Unit/Middleware/ErrorHandlerTest.php +++ b/tests/Unit/Middleware/ErrorHandlerTest.php @@ -2,6 +2,7 @@ namespace Engelsystem\Test\Unit\Middleware; +use Engelsystem\Http\Exceptions\HttpException; use Engelsystem\Http\Response; use Engelsystem\Middleware\ErrorHandler; use Engelsystem\Test\Unit\Middleware\Stub\ReturnResponseMiddlewareHandler; @@ -85,4 +86,43 @@ class ErrorHandlerTest extends TestCase $errorHandler->process($request, $returnResponseHandler); $errorHandler->process($request, $returnResponseHandler); } + + /** + * @covers \Engelsystem\Middleware\ErrorHandler::process + */ + public function testProcessException() + { + /** @var ServerRequestInterface|MockObject $request */ + $request = $this->createMock(ServerRequestInterface::class); + /** @var ResponseInterface|MockObject $psrResponse */ + $psrResponse = $this->getMockForAbstractClass(ResponseInterface::class); + /** @var ReturnResponseMiddlewareHandler|MockObject $returnResponseHandler */ + $returnResponseHandler = $this->getMockBuilder(ReturnResponseMiddlewareHandler::class) + ->disableOriginalConstructor() + ->getMock(); + + $psrResponse->expects($this->once()) + ->method('getStatusCode') + ->willReturn(300); + + $returnResponseHandler->expects($this->once()) + ->method('handle') + ->willReturnCallback(function () { + throw new HttpException(300, 'Some response', ['lor' => 'em']); + }); + + /** @var ErrorHandler|MockObject $errorHandler */ + $errorHandler = $this->getMockBuilder(ErrorHandler::class) + ->disableOriginalConstructor() + ->setMethods(['createResponse']) + ->getMock(); + + $errorHandler->expects($this->once()) + ->method('createResponse') + ->with('Some response', 300, ['lor' => 'em']) + ->willReturn($psrResponse); + + $return = $errorHandler->process($request, $returnResponseHandler); + $this->assertEquals($psrResponse, $return); + } } |