| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- """OA 实例评论:附件枚举与引用校验"""
- import unittest
- from app.services.oa_instance_comment import (
- enumerate_form_attachments,
- normalize_attachment_refs,
- )
- class TestEnumerateFormAttachments(unittest.TestCase):
- def test_groups_upload_fields(self):
- schema = {
- "rule": [
- {
- "type": "upload",
- "field": "files",
- "title": "附件",
- },
- {"type": "input", "field": "name", "title": "名称"},
- ]
- }
- form = {
- "files": [
- {"url": "https://x/a.pdf", "name": "a.pdf"},
- {"url": "https://x/b.pdf", "name": "b.pdf"},
- ],
- "name": "demo",
- }
- items = enumerate_form_attachments(schema, form)
- self.assertEqual(len(items), 1)
- self.assertEqual(items[0]["fieldKey"], "files")
- self.assertEqual(items[0]["fieldLabel"], "附件")
- self.assertEqual(len(items[0]["files"]), 2)
- self.assertEqual(items[0]["files"][0]["fileName"], "a.pdf")
- def test_skips_empty_upload(self):
- schema = {"rule": [{"type": "fcUpload", "field": "f", "title": "F"}]}
- self.assertEqual(enumerate_form_attachments(schema, {"f": []}), [])
- class TestNormalizeAttachmentRefs(unittest.TestCase):
- def test_accepts_valid_ref(self):
- schema = {"rule": [{"type": "upload", "field": "files", "title": "附件"}]}
- form = {"files": [{"url": "https://x/a.pdf", "name": "a.pdf"}]}
- out = normalize_attachment_refs(
- schema,
- form,
- [{"fieldKey": "files", "url": "https://x/a.pdf", "fileName": "wrong"}],
- )
- self.assertEqual(out[0]["fileName"], "a.pdf")
- self.assertEqual(out[0]["fieldLabel"], "附件")
- def test_rejects_foreign_url(self):
- from app.services.oa_engine import OaEngineError
- schema = {"rule": [{"type": "upload", "field": "files", "title": "附件"}]}
- form = {"files": [{"url": "https://x/a.pdf", "name": "a.pdf"}]}
- with self.assertRaises(OaEngineError):
- normalize_attachment_refs(
- schema,
- form,
- [{"fieldKey": "files", "url": "https://evil/x.pdf"}],
- )
|