36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
import asyncio
|
|
import json
|
|
from websockets import connect
|
|
import httpx
|
|
|
|
async def test():
|
|
print("=== Test Connect Session ===", flush=True)
|
|
|
|
# Login
|
|
async with httpx.AsyncClient() as client:
|
|
r = await client.post('http://localhost:3030/auth/login',
|
|
json={'username': 'admin', 'password': 'admin'})
|
|
token = r.json()['token']
|
|
print(f"Got token", flush=True)
|
|
|
|
# Connect and list sessions
|
|
async with connect('ws://localhost:3030/ws/chat') as ws:
|
|
await ws.send(json.dumps({'token': token}))
|
|
init = json.loads(await ws.recv())
|
|
print(f"Init: {init.get('type')}", flush=True)
|
|
sessions = init.get('sessions', [])
|
|
print(f"Sessions: {len(sessions)}", flush=True)
|
|
for s in sessions:
|
|
print(f" - {s['name']} ({s['session_id']})", flush=True)
|
|
|
|
if sessions:
|
|
sid = sessions[0]['session_id']
|
|
print(f"\nConnecting to: {sid}", flush=True)
|
|
await ws.send(json.dumps({'type': 'connect_session', 'session_id': sid}))
|
|
result = json.loads(await ws.recv())
|
|
print(f"Result: {result}", flush=True)
|
|
else:
|
|
print("No sessions to connect to", flush=True)
|
|
|
|
asyncio.run(test())
|