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\HttpCache;
14 use Symfony\Component\HttpKernel\HttpKernel;
15 use Symfony\Component\HttpKernel\HttpKernelInterface;
16 use Symfony\Component\HttpFoundation\Request;
17 use Symfony\Component\HttpFoundation\Response;
18 use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
19 use Symfony\Component\EventDispatcher\EventDispatcher;
21 class TestMultipleHttpKernel extends HttpKernel implements ControllerResolverInterface
23 protected $bodies = array();
24 protected $statuses = array();
25 protected $headers = array();
26 protected $called = false;
27 protected $backendRequest;
29 public function __construct($responses)
31 foreach ($responses as $response) {
32 $this->bodies[] = $response['body'];
33 $this->statuses[] = $response['status'];
34 $this->headers[] = $response['headers'];
37 parent::__construct(new EventDispatcher(), $this);
40 public function getBackendRequest()
42 return $this->backendRequest;
45 public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = false)
47 $this->backendRequest = $request;
49 return parent::handle($request, $type, $catch);
52 public function getController(Request $request)
54 return array($this, 'callController');
57 public function getArguments(Request $request, $controller)
59 return array($request);
62 public function callController(Request $request)
66 $response = new Response(array_shift($this->bodies), array_shift($this->statuses), array_shift($this->headers));
71 public function hasBeenCalled()
76 public function reset()
78 $this->called = false;