feat: publish CodexPi contest snapshot
Some checks are pending
Qualité / tests (push) Waiting to run
Some checks are pending
Qualité / tests (push) Waiting to run
This commit is contained in:
34
tests/test_websocket.py
Normal file
34
tests/test_websocket.py
Normal file
@@ -0,0 +1,34 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user