From c18caf509a97e30b9d21ba507a043404e40ea004 Mon Sep 17 00:00:00 2001 From: Kevin Aleman Date: Mon, 5 Jun 2023 08:28:16 -0600 Subject: [PATCH] fix: `queuedForUser` endpoint not filtering by status (#29189) --- .changeset/honest-coins-bow.md | 5 +++++ .../app/livechat/server/api/lib/inquiries.ts | 3 ++- .../end-to-end/api/livechat/05-inquiries.ts | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 .changeset/honest-coins-bow.md diff --git a/.changeset/honest-coins-bow.md b/.changeset/honest-coins-bow.md new file mode 100644 index 00000000000..a1d1aa8cbed --- /dev/null +++ b/.changeset/honest-coins-bow.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fix: `queuedForUser` endpoint not filtering by status diff --git a/apps/meteor/app/livechat/server/api/lib/inquiries.ts b/apps/meteor/app/livechat/server/api/lib/inquiries.ts index 527f5fb470f..450e035af25 100644 --- a/apps/meteor/app/livechat/server/api/lib/inquiries.ts +++ b/apps/meteor/app/livechat/server/api/lib/inquiries.ts @@ -51,7 +51,8 @@ export async function findInquiries({ }; const filter: Filter = { - ...(status && status in LivechatInquiryStatus && { status }), + // V in Enum only works for numeric enums + ...(status && Object.values(LivechatInquiryStatus).includes(status) && { status }), $or: [ { $and: [{ defaultAgent: { $exists: true } }, { 'defaultAgent.agentId': userId }], diff --git a/apps/meteor/tests/end-to-end/api/livechat/05-inquiries.ts b/apps/meteor/tests/end-to-end/api/livechat/05-inquiries.ts index 622761687af..b4da7f15bf9 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/05-inquiries.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/05-inquiries.ts @@ -186,7 +186,7 @@ describe('LIVECHAT - inquiries', function () { it('should return an array of inquiries', async () => { await updatePermission('view-l-room', ['admin']); await request - .get(api('livechat/inquiries.queued')) + .get(api('livechat/inquiries.queuedForUser')) .set(credentials) .expect('Content-Type', 'application/json') .expect(200) @@ -198,5 +198,19 @@ describe('LIVECHAT - inquiries', function () { expect(res.body).to.have.property('count'); }); }); + it('should validate all returned inquiries are queued', async () => { + await request + .get(api('livechat/inquiries.queuedForUser')) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200) + .expect(async (res: Response) => { + expect(res.body).to.have.property('success', true); + expect(res.body.inquiries).to.be.an('array'); + for (const inquiry of res.body.inquiries) { + expect(inquiry).to.have.property('status', 'queued'); + } + }); + }); }); });