mirror of
https://github.com/Such-Software/adaptive-multi-protocol-browser.git
synced 2026-10-18 15:01:26 +02:00
Add transport adapters and candidates
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from ampbrowser.adapters import ADAPTERS, adapter_for
|
||||
from ampbrowser.transports import inspect_transport
|
||||
|
||||
|
||||
class AdaptersTest(unittest.TestCase):
|
||||
def test_known_adapters_are_registered(self) -> None:
|
||||
self.assertEqual({"tor", "i2p", "reticulum", "gemini"}, set(ADAPTERS))
|
||||
|
||||
def test_gemini_adapter_is_builtin_ready(self) -> None:
|
||||
status = inspect_transport("gemini")
|
||||
|
||||
self.assertIsNotNone(status)
|
||||
self.assertTrue(status.installed)
|
||||
self.assertTrue(status.running)
|
||||
self.assertTrue(status.adoptable)
|
||||
|
||||
def test_tor_adapter_setup_steps_respect_ownership_language(self) -> None:
|
||||
adapter = adapter_for("tor")
|
||||
|
||||
self.assertIsNotNone(adapter)
|
||||
self.assertEqual("stop only AMPB-owned Tor daemon", adapter.stop_policy)
|
||||
self.assertEqual(("install Tor provider", "start managed Tor daemon", "wait for socks5://127.0.0.1:9050"), adapter.setup_steps(installed=False, platform="desktop"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -0,0 +1,25 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from ampbrowser.candidates import CANDIDATE_TRANSPORTS
|
||||
|
||||
|
||||
class CandidateTransportsTest(unittest.TestCase):
|
||||
def test_candidate_matrix_contains_next_evaluation_targets(self) -> None:
|
||||
by_name = {candidate.name: candidate for candidate in CANDIDATE_TRANSPORTS}
|
||||
|
||||
self.assertIn("ipfs", by_name)
|
||||
self.assertIn("yggdrasil", by_name)
|
||||
self.assertEqual("next-evaluate", by_name["ipfs"].status)
|
||||
self.assertEqual("next-evaluate", by_name["yggdrasil"].status)
|
||||
|
||||
def test_nostr_is_not_classified_as_page_transport(self) -> None:
|
||||
by_name = {candidate.name: candidate for candidate in CANDIDATE_TRANSPORTS}
|
||||
|
||||
self.assertEqual("discovery-layer", by_name["nostr"].status)
|
||||
self.assertIn("Not a web-page transport", by_name["nostr"].note)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -15,6 +15,8 @@ class DocsGenTest(unittest.TestCase):
|
||||
|
||||
self.assertEqual(
|
||||
{
|
||||
Path("docs/generated/adapters.md"),
|
||||
Path("docs/generated/candidate-transports.md"),
|
||||
Path("docs/generated/platform-capabilities.md"),
|
||||
Path("docs/generated/route-rules.md"),
|
||||
Path("docs/generated/transports.md"),
|
||||
|
||||
@@ -33,7 +33,10 @@ class PrepareOpenTest(unittest.TestCase):
|
||||
|
||||
self.assertEqual("consent-required", plan.status)
|
||||
self.assertFalse(plan.consent_granted)
|
||||
self.assertEqual(("install i2p", "start managed i2p", "wait for http://127.0.0.1:4444"), plan.setup_steps)
|
||||
self.assertEqual(
|
||||
("install I2P provider", "start managed I2P router", "wait for http://127.0.0.1:4444"),
|
||||
plan.setup_steps,
|
||||
)
|
||||
self.assertIn("install and start", plan.message)
|
||||
|
||||
def test_yes_approves_setup_without_executing_it(self) -> None:
|
||||
@@ -53,7 +56,7 @@ class PrepareOpenTest(unittest.TestCase):
|
||||
self.assertEqual("setup-approved", plan.status)
|
||||
self.assertTrue(plan.dry_run)
|
||||
self.assertTrue(plan.consent_granted)
|
||||
self.assertEqual(("start managed tor", "wait for socks5://127.0.0.1:9050"), plan.setup_steps)
|
||||
self.assertEqual(("start managed Tor daemon", "wait for socks5://127.0.0.1:9050"), plan.setup_steps)
|
||||
|
||||
def test_custom_state_dir_changes_profile_path(self) -> None:
|
||||
config = AppConfig(state_dir=".local/ampb", transport_modes={})
|
||||
@@ -80,7 +83,7 @@ class PrepareOpenTest(unittest.TestCase):
|
||||
self.assertEqual(
|
||||
(
|
||||
"install or enable Android i2p provider",
|
||||
"start visible Android foreground service",
|
||||
"start visible Android foreground service for i2p",
|
||||
"start managed Android i2p transport",
|
||||
"wait for http://127.0.0.1:4444",
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user