CreaRack-SL

🧪 Guía Completa de Testing Local - CreaRack Pro v5.0

🧪 Guía Completa de Testing Local - CreaRack Pro v5.0

Última actualización: 20-01-2026 Para: Testing exhaustivo antes de deploy a producción


📋 ÍNDICE

  1. Preparación del Entorno
  2. Carga de Datos de Prueba
  3. Checklist de Validación Funcional
  4. Casos de Uso a Probar
  5. Testing de Performance
  6. Troubleshooting

🚀 Preparación del Entorno

Paso 1: Iniciar Docker

cd CreaRack_Pro_app_Django
docker compose up -d

Paso 2: Verificar que todo funcione

# Ver logs
docker compose logs -f web

# Verificar servicios
docker compose ps

# Debería mostrar:
# - crearack_db (healthy)
# - crearack_cache (healthy)
# - crearack_web (running)

Paso 3: Acceder a la aplicación


📦 Carga de Datos de Prueba

Opción 1: Script Automático (Recomendado)

# Ejecutar script de carga
docker exec crearack_web python scripts/load_test_data.py

Este script crea:

  • 3 Organizaciones
  • 5 Usuarios (diferentes roles)
  • 5 Grupos de Racks
  • 8 Racks
  • 10 Dispositivos de red
  • 6 Backups de configuración
  • 5 Script Templates
  • 2 Blueprints

Opción 2: Reset Completo (Empezar desde cero)

# En Git Bash o Linux/Mac
bash scripts/reset_database.sh

# O manualmente:
docker compose down
docker volume rm crearack_pro_app_django_pg_data
docker compose up -d
sleep 10
docker exec crearack_web python manage.py migrate
docker exec crearack_web python scripts/load_test_data.py

Usuarios de Prueba Creados

UsuarioPasswordRolOrganización
adminadmin123AdminACME Corporation
operator1operator123OperatorACME Corporation
viewerviewer123ReadonlyACME Corporation
techstart_adminadmin123AdminTechStart Inc
global_adminadmin123AdminGlobal Networks

✅ Checklist de Validación Funcional

1. Autenticación y Usuarios ✅

  • Login con usuario admin funciona
  • Login con usuario operator funciona
  • Login con usuario readonly funciona
  • Logout funciona correctamente
  • Redirección correcta según rol
  • Admin puede acceder a /admin
  • Operator NO puede acceder a /admin
  • Readonly NO puede acceder a /admin

Cómo probar:

1. Ir a http://localhost:8000
2. Login con admin / admin123
3. Verificar que puedes acceder a todas las funciones
4. Logout
5. Login con viewer / viewer123
6. Verificar que solo puedes VER datos (no crear/editar/eliminar)

2. Gestión de Racks ✅

  • Listar racks existentes
  • Ver detalles de un rack
  • Crear nuevo rack
  • Editar rack existente
  • Eliminar rack (con confirmación)
  • Clonar rack
  • Renombrar rack
  • Filtrar racks por grupo
  • Buscar racks por nombre

Cómo probar:

1. Ir a sección de Racks
2. Ver lista de racks (RACK-A1-01, RACK-A1-02, etc.)
3. Click en "Nuevo Rack"
4. Crear rack TEST-RACK-01 (42U)
5. Editar nombre a TEST-RACK-UPDATED
6. Clonar rack → Verificar que se crea TEST-RACK-UPDATED-COPY
7. Eliminar TEST-RACK-UPDATED-COPY
8. Verificar que se eliminó correctamente

Endpoint API a probar:

# Listar racks
curl http://localhost:8000/api/racks

# Ver rack específico
curl http://localhost:8000/api/racks/1

# Crear rack
curl -X POST http://localhost:8000/api/racks \
  -H "Content-Type: application/json" \
  -d '{"name":"TEST-API","height_u":42,"organization":1}'

3. Gestión de Dispositivos ✅

  • Listar dispositivos en un rack
  • Ver detalles de dispositivo
  • Crear nuevo dispositivo
  • Editar dispositivo
  • Mover dispositivo a otra posición (U)
  • Mover dispositivo a otro rack
  • Eliminar dispositivo
  • Ver IP y credenciales de dispositivo

Cómo probar:

