mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-31 04:45:23 +08:00
49 lines
1.4 KiB
Python
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"
|