Objectif

Un script Python autonome qui démontre les validators Pydantic avancés, BaseSettings, les types génériques, et les tests pytest — le tout dans un seul fichier exécutable.

Format : Script autonome (pas d'uvicorn requis) — peut être lancé directement avec python solution.py ou testé avec pytest solution.py.

Fonctionnalités démontrées

  • Validators Pydantic v2 : @field_validator, @model_validator
  • Types personnalisés avec Annotated
  • Schéma générique PaginatedResponse[T]
  • Configuration via BaseSettings + .env
  • Middleware X-Process-Time
  • Tests pytest inline (422, 409, headers)
  • Headers de sécurité OWASP

Structure

06-validation-securite/mini-projet/
├── index.html        # Cette page
└── solution.py       # Script complet et autonome

Lancer

cd 06-validation-securite/mini-projet
pip install fastapi uvicorn pydantic pydantic-settings pytest httpx

# Démo des validators
python solution.py

# Tests pytest
pytest solution.py -v

# API avec uvicorn
uvicorn solution:app --reload

Tests inclus

pytest solution.py -v
# test_password_too_short       PASSED
# test_email_duplicate          PASSED
# test_pagination_defaults      PASSED
# test_process_time_header      PASSED
# test_due_date_past            PASSED
# test_security_headers         PASSED
← Retour au cours 🧠 QCM Module 06 Module 07 — Django →