Files
adaptive-multi-protocol-bro…/tests/test_route_helper.py
T

87 lines
3.2 KiB
Python

from __future__ import annotations
from pathlib import Path
import tempfile
import unittest
from unittest.mock import patch
from ampbrowser.config import AppConfig
from ampbrowser.route_helper import handle_helper_message
from ampbrowser.transport_manager import ManagedTransportResult
class RouteHelperTest(unittest.TestCase):
def test_status_routes_url_to_transport(self) -> None:
result = ManagedTransportResult(
transport="tor",
provider="arti",
status="ready",
endpoint="socks5://127.0.0.1:9050",
owned=True,
pid=1234,
state_dir=".ampb/transports/tor",
command=("/tmp/arti", "proxy"),
message="using running AMPB-owned tor",
provider_source="bundled-sidecar",
)
with tempfile.TemporaryDirectory() as tmp:
with patch("ampbrowser.route_helper.transport_status", return_value=result) as status:
response = handle_helper_message(
{"action": "status", "url": "http://example.onion/"},
root=Path(tmp),
config=AppConfig(transport_modes={}),
)
self.assertTrue(response["ok"])
self.assertTrue(response["ready"])
self.assertEqual("tor", response["transport"])
self.assertEqual("bundled-sidecar", response["provider_source"])
status.assert_called_once()
def test_ensure_starts_i2p_transport(self) -> None:
result = ManagedTransportResult(
transport="i2p",
provider="i2pd",
status="started",
endpoint="http://127.0.0.1:4444",
owned=True,
pid=1234,
state_dir=".ampb/transports/i2p",
command=("/opt/i2pd",),
message="started managed i2pd transport",
provider_source="system-package",
setup_hint="Install i2pd with Homebrew: brew install i2pd.",
install_command=("brew", "install", "i2pd"),
)
with tempfile.TemporaryDirectory() as tmp:
with patch("ampbrowser.route_helper.ensure_transport_ready", return_value=result) as ensure:
response = handle_helper_message(
{"action": "ensure", "transport": "i2p", "url": "http://example.b32.i2p/"},
root=Path(tmp),
config=AppConfig(transport_modes={}),
)
self.assertTrue(response["ok"])
self.assertTrue(response["ready"])
self.assertEqual("started", response["status"])
self.assertEqual("Install i2pd with Homebrew: brew install i2pd.", response["setup_hint"])
self.assertEqual(["brew", "install", "i2pd"], response["install_command"])
ensure.assert_called_once()
def test_blocks_unsupported_routes(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
response = handle_helper_message(
{"action": "ensure", "url": "https://example.com/"},
root=Path(tmp),
config=AppConfig(transport_modes={}),
)
self.assertFalse(response["ok"])
self.assertEqual("unsupported-transport", response["status"])
if __name__ == "__main__":
unittest.main()