|
1 | 1 | import asyncio |
| 2 | +import json |
| 3 | +from hashlib import sha256 |
2 | 4 |
|
3 | 5 | import pytest |
| 6 | +from aleph_message.models import AlephMessage, PostMessage, PostContent, MessageType, Chain |
4 | 7 |
|
5 | 8 | from aleph.sdk.cache import MessageCache |
6 | 9 | from aleph.sdk.chains.ethereum import get_fallback_account |
@@ -46,15 +49,27 @@ async def test_message_cache(): |
46 | 49 |
|
47 | 50 | @pytest.mark.asyncio |
48 | 51 | async def test_message_cache_listener(): |
49 | | - auth_session = AuthenticatedAlephClient(get_fallback_account(), settings.API_HOST) |
| 52 | + async def mock_message_stream(): |
| 53 | + for i in range(3): |
| 54 | + content = PostContent( |
| 55 | + content={"hello": f"world{i}"}, |
| 56 | + type="test", |
| 57 | + address=get_fallback_account().get_address(), |
| 58 | + time=0, |
| 59 | + ) |
| 60 | + message = PostMessage( |
| 61 | + sender=get_fallback_account().get_address(), |
| 62 | + item_hash=sha256(json.dumps(content.dict()).encode()).hexdigest(), |
| 63 | + chain=Chain.ETH.value, |
| 64 | + type=MessageType.post.value, |
| 65 | + item_type="inline", |
| 66 | + time=0, |
| 67 | + content=content, |
| 68 | + item_content=json.dumps(content.dict()), |
| 69 | + ) |
| 70 | + yield message |
50 | 71 | cache = MessageCache() |
51 | | - # test listen until first message |
52 | | - coro = cache.listen_to(auth_session.watch_messages()) |
53 | | - task = asyncio.create_task(coro) |
54 | | - before = len(cache) |
55 | | - # send message |
56 | | - await auth_session.create_aggregate("test", {"test": "test"}) |
57 | | - await asyncio.sleep(2) # wait for message to be received |
58 | | - task.cancel() |
59 | | - after = len(cache) |
60 | | - assert after > before |
| 72 | + # test listener |
| 73 | + coro = cache.listen_to(mock_message_stream()) |
| 74 | + await coro |
| 75 | + assert len(cache) == 3 |
0 commit comments