"""Tests for domain models.""" import pytest from bridge.models import ( ActorInfo, BridgeState, HealthCheckConfig, ReconnectPolicy, TunnelConfig, ) class TestBridgeState: def test_all_states_defined(self): states = {s.value for s in BridgeState} assert states == {"stopped", "starting", "connected", "degraded", "reconnecting", "failed"} def test_state_is_string(self): assert BridgeState.STOPPED == "stopped" class TestReconnectPolicy: def test_defaults(self): p = ReconnectPolicy() assert p.max_attempts == 0 assert p.backoff_initial == 5 assert p.backoff_max == 60 def test_custom(self): p = ReconnectPolicy(max_attempts=3, backoff_initial=2, backoff_max=30) assert p.max_attempts == 3 class TestHealthCheckConfig: def test_required_url(self): h = HealthCheckConfig(url="http://127.0.0.1:18000/health") assert h.url == "http://127.0.0.1:18000/health" assert h.interval_seconds == 30 assert h.timeout_seconds == 5 class TestTunnelConfig: def test_minimal(self): t = TunnelConfig( name="test-tunnel", host="host.local", remote_port=18000, local_port=8000, ssh_user="ubuntu", ssh_key="~/.ssh/id_ops", actor="operator.bernd", ) assert t.name == "test-tunnel" assert t.health_check is None assert isinstance(t.reconnect, ReconnectPolicy) def test_with_health_check(self): hc = HealthCheckConfig(url="http://127.0.0.1:18000/health") t = TunnelConfig( name="test", host="h", remote_port=1, local_port=2, ssh_user="u", ssh_key="k", actor="a", health_check=hc, ) assert t.health_check is hc class TestActorInfo: def test_fields(self): a = ActorInfo(name="operator.bernd", actor_class="human", description="Bernd") assert a.name == "operator.bernd" assert a.actor_class == "human"