浏览代码

[Security] Remove useless attribute & var in firewall

Antoine Hérault 14 年之前
父节点
当前提交
aa6ae33765

+ 0 - 2
src/Symfony/Component/Security/Http/Firewall.php

@@ -30,7 +30,6 @@ class Firewall
 {
     private $map;
     private $dispatcher;
-    private $currentListeners;
 
     /**
      * Constructor.
@@ -42,7 +41,6 @@ class Firewall
     {
         $this->map = $map;
         $this->dispatcher = $dispatcher;
-        $this->currentListeners = array();
     }
 
     /**

+ 99 - 0
tests/Symfony/Tests/Component/Security/Http/FirewallTest.php

@@ -0,0 +1,99 @@
+<?php
+
+namespace Symfony\Tests\Component\Security\Http;
+
+use Symfony\Component\Security\Http\Firewall;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+
+class FirewallTest extends \PHPUnit_Framework_TestCase
+{
+    public function testOnKernelRequestRegistersExceptionListener()
+    {
+        $dispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
+
+        $listener = $this->getMock('Symfony\Component\Security\Http\Firewall\ExceptionListener', array(), array(), '', false);
+        $listener
+            ->expects($this->once())
+            ->method('register')
+            ->with($this->equalTo($dispatcher))
+        ;
+
+        $request = $this->getMock('Symfony\Component\HttpFoundation\Request', array(), array(), '', false, false);
+
+        $map = $this->getMock('Symfony\Component\Security\Http\FirewallMapInterface');
+        $map
+            ->expects($this->once())
+            ->method('getListeners')
+            ->with($this->equalTo($request))
+            ->will($this->returnValue(array(array(), $listener)))
+        ;
+
+        $event = new GetResponseEvent($this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'), $request, HttpKernelInterface::MASTER_REQUEST);
+
+        $firewall = new Firewall($map, $dispatcher);
+        $firewall->onKernelRequest($event);
+    }
+
+    public function testOnKernelRequestStopsWhenThereIsAResponse()
+    {
+        $response = $this->getMock('Symfony\Component\HttpFoundation\Response');
+
+        $first = $this->getMock('Symfony\Component\Security\Http\Firewall\ListenerInterface');
+        $first
+            ->expects($this->once())
+            ->method('handle')
+        ;
+
+        $second = $this->getMock('Symfony\Component\Security\Http\Firewall\ListenerInterface');
+        $second
+            ->expects($this->never())
+            ->method('handle')
+        ;
+
+        $map = $this->getMock('Symfony\Component\Security\Http\FirewallMapInterface');
+        $map
+            ->expects($this->once())
+            ->method('getListeners')
+            ->will($this->returnValue(array(array($first, $second), null)))
+        ;
+
+        $event = $this->getMock(
+            'Symfony\Component\HttpKernel\Event\GetResponseEvent',
+            array('hasResponse'),
+            array(
+                $this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'),
+                $this->getMock('Symfony\Component\HttpFoundation\Request', array(), array(), '', false, false),
+                HttpKernelInterface::MASTER_REQUEST
+            )
+        );
+        $event
+            ->expects($this->once())
+            ->method('hasResponse')
+            ->will($this->returnValue(true))
+        ;
+
+        $firewall = new Firewall($map, $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface'));
+        $firewall->onKernelRequest($event);
+    }
+
+    public function testOnKernelRequestWithSubRequest()
+    {
+        $map = $this->getMock('Symfony\Component\Security\Http\FirewallMapInterface');
+        $map
+            ->expects($this->never())
+            ->method('getListeners')
+        ;
+
+        $event = new GetResponseEvent(
+            $this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'),
+            $this->getMock('Symfony\Component\HttpFoundation\Request'),
+            HttpKernelInterface::SUB_REQUEST
+        );
+
+        $firewall = new Firewall($map, $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface'));
+        $firewall->onKernelRequest($event);
+
+        $this->assertFalse($event->hasResponse());
+    }
+}