From 7ab6a763131a2fec4470d9a75b7b0b76927b556f Mon Sep 17 00:00:00 2001 From: jvdhehvg Date: Wed, 8 Jul 2026 10:25:07 +0200 Subject: [PATCH 1/2] fix(route-loader): handle enum path parameters and add regression test --- src/Routing/RouteLoader.php | 2 +- tests/Routing/RouteLoaderTest.php | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Routing/RouteLoader.php b/src/Routing/RouteLoader.php index 0f34eab..915906a 100755 --- a/src/Routing/RouteLoader.php +++ b/src/Routing/RouteLoader.php @@ -242,7 +242,7 @@ private function getRouteRequirementsForPathParameters(stdClass $operation, stdC '|', array_map(function ($value) { return preg_quote($value, '/'); - }, $parameter->enum) + }, $parameterSchema->enum) ) ); diff --git a/tests/Routing/RouteLoaderTest.php b/tests/Routing/RouteLoaderTest.php index dca21b6..6776393 100755 --- a/tests/Routing/RouteLoaderTest.php +++ b/tests/Routing/RouteLoaderTest.php @@ -200,6 +200,15 @@ public function testCanLoadRouteWithAdditionalRouteAttributesFromOpenapiBundleSp static::assertSame('bar', $route->getDefault('foo')); } + public function testCanLoadRouteWithEnumPathParameterRequirement(): void + { + $routes = $this->routeLoader->load('route-loader-enum-path-parameter.yaml', 'openapi'); + $route = $routes->get('pets_status_get'); + + static::assertInstanceOf(Route::class, $route); + static::assertSame(['status' => '(available|pending|sold)'], $route->getRequirements()); + } + private function createFileLocator(): FileLocator { return new FileLocator([ From 478bfbe08496c1d9fdf972a1f88f91f6672d886d Mon Sep 17 00:00:00 2001 From: jvdhehvg Date: Wed, 8 Jul 2026 11:25:07 +0200 Subject: [PATCH 2/2] Added missing route-loader-enum-path-parameter.yaml --- .../route-loader-enum-path-parameter.yaml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/Resources/specifications/route-loader-enum-path-parameter.yaml diff --git a/tests/Resources/specifications/route-loader-enum-path-parameter.yaml b/tests/Resources/specifications/route-loader-enum-path-parameter.yaml new file mode 100644 index 0000000..bfce8bc --- /dev/null +++ b/tests/Resources/specifications/route-loader-enum-path-parameter.yaml @@ -0,0 +1,22 @@ +openapi: 3.0.0 + +info: + title: OpenAPI bundle enum path parameter test specification + version: 0.1.0 + +paths: + /pets/{status}: + get: + responses: + '200': + description: Returns a pet status. + parameters: + - name: status + in: path + required: true + schema: + type: string + enum: + - available + - pending + - sold