| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 | 
							- <?php
 - 
 - /*
 -  * This file is part of the Symfony package.
 -  *
 -  * (c) Fabien Potencier <fabien@symfony.com>
 -  *
 -  * For the full copyright and license information, please view the LICENSE
 -  * file that was distributed with this source code.
 -  */
 - 
 - namespace Symfony\Tests\Component\HttpKernel;
 - 
 - use Symfony\Component\HttpKernel\HttpKernel;
 - use Symfony\Component\HttpKernel\HttpKernelInterface;
 - use Symfony\Component\HttpKernel\KernelEvents;
 - use Symfony\Component\HttpFoundation\Request;
 - use Symfony\Component\HttpFoundation\Response;
 - use Symfony\Component\EventDispatcher\EventDispatcher;
 - 
 - class HttpKernelTest extends \PHPUnit_Framework_TestCase
 - {
 -     /**
 -      * @expectedException RuntimeException
 -      */
 -     public function testHandleWhenControllerThrowsAnExceptionAndRawIsTrue()
 -     {
 -         $kernel = new HttpKernel(new EventDispatcher(), $this->getResolver(function () { throw new \RuntimeException(); }));
 - 
 -         $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
 -     }
 - 
 -     /**
 -      * @expectedException RuntimeException
 -      */
 -     public function testHandleWhenControllerThrowsAnExceptionAndRawIsFalseAndNoListenerIsRegistered()
 -     {
 -         $kernel = new HttpKernel(new EventDispatcher(), $this->getResolver(function () { throw new \RuntimeException(); }));
 - 
 -         $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, false);
 -     }
 - 
 -     public function testHandleWhenControllerThrowsAnExceptionAndRawIsFalse()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $dispatcher->addListener(KernelEvents::EXCEPTION, function ($event)
 -         {
 -             $event->setResponse(new Response($event->getException()->getMessage()));
 -         });
 - 
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver(function () { throw new \RuntimeException('foo'); }));
 - 
 -         $this->assertEquals('foo', $kernel->handle(new Request())->getContent());
 -     }
 - 
 -     public function testHandleWhenAListenerReturnsAResponse()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $dispatcher->addListener(KernelEvents::REQUEST, function ($event)
 -         {
 -             $event->setResponse(new Response('hello'));
 -         });
 - 
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver());
 - 
 -         $this->assertEquals('hello', $kernel->handle(new Request())->getContent());
 -     }
 - 
 -     /**
 -      * @expectedException Symfony\Component\HttpKernel\Exception\NotFoundHttpException
 -      */
 -     public function testHandleWhenNoControllerIsFound()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver(false));
 - 
 -         $kernel->handle(new Request());
 -     }
 - 
 -     /**
 -      * @expectedException LogicException
 -      */
 -     public function testHandleWhenTheControllerIsNotACallable()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver('foobar'));
 - 
 -         $kernel->handle(new Request());
 -     }
 - 
 -     public function testHandleWhenTheControllerIsAClosure()
 -     {
 -         $response = new Response('foo');
 -         $dispatcher = new EventDispatcher();
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver(function () use ($response) { return $response; }));
 - 
 -         $this->assertSame($response, $kernel->handle(new Request()));
 -     }
 - 
 -     public function testHandleWhenTheControllerIsAnObjectWithInvoke()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver(new Controller()));
 - 
 -         $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
 -     }
 - 
 -     public function testHandleWhenTheControllerIsAFunction()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver('Symfony\Tests\Component\HttpKernel\controller_func'));
 - 
 -         $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
 -     }
 - 
 -     public function testHandleWhenTheControllerIsAnArray()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver(array(new Controller(), 'controller')));
 - 
 -         $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
 -     }
 - 
 -     public function testHandleWhenTheControllerIsAStaticArray()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver(array('Symfony\Tests\Component\HttpKernel\Controller', 'staticcontroller')));
 - 
 -         $this->assertResponseEquals(new Response('foo'), $kernel->handle(new Request()));
 -     }
 - 
 -     /**
 -      * @expectedException LogicException
 -      */
 -     public function testHandleWhenTheControllerDoesNotReturnAResponse()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver(function () { return 'foo'; }));
 - 
 -         $kernel->handle(new Request());
 -     }
 - 
 -     public function testHandleWhenTheControllerDoesNotReturnAResponseButAViewIsRegistered()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $dispatcher->addListener(KernelEvents::VIEW, function ($event)
 -         {
 -             $event->setResponse(new Response($event->getControllerResult()));
 -         });
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver(function () { return 'foo'; }));
 - 
 -         $this->assertEquals('foo', $kernel->handle(new Request())->getContent());
 -     }
 - 
 -     public function testHandleWithAResponseListener()
 -     {
 -         $dispatcher = new EventDispatcher();
 -         $dispatcher->addListener(KernelEvents::RESPONSE, function ($event)
 -         {
 -             $event->setResponse(new Response('foo'));
 -         });
 -         $kernel = new HttpKernel($dispatcher, $this->getResolver());
 - 
 -         $this->assertEquals('foo', $kernel->handle(new Request())->getContent());
 -     }
 - 
 -     protected function getResolver($controller = null)
 -     {
 -         if (null === $controller) {
 -             $controller = function() { return new Response('Hello'); };
 -         }
 - 
 -         $resolver = $this->getMock('Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface');
 -         $resolver->expects($this->any())
 -             ->method('getController')
 -             ->will($this->returnValue($controller));
 -         $resolver->expects($this->any())
 -             ->method('getArguments')
 -             ->will($this->returnValue(array()));
 - 
 -         return $resolver;
 -     }
 - 
 -     protected function assertResponseEquals(Response $expected, Response $actual)
 -     {
 -         $expected->setDate($actual->getDate());
 -         $this->assertEquals($expected, $actual);
 -     }
 - }
 - 
 - class Controller
 - {
 -     public function __invoke()
 -     {
 -         return new Response('foo');
 -     }
 - 
 -     public function controller()
 -     {
 -         return new Response('foo');
 -     }
 - 
 -     static public function staticController()
 -     {
 -         return new Response('foo');
 -     }
 - }
 - 
 - function controller_func()
 - {
 -     return new Response('foo');
 - }
 
 
  |