Skip to content

Commit

Permalink
Merge 90396ea into 51dfcd2
Browse files Browse the repository at this point in the history
  • Loading branch information
soyuka committed Nov 13, 2020
2 parents 51dfcd2 + 90396ea commit cc4d734
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 51 deletions.
4 changes: 0 additions & 4 deletions phpstan.neon.dist
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
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
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
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

0 comments on commit cc4d734

Please sign in to comment.