from types import SimpleNamespace from app.services.document_service import _content_disposition, _legacy_download_filename, _safe_original_filename def test_safe_original_filename_strips_paths_and_control_characters(): assert _safe_original_filename(r"C:\fakepath\研究方案.xlsx") == "研究方案.xlsx" assert _safe_original_filename("../研究\n方案.xlsx") == "研究方案.xlsx" def test_content_disposition_preserves_unicode_filename(): header = _content_disposition("研究方案 V1.0.xlsx") assert header.startswith('attachment; filename="') assert "filename*=UTF-8''%E7%A0%94%E7%A9%B6%E6%96%B9%E6%A1%88%20V1.0.xlsx" in header def test_legacy_download_filename_uses_document_title_instead_of_storage_uuid(): version = SimpleNamespace(file_uri="/uploads/fa6ab7ab-f4f5-4d4a-a052-693f780010fd.pdf") assert _legacy_download_filename(version, SimpleNamespace(title="研究方案")) == "研究方案.pdf" assert _legacy_download_filename(version, SimpleNamespace(title="研究方案.PDF")) == "研究方案.PDF"