You are here

class ExceptionHandlerTest in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/symfony/debug/Tests/ExceptionHandlerTest.php \Symfony\Component\Debug\Tests\ExceptionHandlerTest

Hierarchy

  • class \Symfony\Component\Debug\Tests\ExceptionHandlerTest extends \Symfony\Component\Debug\Tests\PHPUnit_Framework_TestCase

Expanded class hierarchy of ExceptionHandlerTest

File

vendor/symfony/debug/Tests/ExceptionHandlerTest.php, line 21

Namespace

Symfony\Component\Debug\Tests
View source
class ExceptionHandlerTest extends \PHPUnit_Framework_TestCase {
  protected function setUp() {
    testHeader();
  }
  protected function tearDown() {
    testHeader();
  }
  public function testDebug() {
    $handler = new ExceptionHandler(false);
    ob_start();
    $handler
      ->sendPhpResponse(new \RuntimeException('Foo'));
    $response = ob_get_clean();
    $this
      ->assertContains('<h1>Whoops, looks like something went wrong.</h1>', $response);
    $this
      ->assertNotContains('<h2 class="block_exception clear_fix">', $response);
    $handler = new ExceptionHandler(true);
    ob_start();
    $handler
      ->sendPhpResponse(new \RuntimeException('Foo'));
    $response = ob_get_clean();
    $this
      ->assertContains('<h1>Whoops, looks like something went wrong.</h1>', $response);
    $this
      ->assertContains('<h2 class="block_exception clear_fix">', $response);
  }
  public function testStatusCode() {
    $handler = new ExceptionHandler(false, 'iso8859-1');
    ob_start();
    $handler
      ->sendPhpResponse(new NotFoundHttpException('Foo'));
    $response = ob_get_clean();
    $this
      ->assertContains('Sorry, the page you are looking for could not be found.', $response);
    $expectedHeaders = array(
      array(
        'HTTP/1.0 404',
        true,
        null,
      ),
      array(
        'Content-Type: text/html; charset=iso8859-1',
        true,
        null,
      ),
    );
    $this
      ->assertSame($expectedHeaders, testHeader());
  }
  public function testHeaders() {
    $handler = new ExceptionHandler(false, 'iso8859-1');
    ob_start();
    $handler
      ->sendPhpResponse(new MethodNotAllowedHttpException(array(
      'POST',
    )));
    $response = ob_get_clean();
    $expectedHeaders = array(
      array(
        'HTTP/1.0 405',
        true,
        null,
      ),
      array(
        'Allow: POST',
        false,
        null,
      ),
      array(
        'Content-Type: text/html; charset=iso8859-1',
        true,
        null,
      ),
    );
    $this
      ->assertSame($expectedHeaders, testHeader());
  }
  public function testNestedExceptions() {
    $handler = new ExceptionHandler(true);
    ob_start();
    $handler
      ->sendPhpResponse(new \RuntimeException('Foo', 0, new \RuntimeException('Bar')));
    $response = ob_get_clean();
    $this
      ->assertStringMatchesFormat('%A<span class="exception_message">Foo</span>%A<span class="exception_message">Bar</span>%A', $response);
  }
  public function testHandle() {
    $exception = new \Exception('foo');
    $handler = $this
      ->getMock('Symfony\\Component\\Debug\\ExceptionHandler', array(
      'sendPhpResponse',
    ));
    $handler
      ->expects($this
      ->exactly(2))
      ->method('sendPhpResponse');
    $handler
      ->handle($exception);
    $that = $this;
    $handler
      ->setHandler(function ($e) use ($exception, $that) {
      $that
        ->assertSame($exception, $e);
    });
    $handler
      ->handle($exception);
  }
  public function testHandleOutOfMemoryException() {
    $exception = new OutOfMemoryException('foo', 0, E_ERROR, __FILE__, __LINE__);
    $handler = $this
      ->getMock('Symfony\\Component\\Debug\\ExceptionHandler', array(
      'sendPhpResponse',
    ));
    $handler
      ->expects($this
      ->once())
      ->method('sendPhpResponse');
    $that = $this;
    $handler
      ->setHandler(function ($e) use ($that) {
      $that
        ->fail('OutOfMemoryException should bypass the handler');
    });
    $handler
      ->handle($exception);
  }

}

Members