Skip to content

Commit 8bff39f

Browse files
fix/removed createdBy and createdFor for filtering and impersonation collection
1 parent e0d7524 commit 8bff39f

File tree

8 files changed

+17
-59
lines changed

8 files changed

+17
-59
lines changed

controllers/impersonationRequests.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,9 @@ export const createImpersonationRequestController = async (
3939
try {
4040
const { impersonatedUserId, reason } = req.body as CreateImpersonationRequestBody;
4141
const userId = req.userData?.id;
42-
const createdBy = req.userData?.username;
4342

4443
const impersonationRequest = await createImpersonationRequestService({
4544
userId,
46-
createdBy,
4745
impersonatedUserId,
4846
reason
4947
});

models/impersonationRequests.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,13 @@ export const getImpersonationRequests = async (
110110
let requestQuery: Query<ImpersonationRequest> = impersonationRequestModel as CollectionReference<ImpersonationRequest>;
111111

112112
if (createdBy) {
113-
requestQuery = requestQuery.where("createdBy", "==", createdBy);
113+
requestQuery = requestQuery.where("userId", "==", createdBy);
114114
}
115115
if (status) {
116116
requestQuery = requestQuery.where("status", "==", status);
117117
}
118118
if (createdFor) {
119-
requestQuery = requestQuery.where("createdFor", "==", createdFor);
119+
requestQuery = requestQuery.where("impersonatedUserId", "==", createdFor);
120120
}
121121

122122
requestQuery = requestQuery.orderBy("createdAt", "desc");

services/impersonationRequests.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,17 @@ export const createImpersonationRequestService = async (
4141
body: CreateImpersonationRequestServiceBody
4242
): Promise<ImpersonationRequest> => {
4343
try {
44-
const { userExists, user: impersonatedUser } = await fetchUser({ userId: body.impersonatedUserId });
44+
const { userExists } = await fetchUser({ userId: body.impersonatedUserId });
4545
if (!userExists) {
4646
throw new NotFound(TASK_REQUEST_MESSAGES.USER_NOT_FOUND);
4747
}
4848

49-
const { username: createdFor } = impersonatedUser as User;
5049

5150
const impersonationRequest = await createImpersonationRequest({
5251
status: REQUEST_STATE.PENDING,
5352
userId: body.userId,
5453
impersonatedUserId: body.impersonatedUserId,
5554
isImpersonationFinished: false,
56-
createdBy: body.createdBy,
57-
createdFor: createdFor,
5855
reason: body.reason,
5956
});
6057

test/fixtures/impersonation-requests/impersonationRequests.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,62 +4,48 @@ export const impersonationRequestsBodyData = [
44
{
55
status: REQUEST_STATE.PENDING,
66
isImpersonationFinished: false,
7-
createdBy: "superuser-1",
8-
createdFor: "suvidh-kaushik",
97
userId: "userId123",
108
reason: "User assistance required for account debugging.",
119
impersonatedUserId: "userId345",
1210
},
1311
{
1412
status: REQUEST_STATE.PENDING,
1513
isImpersonationFinished: false,
16-
createdBy: "superuser-2",
17-
createdFor: "suvidh-kaushik-2",
1814
userId: "userId124",
1915
reason: "User assistance required for account debugging.",
2016
impersonatedUserId: "userId445",
2117
},
2218
{
2319
status: REQUEST_STATE.PENDING,
2420
isImpersonationFinished: false,
25-
createdBy: "admin222",
26-
createdFor: "user321",
2721
userId: "admin222",
2822
reason: "Investigating bug in user workflow.",
2923
impersonatedUserId: "user321",
3024
},
3125
{
3226
status: REQUEST_STATE.PENDING,
3327
isImpersonationFinished: false,
34-
createdBy: "adminUsername",
35-
createdFor: "user322",
3628
userId: "admin2223",
3729
reason: "Verifying permissions for support case.",
3830
impersonatedUserId: "user322",
3931
},
4032
{
4133
status: REQUEST_STATE.PENDING,
4234
isImpersonationFinished: false,
43-
createdBy: "adminUsername",
44-
createdFor: "user321",
4535
userId: "admin222",
4636
reason: "Testing impersonation feature for QA.",
4737
impersonatedUserId: "user321",
4838
},
4939
{
5040
status: REQUEST_STATE.APPROVED,
5141
isImpersonationFinished: false,
52-
createdBy: "approverUser",
53-
createdFor: "approvedUser",
5442
userId: "approverId",
5543
reason: "Approved for troubleshooting session.",
5644
impersonatedUserId: "approvedUserId",
5745
},
5846
{
5947
status: REQUEST_STATE.REJECTED,
6048
isImpersonationFinished: false,
61-
createdBy: "reviewerUser",
62-
createdFor: "rejectedUser",
6349
userId: "reviewerId",
6450
reason: "Request rejected due to insufficient details.",
6551
impersonatedUserId: "rejectedUserId",

test/integration/impersonationRequests.test.ts

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,12 @@ describe("Impersonation Requests", () => {
7676
unapprovedImpersonationRequest = await impersonationModel.createImpersonationRequest({
7777
...impersonationRequestsBodyData[0],
7878
impersonatedUserId: testUserId2,
79-
createdFor: userData[19].username,
8079
userId: testSuperUserId,
81-
createdBy: userData[4].username
8280
});
8381

8482
approvedImpersonationRequest = await impersonationModel.createImpersonationRequest({
8583
...impersonationRequestsBodyData[0],
8684
impersonatedUserId: testUserId3,
87-
createdFor: userData[12].username,
88-
createdBy: userData[4].username,
8985
userId: testSuperUserId,
9086
status: REQUEST_STATE.APPROVED
9187
});
@@ -300,19 +296,15 @@ describe("Impersonation Requests", () => {
300296
await impersonationModel.createImpersonationRequest({
301297
...impersonationRequestsBodyData[3],
302298
impersonatedUserId: testUserId4,
303-
createdFor: userData[0].username,
304299
userId: testSuperUserId,
305300
status: REQUEST_STATE.REJECTED,
306-
createdBy: userData[4].username
307301
});
308302

309303
await impersonationModel.createImpersonationRequest({
310304
...impersonationRequestsBodyData[4],
311305
impersonatedUserId: testUserId5,
312-
createdFor: userData[1].username,
313306
userId: testSuperUserId,
314-
status: REQUEST_STATE.REJECTED,
315-
createdBy: userData[4].username
307+
status: REQUEST_STATE.REJECTED
316308
});
317309
});
318310

@@ -353,7 +345,7 @@ describe("Impersonation Requests", () => {
353345
expect(res.body.data).to.be.an("array");
354346
expect(res.body.data.length).to.be.equal(4);
355347
expect(res.body.data[0]).to.include.all.keys(
356-
"id", "createdBy", "userId", "impersonatedUserId", "createdFor"
348+
"id", "userId", "impersonatedUserId"
357349
);
358350
done();
359351
});
@@ -363,28 +355,27 @@ describe("Impersonation Requests", () => {
363355
it("should return all requests created by a specific user", function (done) {
364356
chai
365357
.request(app)
366-
.get(`${requestsEndpoint}&createdBy=${userData[4].username}`)
358+
.get(`${requestsEndpoint}&createdBy=${testSuperUserId}`)
367359
.set("cookie", `${cookieName}=${authToken}`)
368360
.end(function (err, res) {
369361
if (err) return done(err);
370362
expect(res).to.have.status(200);
371363
expect(res.body.data).to.be.an("array");
372364
expect(res.body.data.every((r) => r.userId === testSuperUserId)).to.be.true;
373-
expect(res.body.data.every((r)=>r.createdBy === userData[4].username)).to.be.true;
374365
done();
375366
});
376367
});
377368

378369
it("should return all requests created for a specific user", function (done) {
379370
chai
380371
.request(app)
381-
.get(`${requestsEndpoint}&createdFor=${userData[19].username}`)
372+
.get(`${requestsEndpoint}&createdFor=${testUserId2}`)
382373
.set("cookie", `${cookieName}=${authToken}`)
383374
.end(function (err, res) {
384375
if (err) return done(err);
385376
expect(res).to.have.status(200);
386377
expect(res.body.data).to.be.an("array");
387-
expect(res.body.data.every((r) => r.createdFor === userData[19].username)).to.be.true;
378+
expect(res.body.data.every((r) => r.impersonatedUserId === testUserId2)).to.be.true;
388379
expect(res.body.data.length).to.equal(1);
389380
done();
390381
});
@@ -601,14 +592,12 @@ describe("Impersonation Requests", () => {
601592
approvedImpersonationRequest = await impersonationModel.createImpersonationRequest({
602593
...impersonationRequestsBodyData[0],
603594
impersonatedUserId: testUserId1,
604-
createdBy: userData[16].username,
605595
status: REQUEST_STATE.APPROVED
606596
});
607597

608598
unapprovedImpersonationRequest = await impersonationModel.createImpersonationRequest({
609599
...impersonationRequestsBodyData[1],
610600
impersonatedUserId: testUserId3,
611-
createdFor: userData[12].username
612601
});
613602

614603
unapprovedImpersonationRequest2 = await impersonationModel.createImpersonationRequest({
@@ -827,11 +816,9 @@ describe("Impersonation Requests", () => {
827816
finishedImpersonationRequest = await impersonationModel.createImpersonationRequest({
828817
...impersonationRequestsBodyData[0],
829818
impersonatedUserId: testUserId4,
830-
createdFor: userData[0].username,
831819
userId: testSuperUserId,
832820
status: "APPROVED",
833821
isImpersonationFinished: true,
834-
createdBy: userData[4].username,
835822
});
836823
});
837824

test/unit/models/impersonationRequests.test.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,8 @@ describe("models/impersonationRequests", () => {
3535
impersonationRequest = await impersonationModel.createImpersonationRequest(mockRequestBody);
3636
expect(impersonationRequest).to.have.property("id");
3737
expect(impersonationRequest).to.include({
38-
createdBy: mockRequestBody.createdBy,
3938
impersonatedUserId: mockRequestBody.impersonatedUserId,
40-
createdFor: mockRequestBody.createdFor,
39+
userId: mockRequestBody.userId,
4140
status: REQUEST_STATE.PENDING,
4241
});
4342
});
@@ -52,13 +51,13 @@ describe("models/impersonationRequests", () => {
5251
});
5352

5453
it("should allow different super users to create requests for same user", async () => {
55-
const request1 = await impersonationModel.createImpersonationRequest({ ...impersonationRequestsBodyData[0], createdBy: "user1" });
56-
const request2 = await impersonationModel.createImpersonationRequest({ ...impersonationRequestsBodyData[0], createdBy: "user2", userId: "122" });
54+
const request1 = await impersonationModel.createImpersonationRequest({ ...impersonationRequestsBodyData[0], userId: "121" });
55+
const request2 = await impersonationModel.createImpersonationRequest({ ...impersonationRequestsBodyData[0], userId: "122" });
5756
expect(request1).to.have.property("id");
58-
expect(request1.createdBy).to.equal("user1");
57+
expect(request1.userId).to.equal("121");
5958
expect(request1.impersonatedUserId).to.equal(impersonationRequestsBodyData[0].impersonatedUserId);
6059
expect(request2).to.have.property("id");
61-
expect(request2.createdBy).to.equal("user2");
60+
expect(request2.userId).to.equal("122");
6261
expect(request2.impersonatedUserId).to.equal(impersonationRequestsBodyData[0].impersonatedUserId);
6362
});
6463

@@ -153,10 +152,10 @@ describe("models/impersonationRequests", () => {
153152
});
154153

155154
it("should filter requests by createdBy", async () => {
156-
const query = { createdBy: impersonationRequests[0].createdBy };
155+
const query = { createdBy: impersonationRequests[0].userId };
157156
const result = await impersonationModel.getImpersonationRequests(query);
158157
expect(result.allRequests.length).to.be.equal(1);
159-
expect(result.allRequests.every(r => r.createdBy === impersonationRequests[0].createdBy)).to.be.true;
158+
expect(result.allRequests.every(r => r.userId === impersonationRequests[0].userId)).to.be.true;
160159
});
161160

162161
it("should return requests by size", async () => {
@@ -166,10 +165,10 @@ describe("models/impersonationRequests", () => {
166165
});
167166

168167
it("should filter requests by createdFor", async () => {
169-
const query = { createdFor: impersonationRequests[0].createdFor };
168+
const query = { createdFor: impersonationRequests[0].impersonatedUserId };
170169
const result = await impersonationModel.getImpersonationRequests(query);
171170
expect(result.allRequests.length).to.be.equal(1);
172-
expect(result.allRequests.every(r => r.createdFor === impersonationRequests[0].createdFor)).to.be.true;
171+
expect(result.allRequests.every(r => r.impersonatedUserId === impersonationRequests[0].impersonatedUserId)).to.be.true;
173172
});
174173

175174

test/unit/services/impersonationRequests.test.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ describe("Tests Impersonation Requests Service", () => {
4949
try {
5050
await impersonationService.createImpersonationRequestService({
5151
userId: "randomIs",
52-
createdBy: "randomName",
5352
impersonatedUserId: "randomImpersonatedId",
5453
reason: "He asked",
5554
});
@@ -74,13 +73,11 @@ describe("Tests Impersonation Requests Service", () => {
7473

7574
const response = await impersonationService.createImpersonationRequestService({
7675
userId: mockRequestBody.userId,
77-
createdBy: mockRequestBody.createdBy,
7876
impersonatedUserId: userData[20].id,
7977
reason: mockRequestBody.reason,
8078
});
8179

8280
expect(response).to.not.be.null;
83-
expect(response.createdBy).to.equal(mockRequestBody.createdBy);
8481
expect(response.id).to.not.be.null;
8582
expect(response.userId).to.equal(mockRequestBody.userId);
8683
expect(response.impersonatedUserId).to.equal(userData[20].id);
@@ -92,7 +89,6 @@ describe("Tests Impersonation Requests Service", () => {
9289
try {
9390
await impersonationService.createImpersonationRequestService({
9491
userId: mockRequestBody.userId,
95-
createdBy: mockRequestBody.createdBy,
9692
impersonatedUserId: "112",
9793
reason: mockRequestBody.reason,
9894
});

types/impersonationRequest.d.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ export type ImpersonationRequest = {
99
id: string;
1010
status: REQUEST_STATE;
1111
isImpersonationFinished: boolean;
12-
createdBy: string;
13-
createdFor: string;
1412
userId: string;
1513
reason: string;
1614
message?: string;
@@ -29,8 +27,6 @@ export type CreateImpersonationRequestBody = {
2927
export type CreateImpersonationRequestModelDto = {
3028
status: REQUEST_STATE;
3129
isImpersonationFinished: boolean;
32-
createdBy: string;
33-
createdFor: string;
3430
userId: string;
3531
reason: string;
3632
impersonatedUserId: string;
@@ -118,7 +114,6 @@ export type GetImpersonationControllerRequest = Request & {
118114

119115
export type CreateImpersonationRequestServiceBody={
120116
userId: string;
121-
createdBy: string;
122117
impersonatedUserId: string;
123118
reason: string;
124119
}

0 commit comments

Comments
 (0)