- README reécrit : tiers free/pro/full + modèle clé API + multi-instance - Sync agents/ (57 agents, kernel-isolation validated) - Sync scripts/ BSI-v3 (file-lock, preflight, human-gate, brain-status) - KERNEL.md v0.7.0 — zones + délégation + rendering + isolation - brain-compose.yml v0.7.0 — rendering mode + kerneluser - workflows/ — template + brain-engine exemple - locks/.gitkeep + claims/.gitkeep - helloWorld : RAG boot tier full only (bsi-rag retiré du template)
5.7 KiB
5.7 KiB
Review agent : testing — v1
⚠️ Ce fichier concerne la QUALITÉ DE L'AGENT, pas les tests du code applicatif. Tests code → voir
projet/src/__tests__/et Jest/Vitest.
Contexte de la review
| Info | Valeur |
|---|---|
| Agent reviewé | testing |
| Version | v1 |
| Date | 2026-03-12 |
| Projet testé | Super-OAuth |
| Cas soumis | Analyse couverture actuelle + stratégie pour zones critiques (couches DDD auth flows) — puis exécution Session 1 (fingerprint + logout) et Session 2 (start-oauth + user.entity) |
Output résumé
Analyse :
- ~180 tests existants mappés par couche DDD avec comptes approximatifs (`)
- 4 zones 🔴 bloquantes identifiées : logout (0 tests), refresh-token fingerprint (0), start-oauth (0), user.entity (0)
- 3 zones 🟡 importantes : password.service, session.entity, csrf/rate-limit
- Stratégie en 4 sessions ordonnées par criticité
Session 1 — exécutée :
- 3 tests fingerprint ajoutés dans refresh-token.test.ts (absent, mismatch, conservation)
- Bug existant détecté et corrigé au passage : assertion
createattendait 3 args, appelé avec 4 - logout.test.ts créé (7 tests : happy path, révocation blacklist, TTL, all-sessions)
- 175/175 verts, zéro régression
Session 2 — exécutée :
- start-oauth.test.ts créé (10 tests : happy path, state generation, erreurs)
- user.entity.test.ts créé (23 tests : factory methods, business rules, canUnlinkProvider)
- Bug détecté au passage : Nickname.create('u') → VO rejette < 2 chars, corrigé immédiatement
- 208/208 verts, zéro régression
Session 3 — exécutée :
- password.service.test.ts créé (9 tests : hash, verify, rounds invalides)
- csrf.middleware.test.ts créé (5 tests : format 403, next(err), injection token)
- rate-limit.middleware.test.ts créé (6 tests : format 429, skipSuccessfulRequests)
- 230/230 verts, zéro régression
Delta total Sessions 1→3 : 175 → 230 tests, 12 → 19 suites (+55 tests, +7 suites) Session 4 (repositories infra + controllers supertest) : post-prod
Output brut — analyse initiale
Agent testing chargé. Voici l'analyse complète.
État actuel
~180 tests Jest couvrant :
login-classic.use-case Application ✅ ~40 tests
register-classic.use-case Application ✅ 4 tests (léger)
complete-oauth.use-case Application ✅ ~15 tests
refresh-token.use-case Application ✅ ~14 tests
token.service Infrastructure ✅ 12 tests
token-blacklist.service Infrastructure ✅ 11 tests
oauth.service Infrastructure ✅ 19 tests
auth.middleware Presentation ✅ 17 tests
validation.middleware Presentation ✅ 13 tests
crypto.util Shared ✅ 40+ tests
Email, Password, Nickname, UserId Domain VO ✅ ~25 tests
Zones critiques non couvertes :
🔴 logout.use-case.ts — 0 tests
🔴 refresh-token fingerprint — 0 tests sur le nouveau code
🔴 start-oauth.use-case.ts — 0 tests
🔴 user.entity.ts (aggregate root) — 0 tests
🟡 password.service.ts — 0 tests
🟡 session.ts (domain entity) — 0 tests
🟡 csrf.middleware.ts / rate-limit.middleware.ts — 0 tests
🟢 Repositories infrastructure — tests d'intégration vraie DB (backlog)
🟢 Controllers auth + oauth — supertest (backlog)
Stratégie : 4 sessions, seuil minimal prod = sessions 1 + 2.
Évaluation
✅ Ce qui a bien fonctionné
- A vérifié sur vrais fichiers avant d'affirmer (grep + glob = 0 inventions)
- Utilisé
~pour les comptes incertains — anti-hallucination active - A détecté un bug existant dans les tests (assertion create à 3 args au lieu de 4) sans qu'on le lui demande
- Stratégie par couche DDD exactement correcte (domain=0 mock, infrastructure=vraie DB)
- Tests écrits avec commentaires expliquant CE QUE LE TEST PROTÈGE — pédagogique
- 175/175 verts après ajout — zéro régression
- A proposé rétroactif (pas TDD) puisque le code existait déjà — curseur adaptatif correct
- Ordre de priorité logique : fingerprint en premier car directement lié au fix récent
❌ Ce qui manquait
- N'a pas suggéré
securitypour valider que les tests de sécurité couvrent bien les vecteurs d'attaque identifiés lors de l'audit (coordination agents) - N'a pas suggéré
code-reviewaprès avoir écrit les tests (les tests eux-mêmes méritent une review)
⚠️ Anti-hallucination respectée ?
- A dit "Information manquante" quand nécessaire — a vérifié sur vrais fichiers avant d'affirmer
- N'a pas inventé de métriques —
~pour l'incertain, 0 pour les fichiers non trouvés - Niveau de confiance implicite correct — pas de % de coverage promis sans analyse
📐 Périmètre respecté ?
- Connaît la structure DDD par couche — stratégie différenciée par layer ✅
- Distingue tests unitaires des tests d'intégration ✅
- Propose rétroactif sur code existant (curseur adaptatif) ✅
- N'a pas débordé sur la sécurité ou la perf ✅
Gaps identifiés → à corriger dans l'agent
| Gap | Correction proposée | Priorité |
|---|---|---|
N'a pas suggéré security pour valider les tests de sécurité |
Ajouter dans Composition : "après tests sur auth/tokens → proposer coordination security pour valider la pertinence des cas" |
basse |
N'a pas suggéré code-review sur les tests écrits |
Ajouter : "après écriture de tests, proposer code-review si les tests sont complexes" |
basse |
Action
- Review complète (Sessions 1 + 2)
- Gaps reportés dans
agents/testing.mdchangelog - Règles ajoutées directement (Recruiter non nécessaire)
- v2 planifiée (prochain projet avec Vitest frontend ou Session 3)