Skip to content

Commit a6307b2

Browse files
authored
Merge pull request #1132 from meyerbaptiste/fix_normalizer_ignored_attributes
Fix ignoring attributes for the abstract item normalizer
2 parents 461ecd9 + 3e45f2e commit a6307b2

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/Serializer/AbstractItemNormalizer.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,9 @@ protected function getAllowedAttributes($classOrObject, array $context, $attribu
132132
$propertyMetadata = $this->propertyMetadataFactory->create($context['resource_class'], $propertyName, $options);
133133

134134
if (
135-
(isset($context['api_normalize']) && $propertyMetadata->isReadable()) ||
136-
(isset($context['api_denormalize']) && $propertyMetadata->isWritable())
135+
$this->isAllowedAttribute($classOrObject, $propertyName, null, $context) &&
136+
((isset($context['api_normalize']) && $propertyMetadata->isReadable()) ||
137+
(isset($context['api_denormalize']) && $propertyMetadata->isWritable()))
137138
) {
138139
$allowedAttributes[] = $propertyName;
139140
}

tests/Serializer/AbstractItemNormalizerTest.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,22 @@ public function testNormalize()
7676

7777
$dummy = new Dummy();
7878
$dummy->setName('foo');
79+
$dummy->setAlias('ignored');
7980
$dummy->setRelatedDummy($relatedDummy);
8081
$dummy->relatedDummies->add(new RelatedDummy());
8182

8283
$propertyNameCollectionFactoryProphecy = $this->prophesize(PropertyNameCollectionFactoryInterface::class);
8384
$propertyNameCollectionFactoryProphecy->create(Dummy::class, [])->willReturn(
84-
new PropertyNameCollection(['name', 'relatedDummy', 'relatedDummies'])
85+
new PropertyNameCollection(['name', 'alias', 'relatedDummy', 'relatedDummies'])
8586
)->shouldBeCalled();
8687

8788
$propertyMetadataFactoryProphecy = $this->prophesize(PropertyMetadataFactoryInterface::class);
8889
$propertyMetadataFactoryProphecy->create(Dummy::class, 'name', [])->willReturn(
8990
new PropertyMetadata(new Type(Type::BUILTIN_TYPE_STRING), '', true)
9091
)->shouldBeCalled();
92+
$propertyMetadataFactoryProphecy->create(Dummy::class, 'alias', [])->willReturn(
93+
new PropertyMetadata(new Type(Type::BUILTIN_TYPE_STRING), '', true)
94+
)->shouldBeCalled();
9195
$propertyMetadataFactoryProphecy->create(Dummy::class, 'relatedDummy', [])->willReturn(
9296
new PropertyMetadata(new Type(Type::BUILTIN_TYPE_OBJECT, false, RelatedDummy::class), '', true, false, false)
9397
)->shouldBeCalled();
@@ -134,6 +138,7 @@ public function testNormalize()
134138
$propertyAccesorProphecy->reveal(),
135139
]);
136140
$normalizer->setSerializer($serializerProphecy->reveal());
141+
$normalizer->setIgnoredAttributes(['alias']);
137142

138143
$this->assertEquals([
139144
'name' => 'foo',

0 commit comments

Comments
 (0)