|
1 | 1 | import hashlib
|
| 2 | +from unittest.mock import AsyncMock, patch |
2 | 3 |
|
3 | 4 | import pytest
|
4 |
| -from aleph_message.models import AlephMessage, StoreMessage |
| 5 | +from aleph_message.models import StoreMessage |
5 | 6 | from aleph_message.status import MessageStatus
|
6 | 7 |
|
7 |
| -from aleph.sdk import AuthenticatedAlephHttpClient |
8 | 8 | from aleph.sdk.chains.common import get_fallback_private_key
|
9 | 9 | from aleph.sdk.chains.ethereum import ETHAccount
|
10 | 10 | from aleph.sdk.types import StorageEnum
|
11 | 11 |
|
12 | 12 |
|
13 |
| -@pytest.mark.asyncio |
14 |
| -async def test_upload_with_message(): |
15 |
| - pkey = get_fallback_private_key() |
16 |
| - account = ETHAccount(private_key=pkey) |
| 13 | +@pytest.fixture |
| 14 | +def mock_authenticated_aleph_http_client(): |
| 15 | + with patch( |
| 16 | + "aleph.sdk.AuthenticatedAlephHttpClient", autospec=True |
| 17 | + ) as MockHttpClient: |
| 18 | + pkey = get_fallback_private_key() |
| 19 | + account = ETHAccount(private_key=pkey) |
| 20 | + |
| 21 | + http_session = AsyncMock() |
| 22 | + mock_client = MockHttpClient.return_value |
| 23 | + mock_client.http_session = http_session |
| 24 | + mock_client.account = account |
| 25 | + return mock_client |
| 26 | + |
17 | 27 |
|
| 28 | +@pytest.mark.asyncio |
| 29 | +async def test_upload_with_message(mock_authenticated_aleph_http_client): |
18 | 30 | content = b"Test pyaleph upload\n"
|
19 | 31 | file_hash = hashlib.sha256(content).hexdigest()
|
20 | 32 |
|
21 |
| - async with AuthenticatedAlephHttpClient(account=account, api_server=None) as client: |
22 |
| - message, status = await client.create_store( |
23 |
| - address=account.get_address(), |
24 |
| - file_content=content, |
25 |
| - storage_engine=StorageEnum.storage, |
26 |
| - sync=True, |
27 |
| - ) |
28 |
| - print(message, status) |
29 |
| - |
30 |
| - assert status == MessageStatus.PROCESSED |
31 |
| - assert message.content.item_hash == file_hash |
32 |
| - |
33 |
| - server_content = await client.download_file(file_hash=file_hash) |
34 |
| - assert server_content == content |
35 |
| - |
36 |
| - server_message: AlephMessage = await client.get_message( |
37 |
| - item_hash=message.item_hash, message_type=StoreMessage |
38 |
| - ) |
39 |
| - assert server_message.content.item_hash == file_hash |
| 33 | + message = AsyncMock() |
| 34 | + message.content.item_hash = file_hash |
| 35 | + status = MessageStatus.PROCESSED |
| 36 | + mock_authenticated_aleph_http_client.create_store.return_value = (message, status) |
| 37 | + |
| 38 | + mock_authenticated_aleph_http_client.download_file.return_value = content |
| 39 | + |
| 40 | + mock_authenticated_aleph_http_client.get_message.return_value = message |
| 41 | + |
| 42 | + message, status = await mock_authenticated_aleph_http_client.create_store( |
| 43 | + address=mock_authenticated_aleph_http_client.account.get_address(), |
| 44 | + file_content=content, |
| 45 | + storage_engine=StorageEnum.storage, |
| 46 | + sync=True, |
| 47 | + ) |
| 48 | + |
| 49 | + assert status == MessageStatus.PROCESSED |
| 50 | + assert message.content.item_hash == file_hash |
| 51 | + |
| 52 | + server_content = await mock_authenticated_aleph_http_client.download_file( |
| 53 | + file_hash=file_hash |
| 54 | + ) |
| 55 | + assert server_content == content |
| 56 | + |
| 57 | + server_message = await mock_authenticated_aleph_http_client.get_message( |
| 58 | + item_hash=message.item_hash, message_type=StoreMessage |
| 59 | + ) |
| 60 | + assert server_message.content.item_hash == file_hash |
0 commit comments