kimi2.6.0 / tests /test_api_auth.py
heyeyydss's picture
Upload 120 files
d18adc9 verified
Raw
History Blame Contribute Delete
5.77 kB
def test_v1_models_requires_api_key_even_when_no_keys_are_configured(
api_client,
reset_key_store,
):
response = api_client.get("/v1/models")
assert response.status_code == 401
assert response.json()["error"]["type"] == "invalid_request_error"
def test_v1_models_rejects_unknown_api_key_when_no_keys_are_configured(
api_client,
reset_key_store,
):
response = api_client.get(
"/v1/models",
headers={"Authorization": "Bearer sk-unknown"},
)
assert response.status_code == 401
assert response.json()["error"]["type"] == "invalid_request_error"
def test_v1_models_accepts_configured_api_key(api_client, configured_api_key):
response = api_client.get(
"/v1/models",
headers={"Authorization": f"Bearer {configured_api_key.key}"},
)
assert response.status_code == 200
assert response.json()["object"] == "list"
def test_v1_models_returns_dynamic_kimi_web_models(api_client, configured_api_key):
response = api_client.get(
"/v1/models",
headers={"Authorization": f"Bearer {configured_api_key.key}"},
)
assert response.status_code == 200
data = response.json()["data"]
assert [model["id"] for model in data] == [
"kimi-k2.6",
"kimi-k2.6-thinking",
"kimi-k2.6-agent",
"kimi-k2.6-agent-swarm",
"kimi-k2.6-search",
"kimi-k2.6-thinking-search",
]
assert "kimi-k2.5-search" not in {model["id"] for model in data}
assert data[0]["scenario"] == "SCENARIO_K2D5"
assert data[1]["thinking"] is True
assert data[4]["thinking"] is False
assert data[5]["thinking"] is True
assert all("supports_web_search" not in model for model in data)
def test_v1_model_detail_rejects_unknown_model(api_client, configured_api_key):
response = api_client.get(
"/v1/models/kimi-k2.5-search",
headers={"Authorization": f"Bearer {configured_api_key.key}"},
)
assert response.status_code == 400
assert response.json()["error"]["type"] == "invalid_request_error"
def test_chat_rejects_conflicting_thinking_flag(api_client, configured_api_key):
response = api_client.post(
"/v1/chat/completions",
headers={"Authorization": f"Bearer {configured_api_key.key}"},
json={
"model": "kimi-k2.6",
"enable_thinking": True,
"messages": [{"role": "user", "content": "hi"}],
},
)
assert response.status_code == 400
assert response.json()["error"]["type"] == "invalid_request_error"
def test_chat_rejects_unknown_model(api_client, configured_api_key):
response = api_client.post(
"/v1/chat/completions",
headers={"Authorization": f"Bearer {configured_api_key.key}"},
json={
"model": "kimi-k2.5",
"messages": [{"role": "user", "content": "hi"}],
},
)
assert response.status_code == 400
assert response.json()["error"]["type"] == "invalid_request_error"
async def test_openai_responses_web_search_tool_enables_search():
from app.api.models import _resolve_model
for tool_type in ("web_search", "web_search_preview"):
features = await _resolve_model(
{
"model": "kimi-k2.6-thinking",
"tools": [{"type": tool_type}],
"input": "today's Shenzhen weather",
}
)
assert features["enable_web_search"] is True
async def test_openai_chat_web_search_options_enables_search():
from app.api.models import _resolve_model
features = await _resolve_model(
{
"model": "kimi-k2.6",
"web_search_options": {},
"messages": [{"role": "user", "content": "today's Shenzhen weather"}],
}
)
assert features["enable_web_search"] is True
async def test_legacy_web_search_parameter_still_enables_search():
from app.api.models import _resolve_model
features = await _resolve_model(
{
"model": "kimi-k2.6-thinking",
"enable_web_search": True,
"messages": [{"role": "user", "content": "today's Shenzhen weather"}],
}
)
assert features["enable_web_search"] is True
async def test_search_alias_models_enable_search_automatically():
from app.api.models import _resolve_model
instant = await _resolve_model(
{
"model": "kimi-k2.6-search",
"messages": [{"role": "user", "content": "today's Shenzhen weather"}],
}
)
thinking = await _resolve_model(
{
"model": "kimi-k2.6-thinking-search",
"messages": [{"role": "user", "content": "today's Shenzhen weather"}],
}
)
assert instant["model"] == "kimi-k2.6"
assert instant["request_model"] == "kimi-k2.6-search"
assert instant["enable_web_search"] is True
assert instant["enable_thinking"] is False
assert thinking["model"] == "kimi-k2.6-thinking"
assert thinking["request_model"] == "kimi-k2.6-thinking-search"
assert thinking["enable_web_search"] is True
assert thinking["enable_thinking"] is True
def test_chat_rejects_web_search_for_agent_model(api_client, configured_api_key):
response = api_client.post(
"/v1/chat/completions",
headers={"Authorization": f"Bearer {configured_api_key.key}"},
json={
"model": "kimi-k2.6-agent",
"tools": [{"type": "web_search"}],
"messages": [{"role": "user", "content": "today's Shenzhen weather"}],
},
)
assert response.status_code == 400
body = response.json()
assert body["error"]["type"] == "invalid_request_error"
assert "does not support web search" in body["error"]["message"]