mirror of
https://github.com/Such-Software/adaptive-multi-protocol-browser.git
synced 2026-10-17 14:31:46 +02:00
87 lines
3.2 KiB
Python
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()
|