Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions phpstan.neon.dist
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,6 @@ parameters:
-
message: '#Service "test" is not registered in the container\.#'
path: tests/GraphQl/Type/TypesContainerTest.php
# https://github.com/phpstan/phpstan/issues/2999
-
message: '#ArrayObject<string, bool\|string> does not accept array<string, mixed>\.#'
path: src/JsonSchema/SchemaFactory.php

# Expected, due to optional interfaces
- '#Method ApiPlatform\\Core\\Bridge\\Doctrine\\Orm\\Extension\\QueryCollectionExtensionInterface::applyToCollection\(\) invoked with 5 parameters, 3-4 required\.#'
Expand Down
2 changes: 1 addition & 1 deletion src/JsonSchema/SchemaFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public function buildSchema(string $className, string $format = 'json', string $
return $schema;
}

$definition = new \ArrayObject(['type' => 'object', 'additionalProperties' => false]);
$definition = new \ArrayObject(['type' => 'object', 'additionalProperties' => $serializerContext[AbstractNormalizer::ALLOW_EXTRA_ATTRIBUTES] ?? true]);
$definitions[$definitionName] = $definition;
if (null !== $resourceMetadata && null !== $description = $resourceMetadata->getDescription()) {
$definition['description'] = $description;
Expand Down
4 changes: 3 additions & 1 deletion tests/JsonSchema/SchemaFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Symfony\Component\PropertyInfo\Type;
use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;

class SchemaFactoryTest extends TestCase
{
Expand Down Expand Up @@ -73,7 +74,7 @@ public function testBuildSchemaForNonResourceClass(): void
$this->assertArrayHasKey($rootDefinitionKey, $definitions);
$this->assertArrayHasKey('type', $definitions[$rootDefinitionKey]);
$this->assertSame('object', $definitions[$rootDefinitionKey]['type']);
$this->assertFalse($definitions[$rootDefinitionKey]['additionalProperties']);
$this->assertTrue($definitions[$rootDefinitionKey]['additionalProperties']);
$this->assertArrayHasKey('properties', $definitions[$rootDefinitionKey]);
$this->assertArrayHasKey('foo', $definitions[$rootDefinitionKey]['properties']);
$this->assertArrayHasKey('type', $definitions[$rootDefinitionKey]['properties']['foo']);
Expand All @@ -98,6 +99,7 @@ public function testBuildSchemaForOperationWithOverriddenSerializerGroups(): voi
'put' => [
'normalization_context' => [
'groups' => 'overridden_operation_dummy_put',
AbstractNormalizer::ALLOW_EXTRA_ATTRIBUTES => false,
],
'validation_groups' => ['validation_groups_dummy_put'],
],
Expand Down
48 changes: 24 additions & 24 deletions tests/Swagger/Serializer/DocumentationNormalizerV2Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ private function doTestNormalize(OperationMethodResolverInterface $operationMeth
'custom' => ['method' => 'GET', 'path' => '/foo', 'status' => '202'] + self::OPERATION_FORMATS,
'custom2' => ['method' => 'POST', 'path' => '/foo'] + self::OPERATION_FORMATS,
],
['pagination_client_items_per_page' => true]
['pagination_client_items_per_page' => true, 'normalization_context' => [AbstractNormalizer::ALLOW_EXTRA_ATTRIBUTES => false]]
);
$resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class);
$resourceMetadataFactoryProphecy->create(Dummy::class)->willReturn($dummyMetadata);
Expand Down Expand Up @@ -462,7 +462,7 @@ private function doTestNormalizeWithNameConverter(bool $legacy = false): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'properties' => [
'name' => new \ArrayObject([
Expand Down Expand Up @@ -575,7 +575,7 @@ public function testNormalizeWithApiKeysEnabled(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'properties' => [
'name' => new \ArrayObject([
Expand Down Expand Up @@ -768,7 +768,7 @@ public function testNormalizeWithOnlyNormalizationGroups(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand All @@ -780,7 +780,7 @@ public function testNormalizeWithOnlyNormalizationGroups(): void
]),
$ref => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -968,7 +968,7 @@ public function testNormalizeNotAddExtraBodyParameters(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand All @@ -980,7 +980,7 @@ public function testNormalizeNotAddExtraBodyParameters(): void
]),
$ref => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -1069,7 +1069,7 @@ public function testNormalizeWithSwaggerDefinitionName(): void
'definitions' => new \ArrayObject([
'Dummy-Read' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -1243,7 +1243,7 @@ public function testNormalizeWithOnlyDenormalizationGroups(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand All @@ -1255,7 +1255,7 @@ public function testNormalizeWithOnlyDenormalizationGroups(): void
]),
'Dummy-dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -1431,7 +1431,7 @@ public function testNormalizeWithNormalizationAndDenormalizationGroups(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand All @@ -1443,7 +1443,7 @@ public function testNormalizeWithNormalizationAndDenormalizationGroups(): void
]),
'Dummy-dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -1620,7 +1620,7 @@ public function testNormalizeSkipsNotReadableAndNotWritableProperties(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -2014,7 +2014,7 @@ public function testNormalizeWithNestedNormalizationGroups(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand All @@ -2026,7 +2026,7 @@ public function testNormalizeWithNestedNormalizationGroups(): void
]),
$ref => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand All @@ -2042,7 +2042,7 @@ public function testNormalizeWithNestedNormalizationGroups(): void
]),
$relatedDummyRef => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a related dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/RelatedDummy'],
'properties' => [
Expand Down Expand Up @@ -2152,7 +2152,7 @@ private function doTestNormalizeWithFilters($filterLocator): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'properties' => [
'name' => new \ArrayObject([
Expand Down Expand Up @@ -2312,7 +2312,7 @@ private function doTestNormalizeWithSubResource(OperationAwareFormatsProviderInt
'definitions' => new \ArrayObject([
'Question' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a question.',
'externalDocs' => ['url' => 'http://schema.example.com/Question'],
'properties' => [
Expand All @@ -2325,7 +2325,7 @@ private function doTestNormalizeWithSubResource(OperationAwareFormatsProviderInt
]),
'Answer' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is an answer.',
'externalDocs' => ['url' => 'http://schema.example.com/Answer'],
'properties' => [
Expand Down Expand Up @@ -2409,7 +2409,7 @@ public function testNormalizeWithPropertySwaggerContext(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -2510,7 +2510,7 @@ public function testNormalizeWithPaginationClientEnabled(): void
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -2706,7 +2706,7 @@ private function doTestNormalizeWithCustomFormatsDefinedAtOperationLevel(Operati
'definitions' => new \ArrayObject([
'Dummy' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => ['url' => 'http://schema.example.com/Dummy'],
'properties' => [
Expand Down Expand Up @@ -2915,7 +2915,7 @@ private function doTestNormalizeWithInputAndOutputClass(): void
'definitions' => new \ArrayObject([
'Dummy:300dcd476cef011532fb0ca7683395d7' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => [
'url' => 'http://schema.example.com/Dummy',
Expand All @@ -2934,7 +2934,7 @@ private function doTestNormalizeWithInputAndOutputClass(): void
]),
'Dummy:b4f76c1a44965bd401aa23bb37618acc' => new \ArrayObject([
'type' => 'object',
'additionalProperties' => false,
'additionalProperties' => true,
'description' => 'This is a dummy.',
'externalDocs' => [
'url' => 'http://schema.example.com/Dummy',
Expand Down
Loading