Example #1
0
        public async Task HandleExceptionsTest(Type exception)
        {
            // Arrange
            MethodCallback testMethodCallback = (request, context) => Task.FromResult(new MethodResponse(200));

            var sdkModuleClient = new Mock <ISdkModuleClient>(MockBehavior.Strict);

            sdkModuleClient.Setup(s => s.CloseAsync())
            .Returns(Task.CompletedTask);
            sdkModuleClient.Setup(s => s.SetDefaultMethodHandlerAsync(testMethodCallback))
            .ThrowsAsync((Exception)Activator.CreateInstance(exception, "Dummy exception"));

            TimeSpan idleTimeout        = TimeSpan.FromMinutes(3);
            bool     closeOnIdleTimeout = false;

            // Act
            var moduleClient = new ModuleClient(sdkModuleClient.Object, idleTimeout, closeOnIdleTimeout, Core.UpstreamProtocol.Mqtt);

            Assert.Equal(Core.UpstreamProtocol.Mqtt, moduleClient.UpstreamProtocol);
            Assert.True(moduleClient.IsActive);
            await Assert.ThrowsAsync(exception, () => moduleClient.SetDefaultMethodHandlerAsync(testMethodCallback));

            // Assert
            sdkModuleClient.Verify(s => s.SetDefaultMethodHandlerAsync(testMethodCallback), Times.Once);
            sdkModuleClient.Verify(s => s.CloseAsync(), Times.Once);
        }
Example #2
0
        public async Task CreateForUpstreamProtocolTest(UpstreamProtocol upstreamProtocol)
        {
            // Arrange
            Option <UpstreamProtocol> receivedProtocol = Option.None <UpstreamProtocol>();

            Task <Client.ModuleClient> ModuleClientCreator(UpstreamProtocol up)
            {
                receivedProtocol = Option.Some(up);
                return(Task.FromResult((Client.ModuleClient)null));
            }

            // Act
            await ModuleClient.CreateDeviceClientForUpstreamProtocol(Option.Some(upstreamProtocol), ModuleClientCreator);

            // Assert
            Assert.Equal(Option.Some(upstreamProtocol), receivedProtocol);
        }
Example #3
0
        public async Task CloseOnInactivityGetsResetTest()
        {
            // Arrange
            MethodCallback testMethodCallback = (request, context) => Task.FromResult(new MethodResponse(200));

            var sdkModuleClient = new Mock <ISdkModuleClient>(MockBehavior.Strict);

            sdkModuleClient.Setup(s => s.CloseAsync())
            .Returns(Task.CompletedTask);
            sdkModuleClient.Setup(s => s.SetDefaultMethodHandlerAsync(testMethodCallback))
            .Returns(Task.CompletedTask);

            TimeSpan idleTimeout        = TimeSpan.FromSeconds(3);
            bool     closeOnIdleTimeout = true;

            // Act
            var moduleClient = new ModuleClient(sdkModuleClient.Object, idleTimeout, closeOnIdleTimeout, Core.UpstreamProtocol.Amqp);

            Assert.True(moduleClient.IsActive);
            Assert.Equal(Core.UpstreamProtocol.Amqp, moduleClient.UpstreamProtocol);

            // Assert
            await Task.Delay(TimeSpan.FromSeconds(2));

            await moduleClient.SetDefaultMethodHandlerAsync(testMethodCallback);

            Assert.True(moduleClient.IsActive);

            await Task.Delay(TimeSpan.FromSeconds(2));

            await moduleClient.SetDefaultMethodHandlerAsync(testMethodCallback);

            Assert.True(moduleClient.IsActive);

            await Task.Delay(TimeSpan.FromSeconds(2));

            await moduleClient.SetDefaultMethodHandlerAsync(testMethodCallback);

            Assert.True(moduleClient.IsActive);

            Assert.True(moduleClient.IsActive);
            await Task.Delay(TimeSpan.FromSeconds(5));

            Assert.False(moduleClient.IsActive);
            sdkModuleClient.Verify(s => s.CloseAsync(), Times.Once);
        }
Example #4
0
        public async Task CreateForUpstreamProtocolTest(UpstreamProtocol upstreamProtocol, TransportType expectedTransportType)
        {
            // Arrange
            var receivedTransportType = TransportType.Http1;

            Task <Client.ModuleClient> ModuleClientCreator(TransportType transportType)
            {
                receivedTransportType = transportType;
                return(Task.FromResult((Client.ModuleClient)null));
            }

            // Act
            await ModuleClient.CreateDeviceClientForUpstreamProtocol(Option.Some(upstreamProtocol), ModuleClientCreator);

            // Assert
            Assert.Equal(expectedTransportType, receivedTransportType);
        }
Example #5
0
        public async Task CloseOnInactivityTest()
        {
            // Arrange
            var sdkModuleClient = new Mock <ISdkModuleClient>(MockBehavior.Strict);

            sdkModuleClient.Setup(s => s.CloseAsync())
            .Returns(Task.CompletedTask);

            TimeSpan idleTimeout        = TimeSpan.FromSeconds(2);
            bool     closeOnIdleTimeout = true;

            // Act
            var moduleClient = new ModuleClient(sdkModuleClient.Object, idleTimeout, closeOnIdleTimeout);

            // Assert
            Assert.True(moduleClient.IsActive);
            await Task.Delay(TimeSpan.FromSeconds(5));

            Assert.False(moduleClient.IsActive);
            sdkModuleClient.Verify(s => s.CloseAsync(), Times.Once);
        }
Example #6
0
        public async Task CreateForNoUpstreamProtocolTest()
        {
            // Arrange
            var receivedProtocols = new List <UpstreamProtocol>();

            Task <Client.ModuleClient> DeviceClientCreator(UpstreamProtocol up)
            {
                receivedProtocols.Add(up);
                return(receivedProtocols.Count == 1
                    ? Task.FromException <Client.ModuleClient>(new InvalidOperationException())
                    : Task.FromResult(
                           Client.ModuleClient.Create(
                               "example.com",
                               new ModuleAuthenticationWithToken("deviceid", "moduleid", TokenHelper.CreateSasToken("foo.azure-devices.net")))));
            }

            // Act
            await ModuleClient.CreateDeviceClientForUpstreamProtocol(Option.None <UpstreamProtocol>(), DeviceClientCreator);

            // Assert
            Assert.Equal(2, receivedProtocols.Count);
            Assert.Equal(UpstreamProtocol.Amqp, receivedProtocols[0]);
            Assert.Equal(UpstreamProtocol.AmqpWs, receivedProtocols[1]);
        }