+ public function testHandleAllowChangingControllerArguments()
+ {
+ $dispatcher = new EventDispatcher();
+ $dispatcher->addListener(KernelEvents::CONTROLLER_ARGUMENTS, function (FilterControllerArgumentsEvent $event) {
+ $event->setArguments(array('foo'));
+ });
+
+ $kernel = $this->getHttpKernel($dispatcher, function ($content) { return new Response($content); });
+
+ $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
+ }
+
+ public function testHandleAllowChangingControllerAndArguments()
+ {
+ $dispatcher = new EventDispatcher();
+ $dispatcher->addListener(KernelEvents::CONTROLLER_ARGUMENTS, function (FilterControllerArgumentsEvent $event) {
+ $oldController = $event->getController();
+ $oldArguments = $event->getArguments();
+
+ $newController = function ($id) use ($oldController, $oldArguments) {
+ $response = call_user_func_array($oldController, $oldArguments);
+
+ $response->headers->set('X-Id', $id);
+
+ return $response;
+ };
+
+ $event->setController($newController);
+ $event->setArguments(array('bar'));
+ });
+
+ $kernel = $this->getHttpKernel($dispatcher, function ($content) { return new Response($content); }, null, array('foo'));
+
+ $this->assertResponseEquals(new Response('foo', 200, array('X-Id' => 'bar')), $kernel->handle(new Request()));
+ }
+