public async void TestStartAsyncThrowsIfTransportListenerCallbackArgsHasException() { AmqpSettings amqpSettings = AmqpSettingsProvider.GetDefaultAmqpSettings(IotHubHostName, Mock.Of <IAuthenticator>(), Mock.Of <IClientCredentialsFactory>(), Mock.Of <ILinkHandlerProvider>(), Mock.Of <IConnectionProvider>(), new NullCredentialsCache()); var tcpTransportListener = new Mock <TransportListener>("TCP"); var amqpTransportSettings = new Mock <TransportSettings>(); amqpTransportSettings.Setup(ts => ts.CreateListener()).Returns(tcpTransportListener.Object); var transportSettings = new Mock <ITransportSettings>(); transportSettings.SetupGet(sp => sp.Settings).Returns(amqpTransportSettings.Object); var amqpTransportListener = new TestHelperTransportListener( "AMQP", new TransportAsyncCallbackArgs() { Exception = new ApplicationException("No donuts"), CompletedSynchronously = false }); var transportListenerProvider = new Mock <ITransportListenerProvider>(); transportListenerProvider.Setup(tlp => tlp.Create( It.Is <IEnumerable <TransportListener> >(listeners => listeners.Contains(tcpTransportListener.Object)), amqpSettings )).Returns(amqpTransportListener); var protocolHead = new AmqpProtocolHead(transportSettings.Object, amqpSettings, transportListenerProvider.Object, Mock.Of <IWebSocketListenerRegistry>(), Mock.Of <IAuthenticator>(), Mock.Of <IClientCredentialsFactory>()); await Assert.ThrowsAsync <ApplicationException>(() => protocolHead.StartAsync()); }
public async void TestStartAsyncDoesNotThrowIfCreateConnectionThrows() { AmqpSettings amqpSettings = AmqpSettingsProvider.GetDefaultAmqpSettings(IotHubHostName, Mock.Of <IAuthenticator>(), Mock.Of <IClientCredentialsFactory>(), Mock.Of <ILinkHandlerProvider>(), Mock.Of <IConnectionProvider>(), new NullCredentialsCache()); var runtimeProvider = new Mock <IRuntimeProvider>(); amqpSettings.RuntimeProvider = runtimeProvider.Object; runtimeProvider.Setup(rp => rp.CreateConnection(It.IsAny <TransportBase>(), It.IsAny <ProtocolHeader>(), false, It.IsAny <AmqpSettings>(), It.IsAny <AmqpConnectionSettings>())) .Throws(new ApplicationException("No donuts")); var tcpTransportListener = new Mock <TransportListener>("TCP"); var amqpTransportSettings = new Mock <TransportSettings>(); amqpTransportSettings.Setup(ts => ts.CreateListener()).Returns(tcpTransportListener.Object); var transportSettings = new Mock <ITransportSettings>(); transportSettings.SetupGet(sp => sp.Settings).Returns(amqpTransportSettings.Object); var amqpTransportListener = new TestHelperTransportListener( "AMQP", new TransportAsyncCallbackArgs() { CompletedSynchronously = false }); var transportListenerProvider = new Mock <ITransportListenerProvider>(); transportListenerProvider.Setup(tlp => tlp.Create( It.Is <IEnumerable <TransportListener> >(listeners => listeners.Contains(tcpTransportListener.Object)), amqpSettings )).Returns(amqpTransportListener); var protocolHead = new AmqpProtocolHead(transportSettings.Object, amqpSettings, transportListenerProvider.Object, Mock.Of <IWebSocketListenerRegistry>(), Mock.Of <IAuthenticator>(), Mock.Of <IClientCredentialsFactory>()); await protocolHead.StartAsync(); }
public async void TestStartAsyncDoesNotThrowIfConnectionOpenAsyncThrows() { AmqpSettings amqpSettings = AmqpSettingsProvider.GetDefaultAmqpSettings(IotHubHostName, Mock.Of <IAuthenticator>(), Mock.Of <IClientCredentialsFactory>(), Mock.Of <ILinkHandlerProvider>(), Mock.Of <IConnectionProvider>(), new NullCredentialsCache()); var runtimeProvider = new Mock <IRuntimeProvider>(); amqpSettings.RuntimeProvider = runtimeProvider.Object; var tcpTransport = new Mock <TransportBase>("TCP"); TestHelperAmqpConnection amqpConnection = null; runtimeProvider.Setup(rp => rp.CreateConnection(tcpTransport.Object, It.IsAny <ProtocolHeader>(), false, It.IsAny <AmqpSettings>(), It.IsAny <AmqpConnectionSettings>())) .Callback( ( TransportBase transport, ProtocolHeader protocolHeader, bool isInitiator, AmqpSettings settings, AmqpConnectionSettings connectionSettings) => { amqpConnection = new TestHelperAmqpConnection(transport, protocolHeader, isInitiator, settings, connectionSettings); amqpConnection.OnOpenInternal = () => throw new OperationCanceledException("No donuts for you"); }) .Returns(() => amqpConnection); var tcpTransportListener = new Mock <TransportListener>("TCP"); var amqpTransportSettings = new Mock <TransportSettings>(); amqpTransportSettings.Setup(ts => ts.CreateListener()).Returns(tcpTransportListener.Object); var transportSettings = new Mock <ITransportSettings>(); transportSettings.SetupGet(sp => sp.Settings).Returns(amqpTransportSettings.Object); var amqpTransportListener = new TestHelperTransportListener( "AMQP", new TransportAsyncCallbackArgs() { CompletedSynchronously = false, Transport = tcpTransport.Object }); var transportListenerProvider = new Mock <ITransportListenerProvider>(); transportListenerProvider.Setup( tlp => tlp.Create( It.Is <IEnumerable <TransportListener> >(listeners => listeners.Contains(tcpTransportListener.Object)), amqpSettings)).Returns(amqpTransportListener); var protocolHead = new AmqpProtocolHead(transportSettings.Object, amqpSettings, transportListenerProvider.Object, Mock.Of <IWebSocketListenerRegistry>(), Mock.Of <IAuthenticator>(), Mock.Of <IClientCredentialsFactory>()); await protocolHead.StartAsync(); // check if close on the connection was called Assert.NotNull(amqpConnection); Assert.True(amqpConnection.WasClosed); }