From 66cd9727a80283f39107e827eafb0a22da68ab5a Mon Sep 17 00:00:00 2001 From: Maxcastel Date: Tue, 17 Feb 2026 12:08:00 +0100 Subject: [PATCH] test(openapi): add openapi test for normalization with attributes --- tests/Functional/OpenApiTest.php | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/Functional/OpenApiTest.php b/tests/Functional/OpenApiTest.php index e65ad3134b7..7aef5c6d172 100644 --- a/tests/Functional/OpenApiTest.php +++ b/tests/Functional/OpenApiTest.php @@ -14,10 +14,12 @@ namespace ApiPlatform\Tests\Functional; use ApiPlatform\Symfony\Bundle\Test\ApiTestCase; +use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\ChildAttribute; use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Crud; use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\CrudOpenApiApiPlatformTag; use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\DummyWebhook; use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\Issue6151\OverrideOpenApiResponses; +use ApiPlatform\Tests\Fixtures\TestBundle\ApiResource\ParentAttribute; use ApiPlatform\Tests\Fixtures\TestBundle\Entity\AbstractDummy; use ApiPlatform\Tests\Fixtures\TestBundle\Entity\CircularReference; use ApiPlatform\Tests\Fixtures\TestBundle\Entity\CompositeItem; @@ -100,6 +102,8 @@ public static function getResources(): array JsonSchemaResource::class, JsonSchemaResourceRelated::class, WrappedResponseEntity::class, + ParentAttribute::class, + ChildAttribute::class, ]; } @@ -613,4 +617,36 @@ public function testRetrieveTheEntrypointWithUrlFormat(): void $this->assertResponseHeaderSame('content-type', 'application/vnd.openapi+json; charset=utf-8'); $this->assertJson($response->getContent()); } + + public function testOpenApiSchemaWithNormalizationAttributes(): void + { + $response = self::createClient()->request('GET', '/docs', [ + 'headers' => ['Accept' => 'application/vnd.openapi+json'], + ]); + $this->assertResponseIsSuccessful(); + $json = $response->toArray(); + + $this->assertArrayHasKey('ParentAttribute-name_child.label', $json['components']['schemas']); + $parentSchema = $json['components']['schemas']['ParentAttribute-name_child.label']; + + $this->assertArrayHasKey('properties', $parentSchema); + $parentProperties = $parentSchema['properties']; + + $this->assertArrayHasKey('name', $parentProperties); + $this->assertArrayHasKey('child', $parentProperties); + + $this->assertArrayNotHasKey('id', $parentProperties); + $this->assertArrayNotHasKey('descriptionn', $parentProperties); + + $this->assertArrayHasKey('ChildAttribute-label', $json['components']['schemas']); + $childSchema = $json['components']['schemas']['ChildAttribute-label']; + + $this->assertArrayHasKey('properties', $childSchema); + $childProperties = $childSchema['properties']; + + $this->assertArrayHasKey('label', $childProperties); + + $this->assertArrayNotHasKey('hiddenData', $childProperties); + $this->assertArrayNotHasKey('id', $childProperties); + } }