* * 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:----EjdtCbsRrboOuGQkGXJgXAmTU6JRsROeubl5NfjDsX02Ek7Zhn816ctgLyScZFLSLwRzF2d3++98bRckxWwrl81WKzKXimvPr52w25zvWx+8OwSgIu4lWYifwVOz52RoPSZYdO2bbvqMCgKUWJOKyXNS+16fhqyrdnLF/Ph0t1iq3C6/FrcZni9Ua70Vl8OVVIGfmWPVQMHW2A6Sv2uH60/453QOLIqLzKwqV7TyVv68GpGtqbpoo9gnBp724lmqbJDYbzcKUNj++neBpAMDxxSf/9RKYpxeD7Pwb+B4tDlfSyGkdojOneDvo/FCG5uH4JCtGCDbDNNnbBTCDwJEFG073Fnkz0AaBHl6VJXShOgIXAWhkxPxoHEgvnl4+qMYERDP4TngpMmJ1sy9AGuDY+1VLmEqvgg5bioErVVLky0Zg4fn7DTH5Z5kKLx/OVW4tY+4Kn7gUszIdsPFw79zbUlTwShzOk1VB/8yDa4SjAgEoN8wV1EdARvBfAZti4s4uAT9iozdPtEoXU3Kuwj+DGExJgECYJnwUfWNX7glmeZncKOP1Wn/Mnt+hwvywl79ZBbvrJD0RKj4NORJS64OCE8830pqSOZQqNtsk6ZlKNI1oSsJcAR0g0fZr8k7f5gOH+Ov/DkJRaPzZ/A0ybiwR57Ri2PVghd1QDgJc7e3Bto=----ATTACHMENT:----NzUxNjQzODkxMzgzNjgxOSA2NDkzMzU5MTE2NTE3NDg0IDU5MTg3MzY1NDEyMDA0NA==