Files
llm-api-keygen/tests/test_compatibility.py
drd_vic e3cd2d77ac feat: 初始化 LLM API 密钥生成器项目
添加完整的 Python 包结构和核心功能:
- 实现高安全性 API 密钥生成功能,支持自定义长度、前缀和字符集
- 集成 cryptography 库提供加密增强的随机数生成和密钥加密存储
- 添加 pydantic 参数验证模型,确保输入参数安全性
- 实现密钥强度检测机制,基于熵值评估密钥质量
- 支持批量生成密钥,提高使用效率
- 提供完整的测试套件,包括基础功能、增强功能和异常处理测试
- 配置项目构建系统,支持 Python 3.8+ 多版本兼容
- 添加 MIT 许可证和项目元数据配置
2025-11-30 20:14:32 +08:00

64 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import sys
import pytest
from llmapikeygen import generate_api_key, generate_batch
# 测试 Python 版本兼容性(仅标记,实际需多环境运行)
PY38_OR_HIGHER = sys.version_info >= (3, 8)
PY310_OR_HIGHER = sys.version_info >= (3, 10)
def test_python_version_compatibility():
"""测试 Python 版本兼容性(基础功能)"""
# 所有支持的版本都应能生成密钥
key = generate_api_key()
assert key.startswith("sk-")
batch = generate_batch(count=2)
assert len(batch) == 2
def test_charset_unicode_compatibility():
"""测试 Unicode 字符集兼容性"""
# 中文字符集虽然不推荐用于API密钥但需确保不报错
unicode_charset = "一二三四五六七八九十大"
key = generate_api_key(length=16, charset=unicode_charset, exclude_ambiguous=False)
assert len(key) == len("sk-") + 16
assert all(c in unicode_charset for c in key[3:])
# 特殊Unicode符号
emoji_charset = "😀😁😂🤣😃😄😅😆"
key_emoji = generate_api_key(length=8, charset=emoji_charset, exclude_ambiguous=False)
assert all(c in emoji_charset for c in key_emoji[3:])
def test_long_prefix_compatibility():
"""测试超长前缀兼容性"""
# 前缀长度=32接近极限
long_prefix = "a" * 32 + "-"
key = generate_api_key(prefix=long_prefix, length=16)
assert key.startswith(long_prefix)
assert len(key) == len(long_prefix) + 16
def test_extreme_length_compatibility():
"""测试极端长度最小8位最大1024位"""
# 最小长度
key_min = generate_api_key(length=8)
assert len(key_min) == len("sk-") + 8
# 超长长度1024位主体
key_extreme = generate_api_key(length=1024)
assert len(key_extreme) == len("sk-") + 1024
# 批量生成超长密钥
batch_extreme = generate_batch(count=3, length=512)
assert len(batch_extreme) == 3
assert all(len(key) == len("sk-") + 512 for key in batch_extreme)
def test_empty_prefix_compatibility():
"""测试空前缀(虽然不推荐,但需兼容)"""
# 注意:空前缀会被基础校验拒绝,需确认逻辑
with pytest.raises(ValueError):
generate_api_key(prefix="")
# 测试仅含特殊字符的前缀(非空)
special_prefix = "!@#-"
key = generate_api_key(prefix=special_prefix)
assert key.startswith(special_prefix)