Skip to content

Commit 8a00d6e

Browse files
soyukadunglas
andauthored
Serialize openapi properly fix #3997 (#4019)
* OpenApi: fix #3997 do not use a name converter * simplify api_platform.openapi.normalizer service definition * fix tests * fix tests Co-authored-by: Kévin Dunglas <[email protected]>
1 parent 7042390 commit 8a00d6e

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

src/Bridge/Symfony/Bundle/Resources/config/openapi.xml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,24 @@
66

77
<services>
88
<service id="api_platform.openapi.normalizer" class="ApiPlatform\Core\OpenApi\Serializer\OpenApiNormalizer" public="false">
9-
<argument type="service" id="serializer.normalizer.object" />
9+
<argument type="service">
10+
<service class="Symfony\Component\Serializer\Serializer">
11+
<argument type="collection">
12+
<argument type="service">
13+
<service class="Symfony\Component\Serializer\Normalizer\ObjectNormalizer">
14+
<argument>null</argument>
15+
<argument>null</argument>
16+
<argument type="service" id="api_platform.property_accessor"/>
17+
<argument type="service" id="api_platform.property_info"/>
18+
</service>
19+
</argument>
20+
</argument>
21+
<argument type="collection">
22+
<argument type="service" id="serializer.encoder.json" />
23+
</argument>
24+
</service>
25+
</argument>
26+
1027
<!-- Just after the DocumentationNormalizer see swagger.xml -->
1128
<tag name="serializer.normalizer" priority="-795" />
1229
</service>

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,6 +1362,13 @@ private function getBaseContainerBuilderProphecy(array $doctrineIntegrationsToLo
13621362
$definitions[] = 'api_platform.jsonld.normalizer.object';
13631363
}
13641364

1365+
// Ignore inlined services
1366+
$containerBuilderProphecy->setDefinition(Argument::that(static function (string $arg) {
1367+
return 0 === strpos($arg, '.');
1368+
}), Argument::type(Definition::class))->should(function () {
1369+
return true;
1370+
});
1371+
13651372
foreach ($definitions as $definition) {
13661373
$containerBuilderProphecy->setDefinition($definition, Argument::type(Definition::class))->shouldBeCalled();
13671374
}

tests/OpenApi/Serializer/OpenApiNormalizerTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,5 +185,7 @@ public function testNormalize()
185185

186186
// Make sure things are sorted
187187
$this->assertEquals(array_keys($openApiAsArray['paths']), ['/dummies', '/dummies/{id}', '/zorros', '/zorros/{id}']);
188+
// Test name converter doesn't rename this property
189+
$this->assertArrayHasKey('requestBody', $openApiAsArray['paths']['/dummies']['post']);
188190
}
189191
}

0 commit comments

Comments
 (0)