示例#1
0
        public async Task InvokeMethodClientTimesOutTest()
        {
            // Arrange
            var request = new DirectMethodRequest("d1", "poke", null, TimeSpan.FromSeconds(10));

            var deviceProxy = new Mock <IDeviceProxy>();

            deviceProxy.Setup(d => d.InvokeMethodAsync(It.IsAny <DirectMethodRequest>()))
            .ReturnsAsync(() => new DirectMethodResponse(new EdgeHubTimeoutException("Edge hub timed out"), HttpStatusCode.GatewayTimeout));

            var deviceSubscriptions = new Dictionary <DeviceSubscription, bool>
            {
                [DeviceSubscription.Methods] = true
            };

            var connectionManager = new Mock <IConnectionManager>();

            connectionManager.Setup(c => c.GetDeviceConnection(It.IsAny <string>())).Returns(Option.Some(deviceProxy.Object));
            connectionManager.Setup(c => c.GetSubscriptions(It.IsAny <string>()))
            .Returns(Option.Some(new ReadOnlyDictionary <DeviceSubscription, bool>(deviceSubscriptions) as IReadOnlyDictionary <DeviceSubscription, bool>));

            IInvokeMethodHandler invokeMethodHandler = new InvokeMethodHandler(connectionManager.Object);

            // Act
            DirectMethodResponse response = await invokeMethodHandler.InvokeMethod(request);

            // Assert
            Assert.NotNull(response);
            Assert.Null(response.CorrelationId);
            Assert.Equal(HttpStatusCode.GatewayTimeout, response.HttpStatusCode);
            Assert.Null(response.Data);
            Assert.Equal(0, response.Status);
            Assert.IsType <EdgeHubTimeoutException>(response.Exception.OrDefault());
        }
示例#2
0
        public async Task InvokeMethodTest()
        {
            // Arrange
            var request = new DirectMethodRequest("d1", "poke", null, TimeSpan.FromSeconds(10));

            var deviceProxy = new Mock <IDeviceProxy>();

            deviceProxy.Setup(d => d.InvokeMethodAsync(It.IsAny <DirectMethodRequest>()))
            .ReturnsAsync(() => new DirectMethodResponse(request.CorrelationId, null, 200));

            var deviceSubscriptions = new Dictionary <DeviceSubscription, bool>
            {
                [DeviceSubscription.Methods] = true
            };

            var connectionManager = new Mock <IConnectionManager>();

            connectionManager.Setup(c => c.GetDeviceConnection(It.IsAny <string>())).Returns(Option.Some(deviceProxy.Object));
            connectionManager.Setup(c => c.GetSubscriptions(It.IsAny <string>()))
            .Returns(Option.Some(new ReadOnlyDictionary <DeviceSubscription, bool>(deviceSubscriptions) as IReadOnlyDictionary <DeviceSubscription, bool>));

            IInvokeMethodHandler invokeMethodHandler = new InvokeMethodHandler(connectionManager.Object);

            // Act
            DirectMethodResponse response = await invokeMethodHandler.InvokeMethod(request);

            // Assert
            Assert.NotNull(response);
            Assert.Equal(response.CorrelationId, request.CorrelationId);
            Assert.Equal(HttpStatusCode.OK, response.HttpStatusCode);
            Assert.Null(response.Data);
            Assert.Equal((int)HttpStatusCode.OK, response.Status);
            Assert.False(response.Exception.HasValue);
        }