Capítulo V: Guía de Despliegue, Pruebas y CI/CD
Esta guía detalla el paso a paso para configurar, levantar y ejecutar pruebas en todo el ecosistema de TVAPyMM, abarcando el backend de Spring Boot, el frontend en React y la aplicación vulnerable de prueba.
🛠️ Configuración de Variables de Entorno
Ambos servicios (frontend y backend) consumen configuraciones del sistema operativo a través de ficheros de variables de entorno para resguardar credenciales y endpoints.
Configuración del Backend (TVAPyMM-back/.env)
Cree un archivo .env en la raíz de la carpeta del backend. Este archivo define la conexión a la base de datos local y otros parámetros de depuración (está excluido del control de versiones):
# Conexión a la Base de Datos PostgreSQL
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgressecret
POSTGRES_DB=tvapymm_db
# Configuración de Autenticación de Auth0
AUTH0_ISSUER_URI=https://dev-tvapymm.us.auth0.com/
AUTH0_AUDIENCE=https://api.tvapymm.com
# Proveedor de Almacenamiento por Defecto (aws | oracle)
APP_REPORTS_DEFAULT_PROVIDER=oracle
# Almacenamiento Oracle Cloud (OCI) Object Storage (API compatible con S3)
ORACLE_ACCESS_KEY_ID=tu-clave-oracle-id
ORACLE_SECRET_ACCESS_KEY=tu-clave-secreta-oracle
ORACLE_REGION=us-ashburn-1
ORACLE_S3_BUCKET_NAME=tvapymm-reports-bucket
ORACLE_S3_ENDPOINT=https://tu-namespace.compat.objectstorage.us-ashburn-1.oraclecloud.com
ORACLE_S3_PATH_STYLE_ENABLED=true
# Almacenamiento AWS S3 (Mantenido por retrocompatibilidad)
AWS_ACCESS_KEY_ID=tu-clave-aws-id
AWS_SECRET_ACCESS_KEY=tu-clave-secreta-aws
AWS_REGION=us-east-1
AWS_S3_BUCKET_NAME=tvapymm-reports-bucket
# Modo de Almacenamiento Local (Evita la nube y escribe reportes en disco)
APP_REPORTS_LOCAL_STORAGE=true
APP_REPORTS_LOCAL_PATH=./reports
Configuración del Frontend (TVAPyMM-front/.env)
Cree un archivo .env en la raíz de la carpeta del frontend:
VITE_API_URL=http://localhost:8080
VITE_AUTH0_DOMAIN=dev-tvapymm.us.auth0.com
VITE_AUTH0_CLIENT_ID=tu-auth0-client-id
VITE_AUTH0_AUDIENCE=https://api.tvapymm.com
🚀 Ejecución de los Servicios
1. Docker Compose Watch (Recomendado para Backend)
La arquitectura de desarrollo backend hace uso de Dockerfile.dev, integrando la herramienta de desarrollo Spring Boot DevTools y la compilación continua de Gradle. Mediante el uso de Docker Compose Watch, cualquier cambio en los archivos fuente locales se sincroniza de inmediato con el contenedor, aplicando una recarga de clases dinámica en 1 ó 2 segundos.
cd TVAPyMM-back
# Levantar los servicios y activar la sincronización automática de archivos
docker compose watch
Si simplemente prefiere iniciar los contenedores de la forma tradicional sin sincronización activa de código:
docker compose up
2. Servidor de Desarrollo del Frontend
El frontend está desarrollado bajo la estructura de React, TypeScript y Vite. Para iniciar el servidor de desarrollo web local:
cd TVAPyMM-front
# Instalar los paquetes node
npm install
# Levantar el servidor Vite
npm run dev
Diríjase en su navegador web a la dirección http://localhost:5173 para acceder a la aplicación.
🧪 Pruebas con la Aplicación Vulnerable Real
Para corroborar que los algoritmos de análisis reportan hallazgos legítimos, TVAPyMM incluye una aplicación web de testeo que contiene brechas de seguridad explotables reales: TVAPyMM-VulnerableApp.
Paso 1: Levantar la Aplicación Vulnerable
Los tests de integración realizan peticiones directas sobre este objetivo seguro en el puerto SSL 8443. Procure encenderlo antes de iniciar las suites de pruebas:
cd TVAPyMM-VulnerableApp
./run.sh
Paso 2: Ejecutar los Tests de Integración del Backend
Con la aplicación vulnerable activa en puerto 8443, lance las pruebas correspondientes desde la raíz del backend:
cd TVAPyMM-back
# Ejecutar las pruebas de integración de escáneres específicos
./gradlew test --tests "*.CryptographicFailuresScannerIntegrationTest" \
--tests "*.InjectionScannerIntegrationTest"
Los tests de integración implementan el validador Assumptions.assumeTrue(...) de JUnit 5. Si la aplicación vulnerable no está ejecutándose en el puerto 8443, los tests correspondientes se marcarán como omitidos (skipped) en lugar de fallar, evitando romper builds cuando trabaje sin conexión.
Paso 3: Lanzar la Suite General de Pruebas
Para correr la batería general de pruebas unitarias, mappers de datos y validaciones de base de datos mockeada:
./gradlew test
Las pruebas de Spring utilizan una base de datos en memoria H2, asegurando que sus transacciones no interfieran en absoluto con los registros de la base de datos PostgreSQL de su entorno de desarrollo local.