mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-07-08 04:47:00 +08:00
42 lines
1.6 KiB
Python
42 lines
1.6 KiB
Python
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 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"],
|
|
}
|