Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / http-kernel / Tests / EventListener / SessionListenerTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\HttpKernel\Tests\EventListener;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\DependencyInjection\Container;
16 use Symfony\Component\HttpFoundation\Request;
17 use Symfony\Component\HttpFoundation\Response;
18 use Symfony\Component\HttpFoundation\Session\Session;
19 use Symfony\Component\HttpKernel\Event\GetResponseEvent;
20 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
21 use Symfony\Component\HttpKernel\EventListener\AbstractSessionListener;
22 use Symfony\Component\HttpKernel\EventListener\SessionListener;
23 use Symfony\Component\HttpKernel\HttpKernelInterface;
24
25 class SessionListenerTest extends TestCase
26 {
27     public function testOnlyTriggeredOnMasterRequest()
28     {
29         $listener = $this->getMockForAbstractClass(AbstractSessionListener::class);
30         $event = $this->getMockBuilder(GetResponseEvent::class)->disableOriginalConstructor()->getMock();
31         $event->expects($this->once())->method('isMasterRequest')->willReturn(false);
32         $event->expects($this->never())->method('getRequest');
33
34         // sub request
35         $listener->onKernelRequest($event);
36     }
37
38     public function testSessionIsSet()
39     {
40         $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
41
42         $container = new Container();
43         $container->set('session', $session);
44
45         $request = new Request();
46         $listener = new SessionListener($container);
47
48         $event = $this->getMockBuilder(GetResponseEvent::class)->disableOriginalConstructor()->getMock();
49         $event->expects($this->once())->method('isMasterRequest')->willReturn(true);
50         $event->expects($this->once())->method('getRequest')->willReturn($request);
51
52         $listener->onKernelRequest($event);
53
54         $this->assertTrue($request->hasSession());
55         $this->assertSame($session, $request->getSession());
56     }
57
58     public function testResponseIsPrivate()
59     {
60         $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
61         $session->expects($this->once())->method('isStarted')->willReturn(false);
62         $session->expects($this->once())->method('hasBeenStarted')->willReturn(true);
63
64         $container = new Container();
65         $container->set('session', $session);
66
67         $listener = new SessionListener($container);
68         $kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
69
70         $request = new Request();
71         $response = new Response();
72         $listener->onKernelRequest(new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
73         $listener->onKernelResponse(new FilterResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response));
74
75         $this->assertTrue($response->headers->hasCacheControlDirective('private'));
76         $this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate'));
77         $this->assertSame('0', $response->headers->getCacheControlDirective('max-age'));
78     }
79 }