54 lines
2.1 KiB
Python
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()
|