62 lines
2.1 KiB
PHP
62 lines
2.1 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace NoccyLabs\Mercureact\Http\Middleware;
|
||
|
|
||
|
use NoccyLabs\Mercureact\Configuration;
|
||
|
use NoccyLabs\Mercureact\Exception\SecurityException;
|
||
|
use PHPUnit\Framework\Attributes\CoversClass;
|
||
|
use Psr\Http\Message\ServerRequestInterface;
|
||
|
use Psr\Log\NullLogger;
|
||
|
use React\Http\Message\Response;
|
||
|
use React\Http\Message\ServerRequest;
|
||
|
|
||
|
#[CoversClass(ResponseMiddleware::class)]
|
||
|
#[CoversClass(Configuration::class)]
|
||
|
class ResponseMiddlewareTest extends \PHPUnit\Framework\TestCase
|
||
|
{
|
||
|
|
||
|
public function testResponseIsValid()
|
||
|
{
|
||
|
$logger = new NullLogger();
|
||
|
$config = Configuration::createDefault();
|
||
|
|
||
|
$request = new ServerRequest("GET", "/", serverParams:['REMOTE_ADDR'=>'127.0.0.1']);
|
||
|
|
||
|
$return = null; // chained response
|
||
|
|
||
|
$next = function ($chainedRequest) use ($request, &$return) {
|
||
|
$this->assertInstanceOf(ServerRequestInterface::class, $chainedRequest);
|
||
|
$return = $chainedRequest;
|
||
|
return "response";
|
||
|
};
|
||
|
|
||
|
$middleware = new ResponseMiddleware($config, $logger);
|
||
|
$middleware->__invoke($request, $next)->then(function ($result) {
|
||
|
$this->assertInstanceOf(Response::class, $result);
|
||
|
$this->assertEquals("response", $result->getBody());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
public function testSecurityExceptionsAreHandled()
|
||
|
{
|
||
|
$logger = new NullLogger();
|
||
|
$config = Configuration::createDefault();
|
||
|
|
||
|
$request = new ServerRequest("GET", "/", serverParams:['REMOTE_ADDR'=>'127.0.0.1']);
|
||
|
|
||
|
$return = null; // chained response
|
||
|
|
||
|
$next = function ($chainedRequest) use ($request, &$return) {
|
||
|
$this->assertInstanceOf(ServerRequestInterface::class, $chainedRequest);
|
||
|
$return = $chainedRequest;
|
||
|
throw new SecurityException();
|
||
|
};
|
||
|
|
||
|
$middleware = new ResponseMiddleware($config, $logger);
|
||
|
$middleware->__invoke($request, $next)->then(function ($result) {
|
||
|
$this->assertInstanceOf(Response::class, $result);
|
||
|
$this->assertEquals("Access Denied", (string)$result->getBody());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
}
|