From 752ae10ebb3ff157bc91aaff32920052e1fbf9e6 Mon Sep 17 00:00:00 2001 From: Zain Kassam Date: Mon, 27 Jan 2025 11:07:26 +0000 Subject: [PATCH] feat(FN-3611): updated and renamed cache middlewear and added test --- libs/common/src/middleware/index.ts | 2 +- .../src/middleware/set-cache-control.test.ts | 21 +++++++++++++++++++ .../src/middleware/set-cache-control.ts | 15 +++++++++++++ .../middleware/set-no-store-cache-control.ts | 14 ------------- .../routes/utilisation-reports/index.ts | 6 +++--- 5 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 libs/common/src/middleware/set-cache-control.test.ts create mode 100644 libs/common/src/middleware/set-cache-control.ts delete mode 100644 libs/common/src/middleware/set-no-store-cache-control.ts diff --git a/libs/common/src/middleware/index.ts b/libs/common/src/middleware/index.ts index f99a3b216e..3996a386a3 100644 --- a/libs/common/src/middleware/index.ts +++ b/libs/common/src/middleware/index.ts @@ -1,3 +1,3 @@ export * from './feature-flags'; export * from './create-validation-middleware-for-schema'; -export * from './set-no-store-cache-control'; +export * from './set-cache-control'; diff --git a/libs/common/src/middleware/set-cache-control.test.ts b/libs/common/src/middleware/set-cache-control.test.ts new file mode 100644 index 0000000000..bd3c9de23d --- /dev/null +++ b/libs/common/src/middleware/set-cache-control.test.ts @@ -0,0 +1,21 @@ +import request from 'supertest'; +import express from 'express'; +import { HttpStatusCode } from 'axios'; +import { setCacheControl } from './set-cache-control'; + +const app = express(); +app.use(setCacheControl); +app.get('/', (_req, res) => res.send()); + +afterEach(() => { + jest.resetAllMocks(); +}); + +describe('set-no-store-cache-control', () => { + it('should set Cache-Control headers correctly', async () => { + const response = await request(app).get('/'); + + expect(response.headers['cache-control']).toBe('no-cache, no-store, must-revalidate, max-age=0'); + expect(response.status).toBe(HttpStatusCode.Ok); + }); +}); diff --git a/libs/common/src/middleware/set-cache-control.ts b/libs/common/src/middleware/set-cache-control.ts new file mode 100644 index 0000000000..2fca59925b --- /dev/null +++ b/libs/common/src/middleware/set-cache-control.ts @@ -0,0 +1,15 @@ +import { Request, Response, NextFunction } from 'express'; + +/** + * middleware to set Cache-Control to no-store, no-cache, must-revalidate and max-age=0 + * stops cached version of a page being rendered when going back to a page (using the browser back button) + * ensures the get controller for the page is called + * @param _req + * @param res + * @param next + */ +export const setCacheControl = (_req: Request, res: Response, next: NextFunction) => { + res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate, max-age=0'); + + next(); +}; diff --git a/libs/common/src/middleware/set-no-store-cache-control.ts b/libs/common/src/middleware/set-no-store-cache-control.ts deleted file mode 100644 index 826884acb3..0000000000 --- a/libs/common/src/middleware/set-no-store-cache-control.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; - -/** - * middleware to set Cache-Control to no-store - * stops cached version of a page being rendered when going back to a page (using the browser back button) - * ensures the get controller for the page is called (if cached, get controller for a page is not called) - * @param _req - * @param res - * @param next - */ -export const setNoStoreCacheControl = (_req: Request, res: Response, next: NextFunction) => { - res.set('Cache-Control', 'no-store'); - next(); -}; diff --git a/trade-finance-manager-ui/server/routes/utilisation-reports/index.ts b/trade-finance-manager-ui/server/routes/utilisation-reports/index.ts index bb4ff4beaa..6844893bb8 100644 --- a/trade-finance-manager-ui/server/routes/utilisation-reports/index.ts +++ b/trade-finance-manager-ui/server/routes/utilisation-reports/index.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-misused-promises */ import express from 'express'; -import { PDC_TEAM_IDS, validateFeeRecordCorrectionFeatureFlagIsEnabled, setNoStoreCacheControl } from '@ukef/dtfs2-common'; +import { PDC_TEAM_IDS, validateFeeRecordCorrectionFeatureFlagIsEnabled, setCacheControl } from '@ukef/dtfs2-common'; import { getUtilisationReports } from '../../controllers/utilisation-reports'; import { updateUtilisationReportStatus } from '../../controllers/utilisation-reports/update-utilisation-report-status'; import { @@ -162,7 +162,7 @@ utilisationReportsRoutes.post( utilisationReportsRoutes.get( '/:reportId/create-record-correction-request/:feeRecordId', validateFeeRecordCorrectionFeatureFlagIsEnabled, - setNoStoreCacheControl, + setCacheControl, validateUserTeam([PDC_TEAM_IDS.PDC_RECONCILE]), validateSqlId('reportId'), validateSqlId('feeRecordId'), @@ -180,7 +180,7 @@ utilisationReportsRoutes.post( utilisationReportsRoutes.get( '/:reportId/create-record-correction-request/:feeRecordId/check-the-information', - setNoStoreCacheControl, + setCacheControl, validateFeeRecordCorrectionFeatureFlagIsEnabled, validateUserTeam([PDC_TEAM_IDS.PDC_RECONCILE]), validateSqlId('reportId'),