• test: A32 phase 2f — dashboard +7 routes, garde-fous A16 (v7.17.0)
    FlowDeck CI / lint (push) Successful in 1m52s
    FlowDeck CI / docker (push) Canceled after 0s
    FlowDeck CI / test (push) Canceled after 5m54s

    bruno released this 2026-10-01 14:40:06 -04:00 | 103 commits to main since this release

    Cumul dashboard : 36 → 43 des 63 routes. 4 nouveaux tests (fichier à 42),
    centrés sur les garde-fous A16 :

    • GET /api/files/{ws}/{path} : traversal encodé %2e%2e%2f → 403
      « Path traversal denied » (décodé par Starlette puis bloqué par resolve) ;
      inexistant → 404 ; vrai fichier écrit dans le data_dir de test →
      200 + octets exacts, nettoyé en finally
    • GET /api/pages/{id}/download : page markdown → 404 « No downloadable file »
      (pas de 500) ; page « file » avec chemin ../ sortant de la racine →
      jamais 200 ; file-content → 404/415 sans fuite
    • GET /api/local-workspace/page-content/{id} : contenu + format relus,
      404 sur id inconnu
    • GET /api/avatar/{id} : 302 + Location avec follow_redirects=False
      (AUCUNE requête réelle vers l'URL externe), 404 sans avatar
    • GET/POST /api/collections/{id}/table-data|pages : 404 inconnu, shape,
      ligne créée retrouvée dans table-data, nettoyage finally

    Reste A32 : dashboard 20 routes (upload/local-workspace items/members/
    projects/HTML gitea) + 6 routes Gitea d'api.py (stub transport httpx).

    suite 1079/1079 · ruff check app tests OK · docs à jour

    Downloads