agenthub/docs/VERIFICATION-J3.md
Paperclip FoundingEngineer bdd5d92ba7 Initial AgentHub codebase for Coolify deployment
Complete implementation ready for Coolify:
- Node.js 22 + Fastify + socket.io backend
- PostgreSQL 16 + Redis 7 services
- Docker Compose configuration
- Deployment scripts and documentation

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-01 21:25:57 +00:00

105 lines
2.6 KiB
Markdown

# Vérification J3 — REST Auth
Ce document décrit la procédure de vérification pour AGNHUB-7 / BARAAA-21.
## Prérequis
1. Postgres 16 en cours d'exécution (via `docker compose -f compose.dev.yml up -d`)
2. `.env` configuré avec `JWT_SECRET` (≥32 chars)
## Étape 1 : Migrations
```bash
npm run migrate
```
Vérifie que les tables `agents`, `api_tokens`, `audit_events` sont créées.
## Étape 2 : Démarrer le serveur
```bash
npm run dev
```
Le serveur démarre sur `http://localhost:3000`.
## Étape 3 : Tests automatisés
```bash
npm test
```
Doit passer tous les tests dans `test/api-integration.test.ts` :
- ✓ Complete authentication flow (7 tests)
- ✓ Token rotation scenario (7 tests)
- ✓ Validation tests (3 tests)
Total : ~17 tests.
## Étape 4 : Test manuel curl
```bash
./scripts/test-auth-flow.sh
```
Ce script exécute la séquence complète :
1. Créer un agent
2. Lister les agents
3. Émettre un API token (retourné une seule fois)
4. Échanger le token contre un JWT
5. Décoder le JWT pour vérifier le payload
6. Révoquer le token
7. Vérifier que le token révoqué est rejeté (401)
## Étape 5 : Vérifier audit_events
Via psql ou script SQL :
```sql
SELECT type, agent_id, ts
FROM audit_events
ORDER BY ts DESC
LIMIT 10;
```
Doit montrer :
- `agent-created`
- `token-issued`
- `jwt-issued`
- `token-revoked`
Le `payload_hash` est stocké (32 bytes), jamais le secret en clair.
## Étape 6 : Typecheck + Lint
```bash
npm run typecheck
npm run lint
npm run format:check
```
Tout doit passer sans erreur.
## Critères de done (BARAAA-21)
- [x] `POST /api/v1/agents` — créer agent (admin)
- [x] `GET /api/v1/agents` — lister agents
- [x] `POST /api/v1/agents/:id/tokens` — émettre token (secret retourné une fois)
- [x] `DELETE /api/v1/tokens/:id` — révoquer token
- [x] `POST /api/v1/sessions` — échanger token → JWT 15 min
- [x] Argon2id OWASP 2024 (19 MiB, 2 iter, para 1)
- [x] JWT HS256 via `JWT_SECRET`
- [x] Validation zod sur chaque payload (400 sur rejet)
- [x] `audit_events` branché (payload_hash sha256, pas de secret)
- [x] Tests Vitest + supertest (rotation, validation, flow complet)
- [x] curl peut faire la séquence complète
- [x] Tests intégration tous verts
- [x] `audit_events` rempli en BDD
## Notes
- Le code compile et passe typecheck strict TS
- Les tests nécessitent un Postgres actif (via compose.dev.yml)
- Le script curl `test-auth-flow.sh` est exécutable et auto-suffisant
- La documentation API est dans `docs/api-j3.md`
- Les commits suivent le format conventionnel et incluent `Co-Authored-By: Paperclip`