2.2 KiB
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" -vPYTHONPATH=webui python3 -m unittest discover -s webui/backend/tests/golden -p "test_*.py" -vPYTHONPATH=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.0starlette==0.37.2pydantic==2.12.5httpx==0.27.2anyio==4.4.0sniffio==1.3.1
3. Minimale wijzigingen in deze fase
Functioneel gewijzigde bestanden:
webui/backend/app/api/routes_browse.pywebui/backend/app/dependencies.pywebui/backend/app/main.py
Testmatig gewijzigde bestanden:
webui/backend/tests/golden/test_api_browse_golden.pywebui/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.ASGITransportvoert 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