feat: Implement get app actions API endpoint

This commit is contained in:
Faruk AYDIN
2024-03-02 16:13:13 +01:00
parent df2fbbabc6
commit 7c368af5ed
4 changed files with 72 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
import App from '../../../../models/app.js';
import { renderObject } from '../../../../helpers/renderer.js';
export default async (request, response) => {
const actions = await App.findActionsByKey(request.params.appKey);
renderObject(response, actions, { serializer: 'Action' });
};

View File

@@ -0,0 +1,35 @@
import { describe, it, expect, beforeEach } from 'vitest';
import request from 'supertest';
import App from '../../../../models/app';
import app from '../../../../app.js';
import createAuthTokenByUserId from '../../../../helpers/create-auth-token-by-user-id';
import { createUser } from '../../../../../test/factories/user';
import getActionsMock from '../../../../../test/mocks/rest/api/v1/apps/get-actions.js';
describe('GET /api/v1/apps/:appKey/actions', () => {
let currentUser, token;
beforeEach(async () => {
currentUser = await createUser();
token = createAuthTokenByUserId(currentUser.id);
});
it('should return the app actions', async () => {
const exampleApp = await App.findOneByKey('github');
const response = await request(app)
.get(`/api/v1/apps/${exampleApp.key}/actions`)
.set('Authorization', token)
.expect(200);
const expectedPayload = getActionsMock(exampleApp.actions);
expect(response.body).toEqual(expectedPayload);
});
it('should return not found response for invalid app key', async () => {
await request(app)
.get('/api/v1/apps/invalid-app-key/actions')
.set('Authorization', token)
.expect(404);
});
});

View File

@@ -6,6 +6,7 @@ import getAppsAction from '../../../controllers/api/v1/apps/get-apps.js';
import getAuthAction from '../../../controllers/api/v1/apps/get-auth.js'; import getAuthAction from '../../../controllers/api/v1/apps/get-auth.js';
import getTriggersAction from '../../../controllers/api/v1/apps/get-triggers.js'; import getTriggersAction from '../../../controllers/api/v1/apps/get-triggers.js';
import getTriggerSubstepsAction from '../../../controllers/api/v1/apps/get-trigger-substeps.js'; import getTriggerSubstepsAction from '../../../controllers/api/v1/apps/get-trigger-substeps.js';
import getActionsAction from '../../../controllers/api/v1/apps/get-actions.js';
const router = Router(); const router = Router();
@@ -25,4 +26,10 @@ router.get(
asyncHandler(getTriggerSubstepsAction) asyncHandler(getTriggerSubstepsAction)
); );
router.get(
'/:appKey/actions',
authenticateUser,
asyncHandler(getActionsAction)
);
export default router; export default router;

View File

@@ -0,0 +1,22 @@
const getActionsMock = (actions) => {
const actionsData = actions.map((trigger) => {
return {
name: trigger.name,
key: trigger.key,
description: trigger.description,
};
});
return {
data: actionsData,
meta: {
count: actions.length,
currentPage: null,
isArray: true,
totalPages: null,
type: 'Object',
},
};
};
export default getActionsMock;