4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\HttpKernel\Tests\EventListener;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\HttpKernel\HttpCache\Esi;
16 use Symfony\Component\HttpKernel\EventListener\SurrogateListener;
17 use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
18 use Symfony\Component\HttpKernel\KernelEvents;
19 use Symfony\Component\HttpKernel\HttpKernelInterface;
20 use Symfony\Component\HttpFoundation\Response;
21 use Symfony\Component\HttpFoundation\Request;
22 use Symfony\Component\EventDispatcher\EventDispatcher;
24 class SurrogateListenerTest extends TestCase
26 public function testFilterDoesNothingForSubRequests()
28 $dispatcher = new EventDispatcher();
29 $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
30 $response = new Response('foo <esi:include src="" />');
31 $listener = new SurrogateListener(new Esi());
33 $dispatcher->addListener(KernelEvents::RESPONSE, array($listener, 'onKernelResponse'));
34 $event = new FilterResponseEvent($kernel, new Request(), HttpKernelInterface::SUB_REQUEST, $response);
35 $dispatcher->dispatch(KernelEvents::RESPONSE, $event);
37 $this->assertEquals('', $event->getResponse()->headers->get('Surrogate-Control'));
40 public function testFilterWhenThereIsSomeEsiIncludes()
42 $dispatcher = new EventDispatcher();
43 $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
44 $response = new Response('foo <esi:include src="" />');
45 $listener = new SurrogateListener(new Esi());
47 $dispatcher->addListener(KernelEvents::RESPONSE, array($listener, 'onKernelResponse'));
48 $event = new FilterResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
49 $dispatcher->dispatch(KernelEvents::RESPONSE, $event);
51 $this->assertEquals('content="ESI/1.0"', $event->getResponse()->headers->get('Surrogate-Control'));
54 public function testFilterWhenThereIsNoEsiIncludes()
56 $dispatcher = new EventDispatcher();
57 $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock();
58 $response = new Response('foo');
59 $listener = new SurrogateListener(new Esi());
61 $dispatcher->addListener(KernelEvents::RESPONSE, array($listener, 'onKernelResponse'));
62 $event = new FilterResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
63 $dispatcher->dispatch(KernelEvents::RESPONSE, $event);
65 $this->assertEquals('', $event->getResponse()->headers->get('Surrogate-Control'));