/
githubmirror
/
symfony
Обзор
Документация
Войти
/
githubmirror
/
symfony
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
8.2
src/Symfony/Component/Security/Http/Tests/FirewallTest.php
164 строки
5 KB
Nicolas Grekas
* 7.4: (27 commits)
23 янв 2026, 14:07
23 янв 2026, 14:07
d35d5c0
Код
Авторство
О чём код?
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Http\Tests; use PHPUnit\Framework\TestCase; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Security\Http\Firewall; use Symfony\Component\Security\Http\Firewall\AbstractListener; use Symfony\Component\Security\Http\Firewall\ExceptionListener; use Symfony\Component\Security\Http\Firewall\FirewallListenerInterface; use Symfony\Component\Security\Http\FirewallMapInterface; class FirewallTest extends TestCase { public function testOnKernelRequestRegistersExceptionListener() { $dispatcher = new EventDispatcher(); $listener = $this->createMock(ExceptionListener::class); $listener ->expects($this->once()) ->method('register') ->with($this->equalTo($dispatcher)) ; $request = new Request(); $map = $this->createMock(FirewallMapInterface::class); $map ->expects($this->once()) ->method('getListeners') ->with($this->equalTo($request)) ->willReturn([[], $listener, null]) ; $event = new RequestEvent($this->createStub(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST); $firewall = new Firewall($map, $dispatcher); $firewall->onKernelRequest($event); } public function testOnKernelRequestStopsWhenThereIsAResponse() { $listener = new class extends AbstractListener { public int $callCount = 0; public function supports(Request $request): ?bool { return true; } public function authenticate(RequestEvent $event): void { ++$this->callCount; } }; $map = $this->createMock(FirewallMapInterface::class); $map ->expects($this->once()) ->method('getListeners') ->willReturn([[$listener, $listener], null, null]) ; $event = new RequestEvent($this->createStub(HttpKernelInterface::class), new Request(), HttpKernelInterface::MAIN_REQUEST); $event->setResponse(new Response()); $firewall = new Firewall($map, new EventDispatcher()); $firewall->onKernelRequest($event); $this->assertSame(1, $listener->callCount); } public function testOnKernelRequestWithSubRequest() { $map = $this->createMock(FirewallMapInterface::class); $map ->expects($this->never()) ->method('getListeners') ; $event = new RequestEvent( $this->createStub(HttpKernelInterface::class), new Request(), HttpKernelInterface::SUB_REQUEST ); $firewall = new Firewall($map, new EventDispatcher()); $firewall->onKernelRequest($event); $this->assertFalse($event->hasResponse()); } public function testFirewallListenersAreCalled() { $calledListeners = []; $firewallListener = new class($calledListeners) implements FirewallListenerInterface { public function __construct(private array &$calledListeners) { } public function supports(Request $request): ?bool { return true; } public function authenticate(RequestEvent $event): void { $this->calledListeners[] = 'firewallListener'; } public static function getPriority(): int { return 0; } }; $callableFirewallListener = new class($calledListeners) extends AbstractListener { public function __construct(private array &$calledListeners) { } public function supports(Request $request): ?bool { return true; } public function authenticate(RequestEvent $event): void { $this->calledListeners[] = 'callableFirewallListener'; } }; $request = new Request(); $map = $this->createMock(FirewallMapInterface::class); $map ->expects($this->once()) ->method('getListeners') ->with($this->equalTo($request)) ->willReturn([[$firewallListener, $callableFirewallListener], null, null]) ; $event = new RequestEvent($this->createStub(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST); $firewall = new Firewall($map, new EventDispatcher()); $firewall->onKernelRequest($event); $this->assertSame(['firewallListener', 'callableFirewallListener'], $calledListeners); } }