From a9de79546b3f7fcefe781b3d260615ef84fc6a83 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Mon, 4 Mar 2024 16:06:50 +0100 Subject: [PATCH 1/2] refactor: Remove empty associations from serializers --- packages/backend/src/serializers/role.js | 2 +- packages/backend/src/serializers/user.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/serializers/role.js b/packages/backend/src/serializers/role.js index 9cbf0246..8e9051fa 100644 --- a/packages/backend/src/serializers/role.js +++ b/packages/backend/src/serializers/role.js @@ -11,7 +11,7 @@ const roleSerializer = (role) => { isAdmin: role.isAdmin, }; - if (role.permissions) { + if (role.permissions?.length > 0) { roleData.permissions = role.permissions.map((permission) => permissionSerializer(permission) ); diff --git a/packages/backend/src/serializers/user.js b/packages/backend/src/serializers/user.js index 4fed507f..2cdec6d5 100644 --- a/packages/backend/src/serializers/user.js +++ b/packages/backend/src/serializers/user.js @@ -15,7 +15,7 @@ const userSerializer = (user) => { userData.role = roleSerializer(user.role); } - if (user.permissions) { + if (user.permissions?.length > 0) { userData.permissions = user.permissions.map((permission) => permissionSerializer(permission) ); From fe1039cfbc6ee4d00b9047d18cf288eb40fc83b8 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Mon, 4 Mar 2024 16:07:18 +0100 Subject: [PATCH 2/2] test: Add permissions to get current user tests --- .../api/v1/users/get-current-user.test.js | 26 ++++++++++++++++--- .../rest/api/v1/users/get-current-user.js | 12 +++++++-- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/packages/backend/src/controllers/api/v1/users/get-current-user.test.js b/packages/backend/src/controllers/api/v1/users/get-current-user.test.js index 922dd409..7ed4f09c 100644 --- a/packages/backend/src/controllers/api/v1/users/get-current-user.test.js +++ b/packages/backend/src/controllers/api/v1/users/get-current-user.test.js @@ -2,15 +2,29 @@ import { describe, it, expect, beforeEach } from 'vitest'; import request from 'supertest'; import app from '../../../../app.js'; import createAuthTokenByUserId from '../../../../helpers/create-auth-token-by-user-id'; +import { createPermission } from '../../../../../test/factories/permission'; +import { createRole } from '../../../../../test/factories/role'; import { createUser } from '../../../../../test/factories/user'; import getCurrentUserMock from '../../../../../test/mocks/rest/api/v1/users/get-current-user'; describe('GET /api/v1/users/me', () => { - let role, currentUser, token; + let role, permissionOne, permissionTwo, currentUser, token; beforeEach(async () => { - currentUser = await createUser(); - role = await currentUser.$relatedQuery('role'); + role = await createRole(); + + permissionOne = await createPermission({ + roleId: role.id, + }); + + permissionTwo = await createPermission({ + roleId: role.id, + }); + + currentUser = await createUser({ + roleId: role.id, + }); + token = createAuthTokenByUserId(currentUser.id); }); @@ -20,7 +34,11 @@ describe('GET /api/v1/users/me', () => { .set('Authorization', token) .expect(200); - const expectedPayload = getCurrentUserMock(currentUser, role); + const expectedPayload = getCurrentUserMock(currentUser, role, [ + permissionOne, + permissionTwo, + ]); + expect(response.body).toEqual(expectedPayload); }); }); diff --git a/packages/backend/test/mocks/rest/api/v1/users/get-current-user.js b/packages/backend/test/mocks/rest/api/v1/users/get-current-user.js index f498e0d1..cfbd0f54 100644 --- a/packages/backend/test/mocks/rest/api/v1/users/get-current-user.js +++ b/packages/backend/test/mocks/rest/api/v1/users/get-current-user.js @@ -1,11 +1,19 @@ -const getCurrentUserMock = (currentUser, role) => { +const getCurrentUserMock = (currentUser, role, permissions) => { return { data: { createdAt: currentUser.createdAt.getTime(), email: currentUser.email, fullName: currentUser.fullName, id: currentUser.id, - permissions: [], + permissions: permissions.map((permission) => ({ + id: permission.id, + roleId: permission.roleId, + action: permission.action, + subject: permission.subject, + conditions: permission.conditions, + createdAt: permission.createdAt.getTime(), + updatedAt: permission.updatedAt.getTime(), + })), role: { createdAt: role.createdAt.getTime(), description: null,