Yaffs site version 1.1
[yaffs-website] / vendor / symfony / debug / Tests / ExceptionHandlerTest.php
diff --git a/vendor/symfony/debug/Tests/ExceptionHandlerTest.php b/vendor/symfony/debug/Tests/ExceptionHandlerTest.php
new file mode 100644 (file)
index 0000000..77cc0b5
--- /dev/null
@@ -0,0 +1,135 @@
+<?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\Component\Debug\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\Debug\ExceptionHandler;
+use Symfony\Component\Debug\Exception\OutOfMemoryException;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
+
+require_once __DIR__.'/HeaderMock.php';
+
+class ExceptionHandlerTest extends 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->getMockBuilder('Symfony\Component\Debug\ExceptionHandler')->setMethods(array('sendPhpResponse'))->getMock();
+        $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->getMockBuilder('Symfony\Component\Debug\ExceptionHandler')->setMethods(array('sendPhpResponse'))->getMock();
+        $handler
+            ->expects($this->once())
+            ->method('sendPhpResponse');
+
+        $that = $this;
+        $handler->setHandler(function ($e) use ($that) {
+            $that->fail('OutOfMemoryException should bypass the handler');
+        });
+
+        $handler->handle($exception);
+    }
+}