73 lines
2.2 KiB
Markdown
73 lines
2.2 KiB
Markdown
# 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
|