diff --git a/packages/backend/src/controllers/api/v1/admin/app-auth-clients/get-app-auth-clients.ee.test.js b/packages/backend/src/controllers/api/v1/admin/app-auth-clients/get-app-auth-clients.ee.test.js deleted file mode 100644 index b3394c89..00000000 --- a/packages/backend/src/controllers/api/v1/admin/app-auth-clients/get-app-auth-clients.ee.test.js +++ /dev/null @@ -1,41 +0,0 @@ -import { vi, 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.js'; -import { createUser } from '../../../../../../test/factories/user.js'; -import getAdminAppAuthClientsMock from '../../../../../../test/mocks/rest/api/v1/admin/app-auth-clients/get-app-auth-clients.js'; -import { createAppAuthClient } from '../../../../../../test/factories/app-auth-client.js'; -import { createRole } from '../../../../../../test/factories/role.js'; -import * as license from '../../../../../helpers/license.ee.js'; - -describe('GET /api/v1/admin/app-auth-clients', () => { - let currentUser, currentUserRole, token; - - describe('with valid license key', () => { - beforeEach(async () => { - vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); - - currentUserRole = await createRole({ key: 'admin' }); - currentUser = await createUser({ roleId: currentUserRole.id }); - - token = createAuthTokenByUserId(currentUser.id); - }); - - it('should return app auth clients', async () => { - const appAuthClientOne = await createAppAuthClient(); - const appAuthClientTwo = await createAppAuthClient(); - - const response = await request(app) - .get('/api/v1/admin/app-auth-clients') - .set('Authorization', token) - .expect(200); - - const expectedPayload = getAdminAppAuthClientsMock([ - appAuthClientTwo, - appAuthClientOne, - ]); - - expect(response.body).toEqual(expectedPayload); - }); - }); -}); diff --git a/packages/backend/src/controllers/api/v1/admin/app-auth-clients/get-app-auth-clients.ee.js b/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.js similarity index 62% rename from packages/backend/src/controllers/api/v1/admin/app-auth-clients/get-app-auth-clients.ee.js rename to packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.js index 03d0aeee..257e0dd7 100644 --- a/packages/backend/src/controllers/api/v1/admin/app-auth-clients/get-app-auth-clients.ee.js +++ b/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.js @@ -2,10 +2,9 @@ import { renderObject } from '../../../../../helpers/renderer.js'; import AppAuthClient from '../../../../../models/app-auth-client.js'; export default async (request, response) => { - const appAuthClients = await AppAuthClient.query().orderBy( - 'created_at', - 'desc' - ); + const appAuthClients = await AppAuthClient.query() + .where({ app_key: request.params.appKey }) + .orderBy('created_at', 'desc'); renderObject(response, appAuthClients); }; diff --git a/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.test.js b/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.test.js new file mode 100644 index 00000000..0f59a846 --- /dev/null +++ b/packages/backend/src/controllers/api/v1/admin/apps/get-auth-clients.ee.test.js @@ -0,0 +1,44 @@ +import { vi, 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.js'; +import { createUser } from '../../../../../../test/factories/user.js'; +import { createRole } from '../../../../../../test/factories/role.js'; +import getAuthClientsMock from '../../../../../../test/mocks/rest/api/v1/admin/apps/get-auth-clients.js'; +import { createAppAuthClient } from '../../../../../../test/factories/app-auth-client.js'; +import * as license from '../../../../../helpers/license.ee.js'; + +describe('GET /api/v1/admin/apps/:appKey/auth-clients', () => { + let currentUser, adminRole, token; + + beforeEach(async () => { + vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); + + adminRole = await createRole({ key: 'admin' }); + currentUser = await createUser({ roleId: adminRole.id }); + + token = createAuthTokenByUserId(currentUser.id); + }); + + it('should return specified app auth client info', async () => { + const appAuthClientOne = await createAppAuthClient({ + appKey: 'deepl', + }); + + const appAuthClientTwo = await createAppAuthClient({ + appKey: 'deepl', + }); + + const response = await request(app) + .get('/api/v1/admin/apps/deepl/auth-clients') + .set('Authorization', token) + .expect(200); + + const expectedPayload = getAuthClientsMock([ + appAuthClientTwo, + appAuthClientOne, + ]); + + expect(response.body).toEqual(expectedPayload); + }); +}); diff --git a/packages/backend/src/controllers/api/v1/apps/get-auth-clients.ee.test.js b/packages/backend/src/controllers/api/v1/apps/get-auth-clients.ee.test.js index 3f04a10f..c671ce74 100644 --- a/packages/backend/src/controllers/api/v1/apps/get-auth-clients.ee.test.js +++ b/packages/backend/src/controllers/api/v1/apps/get-auth-clients.ee.test.js @@ -7,7 +7,7 @@ import getAuthClientsMock from '../../../../../test/mocks/rest/api/v1/apps/get-a import { createAppAuthClient } from '../../../../../test/factories/app-auth-client.js'; import * as license from '../../../../helpers/license.ee.js'; -describe('GET /api/v1/app/:appKey/auth-clients', () => { +describe('GET /api/v1/apps/:appKey/auth-clients', () => { let currentUser, token; beforeEach(async () => { diff --git a/packages/backend/src/routes/api/v1/admin/app-auth-clients.ee.js b/packages/backend/src/routes/api/v1/admin/app-auth-clients.ee.js index cda5e2e0..961b6616 100644 --- a/packages/backend/src/routes/api/v1/admin/app-auth-clients.ee.js +++ b/packages/backend/src/routes/api/v1/admin/app-auth-clients.ee.js @@ -3,19 +3,10 @@ import asyncHandler from 'express-async-handler'; import { authenticateUser } from '../../../../helpers/authentication.js'; import { authorizeAdmin } from '../../../../helpers/authorization.js'; import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js'; -import getAdminAppAuthClientsAction from '../../../../controllers/api/v1/admin/app-auth-clients/get-app-auth-clients.ee.js'; import getAdminAppAuthClientAction from '../../../../controllers/api/v1/admin/app-auth-clients/get-app-auth-client.ee.js'; const router = Router(); -router.get( - '/', - authenticateUser, - authorizeAdmin, - checkIsEnterprise, - asyncHandler(getAdminAppAuthClientsAction) -); - router.get( '/:appAuthClientId', authenticateUser, diff --git a/packages/backend/src/routes/api/v1/admin/apps.ee.js b/packages/backend/src/routes/api/v1/admin/apps.ee.js new file mode 100644 index 00000000..0994d054 --- /dev/null +++ b/packages/backend/src/routes/api/v1/admin/apps.ee.js @@ -0,0 +1,27 @@ +import { Router } from 'express'; +import asyncHandler from 'express-async-handler'; +import { authenticateUser } from '../../../../helpers/authentication.js'; +import { authorizeAdmin } from '../../../../helpers/authorization.js'; +import { checkIsEnterprise } from '../../../../helpers/check-is-enterprise.js'; +import getAuthClientsAction from '../../../../controllers/api/v1/admin/apps/get-auth-clients.ee.js'; +import getRoleAction from '../../../../controllers/api/v1/admin/roles/get-role.ee.js'; + +const router = Router(); + +router.get( + '/:appKey/auth-clients', + authenticateUser, + authorizeAdmin, + checkIsEnterprise, + asyncHandler(getAuthClientsAction) +); + +router.get( + '/:appKey/auth-clients/:appAuthClientId', + authenticateUser, + authorizeAdmin, + checkIsEnterprise, + asyncHandler(getRoleAction) +); + +export default router; diff --git a/packages/backend/src/routes/index.js b/packages/backend/src/routes/index.js index f582352e..5ded51ac 100644 --- a/packages/backend/src/routes/index.js +++ b/packages/backend/src/routes/index.js @@ -13,6 +13,7 @@ import appsRouter from './api/v1/apps.js'; import connectionsRouter from './api/v1/connections.js'; import executionsRouter from './api/v1/executions.js'; import samlAuthProvidersRouter from './api/v1/saml-auth-providers.ee.js'; +import adminAppsRouter from './api/v1/admin/apps.ee.js'; import adminSamlAuthProvidersRouter 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'; @@ -35,10 +36,11 @@ router.use('/api/v1/flows', flowsRouter); router.use('/api/v1/steps', stepsRouter); router.use('/api/v1/executions', executionsRouter); router.use('/api/v1/saml-auth-providers', samlAuthProvidersRouter); -router.use('/api/v1/admin/saml-auth-providers', adminSamlAuthProvidersRouter); +router.use('/api/v1/admin/apps', adminAppsRouter); +router.use('/api/v1/admin/users', adminUsersRouter); router.use('/api/v1/admin/roles', rolesRouter); router.use('/api/v1/admin/permissions', permissionsRouter); -router.use('/api/v1/admin/users', adminUsersRouter); +router.use('/api/v1/admin/saml-auth-providers', adminSamlAuthProvidersRouter); router.use('/api/v1/admin/app-auth-clients', adminAppAuthClientsRouter); export default router; diff --git a/packages/backend/test/mocks/rest/api/v1/admin/app-auth-clients/get-app-auth-clients.js b/packages/backend/test/mocks/rest/api/v1/admin/apps/get-auth-clients.js similarity index 90% rename from packages/backend/test/mocks/rest/api/v1/admin/app-auth-clients/get-app-auth-clients.js rename to packages/backend/test/mocks/rest/api/v1/admin/apps/get-auth-clients.js index cb40da1a..dd0cc5ee 100644 --- a/packages/backend/test/mocks/rest/api/v1/admin/app-auth-clients/get-app-auth-clients.js +++ b/packages/backend/test/mocks/rest/api/v1/admin/apps/get-auth-clients.js @@ -1,7 +1,6 @@ const getAdminAppAuthClientsMock = (appAuthClients) => { return { data: appAuthClients.map((appAuthClient) => ({ - appConfigId: appAuthClient.appConfigId, name: appAuthClient.name, id: appAuthClient.id, active: appAuthClient.active,