Files
LangBot/plugins/misc/PowerContext/tests/test_scope.py
T

49 lines
1.4 KiB
Python

from __future__ import annotations
from types import SimpleNamespace
import pytest
from scope import LangBotIdentity, binding_key, session_name_from_session
def test_binding_keys_are_stable_opaque_and_mode_specific() -> None:
identity = LangBotIdentity(
bot_uuid="bot-private-id",
session_name="group_private-id",
sender_id="speaker-private-id",
)
session_key = binding_key(identity, "session")
speaker_key = binding_key(identity, "speaker")
bot_key = binding_key(identity, "bot")
assert session_key["integration"] == "langbot"
assert len(session_key["external_id"]) == 64
assert (
len(
{
session_key["external_id"],
speaker_key["external_id"],
bot_key["external_id"],
}
)
== 3
)
assert "private" not in str([session_key, speaker_key, bot_key])
assert binding_key(identity, "session") == session_key
def test_speaker_mode_requires_sender_identity() -> None:
identity = LangBotIdentity(bot_uuid="bot", session_name="person_1")
with pytest.raises(ValueError, match="sender ID"):
binding_key(identity, "speaker")
def test_session_name_supports_enum_like_launcher_type() -> None:
session = SimpleNamespace(
launcher_type=SimpleNamespace(value="group"),
launcher_id="42",
)
assert session_name_from_session(session) == "group_42"