1
- from typing import Callable , Dict
2
-
3
1
import pytest
4
2
from aleph_message .models import PostMessage
5
3
14
12
async def create_and_forget_post (
15
13
account : Account , emitter_node : str , receiver_node : str , channel = TEST_CHANNEL
16
14
) -> 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
-
32
15
async with AuthenticatedAlephClient (
33
16
account = account , api_server = emitter_node
34
17
) as tx_session :
@@ -38,13 +21,17 @@ async def wait_matching_posts(
38
21
channel = "INTEGRATION_TESTS" ,
39
22
)
40
23
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
+ )
48
35
49
36
post_hash = post_message .item_hash
50
37
reason = "This well thought-out content offends me!"
@@ -56,24 +43,40 @@ async def wait_matching_posts(
56
43
reason = reason ,
57
44
channel = channel ,
58
45
)
59
-
60
46
assert forget_message .sender == account .get_address ()
61
47
assert forget_message .content .reason == reason
62
48
assert forget_message .content .hashes == [post_hash ]
63
49
64
- print (forget_message )
65
-
66
50
# 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
77
80
print (forgotten_post )
78
81
79
82
return post_hash
0 commit comments