/** * @param RemoteMessage $aMessage * @return WorkflowMessage * @throws \RuntimeException */ public static function fromServiceBusMessage(RemoteMessage $aMessage) { $payload = $aMessage->payload(); Assertion::keyExists($payload, 'json'); Assertion::keyExists($payload, 'origin'); Assertion::keyExists($payload, 'target'); $origin = $payload['origin']; $target = $payload['target']; $taskListPosition = isset($payload['processTaskListPosition']) ? TaskListPosition::fromString($payload['processTaskListPosition']) : null; $messagePayload = Payload::fromJsonDecodedData(json_decode($payload['json'], true)); $metadata = isset($payload['metadata']) ? $payload['metadata'] : []; return new static($messagePayload, $aMessage->name(), $origin, $target, $metadata, $taskListPosition, $aMessage->header()->version(), $aMessage->header()->createdAt(), $aMessage->header()->uuid()); }
/** * @test */ public function it_encodes_and_decodes_payload_with_prototype_to_and_from_json() { $payload = Payload::fromPrototype(UserDictionary::prototype()); $jsonString = json_encode($payload); $jsonDecodedData = json_decode($jsonString, true); $decodedPayload = Payload::fromJsonDecodedData($jsonDecodedData); $this->assertEquals('Prooph\\ProcessingTest\\Mock\\UserDictionary', $decodedPayload->getTypeClass()); }