1. Abrir rack RACK-A1-01
2. Ver dispositivos (CORE-SWITCH-01, FIREWALL-01, etc.)
3. Click en dispositivo CORE-SWITCH-01
4. Ver detalles: IP 10.0.1.1, Vendor cisco_ios
5. Editar y cambiar notas
6. Crear nuevo dispositivo TEST-DEVICE en posición U10
7. Mover a posición U15
8. Eliminar dispositivo TEST-DEVICE

4. Network Management API ✅

4.1 Device Management

  • GET /api/network/device/{id}/details - Ver info de dispositivo
  • GET /api/network/device/{id}/credentials - Ver credenciales

Prueba:

# Ver detalles del dispositivo ID 1
curl http://localhost:8000/api/network/device/1/details

# Ver credenciales
curl http://localhost:8000/api/network/device/1/credentials

4.2 Backup Management

  • GET /api/network/device/{id}/backups - Listar backups
  • GET /api/network/backup/{id}/view - Ver contenido de backup
  • POST /api/network/backup/compare - Comparar 2 backups

Prueba:

# Listar backups del dispositivo 1
curl http://localhost:8000/api/network/device/1/backups

# Ver backup específico
curl http://localhost:8000/api/network/backup/1/view

# Comparar backups
curl -X POST http://localhost:8000/api/network/backup/compare \
  -H "Content-Type: application/json" \
  -d '{"backup1_id":1,"backup2_id":2}'

4.3 Script Templates

  • GET /api/network/scripts - Listar templates
  • POST /api/network/scripts - Crear template (Admin/Operator)
  • PUT /api/network/scripts/{id} - Actualizar template
  • DELETE /api/network/scripts/{id} - Eliminar (Admin only)
  • GET /api/network/scripts?language=cisco_ios - Filtrar

Prueba:

# Listar scripts
curl http://localhost:8000/api/network/scripts

# Crear script (requiere autenticación)
curl -X POST http://localhost:8000/api/network/scripts \
  -H "Content-Type: application/json" \
  -d '{"name":"Test Script","script_content":"show version","language":"cisco_ios"}'

# Filtrar por lenguaje
curl "http://localhost:8000/api/network/scripts?language=cisco_ios"

5. Terminal SSH (WebSocket) ✅

  • Abrir terminal SSH
  • Conectar a dispositivo único
  • Conectar a cluster de dispositivos
  • Enviar comandos
  • Recibir output
  • Resize de terminal
  • Disconnect limpio

Cómo probar:

1. Ir a sección Terminal
2. Seleccionar dispositivo CORE-SWITCH-01
3. Click "Conectar"
4. Intentar enviar comando "show version"
5. Verificar WebSocket connection en DevTools
6. Cerrar terminal correctamente

Nota: Sin servidor SSH real, la conexión intentará pero fallará. Lo importante es verificar que:

  • WebSocket se conecta
  • No hay errores de JavaScript
  • UI responde correctamente

6. Blueprints ✅

  • Listar blueprints
  • Crear nuevo blueprint
  • Editar blueprint (canvas)
  • Añadir racks al canvas
  • Añadir dispositivos al canvas
  • Dibujar conexiones
  • Guardar cambios
  • Eliminar blueprint

Cómo probar:

1. Ir a Blueprints
2. Ver "Datacenter A - Layout"
3. Abrir blueprint
4. Intentar añadir rack al canvas
5. Verificar que Konva.js carga correctamente
6. Guardar cambios
7. Crear nuevo blueprint "Test Blueprint"
8. Eliminar "Test Blueprint"

7. Library/Stencils ✅

  • Listar categorías de stencils
  • Ver stencils por categoría
  • Crear stencil desde dispositivo
  • Eliminar categoría (Admin only)
  • Filtrar stencils

Cómo probar:

1. Ir a Library
2. Ver categorías predefinidas
3. Crear stencil desde CORE-SWITCH-01
4. Nombrar "My Cisco Switch Template"
5. Verificar que aparece en la biblioteca
6. Intentar eliminar categoría como Operator (debe fallar)
7. Login como Admin y eliminar categoría vacía

8. RBAC (Control de Acceso) ✅

