Files
dify/api/tests/unit_tests/dify_graph/file/test_models.py
-LAN- 56593f20b0 refactor(api): continue decoupling dify_graph from API concerns (#33580)
Signed-off-by: -LAN- <laipz8200@outlook.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: WH-2099 <wh2099@pm.me>
2026-03-25 20:32:24 +08:00

55 lines
2.0 KiB
Python

from core.workflow.file_reference import build_file_reference
from dify_graph.file import File, FileTransferMethod, FileType, helpers
def _build_local_file(*, reference: str, storage_key: str | None = None) -> File:
return File(
id="file-id",
type=FileType.DOCUMENT,
transfer_method=FileTransferMethod.LOCAL_FILE,
reference=reference,
filename="report.pdf",
extension=".pdf",
mime_type="application/pdf",
size=128,
storage_key=storage_key,
)
def test_file_exposes_legacy_aliases_from_opaque_reference() -> None:
reference = build_file_reference(record_id="upload-file-id", storage_key="files/report.pdf")
file = _build_local_file(reference=reference)
assert file.reference == reference
assert file.related_id == "upload-file-id"
assert file.storage_key == "files/report.pdf"
def test_file_falls_back_to_raw_reference_when_opaque_reference_is_invalid() -> None:
file = _build_local_file(reference="dify-file-ref:not-base64", storage_key="fallback-key")
assert file.related_id == "dify-file-ref:not-base64"
assert file.storage_key == "fallback-key"
def test_file_to_dict_keeps_reference_and_legacy_related_id(monkeypatch) -> None:
reference = build_file_reference(record_id="upload-file-id", storage_key="files/report.pdf")
file = _build_local_file(reference=reference)
monkeypatch.setattr(helpers, "resolve_file_url", lambda _file, for_external=True: "https://example.com/report.pdf")
serialized = file.to_dict()
assert serialized["reference"] == reference
assert serialized["related_id"] == "upload-file-id"
assert serialized["url"] == "https://example.com/report.pdf"
def test_file_related_id_setter_updates_reference_alias() -> None:
file = _build_local_file(reference="upload-file-id", storage_key="files/report.pdf")
file.related_id = "replacement-upload-id"
assert file.reference == "replacement-upload-id"
assert file.related_id == "replacement-upload-id"