neotalk/tests/use_cases/test_remove_peer.py
Andros Fenollosa bfd8b510b6 Initial neotalk: P2P encrypted chat over UDP discovery + TCP streaming
Clean architecture (core use cases + infra gateways), X25519/AES-GCM E2E
encryption, tkinter GUI, and a pytest suite. 45 tests passing.
2026-08-21 09:16:07 +02:00

32 lines
966 B
Python

"""Tests for the remove_peer use case."""
from neotalk.core.entities.peer import Peer
from neotalk.core.entities.responses import ResponseTypes
from neotalk.core.use_cases.roster.remove_peer import remove_peer_use_case
def _peer(peer_id: str) -> Peer:
return Peer(peer_id, peer_id, "host", 1, b"k", 0.0)
def test_remove_peer_drops_the_peer():
# Given a roster with two peers
roster = {"a": _peer("a"), "b": _peer("b")}
# When one says goodbye
response = remove_peer_use_case(roster, "a")
# Then only the other remains
assert response["type"] == ResponseTypes.SUCCESS
assert set(response["data"]["roster"]) == {"b"}
def test_remove_unknown_peer_is_a_parameters_error():
# Given a roster without the peer
roster = {"a": _peer("a")}
# When removing an unknown id
response = remove_peer_use_case(roster, "ghost")
# Then it is a parameters error
assert response["type"] == ResponseTypes.PARAMETERS_ERROR