From 37c39d342149fe2b3aabf11fc29db531dcae70a2 Mon Sep 17 00:00:00 2001 From: dbarkowsky Date: Fri, 16 Feb 2024 14:27:20 -0800 Subject: [PATCH] testing error catching --- express-api/src/express.ts | 9 ++++++++- express-api/src/middleware/errorHandler.ts | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 express-api/src/middleware/errorHandler.ts diff --git a/express-api/src/express.ts b/express-api/src/express.ts index 29d9a551b0..9e5e45b3eb 100644 --- a/express-api/src/express.ts +++ b/express-api/src/express.ts @@ -1,5 +1,5 @@ import 'dotenv/config.js'; -import express, { Application, RequestHandler } from 'express'; +import express, { Application, NextFunction, Request, RequestHandler, Response } from 'express'; import cookieParser from 'cookie-parser'; import compression from 'compression'; import cors from 'cors'; @@ -12,6 +12,7 @@ import { KEYCLOAK_OPTIONS } from '@/middleware/keycloak/keycloakOptions'; import swaggerUi from 'swagger-ui-express'; import { Roles } from '@/constants/roles'; import swaggerJSON from '@/swagger/swagger-output.json'; +import errorHandler from '@/middleware/errorHandler'; const app: Application = express(); @@ -64,6 +65,11 @@ app.use(`/api/v2`, headerHandler as RequestHandler); // Unprotected Routes app.use(`/api/v2/health`, router.healthRouter); +// TODO: Remove after testing +app.use('/error', async (req: Request, res: Response, next: NextFunction) => { + next('test'); +}); + // Protected Routes app.use(`/api/v2/ltsa`, protectedRoute(), router.ltsaRouter); app.use(`/api/v2/admin`, protectedRoute([Roles.ADMIN]), router.adminRouter); @@ -78,4 +84,5 @@ app.use(`/api/v2/projects`, protectedRoute(), router.projectsRouter); app.use(`/api/v2/reports`, protectedRoute(), router.reportsRouter); app.use(`/api/v2/tools`, protectedRoute(), router.toolsRouter); +app.use(errorHandler); export default app; diff --git a/express-api/src/middleware/errorHandler.ts b/express-api/src/middleware/errorHandler.ts new file mode 100644 index 0000000000..ea679257f6 --- /dev/null +++ b/express-api/src/middleware/errorHandler.ts @@ -0,0 +1,16 @@ +import { ErrorWithCode } from "@/utilities/customErrors/ErrorWithCode"; +import { NextFunction, Request, Response } from "express"; + +const errorHandler = ( + err: string | Error | ErrorWithCode, + req: Request, + res: Response, + next: NextFunction, +) => { + const message = err instanceof Error ? err.message : err; + const code = err instanceof ErrorWithCode ? err.code : 400; + res.status(code).send(`it's broken: ${message}`); + next(); +}; + +export default errorHandler;