From 6cf20b0d9f69f556016f0d9676c407b9626d425e Mon Sep 17 00:00:00 2001 From: Stephane Roussel Date: Wed, 5 Aug 2026 10:15:39 +0200 Subject: [PATCH] [UAT-replay-security-hardening] fix(replay): register replay controller as public service Assisted-by: Codex:gpt-5 --- Resources/config/services.yml | 3 ++ Tests/Unit/ReplayControllerWiringTest.php | 46 +++++++++++++++++++++++ composer.json | 3 +- 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 Tests/Unit/ReplayControllerWiringTest.php diff --git a/Resources/config/services.yml b/Resources/config/services.yml index d1c14f3..3f44e51 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -8,6 +8,9 @@ services: evaisse\SimpleHttpBundle\Controller\ReplayController: arguments: $debug: '%kernel.debug%' + public: true + tags: + - { name: controller.service_arguments } evaisse\SimpleHttpBundle\Service\ReplayRequestResolver: ~ evaisse\SimpleHttpBundle\Service\ReplayRequestSignature: arguments: diff --git a/Tests/Unit/ReplayControllerWiringTest.php b/Tests/Unit/ReplayControllerWiringTest.php new file mode 100644 index 0000000..57a0f57 --- /dev/null +++ b/Tests/Unit/ReplayControllerWiringTest.php @@ -0,0 +1,46 @@ +setParameter('kernel.debug', true); + $container->setParameter('kernel.secret', 'test-secret'); + $container->setParameter('kernel.root_dir', sys_get_temp_dir()); + $container->setParameter('kernel.environment', 'test'); + + $container->register('event_dispatcher', EventDispatcher::class); + $container->setAlias(EventDispatcherInterface::class, 'event_dispatcher')->setPublic(true); + $container->register('debug.stopwatch', Stopwatch::class); + $container->register('twig.loader', \stdClass::class); + + $extension = new SimpleHttpExtension(); + $extension->load([], $container); + + $definition = $container->getDefinition(ReplayController::class); + + $this->assertTrue( + $definition->isPublic(), + 'ReplayController must stay public so Symfony can fetch it from the container.' + ); + $this->assertNotEmpty( + $definition->getTag('controller.service_arguments'), + 'ReplayController must be tagged as controller.service_arguments.' + ); + + $container->compile(); + + $this->assertInstanceOf(ReplayController::class, $container->get(ReplayController::class)); + } +} diff --git a/composer.json b/composer.json index 2e092fc..45e681f 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "homepage": "https://github.com/evaisse/SimpleHttpBundle", "require": { "php": "^8.1", - "react/promise": "^2.2 || ^3.0", + "react/promise": "^2.11", "twig/twig": "^3.27", "symfony/http-foundation": "^5.4 || ^6.0 || ^7.0", "symfony/browser-kit": "^5.4 || ^6.0 || ^7.0", @@ -28,6 +28,7 @@ "symfony/security-csrf": "^5.4 || ^6.0 || ^7.0", "symfony/security-http": "^5.4 || ^6.0 || ^7.0", "symfony/twig-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "symfony/mime": "^5.4 || ^6.0 || ^7.0", "ext-dom": "*", "ext-json": "*",