Exemple #1
0
        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());
        }
Exemple #2
0
        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);
        }