* * 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:----G7g/+61jlIRQrzeaYNbno8eRmZ5pWQz9+93m6FlIuo7grdsBEyeA+ZOM/DOuSP6k7ftS+gEnHdoEZm9rh2kElzYpOrMg6AN91R9knqsUVgXVMQq74+YXYDTz5MAUlNF4wfCRu+qpeJMlBoosofhcNWtRpoWkpkFtK/MXax24mlVae6BZ88AeJfz0PqmkjMyK3qdLBYQpKr9WOJrf9k1eriLO8hDuEJTUQrUhVuvlHw5CRMSyndpuzWP7gHlO0ZyCLUEJllQif/Ce4W3KvSh7cvtLcWQBx7UJiK3OvUbtDyNZKW4L8ESIzfKHLZuXRlCsXZsJ2laBiZ7MqnG8Xdb8GCxQcdtEyDig5sKWBp9FxjC6YAdUHYtT9l+RDPWYZz4uvLX+vUeYhVYJVrL0Y5R3qa5I81MrxK9WK9c20NOJXTpNVQlalXA/RvLWdMmD+lGiLI/Pq4r5QM8ndkbDZWIqPB+DO+zRZukGN3DUESK5E9IQNYu5k2yt7fWSK9tsM1n2SLcQ/8u4JoyeObSR8Vlt0dJxySx3OlyIoRG+W2KRoMMXn4zq+vVarUxZjX8C2KHPr0hFgWr9ZBzes3aIbhvIb3k7Y3/1Bh4WgRdjtDrkM6zzJ6A1vzLg7lxvNylaNYvwblJzgh1DdtP2OvOe77TCg/JnU2iD7+3KDMXLBh+zUG4=----ATTACHMENT:----NzUyNzIyNjQ2MzE2NjQ4NCA0Nzc2OTY2NDk0NjIzODA1IDMwMjg3ODc2OTM4OTEzMjQ=