mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
refactor(api_format): 重构为结构化的 (ApiFamily, EndpointKind) 标识体系
将扁平的 APIFormat 枚举 (CLAUDE, OPENAI, GEMINI, *_CLI) 重构为二维结构: - ApiFamily: 协议族 (openai, claude, gemini) - EndpointKind: 端点变体 (chat, cli, video, image) 新增 EndpointSignature 数据类和 `family:kind` 签名键工具函数, 统一 JSON dict/metrics/logs 中的字符串标识格式。
This commit is contained in:
41
tests/unit/test_api_format_signature.py
Normal file
41
tests/unit/test_api_format_signature.py
Normal file
@@ -0,0 +1,41 @@
|
||||
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
|
||||
Reference in New Issue
Block a user