Example #1
0
        public async Task WhenClosingAllTunnels_CloseEventsAreFired()
        {
            var mockTunnelService = new Mock <ITunnelService>();

            var mockEventService = new Mock <IEventService>();

            mockEventService.Setup(s => s.FireAsync(It.IsAny <TunnelOpenedEvent>()))
            .Returns(Task.FromResult(true));
            mockEventService.Setup(s => s.FireAsync(It.IsAny <TunnelClosedEvent>()))
            .Returns(Task.FromResult(true));

            var mockTunnel = new Mock <ITunnel>();

            mockTunnel.Setup(t => t.Probe(It.IsAny <TimeSpan>()))
            .Returns(Task.FromResult(true));
            mockTunnel.Setup(t => t.Close());

            var broker        = new TunnelBrokerService(mockTunnelService.Object, mockEventService.Object);
            var vmInstanceRef = new InstanceLocator("project", "zone", "instance");
            var destination   = new TunnelDestination(vmInstanceRef, 3389);

            mockTunnelService.Setup(s => s.CreateTunnelAsync(destination))
            .Returns(Task.FromResult(mockTunnel.Object));

            var tunnel = await broker.ConnectAsync(destination, TimeSpan.FromMinutes(1));

            await broker.DisconnectAllAsync();

            mockEventService.Verify(s => s.FireAsync(It.IsAny <TunnelClosedEvent>()), Times.Once);
        }
Example #2
0
        public async Task WhenClosingAllTunnels_AllTunnelsAreClosed()
        {
            var mockTunnelService = new Mock <ITunnelService>();

            var mockEventService = new Mock <IEventService>();

            mockEventService.Setup(s => s.FireAsync(It.IsAny <TunnelOpenedEvent>()))
            .Returns(Task.FromResult(true));

            var mockTunnel = new Mock <ITunnel>();

            mockTunnel.Setup(t => t.Probe(It.IsAny <TimeSpan>()))
            .Returns(Task.FromResult(true));
            mockTunnel.Setup(t => t.Close());

            var broker        = new TunnelBrokerService(mockTunnelService.Object, mockEventService.Object);
            var vmInstanceRef = new InstanceLocator("project", "zone", "instance");
            var destination   = new TunnelDestination(vmInstanceRef, 3389);

            mockTunnelService.Setup(s => s.CreateTunnelAsync(
                                        destination,
                                        It.IsAny <ISshRelayPolicy>()))
            .Returns(Task.FromResult(mockTunnel.Object));

            var tunnel = await broker.ConnectAsync(
                destination,
                new AllowAllRelayPolicy(),
                TimeSpan.FromMinutes(1));

            Assert.AreEqual(1, broker.OpenTunnels.Count());

            await broker.DisconnectAllAsync();

            Assert.AreEqual(0, broker.OpenTunnels.Count());
        }