diff --git a/src/OpenApi/Factory/OpenApiFactory.php b/src/OpenApi/Factory/OpenApiFactory.php index 6e878b8f9db..7eb1f175cde 100644 --- a/src/OpenApi/Factory/OpenApiFactory.php +++ b/src/OpenApi/Factory/OpenApiFactory.php @@ -164,7 +164,7 @@ private function collectPaths(ResourceMetadata $resourceMetadata, string $resour if ($operation['openapi_context']['parameters'] ?? false) { foreach ($operation['openapi_context']['parameters'] as $parameter) { - $parameters[] = new Model\Parameter($parameter['name'], $parameter['in'], $parameter['description'] ?? '', $parameter['required'] ?? false, $parameter['deprecated'] ?? false, $parameter['allowEmptyValue'] ?? false, $parameter['schema'] ?? []); + $parameters[] = new Model\Parameter($parameter['name'], $parameter['in'], $parameter['description'] ?? '', $parameter['required'] ?? false, $parameter['deprecated'] ?? false, $parameter['allowEmptyValue'] ?? false, $parameter['schema'] ?? [], $parameter['style'] ?? null, $parameter['explode'] ?? false, $parameter['allowReserved '] ?? false, $parameter['example'] ?? null, isset($parameter['examples']) ? new \ArrayObject($parameter['examples']) : null, isset($parameter['content']) ? new \ArrayObject($parameter['content']) : null); } } diff --git a/src/OpenApi/Model/Parameter.php b/src/OpenApi/Model/Parameter.php index f68f0cbd231..a44ab7ee8d1 100644 --- a/src/OpenApi/Model/Parameter.php +++ b/src/OpenApi/Model/Parameter.php @@ -56,11 +56,13 @@ public function __construct(string $name, string $in, string $description = '', } } + // TODO: string not ?string public function getName(): ?string { return $this->name; } + // TODO: string not ?string public function getIn(): ?string { return $this->in; diff --git a/tests/OpenApi/Factory/OpenApiFactoryTest.php b/tests/OpenApi/Factory/OpenApiFactoryTest.php index 7f9843e5fd5..069008f0866 100644 --- a/tests/OpenApi/Factory/OpenApiFactoryTest.php +++ b/tests/OpenApi/Factory/OpenApiFactoryTest.php @@ -32,6 +32,7 @@ use ApiPlatform\Core\OpenApi\Model; use ApiPlatform\Core\OpenApi\OpenApi; use ApiPlatform\Core\OpenApi\Options; +use ApiPlatform\Core\OpenApi\Serializer\OpenApiNormalizer; use ApiPlatform\Core\Operation\Factory\SubresourceOperationFactory; use ApiPlatform\Core\Operation\Factory\SubresourceOperationFactoryInterface; use ApiPlatform\Core\Operation\UnderscorePathSegmentNameGenerator; @@ -48,7 +49,10 @@ use Symfony\Component\Routing\Route; use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\RouterInterface; +use Symfony\Component\Serializer\Encoder\JsonEncoder; use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter; +use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; +use Symfony\Component\Serializer\Serializer; class OpenApiFactoryTest extends TestCase { @@ -724,5 +728,15 @@ public function testSubresourceDocumentation() null, [new Model\Parameter('id', 'path', 'Question identifier', true, false, false, ['type' => 'string'])] )); + + $encoders = [new JsonEncoder()]; + $normalizers = [new ObjectNormalizer()]; + + $serializer = new Serializer($normalizers, $encoders); + $normalizers[0]->setSerializer($serializer); + + // Call the normalizer to see if everything is smooth + $normalizer = new OpenApiNormalizer($normalizers[0]); + $normalizer->normalize($openApi); } }