From d38b585c76c5a33e26385b0c62e783120e85e9b9 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Mon, 5 May 2025 17:07:11 +0000 Subject: [PATCH] feat(api): GET /users responds with active and non-deleted users only --- .../controllers/api/v1/users/get-users.ee.js | 1 + .../api/v1/users/get-users.ee.test.js | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/packages/backend/src/controllers/api/v1/users/get-users.ee.js b/packages/backend/src/controllers/api/v1/users/get-users.ee.js index 750f5181..c6a8c143 100644 --- a/packages/backend/src/controllers/api/v1/users/get-users.ee.js +++ b/packages/backend/src/controllers/api/v1/users/get-users.ee.js @@ -4,6 +4,7 @@ import User from '../../../../models/user.js'; export default async (request, response) => { const usersQuery = User.query() + .where({ status: 'active' }) .withGraphFetched({ role: true, }) diff --git a/packages/backend/src/controllers/api/v1/users/get-users.ee.test.js b/packages/backend/src/controllers/api/v1/users/get-users.ee.test.js index 98893dc4..0edbcc2f 100644 --- a/packages/backend/src/controllers/api/v1/users/get-users.ee.test.js +++ b/packages/backend/src/controllers/api/v1/users/get-users.ee.test.js @@ -29,6 +29,11 @@ describe('GET /api/v1/users', () => { fullName: 'User 2', }); + await createUser({ + fullName: 'User 3', + status: 'invited', + }); + token = (await createApiToken()).token; }); @@ -45,4 +50,24 @@ describe('GET /api/v1/users', () => { expect(response.body).toStrictEqual(expectedResponsePayload); }); + + it('should return users data without soft deleted users', async () => { + const user = await createUser({ + fullName: 'User 3', + }); + + await user.$query().delete(); + + const response = await request(app) + .get('/api/v1/users') + .set('x-api-token', token) + .expect(200); + + const expectedResponsePayload = await getUsersMock( + [userOne, userTwo], + [userOneRole, userTwoRole] + ); + + expect(response.body).toStrictEqual(expectedResponsePayload); + }); });