コード例 #1
0
        public void CloudReceiverIgnoresOtherExceptionsWhenReceivingMessages()
        {
            //Arrange
            var messageConverter = new Mock <IMessageConverter <Client.Message> >();

            messageConverter.Setup(p => p.ToMessage(It.IsAny <Client.Message>())).Returns <IMessage>(null);

            var messageConverterProvider = new Mock <IMessageConverterProvider>();

            messageConverterProvider.Setup(p => p.Get <Client.Message>()).Returns(messageConverter.Object);

            var identity     = Mock.Of <IIdentity>(i => i.Id == "device1");
            var deviceClient = new Mock <IClient>();

            deviceClient.Setup(p => p.ReceiveAsync(It.IsAny <TimeSpan>())).ReturnsAsync(new Client.Message(new byte[0]));

            var cloudProxy    = new CloudProxy(deviceClient.Object, messageConverterProvider.Object, identity.Id, (id, s) => { });
            var cloudListener = new Mock <ICloudListener>();

            var cloudReceiver = new CloudProxy.CloudReceiver(cloudProxy, cloudListener.Object);

            cloudListener.Setup(p => p.ProcessMessageAsync(It.IsAny <IMessage>()))
            .Callback(() => cloudReceiver.CloseAsync())
            .Throws(new Exception());

            //Act
            cloudReceiver.StartListening(); //Exception expected to be handled and not thrown.

            //Assert
            cloudListener.Verify(m => m.ProcessMessageAsync(null));
        }
コード例 #2
0
        public void CloudReceiverCanProcessAMessage()
        {
            //Arrange
            var sampleMessage = Mock.Of <IMessage>();

            var messageConverter = new  Mock <IMessageConverter <Client.Message> >();

            messageConverter.Setup(p => p.ToMessage(It.IsAny <Client.Message>())).Returns(sampleMessage);

            var messageConverterProvider = new Mock <IMessageConverterProvider>();

            messageConverterProvider.Setup(p => p.Get <Client.Message>()).Returns(messageConverter.Object);

            var identity     = Mock.Of <IIdentity>(i => i.Id == "device1");
            var deviceClient = new Mock <IClient>();

            deviceClient.Setup(p => p.ReceiveAsync(It.IsAny <TimeSpan>())).ReturnsAsync(new Client.Message(new byte[0]));

            var cloudProxy    = new CloudProxy(deviceClient.Object, messageConverterProvider.Object, identity.Id, (id, s) => { });
            var cloudListener = new Mock <ICloudListener>();

            var cloudReceiver = new CloudProxy.CloudReceiver(cloudProxy, cloudListener.Object);

            cloudListener.Setup(p => p.ProcessMessageAsync(It.IsAny <IMessage>()))
            .Returns(Task.CompletedTask)
            .Callback(() => cloudReceiver.CloseAsync());

            //Act
            cloudReceiver.StartListening();

            //Assert
            cloudListener.Verify(m => m.ProcessMessageAsync(sampleMessage));
        }
コード例 #3
0
        public void ConstructorHappyPath()
        {
            //Arrange
            var messageConverter = new Mock <IMessageConverterProvider>();
            var identity         = Mock.Of <IIdentity>(i => i.Id == "device1");
            var deviceClient     = Mock.Of <IClient>();
            var cloudProxy       = new CloudProxy(deviceClient, messageConverter.Object, identity.Id, (id, s) => { });
            var cloudListener    = new Mock <ICloudListener>();

            //Act
            var cloudReceive = new CloudProxy.CloudReceiver(cloudProxy, cloudListener.Object);

            //Assert
            Assert.NotNull(cloudReceive);
        }
コード例 #4
0
        public async Task MethodCallHandler_WhenResponse_WithRequestIdReceived_Completes()
        {
            var cloudListener = new Mock <ICloudListener>();

            cloudListener.Setup(p => p.CallMethodAsync(It.IsAny <Core.DirectMethodRequest>())).Returns(Task.FromResult(new DirectMethodResponse(RequestId, Data, StatusCode)));
            var messageConverter = new Mock <IMessageConverterProvider>();
            var identity         = Mock.Of <IIdentity>(i => i.Id == "device1");

            var deviceClient = Mock.Of <IClient>();
            var cloudProxy   = new CloudProxy(deviceClient, messageConverter.Object, identity.Id, (id, s) => { });

            var cloudReceiver = new CloudProxy.CloudReceiver(cloudProxy, cloudListener.Object);

            MethodResponse methodResponse = await cloudReceiver.MethodCallHandler(new MethodRequest(MethodName, Data), null);

            cloudListener.Verify(p => p.CallMethodAsync(It.Is <Core.DirectMethodRequest>(x => x.Name == MethodName && x.Data == Data)), Times.Once);
            Assert.NotNull(methodResponse);
        }
コード例 #5
0
        public void SetupDesiredPropertyUpdatesAsync()
        {
            //Arrange
            var messageConverterProvider = new Mock <IMessageConverterProvider>();

            var identity     = Mock.Of <IIdentity>(i => i.Id == "device1");
            var deviceClient = new Mock <IClient>();

            var cloudProxy    = new CloudProxy(deviceClient.Object, messageConverterProvider.Object, identity.Id, (id, s) => { });
            var cloudListener = new Mock <ICloudListener>();

            var cloudReceiver = new CloudProxy.CloudReceiver(cloudProxy, cloudListener.Object);

            //Act
            cloudReceiver.SetupDesiredPropertyUpdatesAsync();

            //Assert
            deviceClient.Verify(m => m.SetDesiredPropertyUpdateCallbackAsync(It.IsAny <DesiredPropertyUpdateCallback>(), It.IsAny <object>()));
        }
コード例 #6
0
        public void RemoveDesiredPropertyUpdatesAsync()
        {
            //Arrange
            var messageConverterProvider = new Mock <IMessageConverterProvider>();

            var identity     = Mock.Of <IIdentity>(i => i.Id == "device1");
            var deviceClient = new Mock <IClient>();

            deviceClient.Setup(dc => dc.SetDesiredPropertyUpdateCallbackAsync(null, null)).Throws(new Exception("Update this test!")); //This is to catch onde the TODO on the code get's in.

            var cloudListener = new Mock <ICloudListener>();
            var cloudProxy    = new CloudProxy(deviceClient.Object, messageConverterProvider.Object, identity.Id, (id, s) => { }, cloudListener.Object);

            CloudProxy.CloudReceiver cloudReceiver = cloudProxy.GetCloudReceiver();

            //Act
            cloudReceiver.RemoveDesiredPropertyUpdatesAsync();

            //Assert
        }
コード例 #7
0
        public void CloudReceiverDisconnectsWhenItReceivesUnauthorizedException()
        {
            //Arrange
            var messageConverterProvider = Mock.Of <IMessageConverterProvider>();

            var deviceClient = new Mock <IClient>();

            deviceClient.Setup(p => p.ReceiveAsync(It.IsAny <TimeSpan>()))
            .Throws(new UnauthorizedException(""));

            var cloudProxy    = new CloudProxy(deviceClient.Object, messageConverterProvider, "device1", (id, s) => { });
            var cloudListener = Mock.Of <ICloudListener>();

            var cloudReceiver = new CloudProxy.CloudReceiver(cloudProxy, cloudListener);

            //Act
            cloudReceiver.StartListening(); //Exception expected to be handled and not thrown.

            //Assert
            //The verification is implicit, just making sure the exception is handled.
        }