diff --git a/src/Maker/MakeAuthenticator.php b/src/Maker/MakeAuthenticator.php index a1e711d6b..68abfc096 100644 --- a/src/Maker/MakeAuthenticator.php +++ b/src/Maker/MakeAuthenticator.php @@ -403,11 +403,12 @@ public function configureDependencies(DependencyBuilder $dependencies, InputInte private function providerKeyTypeHint(): string { $reflectionMethod = new \ReflectionMethod(AbstractFormLoginAuthenticator::class, 'onAuthenticationSuccess'); - $typeHint = (string) $reflectionMethod->getParameters()[2]->getType(); - if ($typeHint) { - $typeHint .= ' '; + $type = $reflectionMethod->getParameters()[2]->getType(); + + if (!$type instanceof \ReflectionNamedType) { + return ''; } - return $typeHint; + return sprintf('%s ', $type->getName()); } } diff --git a/tests/GeneratorTest.php b/tests/GeneratorTest.php index 5a7d0882d..5993b54fd 100644 --- a/tests/GeneratorTest.php +++ b/tests/GeneratorTest.php @@ -21,7 +21,7 @@ class GeneratorTest extends TestCase /** * @dataProvider getClassNameDetailsTests */ - public function testCreateClassNameDetails(string $name, string $prefix, string $suffix = '', string $expectedFullClassName, string $expectedRelativeClassName) + public function testCreateClassNameDetails(string $name, string $prefix, string $suffix, string $expectedFullClassName, string $expectedRelativeClassName): void { $fileManager = $this->createMock(FileManager::class); $fileManager->expects($this->any()) @@ -38,7 +38,7 @@ public function testCreateClassNameDetails(string $name, string $prefix, string $this->assertSame($expectedRelativeClassName, $classNameDetails->getRelativeName()); } - public function getClassNameDetailsTests() + public function getClassNameDetailsTests(): \Generator { yield 'simple_class' => [ 'foo', diff --git a/tests/fixtures/MakeAuthenticatorLoginFormUserEntity/tests/SecurityControllerTest.php b/tests/fixtures/MakeAuthenticatorLoginFormUserEntity/tests/SecurityControllerTest.php index 65053f229..2ac7a6e2d 100644 --- a/tests/fixtures/MakeAuthenticatorLoginFormUserEntity/tests/SecurityControllerTest.php +++ b/tests/fixtures/MakeAuthenticatorLoginFormUserEntity/tests/SecurityControllerTest.php @@ -6,6 +6,7 @@ use App\Security\AppCustomAuthenticator; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Component\HttpKernel\Kernel; class SecurityControllerTest extends WebTestCase { @@ -60,7 +61,17 @@ public function testCommand() $client->submit($form); $this->assertStringContainsString('TODO: provide a valid redirect', $client->getResponse()->getContent()); - $this->assertNotNull($token = $client->getContainer()->get('security.token_storage')->getToken()); + + $tokenStorage = static::$container->get('security.token_storage'); + + // Handle Session deprecations in Symfony 5.3+ + if (Kernel::VERSION_ID >= 50300) { + $tokenStorage->disableUsageTracking(); + } + + $token = $tokenStorage->getToken(); + + self::assertNotNull($token); $this->assertInstanceOf(User::class, $token->getUser()); } } diff --git a/tests/fixtures/MakeAuthenticatorLoginFormUserEntityLogout/tests/SecurityControllerTest.php b/tests/fixtures/MakeAuthenticatorLoginFormUserEntityLogout/tests/SecurityControllerTest.php index b6de0a4aa..07ef684ac 100644 --- a/tests/fixtures/MakeAuthenticatorLoginFormUserEntityLogout/tests/SecurityControllerTest.php +++ b/tests/fixtures/MakeAuthenticatorLoginFormUserEntityLogout/tests/SecurityControllerTest.php @@ -6,6 +6,8 @@ use App\Security\AppCustomAuthenticator; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Component\HttpKernel\Kernel; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; class SecurityControllerTest extends WebTestCase { @@ -60,10 +62,23 @@ public function testCommand() $client->submit($form); $this->assertStringContainsString('TODO: provide a valid redirect', $client->getResponse()->getContent()); - $this->assertNotNull($token = $client->getContainer()->get('security.token_storage')->getToken()); - $this->assertInstanceOf(User::class, $token->getUser()); + $this->assertInstanceOf(User::class, $this->getToken()->getUser()); $client->request('GET', '/logout'); - $this->assertNull($client->getContainer()->get('security.token_storage')->getToken()); + $this->assertNull($this->getToken()); + } + + /** + * Handle Session deprecations in Symfony 5.3+ + */ + private function getToken(): ?TokenInterface + { + $tokenStorage = static::$container->get('security.token_storage'); + + if (Kernel::VERSION_ID >= 50300) { + $tokenStorage->disableUsageTracking(); + } + + return $tokenStorage->getToken(); } } diff --git a/tests/fixtures/MakeAuthenticatorSecurity52LoginForm/tests/SecurityControllerTest.php b/tests/fixtures/MakeAuthenticatorSecurity52LoginForm/tests/SecurityControllerTest.php index 592ee6874..8475ca2c1 100644 --- a/tests/fixtures/MakeAuthenticatorSecurity52LoginForm/tests/SecurityControllerTest.php +++ b/tests/fixtures/MakeAuthenticatorSecurity52LoginForm/tests/SecurityControllerTest.php @@ -6,6 +6,7 @@ use App\Security\AppTestSecurity52LoginFormAuthenticator; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; /** @@ -68,7 +69,17 @@ public function testLoginFormAuthenticatorUsingSecurity51(): void $client->submit($form); self::assertStringContainsString('TODO: provide a valid redirect', $client->getResponse()->getContent()); - self::assertNotNull($token = $client->getContainer()->get('security.token_storage')->getToken()); + + $tokenStorage = static::$container->get('security.token_storage'); + + // Handle Session deprecations in Symfony 5.3+ + if (Kernel::VERSION_ID >= 50300) { + $tokenStorage->disableUsageTracking(); + } + + $token = $tokenStorage->getToken(); + + self::assertNotNull($token); self::assertInstanceOf(User::class, $token->getUser()); } }