""" Settings de test pour l'exécution des tests unitaires Django. Utilise la base PostgreSQL du docker-compose (ArrayField non supporté par SQLite). Redis et Celery sont désactivés. """ import os os.environ.setdefault('SECRET_KEY', 'django-insecure-test-secret-key-for-unit-tests-only') os.environ.setdefault('WEBHOOK_API_KEY', 'test-webhook-api-key-for-unit-tests-only') os.environ.setdefault('DJANGO_DEBUG', 'True') from N3wtSchool.settings import * # noqa: F401, F403 # Base de données PostgreSQL dédiée aux tests (isolée de la base de prod) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'school_test', 'USER': os.environ.get('DB_USER', 'postgres'), 'PASSWORD': os.environ.get('DB_PASSWORD', 'postgres'), 'HOST': os.environ.get('DB_HOST', 'database'), 'PORT': os.environ.get('DB_PORT', '5432'), 'TEST': { 'NAME': 'school_test', }, } } # Cache en mémoire locale (pas de Redis) CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', } } # Sessions en base de données (plus simple que le cache pour les tests) SESSION_ENGINE = 'django.contrib.sessions.backends.db' # Django Channels en mémoire (pas de Redis) CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels.layers.InMemoryChannelLayer', } } # Désactiver Celery pendant les tests CELERY_TASK_ALWAYS_EAGER = True CELERY_TASK_EAGER_PROPAGATES = True # Email en mode console (pas d'envoi réel) EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend' # Clé secrète fixe pour les tests SECRET_KEY = 'django-insecure-test-secret-key-for-unit-tests-only' SIMPLE_JWT['SIGNING_KEY'] = SECRET_KEY # noqa: F405 # Désactiver le throttling pendant les tests REST_FRAMEWORK['DEFAULT_THROTTLE_CLASSES'] = [] # noqa: F405 REST_FRAMEWORK['DEFAULT_THROTTLE_RATES'] = {} # noqa: F405 # Accélérer le hashage des mots de passe pour les tests PASSWORD_HASHERS = [ 'django.contrib.auth.hashers.MD5PasswordHasher', ] # Désactiver les logs verbeux pendant les tests LOGGING['root']['level'] = 'CRITICAL' # noqa: F405