From 079fb5d108f36b2e3d5a67f28d0b92eb62bc06da Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sun, 25 Feb 2024 03:15:55 +0100 Subject: [PATCH] feat: Implement automatisch info API endpoint --- .../controllers/api/v1/automatisch/info.js | 13 +++++++++++ .../api/v1/automatisch/info.test.js | 22 +++++++++++++++++++ .../backend/src/routes/api/v1/automatisch.js | 2 ++ .../mocks/rest/api/v1/automatisch/info.js | 18 +++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 packages/backend/src/controllers/api/v1/automatisch/info.js create mode 100644 packages/backend/src/controllers/api/v1/automatisch/info.test.js create mode 100644 packages/backend/test/mocks/rest/api/v1/automatisch/info.js diff --git a/packages/backend/src/controllers/api/v1/automatisch/info.js b/packages/backend/src/controllers/api/v1/automatisch/info.js new file mode 100644 index 00000000..5a37b539 --- /dev/null +++ b/packages/backend/src/controllers/api/v1/automatisch/info.js @@ -0,0 +1,13 @@ +import appConfig from '../../../../config/app.js'; +import { hasValidLicense } from '../../../../helpers/license.ee.js'; +import { renderObject } from '../../../../helpers/renderer.js'; + +export default async (request, response) => { + const info = { + isCloud: appConfig.isCloud, + isMation: appConfig.isMation, + isEnterprise: await hasValidLicense(), + }; + + renderObject(response, info); +}; diff --git a/packages/backend/src/controllers/api/v1/automatisch/info.test.js b/packages/backend/src/controllers/api/v1/automatisch/info.test.js new file mode 100644 index 00000000..1853346f --- /dev/null +++ b/packages/backend/src/controllers/api/v1/automatisch/info.test.js @@ -0,0 +1,22 @@ +import { vi, expect, describe, it } from 'vitest'; +import request from 'supertest'; +import appConfig from '../../../../config/app.js'; +import app from '../../../../app.js'; +import infoMock from '../../../../../test/mocks/rest/api/v1/automatisch/info.js'; +import * as license from '../../../../helpers/license.ee.js'; + +describe('GET /api/v1/automatisch/info', () => { + it('should return Automatisch info', async () => { + vi.spyOn(appConfig, 'isCloud', 'get').mockReturnValue(false); + vi.spyOn(appConfig, 'isMation', 'get').mockReturnValue(false); + vi.spyOn(license, 'hasValidLicense').mockResolvedValue(true); + + const response = await request(app) + .get('/api/v1/automatisch/info') + .expect(200); + + const expectedPayload = infoMock(); + + expect(response.body).toEqual(expectedPayload); + }); +}); diff --git a/packages/backend/src/routes/api/v1/automatisch.js b/packages/backend/src/routes/api/v1/automatisch.js index 10f932e9..91d2e2a7 100644 --- a/packages/backend/src/routes/api/v1/automatisch.js +++ b/packages/backend/src/routes/api/v1/automatisch.js @@ -1,10 +1,12 @@ import { Router } from 'express'; import versionAction from '../../../controllers/api/v1/automatisch/version.js'; import notificationsAction from '../../../controllers/api/v1/automatisch/notifications.js'; +import infoAction from '../../../controllers/api/v1/automatisch/info.js'; const router = Router(); router.get('/version', versionAction); router.get('/notifications', notificationsAction); +router.get('/info', infoAction); export default router; diff --git a/packages/backend/test/mocks/rest/api/v1/automatisch/info.js b/packages/backend/test/mocks/rest/api/v1/automatisch/info.js new file mode 100644 index 00000000..ec071631 --- /dev/null +++ b/packages/backend/test/mocks/rest/api/v1/automatisch/info.js @@ -0,0 +1,18 @@ +const infoMock = () => { + return { + data: { + isCloud: false, + isMation: false, + isEnterprise: true, + }, + meta: { + count: 1, + currentPage: null, + isArray: false, + totalPages: null, + type: 'Object', + }, + }; +}; + +export default infoMock;