* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\HttpKernel\Tests\EventListener; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\Container; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener; use Symfony\Component\HttpKernel\EventListener\SessionListener; use Symfony\Component\HttpKernel\HttpKernelInterface; class SessionListenerTest extends TestCase { public function testOnlyTriggeredOnMasterRequest() { $listener = $this->getMockForAbstractClass(AbstractSessionListener::class); $event = $this->getMockBuilder(GetResponseEvent::class)->disableOriginalConstructor()->getMock(); $event->expects($this->once())->method('isMasterRequest')->willReturn(false); $event->expects($this->never())->method('getRequest'); // sub request $listener->onKernelRequest($event); } public function testSessionIsSet() { $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock(); $container = new Container(); $container->set('session', $session); $request = new Request(); $listener = new SessionListener($container); $event = $this->getMockBuilder(GetResponseEvent::class)->disableOriginalConstructor()->getMock(); $event->expects($this->once())->method('isMasterRequest')->willReturn(true); $event->expects($this->once())->method('getRequest')->willReturn($request); $listener->onKernelRequest($event); $this->assertTrue($request->hasSession()); $this->assertSame($session, $request->getSession()); } public function testResponseIsPrivate() { $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock(); $session->expects($this->once())->method('isStarted')->willReturn(false); $session->expects($this->once())->method('hasBeenStarted')->willReturn(true); $container = new Container(); $container->set('session', $session); $listener = new SessionListener($container); $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock(); $request = new Request(); $response = new Response(); $listener->onKernelRequest(new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST)); $listener->onKernelResponse(new FilterResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response)); $this->assertTrue($response->headers->hasCacheControlDirective('private')); $this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate')); $this->assertSame('0', $response->headers->getCacheControlDirective('max-age')); } } __halt_compiler();----SIGNATURE:----HKVq7FsvLr7dri3u5rKOeqGM/QEpHgMxWcJv9ibb9DCNPunpEBFtpn7jVTfZt5qFBgLGoxYqdFafPCSgqkDY0dxZVRhcfuSJoCX/SvcI2PX7Efm2lT0DdMsr9yWpmNhzqW7QVH31WYc1UnkuzEoW5TIOxUh27m2Wi74G0wYJipg+Dwao9W2TFkl5A7dMkAISu5UmN4rq8S4CQgUUTeWiuzSndggfUP4U+OfYmOsV/y1phHg7qjW0P6/S05fDkpCba+fvAyxI7CoT5wQ14gpS4yn/TdpKL0Du7VSk9QepsgWd+OPgbFhrhJeNtvLYynsX5Cp0/l3c5r9+SLEAmsRI0yEUROKjlk2cIhp7BW5WJlZgLpoPFz9Lu58n60LMSe5KbhqEUHaXnxyaqGj99qTPbRKBB4XW7rXmwkIC79J8MBlifYVCucGunXJU01O6d+qgxJrEkqgHODKfcEH2ajfe373hOupD+MsyTcO8TdtrMukJjRPmsqvUQFL1jCrbr1PaJmJ3aF1WnEqLSATo+T3VQbGntnw4fj4vkZxa8eWtTPza6KwmPEAZpJaYL7yEblHWe+oovsTkLMXCt3DUCTHwQk6tbl4nUrP9sr7+VYsYJ23cWU4jF3cX7VVzfUmwt/SfvGcH+x14A9MlDGsTq5Aa9Fv6v4fnr6m5TEWINXjD9L4=----ATTACHMENT:----OTQzNTM4MDM4MTE5MzQxNCA5MTA1NzE1OTQ0MDM2MTk0IDU5MjcwMDA2Nzg3NzU4NzU=