Skip to content

Resolve #5: migrar el router de Fastify a Express

Pruebas Coppel requested to merge feat/issue-5-migracion-router-express into main

Resumen de Implementación: Migración del Router de Fastify a Express

Qué se cambió y por qué

Se realizó la migración integral de la capa HTTP y enrutamiento del microservicio desde Fastify hacia Express para resolver el issue #5 (closed), garantizando la compatibilidad total con los contratos de API existentes, la validación de esquemas Zod y la suite de pruebas automatizadas.

Archivos modificados y creados

  • package.json & package-lock.json: Se eliminaron dependencias de Fastify (fastify, @fastify/swagger, @fastify/swagger-ui, fastify-type-provider-zod) y se incorporaron express, @types/express, supertest y @types/supertest.
  • src/middleware/validate.ts (nuevo): Middleware reutilizable para validación de body, params y query con esquemas Zod.
  • src/middleware/errorHandler.ts: Adaptado a middleware de 4 parámetros de Express, gestionando ZodError con código HTTP 400 ({ error: error.issues }) y errores internos con código HTTP 500 ({ error: 'Internal Server Error' }).
  • src/handlers/mainHandler.ts, src/handlers/pricingHandler.ts, src/handlers/orderHandler.ts, src/handlers/guideHandler.ts: Adaptados a firmas de controladores Express (req: Request, res: Response, next: NextFunction) con control de errores vía try/catch y delegación a next(error).
  • src/routes/index.ts: Convertido a Router() de Express montando la validación Zod y controladores correspondientes.
  • src/app.ts & src/index.ts: Inicialización de la aplicación Express con middleware express.json(), router montado y arranque del servidor vía app.listen.
  • src/app.spec.ts: Pruebas migradas de app.inject() a supertest(app).

Cómo probar los cambios

  1. Instalar dependencias limpias: npm ci
  2. Ejecutar la suite de pruebas unitarias/integración: npm test (9/9 tests aprobados)
  3. Compilar el código TypeScript: npm run build
  4. Iniciar el servicio localmente y validar las rutas HTTP: npm start

Closes #5 (closed)


Evidencia de Controles Coppel

Veredicto global: PASS | Total de hallazgos bloqueantes: 0

Control Descripción Veredicto Bloqueantes
C05 Corrección de vulnerabilidades en las aplicaciones ✅ PASS 0
C09 Segregación de funciones ✅ PASS 0
C10 Documentación técnica ✅ PASS 0
C13 Registro de Logs ✅ PASS 0
C14 Seguridad en datos ✅ PASS 0
C15 CI/CD ✅ PASS 0
C16 Seguridad en API's ✅ PASS 0
C35 Claves y credenciales en el código ✅ PASS 0

Hallazgos bloqueantes

No se detectaron hallazgos bloqueantes en ninguno de los 8 controles evaluados.

Observaciones no bloqueantes

  • C15 (CI/CD) — info en package.json:6: Script lint no configurado en los scripts del proyecto.

Merge request reports