From 6b11221205df8f21eff67d3392ebcad447283db4 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Fri, 3 Feb 2023 11:32:44 +0200 Subject: [PATCH] test: direct messages --- tests/fixture/clients.json | 19 +++++++++++++++++++ tests/test_clients.py | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/tests/fixture/clients.json b/tests/fixture/clients.json index 66818bc..e5bfadf 100644 --- a/tests/fixture/clients.json +++ b/tests/fixture/clients.json @@ -92,6 +92,12 @@ "content": "BwstXDkQJAHnLOrWFzBRDHdMoF4hoXSCwgmR+K2uw237yss/i639rpR2iOIYJP4z?iv=5pTRQh6NBKfe1hyhwh2WEw==", "sig": "5da31b8a51dcc9fc9665db6199084696b705fc415e1be684b82fe39f3cbd271c2d707fd5a532232205a016e99ed1ef12abdacb52d139d7f5746cb693de71e5aa" } + ], + "direct_message01_response": [ + "ok", + "28c96b6e80681c18a690e0e0dc6ca4e72b9d291d1d2576bc8949a07bb4bee225", + true, + "" ] }, "bob": { @@ -235,6 +241,19 @@ "15f6e6bd6cb538167d4430ea6bd7c0cfb99b400ca3e8879a114e90f74b3f20b2", true, "" + ], + "subscribe_to_direct_messages": [ + "REQ", + "notifications:d685447c43c7c18dbbea61923cf0b63e1ab46bed", + { + "kinds": [ + 4 + ], + "#p": [ + "d685447c43c7c18dbbea61923cf0b63e1ab46bed69b153a48279a95c40bd414a" + ], + "limit": 400 + } ] } } \ No newline at end of file diff --git a/tests/test_clients.py b/tests/test_clients.py index 601b548..8fd46f7 100644 --- a/tests/test_clients.py +++ b/tests/test_clients.py @@ -54,6 +54,7 @@ async def test_alice_and_bob(): await bob_writes_to_alice(ws_alice, ws_bob) + await alice_writes_to_bob(ws_alice, ws_bob) def init_clients(): client_manager = NostrClientManager() @@ -210,7 +211,7 @@ async def bob_writes_to_alice(ws_alice: MockWebSocket, ws_bob: MockWebSocket): await ws_bob.wire_mock_data(bob["direct_message01"]) await asyncio.sleep(0.1) - + assert ( len(ws_bob.sent_messages) == 1 ), "Bob: Expected confirmation for direct message" @@ -227,3 +228,37 @@ async def bob_writes_to_alice(ws_alice: MockWebSocket, ws_bob: MockWebSocket): bob["direct_message01"][1], ] ), "Alice: Wrong direct message received" + + +async def alice_writes_to_bob(ws_alice, ws_bob): + ws_alice.sent_messages.clear() + ws_bob.sent_messages.clear() + + await ws_alice.wire_mock_data(alice["direct_message01"]) + await asyncio.sleep(0.1) + + assert ( + len(ws_alice.sent_messages) == 1 + ), "Alice: Expected confirmation for direct message" + assert ws_alice.sent_messages[0] == dumps( + alice["direct_message01_response"] + ), "Alice: Wrong confirmation for direct message" + assert len(ws_bob.sent_messages) == 0, "Bob: no subscription, no message" + + await ws_bob.wire_mock_data(bob["subscribe_to_direct_messages"]) + await asyncio.sleep(0.5) + + assert ( + len(ws_bob.sent_messages) == 2 + ), "Bob: Receive message and EOSE after subscribe" + + assert ws_bob.sent_messages[0] == dumps( + [ + "EVENT", + "notifications:d685447c43c7c18dbbea61923cf0b63e1ab46bed", + alice["direct_message01"][1], + ] + ), "Bob: Finaly receives direct message from Alice" + assert ws_bob.sent_messages[1] == dumps( + ["EOSE", "notifications:d685447c43c7c18dbbea61923cf0b63e1ab46bed"] + ), "Bob: Received all stored events"