From 90e577dd3fd0e45023c8a64fe05a52957e492470 Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Tue, 15 Jul 2025 09:02:57 +1200 Subject: [PATCH] Rework tests --- server/forcessl.mw.spec.js | 96 +++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 52 deletions(-) diff --git a/server/forcessl.mw.spec.js b/server/forcessl.mw.spec.js index c22954f68..e18821e6d 100644 --- a/server/forcessl.mw.spec.js +++ b/server/forcessl.mw.spec.js @@ -1,73 +1,65 @@ import forceSSL from './forcessl.mw'; describe('Tests for ForceSSL middleware', ()=>{ + let originalEnv; + let nextFn; - it('should call next() when NODE_ENV is set to local', ()=>{ - const nodeEnv = process.env.NODE_ENV; - process.env.NODE_ENV = 'local'; + let req = {}; + let res = {}; - const nextFn = jest.fn(); + beforeEach(()=>{ + originalEnv = process.env.NODE_ENV; + nextFn = jest.fn(); - forceSSL(null, null, nextFn); - - process.env.NODE_ENV = nodeEnv; - - expect(nextFn).toHaveBeenCalled(); - }); - - it('should call next() when NODE_ENV is set to docker', ()=>{ - const nodeEnv = process.env.NODE_ENV; - process.env.NODE_ENV = 'docker'; - - const nextFn = jest.fn(); - - forceSSL(null, null, nextFn); - - process.env.NODE_ENV = nodeEnv; - - expect(nextFn).toHaveBeenCalled(); - }); - - it('should return 302 when header not HTTPS', ()=>{ - const nodeEnv = process.env.NODE_ENV; - process.env.NODE_ENV = 'test'; - - const req = { - header : ()=>{ return true; }, + req = { + header : ()=>{ return 'http'; }, get : ()=>{ return 'test'; }, url : 'URL' }; - const res = { - redirect : jest.fn((code, url)=>{}) + res = { + redirect : jest.fn() }; - - const nextFn = jest.fn(); - - forceSSL(req, res, nextFn); - - process.env.NODE_ENV = nodeEnv; - - expect(res.redirect).toHaveBeenCalledWith(302, 'https://testURL'); + }); + afterEach(()=>{ + process.env.NODE_ENV = originalEnv; + jest.clearAllMocks(); }); - it('should call next() header is HTTPS and NODE_ENV not local or docker', ()=>{ - const nodeEnv = process.env.NODE_ENV; + it('should not redirect when NODE_ENV is set to local', ()=>{ + process.env.NODE_ENV = 'local'; + + forceSSL(null, null, nextFn); + + expect(res.redirect).not.toHaveBeenCalled(); + expect(nextFn).toHaveBeenCalled(); + }); + + it('should not redirect when NODE_ENV is set to docker', ()=>{ + process.env.NODE_ENV = 'docker'; + + forceSSL(null, null, nextFn); + + expect(res.redirect).not.toHaveBeenCalled(); + expect(nextFn).toHaveBeenCalled(); + }); + + it('should redirect with 302 when header is not HTTPS and NODE_ENV is not local or docker', ()=>{ process.env.NODE_ENV = 'test'; - const req = { - header : ()=>{ return 'https'; } - }; - - const res = { - }; - - const nextFn = jest.fn(); - forceSSL(req, res, nextFn); - process.env.NODE_ENV = nodeEnv; + expect(res.redirect).toHaveBeenCalledWith(302, 'https://testURL'); + expect(nextFn).not.toHaveBeenCalled(); + }); + it('should not redirect when header is HTTPS and NODE_ENV is not local or docker', ()=>{ + process.env.NODE_ENV = 'test'; + req.header = ()=>{ return 'https'; }; + + forceSSL(req, res, nextFn); + + expect(res.redirect).not.toHaveBeenCalled(); expect(nextFn).toHaveBeenCalled(); });