public function ContainerAwareHttpKernelTest::testHandleRestoresThePreviousRequestOnException

@dataProvider getProviderTypes

File

drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/DependencyInjection/ContainerAwareHttpKernelTest.php, line 102

Class

ContainerAwareHttpKernelTest

Namespace

Symfony\Component\HttpKernel\Tests\DependencyInjection

Code

public function testHandleRestoresThePreviousRequestOnException($type) {
  $request = new Request();
  $expected = new \Exception();
  $container = $this
    ->getMock('Symfony\\Component\\DependencyInjection\\ContainerInterface');
  $container
    ->expects($this
    ->once())
    ->method('enterScope')
    ->with($this
    ->equalTo('request'));
  $container
    ->expects($this
    ->once())
    ->method('leaveScope')
    ->with($this
    ->equalTo('request'));
  $container
    ->expects($this
    ->at(0))
    ->method('hasScope')
    ->with($this
    ->equalTo('request'))
    ->will($this
    ->returnValue(true));

  // enterScope()
  $container
    ->expects($this
    ->at(2))
    ->method('set')
    ->with($this
    ->equalTo('request'), $this
    ->equalTo($request), $this
    ->equalTo('request'));
  $container
    ->expects($this
    ->at(3))
    ->method('set')
    ->with($this
    ->equalTo('request'), $this
    ->equalTo(null), $this
    ->equalTo('request'));
  $dispatcher = new EventDispatcher();
  $resolver = $this
    ->getMock('Symfony\\Component\\HttpKernel\\Controller\\ControllerResolverInterface');
  $kernel = new ContainerAwareHttpKernel($dispatcher, $container, $resolver);
  $controller = function () use ($expected) {
    throw $expected;
  };
  $resolver
    ->expects($this
    ->once())
    ->method('getController')
    ->with($request)
    ->will($this
    ->returnValue($controller));
  $resolver
    ->expects($this
    ->once())
    ->method('getArguments')
    ->with($request, $controller)
    ->will($this
    ->returnValue(array()));
  try {
    $kernel
      ->handle($request, $type);
    $this
      ->fail('->handle() suppresses the controller exception');
  } catch (\PHPUnit_Framework_Exception $exception) {
    throw $exception;
  } catch (\Exception $actual) {
    $this
      ->assertSame($expected, $actual, '->handle() throws the controller exception');
  }
}