Version 1
[yaffs-website] / vendor / symfony / http-kernel / Tests / EventListener / DebugHandlersListenerTest.php
diff --git a/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php b/vendor/symfony/http-kernel/Tests/EventListener/DebugHandlersListenerTest.php
new file mode 100644 (file)
index 0000000..d134990
--- /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\HttpKernel\Tests\EventListener;
+
+use PHPUnit\Framework\TestCase;
+use Psr\Log\LogLevel;
+use Symfony\Component\Console\Event\ConsoleEvent;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\ConsoleEvents;
+use Symfony\Component\Console\Helper\HelperSet;
+use Symfony\Component\Console\Input\ArgvInput;
+use Symfony\Component\Console\Output\ConsoleOutput;
+use Symfony\Component\Debug\ErrorHandler;
+use Symfony\Component\Debug\ExceptionHandler;
+use Symfony\Component\EventDispatcher\EventDispatcher;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\Event\KernelEvent;
+use Symfony\Component\HttpKernel\EventListener\DebugHandlersListener;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+use Symfony\Component\HttpKernel\KernelEvents;
+
+/**
+ * DebugHandlersListenerTest.
+ *
+ * @author Nicolas Grekas <p@tchwork.com>
+ */
+class DebugHandlersListenerTest extends TestCase
+{
+    public function testConfigure()
+    {
+        $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
+        $userHandler = function () {};
+        $listener = new DebugHandlersListener($userHandler, $logger);
+        $xHandler = new ExceptionHandler();
+        $eHandler = new ErrorHandler();
+        $eHandler->setExceptionHandler(array($xHandler, 'handle'));
+
+        $exception = null;
+        set_error_handler(array($eHandler, 'handleError'));
+        set_exception_handler(array($eHandler, 'handleException'));
+        try {
+            $listener->configure();
+        } catch (\Exception $exception) {
+        }
+        restore_exception_handler();
+        restore_error_handler();
+
+        if (null !== $exception) {
+            throw $exception;
+        }
+
+        $this->assertSame($userHandler, $xHandler->setHandler('var_dump'));
+
+        $loggers = $eHandler->setLoggers(array());
+
+        $this->assertArrayHasKey(E_DEPRECATED, $loggers);
+        $this->assertSame(array($logger, LogLevel::INFO), $loggers[E_DEPRECATED]);
+    }
+
+    public function testConfigureForHttpKernelWithNoTerminateWithException()
+    {
+        $listener = new DebugHandlersListener(null);
+        $eHandler = new ErrorHandler();
+        $event = new KernelEvent(
+            $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(),
+            Request::create('/'),
+            HttpKernelInterface::MASTER_REQUEST
+        );
+
+        $exception = null;
+        $h = set_exception_handler(array($eHandler, 'handleException'));
+        try {
+            $listener->configure($event);
+        } catch (\Exception $exception) {
+        }
+        restore_exception_handler();
+
+        if (null !== $exception) {
+            throw $exception;
+        }
+
+        $this->assertNull($h);
+    }
+
+    public function testConsoleEvent()
+    {
+        $dispatcher = new EventDispatcher();
+        $listener = new DebugHandlersListener(null);
+        $app = $this->getMockBuilder('Symfony\Component\Console\Application')->getMock();
+        $app->expects($this->once())->method('getHelperSet')->will($this->returnValue(new HelperSet()));
+        $command = new Command(__FUNCTION__);
+        $command->setApplication($app);
+        $event = new ConsoleEvent($command, new ArgvInput(), new ConsoleOutput());
+
+        $dispatcher->addSubscriber($listener);
+
+        $xListeners = array(
+            KernelEvents::REQUEST => array(array($listener, 'configure')),
+            ConsoleEvents::COMMAND => array(array($listener, 'configure')),
+        );
+        $this->assertSame($xListeners, $dispatcher->getListeners());
+
+        $exception = null;
+        $eHandler = new ErrorHandler();
+        set_error_handler(array($eHandler, 'handleError'));
+        set_exception_handler(array($eHandler, 'handleException'));
+        try {
+            $dispatcher->dispatch(ConsoleEvents::COMMAND, $event);
+        } catch (\Exception $exception) {
+        }
+        restore_exception_handler();
+        restore_error_handler();
+
+        if (null !== $exception) {
+            throw $exception;
+        }
+
+        $xHandler = $eHandler->setExceptionHandler('var_dump');
+        $this->assertInstanceOf('Closure', $xHandler);
+
+        $app->expects($this->once())
+            ->method('renderException');
+
+        $xHandler(new \Exception());
+    }
+}