From 93c580bd23419f7e6e0dfcc37b08694b345a4c5b Mon Sep 17 00:00:00 2001 From: camohob Date: Wed, 7 Apr 2021 17:05:26 +0300 Subject: [PATCH 1/4] FIX: ApiPlatform Extension extra configuration - merging arrays --- .../DependencyInjection/ApiPlatformExtension.php | 2 +- .../ApiPlatformExtensionTest.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php index 3359c0a00fb..f5b868607e2 100644 --- a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php +++ b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php @@ -398,7 +398,7 @@ private function registerSwaggerConfiguration(ContainerBuilder $container, array $container->setParameter('api_platform.enable_swagger_ui', $config['enable_swagger_ui']); $container->setParameter('api_platform.enable_re_doc', $config['enable_re_doc']); $container->setParameter('api_platform.swagger.api_keys', $config['swagger']['api_keys']); - $container->setParameter('api_platform.swagger_ui.extra_configuration', $config['openapi']['swagger_ui_extra_configuration'] ?? $config['swagger']['swagger_ui_extra_configuration']); + $container->setParameter('api_platform.swagger_ui.extra_configuration', array_merge($config['openapi']['swagger_ui_extra_configuration'], $config['swagger']['swagger_ui_extra_configuration'])); if (true === $config['openapi']['backward_compatibility_layer']) { $container->getDefinition('api_platform.swagger.normalizer.documentation')->addArgument($container->getDefinition('api_platform.openapi.normalizer')); diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index 4414d7b3b8e..c5ab5e2fced 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -859,6 +859,19 @@ static function (string $path): string { $this->extension->load($config, $containerBuilderProphecy->reveal()); } + public function testExtraConfigurationMegrging() + { + $containerBuilderProphecy = $this->getBaseContainerBuilderProphecy(); + $containerBuilderProphecy->setParameter('api_platform.swagger_ui.extra_configuration', [])->shouldNotBeCalled(); + $containerBuilderProphecy->setParameter('api_platform.swagger_ui.extra_configuration', ['someParameter' => 'someValue'])->shouldBeCalled(); + + $config = self::DEFAULT_CONFIG; + $config['api_platform']['openapi']['swagger_ui_extra_configuration'] = []; + $config['api_platform']['swagger']['swagger_ui_extra_configuration'] = ['someParameter' => 'someValue']; + + $this->extension->load($config, $containerBuilderProphecy->reveal()); + } + private function getPartialContainerBuilderProphecy($configuration = null) { $parameterBag = new EnvPlaceholderParameterBag(); From c70979131ba889424514800c3921a91afc373b35 Mon Sep 17 00:00:00 2001 From: camohob Date: Thu, 8 Apr 2021 10:46:19 +0300 Subject: [PATCH 2/4] array_merge replaced by ?: --- .../DependencyInjection/ApiPlatformExtension.php | 5 ++++- .../DependencyInjection/ApiPlatformExtensionTest.php | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php index f5b868607e2..a66af384be7 100644 --- a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php +++ b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php @@ -398,7 +398,10 @@ private function registerSwaggerConfiguration(ContainerBuilder $container, array $container->setParameter('api_platform.enable_swagger_ui', $config['enable_swagger_ui']); $container->setParameter('api_platform.enable_re_doc', $config['enable_re_doc']); $container->setParameter('api_platform.swagger.api_keys', $config['swagger']['api_keys']); - $container->setParameter('api_platform.swagger_ui.extra_configuration', array_merge($config['openapi']['swagger_ui_extra_configuration'], $config['swagger']['swagger_ui_extra_configuration'])); + if ($config['openapi']['swagger_ui_extra_configuration'] && $config['swagger']['swagger_ui_extra_configuration']) { + throw new RuntimeException('You can not set "swagger_ui_extra_configuration" twice - in "openapi" and "swagger" section.'); + } + $container->setParameter('api_platform.swagger_ui.extra_configuration', $config['openapi']['swagger_ui_extra_configuration'] ?: $config['swagger']['swagger_ui_extra_configuration']); if (true === $config['openapi']['backward_compatibility_layer']) { $container->getDefinition('api_platform.swagger.normalizer.documentation')->addArgument($container->getDefinition('api_platform.openapi.normalizer')); diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index c5ab5e2fced..3fadadd72d7 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -864,12 +864,20 @@ public function testExtraConfigurationMegrging() $containerBuilderProphecy = $this->getBaseContainerBuilderProphecy(); $containerBuilderProphecy->setParameter('api_platform.swagger_ui.extra_configuration', [])->shouldNotBeCalled(); $containerBuilderProphecy->setParameter('api_platform.swagger_ui.extra_configuration', ['someParameter' => 'someValue'])->shouldBeCalled(); + $containerBuilder = $containerBuilderProphecy->reveal(); $config = self::DEFAULT_CONFIG; $config['api_platform']['openapi']['swagger_ui_extra_configuration'] = []; $config['api_platform']['swagger']['swagger_ui_extra_configuration'] = ['someParameter' => 'someValue']; - $this->extension->load($config, $containerBuilderProphecy->reveal()); + $this->extension->load($config, $containerBuilder); + + $config['api_platform']['openapi']['swagger_ui_extra_configuration'] = ['someParameter' => 'someValue']; + + $this->expectException(RuntimeException::class); + $this->expectExceptionMessage('You can not set "swagger_ui_extra_configuration" twice - in "openapi" and "swagger" section.'); + + $this->extension->load($config, $containerBuilder); } private function getPartialContainerBuilderProphecy($configuration = null) From ee5471e76e53ba329d90d7acefbf6ec1acfbd5e6 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 8 Apr 2021 17:59:06 +0300 Subject: [PATCH 3/4] Fix test method typo Co-authored-by: Alan Poulain --- .../Bundle/DependencyInjection/ApiPlatformExtensionTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index 3fadadd72d7..8384d491a29 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -859,7 +859,7 @@ static function (string $path): string { $this->extension->load($config, $containerBuilderProphecy->reveal()); } - public function testExtraConfigurationMegrging() + public function testExtraConfigurationMerging() { $containerBuilderProphecy = $this->getBaseContainerBuilderProphecy(); $containerBuilderProphecy->setParameter('api_platform.swagger_ui.extra_configuration', [])->shouldNotBeCalled(); From f78e9404fd1a97706b58bb5df39d85d58ea1d9a7 Mon Sep 17 00:00:00 2001 From: Alan Poulain Date: Mon, 12 Apr 2021 09:59:30 +0200 Subject: [PATCH 4/4] test: rename test --- .../Bundle/DependencyInjection/ApiPlatformExtensionTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index 8384d491a29..ab1ce1ef375 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -859,7 +859,7 @@ static function (string $path): string { $this->extension->load($config, $containerBuilderProphecy->reveal()); } - public function testExtraConfigurationMerging() + public function testSwaggerUiExtraConfigurationMerging() { $containerBuilderProphecy = $this->getBaseContainerBuilderProphecy(); $containerBuilderProphecy->setParameter('api_platform.swagger_ui.extra_configuration', [])->shouldNotBeCalled();