phpmyadmin/tests/unit/Http/Middleware/TokenRequestParamCheckingTest.php
Maurício Meneghini Fauth 55d6f9acb4
Extract dependency from Middleware\TokenRequestParamChecking
Uses DI instead.

Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
2026-02-13 21:22:17 -03:00

66 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Http\Middleware;
use PhpMyAdmin\Dbal\DatabaseInterface;
use PhpMyAdmin\Http\Factory\ServerRequestFactory;
use PhpMyAdmin\Http\Middleware\TokenRequestParamChecking;
use PhpMyAdmin\Tests\Stubs\DbiDummy;
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\TestCase;
use Psr\Http\Message\ResponseInterface;
#[CoversClass(TokenRequestParamChecking::class)]
final class TokenRequestParamCheckingTest extends TestCase
{
public function testCheckTokenRequestParam(): void
{
$_POST = [];
$middleware = new TokenRequestParamChecking(new ResponseRenderer());
$_POST['test'] = 'test';
$_SESSION[' PMA_token '] = 'token';
$request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/')
->withParsedBody(['token' => 'token']);
$response = $middleware->checkTokenRequestParam($request);
self::assertNull($response);
self::assertArrayHasKey('test', $_POST);
self::assertSame('test', $_POST['test']);
}
public function testCheckTokenRequestParamWithoutToken(): void
{
$_POST = [];
$middleware = new TokenRequestParamChecking(new ResponseRenderer());
$_POST['test'] = 'test';
$request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/');
$response = $middleware->checkTokenRequestParam($request);
self::assertNull($response);
self::assertArrayNotHasKey('test', $_POST);
}
public function testCheckTokenRequestParamWithTokenMismatch(): void
{
$responseRenderer = new ResponseRenderer();
$middleware = new TokenRequestParamChecking($responseRenderer);
$dbi = DatabaseInterface::getInstanceForTest(new DbiDummy());
DatabaseInterface::$instance = $dbi;
$_SESSION[' PMA_token '] = 'mismatch';
$responseRenderer->setAjax(true);
$request = ServerRequestFactory::create()->createServerRequest('POST', 'http://example.com/')
->withParsedBody(['token' => 'token', 'ajax_request' => 'true']);
$response = $middleware->checkTokenRequestParam($request);
self::assertInstanceOf(ResponseInterface::class, $response);
}
}