Resolve #5: migrar el router de Fastify a Express
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 incorporaronexpress,@types/express,supertesty@types/supertest. -
src/middleware/validate.ts(nuevo): Middleware reutilizable para validación debody,paramsyquerycon esquemas Zod. -
src/middleware/errorHandler.ts: Adaptado a middleware de 4 parámetros de Express, gestionandoZodErrorcon 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íatry/catchy delegación anext(error). -
src/routes/index.ts: Convertido aRouter()de Express montando la validación Zod y controladores correspondientes. -
src/app.ts&src/index.ts: Inicialización de la aplicación Express con middlewareexpress.json(), router montado y arranque del servidor víaapp.listen. -
src/app.spec.ts: Pruebas migradas deapp.inject()asupertest(app).
Cómo probar los cambios
- Instalar dependencias limpias:
npm ci - Ejecutar la suite de pruebas unitarias/integración:
npm test(9/9 tests aprobados) - Compilar el código TypeScript:
npm run build - 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 |
|
0 |
| C09 | Segregación de funciones |
|
0 |
| C10 | Documentación técnica |
|
0 |
| C13 | Registro de Logs |
|
0 |
| C14 | Seguridad en datos |
|
0 |
| C15 | CI/CD |
|
0 |
| C16 | Seguridad en API's |
|
0 |
| C35 | Claves y credenciales en el código |
|
0 |
Hallazgos bloqueantes
No se detectaron hallazgos bloqueantes en ninguno de los 8 controles evaluados.
Observaciones no bloqueantes
-
C15 (CI/CD) —
infoenpackage.json:6: Scriptlintno configurado en los scripts del proyecto.