honcho/tests/sdk/test_peer.py

77 lines
2.5 KiB
Python

import pytest
from sdks.python.src.honcho.async_client.client import AsyncHoncho
from sdks.python.src.honcho.async_client.peer import AsyncPeer
from sdks.python.src.honcho.client import Honcho
from sdks.python.src.honcho.peer import Peer
@pytest.mark.asyncio
async def test_peer_metadata(client_fixture: tuple[Honcho | AsyncHoncho, str]):
"""
Tests creation and metadata operations for peers.
"""
honcho_client, client_type = client_fixture
if client_type == "async":
assert isinstance(honcho_client, AsyncHoncho)
peer = await honcho_client.peer(id="test-peer-meta")
assert isinstance(peer, AsyncPeer)
metadata = await peer.get_metadata()
assert metadata == {}
await peer.set_metadata({"foo": "bar"})
metadata = await peer.get_metadata()
assert metadata == {"foo": "bar"}
else:
assert isinstance(honcho_client, Honcho)
peer = honcho_client.peer(id="test-peer-meta")
assert isinstance(peer, Peer)
metadata = peer.get_metadata()
assert metadata == {}
peer.set_metadata({"foo": "bar"})
metadata = peer.get_metadata()
assert metadata == {"foo": "bar"}
@pytest.mark.asyncio
async def test_peer_get_sessions(client_fixture: tuple[Honcho | AsyncHoncho, str]):
"""
Tests retrieving the sessions a peer is a member of.
"""
honcho_client, client_type = client_fixture
if client_type == "async":
assert isinstance(honcho_client, AsyncHoncho)
peer = await honcho_client.peer(id="test-peer-sessions")
session1 = await honcho_client.session(id="s1")
session2 = await honcho_client.session(id="s2")
await session1.add_peers(peer)
await session2.add_peers(peer)
sessions_page = await peer.get_sessions()
sessions = sessions_page.items
assert len(sessions) == 2
session_ids = {s.id for s in sessions}
assert "s1" in session_ids
assert "s2" in session_ids
else:
assert isinstance(honcho_client, Honcho)
peer = honcho_client.peer(id="test-peer-sessions")
session1 = honcho_client.session(id="s1")
session2 = honcho_client.session(id="s2")
session1.add_peers(peer)
session2.add_peers(peer)
sessions_page = peer.get_sessions()
sessions = list(sessions_page)
assert len(sessions) == 2
session_ids = {s.id for s in sessions}
assert "s1" in session_ids
assert "s2" in session_ids