From 3784115f68180406841d822f5ad954c89320aefa Mon Sep 17 00:00:00 2001 From: Thomas Calvet Date: Wed, 26 Jul 2023 14:13:08 +0200 Subject: [PATCH] [Serializer] Fix denormalizing abstract part headers in MimeMessageNormalizer --- src/Symfony/Component/Mime/Tests/MessageTest.php | 15 +++++++++++++-- src/Symfony/Component/Mime/composer.json | 4 ++-- .../Normalizer/MimeMessageNormalizer.php | 1 + 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Mime/Tests/MessageTest.php b/src/Symfony/Component/Mime/Tests/MessageTest.php index f35590ce9e174..86431903de1bd 100644 --- a/src/Symfony/Component/Mime/Tests/MessageTest.php +++ b/src/Symfony/Component/Mime/Tests/MessageTest.php @@ -168,6 +168,7 @@ public function testSymfonySerialize() ), new DataPart('text data', 'text.txt') ); + $body->getHeaders()->addHeader('foo', 'bar'); $e = new Message((new Headers())->addMailboxListHeader('To', ['you@example.com']), $body); $expected = clone $e; @@ -232,7 +233,17 @@ public function testSymfonySerialize() "class": "Symfony\\\\Component\\\\Mime\\\\Part\\\\DataPart" } ], - "headers": [], + "headers": { + "foo": [ + { + "value": "bar", + "name": "foo", + "lineLength": 76, + "lang": null, + "charset": "utf-8" + } + ] + }, "class": "Symfony\\\\Component\\\\Mime\\\\Part\\\\Multipart\\\\MixedPart" }, "message": null @@ -252,7 +263,7 @@ public function testSymfonySerialize() $this->assertSame($expectedJson, json_encode(json_decode($serialized), \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES)); $n = $serializer->deserialize($serialized, Message::class, 'json'); - $this->assertEquals($expected->getHeaders(), $n->getHeaders()); + $this->assertEquals($expected, $n); $serialized = $serializer->serialize($e, 'json'); $this->assertSame($expectedJson, json_encode(json_decode($serialized), \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES)); diff --git a/src/Symfony/Component/Mime/composer.json b/src/Symfony/Component/Mime/composer.json index 5472deab1a4ba..f1954a4f8f5f3 100644 --- a/src/Symfony/Component/Mime/composer.json +++ b/src/Symfony/Component/Mime/composer.json @@ -28,14 +28,14 @@ "symfony/dependency-injection": "^4.4|^5.0|^6.0", "symfony/property-access": "^4.4|^5.1|^6.0", "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" + "symfony/serializer": "^5.4.26|^6.2.13" }, "conflict": { "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<4.4", - "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" + "symfony/serializer": "<5.4.26|>=6.2,<6.2.13" }, "autoload": { "psr-4": { "Symfony\\Component\\Mime\\": "" }, diff --git a/src/Symfony/Component/Serializer/Normalizer/MimeMessageNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/MimeMessageNormalizer.php index 14122829ee0cd..9dd9605a73ddd 100644 --- a/src/Symfony/Component/Serializer/Normalizer/MimeMessageNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/MimeMessageNormalizer.php @@ -93,6 +93,7 @@ public function denormalize($data, string $type, string $format = null, array $c if (AbstractPart::class === $type) { $type = $data['class']; unset($data['class']); + $data['headers'] = $this->serializer->denormalize($data['headers'], Headers::class, $format, $context); } return $this->normalizer->denormalize($data, $type, $format, $context);