Files
UmbraAudio/infra/agent_bridge/tests/test_bridge.py
2026-10-18 19:01:04 -07:00

54 lines
2.1 KiB
Python

# Copyright 2026 Umbra Tools (umbratools.com)
# SPDX-License-Identifier: Apache-2.0
from __future__ import annotations
import json
import sys
import tempfile
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[2]))
from agent_bridge.server import BridgeError, BridgeState, MessageStore
class BridgeTests(unittest.TestCase):
def test_password_hashing_and_pairing(self) -> None:
state = BridgeState("correct-value", ttl_seconds=60)
self.assertTrue(state.check_password("192.0.2.1", "correct-value"))
self.assertFalse(state.check_password("192.0.2.1", "wrong-value"))
session, csrf = state.new_session()
self.assertIsNotNone(state.session(session))
self.assertTrue(csrf)
self.assertIsNone(state.session("missing"))
def test_message_queue_is_atomic_and_bounded(self) -> None:
with tempfile.TemporaryDirectory() as directory:
store = MessageStore(Path(directory))
message = store.send_to_mac("hello", "test")
self.assertEqual(store.status()["inbox"], 1)
self.assertEqual(store.poll_for_mac()[0]["body"], "hello")
self.assertEqual(store.status()["processed"], 1)
reply = store.send_to_browser("reply", "test")
self.assertEqual(store.read_for_browser()[0]["id"], reply["id"])
self.assertEqual(store.acknowledge([reply["id"]]), 1)
self.assertEqual(store.status()["delivered"], 1)
def test_message_size_is_limited(self) -> None:
with tempfile.TemporaryDirectory() as directory:
store = MessageStore(Path(directory))
with self.assertRaises(BridgeError):
store.send_to_mac("x" * (64 * 1024 + 1))
def test_invalid_message_file_is_ignored(self) -> None:
with tempfile.TemporaryDirectory() as directory:
store = MessageStore(Path(directory))
(store.inbox / "bad.json").write_text(json.dumps({"not": "a message"}))
self.assertEqual(store.poll_for_mac(), [])
if __name__ == "__main__":
unittest.main()