feat(drive): fix webdav back-compat

add env variable `OXICLOUD_WEBDAV_DRIVE_LISTING_PREFIX`
    which is by default:
    `OXICLOUD_WEBDAV_DRIVE_LISTING_PREFIX="@drive"`

    so `/webdav/` -> points to user's personal drive (**backward compatibilit**y)
    `/web/dav/@drive/{uuid|drive name}/` points to the respective drive

    if admins want directly `/webdav/` pointing to list of drives they need to:
    `OXICLOUD_WEBDAV_DRIVE_LISTING_PREFIX=""`

    + ensure lock is per user (RFC 4918 §9.11)

    fix: #554
This commit is contained in:
Edouard Vanbelle
2026-07-06 20:45:21 +02:00
parent 3d74bed326
commit 7e34045ff8
16 changed files with 1576 additions and 232 deletions
+19 -8
View File
@@ -159,23 +159,34 @@ front-design:
# Hurl-driven functional tests (starts postgres + server, tears down after).
#
# Three runners — each isolated, brings up its own sidecars + server config:
# * tests/api/run.sh — REST API surface, default server.env
# * tests/webdav/run.sh — native WebDAV + NextCloud DAV, default server.env
# * tests/oidc/run.sh — OIDC SSO end-to-end against a fake IdP
# (tests/oidc/fake_idp, a Node panva/oidc-provider
# wrapper); server launched with
# --config server-with-oidc.env so the api and
# webdav suites stay on the OIDC-off config.
# Four runners — each isolated, brings up its own sidecars + server config:
# * tests/api/run.sh — REST API surface, default server.env
# * tests/webdav/run.sh — native WebDAV + NextCloud DAV, default server.env
# * tests/webdav-drive-root/run.sh — WebDAV `OXICLOUD_WEBDAV_DRIVE_PATH=""`
# variant (drive listing served at
# `/webdav/` instead of `/webdav/@drive/`).
# Server launched with
# --config server-webdav-drive-root.env
# so the default runners stay on the
# `"@drive"` config.
# * tests/oidc/run.sh — OIDC SSO end-to-end against a fake IdP
# (tests/oidc/fake_idp, a Node
# panva/oidc-provider wrapper); server
# launched with
# --config server-with-oidc.env so the
# api and webdav suites stay on the
# OIDC-off config.
#
# Same chain runs in CI under the `api-test` job in
# .github/workflows/ci.yml; keep the order in sync so a local pass means
# CI passes.
api-test:
#!/usr/bin/env bash
set -x
set -euo pipefail
./tests/api/run.sh
./tests/webdav/run.sh
./tests/webdav-drive-root/run.sh
./tests/oidc/run.sh
if which litmus >/dev/null 2>/dev/null
then