Skip to content

Commit ce6872b

Browse files
authored
Added new GET Route for User Extension Req. (#2300)
* added one get api to get user extension req * added deprecation warning * added warning for self route
1 parent 0df8007 commit ce6872b

File tree

2 files changed

+114
-1
lines changed

2 files changed

+114
-1
lines changed

routes/extensionRequests.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,19 @@ const {
1111
getExtensionRequestsValidator,
1212
} = require("../middlewares/validators/extensionRequests");
1313
const skipAuthorizeRolesUnderFF = require("../middlewares/skipAuthorizeRolesWrapper");
14+
const { userAuthorization } = require("../middlewares/userAuthorization");
15+
const { devFlagMiddleware } = require("../middlewares/devFlag");
1416

1517
router.post("/", authenticate, createExtensionRequest, extensionRequests.createTaskExtensionRequest);
1618
router.get("/", authenticate, getExtensionRequestsValidator, extensionRequests.fetchExtensionRequests);
17-
router.get("/self", authenticate, extensionRequests.getSelfExtensionRequests);
19+
router.get("/self", authenticate, extensionRequests.getSelfExtensionRequests); // This endpoint is being deprecated. Please use `/extension-requests/user/:userId` route to get the user extension-requests details based on userID."
20+
router.get(
21+
"/user/:userId",
22+
devFlagMiddleware,
23+
authenticate,
24+
userAuthorization,
25+
extensionRequests.getSelfExtensionRequests
26+
);
1827
router.get("/:id", authenticate, authorizeRoles([SUPERUSER, APPOWNER]), extensionRequests.getExtensionRequest);
1928
// remove the skipAuthorizeRolesUnderFF & authorizeRoles middleware when removing the feature flag
2029
router.patch(

test/integration/extensionRequests.test.js

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,110 @@ describe("Extension Requests", function () {
362362
});
363363
});
364364

365+
describe("GET /extension-requests/user/:userId", function () {
366+
it("should return success response and extension request of the authenticated user", function (done) {
367+
chai
368+
.request(app)
369+
.get(`/extension-requests/user/${appOwner.id}?dev=true`)
370+
.set("cookie", `${cookieName}=${appOwnerjwt}`)
371+
.end((err, res) => {
372+
if (err) {
373+
return done(err);
374+
}
375+
376+
expect(res).to.have.status(200);
377+
expect(res.body).to.be.a("object");
378+
expect(res.body.message).to.be.equal("Extension Requests returned successfully!");
379+
expect(res.body.allExtensionRequests).to.be.a("array");
380+
expect(res.body.allExtensionRequests[0].assignee).to.equal(appOwner.username);
381+
expect([extensionRequestId1, extensionRequestId2]).contains(res.body.allExtensionRequests[0].id);
382+
expect([extensionRequestId1, extensionRequestId2]).contains(res.body.allExtensionRequests[1].id);
383+
expect(res.body.allExtensionRequests[1].assignee).to.equal(appOwner.username);
384+
return done();
385+
});
386+
});
387+
388+
it("should return success response and all extension requests with query params", function (done) {
389+
chai
390+
.request(app)
391+
.get(`/extension-requests/user/${appOwner.id}?dev=true`)
392+
.query({ taskId: taskId2, status: "APPROVED" })
393+
.set("cookie", `${cookieName}=${appOwnerjwt}`)
394+
.end((err, res) => {
395+
if (err) {
396+
return done(err);
397+
}
398+
399+
expect(res).to.have.status(200);
400+
expect(res.body).to.be.a("object");
401+
expect(res.body.message).to.be.equal("Extension Requests returned successfully!");
402+
expect(res.body.allExtensionRequests).to.be.a("array");
403+
expect(res.body.allExtensionRequests[0].assignee).to.equal(appOwner.username);
404+
expect(res.body.allExtensionRequests[0].id).to.equal(extensionRequestId2);
405+
return done();
406+
});
407+
});
408+
409+
it("should return success response and an empty array of extensionRequest if assignee is not same as latest one", function (done) {
410+
chai
411+
.request(app)
412+
.get(`/extension-requests/user/${appOwner.id}?dev=true`)
413+
.query({ taskId: taskId7 })
414+
.set("cookie", `${cookieName}=${appOwnerjwt}`)
415+
.end((err, res) => {
416+
if (err) {
417+
return done(err);
418+
}
419+
420+
expect(res).to.have.status(200);
421+
expect(res.body).to.be.a("object");
422+
expect(res.body.message).to.be.equal("Extension Requests returned successfully!");
423+
expect(res.body.allExtensionRequests).to.be.a("array").with.lengthOf(0);
424+
return done();
425+
});
426+
});
427+
428+
it("should return success response and a single latestExtensionRequest if assignee same as latest one", function (done) {
429+
chai
430+
.request(app)
431+
.get(`/extension-requests/user/${appOwner.id}?dev=true`)
432+
.query({ taskId: taskId2 })
433+
.set("cookie", `${cookieName}=${appOwnerjwt}`)
434+
.end((err, res) => {
435+
if (err) {
436+
return done(err);
437+
}
438+
439+
expect(res).to.have.status(200);
440+
expect(res.body).to.be.a("object");
441+
expect(res.body.message).to.be.equal("Extension Requests returned successfully!");
442+
expect(res.body.allExtensionRequests).to.be.a("array").with.lengthOf(1);
443+
return done();
444+
});
445+
});
446+
447+
it("Should return 401 if not logged in", function (done) {
448+
chai
449+
.request(app)
450+
.get(`/extension-requests/user/${appOwner.id}?dev=true`)
451+
.end((err, res) => {
452+
if (err) {
453+
return done();
454+
}
455+
456+
expect(res).to.have.status(401);
457+
expect(res.body).to.be.an("object");
458+
expect(res.body).to.eql({
459+
statusCode: 401,
460+
error: "Unauthorized",
461+
message: "Unauthenticated User",
462+
});
463+
464+
return done();
465+
});
466+
});
467+
});
468+
365469
describe("POST /extension-requests - creates a new extension requests", function () {
366470
it("Should return success response after adding the extension request", function (done) {
367471
chai

0 commit comments

Comments
 (0)