public void ShouldConvertTo()
        {
            // Given
            var properties = CreateMessageProperties();

            properties.AppId           = AppId;
            properties.UserId          = UserId;
            properties.TypeName        = TypeName;
            properties.MessageId       = MessageId;
            properties.ContentType     = ContentType;
            properties.ContentEncoding = ContentEncoding;
            properties.Headers         = new MessageHeaders(Headers);

            // When
            var target = new RabbitMqMessageConverter(CreateRabbitMessageProperties);
            var result = target.ConvertTo(properties);

            // Then
            Assert.IsNotNull(result);
            Assert.AreEqual(AppId, result.AppId);
            Assert.AreEqual(UserId, result.UserId);
            Assert.AreEqual(TypeName, result.Type);
            Assert.AreEqual(MessageId, result.MessageId);
            Assert.AreEqual(ContentType, result.ContentType);
            Assert.AreEqual(ContentEncoding, result.ContentEncoding);
            Assert.AreEqual(2, result.DeliveryMode);
            Assert.IsNotNull(result.Headers);
            CollectionAssert.AreEqual(new byte[] { 1, 2, 3 }, (byte[])result.Headers["key1"]);
            CollectionAssert.AreEqual(new byte[] { 4, 5, 6 }, (byte[])result.Headers["key2"]);
            CollectionAssert.AreEqual(new byte[] { 7, 8, 9 }, (byte[])result.Headers["key3"]);
        }
        public void ShouldConvertFrom()
        {
            // Given
            var properties = CreateRabbitMessageProperties();

            properties.AppId           = AppId;
            properties.UserId          = UserId;
            properties.Type            = TypeName;
            properties.MessageId       = MessageId;
            properties.ContentType     = ContentType;
            properties.ContentEncoding = ContentEncoding;
            properties.Headers         = Headers.ToDictionary(i => i.Key, i => (object)i.Value);

            // When
            var target = new RabbitMqMessageConverter(CreateRabbitMessageProperties);
            var result = target.ConvertFrom(properties);

            // Then
            Assert.IsNotNull(result);
            Assert.AreEqual(AppId, result.AppId);
            Assert.AreEqual(UserId, result.UserId);
            Assert.AreEqual(TypeName, result.TypeName);
            Assert.AreEqual(MessageId, result.MessageId);
            Assert.AreEqual(ContentType, result.ContentType);
            Assert.AreEqual(ContentEncoding, result.ContentEncoding);
            Assert.IsNotNull(result.Headers);
            CollectionAssert.AreEqual(new byte[] { 1, 2, 3 }, result.Headers.Get("key1"));
            CollectionAssert.AreEqual(new byte[] { 4, 5, 6 }, result.Headers.Get("key2"));
            CollectionAssert.AreEqual(new byte[] { 7, 8, 9 }, result.Headers.Get("key3"));
        }