public void WhenTunnelsListEmpty_ThenRefreshButtonIsDisabled()
        {
            var viewModel = new TunnelsViewModel(
                CreateTunnelBroker(0).Object,
                CreateConfirmationDialog(DialogResult.Cancel).Object,
                new MockEventService());

            viewModel.RefreshTunnels();

            Assert.IsFalse(viewModel.IsRefreshButtonEnabled);
        }
        public void WhenOneTunnelOpen_ThenRefreshButtonIsEnabled()
        {
            var viewModel = new TunnelsViewModel(
                CreateTunnelBroker(1).Object,
                CreateConfirmationDialog(DialogResult.Cancel).Object,
                new MockEventService());

            viewModel.RefreshTunnels();

            Assert.IsTrue(viewModel.IsRefreshButtonEnabled);
        }
        public void WhenTunnelSelected_ThenDisconnectButtonIsEnabled()
        {
            var viewModel = new TunnelsViewModel(
                CreateTunnelBroker(1).Object,
                CreateConfirmationDialog(DialogResult.Cancel).Object,
                new MockEventService());

            viewModel.RefreshTunnels();

            Assert.IsFalse(viewModel.IsDisconnectButtonEnabled);

            viewModel.SelectedTunnel = viewModel.Tunnels[0];
            Assert.IsTrue(viewModel.IsDisconnectButtonEnabled);
        }
        public async Task WhenNoTunnelSelected_ThenDisconnectSelectedTunnelDoesNothing()
        {
            var viewModel = new TunnelsViewModel(
                CreateTunnelBroker(1).Object,
                CreateConfirmationDialog(DialogResult.Cancel).Object,
                new MockEventService());

            viewModel.RefreshTunnels();

            Assert.AreEqual(1, viewModel.Tunnels.Count);

            await viewModel.DisconnectSelectedTunnelAsync();

            Assert.AreEqual(1, viewModel.Tunnels.Count);
        }
        public async Task WhenTunnelSelectedAndDisconnectNotConfirmed_ThenTunnelIsLeftOpen()
        {
            var broker    = CreateTunnelBroker(1);
            var viewModel = new TunnelsViewModel(
                broker.Object,
                CreateConfirmationDialog(DialogResult.Cancel).Object,
                new MockEventService());

            viewModel.RefreshTunnels();
            viewModel.SelectedTunnel = viewModel.Tunnels[0];

            Assert.AreEqual(1, viewModel.Tunnels.Count);

            await viewModel.DisconnectSelectedTunnelAsync();

            broker.Verify(b => b.DisconnectAsync(It.IsAny <TunnelDestination>()), Times.Never);
            Assert.IsNotNull(viewModel.SelectedTunnel);
        }
示例#6
0
        public async Task <ResponseViewModel <bool> > AddTunnel(TunnelsViewModel vm)
        {
            var data = new ResponseViewModel <bool>();

            var userId = HttpContext.User.FindFirst(u => u.Type == ClaimTypes.NameIdentifier).Value;

            if (await _tunnelProvider.GetTunnelBySubDomail(vm.SubDomain) != null)
            {
                data.Code = 1;
                data.Msg  = _localizer["add_tunnel.msg"];

                return(data);
            }

            var tunnelId = GuidUtil.GenerateGuid();

            if (await _tunnelProvider.GetTunnel(tunnelId) != null)
            {
                data.Code = 1;
                data.Msg  = _localizer["add_tunnel.error"];

                return(data);
            }

            var tunnel = new TunnelsEntity
            {
                TunnelId       = tunnelId,
                UserId         = Convert.ToInt32(userId),
                TunnelProtocol = vm.TunnelProtocol,
                TunnelName     = vm.TunnelName,
                SubDomain      = vm.SubDomain,
                LocalPort      = vm.LocalPort,
                FullUrl        = vm.FullUrl,
                Status         = (int)TunnelStatusEnum.Audit,
                CreateTime     = DateTime.Now
            };

            data.Data = await _tunnelProvider.Create(tunnel);

            return(data);
        }