mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 01:40:15 +08:00
74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
"""Tests for protocol package exports."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import astrbot_sdk.protocol as protocol_module
|
|
|
|
from astrbot_sdk.protocol import (
|
|
CapabilityDescriptor,
|
|
CommandTrigger,
|
|
ErrorPayload,
|
|
EventMessage,
|
|
HandlerDescriptor,
|
|
InitializeMessage,
|
|
MessageTrigger,
|
|
PeerInfo,
|
|
ProtocolMessage,
|
|
ResultMessage,
|
|
ScheduleTrigger,
|
|
parse_message,
|
|
)
|
|
from astrbot_sdk.protocol.descriptors import BUILTIN_CAPABILITY_SCHEMAS
|
|
from astrbot_sdk.protocol.legacy_adapter import (
|
|
LegacyAdapter,
|
|
LegacyRequest,
|
|
parse_legacy_message,
|
|
)
|
|
|
|
|
|
class TestProtocolPackageExports:
|
|
"""Ensure protocol package exposes the intended public surface."""
|
|
|
|
def test_core_exports_are_importable(self):
|
|
"""Core protocol models and parsers should be importable from package root."""
|
|
handler = HandlerDescriptor(
|
|
id="demo.handler",
|
|
trigger=CommandTrigger(command="hello"),
|
|
)
|
|
message = InitializeMessage(
|
|
id="msg-1",
|
|
protocol_version="1.0",
|
|
peer=PeerInfo(name="plugin", role="plugin"),
|
|
handlers=[handler],
|
|
)
|
|
parsed: ProtocolMessage = parse_message(message)
|
|
|
|
assert isinstance(parsed, InitializeMessage)
|
|
assert isinstance(ErrorPayload(code="x", message="y"), ErrorPayload)
|
|
assert isinstance(
|
|
CapabilityDescriptor(
|
|
name="llm.chat",
|
|
description="chat",
|
|
input_schema=BUILTIN_CAPABILITY_SCHEMAS["llm.chat"]["input"],
|
|
output_schema=BUILTIN_CAPABILITY_SCHEMAS["llm.chat"]["output"],
|
|
),
|
|
CapabilityDescriptor,
|
|
)
|
|
assert isinstance(MessageTrigger(keywords=["hello"]), MessageTrigger)
|
|
assert isinstance(ScheduleTrigger(interval_seconds=60), ScheduleTrigger)
|
|
assert isinstance(EventMessage(id="evt-1", phase="started"), EventMessage)
|
|
assert isinstance(ResultMessage(id="res-1", success=True), ResultMessage)
|
|
|
|
def test_protocol_root_does_not_reexport_legacy_helpers(self):
|
|
"""protocol root should stay focused on native v4 models."""
|
|
assert not hasattr(protocol_module, "LegacyAdapter")
|
|
assert not hasattr(protocol_module, "LegacyRequest")
|
|
assert not hasattr(protocol_module, "parse_legacy_message")
|
|
|
|
def test_legacy_exports_are_available_from_submodule(self):
|
|
"""Legacy adapter helpers remain available from the explicit submodule."""
|
|
legacy = parse_legacy_message({"jsonrpc": "2.0", "method": "handshake"})
|
|
|
|
assert isinstance(legacy, LegacyRequest)
|
|
assert isinstance(LegacyAdapter(), LegacyAdapter)
|