Files
ZNJJ-api-server/test/test_client_mode.py
2026-07-28 08:41:34 +08:00

77 lines
1.9 KiB
Python

import pytest
from pydantic import ValidationError
from src.api.endpoints import external_stage_code
from src.schemas.models import (
ProcessRequest_chat,
ProcessRequest_delete_session,
ProcessRequest_get,
ProcessRequest_set,
)
@pytest.mark.parametrize(
("request_model", "payload"),
[
(
ProcessRequest_chat,
{"sessionId": "session-1", "timeStamp": "1", "text": "你好"},
),
(
ProcessRequest_set,
{
"sessionId": "session-1",
"timeStamp": "1",
"key": "name",
"value": "张三",
},
),
(
ProcessRequest_get,
{"sessionId": "session-1", "timeStamp": "1", "key": "name"},
),
(
ProcessRequest_delete_session,
{"sessionId": "session-1", "timeStamp": "1"},
),
],
)
def test_client_mode_defaults_to_direct(request_model, payload):
request = request_model(**payload)
assert request.clientMode == "direct"
def test_browser_addon_client_mode_is_accepted():
request = ProcessRequest_chat(
sessionId="session-1",
timeStamp="1",
text="你好",
clientMode="browser_addon",
)
assert request.clientMode == "browser_addon"
def test_unknown_client_mode_is_rejected():
with pytest.raises(ValidationError):
ProcessRequest_chat(
sessionId="session-1",
timeStamp="1",
text="你好",
clientMode="unknown",
)
@pytest.mark.parametrize(
("client_mode", "raw_code", "expected"),
[
("direct", "0001", "0001"),
("direct", "1002", "1002"),
("browser_addon", "0001", "browser_addon.0001"),
("browser_addon", "1002", "browser_addon.1002"),
],
)
def test_external_stage_code(client_mode, raw_code, expected):
assert external_stage_code(client_mode, raw_code) == expected