refactor(gateway): update gateway parameters to use None as default #169

This commit is contained in:
Abhimanyu Saharan
2026-03-03 01:51:52 +05:30
parent 4ede6965de
commit 94ae59d6aa
7 changed files with 214 additions and 12 deletions

View File

@@ -192,3 +192,93 @@ async def test_openclaw_call_surfaces_scope_error_without_device_fallback(
"status",
config=GatewayConfig(url="ws://gateway.example/ws", token="secret-token"),
)
class _FakeConnectContext:
async def __aenter__(self) -> object:
return object()
async def __aexit__(self, _exc_type: object, _exc: object, _tb: object) -> bool:
return False
@pytest.mark.asyncio
async def test_openclaw_call_once_does_not_pass_ssl_none_for_wss(
monkeypatch: pytest.MonkeyPatch,
) -> None:
captured: dict[str, object] = {}
def _fake_connect(url: str, **kwargs: object) -> _FakeConnectContext:
captured["url"] = url
captured["kwargs"] = kwargs
return _FakeConnectContext()
async def _fake_recv_first(_ws: object) -> None:
return None
async def _fake_ensure_connected(
_ws: object, _first_message: object, _config: GatewayConfig
) -> None:
return None
async def _fake_send_request(_ws: object, _method: str, _params: object) -> object:
return {"ok": True}
monkeypatch.setattr(gateway_rpc.websockets, "connect", _fake_connect)
monkeypatch.setattr(gateway_rpc, "_recv_first_message_or_none", _fake_recv_first)
monkeypatch.setattr(gateway_rpc, "_ensure_connected", _fake_ensure_connected)
monkeypatch.setattr(gateway_rpc, "_send_request", _fake_send_request)
payload = await gateway_rpc._openclaw_call_once(
"status",
None,
config=GatewayConfig(url="wss://gateway.example/ws", allow_insecure_tls=False),
gateway_url="wss://gateway.example/ws",
)
assert payload == {"ok": True}
assert captured["url"] == "wss://gateway.example/ws"
kwargs = captured["kwargs"]
assert isinstance(kwargs, dict)
assert "ssl" not in kwargs
@pytest.mark.asyncio
async def test_openclaw_call_once_passes_ssl_context_for_insecure_wss(
monkeypatch: pytest.MonkeyPatch,
) -> None:
captured: dict[str, object] = {}
def _fake_connect(url: str, **kwargs: object) -> _FakeConnectContext:
captured["url"] = url
captured["kwargs"] = kwargs
return _FakeConnectContext()
async def _fake_recv_first(_ws: object) -> None:
return None
async def _fake_ensure_connected(
_ws: object, _first_message: object, _config: GatewayConfig
) -> None:
return None
async def _fake_send_request(_ws: object, _method: str, _params: object) -> object:
return {"ok": True}
monkeypatch.setattr(gateway_rpc.websockets, "connect", _fake_connect)
monkeypatch.setattr(gateway_rpc, "_recv_first_message_or_none", _fake_recv_first)
monkeypatch.setattr(gateway_rpc, "_ensure_connected", _fake_ensure_connected)
monkeypatch.setattr(gateway_rpc, "_send_request", _fake_send_request)
payload = await gateway_rpc._openclaw_call_once(
"status",
None,
config=GatewayConfig(url="wss://gateway.example/ws", allow_insecure_tls=True),
gateway_url="wss://gateway.example/ws",
)
assert payload == {"ok": True}
assert captured["url"] == "wss://gateway.example/ws"
kwargs = captured["kwargs"]
assert isinstance(kwargs, dict)
assert kwargs.get("ssl") is not None