diff --git a/src/Bundle/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php b/src/Bundle/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php index b5c5c756..4828c44e 100644 --- a/src/Bundle/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php +++ b/src/Bundle/DependencyInjection/Source/NestedToken/NestedTokenBuilder.php @@ -42,7 +42,11 @@ public function load(array $configs, ContainerBuilder $container): void $definition->addTag($id, $attributes); } $container->setDefinition($service_id, $definition); - $container->registerAliasForArgument($service_id, self::class, $name . 'NestedTokenBuilder'); + $container->registerAliasForArgument( + $service_id, + NestedTokenBuilderService::class, + $name . 'NestedTokenBuilder' + ); } } diff --git a/src/Bundle/DependencyInjection/Source/NestedToken/NestedTokenLoader.php b/src/Bundle/DependencyInjection/Source/NestedToken/NestedTokenLoader.php index 25283cb9..b233d484 100644 --- a/src/Bundle/DependencyInjection/Source/NestedToken/NestedTokenLoader.php +++ b/src/Bundle/DependencyInjection/Source/NestedToken/NestedTokenLoader.php @@ -44,7 +44,11 @@ public function load(array $configs, ContainerBuilder $container): void $definition->addTag($id, $attributes); } $container->setDefinition($service_id, $definition); - $container->registerAliasForArgument($service_id, self::class, $name . 'NestedTokenLoader'); + $container->registerAliasForArgument( + $service_id, + NestedTokenLoaderService::class, + $name . 'NestedTokenLoader' + ); } } diff --git a/tests/Bundle/JoseFramework/Functional/AutowiringAliasesTest.php b/tests/Bundle/JoseFramework/Functional/AutowiringAliasesTest.php new file mode 100644 index 00000000..5df6d770 --- /dev/null +++ b/tests/Bundle/JoseFramework/Functional/AutowiringAliasesTest.php @@ -0,0 +1,83 @@ + + */ + public static function autowiringAliases(): iterable + { + $container = new ContainerBuilder(); + $container->setParameter('kernel.debug', false); + (new JoseFrameworkBundle())->getContainerExtension() + ->load([Yaml::parseFile(__DIR__ . '/../config/config_test.yml')['jose']], $container); + + foreach ($container->getAliases() as $id => $alias) { + if (str_starts_with($id, '.') || ! str_contains($id, ' $')) { + continue; + } + $serviceId = (string) $alias; + + yield $id => [ + explode(' $', $id, 2)[0], + $serviceId, + $container->findDefinition($serviceId) + ->getClass() ?? '', + ]; + } + } +} diff --git a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderTest.php b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderTest.php index 09c9615c..748da453 100644 --- a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderTest.php +++ b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenBuilderTest.php @@ -7,6 +7,7 @@ use Jose\Bundle\JoseFramework\Services\NestedTokenBuilderFactory; use Jose\Component\Core\JWK; use Jose\Component\NestedToken\NestedTokenBuilder; +use Jose\Tests\Bundle\JoseFramework\TestBundle\Service\NestedTokenServiceConsumer; use Jose\Tests\Bundle\JoseFramework\WebTestCase; use PHPUnit\Framework\Attributes\Test; @@ -45,6 +46,23 @@ public static function theNestedTokenBuilderFromTheConfigurationHelperIsAvailabl static::assertTrue($container->has('jose.nested_token_builder.nested_token_builder_2')); } + #[Test] + public static function theNestedTokenBuilderFromTheConfigurationCanBeAutowired(): void + { + static::ensureKernelShutdown(); + $client = static::createClient(); + $container = $client->getContainer(); + static::assertNotNull($container); + + /** @var NestedTokenServiceConsumer $consumer */ + $consumer = $container->get(NestedTokenServiceConsumer::class); + + static::assertSame( + $container->get('jose.nested_token_builder.nested_token_builder_1'), + $consumer->getBuilder() + ); + } + #[Test] public static function aNestedTokenCanBeSignedAndEncryptedUsingTheServiceCreatedFromTheConfiguration(): void { diff --git a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderTest.php b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderTest.php index 146e5244..6f0c5ddd 100644 --- a/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderTest.php +++ b/tests/Bundle/JoseFramework/Functional/NestedToken/NestedTokenLoaderTest.php @@ -8,6 +8,7 @@ use Jose\Component\Core\JWK; use Jose\Component\Core\JWKSet; use Jose\Component\NestedToken\NestedTokenLoader; +use Jose\Tests\Bundle\JoseFramework\TestBundle\Service\NestedTokenServiceConsumer; use Jose\Tests\Bundle\JoseFramework\WebTestCase; use PHPUnit\Framework\Attributes\Test; @@ -46,6 +47,23 @@ public static function theNestedTokenLoaderFromTheConfigurationHelperIsAvailable static::assertTrue($container->has('jose.nested_token_loader.nested_token_loader_2')); } + #[Test] + public static function theNestedTokenLoaderFromTheConfigurationCanBeAutowired(): void + { + static::ensureKernelShutdown(); + $client = static::createClient(); + $container = $client->getContainer(); + static::assertNotNull($container); + + /** @var NestedTokenServiceConsumer $consumer */ + $consumer = $container->get(NestedTokenServiceConsumer::class); + + static::assertSame( + $container->get('jose.nested_token_loader.nested_token_loader_1'), + $consumer->getLoader() + ); + } + #[Test] public static function aNestedTokenCanBeDecryptedAndVerifiedUsingTheServiceCreatedFromTheConfiguration(): void { diff --git a/tests/Bundle/JoseFramework/TestBundle/Resources/config/services.php b/tests/Bundle/JoseFramework/TestBundle/Resources/config/services.php index 5eeef8c8..54dfe723 100644 --- a/tests/Bundle/JoseFramework/TestBundle/Resources/config/services.php +++ b/tests/Bundle/JoseFramework/TestBundle/Resources/config/services.php @@ -3,6 +3,7 @@ declare(strict_types=1); use Jose\Tests\Bundle\JoseFramework\TestBundle\Checker\CustomChecker; +use Jose\Tests\Bundle\JoseFramework\TestBundle\Service\NestedTokenServiceConsumer; use Psr\Clock\ClockInterface; use Symfony\Component\Clock\NativeClock; use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; @@ -25,4 +26,8 @@ $container->set(ClockInterface::class) ->class(NativeClock::class) ; + + $container->set(NestedTokenServiceConsumer::class) + ->public() + ; }; diff --git a/tests/Bundle/JoseFramework/TestBundle/Service/NestedTokenServiceConsumer.php b/tests/Bundle/JoseFramework/TestBundle/Service/NestedTokenServiceConsumer.php new file mode 100644 index 00000000..672ae751 --- /dev/null +++ b/tests/Bundle/JoseFramework/TestBundle/Service/NestedTokenServiceConsumer.php @@ -0,0 +1,31 @@ +nestedTokenLoader1NestedTokenLoader; + } + + public function getBuilder(): NestedTokenBuilder + { + return $this->nestedTokenBuilder1NestedTokenBuilder; + } +}