test(e2e): webdav + nextcloud full e2e test coverage
add a full coverage of Webdav and Nextcloud
purpose: prepare move to Drives and ensure no regression at all
test scenarios are in docs/plan/BASELINE_TESTS_NC_WEBDAV.md
current existing bugs identified via these tests:
┌──────────┬─────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Bug │ Surface │ Pin location │
├──────────┼─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ G4/G5/K5 │ NC │ AlreadyExists → 500 instead of 412 (handle_move + trashbin restore) │
├──────────┼─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ G9 │ NC │ Folder DELETE not row-recursive — orphan descendants stay live │
├──────────┼─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ M5/M7 │ Native │ resolve_path_for_user mismatch — PUT writes, GET reads via lenient lookup, MOVE/DELETE can't find │
│ │ │ via strict │
├──────────┼─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ M8 │ Native │ COPY discards destination filename — collides with source │
├──────────┼─────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ N2 │ Native │ LOCK creates the token, mutators don't check it — class-2 advertisement is aspirational │
└──────────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┘
This commit is contained in:
@@ -151,6 +151,26 @@ log "API confirms trash is empty."
|
||||
THUMB_FILES=$(find "$STORAGE_PATH/.thumbnails" -type f 2>/dev/null || true)
|
||||
BLOB_FILES=$(find "$STORAGE_PATH/.blobs" -type f 2>/dev/null || true)
|
||||
|
||||
# Chunked-upload spool. After every chunked-upload session is either
|
||||
# completed (assembled + promoted) or aborted, this dir MUST be empty
|
||||
# — a leftover chunk file means a session-cleanup path forgot its
|
||||
# `remove_dir_all`, which under sustained sync workloads is the
|
||||
# classic "disk fills up over the weekend" failure mode.
|
||||
#
|
||||
# `.uploads/` is the default chunked-upload root when
|
||||
# `OXICLOUD_CHUNK_DIR` is unset (see `common/di.rs`). REST sessions
|
||||
# land under `.uploads/<session_id>/`; NC sessions land under
|
||||
# `.uploads/nextcloud/<user>/<session_id>/`.
|
||||
#
|
||||
# We deliberately do NOT check the direct-PUT spool dir here: when
|
||||
# `OXICLOUD_UPLOAD_TEMP_DIR` is unset (the default in the test env)
|
||||
# it falls back to the OS temp dir (`/tmp/…`) which is shared with
|
||||
# the rest of the system and would produce false positives. To
|
||||
# extend the check to direct-PUT, set OXICLOUD_UPLOAD_TEMP_DIR in
|
||||
# tests/common/server.env to a path under $STORAGE_PATH and add it
|
||||
# to the find list below.
|
||||
UPLOAD_FILES=$(find "$STORAGE_PATH/.uploads" -type f 2>/dev/null || true)
|
||||
|
||||
if [[ -n "$THUMB_FILES" ]]; then
|
||||
THUMB_COUNT=$(echo "$THUMB_FILES" | wc -l | tr -d ' ')
|
||||
log "Leftover thumbnail files ($THUMB_COUNT):"
|
||||
@@ -165,4 +185,11 @@ if [[ -n "$BLOB_FILES" ]]; then
|
||||
fail "$BLOB_COUNT blob file(s) remain on disk after full cleanup"
|
||||
fi
|
||||
|
||||
log "OK — no blobs or thumbnails remain on disk."
|
||||
if [[ -n "$UPLOAD_FILES" ]]; then
|
||||
UPLOAD_COUNT=$(echo "$UPLOAD_FILES" | wc -l | tr -d ' ')
|
||||
log "Leftover chunked-upload files ($UPLOAD_COUNT):"
|
||||
echo "$UPLOAD_FILES"
|
||||
fail "$UPLOAD_COUNT chunked-upload file(s) remain in .uploads after full cleanup"
|
||||
fi
|
||||
|
||||
log "OK — no blobs, thumbnails, or chunked-upload leftovers remain on disk."
|
||||
|
||||
Reference in New Issue
Block a user