示例#1
0
        public void OnVpnDisconnected_ManualDisconnect_RestoreInternet()
        {
            // Arrange
            var sut = new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings);

            // Act
            sut.OnVpnDisconnected(GetDisconnectedVpnState(true));

            // Assert
            _firewall.Received(1).DisableLeakProtection();
        }
示例#2
0
        public void OnVpnDisconnected_UnexpectedDisconnectWithKillSwitchOff_RestoreInternet()
        {
            // Arrange
            _serviceSettings.KillSwitchMode.Returns(KillSwitchMode.Off);
            var sut = new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings, _networkInterfaceLoader);

            // Act
            sut.OnVpnDisconnected(GetDisconnectedVpnState());

            // Assert
            _firewall.Received(1).DisableLeakProtection();
        }
示例#3
0
        public void OnVpnConnecting_SplitTunnelBlockMode_BlockInternet(SplitTunnelMode mode, bool dnsLeakOnly)
        {
            // Arrange
            Service.KillSwitch.KillSwitch killSwitch = GetKillSwitch(mode);

            // Act
            killSwitch.OnVpnConnecting(GetConnectingVpnState());

            // Assert
            _firewall.ReceivedWithAnyArgs(1)
            .EnableLeakProtection(Arg.Is <FirewallParams>(p => p.DnsLeakOnly == dnsLeakOnly));
        }
示例#4
0
        public void OnVpnConnected_WhenSplitTunnelPermitMode_DoNotBlockInternet()
        {
            // Arrange
            Service.KillSwitch.KillSwitch killSwitch = GetKillSwitch(SplitTunnelMode.Permit);

            // Act
            killSwitch.OnVpnConnected(GetConnectedVpnState());

            // Assert
            _firewall.Received(0)
            .EnableLeakProtection(new FirewallParams("127.0.0.1", dnsLeakOnly: false, interfaceIndex: 0, persistent: false));
        }
示例#5
0
        public void OnVpnConnected_WhenSplitTunnelPermitMode_DoNotBlockInternet()
        {
            // Arrange
            Service.KillSwitch.KillSwitch killSwitch = GetKillSwitch(SplitTunnelMode.Permit);

            // Act
            killSwitch.OnVpnConnected(GetConnectedVpnState());

            // Assert
            _firewall.Received(0)
            .EnableLeakProtection(new FirewallParams {
                ServerIp = "127.0.0.1"
            });
        }
示例#6
0
        public void ExpectedLeakProtectionStatus_ShouldBe_Firewall_LeakProtectionEnabled_WhenOtherStatus(VpnStatus status, bool leakProtectionEnabled)
        {
            // Arrange
            var state = new VpnState(status);

            _firewall.LeakProtectionEnabled.Returns(leakProtectionEnabled);
            var killSwitch = new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings);

            // Act
            var result = killSwitch.ExpectedLeakProtectionStatus(state);

            //Assert
            result.Should().Be(leakProtectionEnabled);
        }
示例#7
0
        public void OnVpnDisconnected_UnexpectedDisconnectWithKillSwitchOff_RestoreInternet()
        {
            // Arrange
            _serviceSettings.KillSwitchSettings.Returns(new KillSwitchSettingsContract
            {
                Enabled = false
            });
            var sut = new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings);

            // Act
            sut.OnVpnDisconnected(GetDisconnectedVpnState());

            // Assert
            _firewall.Received(1).DisableLeakProtection();
        }
示例#8
0
        public void ExpectedLeakProtectionStatus_ShouldBe_Firewall_LeakProtectionEnabled_WhenOtherStatus(
            VpnStatus status, bool leakProtectionEnabled)
        {
            // Arrange
            var state = new VpnState(status, default);

            _firewall.LeakProtectionEnabled.Returns(leakProtectionEnabled);
            Service.KillSwitch.KillSwitch killSwitch =
                new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings, _networkInterfaceLoader);

            // Act
            bool result = killSwitch.ExpectedLeakProtectionStatus(state);

            //Assert
            result.Should().Be(leakProtectionEnabled);
        }
示例#9
0
        public void ExpectedLeakProtectionStatus_ShouldBe_Expected_WhenDisconnecting(VpnStatus status, VpnError error,
                                                                                     KillSwitchMode killSwitchMode, bool leakProtectionEnabled, bool expected)
        {
            // Arrange
            var state = new VpnState(status, error, default);

            _serviceSettings.KillSwitchMode.Returns(killSwitchMode);
            _firewall.LeakProtectionEnabled.Returns(leakProtectionEnabled);
            Service.KillSwitch.KillSwitch killSwitch =
                new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings, _networkInterfaceLoader);

            // Act
            bool result = killSwitch.ExpectedLeakProtectionStatus(state);

            //Assert
            result.Should().Be(expected);
        }
示例#10
0
        public void ExpectedLeakProtectionStatus_ShouldBe_Expected_WhenConnecting(VpnStatus status, SplitTunnelMode splitTunnelMode, bool expected)
        {
            // Arrange
            var state = new VpnState(status);

            _serviceSettings.SplitTunnelSettings.Returns(new SplitTunnelSettingsContract
            {
                Mode = splitTunnelMode
            });
            var killSwitch = new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings);

            // Act
            var result = killSwitch.ExpectedLeakProtectionStatus(state);

            //Assert
            result.Should().Be(expected);
        }
示例#11
0
        public void ExpectedLeakProtectionStatus_ShouldBe_Enabled_WhenConnecting(VpnStatus status)
        {
            // Arrange
            var state = new VpnState(status, default);

            _serviceSettings.SplitTunnelSettings.Returns(new SplitTunnelSettingsContract
            {
                Mode = SplitTunnelMode.Block
            });
            Service.KillSwitch.KillSwitch killSwitch =
                new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings, _networkInterfaceLoader);

            // Act
            bool result = killSwitch.ExpectedLeakProtectionStatus(state);

            //Assert
            result.Should().Be(true);
        }
示例#12
0
        public void ExpectedLeakProtectionStatus_ShouldBe_Expected_WhenDisconnecting(VpnStatus status, VpnError error, bool killSwitchEnabled, bool leakProtectionEnabled, bool expected)
        {
            // Arrange
            var state = new VpnState(status, error);

            _serviceSettings.KillSwitchSettings.Returns(new KillSwitchSettingsContract
            {
                Enabled = killSwitchEnabled
            });
            _firewall.LeakProtectionEnabled.Returns(leakProtectionEnabled);
            var killSwitch = new Service.KillSwitch.KillSwitch(_firewall, _serviceSettings);

            // Act
            var result = killSwitch.ExpectedLeakProtectionStatus(state);

            //Assert
            result.Should().Be(expected);
        }