From afe7c9047c1ae904ac30a4ae35b4d69cb647eb5b Mon Sep 17 00:00:00 2001 From: om-3004 Date: Thu, 17 Oct 2024 10:47:34 +0530 Subject: [PATCH] Handle imports exports format check resolution tests code --- Server/controllers/monitorController.js | 1 + Server/routes/monitorRoute.js | 5 +- .../controllers/monitorController.test.js | 95 ++++++++++--------- 3 files changed, 52 insertions(+), 49 deletions(-) diff --git a/Server/controllers/monitorController.js b/Server/controllers/monitorController.js index 905a4b9bd..93d4e4f1c 100644 --- a/Server/controllers/monitorController.js +++ b/Server/controllers/monitorController.js @@ -514,6 +514,7 @@ export { getMonitorsAndSummaryByTeamId, getMonitorsByTeamId, createMonitor, + checkEndpointResolution, deleteMonitor, deleteAllMonitors, editMonitor, diff --git a/Server/routes/monitorRoute.js b/Server/routes/monitorRoute.js index f45f3ba33..a0ab11d84 100644 --- a/Server/routes/monitorRoute.js +++ b/Server/routes/monitorRoute.js @@ -7,6 +7,7 @@ import { getMonitorsAndSummaryByTeamId, getMonitorsByTeamId, createMonitor, + checkEndpointResolution, deleteMonitor, deleteAllMonitors, editMonitor, @@ -30,13 +31,13 @@ router.get("/team/:teamId", getMonitorsByTeamId); router.get( "/resolution/url", isAllowed(["admin", "superadmin"]), - monitorController.checkEndpointResolution + checkEndpointResolution ) router.delete( "/:monitorId", isAllowed(["admin", "superadmin"]), - monitorController.deleteMonitor + deleteMonitor ); router.post("/", isAllowed(["admin", "superadmin"]), createMonitor); diff --git a/Server/tests/controllers/monitorController.test.js b/Server/tests/controllers/monitorController.test.js index eb8c8e44a..d05685cdb 100644 --- a/Server/tests/controllers/monitorController.test.js +++ b/Server/tests/controllers/monitorController.test.js @@ -6,6 +6,7 @@ import { getMonitorsAndSummaryByTeamId, getMonitorsByTeamId, createMonitor, + checkEndpointResolution, deleteMonitor, deleteAllMonitors, editMonitor, @@ -461,53 +462,53 @@ describe("Monitor Controller - createMonitor", () => { }); describe('checkEndpointResolution', () => { - let dnsResolveStub; - beforeEach(() => { - req = { query: { monitorURL: 'https://example.com' } }; - res = { status: sinon.stub().returnsThis(), json: sinon.stub() }; - next = sinon.stub(); - dnsResolveStub = sinon.stub(dns, 'resolve'); - }); - afterEach(() => { - dnsResolveStub.restore(); - }); - it('should resolve the URL successfully', async () => { - dnsResolveStub.callsFake((hostname, callback) => callback(null)); - await checkEndpointResolution(req, res, next); - expect(res.status.calledWith(200)).to.be.true; - expect(res.json.calledWith({ - success: true, - msg: 'URL resolved successfully', - })).to.be.true; - expect(next.called).to.be.false; - }); - it("should return a 400 error message if DNS resolution fails", async () => { - const dnsError = new Error("DNS resolution failed"); - dnsResolveStub.callsFake((hostname, callback) => callback(dnsError)); - await checkEndpointResolution(req, res, next); - expect(res.status.calledOnceWith(400)).to.be.true; - expect(res.json.calledOnceWith({ - success: false, - msg: "DNS resolution failed", - })).to.be.true; - expect(next.notCalled).to.be.true; - }); - it('should call next with an error for invalid monitorURL', async () => { - req.query.monitorURL = 'invalid-url'; - await checkEndpointResolution(req, res, next); - expect(next.calledOnce).to.be.true; - const error = next.getCall(0).args[0]; - expect(error).to.be.an.instanceOf(Error); - expect(error.message).to.include('Invalid URL'); - }); - it('should handle an edge case where monitorURL is not provided', async () => { - req.query = {}; - await checkEndpointResolution(req, res, next); - expect(next.calledOnce).to.be.true; - const error = next.getCall(0).args[0]; - expect(error).to.be.an.instanceOf(Error); - expect(error.message).to.include('Invalid URL'); - }); + let req, res, next, dnsResolveStub; + beforeEach(() => { + req = { query: { monitorURL: 'https://example.com' } }; + res = { status: sinon.stub().returnsThis(), json: sinon.stub() }; + next = sinon.stub(); + dnsResolveStub = sinon.stub(dns, 'resolve'); + }); + afterEach(() => { + dnsResolveStub.restore(); + }); + it('should resolve the URL successfully', async () => { + dnsResolveStub.callsFake((hostname, callback) => callback(null)); + await checkEndpointResolution(req, res, next); + expect(res.status.calledWith(200)).to.be.true; + expect(res.json.calledWith({ + success: true, + msg: 'URL resolved successfully', + })).to.be.true; + expect(next.called).to.be.false; + }); + it("should return a 400 error message if DNS resolution fails", async () => { + const dnsError = new Error("DNS resolution failed"); + dnsResolveStub.callsFake((hostname, callback) => callback(dnsError)); + await checkEndpointResolution(req, res, next); + expect(res.status.calledOnceWith(400)).to.be.true; + expect(res.json.calledOnceWith({ + success: false, + msg: "DNS resolution failed", + })).to.be.true; + expect(next.notCalled).to.be.true; + }); + it('should call next with an error for invalid monitorURL', async () => { + req.query.monitorURL = 'invalid-url'; + await checkEndpointResolution(req, res, next); + expect(next.calledOnce).to.be.true; + const error = next.getCall(0).args[0]; + expect(error).to.be.an.instanceOf(Error); + expect(error.message).to.include('Invalid URL'); + }); + it('should handle an edge case where monitorURL is not provided', async () => { + req.query = {}; + await checkEndpointResolution(req, res, next); + expect(next.calledOnce).to.be.true; + const error = next.getCall(0).args[0]; + expect(error).to.be.an.instanceOf(Error); + expect(error.message).to.include('Invalid URL'); + }); }); describe("Monitor Controller - deleteMonitor", () => {