Exemplo n.º 1
0
        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");
        }
Exemplo n.º 2
0
        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]);
        }