diff --git a/EventListener/ControllerListener.php b/EventListener/ControllerListener.php index ff49b312..d6a535c3 100644 --- a/EventListener/ControllerListener.php +++ b/EventListener/ControllerListener.php @@ -15,7 +15,7 @@ use Doctrine\Common\Persistence\Proxy; use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -41,7 +41,7 @@ public function __construct(Reader $reader) * controllers annotations like the template to render or HTTP caching * configuration. */ - public function onKernelController(ControllerEvent $event) + public function onKernelController(KernelEvent $event) { $controller = $event->getController(); diff --git a/EventListener/HttpCacheListener.php b/EventListener/HttpCacheListener.php index 3c664d0a..de3f4aa7 100644 --- a/EventListener/HttpCacheListener.php +++ b/EventListener/HttpCacheListener.php @@ -14,8 +14,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\ExpressionLanguage\ExpressionLanguage; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Event\ControllerEvent; -use Symfony\Component\HttpKernel\Event\ResponseEvent; +use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -40,7 +39,7 @@ public function __construct() /** * Handles HTTP validation headers. */ - public function onKernelController(ControllerEvent $event) + public function onKernelController(KernelEvent $event) { $request = $event->getRequest(); if (!$configuration = $request->attributes->get('_cache')) { @@ -79,7 +78,7 @@ public function onKernelController(ControllerEvent $event) /** * Modifies the response to apply HTTP cache headers when needed. */ - public function onKernelResponse(ResponseEvent $event) + public function onKernelResponse(KernelEvent $event) { $request = $event->getRequest(); diff --git a/EventListener/IsGrantedListener.php b/EventListener/IsGrantedListener.php index 593569e1..38daaaf8 100644 --- a/EventListener/IsGrantedListener.php +++ b/EventListener/IsGrantedListener.php @@ -14,7 +14,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Request\ArgumentNameConverter; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; +use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; @@ -36,7 +36,7 @@ public function __construct(ArgumentNameConverter $argumentNameConverter, Author $this->authChecker = $authChecker; } - public function onKernelControllerArguments(ControllerArgumentsEvent $event) + public function onKernelControllerArguments(KernelEvent $event) { $request = $event->getRequest(); /** @var $configurations IsGranted[] */ diff --git a/EventListener/ParamConverterListener.php b/EventListener/ParamConverterListener.php index 56536f0a..08519c99 100644 --- a/EventListener/ParamConverterListener.php +++ b/EventListener/ParamConverterListener.php @@ -15,7 +15,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -50,7 +50,7 @@ public function __construct(ParamConverterManager $manager, $autoConvert = true) /** * Modifies the ParamConverterManager instance. */ - public function onKernelController(ControllerEvent $event) + public function onKernelController(KernelEvent $event) { $controller = $event->getController(); $request = $event->getRequest(); diff --git a/EventListener/PsrResponseListener.php b/EventListener/PsrResponseListener.php index 16fc0ca0..bcdb69ad 100644 --- a/EventListener/PsrResponseListener.php +++ b/EventListener/PsrResponseListener.php @@ -14,7 +14,7 @@ use Psr\Http\Message\ResponseInterface; use Symfony\Bridge\PsrHttpMessage\HttpFoundationFactoryInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\ViewEvent; +use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -37,7 +37,7 @@ public function __construct(HttpFoundationFactoryInterface $httpFoundationFactor /** * Do the conversion if applicable and update the response of the event. */ - public function onKernelView(ViewEvent $event) + public function onKernelView(KernelEvent $event) { $controllerResult = $event->getControllerResult(); diff --git a/EventListener/SecurityListener.php b/EventListener/SecurityListener.php index 1a61b107..a35f768a 100644 --- a/EventListener/SecurityListener.php +++ b/EventListener/SecurityListener.php @@ -15,7 +15,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Request\ArgumentNameConverter; use Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; +use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface; @@ -50,7 +50,7 @@ public function __construct(ArgumentNameConverter $argumentNameConverter, Expres $this->logger = $logger; } - public function onKernelControllerArguments(ControllerArgumentsEvent $event) + public function onKernelControllerArguments(KernelEvent $event) { $request = $event->getRequest(); if (!$configurations = $request->attributes->get('_security')) { @@ -81,15 +81,23 @@ public function onKernelControllerArguments(ControllerArgumentsEvent $event) } // code should be sync with Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter - private function getVariables(ControllerArgumentsEvent $event) + private function getVariables(KernelEvent $event) { $request = $event->getRequest(); $token = $this->tokenStorage->getToken(); - if (null !== $this->roleHierarchy) { - $roles = $this->roleHierarchy->getReachableRoleNames($token->getRoleNames()); + if (method_exists($this->roleHierarchy, 'getReachableRoleNames')) { + if (null !== $this->roleHierarchy) { + $roles = $this->roleHierarchy->getReachableRoleNames($token->getRoleNames()); + } else { + $roles = $token->getRoleNames(); + } } else { - $roles = $token->getRoleNames(); + if (null !== $this->roleHierarchy) { + $roles = $this->roleHierarchy->getReachableRoles($token->getRoles()); + } else { + $roles = $token->getRoles(); + } } $variables = [ diff --git a/EventListener/TemplateListener.php b/EventListener/TemplateListener.php index aee88664..c0ac06da 100644 --- a/EventListener/TemplateListener.php +++ b/EventListener/TemplateListener.php @@ -17,8 +17,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\StreamedResponse; -use Symfony\Component\HttpKernel\Event\ControllerEvent; -use Symfony\Component\HttpKernel\Event\ViewEvent; +use Symfony\Component\HttpKernel\Event\KernelEvent; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -43,7 +42,7 @@ public function __construct(TemplateGuesser $templateGuesser, \Twig_Environment * Guesses the template name to render and its variables and adds them to * the request object. */ - public function onKernelController(ControllerEvent $event) + public function onKernelController(KernelEvent $event) { $request = $event->getRequest(); $template = $request->attributes->get('_template'); @@ -68,7 +67,7 @@ public function onKernelController(ControllerEvent $event) * Renders the template and initializes a new response object with the * rendered template content. */ - public function onKernelView(ViewEvent $event) + public function onKernelView(KernelEvent $event) { /* @var Template $template */ $request = $event->getRequest(); diff --git a/Tests/EventListener/ControllerListenerTest.php b/Tests/EventListener/ControllerListenerTest.php index 3c7a40d8..ebc1755a 100644 --- a/Tests/EventListener/ControllerListenerTest.php +++ b/Tests/EventListener/ControllerListenerTest.php @@ -22,6 +22,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Tests\EventListener\Fixture\FooControllerParamConverterAtClassAndMethod; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; class ControllerListenerTest extends \PHPUnit\Framework\TestCase @@ -131,7 +132,9 @@ private function getFilterControllerEvent($controller, Request $request) { $mockKernel = $this->getMockForAbstractClass('Symfony\Component\HttpKernel\Kernel', ['', '']); - return new ControllerEvent($mockKernel, $controller, $request, HttpKernelInterface::MASTER_REQUEST); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; + + return new $eventClass($mockKernel, $controller, $request, HttpKernelInterface::MASTER_REQUEST); } private function getReadedCache() diff --git a/Tests/EventListener/HttpCacheListenerTest.php b/Tests/EventListener/HttpCacheListenerTest.php index 4dc5c003..42c954ed 100644 --- a/Tests/EventListener/HttpCacheListenerTest.php +++ b/Tests/EventListener/HttpCacheListenerTest.php @@ -16,6 +16,8 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; @@ -153,9 +155,10 @@ public function testLastModifiedNotModifiedResponse() $request = $this->createRequest(new Cache(['lastModified' => 'test.getDate()'])); $request->attributes->set('test', new TestEntity()); $request->headers->add(['If-Modified-Since' => 'Fri, 23 Aug 2013 00:00:00 GMT']); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; $listener = new HttpCacheListener(); - $controllerEvent = new ControllerEvent($this->getKernel(), function () { + $controllerEvent = new $eventClass($this->getKernel(), function () { return new Response(500); }, $request, null); @@ -170,14 +173,16 @@ public function testLastModifiedHeader() $request = $this->createRequest(new Cache(['lastModified' => 'test.getDate()'])); $request->attributes->set('test', new TestEntity()); $response = new Response(); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; $listener = new HttpCacheListener(); - $controllerEvent = new ControllerEvent($this->getKernel(), function () { + $controllerEvent = new $eventClass($this->getKernel(), function () { return new Response(); }, $request, null); $listener->onKernelController($controllerEvent); + $eventClass = class_exists(ResponseEvent::class) ? ResponseEvent::class : FilterResponseEvent::class; - $responseEvent = new ResponseEvent($this->getKernel(), $request, HttpKernelInterface::MASTER_REQUEST, \call_user_func($controllerEvent->getController())); + $responseEvent = new $eventClass($this->getKernel(), $request, HttpKernelInterface::MASTER_REQUEST, \call_user_func($controllerEvent->getController())); $listener->onKernelResponse($responseEvent); $response = $responseEvent->getResponse(); @@ -192,9 +197,10 @@ public function testEtagNotModifiedResponse() $request = $this->createRequest(new Cache(['etag' => 'test.getId()'])); $request->attributes->set('test', $entity = new TestEntity()); $request->headers->add(['If-None-Match' => sprintf('"%s"', hash('sha256', $entity->getId()))]); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; $listener = new HttpCacheListener(); - $controllerEvent = new ControllerEvent($this->getKernel(), function () { + $controllerEvent = new $eventClass($this->getKernel(), function () { return new Response(500); }, $request, null); @@ -209,14 +215,17 @@ public function testEtagHeader() $request = $this->createRequest(new Cache(['ETag' => 'test.getId()'])); $request->attributes->set('test', $entity = new TestEntity()); $response = new Response(); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; $listener = new HttpCacheListener(); - $controllerEvent = new ControllerEvent($this->getKernel(), function () { + $controllerEvent = new $eventClass($this->getKernel(), function () { return new Response(); }, $request, null); $listener->onKernelController($controllerEvent); - $responseEvent = new ResponseEvent($this->getKernel(), $request, HttpKernelInterface::MASTER_REQUEST, \call_user_func($controllerEvent->getController())); + $eventClass = class_exists(ResponseEvent::class) ? ResponseEvent::class : FilterResponseEvent::class; + + $responseEvent = new $eventClass($this->getKernel(), $request, HttpKernelInterface::MASTER_REQUEST, \call_user_func($controllerEvent->getController())); $listener->onKernelResponse($responseEvent); $response = $responseEvent->getResponse(); @@ -245,8 +254,10 @@ public function testConfigurationDoesNotOverrideAlreadySetResponseHeaders() $response->setMaxAge(30); $response->setVary(['foobaz']); + $eventClass = class_exists(ResponseEvent::class) ? ResponseEvent::class : FilterResponseEvent::class; + $listener = new HttpCacheListener(); - $responseEvent = new ResponseEvent($this->getKernel(), $request, HttpKernelInterface::MASTER_REQUEST, $response); + $responseEvent = new $eventClass($this->getKernel(), $request, HttpKernelInterface::MASTER_REQUEST, $response); $listener->onKernelResponse($responseEvent); $this->assertEquals('"54321"', $response->getEtag()); @@ -266,21 +277,22 @@ private function createRequest(Cache $cache = null) private function createEventMock(Request $request, Response $response) { + $eventClass = class_exists(ResponseEvent::class) ? ResponseEvent::class : FilterResponseEvent::class; + $event = $this - ->getMockBuilder('Symfony\Component\HttpKernel\Event\ResponseEvent') + ->getMockBuilder($eventClass) ->disableOriginalConstructor() ->getMock(); + $event ->expects($this->any()) ->method('getRequest') - ->willReturn($request) - ; + ->willReturn($request); $event ->expects($this->any()) ->method('getResponse') - ->willReturn($response) - ; + ->willReturn($response); return $event; } diff --git a/Tests/EventListener/IsGrantedListenerTest.php b/Tests/EventListener/IsGrantedListenerTest.php index f906d15a..623b4fbb 100644 --- a/Tests/EventListener/IsGrantedListenerTest.php +++ b/Tests/EventListener/IsGrantedListenerTest.php @@ -17,6 +17,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; +use Symfony\Component\HttpKernel\Event\FilterControllerArgumentsEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Security\Core\Exception\AccessDeniedException; @@ -156,7 +157,9 @@ private function createRequest(IsGranted $isGranted = null) private function createFilterControllerEvent(Request $request) { - return new ControllerArgumentsEvent($this->getMockBuilder(HttpKernelInterface::class)->getMock(), function () { + $eventClass = class_exists(ControllerArgumentsEvent::class) ? ControllerArgumentsEvent::class : FilterControllerArgumentsEvent::class; + + return new $eventClass($this->getMockBuilder(HttpKernelInterface::class)->getMock(), function () { return new Response(); }, [], $request, null); } diff --git a/Tests/EventListener/ParamConverterListenerTest.php b/Tests/EventListener/ParamConverterListenerTest.php index 16895fa5..e950f604 100644 --- a/Tests/EventListener/ParamConverterListenerTest.php +++ b/Tests/EventListener/ParamConverterListenerTest.php @@ -16,6 +16,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Tests\EventListener\Fixture\FooControllerNullableParameter; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\ControllerEvent; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; class ParamConverterListenerTest extends \PHPUnit\Framework\TestCase { @@ -26,9 +27,10 @@ public function testRequestIsSkipped($controllerCallable) { $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(); $request = new Request(); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; $listener = new ParamConverterListener($this->getParamConverterManager($request, [])); - $event = new ControllerEvent($kernel, $controllerCallable, $request, null); + $event = new $eventClass($kernel, $controllerCallable, $request, null); $listener->onKernelController($event); } @@ -48,11 +50,12 @@ public function testAutoConvert($controllerCallable) { $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(); $request = new Request([], [], ['date' => '2014-03-14 09:00:00']); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; $converter = new ParamConverter(['name' => 'date', 'class' => 'DateTime']); $listener = new ParamConverterListener($this->getParamConverterManager($request, ['date' => $converter])); - $event = new ControllerEvent($kernel, $controllerCallable, $request, null); + $event = new $eventClass($kernel, $controllerCallable, $request, null); $listener->onKernelController($event); } @@ -65,12 +68,13 @@ public function testSettingOptionalParam($function, $isOptional) { $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(); $request = new Request(); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; $converter = new ParamConverter(['name' => 'param', 'class' => 'DateTime']); $converter->setIsOptional($isOptional); $listener = new ParamConverterListener($this->getParamConverterManager($request, ['param' => $converter]), true); - $event = new ControllerEvent( + $event = new $eventClass( $kernel, [ new FooControllerNullableParameter(), @@ -99,9 +103,10 @@ public function testNoAutoConvert($controllerCallable) { $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(); $request = new Request([], [], ['date' => '2014-03-14 09:00:00']); + $eventClass = class_exists(ControllerEvent::class) ? ControllerEvent::class : FilterControllerEvent::class; $listener = new ParamConverterListener($this->getParamConverterManager($request, []), false); - $event = new ControllerEvent($kernel, $controllerCallable, $request, null); + $event = new $eventClass($kernel, $controllerCallable, $request, null); $listener->onKernelController($event); } diff --git a/Tests/EventListener/PsrResponseListenerTest.php b/Tests/EventListener/PsrResponseListenerTest.php index 98ff021e..39fa3a37 100644 --- a/Tests/EventListener/PsrResponseListenerTest.php +++ b/Tests/EventListener/PsrResponseListenerTest.php @@ -14,6 +14,8 @@ use Sensio\Bundle\FrameworkExtraBundle\EventListener\PsrResponseListener; use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory; use Symfony\Bridge\PsrHttpMessage\Tests\Fixtures\Response; +use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; +use Symfony\Component\HttpKernel\Event\ViewEvent; /** * @author Kévin Dunglas @@ -45,16 +47,17 @@ public function testDoesNotConvertControllerResult() private function createEventMock($controllerResult) { + $eventClass = class_exists(ViewEvent::class) ? ViewEvent::class : GetResponseForControllerResultEvent::class; + $event = $this - ->getMockBuilder('Symfony\Component\HttpKernel\Event\ViewEvent') + ->getMockBuilder($eventClass) ->disableOriginalConstructor() - ->getMock() - ; + ->getMock(); + $event ->expects($this->any()) ->method('getControllerResult') - ->willReturn($controllerResult) - ; + ->willReturn($controllerResult); return $event; } diff --git a/Tests/EventListener/SecurityListenerTest.php b/Tests/EventListener/SecurityListenerTest.php index 5e5cb90b..041b9cef 100644 --- a/Tests/EventListener/SecurityListenerTest.php +++ b/Tests/EventListener/SecurityListenerTest.php @@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent; +use Symfony\Component\HttpKernel\Event\FilterControllerArgumentsEvent; class SecurityListenerTest extends \PHPUnit\Framework\TestCase { @@ -26,8 +27,10 @@ class SecurityListenerTest extends \PHPUnit\Framework\TestCase */ public function testAccessDenied() { + $eventClass = class_exists(ControllerArgumentsEvent::class) ? ControllerArgumentsEvent::class : FilterControllerArgumentsEvent::class; + $request = $this->createRequest(new Security(['expression' => 'is_granted("ROLE_ADMIN") or is_granted("FOO")'])); - $event = new ControllerArgumentsEvent($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), function () { + $event = new $eventClass($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), function () { return new Response(); }, [], $request, null); @@ -40,8 +43,10 @@ public function testAccessDenied() */ public function testNotFoundHttpException() { + $eventClass = class_exists(ControllerArgumentsEvent::class) ? ControllerArgumentsEvent::class : FilterControllerArgumentsEvent::class; + $request = $this->createRequest(new Security(['expression' => 'is_granted("ROLE_ADMIN") or is_granted("FOO")', 'statusCode' => 404, 'message' => 'Not found'])); - $event = new ControllerArgumentsEvent($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), function () { + $event = new $eventClass($this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface')->getMock(), function () { return new Response(); }, [], $request, null); @@ -50,8 +55,14 @@ public function testNotFoundHttpException() private function getListener() { + $getRolesMethod = class_exists(ControllerArgumentsEvent::class) ? 'getRoleNames' : 'getRoles'; + $getReachableRolesMethod = class_exists(ControllerArgumentsEvent::class) ? 'getReachableRoleNames' : 'getReachableRoles'; + + $roleHierarchy = $this->getMockBuilder('Symfony\Component\Security\Core\Role\RoleHierarchy')->disableOriginalConstructor()->getMock(); + $roleHierarchy->expects($this->once())->method($getReachableRolesMethod)->willReturn([]); + $token = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\AbstractToken')->getMock(); - $token->expects($this->once())->method('getRoleNames')->willReturn([]); + $token->expects($this->once())->method($getRolesMethod)->willReturn([]); $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); $tokenStorage->expects($this->exactly(2))->method('getToken')->willReturn($token); @@ -65,7 +76,7 @@ private function getListener() $language = new ExpressionLanguage(); - return new SecurityListener($argNameConverter, $language, $trustResolver, null, $tokenStorage, $authChecker); + return new SecurityListener($argNameConverter, $language, $trustResolver, $roleHierarchy, $tokenStorage, $authChecker); } private function createRequest(Security $security = null)