mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 09:20:22 +08:00
将扁平的 APIFormat 枚举 (CLAUDE, OPENAI, GEMINI, *_CLI) 重构为二维结构: - ApiFamily: 协议族 (openai, claude, gemini) - EndpointKind: 端点变体 (chat, cli, video, image) 新增 EndpointSignature 数据类和 `family:kind` 签名键工具函数, 统一 JSON dict/metrics/logs 中的字符串标识格式。
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
import pytest
|
|
|
|
from src.core.api_format.enums import ApiFamily, EndpointKind
|
|
from src.core.api_format.signature import (
|
|
EndpointSignature,
|
|
make_signature_key,
|
|
normalize_endpoint_signature,
|
|
normalize_signature_key,
|
|
parse_signature_key,
|
|
)
|
|
|
|
|
|
def test_make_signature_key_accepts_enums_and_strings() -> None:
|
|
assert make_signature_key(ApiFamily.OPENAI, EndpointKind.CHAT) == "openai:chat"
|
|
assert make_signature_key("OpenAI", "CHAT") == "openai:chat"
|
|
|
|
|
|
def test_parse_signature_key_roundtrip() -> None:
|
|
sig = parse_signature_key("OpenAI:CHAT")
|
|
assert sig.api_family == ApiFamily.OPENAI
|
|
assert sig.endpoint_kind == EndpointKind.CHAT
|
|
assert sig.key == "openai:chat"
|
|
|
|
|
|
def test_parse_signature_key_invalid_raises() -> None:
|
|
with pytest.raises(ValueError):
|
|
parse_signature_key("OPENAI") # missing ':'
|
|
|
|
|
|
def test_normalize_signature_key() -> None:
|
|
assert normalize_signature_key(" OpenAI:CHAT ") == "openai:chat"
|
|
|
|
|
|
def test_normalize_endpoint_signature_tuple_input() -> None:
|
|
sig = normalize_endpoint_signature((ApiFamily.GEMINI, EndpointKind.VIDEO))
|
|
assert sig == EndpointSignature(api_family=ApiFamily.GEMINI, endpoint_kind=EndpointKind.VIDEO)
|
|
|
|
|
|
def test_normalize_endpoint_signature_invalid_string_returns_default() -> None:
|
|
default = EndpointSignature(api_family=ApiFamily.CLAUDE, endpoint_kind=EndpointKind.CHAT)
|
|
assert normalize_endpoint_signature("not-a-signature", default=default) == default
|