summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Unit/Http/Exceptions/HttpExceptionTest.php26
-rw-r--r--tests/Unit/Middleware/ErrorHandlerTest.php40
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);
+ }
}