28 lines
995 B
Python
28 lines
995 B
Python
import unittest
|
|
|
|
from pydantic import ValidationError
|
|
|
|
from web.schemas import MessageRequest
|
|
|
|
|
|
class MessageAttachmentSchemaTests(unittest.TestCase):
|
|
def test_omitted_attachments_remains_distinguishable_for_legacy_clients(self):
|
|
body = MessageRequest(content="旧客户端正文")
|
|
self.assertEqual(body.attachments, [])
|
|
self.assertNotIn("attachments", body.model_fields_set)
|
|
|
|
def test_explicit_structured_attachments_are_accepted(self):
|
|
body = MessageRequest(
|
|
content="分析图片",
|
|
attachments=[{"path": "任务/a.png", "kind": "image"}],
|
|
)
|
|
self.assertIn("attachments", body.model_fields_set)
|
|
self.assertEqual(body.attachments[0].path, "任务/a.png")
|
|
|
|
def test_attachment_count_is_limited(self):
|
|
with self.assertRaises(ValidationError):
|
|
MessageRequest(
|
|
content="太多",
|
|
attachments=[{"path": f"任务/{i}.txt"} for i in range(11)],
|
|
)
|