From aec1579ce0029e93cb4cc5f11dfe529d6ebf7eba Mon Sep 17 00:00:00 2001 From: semaz Date: Tue, 10 May 2022 18:15:12 +0300 Subject: [PATCH 1/3] add support for symfony 6.0 --- composer.json | 18 +++++++++--------- src/Codeception/Module/Symfony.php | 2 +- .../Module/Symfony/SessionAssertionsTrait.php | 19 ++++++++++++++----- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/composer.json b/composer.json index d9ddbbcf..d3ad5022 100644 --- a/composer.json +++ b/composer.json @@ -19,20 +19,20 @@ "php": "^8.0", "ext-json": "*", "codeception/lib-innerbrowser": "^3.1.1", - "codeception/codeception": "^5.0.0-RC1" + "codeception/codeception": "^5.0.0-RC3" }, "require-dev": { "codeception/module-asserts": "^3.0", "codeception/module-doctrine2": "^3.0", "doctrine/orm": "^2.10", - "symfony/form": "^4.4 | ^5.0", - "symfony/framework-bundle": "^4.4 | ^5.0", - "symfony/http-kernel": "^4.4 | ^5.0", - "symfony/mailer": "^4.4 | ^5.0", - "symfony/routing": "^4.4 | ^5.0", - "symfony/security-bundle": "^4.4 | ^5.0", - "symfony/twig-bundle": "^4.4 | ^5.0", - "vlucas/phpdotenv": "^4.2 | ^5.3" + "symfony/form": "^6.0", + "symfony/framework-bundle": "^6.0", + "symfony/http-kernel": "^6.0", + "symfony/mailer": "^6.0", + "symfony/routing": "^6.0", + "symfony/security-bundle": "^6.0", + "symfony/twig-bundle": "^6.0", + "vlucas/phpdotenv": "^4.2 | ^5.4" }, "suggest": { "codeception/module-asserts": "Include traditional PHPUnit assertions in your tests", diff --git a/src/Codeception/Module/Symfony.php b/src/Codeception/Module/Symfony.php index 1d045f07..979855ae 100644 --- a/src/Codeception/Module/Symfony.php +++ b/src/Codeception/Module/Symfony.php @@ -160,7 +160,7 @@ class Symfony extends Framework implements DoctrineProvider, PartedModule 'cache_router' => false, 'em_service' => 'doctrine.orm.entity_manager', 'rebootable_client' => true, - 'guard' => false + 'authenticator' => false ]; /** diff --git a/src/Codeception/Module/Symfony/SessionAssertionsTrait.php b/src/Codeception/Module/Symfony/SessionAssertionsTrait.php index 4c3bc192..55457934 100644 --- a/src/Codeception/Module/Symfony/SessionAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/SessionAssertionsTrait.php @@ -9,7 +9,7 @@ use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\User\UserInterface; -use Symfony\Component\Security\Guard\Token\PostAuthenticationGuardToken; +use Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken; use Symfony\Component\Security\Http\Logout\LogoutUrlGenerator; use function is_int; use function serialize; @@ -37,12 +37,14 @@ public function amLoggedInAs(UserInterface $user, string $firewallName = 'main', { $session = $this->getCurrentSession(); - if ($this->config['guard']) { - $token = new PostAuthenticationGuardToken($user, $firewallName, $user->getRoles()); + if ($this->config['authenticator']) { + $token = new PostAuthenticationToken($user, $firewallName, $user->getRoles()); } else { - $token = new UsernamePasswordToken($user, null, $firewallName, $user->getRoles()); + $token = new UsernamePasswordToken($user, $firewallName, $user->getRoles()); } + $this->getTokenStorage()->setToken($token); + if ($firewallContext) { $session->set('_security_' . $firewallContext, serialize($token)); } else { @@ -199,6 +201,13 @@ protected function getLogoutUrlGenerator(): ?LogoutUrlGenerator protected function getCurrentSession(): SessionInterface { - return $this->grabService('session'); + if ($this->_getContainer()->has('session')) { + return $this->grabService('session'); + } + + $session = $this->grabService('session.factory')->createSession(); + $this->_getContainer()->set('session', $session); + + return $session; } } From 2d0d11c75e81581fcc6c70f9eeefdd343726d754 Mon Sep 17 00:00:00 2001 From: semaz Date: Tue, 10 May 2022 22:16:01 +0300 Subject: [PATCH 2/3] brought back support for ^4.4 | ^5.0 symfony versions --- composer.json | 14 +++++------ src/Codeception/Module/Symfony.php | 3 ++- .../Module/Symfony/SessionAssertionsTrait.php | 24 ++++++++++++++++--- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index d3ad5022..0363fe31 100644 --- a/composer.json +++ b/composer.json @@ -25,13 +25,13 @@ "codeception/module-asserts": "^3.0", "codeception/module-doctrine2": "^3.0", "doctrine/orm": "^2.10", - "symfony/form": "^6.0", - "symfony/framework-bundle": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/routing": "^6.0", - "symfony/security-bundle": "^6.0", - "symfony/twig-bundle": "^6.0", + "symfony/form": "^4.4 | ^5.0 | ^6.0", + "symfony/framework-bundle": "^4.4 | ^5.0 | ^6.0", + "symfony/http-kernel": "^4.4 | ^5.0 | ^6.0", + "symfony/mailer": "^4.4 | ^5.0 | ^6.0", + "symfony/routing": "^4.4 | ^5.0 | ^6.0", + "symfony/security-bundle": "^4.4 | ^5.0 | ^6.0", + "symfony/twig-bundle": "^4.4 | ^5.0 | ^6.0", "vlucas/phpdotenv": "^4.2 | ^5.4" }, "suggest": { diff --git a/src/Codeception/Module/Symfony.php b/src/Codeception/Module/Symfony.php index 979855ae..7bfd7b0a 100644 --- a/src/Codeception/Module/Symfony.php +++ b/src/Codeception/Module/Symfony.php @@ -160,7 +160,8 @@ class Symfony extends Framework implements DoctrineProvider, PartedModule 'cache_router' => false, 'em_service' => 'doctrine.orm.entity_manager', 'rebootable_client' => true, - 'authenticator' => false + 'authenticator' => false, + 'guard' => false ]; /** diff --git a/src/Codeception/Module/Symfony/SessionAssertionsTrait.php b/src/Codeception/Module/Symfony/SessionAssertionsTrait.php index 55457934..532c5cd4 100644 --- a/src/Codeception/Module/Symfony/SessionAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/SessionAssertionsTrait.php @@ -9,6 +9,7 @@ use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\User\UserInterface; +use Symfony\Component\Security\Guard\Token\PostAuthenticationGuardToken; use Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken; use Symfony\Component\Security\Http\Logout\LogoutUrlGenerator; use function is_int; @@ -37,10 +38,18 @@ public function amLoggedInAs(UserInterface $user, string $firewallName = 'main', { $session = $this->getCurrentSession(); - if ($this->config['authenticator']) { - $token = new PostAuthenticationToken($user, $firewallName, $user->getRoles()); + if ($this->getSymfonyMajorVersion() < 6) { + if ($this->config['guard']) { + $token = new PostAuthenticationGuardToken($user, $firewallName, $user->getRoles()); + } else { + $token = new UsernamePasswordToken($user, null, $firewallName, $user->getRoles()); + } } else { - $token = new UsernamePasswordToken($user, $firewallName, $user->getRoles()); + if ($this->config['authenticator']) { + $token = new PostAuthenticationToken($user, $firewallName, $user->getRoles()); + } else { + $token = new UsernamePasswordToken($user, $firewallName, $user->getRoles()); + } } $this->getTokenStorage()->setToken($token); @@ -201,6 +210,10 @@ protected function getLogoutUrlGenerator(): ?LogoutUrlGenerator protected function getCurrentSession(): SessionInterface { + if ($this->getSymfonyMajorVersion() < 6) { + return $this->grabService('session'); + } + if ($this->_getContainer()->has('session')) { return $this->grabService('session'); } @@ -210,4 +223,9 @@ protected function getCurrentSession(): SessionInterface return $session; } + + protected function getSymfonyMajorVersion(): int + { + return $this->kernel::MAJOR_VERSION; + } } From 61de05450f5f30372ef5fc7142c43acf64c04f69 Mon Sep 17 00:00:00 2001 From: semaz Date: Tue, 10 May 2022 22:36:07 +0300 Subject: [PATCH 3/3] resolve pr conversations --- src/Codeception/Module/Symfony.php | 2 ++ .../Module/Symfony/SessionAssertionsTrait.php | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Codeception/Module/Symfony.php b/src/Codeception/Module/Symfony.php index 7bfd7b0a..cdb206cc 100644 --- a/src/Codeception/Module/Symfony.php +++ b/src/Codeception/Module/Symfony.php @@ -83,6 +83,8 @@ * * debug: true - Turn on/off debug mode * * cache_router: 'false' - Enable router caching between tests in order to [increase performance](http://lakion.com/blog/how-did-we-speed-up-sylius-behat-suite-with-blackfire) * * rebootable_client: 'true' - Reboot client's kernel before each request + * * guard: 'false' - Enable custom authentication system with guard (only for 4.x and 5.x versions of the symfony) + * * authenticator: 'false' - Reboot client's kernel before each request (only for 6.x versions of the symfony) * * #### Example (`functional.suite.yml`) - Symfony 4 Directory Structure * diff --git a/src/Codeception/Module/Symfony/SessionAssertionsTrait.php b/src/Codeception/Module/Symfony/SessionAssertionsTrait.php index 532c5cd4..73a440dc 100644 --- a/src/Codeception/Module/Symfony/SessionAssertionsTrait.php +++ b/src/Codeception/Module/Symfony/SessionAssertionsTrait.php @@ -210,16 +210,18 @@ protected function getLogoutUrlGenerator(): ?LogoutUrlGenerator protected function getCurrentSession(): SessionInterface { + $container = $this->_getContainer(); + if ($this->getSymfonyMajorVersion() < 6) { - return $this->grabService('session'); + return $container->get('session'); } - if ($this->_getContainer()->has('session')) { - return $this->grabService('session'); + if ($container->has('session')) { + return $container->get('session'); } - $session = $this->grabService('session.factory')->createSession(); - $this->_getContainer()->set('session', $session); + $session = $container->get('session.factory')->createSession(); + $container->set('session', $session); return $session; } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy