diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php index 53905a053d1a5..1574c5b230415 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php @@ -46,7 +46,7 @@ public function testDecodingFailsWithBadFormat() $serializer = new PhpSerializer(); $serializer->decode([ - 'body' => '{"message": "bar"}', + 'body' => '{"data": "not-serialized"}', ]); } @@ -58,7 +58,7 @@ public function testDecodingFailsWithBadClass() $serializer = new PhpSerializer(); $serializer->decode([ - 'body' => base64_encode('O:13:"ReceivedSt0mp":0:{}'), + 'body' => json_encode(['data' => 'O:13:"ReceivedSt0mp":0:{}']), ]); } } diff --git a/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php b/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php index 6a27529c5592d..145927af8af9c 100644 --- a/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php +++ b/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php @@ -30,13 +30,16 @@ public function decode(array $encodedEnvelope): Envelope throw new MessageDecodingFailedException('Encoded envelope should have at least a "body".'); } - $serializeEnvelope = base64_decode($encodedEnvelope['body']); + $decodedData = \json_decode($encodedEnvelope['body'], true); + if (false === $decodedData) { + throw new MessageDecodingFailedException('The "body" key could not be JSON decoded.'); + } - if (false === $serializeEnvelope) { - throw new MessageDecodingFailedException('The "body" key could not be base64 decoded.'); + if (!isset($decodedData['data'])) { + throw new MessageDecodingFailedException('Missing the "data" key on the JSON decoded data..'); } - return $this->safelyUnserialize($serializeEnvelope); + return $this->safelyUnserialize($decodedData['data']); } /** @@ -45,7 +48,7 @@ public function decode(array $encodedEnvelope): Envelope public function encode(Envelope $envelope): array { return [ - 'body' => base64_encode(serialize($envelope)), + 'body' => json_encode(['data' => serialize($envelope)]), ]; }