feat: add declarative sing-box egress control plane
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import subprocess
|
||||
import unittest
|
||||
|
||||
from vpn_egressctl.errors import CommandError, UnsupportedVersionError
|
||||
from vpn_egressctl.version import parse_version_output, probe_version, require_supported
|
||||
|
||||
from tests.helpers import FakeRunner, VERSION_OUTPUT
|
||||
|
||||
|
||||
class VersionTests(unittest.TestCase):
|
||||
def test_parse_and_require(self) -> None:
|
||||
version = parse_version_output(VERSION_OUTPUT)
|
||||
self.assertEqual(version.version, "1.13.19")
|
||||
self.assertIn("with_quic", version.tags)
|
||||
require_supported(version)
|
||||
|
||||
def test_other_versions_are_rejected(self) -> None:
|
||||
for value in ("1.13.12", "1.13.20", "1.14.0", "1.13.19-rc.1"):
|
||||
text = VERSION_OUTPUT.replace("1.13.19", value, 1)
|
||||
with self.subTest(value=value), self.assertRaises(UnsupportedVersionError):
|
||||
require_supported(parse_version_output(text))
|
||||
|
||||
def test_non_linux_rejected(self) -> None:
|
||||
version = parse_version_output(VERSION_OUTPUT.replace("linux/amd64", "windows/amd64"))
|
||||
with self.assertRaises(UnsupportedVersionError):
|
||||
require_supported(version)
|
||||
|
||||
def test_missing_quic_rejected(self) -> None:
|
||||
version = parse_version_output(VERSION_OUTPUT.replace("with_quic,", ""))
|
||||
with self.assertRaises(UnsupportedVersionError):
|
||||
require_supported(version)
|
||||
|
||||
def test_command_failure(self) -> None:
|
||||
runner = FakeRunner()
|
||||
runner.version = "garbage"
|
||||
with self.assertRaises(UnsupportedVersionError):
|
||||
probe_version("sing-box", runner)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user