Skip to content
This repository has been archived by the owner on Feb 24, 2023. It is now read-only.

Fixed behaviour on Symfony 3.4 #626

Merged
merged 1 commit into from Jul 3, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions EventListener/ControllerListener.php
Expand Up @@ -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;

/**
Expand All @@ -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();

Expand Down
7 changes: 3 additions & 4 deletions EventListener/HttpCacheListener.php
Expand Up @@ -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;

/**
Expand All @@ -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')) {
Expand Down Expand Up @@ -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();

Expand Down
4 changes: 2 additions & 2 deletions EventListener/IsGrantedListener.php
Expand Up @@ -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;
Expand All @@ -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[] */
Expand Down
4 changes: 2 additions & 2 deletions EventListener/ParamConverterListener.php
Expand Up @@ -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;

/**
Expand Down Expand Up @@ -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();
Expand Down
4 changes: 2 additions & 2 deletions EventListener/PsrResponseListener.php
Expand Up @@ -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;

/**
Expand All @@ -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();

Expand Down
20 changes: 14 additions & 6 deletions EventListener/SecurityListener.php
Expand Up @@ -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;
Expand Down Expand Up @@ -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')) {
Expand Down Expand Up @@ -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 = [
Expand Down
7 changes: 3 additions & 4 deletions EventListener/TemplateListener.php
Expand Up @@ -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;

/**
Expand All @@ -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');
Expand All @@ -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();
Expand Down
5 changes: 4 additions & 1 deletion Tests/EventListener/ControllerListenerTest.php
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down
36 changes: 24 additions & 12 deletions Tests/EventListener/HttpCacheListenerTest.php
Expand Up @@ -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;

Expand Down Expand Up @@ -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);

Expand All @@ -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();
Expand All @@ -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);

Expand All @@ -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();
Expand Down Expand Up @@ -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());
Expand All @@ -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;
}
Expand Down
5 changes: 4 additions & 1 deletion Tests/EventListener/IsGrantedListenerTest.php
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}
Expand Down
13 changes: 9 additions & 4 deletions Tests/EventListener/ParamConverterListenerTest.php
Expand Up @@ -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
{
Expand All @@ -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);
}
Expand All @@ -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);
}
Expand All @@ -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(),
Expand Down Expand Up @@ -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);
}
Expand Down