summaryrefslogtreecommitdiff
path: root/vendor/symfony/debug/Tests/ExceptionHandlerTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/debug/Tests/ExceptionHandlerTest.php')
-rw-r--r--vendor/symfony/debug/Tests/ExceptionHandlerTest.php133
1 files changed, 133 insertions, 0 deletions
diff --git a/vendor/symfony/debug/Tests/ExceptionHandlerTest.php b/vendor/symfony/debug/Tests/ExceptionHandlerTest.php
new file mode 100644
index 00000000..0285eff1
--- /dev/null
+++ b/vendor/symfony/debug/Tests/ExceptionHandlerTest.php
@@ -0,0 +1,133 @@
+<?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('Whoops, looks like something went wrong.', $response);
+ $this->assertNotContains('<div class="trace trace-as-html">', $response);
+
+ $handler = new ExceptionHandler(true);
+
+ ob_start();
+ $handler->sendPhpResponse(new \RuntimeException('Foo'));
+ $response = ob_get_clean();
+
+ $this->assertContains('Whoops, looks like something went wrong.', $response);
+ $this->assertContains('<div class="trace trace-as-html">', $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<p class="break-long-words trace-message">Foo</p>%A<p class="break-long-words trace-message">Bar</p>%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);
+
+ $handler->setHandler(function ($e) use ($exception) {
+ $this->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');
+
+ $handler->setHandler(function ($e) {
+ $this->fail('OutOfMemoryException should bypass the handler');
+ });
+
+ $handler->handle($exception);
+ }
+}