diff --git a/app.js b/app.js index 52d8be9e2..383086921 100644 --- a/app.js +++ b/app.js @@ -23,12 +23,13 @@ app.use(function (req, res, next) { }); // error handler -app.use(function (err, req, res, next) { +app.use(function (err, req, res, _next) { if (isMulterError(err)) { - multerErrorHandling(err, req, res); - } else { - res.boom.notFound(err); + return multerErrorHandling(err, req, res); } + return res.boom.boomify(err, { + statusCode: err.statusCode, + }); }); module.exports = app; diff --git a/controllers/extensionRequests.js b/controllers/extensionRequests.js index f4ebc0d97..e95ebc78c 100644 --- a/controllers/extensionRequests.js +++ b/controllers/extensionRequests.js @@ -105,7 +105,7 @@ const createTaskExtensionRequest = async (req, res) => { */ const fetchExtensionRequests = async (req, res) => { try { - const { cursor, size, order } = req.query; + const { cursor, size = 5, order } = req.query; const { status, taskId, assignee } = parseQueryParams(req._parsedUrl.search); const { transformedSize, transformedStatus } = transformQuery(size, status); diff --git a/controllers/onboardingExtension.ts b/controllers/onboardingExtension.ts index 356bd20e9..d72a3c26e 100644 --- a/controllers/onboardingExtension.ts +++ b/controllers/onboardingExtension.ts @@ -151,10 +151,6 @@ export const updateOnboardingExtensionRequestState = async ( req: UpdateOnboardingExtensionStateRequest, res: OnboardingExtensionResponse ) : Promise => { - - const dev = req.query.dev === "true"; - - if(!dev) return res.boom.notImplemented("Feature not implemented"); const body = req.body as UpdateOnboardingExtensionStateRequestBody; const lastModifiedBy = req?.userData?.id; @@ -224,9 +220,6 @@ export const updateOnboardingExtensionRequestController = async ( const id = req.params.id; const lastModifiedBy = req?.userData?.id; const isSuperuser = req?.userData?.roles?.super_user === true; - const dev = req.query.dev === "true"; - - if(!dev) return res.boom.notImplemented("Feature not implemented"); try{ const extensionRequestDoc = await requestModel.doc(id).get(); diff --git a/middlewares/skipAuthenticateForOnboardingExtension.ts b/middlewares/skipAuthenticateForOnboardingExtension.ts index 0babcea74..92bd5802b 100644 --- a/middlewares/skipAuthenticateForOnboardingExtension.ts +++ b/middlewares/skipAuthenticateForOnboardingExtension.ts @@ -14,17 +14,11 @@ import { REQUEST_TYPE } from "../constants/requests"; export const skipAuthenticateForOnboardingExtensionRequest = (authenticate, verifyDiscordBot) => { return async (req: Request, res: Response, next: NextFunction) => { const type = req.body.type; - const dev = req.query.dev; if(type === REQUEST_TYPE.ONBOARDING){ - if (dev != "true"){ - return res.status(501).json({ - message: "Feature not implemented" - }) - } return await verifyDiscordBot(req, res, next); } return await authenticate(req, res, next) } -} \ No newline at end of file +} diff --git a/models/progresses.js b/models/progresses.js index befc56dcd..c0eb353d6 100644 --- a/models/progresses.js +++ b/models/progresses.js @@ -50,15 +50,11 @@ const createProgressDocument = async (progressData) => { * @throws {Error} If the userId or taskId is invalid or does not exist. **/ const getProgressDocument = async (queryParams) => { - const { dev } = queryParams; await assertUserOrTaskExists(queryParams); const query = buildQueryToFetchDocs(queryParams); const progressDocs = await getProgressDocs(query); - if (dev === "true") { - return await addUserDetailsToProgressDocs(progressDocs); - } - return progressDocs; + return await addUserDetailsToProgressDocs(progressDocs); }; /** diff --git a/test/integration/extensionRequests.test.js b/test/integration/extensionRequests.test.js index bf64c44ab..8cd06f966 100644 --- a/test/integration/extensionRequests.test.js +++ b/test/integration/extensionRequests.test.js @@ -281,6 +281,24 @@ describe("Extension Requests", function () { }); }); + it("should return 5 extension requests by default when size query is not provided", function (done) { + chai + .request(app) + .get(`/extension-requests`) + .set("cookie", `${cookieName}=${appOwnerjwt}`) + .end((err, res) => { + if (err) { + return done(err); + } + expect(res).to.have.status(200); + expect(res.body).to.be.a("object"); + expect(res.body.message).to.be.equal("Extension Requests returned successfully!"); + expect(res.body.allExtensionRequests).to.be.a("array"); + expect(res.body.allExtensionRequests).to.have.lengthOf(5); + return done(); + }); + }); + it("should return success response and all extension requests with query params", function (done) { chai .request(app) diff --git a/test/integration/onboardingExtension.test.ts b/test/integration/onboardingExtension.test.ts index 4c81e98b7..6d493527c 100644 --- a/test/integration/onboardingExtension.test.ts +++ b/test/integration/onboardingExtension.test.ts @@ -75,7 +75,7 @@ describe("/requests Onboarding Extension", () => { it("should not call verifyDiscordBot and return 401 response when extension type is not onboarding", (done)=> { chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .send({...body, type: REQUEST_TYPE.OOO}) .end((err, res)=>{ if(err) return done(err); @@ -86,22 +86,10 @@ describe("/requests Onboarding Extension", () => { }) }) - it("should return Feature not implemented when dev is not true", (done) => { - chai.request(app) - .post(`${postEndpoint}`) - .send(body) - .end((err, res)=>{ - if (err) return done(err); - expect(res.statusCode).to.equal(501); - expect(res.body.message).to.equal("Feature not implemented"); - done(); - }) - }) - it("should return Invalid Request when authorization header is missing", (done) => { chai .request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", "") .send(body) .end((err, res) => { @@ -114,7 +102,7 @@ describe("/requests Onboarding Extension", () => { it("should return Unauthorized Bot for invalid token", (done) => { chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${BAD_TOKEN}`) .send(body) .end((err, res) => { @@ -127,7 +115,7 @@ describe("/requests Onboarding Extension", () => { it("should return 400 response for invalid value type of numberOfDays", (done) => { chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send({...body, numberOfDays:"1"}) .end((err, res) => { @@ -141,7 +129,7 @@ describe("/requests Onboarding Extension", () => { it("should return 400 response for invalid value of numberOfDays", (done) => { chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send({...body, numberOfDays:1.4}) .end((err, res) => { @@ -155,7 +143,7 @@ describe("/requests Onboarding Extension", () => { it("should return 400 response for invalid userId", (done) => { chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send({...body, userId: undefined}) .end((err, res) => { @@ -172,7 +160,7 @@ describe("/requests Onboarding Extension", () => { sinon.stub(requestsQuery, "createRequest") .throws("Error while creating extension request"); chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send(body) .end((err, res)=>{ @@ -186,7 +174,7 @@ describe("/requests Onboarding Extension", () => { it("should return 500 response when discordJoinedAt date string is invalid", (done) => { createUserStatusWithState(testUserIdForInvalidDiscordJoinedDate, userStatusModel, userState.ONBOARDING); chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send({...body, userId: testUserDiscordIdForInvalidDiscordJoinedDate}) .end((err, res)=>{ @@ -199,7 +187,7 @@ describe("/requests Onboarding Extension", () => { it("should return 404 response when user does not exist", (done) => { chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send({...body, userId: "11111"}) .end((err, res) => { @@ -214,7 +202,7 @@ describe("/requests Onboarding Extension", () => { it("should return 403 response when user's status is not onboarding", (done)=> { createUserStatusWithState(testUserId, userStatusModel, userState.ACTIVE); chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send(body) .end((err, res) => { @@ -231,7 +219,7 @@ describe("/requests Onboarding Extension", () => { requestsQuery.createRequest({...extensionRequest, state: REQUEST_STATE.PENDING, userId: testUserId}); chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send(body) .end((err, res) => { @@ -246,7 +234,7 @@ describe("/requests Onboarding Extension", () => { it("should return 201 for successful response when user has onboarding state", (done)=> { createUserStatusWithState(testUserId, userStatusModel, userState.ONBOARDING); chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send(body) .end((err, res) => { @@ -271,7 +259,7 @@ describe("/requests Onboarding Extension", () => { }); const res = await chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send(body); @@ -296,7 +284,7 @@ describe("/requests Onboarding Extension", () => { }); const res = await chai.request(app) - .post(`${postEndpoint}?dev=true`) + .post(postEndpoint) .set("authorization", `Bearer ${botToken}`) .send(body); @@ -418,7 +406,7 @@ describe("/requests Onboarding Extension", () => { type: REQUEST_TYPE.ONBOARDING, requestNumber: 2 }); - putEndpoint = `/requests/${latestExtension.id}?dev=true`; + putEndpoint = `/requests/${latestExtension.id}`; authToken = generateAuthToken({userId}); }) @@ -443,7 +431,7 @@ describe("/requests Onboarding Extension", () => { it("should return Invalid request type for incorrect value of type", (done) => { chai.request(app) - .put("/requests/1111?dev=true") + .put("/requests/1111") .set("authorization", `Bearer ${authToken}`) .send({...body, type: ""}) .end((err, res)=>{ @@ -455,19 +443,6 @@ describe("/requests Onboarding Extension", () => { }) }) - it("should return Feature not implemented when dev is not true", (done) => { - chai.request(app) - .put(`/requests/1111?dev=false`) - .send(body) - .set("authorization", `Bearer ${authToken}`) - .end((err, res)=>{ - if (err) return done(err); - expect(res.statusCode).to.equal(501); - expect(res.body.message).to.equal("Feature not implemented"); - done(); - }) - }) - it("should return Unauthenticated User when authorization header is missing", (done) => { chai.request(app) .put(putEndpoint) @@ -510,7 +485,7 @@ describe("/requests Onboarding Extension", () => { it("should return 404 response for invalid extension id", (done) => { chai.request(app) - .put(`/requests/1111?dev=true`) + .put(`/requests/1111`) .set("authorization", `Bearer ${authToken}`) .send(body) .end((err, res) => { @@ -538,7 +513,7 @@ describe("/requests Onboarding Extension", () => { it("should return 400 response when extension state is approved", (done) => { chai.request(app) - .put(`/requests/${latestApprovedExtension.id}?dev=true`) + .put(`/requests/${latestApprovedExtension.id}`) .set("authorization", `Bearer ${authToken}`) .send(body) .end((err, res) => { @@ -552,7 +527,7 @@ describe("/requests Onboarding Extension", () => { it("should return 400 response when extension state is rejected", (done) => { chai.request(app) - .put(`/requests/${latestRejectedExtension.id}?dev=true`) + .put(`/requests/${latestRejectedExtension.id}`) .set("authorization", `Bearer ${authToken}`) .send(body) .end((err, res) => { @@ -646,7 +621,7 @@ describe("/requests Onboarding Extension", () => { userId: userId }); oooRequest = await requestsQuery.createRequest({type: REQUEST_TYPE.OOO, userId: userId}); - patchEndpoint = `/requests/${latestValidExtension.id}?dev=true`; + patchEndpoint = `/requests/${latestValidExtension.id}`; authToken = generateAuthToken({userId}); }) @@ -669,19 +644,6 @@ describe("/requests Onboarding Extension", () => { }) }) - it("should return Feature not implemented when dev is not true", (done) => { - chai.request(app) - .patch(`/requests/1111?dev=false`) - .send(body) - .set("authorization", `Bearer ${authToken}`) - .end((err, res)=>{ - if (err) return done(err); - expect(res.statusCode).to.equal(501); - expect(res.body.message).to.equal("Feature not implemented"); - done(); - }) - }) - it("should return Unauthenticated User when authorization header is missing", (done) => { chai .request(app) @@ -725,7 +687,7 @@ describe("/requests Onboarding Extension", () => { it("should return 404 response for invalid extension id", (done) => { chai.request(app) - .patch(`/requests/1111?dev=true`) + .patch(`/requests/1111`) .set("authorization", `Bearer ${authToken}`) .send(body) .end((err, res) => { @@ -753,7 +715,7 @@ describe("/requests Onboarding Extension", () => { it("should return 400 response when request type is not onboarding", (done) => { chai.request(app) - .patch(`/requests/${oooRequest.id}?dev=true`) + .patch(`/requests/${oooRequest.id}`) .set("authorization", `Bearer ${authToken}`) .send(body) .end((err, res) => { @@ -767,7 +729,7 @@ describe("/requests Onboarding Extension", () => { it("should return 400 response when extension state is not pending", (done) => { chai.request(app) - .patch(`/requests/${latestApprovedExtension.id}?dev=true`) + .patch(`/requests/${latestApprovedExtension.id}`) .set("authorization", `Bearer ${authToken}`) .send(body) .end((err, res) => { @@ -781,7 +743,7 @@ describe("/requests Onboarding Extension", () => { it("should return 400 response when old dealdine is greater than new deadline", (done) => { chai.request(app) - .patch(`/requests/${latestInvalidExtension.id}?dev=true`) + .patch(`/requests/${latestInvalidExtension.id}`) .set("authorization", `Bearer ${authToken}`) .send(body) .end((err, res) => { diff --git a/test/integration/progressesTasks.test.js b/test/integration/progressesTasks.test.js index f6ff11a90..06cf2329c 100644 --- a/test/integration/progressesTasks.test.js +++ b/test/integration/progressesTasks.test.js @@ -212,61 +212,7 @@ describe("Test Progress Updates API for Tasks", function () { "type", "completed", "planned", - "blockers", - "userId", - "createdAt", - "date", - ]); - }); - return done(); - }); - }); - - it("Returns the progress array for the task with userData object", function (done) { - chai - .request(app) - .get(`/progresses?taskId=${taskId1}&dev=true`) - .end((err, res) => { - if (err) return done(err); - expect(res).to.have.status(200); - expect(res.body).to.have.keys(["message", "data", "count", "links"]); - expect(res.body.data).to.be.an("array"); - expect(res.body.message).to.be.equal("Progress document retrieved successfully."); - res.body.data.forEach((progress) => { - expect(progress).to.have.keys([ - "id", - "taskId", - "type", - "completed", - "planned", - "blockers", "userData", - "userId", - "createdAt", - "date", - ]); - }); - return done(); - }); - }); - - it("Returns the progress array for the task without userData field if dev is false", function (done) { - chai - .request(app) - .get(`/progresses?taskId=${taskId1}&dev=false`) - .end((err, res) => { - if (err) return done(err); - expect(res).to.have.status(200); - expect(res.body).to.have.keys(["message", "data", "count"]); - expect(res.body.data).to.be.an("array"); - expect(res.body.message).to.be.equal("Progress document retrieved successfully."); - res.body.data.forEach((progress) => { - expect(progress).to.have.keys([ - "id", - "taskId", - "type", - "completed", - "planned", "blockers", "userId", "createdAt", @@ -371,36 +317,8 @@ describe("Test Progress Updates API for Tasks", function () { "type", "completed", "planned", - "blockers", - "userId", - "createdAt", - "date", - ]); - }); - return done(); - }); - }); - - it("Returns the progress array for all the tasks with userData object", function (done) { - chai - .request(app) - .get(`/progresses?type=task&dev=true`) - .end((err, res) => { - if (err) return done(err); - expect(res).to.have.status(200); - expect(res.body).to.have.keys(["message", "data", "count", "links"]); - expect(res.body.data).to.be.an("array"); - expect(res.body.message).to.be.equal("Progress document retrieved successfully."); - expect(res.body.count).to.be.equal(4); - res.body.data.forEach((progress) => { - expect(progress).to.have.keys([ - "id", - "taskId", - "type", - "completed", - "planned", - "blockers", "userData", + "blockers", "userId", "createdAt", "date", @@ -681,6 +599,7 @@ describe("Test Progress Updates API for Tasks", function () { "planned", "blockers", "userId", + "userData", "taskId", "createdAt", "date", diff --git a/test/integration/progressesUsers.test.js b/test/integration/progressesUsers.test.js index 9f7ee492b..afac45ca3 100644 --- a/test/integration/progressesUsers.test.js +++ b/test/integration/progressesUsers.test.js @@ -192,6 +192,7 @@ describe("Test Progress Updates API for Users", function () { "planned", "blockers", "userId", + "userData", "createdAt", "date", ]); @@ -210,59 +211,6 @@ describe("Test Progress Updates API for Users", function () { expect(res.body).to.have.keys(["message", "data", "count"]); expect(res.body.data).to.be.an("array"); expect(res.body.message).to.be.equal("Progress document retrieved successfully."); - res.body.data.forEach((progress) => { - expect(progress).to.have.keys([ - "id", - "type", - "completed", - "planned", - "blockers", - "userId", - "createdAt", - "date", - ]); - }); - return done(); - }); - }); - - it("Returns the progress array for a specific user with userData object", function (done) { - chai - .request(app) - .get(`/progresses?userId=${userId1}&dev=true`) - .end((err, res) => { - if (err) return done(err); - expect(res).to.have.status(200); - expect(res.body).to.have.keys(["message", "data", "count", "links"]); - expect(res.body.data).to.be.an("array"); - expect(res.body.message).to.be.equal("Progress document retrieved successfully."); - res.body.data.forEach((progress) => { - expect(progress).to.have.keys([ - "id", - "type", - "completed", - "planned", - "blockers", - "userId", - "userData", - "createdAt", - "date", - ]); - }); - return done(); - }); - }); - - it("Returns the progress array for all the user with userData object when dev is true", function (done) { - chai - .request(app) - .get(`/progresses?type=user&dev=true`) - .end((err, res) => { - if (err) return done(err); - expect(res).to.have.status(200); - expect(res.body).to.have.keys(["message", "data", "count", "links"]); - expect(res.body.data).to.be.an("array"); - expect(res.body.message).to.be.equal("Progress document retrieved successfully."); res.body.data.forEach((progress) => { expect(progress).to.have.keys([ "id", @@ -424,31 +372,6 @@ describe("Test Progress Updates API for Users", function () { }); }); - it("Returns the progress data for a specific user with userData object", function (done) { - chai - .request(app) - .get(`/progresses/user/${userId}/date/2023-05-02?dev=true`) - .end((err, res) => { - if (err) return done(err); - expect(res).to.have.status(200); - expect(res.body).to.have.keys(["message", "data"]); - expect(res.body.data).to.be.an("object"); - expect(res.body.message).to.be.equal("Progress document retrieved successfully."); - expect(res.body.data).to.have.keys([ - "id", - "type", - "completed", - "planned", - "blockers", - "userData", - "userId", - "createdAt", - "date", - ]); - return done(); - }); - }); - it("Should return 404 No progress records found if the document doesn't exist", function (done) { chai .request(app) diff --git a/test/unit/middlewares/skipAuthenticateForOnboardingExtension.test.ts b/test/unit/middlewares/skipAuthenticateForOnboardingExtension.test.ts index b613fc3c6..9e9670542 100644 --- a/test/unit/middlewares/skipAuthenticateForOnboardingExtension.test.ts +++ b/test/unit/middlewares/skipAuthenticateForOnboardingExtension.test.ts @@ -25,18 +25,7 @@ describe("skipAuthenticateForOnboardingExtensionRequest Middleware", () => { assert.isTrue(verifyDiscordBot.notCalled, "verifyDiscordBot should not be called"); }); - it("should not call verifyDicordBot and authenticate when dev is not true and type is onboarding", async () => { - req.query.dev = "false"; - req.body.type = REQUEST_TYPE.ONBOARDING; - - middleware(req, res, next); - - assert.isTrue(verifyDiscordBot.notCalled, "verifyDiscordBot should not be called"); - assert.isTrue(authenticate.notCalled, "authenticate should not be called"); - }); - - it("should call verifyDiscordBot when dev is true and type is onboarding", () => { - req.query.dev = "true"; + it("should call verifyDiscordBot when type is onboarding", async () => { req.body.type = REQUEST_TYPE.ONBOARDING; middleware(req, res, next); @@ -44,4 +33,4 @@ describe("skipAuthenticateForOnboardingExtensionRequest Middleware", () => { assert.isTrue(verifyDiscordBot.calledOnce, "verifyDiscordBot should be called once"); assert.isTrue(authenticate.notCalled, "authenticate should not be called"); }); -}); \ No newline at end of file +});