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); }
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); }
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); }
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); }
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); }
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]); }