From 66f6e49ccb5f8519a8fb6d8fc57944bd30fa78b2 Mon Sep 17 00:00:00 2001 From: Kristof Hejj Date: Mon, 29 Jan 2024 16:55:32 +0100 Subject: [PATCH 1/3] [Mime] Make RawMessage::message nullable in the constructor --- src/Symfony/Component/Mime/RawMessage.php | 2 +- src/Symfony/Component/Mime/Tests/EmailTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Mime/RawMessage.php b/src/Symfony/Component/Mime/RawMessage.php index ee3e2ab86f2cb..66144e83dd10d 100644 --- a/src/Symfony/Component/Mime/RawMessage.php +++ b/src/Symfony/Component/Mime/RawMessage.php @@ -21,7 +21,7 @@ class RawMessage private iterable|string|null $message = null; private bool $isGeneratorClosed; - public function __construct(iterable|string $message) + public function __construct(iterable|string|nullable $message) { $this->message = $message; } diff --git a/src/Symfony/Component/Mime/Tests/EmailTest.php b/src/Symfony/Component/Mime/Tests/EmailTest.php index 2e7d61ccf7eea..152e1e4cce1b7 100644 --- a/src/Symfony/Component/Mime/Tests/EmailTest.php +++ b/src/Symfony/Component/Mime/Tests/EmailTest.php @@ -23,7 +23,7 @@ use Symfony\Component\Mime\Part\Multipart\RelatedPart; use Symfony\Component\Mime\Part\TextPart; use Symfony\Component\Mime\Test\Constraint\EmailHeaderSame; -use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; +use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; use Symfony\Component\Serializer\Encoder\JsonEncoder; use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer; use Symfony\Component\Serializer\Normalizer\MimeMessageNormalizer; @@ -569,7 +569,7 @@ public function testSymfonySerialize() } EOF; - $extractor = new PhpDocExtractor(); + $extractor = new ReflectionExtractor(); $propertyNormalizer = new PropertyNormalizer(null, null, $extractor); $serializer = new Serializer([ new ArrayDenormalizer(), From 7da72efa602e29006ebc1096b7c39d6e1ee84830 Mon Sep 17 00:00:00 2001 From: Kristof Hejj Date: Mon, 29 Jan 2024 16:57:54 +0100 Subject: [PATCH 2/3] fix autocomplete --- src/Symfony/Component/Mime/RawMessage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Mime/RawMessage.php b/src/Symfony/Component/Mime/RawMessage.php index 66144e83dd10d..bf31239d240eb 100644 --- a/src/Symfony/Component/Mime/RawMessage.php +++ b/src/Symfony/Component/Mime/RawMessage.php @@ -21,7 +21,7 @@ class RawMessage private iterable|string|null $message = null; private bool $isGeneratorClosed; - public function __construct(iterable|string|nullable $message) + public function __construct(iterable|string|null $message) { $this->message = $message; } From 4a0e6495b9da33b348e8d4e0808fc31dd1a73245 Mon Sep 17 00:00:00 2001 From: Kristof Hejj Date: Mon, 29 Jan 2024 17:13:06 +0100 Subject: [PATCH 3/3] Add a dedicated test --- .../Component/Mime/Tests/EmailTest.php | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Mime/Tests/EmailTest.php b/src/Symfony/Component/Mime/Tests/EmailTest.php index 152e1e4cce1b7..4695f5734e50b 100644 --- a/src/Symfony/Component/Mime/Tests/EmailTest.php +++ b/src/Symfony/Component/Mime/Tests/EmailTest.php @@ -23,6 +23,7 @@ use Symfony\Component\Mime\Part\Multipart\RelatedPart; use Symfony\Component\Mime\Part\TextPart; use Symfony\Component\Mime\Test\Constraint\EmailHeaderSame; +use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor; use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; use Symfony\Component\Serializer\Encoder\JsonEncoder; use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer; @@ -569,7 +570,7 @@ public function testSymfonySerialize() } EOF; - $extractor = new ReflectionExtractor(); + $extractor = new PhpDocExtractor(); $propertyNormalizer = new PropertyNormalizer(null, null, $extractor); $serializer = new Serializer([ new ArrayDenormalizer(), @@ -591,6 +592,40 @@ public function testSymfonySerialize() $this->assertEquals($expected->getBody(), $n->getBody()); } + public function testSymfonySerialize2() + { + $e = new Email(); + $expected = clone $e; + + $expectedJson = <<serialize($e, 'json', [ObjectNormalizer::IGNORED_ATTRIBUTES => ['cachedBody']]); + $this->assertSame($expectedJson, json_encode(json_decode($serialized), \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES)); + + $n = $serializer->deserialize($serialized, Email::class, 'json'); + $this->assertEquals($expected, $n); + } + public function testMissingHeaderDoesNotThrowError() { $this->expectException(ExpectationFailedException::class);