diff --git a/controllers/oooRequests.ts b/controllers/oooRequests.ts index 18b31f71e..076749696 100644 --- a/controllers/oooRequests.ts +++ b/controllers/oooRequests.ts @@ -46,9 +46,7 @@ export const createOooRequestController = async ( const requestBody = req.body; const { id: userId, username } = req.userData; const isUserPartOfDiscord = req.userData.roles.in_discord; - const dev = req.query.dev === "true"; - if (!dev) return res.boom.notImplemented("Feature not implemented"); if (!isUserPartOfDiscord) { return res.boom.forbidden(UNAUTHORIZED_TO_CREATE_OOO_REQUEST); diff --git a/middlewares/oooRoleCheckMiddleware.ts b/middlewares/oooRoleCheckMiddleware.ts index 254932735..9dcb7fa65 100644 --- a/middlewares/oooRoleCheckMiddleware.ts +++ b/middlewares/oooRoleCheckMiddleware.ts @@ -14,16 +14,11 @@ export const oooRoleCheckMiddleware = ( const requestType = req.body?.type; if (requestType === REQUEST_TYPE.OOO) { - // TODO: Remove this middleware once the OOO feature is tested and ready - return devFlagMiddleware(req, res, (err) => { - if (err) return next(err); - - try { - return authorizeRoles([SUPERUSER])(req, res, next); - } catch (authErr) { - return next(authErr); - } - }); + try { + return authorizeRoles([SUPERUSER])(req, res, next); + } catch (authErr) { + return next(authErr); + } } return next(); diff --git a/middlewares/validators/requests.ts b/middlewares/validators/requests.ts index f7307f1f2..8260e4f8b 100644 --- a/middlewares/validators/requests.ts +++ b/middlewares/validators/requests.ts @@ -81,7 +81,6 @@ export const updateRequestsMiddleware = async ( export const getRequestsMiddleware = async (req: OooRequestCreateRequest, res: OooRequestResponse, next: NextFunction) => { const schema = joi.object().keys({ - dev: joi.bool().sensitive().optional(), // TODO: Remove this validator once feature is tested and ready to be used id: joi.string().optional(), type: joi .string() @@ -96,6 +95,7 @@ export const getRequestsMiddleware = async (req: OooRequestCreateRequest, res: O .string() .valid(REQUEST_STATE.APPROVED, REQUEST_STATE.PENDING, REQUEST_STATE.REJECTED) .optional(), + dev: joi.boolean().optional(), page: joi.number().integer().min(0).when("next", { is: joi.exist(), then: joi.forbidden().messages({ diff --git a/models/requests.ts b/models/requests.ts index aefa0012b..164a1fce4 100644 --- a/models/requests.ts +++ b/models/requests.ts @@ -151,7 +151,7 @@ export const getRequests = async (query: any) => { return null; } - allRequests = transformRequestResponse(allRequests, dev); + allRequests = transformRequestResponse(allRequests); return { allRequests, diff --git a/services/oooRequest.ts b/services/oooRequest.ts index 0e8aee622..bf6ad4f75 100644 --- a/services/oooRequest.ts +++ b/services/oooRequest.ts @@ -44,7 +44,7 @@ export const validateUserStatus = async ( }; } - if (userStatus.data.currentStatus.state === userState.OOO) { + if (userStatus.data.currentStatus.state=== userState.OOO) { await addLog(logType.OOO_STATUS_FOUND, { userId, userStatus: userState.OOO }, { message: OOO_STATUS_ALREADY_EXIST } diff --git a/test/integration/requests.test.ts b/test/integration/requests.test.ts index d5560138b..be8267951 100644 --- a/test/integration/requests.test.ts +++ b/test/integration/requests.test.ts @@ -58,7 +58,7 @@ let testArchivedUserId: string; describe("/requests OOO", function () { - const requestsEndpoint: string = "/requests?dev=true"; + const requestsEndpoint: string = "/requests"; beforeEach(async function () { const userIdPromises = [addUser(userData[16]), addUser(userData[4]), addUser(userData[18])]; @@ -113,22 +113,6 @@ describe("/requests OOO", function () { await cleanDb(); }); - it("should return 501 and 'Feature not implemented' message when dev is false", function (done) { - chai - .request(app) - .post("/requests?dev=false") - .set("cookie", `${cookieName}=${authToken}`) - .send(validOooStatusRequests) - .end(function (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 401 if user is not logged in", function (done) { chai .request(app) @@ -174,7 +158,7 @@ describe("/requests OOO", function () { }); }); - it("should create a new request when dev is true", function (done) { + it("should create a new OOO request", function (done) { chai .request(app) .post(requestsEndpoint) @@ -218,7 +202,7 @@ describe("/requests OOO", function () { .request(app) .post(requestsEndpoint) .set("cookie", `${cookieName}=${authToken}`) - .send({...validOooStatusRequests, until: Date.now()}) + .send({ ...validOooStatusRequests, until: Date.now() }) .end(function (err, res) { if (err) return done(err); expect(res).to.have.status(400); @@ -233,7 +217,7 @@ describe("/requests OOO", function () { .request(app) .post(requestsEndpoint) .set("cookie", `${cookieName}=${authToken}`) - .send({...validOooStatusRequests, from: Date.now() - 1 * 24 * 60 * 60 * 1000 }) + .send({ ...validOooStatusRequests, from: Date.now() - 1 * 24 * 60 * 60 * 1000 }) .end(function (err, res) { if (err) return done(err); expect(res).to.have.status(400); @@ -350,7 +334,7 @@ describe("/requests OOO", function () { it("should return 401 if user is not logged in", function (done) { chai .request(app) - .patch(`/requests/${testOooRequest.id}?dev=true`) + .patch(`/requests/${testOooRequest.id}`) .send(testAcknowledgeOooRequest) .end(function (err, res) { expect(res).to.have.status(401); @@ -360,26 +344,12 @@ describe("/requests OOO", function () { }); }); - it("should return 501 and 'Feature not implemented' message when dev is false", function (done) { - chai - .request(app) - .patch(`/requests/${testOooRequest.id}?dev=false`) - .set("cookie", `${cookieName}=${superUserToken}`) - .send(testAcknowledgeOooRequest) - .end(function (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 404 if request does not exist", function (done) { chai .request(app) - .patch(`/requests/11111111111111?dev=true`) + .patch(`/requests/11111111111111`) .set("cookie", `${cookieName}=${superUserToken}`) .send(testAcknowledgeOooRequest) .end(function (err, res) { @@ -395,7 +365,7 @@ describe("/requests OOO", function () { it("should return 403 if user does not have super user permission", function (done) { chai .request(app) - .patch(`/requests/${testOooRequest.id}?dev=true`) + .patch(`/requests/${testOooRequest.id}`) .set("cookie", `${cookieName}=${authToken}`) .send(testAcknowledgeOooRequest) .end(function (err, res) { @@ -411,7 +381,7 @@ describe("/requests OOO", function () { it("should return 409 if OOO request is already approved", function (done) { chai .request(app) - .patch(`/requests/${approvedOooRequest.id}?dev=true`) + .patch(`/requests/${approvedOooRequest.id}`) .set("cookie", `${cookieName}=${superUserToken}`) .send(testAcknowledgeOooRequest) .end(function (err, res) { @@ -427,7 +397,7 @@ describe("/requests OOO", function () { it("should return 409 if OOO request is already rejected", function (done) { chai .request(app) - .patch(`/requests/${rejectedOooRequest.id}?dev=true`) + .patch(`/requests/${rejectedOooRequest.id}`) .set("cookie", `${cookieName}=${superUserToken}`) .send(testAcknowledgeOooRequest) .end(function (err, res) { @@ -443,7 +413,7 @@ describe("/requests OOO", function () { it("should return 400 when the request type for the given ID is not 'OOO'", function (done) { chai .request(app) - .patch(`/requests/${onboardingRequest.id}?dev=true`) + .patch(`/requests/${onboardingRequest.id}`) .set("cookie", `${cookieName}=${superUserToken}`) .send(testAcknowledgeOooRequest) .end(function (err, res) { @@ -456,10 +426,10 @@ describe("/requests OOO", function () { }); }); - it("should approve OOO request when dev is true", function (done) { + it("should approve OOO request", function (done) { chai .request(app) - .patch(`/requests/${testOooRequest.id}?dev=true`) + .patch(`/requests/${testOooRequest.id}`) .set("cookie", `${cookieName}=${superUserToken}`) .send(testAcknowledgeOooRequest) .end(function (err, res) { @@ -472,12 +442,12 @@ describe("/requests OOO", function () { }); }); - it("should reject OOO request when dev is true", function (done) { + it("should reject OOO request", function (done) { chai .request(app) - .patch(`/requests/${testOooRequest.id}?dev=true`) + .patch(`/requests/${testOooRequest.id}`) .set("cookie", `${cookieName}=${superUserToken}`) - .send({...testAcknowledgeOooRequest, status: REQUEST_STATE.REJECTED}) + .send({ ...testAcknowledgeOooRequest, status: REQUEST_STATE.REJECTED }) .end(function (err, res) { if (err) { return done(err); @@ -492,7 +462,7 @@ describe("/requests OOO", function () { sinon.stub(logUtils, "addLog").throws("Error"); chai .request(app) - .patch(`/requests/${testOooRequest.id}?dev=true`) + .patch(`/requests/${testOooRequest.id}`) .set("cookie", `${cookieName}=${superUserToken}`) .send(testAcknowledgeOooRequest) .end(function (err, res) { @@ -579,15 +549,15 @@ describe("/requests OOO", function () { it("should return all requests", function (done) { chai .request(app) - .get("/requests?dev=true") + .get("/requests") .end(function (err, res) { expect(res).to.have.status(200); expect(res.body.data).to.have.lengthOf(2); expect(res.body.data[0]).to.have.property("id"); expect(res.body.data[0]).to.have.property("requestedBy"); expect(res.body.data[0]).to.have.property("type"); - expect(res.body.data[0]).to.have.property("state"); - expect(res.body.data[0]).to.have.property("message"); + expect(res.body.data[0]).to.have.property("status"); + expect(res.body.data[0]).to.have.property("reason"); done(); }); }); @@ -620,7 +590,7 @@ describe("/requests OOO", function () { .get(`/requests?state=APPROVED&requestedBy=${userData[16].username}`) .end(function (err, res) { expect(res).to.have.status(200); - expect(res.body.data.every((e: any) => e.state === "APPROVED")); + expect(res.body.data.every((e: any) => e.status === "APPROVED")); expect(res.body.data.every((e: any) => e.requestedBy === testUserId)); done(); }); diff --git a/test/unit/models/requests.test.ts b/test/unit/models/requests.test.ts index 350f89cc2..07c145769 100644 --- a/test/unit/models/requests.test.ts +++ b/test/unit/models/requests.test.ts @@ -94,13 +94,13 @@ describe("models/oooRequests", () => { describe("getRequests", () => { it("Should return the request with the specified ID", async () => { const oooRequest = await createRequest(createOooRequests2); - const query = { id: oooRequest.id, dev: "true" }; + const query = { id: oooRequest.id }; const oooRequestData: any = await getRequests(query); expect(oooRequestData.id).to.be.equal(oooRequest.id); }); it("Should return null if the request with the specified ID does not exist", async () => { - const query = { id: "randomId", dev: "true" }; + const query = { id: "randomId" }; const oooRequestData = await getRequests(query); expect(oooRequestData).to.be.equal(null); }); @@ -108,12 +108,12 @@ describe("models/oooRequests", () => { it("Should return a list of all the GET requests", async () => { await createRequest(createOooRequests); await createRequest(createOooRequests2); - const query = { dev: "true" }; + const query = { }; const oooRequestData = await getRequests(query); expect(oooRequestData.allRequests).to.be.have.length(2); }); - it("Should return APPROVED state in old schema when dev=false", async () => { + it("Should return APPROVED state", async () => { const oooRequest: OooStatusRequest = await createRequest(createOooStatusRequests); await updateRequest( oooRequest.id, @@ -126,7 +126,7 @@ describe("models/oooRequests", () => { expect(oooRequestData.allRequests[0].status).to.be.equal(REQUEST_STATE.APPROVED); }); - it("Should return APPROVED status in new schema when dev=true", async () => { + it("Should return APPROVED status in new schema", async () => { const oooRequest: OooStatusRequest = await createRequest(createOooStatusRequests); await updateRequest( oooRequest.id, @@ -134,23 +134,23 @@ describe("models/oooRequests", () => { updateOooApprovedRequests.lastModifiedBy, REQUEST_TYPE.OOO ); - const query = { dev: "true", state: REQUEST_STATE.APPROVED }; + const query = { state: REQUEST_STATE.APPROVED }; const oooRequestData = await getRequests(query); - expect(oooRequestData.allRequests[0].state).to.be.equal(REQUEST_STATE.APPROVED); + expect(oooRequestData.allRequests[0].status).to.be.equal(REQUEST_STATE.APPROVED); }); - it("Should return PENDING state in old schema when dev=false", async () => { + it("Should return PENDING state in new schema", async () => { await createRequest(createOooStatusRequests); - const query = { dev: "false", status: REQUEST_STATE.PENDING }; + const query = { status: REQUEST_STATE.PENDING }; const oooRequestData = await getRequests(query); - expect(oooRequestData.allRequests[0].status).to.be.equal(REQUEST_STATE.PENDING); + expect(oooRequestData.allRequests[0].status ).to.be.equal(REQUEST_STATE.PENDING); }); - it("Should return PENDING status in new schema when dev=true", async () => { + it("Should return PENDING status", async () => { await createRequest(createOooStatusRequests); - const query = { dev: "true", status: REQUEST_STATE.PENDING }; + const query = { status: REQUEST_STATE.PENDING }; const oooRequestData = await getRequests(query); - expect(oooRequestData.allRequests[0].state).to.be.equal(REQUEST_STATE.PENDING); + expect(oooRequestData.allRequests[0].status).to.be.equal(REQUEST_STATE.PENDING); }); it("Should return a list of all the requests by specific user ", async () => { @@ -164,13 +164,13 @@ describe("models/oooRequests", () => { it("Should return a list of all the requests for specific type ", async () => { await createRequest(createOooRequests); - const query = { dev: "true", type: REQUEST_TYPE.OOO }; + const query = { type: REQUEST_TYPE.OOO }; const oooRequestData = await getRequests(query); expect(oooRequestData.allRequests[0].type).to.be.equal(REQUEST_TYPE.OOO); }); it("Should return empty array if no data is found", async () => { - const query = { dev: "true", status: REQUEST_STATE.PENDING }; + const query = { status: REQUEST_STATE.PENDING }; const oooRequestData = await getRequests(query); expect(oooRequestData).to.be.equal(null); }); @@ -178,7 +178,7 @@ describe("models/oooRequests", () => { it("Should return a list of all the requests by page ", async () => { await createRequest(createOooRequests); await createRequest(createOooRequests2); - const query = { dev: "true", page: 1 }; + const query = { page: 1 }; const oooRequestData = await getRequests(query); expect(oooRequestData.page).to.be.equal(2); }); @@ -186,7 +186,7 @@ describe("models/oooRequests", () => { it("Should return a list of all the requests by size ", async () => { await createRequest(createOooRequests); await createRequest(createOooRequests2); - const query = { dev: "true", size: 1 }; + const query = { size: 1 }; const oooRequestData = await getRequests(query); expect(oooRequestData.allRequests).to.have.lengthOf(1); }); diff --git a/utils/requests.ts b/utils/requests.ts index 23f80b4c8..8a19910fd 100644 --- a/utils/requests.ts +++ b/utils/requests.ts @@ -68,21 +68,20 @@ export const newOOOSchema = (request: oldOooStatusRequest) => ({ * Transforms request responses based on request type and dev flag * @param {boolean} dev - Development flag to determine transformation logic */ -export const transformRequestResponse = (allRequests: (OooStatusRequest | oldOooStatusRequest)[], dev: boolean = false): (OooStatusRequest | oldOooStatusRequest)[] => { +export const transformRequestResponse = (allRequests: (OooStatusRequest | oldOooStatusRequest)[]): (OooStatusRequest | oldOooStatusRequest)[] => { return allRequests.map(request => { - + if (request.type !== REQUEST_TYPE.OOO) { return request; } - if (dev && 'status' in request) { + if ('status' in request) { return oldOOOSchema(request as OooStatusRequest); } - - if (!dev && 'state' in request) { + if ('state' in request) { return newOOOSchema(request as oldOooStatusRequest); } - return request; }); + }; \ No newline at end of file