Admin Role

  • Puede crear/editar/eliminar todo
  • Acceso a /admin
  • Puede eliminar script templates
  • Puede eliminar categorías
  • Puede disparar backups manuales

Operator Role

  • Puede crear/editar racks y dispositivos
  • Puede crear script templates
  • NO puede eliminar script templates
  • NO puede acceder a /admin
  • NO puede eliminar categorías

Readonly Role

  • Solo puede VER datos
  • NO puede crear nada
  • NO puede editar nada
  • NO puede eliminar nada
  • NO acceso a /admin

Cómo probar:

1. Login como viewer / viewer123
2. Intentar crear rack → Debería dar error 403
3. Intentar editar dispositivo → Debería dar error 403
4. Logout
5. Login como operator1 / operator123
6. Crear rack TEST-OPERATOR → Debería funcionar
7. Intentar DELETE script → Debería dar error 403
8. Logout
9. Login como admin / admin123
10. DELETE script → Debería funcionar

9. Tests de Paridad Automatizados ✅

Hemos “blindado” la paridad con Flask mediante una suite de pruebas automatizadas que verifican:

  • Tipos de datos en API Responses (especialmente float para geometría)
  • Estructura de Schemas (contrato estricto con Frontend)
  • Resolución de assets (stencils)

Ejecutar Suite de Paridad:

# Ejecutar toda la suite de paridad
docker compose exec web pytest tests/parity -vv

# Ejecutar solo tests de geometría
docker compose exec web pytest tests/parity/test_geometry.py -vv

# Ejecutar solo tests de esquemas
docker compose exec web pytest tests/parity/test_schemas.py -vv

🎯 Casos de Uso a Probar

Caso 1: Diseñar un Nuevo Datacenter

  1. Login como admin
  2. Crear grupo “Datacenter B - Production”
  3. Crear 3 racks: RACK-B-01, RACK-B-02, RACK-B-03
  4. Añadir dispositivos a cada rack:
    • RACK-B-01: Core Switch, Firewall
    • RACK-B-02: Distribution Switches
    • RACK-B-03: Servers
  5. Crear blueprint “Datacenter B Layout”
  6. Añadir racks al blueprint
  7. Dibujar conexiones entre dispositivos
  8. Guardar blueprint

Validar:

  • Todos los racks se ven en la lista
  • Dispositivos aparecen en posiciones correctas
  • Blueprint se guarda y recarga correctamente

Caso 2: Backup y Comparación de Configuraciones

  1. Seleccionar dispositivo CORE-SWITCH-01
  2. Ver backups existentes (debería haber 3)
  3. Abrir backup más reciente
  4. Ver contenido de configuración
  5. Comparar backup 1 vs backup 2
  6. Ver diff de cambios
  7. (Opcional) Disparar backup manual como Admin

Validar:

  • Backups se listan correctamente
  • Contenido se muestra formateado
  • Diff muestra diferencias claras
  • Fechas ordenadas correctamente

Caso 3: Gestión Multi-Tenant

  1. Login como admin (ACME Corporation)
  2. Crear rack RACK-ACME-01
  3. Logout
  4. Login como techstart_admin (TechStart Inc)
  5. Intentar ver RACK-ACME-01 → NO debería aparecer
  6. Crear rack RACK-TECH-01
  7. Logout
  8. Login como admin (ACME Corporation)
  9. Intentar ver RACK-TECH-01 → NO debería aparecer

Validar:

  • Aislamiento perfecto entre organizaciones
  • Cada usuario solo ve datos de su organización
  • No hay cross-tenant data leakage

Caso 4: Scripts Templates Workflow

  1. Login como operator1
  2. Ir a Script Templates
  3. Ver templates existentes
  4. Filtrar por cisco_ios
  5. Crear nuevo script “Show CDP Neighbors”
  6. Content: show cdp neighbors detail
  7. Guardar
  8. Editar descripción
  9. Intentar eliminar → Debería fallar (403)
  10. Logout
  11. Login como admin
  12. Eliminar script creado → Debería funcionar

Validar:

  • Operator puede crear y editar
  • Operator NO puede eliminar
  • Admin puede hacer todo
  • Filtros funcionan correctamente

📊 Testing de Performance

1. Carga de Muchos Racks

