From 532cfc10d0955a8f29b6a4351637666575306c00 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sat, 24 Feb 2024 00:31:15 +0100 Subject: [PATCH] feat: Move get users API endpoint to admin namespace --- .../users/get-users.ee.js} | 6 ++-- .../users/get-users.ee.test.js} | 31 +++++++------------ .../src/routes/api/v1/admin/users.ee.js | 17 ++++++++++ packages/backend/src/routes/api/v1/users.js | 2 -- packages/backend/src/routes/index.js | 2 ++ .../api/v1/{ => admin}/users/get-users.js | 0 6 files changed, 34 insertions(+), 24 deletions(-) rename packages/backend/src/controllers/api/v1/{users/get-users.js => admin/users/get-users.ee.js} (63%) rename packages/backend/src/controllers/api/v1/{users/get-users.test.js => admin/users/get-users.ee.test.js} (53%) create mode 100644 packages/backend/src/routes/api/v1/admin/users.ee.js rename packages/backend/test/mocks/rest/api/v1/{ => admin}/users/get-users.js (100%) diff --git a/packages/backend/src/controllers/api/v1/users/get-users.js b/packages/backend/src/controllers/api/v1/admin/users/get-users.ee.js similarity index 63% rename from packages/backend/src/controllers/api/v1/users/get-users.js rename to packages/backend/src/controllers/api/v1/admin/users/get-users.ee.js index 11728f90..387302bd 100644 --- a/packages/backend/src/controllers/api/v1/users/get-users.js +++ b/packages/backend/src/controllers/api/v1/admin/users/get-users.ee.js @@ -1,6 +1,6 @@ -import { renderObject } from '../../../../helpers/renderer.js'; -import User from '../../../../models/user.js'; -import paginateRest from '../../../../helpers/pagination-rest.js'; +import { renderObject } from '../../../../../helpers/renderer.js'; +import User from '../../../../../models/user.js'; +import paginateRest from '../../../../../helpers/pagination-rest.js'; export default async (request, response) => { const usersQuery = User.query() diff --git a/packages/backend/src/controllers/api/v1/users/get-users.test.js b/packages/backend/src/controllers/api/v1/admin/users/get-users.ee.test.js similarity index 53% rename from packages/backend/src/controllers/api/v1/users/get-users.test.js rename to packages/backend/src/controllers/api/v1/admin/users/get-users.ee.test.js index ed8baeba..bf1f9744 100644 --- a/packages/backend/src/controllers/api/v1/users/get-users.test.js +++ b/packages/backend/src/controllers/api/v1/admin/users/get-users.ee.test.js @@ -1,26 +1,17 @@ -import { describe, it, expect, beforeEach } from 'vitest'; +import { vi, describe, it, expect, beforeEach } from 'vitest'; import request from 'supertest'; -import app from '../../../../app'; -import createAuthTokenByUserId from '../../../../helpers/create-auth-token-by-user-id'; -import { createRole } from '../../../../../test/factories/role'; -import { createPermission } from '../../../../../test/factories/permission'; -import { createUser } from '../../../../../test/factories/user'; -import getUsersMock from '../../../../../test/mocks/rest/api/v1/users/get-users'; +import app from '../../../../../app'; +import createAuthTokenByUserId from '../../../../../helpers/create-auth-token-by-user-id'; +import { createRole } from '../../../../../../test/factories/role'; +import { createUser } from '../../../../../../test/factories/user'; +import getUsersMock from '../../../../../../test/mocks/rest/api/v1/admin/users/get-users.js'; +import * as license from '../../../../../helpers/license.ee.js'; -describe('GET /api/v1/users', () => { +describe('GET /api/v1/admin/users', () => { let currentUser, currentUserRole, anotherUser, anotherUserRole, token; beforeEach(async () => { - currentUserRole = await createRole({ - key: 'currentUser', - name: 'Current user role', - }); - - await createPermission({ - action: 'read', - subject: 'User', - roleId: currentUserRole.id, - }); + currentUserRole = await createRole({ key: 'admin' }); currentUser = await createUser({ roleId: currentUserRole.id, @@ -41,8 +32,10 @@ describe('GET /api/v1/users', () => { }); it('should return users data', async () => { + vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); + const response = await request(app) - .get('/api/v1/users') + .get('/api/v1/admin/users') .set('Authorization', token) .expect(200); diff --git a/packages/backend/src/routes/api/v1/admin/users.ee.js b/packages/backend/src/routes/api/v1/admin/users.ee.js new file mode 100644 index 00000000..c3b18341 --- /dev/null +++ b/packages/backend/src/routes/api/v1/admin/users.ee.js @@ -0,0 +1,17 @@ +import { Router } from 'express'; +import { authenticateUser } from '../../../../helpers/authentication.js'; +import { authorizeAdmin } from '../../../../helpers/authorization.js'; +import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js'; +import getUsersAction from '../../../../controllers/api/v1/admin/users/get-users.ee.js'; + +const router = Router(); + +router.get( + '/', + authenticateUser, + authorizeAdmin, + checkIsEnterprise, + getUsersAction +); + +export default router; diff --git a/packages/backend/src/routes/api/v1/users.js b/packages/backend/src/routes/api/v1/users.js index 97eb8895..6d2d9e00 100644 --- a/packages/backend/src/routes/api/v1/users.js +++ b/packages/backend/src/routes/api/v1/users.js @@ -4,12 +4,10 @@ import { authorizeUser } from '../../../helpers/authorization.js'; import checkIsCloud from '../../../helpers/check-is-cloud.js'; import getCurrentUserAction from '../../../controllers/api/v1/users/get-current-user.js'; import getUserAction from '../../../controllers/api/v1/users/get-user.js'; -import getUsersAction from '../../../controllers/api/v1/users/get-users.js'; import getUserTrialAction from '../../../controllers/api/v1/users/get-user-trial.ee.js'; const router = Router(); -router.get('/', authenticateUser, authorizeUser, getUsersAction); router.get('/me', authenticateUser, getCurrentUserAction); router.get('/:userId', authenticateUser, authorizeUser, getUserAction); router.get( diff --git a/packages/backend/src/routes/index.js b/packages/backend/src/routes/index.js index 8914ef8e..51fccf26 100644 --- a/packages/backend/src/routes/index.js +++ b/packages/backend/src/routes/index.js @@ -9,6 +9,7 @@ import paymentRouter from './api/v1/payment.ee.js'; import samlAuthProvidersRouter from './api/v1/admin/saml-auth-providers.ee.js'; import rolesRouter from './api/v1/admin/roles.ee.js'; import permissionsRouter from './api/v1/admin/permissions.ee.js'; +import adminUsersRouter from './api/v1/admin/users.ee.js'; const router = Router(); @@ -22,5 +23,6 @@ router.use('/api/v1/payment', paymentRouter); router.use('/api/v1/admin/saml-auth-providers', samlAuthProvidersRouter); router.use('/api/v1/admin/roles', rolesRouter); router.use('/api/v1/admin/permissions', permissionsRouter); +router.use('/api/v1/admin/users', adminUsersRouter); export default router; diff --git a/packages/backend/test/mocks/rest/api/v1/users/get-users.js b/packages/backend/test/mocks/rest/api/v1/admin/users/get-users.js similarity index 100% rename from packages/backend/test/mocks/rest/api/v1/users/get-users.js rename to packages/backend/test/mocks/rest/api/v1/admin/users/get-users.js