diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 82499b9140..0f8f1230f2 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -184,10 +184,12 @@ jobs: # matrix.mode = high-deps echo "$COMPONENTS" | xargs -n1 | parallel -j +3 "_run_tests {} 'cd {} && $COMPOSER_UP && $PHPUNIT$LEGACY'" || X=1 + # get a list of the patched components (relies on .github/build-packages.php being called in the previous step) (cd src/Symfony/Component/HttpFoundation; mv composer.bak composer.json) - COMPONENTS=$(git diff --name-only src/ | grep composer.json || true) + PATCHED_COMPONENTS=$(git diff --name-only src/ | grep composer.json || true) - if [[ $COMPONENTS && $SYMFONY_VERSION = *.4 ]]; then + # for x.4 branches, checkout and test previous major with the patched components (only for patched components) + if [[ $PATCHED_COMPONENTS && $SYMFONY_VERSION = *.4 ]]; then export FLIP='^' SYMFONY_VERSION=$(echo $SYMFONY_VERSION | awk '{print $1 - 1}') echo -e "\\n\\e[33;1mChecking out Symfony $SYMFONY_VERSION and running tests with patched components as deps\\e[0m" @@ -195,13 +197,13 @@ jobs: export SYMFONY_REQUIRE=">=$SYMFONY_VERSION" git fetch --depth=2 origin $SYMFONY_VERSION git checkout -m FETCH_HEAD - COMPONENTS=$(echo "$COMPONENTS" | xargs dirname | xargs -n1 -I{} bash -c "[ -e '{}/phpunit.xml.dist' ] && echo '{}'" | sort || true) + PATCHED_COMPONENTS=$(echo "$PATCHED_COMPONENTS" | xargs dirname | xargs -n1 -I{} bash -c "[ -e '{}/phpunit.xml.dist' ] && echo '{}'" | sort || true) (cd src/Symfony/Component/HttpFoundation; composer require --dev --no-update mongodb/mongodb) - if [[ $COMPONENTS ]]; then + if [[ $PATCHED_COMPONENTS ]]; then echo "::group::install phpunit" ./phpunit install echo "::endgroup::" - echo "$COMPONENTS" | parallel -j +3 "_run_tests {} 'cd {} && rm composer.lock vendor/ -Rf && $COMPOSER_UP && $PHPUNIT$LEGACY'" || X=1 + echo "$PATCHED_COMPONENTS" | parallel -j +3 "_run_tests {} 'cd {} && rm composer.lock vendor/ -Rf && $COMPOSER_UP && $PHPUNIT$LEGACY'" || X=1 fi fi diff --git a/src/Symfony/Bridge/Monolog/Tests/Processor/ConsoleCommandProcessorTest.php b/src/Symfony/Bridge/Monolog/Tests/Processor/ConsoleCommandProcessorTest.php index 6ee30da38a..424f9ce10d 100644 --- a/src/Symfony/Bridge/Monolog/Tests/Processor/ConsoleCommandProcessorTest.php +++ b/src/Symfony/Bridge/Monolog/Tests/Processor/ConsoleCommandProcessorTest.php @@ -16,6 +16,7 @@ use Symfony\Bridge\Monolog\Processor\ConsoleCommandProcessor; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Event\ConsoleEvent; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; class ConsoleCommandProcessorTest extends TestCase { @@ -66,10 +67,7 @@ class ConsoleCommandProcessorTest extends TestCase $input->method('getOptions')->willReturn(self::TEST_OPTIONS); $command = $this->createMock(Command::class); $command->method('getName')->willReturn(self::TEST_NAME); - $consoleEvent = $this->createMock(ConsoleEvent::class); - $consoleEvent->method('getCommand')->willReturn($command); - $consoleEvent->method('getInput')->willReturn($input); - return $consoleEvent; + return new ConsoleEvent($command, $input, $this->createMock(OutputInterface::class)); } } diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php index 01d586346a..60c430f9b0 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php +++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/EventListener/WebDebugToolbarListenerTest.php @@ -13,10 +13,8 @@ namespace Symfony\Bundle\WebProfilerBundle\Tests\EventListener; use PHPUnit\Framework\TestCase; use Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener; -use Symfony\Component\HttpFoundation\HeaderBag; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\Kernel; @@ -61,11 +59,11 @@ class WebDebugToolbarListenerTest extends TestCase /** * @dataProvider provideRedirects */ - public function testHtmlRedirectionIsIntercepted($statusCode, $hasSession) + public function testHtmlRedirectionIsIntercepted($statusCode) { $response = new Response('Some content', $statusCode); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html', $hasSession), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock('Redirection'), true); $listener->onKernelResponse($event); @@ -78,7 +76,7 @@ class WebDebugToolbarListenerTest extends TestCase { $response = new Response('Some content', '301'); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'json', true), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request([], [], ['_format' => 'json']), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock('Redirection'), true); $listener->onKernelResponse($event); @@ -92,7 +90,7 @@ class WebDebugToolbarListenerTest extends TestCase $response = new Response(''); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -108,7 +106,7 @@ class WebDebugToolbarListenerTest extends TestCase $response = new Response(''); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); $response->headers->set('Content-Type', 'text/xml'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -124,7 +122,7 @@ class WebDebugToolbarListenerTest extends TestCase $response = new Response(''); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); $response->headers->set('Content-Disposition', 'attachment; filename=test.html'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html'), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -136,11 +134,11 @@ class WebDebugToolbarListenerTest extends TestCase * @depends testToolbarIsInjected * @dataProvider provideRedirects */ - public function testToolbarIsNotInjectedOnRedirection($statusCode, $hasSession) + public function testToolbarIsNotInjectedOnRedirection($statusCode) { $response = new Response('', $statusCode); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html', $hasSession), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -151,10 +149,8 @@ class WebDebugToolbarListenerTest extends TestCase public function provideRedirects() { return [ - [301, true], - [302, true], - [301, false], - [302, false], + [301], + [302], ]; } @@ -165,7 +161,7 @@ class WebDebugToolbarListenerTest extends TestCase { $response = new Response(''); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -181,7 +177,7 @@ class WebDebugToolbarListenerTest extends TestCase $response = new Response(''); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::SUB_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::SUB_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -197,7 +193,7 @@ class WebDebugToolbarListenerTest extends TestCase $response = new Response('
Some content
'); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -213,7 +209,10 @@ class WebDebugToolbarListenerTest extends TestCase $response = new Response(''); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(true), HttpKernelInterface::MASTER_REQUEST, $response); + $request = new Request(); + $request->headers->set('X-Requested-With', 'XMLHttpRequest'); + + $event = new ResponseEvent($this->createMock(Kernel::class), $request, HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -229,7 +228,7 @@ class WebDebugToolbarListenerTest extends TestCase $response = new Response(''); $response->headers->set('X-Debug-Token', 'xxxxxxxx'); - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'json'), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request([], [], ['_format' => 'json']), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock()); $listener->onKernelResponse($event); @@ -250,7 +249,7 @@ class WebDebugToolbarListenerTest extends TestCase ->willReturn('http://mydomain.com/_profiler/xxxxxxxx') ; - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator); $listener->onKernelResponse($event); @@ -271,7 +270,7 @@ class WebDebugToolbarListenerTest extends TestCase ->willThrowException(new \Exception('foo')) ; - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator); $listener->onKernelResponse($event); @@ -292,7 +291,7 @@ class WebDebugToolbarListenerTest extends TestCase ->willThrowException(new \Exception("This\nmultiline\r\ntabbed text should\tcome out\r on\n \ta single plain\r\nline")) ; - $event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(Kernel::class), new Request(), HttpKernelInterface::MASTER_REQUEST, $response); $listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator); $listener->onKernelResponse($event); @@ -300,28 +299,6 @@ class WebDebugToolbarListenerTest extends TestCase $this->assertEquals('Exception: This multiline tabbed text should come out on a single plain line', $response->headers->get('X-Debug-Error')); } - protected function getRequestMock($isXmlHttpRequest = false, $requestFormat = 'html', $hasSession = true) - { - $request = $this->getMockBuilder(Request::class)->setMethods(['getSession', 'isXmlHttpRequest', 'getRequestFormat'])->disableOriginalConstructor()->getMock(); - $request->expects($this->any()) - ->method('isXmlHttpRequest') - ->willReturn($isXmlHttpRequest); - $request->expects($this->any()) - ->method('getRequestFormat') - ->willReturn($requestFormat); - - $request->headers = new HeaderBag(); - - if ($hasSession) { - $session = $this->createMock(Session::class); - $request->expects($this->any()) - ->method('getSession') - ->willReturn($session); - } - - return $request; - } - protected function getTwigMock($render = 'WDT') { $templating = $this->createMock(Environment::class); diff --git a/src/Symfony/Component/ErrorHandler/Resources/views/exception_full.html.php b/src/Symfony/Component/ErrorHandler/Resources/views/exception_full.html.php index 5e8b043243..04f0fd5798 100644 --- a/src/Symfony/Component/ErrorHandler/Resources/views/exception_full.html.php +++ b/src/Symfony/Component/ErrorHandler/Resources/views/exception_full.html.php @@ -28,13 +28,6 @@ Symfony Docs - - diff --git a/src/Symfony/Component/HttpKernel/HttpCache/Store.php b/src/Symfony/Component/HttpKernel/HttpCache/Store.php index d3a79d7c9d..343123e6e4 100644 --- a/src/Symfony/Component/HttpKernel/HttpCache/Store.php +++ b/src/Symfony/Component/HttpKernel/HttpCache/Store.php @@ -298,7 +298,7 @@ class Store implements StoreInterface return []; } - return unserialize($entries); + return unserialize($entries) ?: []; } /** diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/AddRequestFormatsListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/AddRequestFormatsListenerTest.php index fab9a8a38f..9b3c1a2e58 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/AddRequestFormatsListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/AddRequestFormatsListenerTest.php @@ -16,6 +16,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\EventListener\AddRequestFormatsListener; +use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\KernelEvents; /** @@ -54,7 +55,7 @@ class AddRequestFormatsListenerTest extends TestCase public function testSetAdditionalFormats() { $request = $this->createMock(Request::class); - $event = $this->getRequestEventMock($request); + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $request->expects($this->once()) ->method('setFormat') @@ -62,14 +63,4 @@ class AddRequestFormatsListenerTest extends TestCase $this->listener->onKernelRequest($event); } - - protected function getRequestEventMock(Request $request) - { - $event = $this->createMock(RequestEvent::class); - $event->expects($this->any()) - ->method('getRequest') - ->willReturn($request); - - return $event; - } } diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php index 6534ebf4e2..4a05d65188 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/DisallowRobotsIndexingListenerTest.php @@ -29,7 +29,7 @@ class DisallowRobotsIndexingListenerTest extends TestCase $response = new Response(...$responseArgs); $listener = new DisallowRobotsIndexingListener(); - $event = new ResponseEvent($this->createMock(HttpKernelInterface::class), $this->createMock(Request::class), KernelInterface::MASTER_REQUEST, $response); + $event = new ResponseEvent($this->createMock(HttpKernelInterface::class), new Request(), KernelInterface::MASTER_REQUEST, $response); $listener->onResponse($event); diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php index ac6175d98f..5e45b29620 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php @@ -61,9 +61,7 @@ class SessionListenerTest extends TestCase $request = new Request(); $listener = new SessionListener($container); - $event = $this->createMock(RequestEvent::class); - $event->expects($this->exactly(2))->method('isMasterRequest')->willReturn(true); - $event->expects($this->once())->method('getRequest')->willReturn($request); + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener->onKernelRequest($event); diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/AbstractPreAuthenticatedListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/AbstractPreAuthenticatedListenerTest.php index 83909a73ad..a97d4d125e 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/AbstractPreAuthenticatedListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/AbstractPreAuthenticatedListenerTest.php @@ -14,6 +14,7 @@ namespace Symfony\Component\Security\Http\Tests\Firewall; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\PreAuthenticatedToken; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; @@ -62,14 +63,7 @@ class AbstractPreAuthenticatedListenerTest extends TestCase ->method('getPreAuthenticatedData') ->willReturn($userCredentials); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function testHandleWhenAuthenticationFails() @@ -109,14 +103,7 @@ class AbstractPreAuthenticatedListenerTest extends TestCase ->method('getPreAuthenticatedData') ->willReturn($userCredentials); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function testHandleWhenAuthenticationFailsWithDifferentToken() @@ -158,12 +145,7 @@ class AbstractPreAuthenticatedListenerTest extends TestCase ->method('getPreAuthenticatedData') ->willReturn($userCredentials); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener($event); } @@ -200,14 +182,7 @@ class AbstractPreAuthenticatedListenerTest extends TestCase ->method('getPreAuthenticatedData') ->willReturn($userCredentials); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function testHandleWithAnInvalidSimilarToken() @@ -250,13 +225,6 @@ class AbstractPreAuthenticatedListenerTest extends TestCase ->method('getPreAuthenticatedData') ->willReturn($userCredentials); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } } diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/BasicAuthenticationListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/BasicAuthenticationListenerTest.php index f1e6c8bca7..b3bf2f9341 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/BasicAuthenticationListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/BasicAuthenticationListenerTest.php @@ -15,6 +15,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager; use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface; @@ -64,14 +65,7 @@ class BasicAuthenticationListenerTest extends TestCase $this->createMock(AuthenticationEntryPointInterface::class) ); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function testHandleWhenAuthenticationFails() @@ -109,19 +103,11 @@ class BasicAuthenticationListenerTest extends TestCase $authenticationEntryPoint ); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - $event - ->expects($this->once()) - ->method('setResponse') - ->with($this->equalTo($response)) - ; + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener($event); + + $this->assertSame($response, $event->getResponse()); } public function testHandleWithNoUsernameServerParameter() @@ -141,14 +127,7 @@ class BasicAuthenticationListenerTest extends TestCase $this->createMock(AuthenticationEntryPointInterface::class) ); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function testHandleWithASimilarAuthenticatedToken() @@ -177,14 +156,7 @@ class BasicAuthenticationListenerTest extends TestCase $this->createMock(AuthenticationEntryPointInterface::class) ); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function testItRequiresProviderKey() @@ -236,18 +208,10 @@ class BasicAuthenticationListenerTest extends TestCase $authenticationEntryPoint ); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - $event - ->expects($this->once()) - ->method('setResponse') - ->with($this->equalTo($response)) - ; + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener($event); + + $this->assertSame($response, $event->getResponse()); } } diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/ChannelListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/ChannelListenerTest.php index 42dd734fca..5fab54c132 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/ChannelListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/ChannelListenerTest.php @@ -15,6 +15,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Security\Http\AccessMapInterface; use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface; use Symfony\Component\Security\Http\Firewall\ChannelListener; @@ -44,19 +45,12 @@ class ChannelListenerTest extends TestCase ->method('start') ; - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - $event - ->expects($this->never()) - ->method('setResponse') - ; + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener = new ChannelListener($accessMap, $entryPoint); $listener($event); + + $this->assertNull($event->getResponse()); } public function testHandleWithSecuredRequestAndHttpsChannel() @@ -82,19 +76,12 @@ class ChannelListenerTest extends TestCase ->method('start') ; - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - $event - ->expects($this->never()) - ->method('setResponse') - ; + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener = new ChannelListener($accessMap, $entryPoint); $listener($event); + + $this->assertNull($event->getResponse()); } public function testHandleWithNotSecuredRequestAndHttpsChannel() @@ -124,20 +111,12 @@ class ChannelListenerTest extends TestCase ->willReturn($response) ; - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - $event - ->expects($this->once()) - ->method('setResponse') - ->with($this->equalTo($response)) - ; + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener = new ChannelListener($accessMap, $entryPoint); $listener($event); + + $this->assertSame($response, $event->getResponse()); } public function testHandleWithSecuredRequestAndHttpChannel() @@ -167,19 +146,11 @@ class ChannelListenerTest extends TestCase ->willReturn($response) ; - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - $event - ->expects($this->once()) - ->method('setResponse') - ->with($this->equalTo($response)) - ; + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener = new ChannelListener($accessMap, $entryPoint); $listener($event); + + $this->assertSame($response, $event->getResponse()); } } diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php index 016c429e4c..fca4ccfc17 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php @@ -146,13 +146,9 @@ class ContextListenerTest extends TestCase public function testInvalidTokenInSession($token) { $tokenStorage = $this->createMock(TokenStorageInterface::class); - $event = $this->createMock(RequestEvent::class); $request = $this->createMock(Request::class); $session = $this->createMock(SessionInterface::class); - $event->expects($this->any()) - ->method('getRequest') - ->willReturn($request); $request->expects($this->any()) ->method('hasPreviousSession') ->willReturn(true); @@ -168,7 +164,7 @@ class ContextListenerTest extends TestCase ->with(null); $listener = new ContextListener($tokenStorage, [], 'key123'); - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function provideInvalidToken() @@ -186,22 +182,13 @@ class ContextListenerTest extends TestCase { $tokenStorage = $this->createMock(TokenStorageInterface::class); $dispatcher = $this->createMock(EventDispatcherInterface::class); - $event = $this->createMock(RequestEvent::class); - $listener = new ContextListener($tokenStorage, [], 'key123', null, $dispatcher); - $event->expects($this->any()) - ->method('isMasterRequest') - ->willReturn(true); - $event->expects($this->any()) - ->method('getRequest') - ->willReturn($this->createMock(Request::class)); - $dispatcher->expects($this->once()) ->method('addListener') ->with(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']); - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MASTER_REQUEST)); } public function testOnKernelResponseListenerRemovesItself() @@ -234,14 +221,11 @@ class ContextListenerTest extends TestCase $request = $this->createMock(Request::class); $request->expects($this->any())->method('hasPreviousSession')->willReturn(false); - $event = $this->createMock(RequestEvent::class); - $event->expects($this->any())->method('getRequest')->willReturn($request); - $tokenStorage = $this->createMock(TokenStorageInterface::class); $tokenStorage->expects($this->once())->method('setToken')->with(null); $listener = new ContextListener($tokenStorage, [], 'key123'); - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function testIfTokenIsDeauthenticated() diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/LogoutListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/LogoutListenerTest.php index effccd6a8c..e5aa1d281c 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/LogoutListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/LogoutListenerTest.php @@ -17,6 +17,7 @@ use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Exception\LogoutException; @@ -36,19 +37,19 @@ class LogoutListenerTest extends TestCase $dispatcher = $this->getEventDispatcher(); [$listener, , $httpUtils, $options] = $this->getListener($dispatcher); - [$event, $request] = $this->getRequestEvent(); - $logoutEventDispatched = false; - $dispatcher->addListener(LogoutEvent::class, function (LogoutEvent $event) use (&$logoutEventDispatched) { + $dispatcher->addListener(LogoutEvent::class, function () use (&$logoutEventDispatched) { $logoutEventDispatched = true; }); + $request = new Request(); + $httpUtils->expects($this->once()) ->method('checkRequestPath') ->with($request, $options['logout_path']) ->willReturn(false); - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); $this->assertFalse($logoutEventDispatched, 'LogoutEvent should not have been dispatched.'); } @@ -60,8 +61,7 @@ class LogoutListenerTest extends TestCase [$listener, $tokenStorage, $httpUtils, $options] = $this->getListener($dispatcher, $tokenManager); - [$event, $request] = $this->getRequestEvent(); - + $request = new Request(); $request->query->set('_csrf_token', 'token'); $httpUtils->expects($this->once()) @@ -86,11 +86,11 @@ class LogoutListenerTest extends TestCase ->method('setToken') ->with(null); - $event->expects($this->once()) - ->method('setResponse') - ->with($response); + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener($event); + + $this->assertSame($response, $event->getResponse()); } public function testHandleMatchedPathWithoutCsrfValidation() @@ -98,7 +98,7 @@ class LogoutListenerTest extends TestCase $dispatcher = $this->getEventDispatcher(); [$listener, $tokenStorage, $httpUtils, $options] = $this->getListener($dispatcher); - [$event, $request] = $this->getRequestEvent(); + $request = new Request(); $httpUtils->expects($this->once()) ->method('checkRequestPath') @@ -118,11 +118,11 @@ class LogoutListenerTest extends TestCase ->method('setToken') ->with(null); - $event->expects($this->once()) - ->method('setResponse') - ->with($response); + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener($event); + + $this->assertSame($response, $event->getResponse()); } public function testNoResponseSet() @@ -131,14 +131,14 @@ class LogoutListenerTest extends TestCase [$listener, , $httpUtils, $options] = $this->getListener(); - [$event, $request] = $this->getRequestEvent(); + $request = new Request(); $httpUtils->expects($this->once()) ->method('checkRequestPath') ->with($request, $options['logout_path']) ->willReturn(true); - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } public function testCsrfValidationFails() @@ -148,8 +148,7 @@ class LogoutListenerTest extends TestCase [$listener, , $httpUtils, $options] = $this->getListener(null, $tokenManager); - [$event, $request] = $this->getRequestEvent(); - + $request = new Request(); $request->query->set('_csrf_token', 'token'); $httpUtils->expects($this->once()) @@ -161,7 +160,7 @@ class LogoutListenerTest extends TestCase ->method('isTokenValid') ->willReturn(false); - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } /** @@ -179,7 +178,7 @@ class LogoutListenerTest extends TestCase $token = $this->getToken(); $tokenStorage->expects($this->any())->method('getToken')->willReturn($token); - [$event, $request] = $this->getRequestEvent(); + $request = new Request(); $httpUtils->expects($this->once()) ->method('checkRequestPath') @@ -193,9 +192,11 @@ class LogoutListenerTest extends TestCase $handler->expects($this->once())->method('logout')->with($request, $response, $token); $listener->addHandler($handler); - $event->expects($this->once())->method('setResponse')->with($this->identicalTo($response)); + $event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST); $listener($event); + + $this->assertSame($response, $event->getResponse()); } private function getTokenManager() @@ -208,17 +209,6 @@ class LogoutListenerTest extends TestCase return $this->createMock(TokenStorageInterface::class); } - private function getRequestEvent() - { - $event = $this->createMock(RequestEvent::class); - - $event->expects($this->any()) - ->method('getRequest') - ->willReturn($request = new Request()); - - return [$event, $request]; - } - private function getHttpUtils() { return $this->createMock(HttpUtils::class); diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php index 2ae8abc230..42c493cfaa 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/RememberMeListenerTest.php @@ -16,7 +16,6 @@ use Psr\Log\LoggerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; -use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; @@ -363,11 +362,6 @@ class RememberMeListenerTest extends TestCase return $event; } - protected function getResponseEvent(): ResponseEvent - { - return $this->createMock(ResponseEvent::class); - } - protected function getListener($withDispatcher = false, $catchExceptions = true, $withSessionStrategy = false) { $listener = new RememberMeListener( diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/UsernamePasswordFormAuthenticationListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/UsernamePasswordFormAuthenticationListenerTest.php index dc4a3de8f3..0a38ee2e85 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/UsernamePasswordFormAuthenticationListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/UsernamePasswordFormAuthenticationListenerTest.php @@ -78,14 +78,7 @@ class UsernamePasswordFormAuthenticationListenerTest extends TestCase ['require_previous_session' => false] ); - $event = $this->createMock(RequestEvent::class); - $event - ->expects($this->any()) - ->method('getRequest') - ->willReturn($request) - ; - - $listener($event); + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); } /** diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf index 7ea908e757..e8845ec005 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.uk.xlf @@ -386,6 +386,10 @@ This value is not a valid International Securities Identification Number (ISIN). Це значення не є дійсним міжнародним ідентифікаційним номером цінних паперів (ISIN). + + This value should be a valid expression. + Це значення має бути дійсним виразом. +