25 lines
1.2 KiB
Python
25 lines
1.2 KiB
Python
|
|
import asyncio
|
||
|
|
import json
|
||
|
|
|
||
|
|
from tamq.service import Service
|
||
|
|
from tamq.store import Store
|
||
|
|
|
||
|
|
|
||
|
|
def test_register_and_send(tmp_path):
|
||
|
|
async def run():
|
||
|
|
path = tmp_path / "tamq.sock"
|
||
|
|
service = Service(path, Store(tmp_path / "queue.sqlite3"))
|
||
|
|
server = await asyncio.start_unix_server(service.handle, path=str(path))
|
||
|
|
try:
|
||
|
|
reader, writer = await asyncio.open_unix_connection(str(path))
|
||
|
|
writer.write((json.dumps({"op": "register", "endpoint_id": "tmux-amq-42", "pid": 42, "session": "tamq", "repos": ["net-kingdom"]}) + "\n").encode()); await writer.drain()
|
||
|
|
assert json.loads(await reader.readline())["ok"] is True
|
||
|
|
writer.close(); await writer.wait_closed()
|
||
|
|
reader, writer = await asyncio.open_unix_connection(str(path))
|
||
|
|
writer.write(b'{"op":"send","sender_repo":"net-kingdom","target_repo":"railiance-platform","body":"hello"}\n'); await writer.drain()
|
||
|
|
assert json.loads(await reader.readline())["state"] == "pending"
|
||
|
|
writer.close(); await writer.wait_closed()
|
||
|
|
finally:
|
||
|
|
server.close(); await server.wait_closed(); service.close()
|
||
|
|
asyncio.run(run())
|