Skip to content

Commit d808c6b

Browse files
Taluudunglas
authored andcommitted
If docs are disabled, do not try to add a link header to the docs (#1731)
* Remove add_link_header service if docs are disabled * Add tests on disabling docs
1 parent d21403e commit d808c6b

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public function load(array $configs, ContainerBuilder $container)
129129
$this->registerApiKeysConfiguration($container, $config, $loader);
130130
$this->registerSwaggerConfiguration($container, $config, $loader);
131131
$this->registerJsonApiConfiguration($formats, $loader);
132-
$this->registerJsonLdConfiguration($formats, $loader);
132+
$this->registerJsonLdConfiguration($container, $formats, $loader, $config['enable_docs']);
133133
$this->registerJsonHalConfiguration($formats, $loader);
134134
$this->registerJsonProblemConfiguration($errorFormats, $loader);
135135
$this->registerGraphqlConfiguration($container, $config, $loader);
@@ -366,17 +366,23 @@ private function registerJsonApiConfiguration(array $formats, XmlFileLoader $loa
366366
/**
367367
* Registers the JSON-LD and Hydra configuration.
368368
*
369-
* @param array $formats
370-
* @param XmlFileLoader $loader
369+
* @param ContainerBuilder $container
370+
* @param array $formats
371+
* @param XmlFileLoader $loader
372+
* @param bool $docEnabled
371373
*/
372-
private function registerJsonLdConfiguration(array $formats, XmlFileLoader $loader)
374+
private function registerJsonLdConfiguration(ContainerBuilder $container, array $formats, XmlFileLoader $loader, bool $docEnabled)
373375
{
374376
if (!isset($formats['jsonld'])) {
375377
return;
376378
}
377379

378380
$loader->load('jsonld.xml');
379381
$loader->load('hydra.xml');
382+
383+
if (!$docEnabled) {
384+
$container->removeDefinition('api_platform.hydra.listener.response.add_link_header');
385+
}
380386
}
381387

382388
/**

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,20 @@ public function testNotRegisterHttpCacheWhenEnabledWithNoVarnishServer()
344344
$this->extension->load($config, $containerBuilder);
345345
}
346346

347+
public function testDisabledDocsRemovesAddLinkHeaderService()
348+
{
349+
$containerBuilderProphecy = $this->getBaseContainerBuilderProphecy();
350+
$containerBuilderProphecy->removeDefinition('api_platform.hydra.listener.response.add_link_header')->shouldBeCalled();
351+
$containerBuilderProphecy->setParameter('api_platform.enable_docs', false)->shouldBeCalled();
352+
$containerBuilderProphecy->setParameter('api_platform.enable_docs', true)->shouldNotBeCalled();
353+
$containerBuilder = $containerBuilderProphecy->reveal();
354+
355+
$config = self::DEFAULT_CONFIG;
356+
$config['api_platform']['enable_docs'] = false;
357+
358+
$this->extension->load($config, $containerBuilder);
359+
}
360+
347361
private function getPartialContainerBuilderProphecy($test = false)
348362
{
349363
$containerBuilderProphecy = $this->prophesize(ContainerBuilder::class);

0 commit comments

Comments
 (0)