Extract ResponseRenderer dependency from LogoutController

Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
This commit is contained in:
Maurício Meneghini Fauth 2026-02-14 15:30:59 -03:00
parent 396d5f7b99
commit 43f54d4578
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
3 changed files with 11 additions and 17 deletions

View File

@ -451,7 +451,7 @@ return [
],
LogoutController::class => [
'class' => LogoutController::class,
'arguments' => [AuthenticationPluginFactory::class],
'arguments' => [AuthenticationPluginFactory::class, ResponseRenderer::class],
],
NavigationController::class => [
'class' => NavigationController::class,

View File

@ -11,19 +11,20 @@ use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Routing\Route;
#[Route('/logout', ['GET', 'POST'])]
final class LogoutController implements InvocableController
final readonly class LogoutController implements InvocableController
{
public function __construct(private readonly AuthenticationPluginFactory $authPluginFactory)
{
public function __construct(
private AuthenticationPluginFactory $authPluginFactory,
private ResponseRenderer $responseRenderer,
) {
}
public function __invoke(ServerRequest $request): Response
{
$responseRenderer = ResponseRenderer::getInstance();
if (! $request->isPost()) {
$responseRenderer->redirect('./index.php?route=/');
$this->responseRenderer->redirect('./index.php?route=/');
return $responseRenderer->response();
return $this->responseRenderer->response();
}
$authPlugin = $this->authPluginFactory->create();

View File

@ -9,20 +9,15 @@ use PhpMyAdmin\Http\Factory\ResponseFactory;
use PhpMyAdmin\Http\ServerRequest;
use PhpMyAdmin\Plugins\AuthenticationPlugin;
use PhpMyAdmin\Plugins\AuthenticationPluginFactory;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Tests\AbstractTestCase;
use PhpMyAdmin\Tests\Stubs\ResponseRenderer as ResponseRendererStub;
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
use PHPUnit\Framework\Attributes\CoversClass;
use ReflectionProperty;
#[CoversClass(LogoutController::class)]
class LogoutControllerTest extends AbstractTestCase
final class LogoutControllerTest extends AbstractTestCase
{
public function testValidLogout(): void
{
$responseStub = new ResponseRendererStub();
(new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, $responseStub);
$request = self::createStub(ServerRequest::class);
$request->method('isPost')->willReturn(true);
@ -34,10 +29,8 @@ class LogoutControllerTest extends AbstractTestCase
$factory = self::createStub(AuthenticationPluginFactory::class);
$factory->method('create')->willReturn($authPlugin);
$response = (new LogoutController($factory))($request);
$response = (new LogoutController($factory, new ResponseRenderer()))($request);
self::assertSame($expectedResponse, $response);
(new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, null);
}
}