Skip to content

Commit f0338e5

Browse files
MHHukiewitzhoh
authored andcommitted
fix integration tests
1 parent e05cb40 commit f0338e5

File tree

3 files changed

+45
-34
lines changed

3 files changed

+45
-34
lines changed

tests/integration/itest_forget.py

+33-32
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1+
import asyncio
2+
from typing import Tuple
3+
14
import pytest
2-
from aleph_message.models import PostMessage
5+
from aleph_message.models import ItemHash
36

47
from aleph.sdk.client import AuthenticatedAlephClient
58
from aleph.sdk.models.message import MessageFilter
69
from aleph.sdk.types import Account
710

811
from .config import REFERENCE_NODE, TARGET_NODE, TEST_CHANNEL
9-
from .toolkit import try_until
12+
from .toolkit import has_messages, has_no_messages, try_until
1013

1114

1215
async def create_and_forget_post(
1316
account: Account, emitter_node: str, receiver_node: str, channel=TEST_CHANNEL
14-
) -> str:
17+
) -> Tuple[ItemHash, ItemHash]:
1518
async with AuthenticatedAlephClient(
1619
account=account, api_server=emitter_node
1720
) as tx_session:
@@ -26,7 +29,7 @@ async def create_and_forget_post(
2629
) as rx_session:
2730
await try_until(
2831
rx_session.get_messages,
29-
lambda response: len(response.messages) > 0,
32+
has_messages,
3033
timeout=5,
3134
message_filter=MessageFilter(
3235
hashes=[post_message.item_hash],
@@ -46,40 +49,31 @@ async def create_and_forget_post(
4649
assert forget_message.sender == account.get_address()
4750
assert forget_message.content.reason == reason
4851
assert forget_message.content.hashes == [post_hash]
52+
forget_hash = forget_message.item_hash
4953

5054
# Wait until the message is forgotten
5155
async with AuthenticatedAlephClient(
5256
account=account, api_server=receiver_node
5357
) as rx_session:
5458
await try_until(
5559
rx_session.get_messages,
56-
lambda response: len(response.messages) > 0,
60+
has_messages,
5761
timeout=5,
5862
message_filter=MessageFilter(
59-
hashes=[forget_message.item_hash],
63+
hashes=[forget_hash],
6064
),
6165
)
6266

63-
async with AuthenticatedAlephClient(
64-
account=account, api_server=receiver_node
65-
) as rx_session:
66-
forgotten_messages = await try_until(
67+
await try_until(
6768
rx_session.get_messages,
68-
lambda response: len(response.messages) == 0,
69+
has_no_messages,
6970
timeout=5,
7071
message_filter=MessageFilter(
7172
hashes=[post_hash],
7273
),
7374
)
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
80-
print(forgotten_post)
8175

82-
return post_hash
76+
return post_hash, forget_hash
8377

8478

8579
@pytest.mark.asyncio
@@ -88,7 +82,7 @@ async def test_create_and_forget_post_on_target(fixture_account):
8882
Create a post on the target node, then forget it and check that the change is propagated
8983
to the reference node.
9084
"""
91-
_ = await create_and_forget_post(fixture_account, TARGET_NODE, REFERENCE_NODE)
85+
_, _ = await create_and_forget_post(fixture_account, TARGET_NODE, REFERENCE_NODE)
9286

9387

9488
@pytest.mark.asyncio
@@ -97,7 +91,7 @@ async def test_create_and_forget_post_on_reference(fixture_account):
9791
Create a post on the reference node, then forget it and check that the change is propagated
9892
to the target node.
9993
"""
100-
_ = await create_and_forget_post(fixture_account, REFERENCE_NODE, TARGET_NODE)
94+
_, _ = await create_and_forget_post(fixture_account, REFERENCE_NODE, TARGET_NODE)
10195

10296

10397
@pytest.mark.asyncio
@@ -107,26 +101,33 @@ async def test_forget_a_forget_message(fixture_account):
107101
"""
108102

109103
# TODO: this test should be moved to the PyAleph API tests, once a framework is in place.
110-
post_hash = await create_and_forget_post(fixture_account, TARGET_NODE, TARGET_NODE)
104+
post_hash, forget_hash = await create_and_forget_post(
105+
fixture_account, TARGET_NODE, REFERENCE_NODE
106+
)
111107
async with AuthenticatedAlephClient(
112108
account=fixture_account, api_server=TARGET_NODE
113-
) as session:
114-
get_post_message: PostMessage = await session.get_message(post_hash)
115-
116-
forget_message_hash = get_post_message.forgotten_by[0]
117-
forget_message, forget_status = await session.forget(
118-
hashes=[forget_message_hash],
109+
) as tx_session:
110+
forget_message, forget_status = await tx_session.forget(
111+
hashes=[forget_hash],
119112
reason="I want to remember this post. Maybe I can forget I forgot it?",
120113
channel=TEST_CHANNEL,
121114
)
122115

123116
print(forget_message)
124117

125-
get_forget_message_response = await session.get_messages(
118+
# wait 5 seconds
119+
await asyncio.sleep(5)
120+
121+
async with AuthenticatedAlephClient(
122+
account=fixture_account, api_server=REFERENCE_NODE
123+
) as rx_session:
124+
get_forget_message_response = await try_until(
125+
rx_session.get_messages,
126+
has_messages,
127+
timeout=5,
126128
message_filter=MessageFilter(
127-
hashes=[forget_message_hash],
128-
channels=[TEST_CHANNEL],
129-
)
129+
hashes=[forget_hash],
130+
),
130131
)
131132
assert len(get_forget_message_response.messages) == 1
132133
forget_message = get_forget_message_response.messages[0]

tests/integration/itest_posts.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from aleph.sdk.client import AuthenticatedAlephClient
44
from aleph.sdk.models.message import MessageFilter
5-
from tests.integration.toolkit import try_until
5+
from tests.integration.toolkit import has_messages, try_until
66

77
from .config import REFERENCE_NODE, TARGET_NODE
88

@@ -25,7 +25,7 @@ async def create_message_on_target(account, emitter_node: str, receiver_node: st
2525
) as rx_session:
2626
responses = await try_until(
2727
rx_session.get_messages,
28-
lambda response: len(response.messages) > 0,
28+
has_messages,
2929
timeout=5,
3030
message_filter=MessageFilter(
3131
hashes=[post_message.item_hash],

tests/integration/toolkit.py

+10
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
import time
33
from typing import Awaitable, Callable, TypeVar
44

5+
from aleph.sdk.models.message import MessagesResponse
6+
57
T = TypeVar("T")
68

79

@@ -23,3 +25,11 @@ async def try_until(
2325
await asyncio.sleep(time_between_attempts)
2426
else:
2527
raise TimeoutError(f"No success in {timeout} seconds.")
28+
29+
30+
def has_messages(response: MessagesResponse) -> bool:
31+
return len(response.messages) > 0
32+
33+
34+
def has_no_messages(response: MessagesResponse) -> bool:
35+
return len(response.messages) == 0

0 commit comments

Comments
 (0)