From 3f0f1b69c54a48462134ac2f2d6f604c9e4f6927 Mon Sep 17 00:00:00 2001 From: Maxcastel Date: Fri, 16 Oct 2026 14:25:23 +0200 Subject: [PATCH] fix(metadata): read allowReserved of OpenAPI parameters in YAML --- src/Metadata/Extractor/YamlResourceExtractor.php | 4 ++-- src/Metadata/Tests/Extractor/YamlExtractorTest.php | 9 +++++++++ .../Extractor/yaml/openapi-allow-reserved.yaml | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 src/Metadata/Tests/Extractor/yaml/openapi-allow-reserved.yaml diff --git a/src/Metadata/Extractor/YamlResourceExtractor.php b/src/Metadata/Extractor/YamlResourceExtractor.php index f73d3a6290..48c9a403ad 100644 --- a/src/Metadata/Extractor/YamlResourceExtractor.php +++ b/src/Metadata/Extractor/YamlResourceExtractor.php @@ -278,7 +278,7 @@ private function buildOpenapi(array $resource): bool|OpenApiOperation|null schema: $parameter['schema'] ?? [], style: $parameter['style'] ?? null, explode: $parameter['explode'] ?? false, - allowReserved: $parameter['allowReserved '] ?? false, + allowReserved: $parameter['allowReserved'] ?? false, example: $parameter['example'] ?? null, examples: isset($parameter['examples']) ? new \ArrayObject($parameter['examples']) : null, content: isset($parameter['content']) ? new \ArrayObject($parameter['content']) : null @@ -520,7 +520,7 @@ private function buildParameters(array $resource): ?array schema: $parameter['openapi']['schema'] ?? $parameter['schema'] ?? [], style: $parameter['openapi']['style'] ?? null, explode: $parameter['openapi']['explode'] ?? false, - allowReserved: $parameter['openapi']['allowReserved '] ?? false, + allowReserved: $parameter['openapi']['allowReserved'] ?? false, example: $parameter['openapi']['example'] ?? null, examples: isset($parameter['openapi']['examples']) ? new \ArrayObject($parameter['openapi']['examples']) : null, content: isset($parameter['openapi']['content']) ? new \ArrayObject($parameter['openapi']['content']) : null diff --git a/src/Metadata/Tests/Extractor/YamlExtractorTest.php b/src/Metadata/Tests/Extractor/YamlExtractorTest.php index 62d820e1c8..2a934afe26 100644 --- a/src/Metadata/Tests/Extractor/YamlExtractorTest.php +++ b/src/Metadata/Tests/Extractor/YamlExtractorTest.php @@ -539,6 +539,15 @@ public function testOpenApiParameters(): void $this->assertEquals('john-doe', $operation->getParameters()[0]->getExample()); } + public function testOpenApiParametersAllowReserved(): void + { + $resources = (new YamlResourceExtractor([__DIR__.'/yaml/openapi-allow-reserved.yaml']))->getResources(); + $operation = $resources[Program::class][0]['operations'][0]; + + $this->assertTrue($operation['openapi']->getParameters()[0]->getAllowReserved()); + $this->assertTrue($operation['parameters']['q']->getOpenApi()->getAllowReserved()); + } + public function testOpenApiParameterWithoutNameThrowsClearException(): void { $this->expectException(InvalidArgumentException::class); diff --git a/src/Metadata/Tests/Extractor/yaml/openapi-allow-reserved.yaml b/src/Metadata/Tests/Extractor/yaml/openapi-allow-reserved.yaml new file mode 100644 index 0000000000..9d9fe3cfa8 --- /dev/null +++ b/src/Metadata/Tests/Extractor/yaml/openapi-allow-reserved.yaml @@ -0,0 +1,14 @@ +resources: + ApiPlatform\Metadata\Tests\Fixtures\ApiResource\Program: + - operations: + ApiPlatform\Metadata\GetCollection: + openapi: + parameters: + - name: path + in: query + allowReserved: true + parameters: + q: + openapi: + name: q + allowReserved: true