Example #1
0
        public async Task WhenConnectSuccessful_ThenOpenTunnelsIncludesTunnel()
        {
            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));

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

            Assert.IsNotNull(tunnel);
            Assert.AreEqual(1, broker.OpenTunnels.Count());
            Assert.IsTrue(broker.IsConnected(destination));

            Assert.AreSame(tunnel, broker.OpenTunnels.First());
        }