public void TestToMessage_NoTopicMatch() { var outputTemplates = new Dictionary <string, string> { ["Dummy"] = string.Empty }; var inputTemplates = new List <string> { "devices/{deviceId}/messages/events/{params}/", "devices/{deviceId}/messages/events/" }; var config = new MessageAddressConversionConfiguration( inputTemplates, outputTemplates); var converter = new MessageAddressConverter(config); var properties = new Dictionary <string, string>(); var protocolGatewayMessage = Mock.Of <IProtocolGatewayMessage>( m => m.Address == @"devices/Device_6/messages/eve/%24.cid=Corrid1&%24.mid=MessageId1&Foo=Bar&Prop2=Value2&Prop3=Value3/" && m.Payload.Equals(Payload) && m.Properties == properties); var protocolGatewayMessageConverter = new ProtocolGatewayMessageConverter(converter, ByteBufferConverter); Assert.Throws <InvalidOperationException>(() => protocolGatewayMessageConverter.ToMessage(protocolGatewayMessage)); }
public void TestToMessage_Module() { var outputTemplates = new Dictionary <string, string> { ["Dummy"] = "" }; var inputTemplates = new List <string> { "devices/{deviceId}/messages/events/{params}/", "devices/{deviceId}/messages/events/", "devices/{deviceId}/modules/{moduleId}/messages/events/{params}/", "devices/{deviceId}/modules/{moduleId}/messages/events/" }; var config = new MessageAddressConversionConfiguration( inputTemplates, outputTemplates ); var converter = new MessageAddressConverter(config); var properties = new Dictionary <string, string>(); var protocolGatewayMessage = Mock.Of <IProtocolGatewayMessage>( m => m.Address == @"devices/Device_6/modules/SensorModule/messages/events/%24.cid=Corrid1&%24.mid=MessageId1&Foo=Bar&Prop2=Value2&Prop3=Value3/" && m.Payload.Equals(Payload) && m.Properties == properties ); var protocolGatewayMessageConverter = new ProtocolGatewayMessageConverter(converter, ByteBufferConverter); IMessage message = protocolGatewayMessageConverter.ToMessage(protocolGatewayMessage); Assert.NotNull(message); Assert.Equal(4, message.SystemProperties.Count); Assert.Equal("Corrid1", message.SystemProperties[SystemProperties.MsgCorrelationId]); Assert.Equal("MessageId1", message.SystemProperties[SystemProperties.MessageId]); Assert.Equal("Device_6", message.SystemProperties[SystemProperties.ConnectionDeviceId]); Assert.Equal("SensorModule", message.SystemProperties[SystemProperties.ConnectionModuleId]); Assert.Equal(3, message.Properties.Count); Assert.Equal("Bar", message.Properties["Foo"]); Assert.Equal("Value2", message.Properties["Prop2"]); Assert.Equal("Value3", message.Properties["Prop3"]); }
public void TestToMessage_AllSystemProperties() { var outputTemplates = new Dictionary <string, string> { ["Dummy"] = string.Empty }; var inputTemplates = new List <string> { "devices/{deviceId}/messages/events/{params}/", "devices/{deviceId}/messages/events/" }; var config = new MessageAddressConversionConfiguration( inputTemplates, outputTemplates); var converter = new MessageAddressConverter(config); var properties = new Dictionary <string, string>(); var address = new StringBuilder(); // base address address.Append("devices/Device_6/messages/events/"); // append all system properties // correlation id address.Append($"{HttpUtility.UrlEncode("$.cid")}=1234"); // message id address.Append($"&{HttpUtility.UrlEncode("$.mid")}=mid1"); // to address.Append($"&{HttpUtility.UrlEncode("$.to")}=d2"); // userId address.Append($"&{HttpUtility.UrlEncode("$.uid")}=u1"); // output name address.Append($"&{HttpUtility.UrlEncode("$.on")}=op1"); // contentType address.Append($"&{HttpUtility.UrlEncode("$.ct")}={HttpUtility.UrlEncode("application/json")}"); // content encoding address.Append($"&{HttpUtility.UrlEncode("$.ce")}={HttpUtility.UrlEncode("utf-8")}"); // messageSchema address.Append($"&{HttpUtility.UrlEncode("$.schema")}=someschema"); // creation time address.Append($"&{HttpUtility.UrlEncode("$.ctime")}={HttpUtility.UrlEncode("2018-01-31")}"); // component name address.Append($"&{HttpUtility.UrlEncode("$.sub")}=testComponent"); // add custom properties address.Append("&Foo=Bar&Prop2=Value2&Prop3=Value3/"); var protocolGatewayMessage = Mock.Of <IProtocolGatewayMessage>( m => m.Address == address.ToString() && m.Payload.Equals(Payload) && m.Properties == properties); var protocolGatewayMessageConverter = new ProtocolGatewayMessageConverter(converter, ByteBufferConverter); IMessage message = protocolGatewayMessageConverter.ToMessage(protocolGatewayMessage); Assert.NotNull(message); Assert.Equal(11, message.SystemProperties.Count); Assert.Equal("1234", message.SystemProperties[SystemProperties.MsgCorrelationId]); Assert.Equal("mid1", message.SystemProperties[SystemProperties.MessageId]); Assert.Equal("d2", message.SystemProperties[SystemProperties.To]); Assert.Equal("u1", message.SystemProperties[SystemProperties.UserId]); Assert.Equal("op1", message.SystemProperties[SystemProperties.OutputName]); Assert.Equal("application/json", message.SystemProperties[SystemProperties.ContentType]); Assert.Equal("utf-8", message.SystemProperties[SystemProperties.ContentEncoding]); Assert.Equal("someschema", message.SystemProperties[SystemProperties.MessageSchema]); Assert.Equal("2018-01-31", message.SystemProperties[SystemProperties.CreationTime]); Assert.Equal("Device_6", message.SystemProperties[SystemProperties.ConnectionDeviceId]); Assert.Equal("testComponent", message.SystemProperties[SystemProperties.ComponentName]); Assert.Equal(3, message.Properties.Count); Assert.Equal("Bar", message.Properties["Foo"]); Assert.Equal("Value2", message.Properties["Prop2"]); Assert.Equal("Value3", message.Properties["Prop3"]); }