# Script para crear 100 racks
docker exec crearack_web python manage.py shell -c "
from racks.models import Rack
from core.models import Organization
org = Organization.objects.first()
for i in range(100):
    Rack.objects.create(name=f'PERF-TEST-{i:03d}', height_u=42, organization=org)
print('Created 100 racks')
"

# Medir tiempo de carga
time curl http://localhost:8000/api/racks

Objetivo: < 500ms para 100 racks


2. Queries N+1 (Validar Optimizaciones)

# Activar query logging
docker exec crearack_web python manage.py shell -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from django.db import connection
from django.test.utils import override_settings

# Ver queries
from racks.models import Device
devices = list(Device.objects.select_related('rack').all())
print(f'Total queries: {len(connection.queries)}')
for q in connection.queries:
    print(q['sql'][:100])
"

Validar: Usar select_related reduce queries significativamente


3. WebSocket Performance

// En DevTools Console
const ws = new WebSocket('ws://localhost:8000/ws/terminal/test-123/');
ws.onopen = () => {
    console.time('ping');
    ws.send(JSON.stringify({action: 'ping'}));
};
ws.onmessage = (event) => {
    console.timeEnd('ping');
    console.log('Latency:', event.data);
};

Objetivo: < 50ms de latencia local


🐛 Troubleshooting

Problema: “No module named ‘scripts’”

# Asegurarse de que scripts/__init__.py existe
docker exec crearack_web ls -la scripts/

# Si no existe, crearlo
docker exec crearack_web touch scripts/__init__.py

Problema: “Database connection refused”

# Verificar que PostgreSQL está corriendo
docker compose ps db

# Ver logs
docker compose logs db

# Restart si es necesario
docker compose restart db

Problema: “Static files not found”

# Recopilar archivos estáticos
docker exec crearack_web python manage.py collectstatic --noinput

# Verificar
curl http://localhost:8000/static/js/main.js

Problema: “Tests failing”

# Ejecutar tests con verbose
docker exec crearack_web pytest -vv

# Ver logs detallados
docker exec crearack_web pytest --tb=long

# Ejecutar test específico
docker exec crearack_web pytest network/tests/test_api.py::TestDeviceManagementAPI -v

📝 Reporte de Bugs

Si encuentras bugs durante el testing, documenta:

  1. Pasos para reproducir
  2. Comportamiento esperado
  3. Comportamiento actual
  4. Screenshots (si aplica)
  5. Logs relevantes

Template:

## Bug: [Título descriptivo]

### Pasos para reproducir
1. Login como admin
2. Ir a Racks
3. Click en crear rack
4. ...

### Esperado
Debería crear el rack correctamente

### Actual
Error 500 en consola

### Logs

[logs aquí]


### Screenshots
[adjuntar]

✅ Checklist Final Pre-Deployment

Antes de considerar lista la migración, verifica:

  • Todos los usuarios pueden login
  • RBAC funciona correctamente (Admin, Operator, Readonly)
  • CRUD de racks funciona
  • CRUD de dispositivos funciona
  • Network API responde correctamente (11/11 endpoints)
  • Backups se listan y comparan
  • Script templates funcionan (crear, editar, filtrar)
  • Blueprints se cargan (aunque Konva.js es legacy)
  • Library/Stencils funciona
  • WebSocket se conecta (aunque falle SSH real)
  • Multi-tenancy aísla datos correctamente
  • Performance es aceptable (< 500ms para listas)
  • No hay errores JavaScript en consola
  • Admin Django funciona
  • API Docs accesible
  • Tests automatizados 23/23 pasando

Última actualización: 21-01-2026 Versión: v5.0.0-beta.2 Estado: Listo para Producción (API Certified & Optimized)

Véase también

  • [[crearack-tech—guides—testing]] — guía de testing
  • [[crearack-tech—guides—docker-guide]] — guía de Docker Compose
  • [[crearack-tech—guides—production-deployment]] — deploy en producción Hetzner
  • [[crearack-tech—guides—deploy-checklist]] — checklist de deploy Golden Path
  • [[crearack-tech—agents—dev-core]] — perfil de subagente dev-core
  • [[crearack-tech—backend—refactoring-guide]] — guía de refactoring