Files
MoviePilot/tests/test_alist_delete.py
DDSRem 2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00

46 lines
1.7 KiB
Python

"""
验证 Alist 删除目录直接调用移除接口,不额外探测目录内容。
"""
from unittest.mock import MagicMock, patch
from app.modules.filemanager.storages import alist as alist_module
from app.modules.filemanager.storages.alist import Alist
from app.schemas.file import FileItem
def test_delete_directory_uses_remove_api_without_empty_directory_probe():
"""
删除 OpenList 目录时应直接使用通用删除接口,避免专用空目录接口返回成功但未实际删除。
"""
storage = Alist()
response = MagicMock()
response.status_code = 200
response.json.return_value = {"code": 200, "message": "success", "data": None}
request_utils = MagicMock()
request_utils.post_res.return_value = response
fileitem = FileItem(storage="alist", type="dir", path="/library/empty/")
with patch.object(
Alist,
"get_conf",
return_value={"url": "http://openlist.test", "token": "token"},
):
with patch.object(storage, "_Alist__get_header_with_token", return_value={}):
with patch.object(alist_module, "RequestUtils", return_value=request_utils):
with patch.object(
storage,
"list",
side_effect=AssertionError("不应探测空目录"),
):
assert storage.delete(fileitem) is True
request_utils.post_res.assert_called_once()
called_url = request_utils.post_res.call_args.args[0]
assert called_url == "http://openlist.test/api/fs/remove"
assert "remove_empty_directory" not in called_url
assert request_utils.post_res.call_args.kwargs["json"] == {
"dir": "/library",
"names": ["empty"],
}