Skip to content

Commit 52ee3a1

Browse files
committed
fix: allow to use a Hub argument aliases for a builtin Hub
1 parent 28e7502 commit 52ee3a1

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

src/DependencyInjection/MercureExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,10 @@ public function load(array $configs, ContainerBuilder $container): void
169169
->addTag('mercure.hub');
170170
}
171171

172-
if (!$builtinHub) {
173-
$container->registerAliasForArgument($hubId, HubInterface::class, "{$name}Hub");
174-
$container->registerAliasForArgument($hubId, HubInterface::class, $name);
172+
$container->registerAliasForArgument($hubId, HubInterface::class, "{$name}Hub");
173+
$container->registerAliasForArgument($hubId, HubInterface::class, $name);
175174

175+
if (!$builtinHub) {
176176
$publisherDefinition = $container->register($publisherId, Publisher::class)
177177
->addArgument($hub['url'])
178178
->addArgument(new Reference($tokenProvider))

tests/DependencyInjection/MercureExtensionTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ public function testExtension()
9292
'subscribe' => 'https://example.com/book/1.jsonld',
9393
],
9494
],
95+
'builtin' => [
96+
'public_url' => 'https://example.com/.well-known/mercure',
97+
],
9598
],
9699
],
97100
];
@@ -147,6 +150,25 @@ public function testExtension()
147150
$this->assertArrayHasKey('Symfony\Component\Mercure\Jwt\TokenProviderInterface $managed2TokenProvider', $container->getAliases());
148151
$this->assertArrayHasKey('Symfony\Component\Mercure\Jwt\TokenFactoryInterface $managed2TokenFactory', $container->getAliases());
149152

153+
$this->assertTrue($container->hasDefinition('mercure.hub.builtin')); // Hub instance
154+
$this->assertFalse($container->hasDefinition('mercure.hub.builtin.publisher')); // Publisher
155+
$this->assertFalse($container->hasDefinition('mercure.hub.builtin.jwt.provider'));
156+
$this->assertFalse($container->hasDefinition('mercure.hub.builtin.jwt.factory'));
157+
$this->assertSame($config['mercure']['hubs']['demo']['public_url'], $container->getDefinition('mercure.hub.builtin')->getArgument(0));
158+
159+
$this->assertArrayHasKey('Symfony\Component\Mercure\HubInterface $builtin', $container->getAliases());
160+
$this->assertArrayNotHasKey('Symfony\Component\Mercure\PublisherInterface $builtin', $container->getAliases());
161+
$this->assertArrayNotHasKey('Symfony\Component\Mercure\Jwt\TokenProviderInterface $builtin', $container->getAliases());
162+
$this->assertArrayNotHasKey('Symfony\Component\Mercure\Jwt\TokenFactoryInterface $builtin', $container->getAliases());
163+
164+
$this->assertArrayHasKey('Symfony\Component\Mercure\HubInterface $builtinHub', $container->getAliases());
165+
$this->assertArrayNotHasKey('Symfony\Component\Mercure\PublisherInterface $builtinPublisher', $container->getAliases());
166+
$this->assertArrayNotHasKey('Symfony\Component\Mercure\Jwt\TokenProviderInterface $builtinProvider', $container->getAliases());
167+
$this->assertArrayNotHasKey('Symfony\Component\Mercure\Jwt\TokenFactoryInterface $builtinFactory', $container->getAliases());
168+
169+
$this->assertArrayNotHasKey('Symfony\Component\Mercure\Jwt\TokenProviderInterface $builtinTokenProvider', $container->getAliases());
170+
$this->assertArrayNotHasKey('Symfony\Component\Mercure\Jwt\TokenFactoryInterface $builtinTokenFactory', $container->getAliases());
171+
150172
$this->assertTrue($container->hasDefinition('mercure.hub.demo')); // Hub instance
151173
$this->assertTrue($container->hasDefinition('mercure.hub.demo.publisher')); // Publisher
152174
$this->assertTrue($container->hasDefinition('mercure.hub.demo.jwt.provider'));

0 commit comments

Comments
 (0)