ops-bridge/tests
tegwick 2461ac3c70 Reject duplicate local_port among local forwards; document the two meanings
local_port means different things per direction, and conflating them is easy:
a `direction: local` tunnel binds it here (-L local_port:remote_host:remote_port),
while a reverse tunnel — the default — uses it as the *destination* on the
workstation (-R remote_port:remote_host:local_port) and binds on the remote.

Two local forwards on one port do not fail loudly: whichever binds first wins
and the losers reconnect forever, so the map reads healthy while the port
answers from a different machine than the one asked for. Reject that at config
load. Reverse tunnels stay exempt by design — every state-hub-* reverse tunnel
targets 8000 on purpose, so each remote box reaches this hub at its own 18000.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 19:31:19 +02:00
..
__init__.py feat: implement OpsBridge CLI (BRIDGE-WP-0001) 2026-03-12 01:40:08 +00:00
conftest.py feat(directive): implement BRIDGE-WP-0004 AccessManagementDirective alignment 2026-05-15 09:38:29 +02:00
test_audit.py feat(directive): implement BRIDGE-WP-0004 AccessManagementDirective alignment 2026-05-15 09:38:29 +02:00
test_catalog_cli.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_integration.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_loader.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_models.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_resolver.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_validator.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_cleanup.py feat(restart): route reverse tunnels through stale-forward cleanup 2026-06-21 20:12:13 +02:00
test_cli.py feat(restart): route reverse tunnels through stale-forward cleanup 2026-06-21 20:12:13 +02:00
test_config.py Reject duplicate local_port among local forwards; document the two meanings 2026-08-19 19:31:19 +02:00
test_coverage_completeness.py test(BRIDGE-WP-0003): add sentinel self-validation for meta-test + MCP section in README 2026-03-12 21:19:58 +01:00
test_diagnostics.py Fixing bridge to haskelseed 2026-06-14 19:46:06 +02:00
test_health.py feat: implement OpsBridge CLI (BRIDGE-WP-0001) 2026-03-12 01:40:08 +00:00
test_integration.py feat(directive): implement BRIDGE-WP-0004 AccessManagementDirective alignment 2026-05-15 09:38:29 +02:00
test_manager.py tunnels: optional remote_host forward destination (default 127.0.0.1) 2026-07-02 14:18:18 +02:00
test_mcp.py feat(restart): route reverse tunnels through stale-forward cleanup 2026-06-21 20:12:13 +02:00
test_models.py feat(directive): implement BRIDGE-WP-0004 AccessManagementDirective alignment 2026-05-15 09:38:29 +02:00
test_skill.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_state.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00