Files
codexpi/tests/test_websocket.py

35 lines
1.5 KiB
Python
Raw Normal View History

2026-11-14 20:23:59 +01:00
def _project_and_conversation(logged_in):
client, _, projects, _, headers = logged_in
repo = projects / "socket-repo"
repo.mkdir()
project = client.post("/api/projects", headers=headers, json={"name": "socket", "path": str(repo)}).json()
conversation = client.post(f"/api/projects/{project['id']}/conversations", headers=headers, json={"title": "Diagnostic"}).json()
return client, conversation
def test_conversation_websocket_restores_state(logged_in):
client, conversation = _project_and_conversation(logged_in)
with client.websocket_connect(f"/ws/conversations/{conversation['id']}", headers={"origin": "http://testserver"}) as socket:
event = socket.receive_json()
assert event["type"] == "state"
assert event["conversation"]["title"] == "Diagnostic"
def test_websocket_rejects_unknown_conversation(logged_in):
client, *_ = logged_in
try:
with client.websocket_connect("/ws/conversations/00000000-0000-0000-0000-000000000000", headers={"origin": "http://testserver"}):
assert False, "connection should be rejected"
except Exception:
pass
def test_websocket_requires_authentication(app_env):
client, *_ = app_env
with pytest.raises(WebSocketDisconnect):
with client.websocket_connect("/ws/conversations/00000000-0000-0000-0000-000000000000", headers={"origin": "http://testserver"}):
pass
import pytest
from starlette.websockets import WebSocketDisconnect