public void When_deserializing_versioned_message_use_first_available_message_type() { var typeNameSerializer = new TypeNameSerializer(); var serializer = new JsonSerializer(typeNameSerializer); const string correlationId = "CorrelationId"; var serializationStrategy = new VersionedMessageSerializationStrategy(typeNameSerializer, serializer, new StaticCorrelationIdGenerationStrategy(correlationId)); var messageBody = new MyMessageV2 { Text = "Hello world!", Number = 5 }; var message = new Message <MyMessageV2>(messageBody); var serializedMessage = serializationStrategy.SerializeMessage(message); // Mess with the properties to mimic a message serialised as MyMessageV3 var messageType = serializedMessage.Properties.Type; serializedMessage.Properties.Type = messageType.Replace("MyMessageV2", "SomeCompletelyRandomType"); var alternativeMessageHeader = (string)serializedMessage.Properties.Headers[AlternativeMessageTypesHeaderKey]; alternativeMessageHeader = string.Concat(messageType, ";", alternativeMessageHeader); serializedMessage.Properties.Headers[AlternativeMessageTypesHeaderKey] = Encoding.UTF8.GetBytes(alternativeMessageHeader); var deserializedMessage = serializationStrategy.DeserializeMessage(serializedMessage.Properties, serializedMessage.Body); Assert.That(deserializedMessage.Message.Body.GetType(), Is.EqualTo(typeof(MyMessageV2))); Assert.That(deserializedMessage.Message.Body.Text, Is.EqualTo(message.Body.Text)); Assert.That(deserializedMessage.Message.Body.Number, Is.EqualTo(message.Body.Number)); }
public void When_using_the_versioned_serialization_strategy_versioned_messages_are_correctly_round_tripped() { var typeNameSerializer = new TypeNameSerializer(); var serializer = new JsonSerializer(typeNameSerializer); const string correlationId = "CorrelationId"; var serializationStrategy = new VersionedMessageSerializationStrategy(typeNameSerializer, serializer, new StaticCorrelationIdGenerationStrategy(correlationId)); var messageBody = new MyMessageV2 { Text = "Hello world!", Number = 5 }; var message = new Message <MyMessageV2>(messageBody); var serializedMessage = serializationStrategy.SerializeMessage(message); // RMQ converts the Header values into a byte[] so mimic the translation here var alternativeMessageHeader = (string)serializedMessage.Properties.Headers[AlternativeMessageTypesHeaderKey]; serializedMessage.Properties.Headers[AlternativeMessageTypesHeaderKey] = Encoding.UTF8.GetBytes(alternativeMessageHeader); var deserializedMessage = serializationStrategy.DeserializeMessage(serializedMessage.Properties, serializedMessage.Body); Assert.That(deserializedMessage.Message.Body.GetType(), Is.EqualTo(message.Body.GetType())); Assert.That(deserializedMessage.Message.Body.Text, Is.EqualTo(message.Body.Text)); Assert.That(deserializedMessage.Message.Body.Number, Is.EqualTo(message.Body.Number)); }
public void When_using_the_versioned_serialization_strategy_messages_are_correctly_round_tripped() { var typeNameSerializer = new TypeNameSerializer(); var serializer = new JsonSerializer(typeNameSerializer); const string correlationId = "CorrelationId"; var serializationStrategy = new VersionedMessageSerializationStrategy(typeNameSerializer, serializer, () => correlationId); var messageBody = new MyMessage { Text = "Hello world!" }; var message = new Message <MyMessage>(messageBody); var serializedMessage = serializationStrategy.SerializeMessage(message); var deserializedMessage = serializationStrategy.DeserializeMessage(serializedMessage.Properties, serializedMessage.Body); Assert.That(deserializedMessage.Message.Body.GetType(), Is.EqualTo(message.Body.GetType())); Assert.That(deserializedMessage.Message.Body.Text, Is.EqualTo(message.Body.Text)); }
public void When_using_the_versioned_serialization_strategy_messages_are_correctly_round_tripped() { var typeNameSerializer = new DefaultTypeNameSerializer(); var serializer = new JsonSerializer(); const string correlationId = "CorrelationId"; var serializationStrategy = new VersionedMessageSerializationStrategy(typeNameSerializer, serializer, new StaticCorrelationIdGenerationStrategy(correlationId)); var messageBody = new MyMessage { Text = "Hello world!" }; var message = new Message <MyMessage>(messageBody); var serializedMessage = serializationStrategy.SerializeMessage(message); var deserializedMessage = serializationStrategy.DeserializeMessage(serializedMessage.Properties, serializedMessage.Body); Assert.Equal(deserializedMessage.MessageType, message.Body.GetType()); Assert.Equal(((Message <MyMessage>)deserializedMessage).Body.Text, message.Body.Text); }