release: prepare 0.2.0 for sing-box 1.14
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from vpn_egressctl.errors import ValidationError
|
||||
from vpn_egressctl.metadata import build_config_metadata, load_config_metadata
|
||||
|
||||
|
||||
class MetadataTests(unittest.TestCase):
|
||||
def write(self, root: Path, value: dict) -> Path:
|
||||
path = root / "config.meta.json"
|
||||
path.write_text(json.dumps(value), encoding="utf-8")
|
||||
return path
|
||||
|
||||
def test_current_metadata_is_accepted(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
data = b"{}\n"
|
||||
digest = hashlib.sha256(data).hexdigest()
|
||||
path = self.write(
|
||||
Path(directory), build_config_metadata(digest, "1.14.0")
|
||||
)
|
||||
value = load_config_metadata(
|
||||
path, config_sha256=digest, sing_box_version="1.14.0"
|
||||
)
|
||||
self.assertEqual(value["controller_version"], "0.2.0")
|
||||
|
||||
def test_wrong_engine_is_rejected(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
digest = hashlib.sha256(b"{}\n").hexdigest()
|
||||
path = self.write(
|
||||
Path(directory), build_config_metadata(digest, "1.13.19")
|
||||
)
|
||||
with self.assertRaisesRegex(ValidationError, "another sing-box"):
|
||||
load_config_metadata(
|
||||
path, config_sha256=digest, sing_box_version="1.14.0"
|
||||
)
|
||||
|
||||
def test_unknown_keys_are_rejected(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
digest = hashlib.sha256(b"{}\n").hexdigest()
|
||||
metadata = build_config_metadata(digest, "1.14.0")
|
||||
metadata["future"] = True
|
||||
path = self.write(Path(directory), metadata)
|
||||
with self.assertRaisesRegex(ValidationError, "unsupported structure"):
|
||||
load_config_metadata(
|
||||
path, config_sha256=digest, sing_box_version="1.14.0"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user