From 66c887d8e1e431746a638b14aef3533f427bbf3e Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Mon, 5 May 2025 16:00:23 +0000 Subject: [PATCH] refactor(api): move create-flow endpoint to /flows --- .../api/v1/{users => flows}/create-flow.ee.js | 6 ++-- .../api/v1/flows/create-flow.ee.test.js | 29 ++++++++++++++----- .../backend/src/routes/api/v1/flows.ee.js | 2 ++ .../backend/src/routes/api/v1/users.ee.js | 2 -- 4 files changed, 25 insertions(+), 14 deletions(-) rename packages/backend/src/controllers/api/v1/{users => flows}/create-flow.ee.js (70%) diff --git a/packages/backend/src/controllers/api/v1/users/create-flow.ee.js b/packages/backend/src/controllers/api/v1/flows/create-flow.ee.js similarity index 70% rename from packages/backend/src/controllers/api/v1/users/create-flow.ee.js rename to packages/backend/src/controllers/api/v1/flows/create-flow.ee.js index 184037d9..3e0e64a1 100644 --- a/packages/backend/src/controllers/api/v1/users/create-flow.ee.js +++ b/packages/backend/src/controllers/api/v1/flows/create-flow.ee.js @@ -2,11 +2,9 @@ import { renderObject } from '../../../../helpers/renderer.js'; import User from '../../../../models/user.js'; export default async (request, response) => { - const { templateId } = request.query; + const { templateId, userId } = request.body; - const user = await User.query() - .findById(request.params.userId) - .throwIfNotFound(); + const user = await User.query().findById(userId).throwIfNotFound(); const flow = templateId ? await user.createFlowFromTemplate(templateId) diff --git a/packages/backend/src/controllers/api/v1/flows/create-flow.ee.test.js b/packages/backend/src/controllers/api/v1/flows/create-flow.ee.test.js index 2d0b8b34..ee933709 100644 --- a/packages/backend/src/controllers/api/v1/flows/create-flow.ee.test.js +++ b/packages/backend/src/controllers/api/v1/flows/create-flow.ee.test.js @@ -9,7 +9,7 @@ import { createUser } from '../../../../../test/factories/user.js'; import createFlowMock from '../../../../../test/mocks/rest/api/v1/users/create-flow.js'; import * as license from '../../../../helpers/license.ee.js'; -describe('POST /api/v1/users/:userId/flows', () => { +describe('POST /api/v1/flows', () => { let user, token; beforeEach(async () => { @@ -21,8 +21,11 @@ describe('POST /api/v1/users/:userId/flows', () => { it('should create an empty flow when no templateId is provided for the given user', async () => { const response = await request(app) - .post(`/api/v1/users/${user.id}/flows`) + .post('/api/v1/flows') .set('x-api-token', token) + .send({ + userId: user.id, + }) .expect(201); const refetchedFlow = await user @@ -40,9 +43,12 @@ describe('POST /api/v1/users/:userId/flows', () => { }); const response = await request(app) - .post(`/api/v1/users/${user.id}/flows`) - .query({ templateId: template.id }) + .post('/api/v1/flows') .set('x-api-token', token) + .send({ + templateId: template.id, + userId: user.id, + }) .expect(201); expect(response.body.data.name).toBe(template.flowData.name); @@ -50,8 +56,11 @@ describe('POST /api/v1/users/:userId/flows', () => { it('should return an error when an invalid templateId is provided', async () => { await request(app) - .post(`/api/v1/users/${user.id}/flows`) - .query({ templateId: 'invalid-template-id' }) + .post('/api/v1/flows') + .send({ + userId: user.id, + templateId: 'invalid-template-id', + }) .set('x-api-token', token) .expect(400); }); @@ -60,15 +69,19 @@ describe('POST /api/v1/users/:userId/flows', () => { const notExistingUserId = Crypto.randomUUID(); await request(app) - .get(`/api/v1/users/${notExistingUserId}/folders`) + .post('/api/v1/flows') .set('x-api-token', token) + .send({ userId: notExistingUserId }) .expect(404); }); it('should return bad request response for invalid user UUID', async () => { await request(app) - .get(`/api/v1/users/invalidUserUUID/folders`) + .post('/api/v1/flows') .set('x-api-token', token) + .send({ + userId: 'invalidUserUUID', + }) .expect(400); }); }); diff --git a/packages/backend/src/routes/api/v1/flows.ee.js b/packages/backend/src/routes/api/v1/flows.ee.js index 2da68381..07437260 100644 --- a/packages/backend/src/routes/api/v1/flows.ee.js +++ b/packages/backend/src/routes/api/v1/flows.ee.js @@ -1,4 +1,5 @@ import { Router } from 'express'; +import createFlowAction from '../../../controllers/api/v1/flows/create-flow.ee.js'; import deleteFlowAction from '../../../controllers/api/v1/flows/delete-flow.ee.js'; import getFlowAction from '../../../controllers/api/v1/flows/get-flow.ee.js'; import getFlowsAction from '../../../controllers/api/v1/flows/get-flows.ee.js'; @@ -7,6 +8,7 @@ import updateFlowStatusAction from '../../../controllers/api/v1/flows/update-flo const router = Router(); router.get('/', getFlowsAction); +router.post('/', createFlowAction); router.get('/:flowId', getFlowAction); router.delete('/:flowId', deleteFlowAction); router.patch('/:flowId/status', updateFlowStatusAction); diff --git a/packages/backend/src/routes/api/v1/users.ee.js b/packages/backend/src/routes/api/v1/users.ee.js index 5579819b..e49e6d96 100644 --- a/packages/backend/src/routes/api/v1/users.ee.js +++ b/packages/backend/src/routes/api/v1/users.ee.js @@ -1,5 +1,4 @@ import { Router } from 'express'; -import createFlowAction from '../../../controllers/api/v1/users/create-flow.ee.js'; import createFolderAction from '../../../controllers/api/v1/users/create-folder.ee.js'; import getFoldersAction from '../../../controllers/api/v1/users/get-folders.ee.js'; import getUserAction from '../../../controllers/api/v1/users/get-user.ee.js'; @@ -11,7 +10,6 @@ const router = Router(); router.get('/', getUsersAction); router.get('/:userId', getUserAction); router.delete('/:userId', deleteUserAction); -router.post('/:userId/flows', createFlowAction); router.get('/:userId/folders', getFoldersAction); router.post('/:userId/folders', createFolderAction);