diff --git a/packages/server/src/api/routes/public/index.ts b/packages/server/src/api/routes/public/index.ts index e4fd9d5ea7..8e4533f156 100644 --- a/packages/server/src/api/routes/public/index.ts +++ b/packages/server/src/api/routes/public/index.ts @@ -146,8 +146,8 @@ function applyRoutes( addMiddleware(endpoints.read, mapperMiddleware, { output: true }) addMiddleware(endpoints.write, mapperMiddleware, { output: true }) if (env.isTest()) { - addMiddleware(endpoints.read, testErrorHandling) - addMiddleware(endpoints.write, testErrorHandling) + addMiddleware(endpoints.read, testErrorHandling()) + addMiddleware(endpoints.write, testErrorHandling()) } addToRouter(endpoints.read) addToRouter(endpoints.write) diff --git a/packages/server/src/api/routes/public/middleware/testErrorHandling.ts b/packages/server/src/api/routes/public/middleware/testErrorHandling.ts index 82519102d2..b22acae8a8 100644 --- a/packages/server/src/api/routes/public/middleware/testErrorHandling.ts +++ b/packages/server/src/api/routes/public/middleware/testErrorHandling.ts @@ -1,24 +1,28 @@ import { Ctx } from "@budibase/types" import environment from "../../../../environment" -export default async (ctx: Ctx, next: any) => { - try { - await next() - } catch (err: any) { - if ( - !(environment.isTest() && ctx.headers["x-budibase-include-stacktrace"]) - ) { - throw err +export default () => { + if (!environment.isTest()) { + throw new Error("This middleware is only for testing") + } + + return async (ctx: Ctx, next: any) => { + try { + await next() + } catch (err: any) { + if (!ctx.headers["x-budibase-include-stacktrace"]) { + throw err + } + + const status = err.status || err.statusCode || 500 + + let error = err + while (error.cause) { + error = error.cause + } + + ctx.status = status + ctx.body = { status, message: error.message, stack: error.stack } } - - const status = err.status || err.statusCode || 500 - - let error = err - while (error.cause) { - error = error.cause - } - - ctx.status = status - ctx.body = { status, message: error.message, stack: error.stack } } }