"""Tests for router CLI argument parsing.""" from unittest.mock import patch, MagicMock import pytest # We can't easily test main() since it calls asyncio.run(bootstrap), # but we can test the argument parser by importing and patching. class TestRouterCLIArgs: def _parse(self, args): """Parse args using the router's argparse setup.""" import argparse parser = argparse.ArgumentParser(description="I2P Python Router") parser.add_argument("--host", default="0.0.0.0") parser.add_argument("--port", type=int, default=9700) parser.add_argument("--health-port", type=int, default=9701) parser.add_argument("--data-dir", default="~/.i2p-python") parser.add_argument("--reseed", action="store_true") parser.add_argument("--setup", nargs="?", const="auto", metavar="MODE") parser.add_argument("--log-level", default="INFO", choices=["DEBUG", "INFO", "WARNING", "ERROR"]) return parser.parse_args(args) def test_defaults(self): args = self._parse([]) assert args.host == "0.0.0.0" assert args.port == 9700 assert args.health_port == 9701 assert args.data_dir == "~/.i2p-python" assert args.reseed is False assert args.setup is None assert args.log_level == "INFO" def test_custom_port(self): args = self._parse(["--port", "12345"]) assert args.port == 12345 def test_custom_host(self): args = self._parse(["--host", "127.0.0.1"]) assert args.host == "127.0.0.1" def test_reseed_flag(self): args = self._parse(["--reseed"]) assert args.reseed is True def test_setup_auto(self): args = self._parse(["--setup"]) assert args.setup == "auto" def test_setup_paranoid(self): args = self._parse(["--setup", "paranoid"]) assert args.setup == "paranoid" def test_setup_performance(self): args = self._parse(["--setup", "performance"]) assert args.setup == "performance" def test_setup_interactive(self): args = self._parse(["--setup", "interactive"]) assert args.setup == "interactive" def test_log_level_debug(self): args = self._parse(["--log-level", "DEBUG"]) assert args.log_level == "DEBUG" def test_data_dir(self): args = self._parse(["--data-dir", "/tmp/test-i2p"]) assert args.data_dir == "/tmp/test-i2p" def test_health_port(self): args = self._parse(["--health-port", "9999"]) assert args.health_port == 9999 def test_all_options(self): args = self._parse([ "--host", "0.0.0.0", "--port", "9800", "--health-port", "9801", "--data-dir", "/data/i2p", "--reseed", "--setup", "paranoid", "--log-level", "WARNING", ]) assert args.port == 9800 assert args.health_port == 9801 assert args.reseed is True assert args.setup == "paranoid" assert args.log_level == "WARNING"