Files
webmanager-mvp/project_docs/STEP1_5_CONSOLIDATION.md
T
2026-03-11 09:39:41 +01:00

2.2 KiB

STEP1_5_CONSOLIDATION.md

Doel

Consolidatie van stap 1 t/m 5 (backend skeleton, path_guard, unit tests, browse endpoint, golden tests).

1. Test-run context

Tests draaien vanuit repository root met:

  • PYTHONPATH=webui

Definitieve testcommando's voor deze fase:

  • PYTHONPATH=webui python3 -m unittest discover -s webui/backend/tests/unit -p "test_*.py" -v
  • PYTHONPATH=webui python3 -m unittest discover -s webui/backend/tests/golden -p "test_*.py" -v
  • PYTHONPATH=webui python3 -m unittest discover -s webui/backend/tests -p "test_*.py" -v

2. Minimale dependencies voor stap 1-5

Vastgelegd in:

  • webui/backend/requirements.txt

Benodigd voor deze fase:

  • FastAPI app + browse endpoint
  • unit tests
  • golden tests

Dependencies:

  • fastapi==0.111.0
  • starlette==0.37.2
  • pydantic==2.12.5
  • httpx==0.27.2
  • anyio==4.4.0
  • sniffio==1.3.1

3. Minimale wijzigingen in deze fase

Functioneel gewijzigde bestanden:

  • webui/backend/app/api/routes_browse.py
  • webui/backend/app/dependencies.py
  • webui/backend/app/main.py

Testmatig gewijzigde bestanden:

  • webui/backend/tests/golden/test_api_browse_golden.py
  • webui/backend/tests/golden/test_api_errors_golden.py

Waarom golden tests van TestClient naar httpx.ASGITransport zijn omgezet:

  • In deze omgeving blokkeerde de TestClient-runner op sync execution pad.
  • httpx.ASGITransport voert requests in-memory tegen de ASGI app uit zonder die blokkade.
  • Dit is een testuitvoerbaarheidsfix, geen API-contractwijziging.

Waarom async wijzigingen nodig waren:

  • Error-pad en dependency-pad moesten async blijven om runtime-blokkade in deze omgeving te vermijden.
  • De wijzigingen zijn intern uitvoeringsgericht; het HTTP-contract blijft gelijk.

4. Contractbehoud (expliciet)

Door deze consolidatiestap is niets gewijzigd aan:

  • endpointpad: GET /api/browse
  • query parameters: path, show_hidden
  • response shape: path, directories[], files[] met dezelfde velden
  • error codes: o.a. invalid_root_alias, path_traversal_detected, path_not_found, path_type_conflict
  • hidden files policy: default hidden uit, optioneel via show_hidden=true

5. Scopebevestiging

Niet geïmplementeerd in deze consolidatiestap:

  • rename
  • mkdir
  • delete
  • copy
  • move
  • tasks/worker
  • frontend