1- from typing import Callable , Dict
2-
31import pytest
42from aleph_message .models import PostMessage
53
1412async def create_and_forget_post (
1513 account : Account , emitter_node : str , receiver_node : str , channel = TEST_CHANNEL
1614) -> str :
17- async def wait_matching_posts (
18- item_hash : str ,
19- condition : Callable [[Dict ], bool ],
20- timeout : int = 5 ,
21- ):
22- async with AuthenticatedAlephClient (
23- account = account , api_server = receiver_node
24- ) as rx_session :
25- return await try_until (
26- rx_session .get_posts ,
27- condition ,
28- timeout = timeout ,
29- hashes = [item_hash ],
30- )
31-
3215 async with AuthenticatedAlephClient (
3316 account = account , api_server = emitter_node
3417 ) as tx_session :
@@ -38,13 +21,17 @@ async def wait_matching_posts(
3821 channel = "INTEGRATION_TESTS" ,
3922 )
4023
41- # Wait for the message to appear on the receiver. We don't check the values,
42- # they're checked in other integration tests.
43- get_post_response = await wait_matching_posts (
44- post_message .item_hash ,
45- lambda response : len (response ["posts" ]) > 0 ,
46- )
47- print (get_post_response )
24+ async with AuthenticatedAlephClient (
25+ account = account , api_server = receiver_node
26+ ) as rx_session :
27+ await try_until (
28+ rx_session .get_messages ,
29+ lambda response : len (response .messages ) > 0 ,
30+ timeout = 5 ,
31+ message_filter = MessageFilter (
32+ hashes = [post_message .item_hash ],
33+ ),
34+ )
4835
4936 post_hash = post_message .item_hash
5037 reason = "This well thought-out content offends me!"
@@ -56,24 +43,40 @@ async def wait_matching_posts(
5643 reason = reason ,
5744 channel = channel ,
5845 )
59-
6046 assert forget_message .sender == account .get_address ()
6147 assert forget_message .content .reason == reason
6248 assert forget_message .content .hashes == [post_hash ]
6349
64- print (forget_message )
65-
6650 # Wait until the message is forgotten
67- forgotten_posts = await wait_matching_posts (
68- post_hash ,
69- lambda response : "forgotten_by" in response ["posts" ][0 ],
70- timeout = 15 ,
71- )
72-
73- assert len (forgotten_posts ["posts" ]) == 1
74- forgotten_post = forgotten_posts ["posts" ][0 ]
75- assert forgotten_post ["forgotten_by" ] == [forget_message .item_hash ]
76- assert forgotten_post ["item_content" ] is None
51+ async with AuthenticatedAlephClient (
52+ account = account , api_server = receiver_node
53+ ) as rx_session :
54+ await try_until (
55+ rx_session .get_messages ,
56+ lambda response : len (response .messages ) > 0 ,
57+ timeout = 5 ,
58+ message_filter = MessageFilter (
59+ hashes = [forget_message .item_hash ],
60+ ),
61+ )
62+
63+ async with AuthenticatedAlephClient (
64+ account = account , api_server = receiver_node
65+ ) as rx_session :
66+ forgotten_messages = await try_until (
67+ rx_session .get_messages ,
68+ lambda response : len (response .messages ) == 0 ,
69+ timeout = 5 ,
70+ message_filter = MessageFilter (
71+ hashes = [post_hash ],
72+ ),
73+ )
74+ # TODO: Should we now receive any messages? It seems they are completely gone
75+
76+ assert len (forgotten_messages .messages ) == 1
77+ forgotten_post = forgotten_messages .messages [0 ]
78+ assert forgotten_post .forgotten_by == [forget_message .item_hash ]
79+ assert forgotten_post .item_content is None
7780 print (forgotten_post )
7881
7982 return post_hash
0 commit comments