fix(webdav): address PR #764 review round 4
- Guard against malformed PROPFIND responses where tag["id"] is None before calling get_files_by_tag (prevents <oc:systemtag>None</oc:systemtag> dispatch). - Add OCS-APIRequest: true header to get_tag_by_name and get_files_by_tag to match every other PROPFIND/REPORT in the file — fixes a latent reverse-proxy compatibility hazard. - Add test_copy_resource_blocks_excluded_source to mirror the existing move-source coverage; closes the asymmetric test gap. - Add test_skips_tag_with_missing_id covering the new fail-open branch in _resolve_one_tag. - Reword _resolve_one_tag docstring: "distinct slot" was misleading (tasks append rather than pre-allocate). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
2ee4d03e3f
commit
56f01b3499
@@ -194,6 +194,23 @@ async def test_move_resource_blocks_excluded_destination_exact_match(
|
||||
)
|
||||
|
||||
|
||||
async def test_copy_resource_blocks_excluded_source(
|
||||
webdav_tools, fake_client, patch_get_client, patch_excluded
|
||||
):
|
||||
patch_get_client(fake_client)
|
||||
patch_excluded({"Secret.txt"})
|
||||
|
||||
fn = webdav_tools["nc_webdav_copy_resource"].fn
|
||||
with pytest.raises(ToolError, match="source"):
|
||||
await fn(
|
||||
source_path="/Secret.txt",
|
||||
destination_path="/Public/copy.txt",
|
||||
ctx=_mock_ctx(fake_client),
|
||||
)
|
||||
|
||||
fake_client.webdav.copy_resource.assert_not_called()
|
||||
|
||||
|
||||
async def test_copy_resource_blocks_excluded_destination_descendant(
|
||||
webdav_tools, fake_client, patch_get_client, patch_excluded
|
||||
):
|
||||
|
||||
Reference in New Issue
Block a user