"""
Configuracion para la suite de pruebas.

Las variables se escriben en `os.environ` ANTES de importar la configuracion
real. `env.read_env()` usa `setdefault`, asi que respeta lo que ya esta en el
entorno y el `.env` de cada maquina solo rellena huecos: las pruebas dan lo
mismo en cualquier equipo y en integracion continua.

No sirve poner esto en un `conftest.py`: pytest-django carga la configuracion
durante la inicializacion del plugin, antes de importar los conftest, y los
valores llegarian tarde.
"""

import os

os.environ.update(
    {
        "DJANGO_SECRET_KEY": "clave-solo-para-pruebas-no-usar-en-ningun-despliegue",
        "DJANGO_DEBUG": "False",
        "DJANGO_ALLOWED_HOSTS": "testserver,localhost",
        "DATABASE_URL": "sqlite://:memory:",
        "REDIS_CACHE_URL": "",
        "SECURE_SSL_REDIRECT": "False",
        "SECURE_HSTS_SECONDS": "0",
        "BEHIND_TLS_PROXY": "False",
        "NUM_PROXIES": "0",
        "CORS_ALLOWED_ORIGINS": "",
        "EXPOSE_API_DOCS": "True",
        # Las tareas se ejecutan en el propio proceso: se puede probar el
        # flujo completo sin Redis ni worker.
        "CELERY_TASK_ALWAYS_EAGER": "True",
        "NOTIFICATIONS_STORE_BODY": "False",
        "EMAIL_DEFAULT_PROVIDER": "console",
        "EMAIL_ENABLED_PROVIDERS": "console,sendgrid,gmail",
        "EMAIL_ALLOWED_FROM_DOMAINS": "ejemplo.com",
        "EMAIL_ALLOWED_FROM_ADDRESSES": "",
        "EMAIL_DEFAULT_FROM": "notificaciones@ejemplo.com",
        "EMAIL_DEFAULT_FROM_NAME": "Notificaciones de prueba",
        "EMAIL_DEFAULT_REPLY_TO": "soporte@ejemplo.com",
        "EMAIL_MAX_RECIPIENTS": "50",
        "EMAIL_MAX_ATTACHMENTS": "10",
        "SENDGRID_API_KEY": "SG.claveDePruebas.claveDePruebas",
        "SENDGRID_WEBHOOK_PUBLIC_KEY": "",
        "SENDGRID_SANDBOX_MODE": "False",
        "GMAIL_SERVICE_ACCOUNT_FILE": "",
        "GMAIL_TOKEN_FILE": "",
        # Proveedor simulado: llamar a Twilio de verdad en las pruebas seria
        # lento, costoso y una fuente de fallos intermitentes.
        "MESSAGING_PROVIDER": "console",
        "MESSAGING_MAX_RECIPIENTS": "100",
        "MESSAGING_MAX_BODY_CHARS": "1600",
        "DEFAULT_PHONE_COUNTRY_CODE": "",
        "WHATSAPP_REPLY_PROMPT_DAYS": "1",
        "TWILIO_STATUS_CALLBACK_BASE_URL": "https://notificaciones.ejemplo.com",
        "TWILIO_ACCOUNT_SID": "ACpruebas",
        "TWILIO_AUTH_TOKEN": "pruebas",
        "TWILIO_SMS_FROM": "+10000000000",
        "TWILIO_WHATSAPP_FROM": "+10000000000",
        "THROTTLE_RATE_AUTH": "1000/min",
        "THROTTLE_RATE_SEND": "1000/min",
        "THROTTLE_RATE_ANON": "1000/min",
        "THROTTLE_RATE_USER": "10000/day",
        "LOG_LEVEL": "CRITICAL",
        "LOG_FORMAT": "console",
    }
)

from core.settings import *  # noqa: E402,F403

# Hashear contrasenias con un derivador lento en cada prueba que crea un
# usuario cuesta segundos sin aportar nada: aqui no se mide eso.
PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"]  # noqa: S105
