77 lines
1.9 KiB
Python
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
|