diff --git a/tests/hermes_cli/test_pairing.py b/tests/hermes_cli/test_pairing.py new file mode 100644 index 00000000000..be8b6f847f1 --- /dev/null +++ b/tests/hermes_cli/test_pairing.py @@ -0,0 +1,43 @@ +from argparse import Namespace +from unittest.mock import patch + +from gateway.pairing import PairingStore +from hermes_cli.pairing import pairing_command + + +def test_cli_listed_request_id_and_bot_code_can_be_approved(tmp_path, capsys): + with patch("gateway.pairing.PAIRING_DIR", tmp_path): + store = PairingStore() + store.generate_code("telegram", "listed-user", "Listed User") + + with patch("gateway.pairing.PairingStore", return_value=store): + pairing_command(Namespace(pairing_action="list")) + list_output = capsys.readouterr().out + request_id = store.list_pending("telegram")[0]["request_id"] + + assert request_id in list_output + + pairing_command( + Namespace( + pairing_action="approve", + platform="telegram", + code=request_id, + ) + ) + request_approval_output = capsys.readouterr().out + + bot_code = store.generate_code("telegram", "code-user", "Code User") + pairing_command( + Namespace( + pairing_action="approve", + platform="telegram", + code=bot_code, + ) + ) + code_approval_output = capsys.readouterr().out + + approved_ids = {entry["user_id"] for entry in store.list_approved("telegram")} + + assert "listed-user" in request_approval_output + assert "code-user" in code_approval_output + assert approved_ids == {"listed-user", "code-user"}