generated from coulomb/repo-seed
Fixing bridge to haskelseed
This commit is contained in:
@@ -6,7 +6,11 @@ from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from bridge.diagnostics import check_all_tunnels, check_tunnel
|
||||
from bridge.diagnostics import (
|
||||
_remote_port_probe_command,
|
||||
check_all_tunnels,
|
||||
check_tunnel,
|
||||
)
|
||||
from bridge.models import BridgeState, TunnelConfig
|
||||
from bridge.state import StateManager
|
||||
|
||||
@@ -32,6 +36,14 @@ def state_mgr(tmp_path):
|
||||
|
||||
|
||||
class TestCheckTunnel:
|
||||
def test_remote_port_probe_has_minimal_host_fallback(self):
|
||||
"""Remote probe supports minimal hosts without ss/netstat."""
|
||||
command = _remote_port_probe_command(18000)
|
||||
assert "command -v ss" in command
|
||||
assert "command -v netstat" in command
|
||||
assert "/proc/net/tcp" in command
|
||||
assert "/proc/net/tcp6" in command
|
||||
|
||||
def test_no_pid(self, tcfg, state_mgr):
|
||||
"""No PID file → ssh_process='no_pid', ok=False."""
|
||||
with patch("bridge.diagnostics.subprocess.run") as mock_run:
|
||||
@@ -83,6 +95,29 @@ class TestCheckTunnel:
|
||||
assert result.remote_port == "closed"
|
||||
assert result.ok is False
|
||||
|
||||
def test_local_direction_checks_local_port(self, tcfg, state_mgr):
|
||||
"""Local tunnels verify the local listener instead of a remote -R port."""
|
||||
local_cfg = TunnelConfig(
|
||||
name="local-tunnel",
|
||||
host="haskelseed.local",
|
||||
remote_port=1234,
|
||||
local_port=11234,
|
||||
ssh_user="root",
|
||||
ssh_key="~/.ssh/id_ops",
|
||||
actor="adm-bernd",
|
||||
direction="local",
|
||||
)
|
||||
state_mgr.write_pid("local-tunnel", 12345)
|
||||
with (
|
||||
patch("bridge.diagnostics._pid_alive", return_value=True),
|
||||
patch("bridge.diagnostics._probe_local_port", return_value="listening"),
|
||||
patch("bridge.diagnostics.subprocess.run") as mock_run,
|
||||
):
|
||||
result = check_tunnel(local_cfg, state_mgr)
|
||||
mock_run.assert_not_called()
|
||||
assert result.remote_port == "listening"
|
||||
assert result.ok is True
|
||||
|
||||
def test_ssh_timeout(self, tcfg, state_mgr):
|
||||
"""SSH probe timeout → remote_port='error:timeout'."""
|
||||
state_mgr.write_pid("test-tunnel", 12345)
|
||||
|
||||
Reference in New Issue
Block a user