Clean architecture (core use cases + infra gateways), X25519/AES-GCM E2E encryption, tkinter GUI, and a pytest suite. 45 tests passing.
32 lines
966 B
Python
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
|