public async Task RegisterC2DMessageSenderTest() { // Arrange IDeviceProxy deviceProxy = null; var identity = Mock.Of <IIdentity>(i => i.Id == "d1"); var clientCredentials = Mock.Of <IClientCredentials>(c => c.Identity == identity); var deviceListener = Mock.Of <IDeviceListener>(); Mock.Get(deviceListener).Setup(d => d.BindDeviceProxy(It.IsAny <IDeviceProxy>())) .Callback <IDeviceProxy>(d => deviceProxy = d); var connectionProvider = Mock.Of <IConnectionProvider>(c => c.GetDeviceListenerAsync(clientCredentials) == Task.FromResult(deviceListener)); var amqpAuthentication = new AmqpAuthentication(true, Option.Some(clientCredentials)); var cbsNode = Mock.Of <ICbsNode>(c => c.GetAmqpAuthentication() == Task.FromResult(amqpAuthentication)); var amqpConnection = Mock.Of <IAmqpConnection>(c => c.FindExtension <ICbsNode>() == cbsNode); var connectionHandler = new ConnectionHandler(amqpConnection, connectionProvider); IMessage receivedMessage = null; var c2DLinkHandler = new Mock <ISendingLinkHandler>(); c2DLinkHandler.Setup(c => c.SendMessage(It.IsAny <IMessage>())) .Callback <IMessage>(m => receivedMessage = m) .Returns(Task.CompletedTask); c2DLinkHandler.SetupGet(c => c.Type) .Returns(LinkType.C2D); var systemProperties = new Dictionary <string, string>(); var messageToSend = Mock.Of <IMessage>(m => m.SystemProperties == systemProperties); // Act await connectionHandler.GetDeviceListener(); await connectionHandler.RegisterLinkHandler(c2DLinkHandler.Object); await deviceProxy.SendC2DMessageAsync(messageToSend); // Assert Assert.NotNull(receivedMessage); Assert.Equal(messageToSend, receivedMessage); Assert.Equal(systemProperties[SystemProperties.To], "/devices/d1"); }
public async Task RegisterC2DMessageSenderTest() { // Arrange IDeviceProxy deviceProxy = null; var identity = Mock.Of <IIdentity>(i => i.Id == "d1"); var deviceListener = Mock.Of <IDeviceListener>(); Mock.Get(deviceListener).Setup(d => d.BindDeviceProxy(It.IsAny <IDeviceProxy>())) .Callback <IDeviceProxy>(d => deviceProxy = d); var connectionProvider = Mock.Of <IConnectionProvider>(c => c.GetDeviceListenerAsync(identity, Option.None <string>()) == Task.FromResult(deviceListener)); var connectionHandler = new ClientConnectionHandler(identity, connectionProvider); IMessage receivedMessage = null; var c2DLinkHandler = new Mock <ISendingLinkHandler>(); c2DLinkHandler.Setup(c => c.SendMessage(It.IsAny <IMessage>())) .Callback <IMessage>(m => receivedMessage = m) .Returns(Task.CompletedTask); c2DLinkHandler.SetupGet(c => c.Type) .Returns(LinkType.C2D); var systemProperties = new Dictionary <string, string>(); var messageToSend = Mock.Of <IMessage>(m => m.SystemProperties == systemProperties); // Act await connectionHandler.GetDeviceListener(); await connectionHandler.RegisterLinkHandler(c2DLinkHandler.Object); await deviceProxy.SendC2DMessageAsync(messageToSend); // Assert Assert.NotNull(receivedMessage); Assert.Equal(messageToSend, receivedMessage); Assert.Equal("/devices/d1", systemProperties[SystemProperties.To]); }