Merge pull request #2483 from automatisch/aut-1566
feat(mation): add specific remotes for license, telemetry and notifications
This commit is contained in:
@@ -1,15 +1,24 @@
|
||||
import { renderObject } from '../../../../../helpers/renderer.js';
|
||||
import axios from '../../../../../helpers/axios-with-proxy.js';
|
||||
import logger from '../../../../../helpers/logger.js';
|
||||
|
||||
const NOTIFICATIONS_URL =
|
||||
'https://notifications.automatisch.io/notifications.json';
|
||||
import appConfig from '../../../../../config/app.js';
|
||||
|
||||
export default async (request, response) => {
|
||||
const AUTOMATISCH_NOTIFICATIONS_URL =
|
||||
'https://notifications.automatisch.io/notifications.json';
|
||||
|
||||
const MATION_NOTIFICATIONS_URL =
|
||||
'https://notifications.mation.work/notifications.json';
|
||||
|
||||
const NOTIFICATIONS_URL = appConfig.isMation
|
||||
? MATION_NOTIFICATIONS_URL
|
||||
: AUTOMATISCH_NOTIFICATIONS_URL;
|
||||
|
||||
let notifications = [];
|
||||
|
||||
try {
|
||||
const response = await axios.get(NOTIFICATIONS_URL);
|
||||
|
||||
notifications = response.data;
|
||||
} catch (error) {
|
||||
logger.error('Error fetching notifications API endpoint!', error);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { describe, it } from 'vitest';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import request from 'supertest';
|
||||
import app from '../../../../../app.js';
|
||||
import axios from '../../../../../helpers/axios-with-proxy.js';
|
||||
import appConfig from '../../../../../config/app.js';
|
||||
|
||||
describe('GET /internal/api/v1/automatisch/notifications', () => {
|
||||
it('should return Automatisch notifications', async () => {
|
||||
@@ -8,4 +10,46 @@ describe('GET /internal/api/v1/automatisch/notifications', () => {
|
||||
.get('/internal/api/v1/automatisch/notifications')
|
||||
.expect(200);
|
||||
});
|
||||
|
||||
it('should use Automatisch notifications URL when Mation is not enabled', async () => {
|
||||
const AUTOMATISCH_NOTIFICATIONS_URL =
|
||||
'https://notifications.automatisch.io/notifications.json';
|
||||
|
||||
vi.spyOn(axios, 'get').mockResolvedValueOnce({
|
||||
data: [],
|
||||
});
|
||||
|
||||
await request(app)
|
||||
.get('/internal/api/v1/automatisch/notifications')
|
||||
.expect(200);
|
||||
|
||||
expect(axios.get).toHaveBeenCalledWith(AUTOMATISCH_NOTIFICATIONS_URL);
|
||||
});
|
||||
|
||||
it('should use Mation notifications URL when Mation is enabled', async () => {
|
||||
vi.spyOn(appConfig, 'isMation', 'get').mockReturnValue(true);
|
||||
|
||||
const MATION_NOTIFICATIONS_URL =
|
||||
'https://notifications.mation.work/notifications.json';
|
||||
|
||||
vi.spyOn(axios, 'get').mockResolvedValueOnce({
|
||||
data: [],
|
||||
});
|
||||
|
||||
await request(app)
|
||||
.get('/internal/api/v1/automatisch/notifications')
|
||||
.expect(200);
|
||||
|
||||
expect(axios.get).toHaveBeenCalledWith(MATION_NOTIFICATIONS_URL);
|
||||
});
|
||||
|
||||
it('should return no notifications when Automatisch notifications are not available', async () => {
|
||||
vi.spyOn(axios, 'get').mockRejectedValueOnce();
|
||||
|
||||
const response = await request(app)
|
||||
.get('/internal/api/v1/automatisch/notifications')
|
||||
.expect(200);
|
||||
|
||||
expect(response.body.data).toStrictEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -4,6 +4,12 @@ import axios from './axios-with-proxy.js';
|
||||
|
||||
const CACHE_DURATION = 1000 * 60 * 60 * 24; // 24 hours in milliseconds
|
||||
|
||||
const AUTOMATISCH_LICENSE_VERIFY_URL =
|
||||
'https://license.automatisch.io/api/v1/licenses/verify';
|
||||
|
||||
const MATION_LICENSE_VERIFY_URL =
|
||||
'https://license.mation.work/api/v1/licenses/verify';
|
||||
|
||||
const hasValidLicense = async () => {
|
||||
const license = await getLicense();
|
||||
|
||||
@@ -17,7 +23,10 @@ const getLicense = async () => {
|
||||
return false;
|
||||
}
|
||||
|
||||
const url = 'https://license.automatisch.io/api/v1/licenses/verify';
|
||||
const url = appConfig.isMation
|
||||
? MATION_LICENSE_VERIFY_URL
|
||||
: AUTOMATISCH_LICENSE_VERIFY_URL;
|
||||
|
||||
const cachedResponse = memoryCache.get(url);
|
||||
|
||||
if (cachedResponse) {
|
||||
|
||||
@@ -5,9 +5,13 @@ import appConfig from '../../config/app.js';
|
||||
import os from 'os';
|
||||
|
||||
const WRITE_KEY = '284Py4VgK2MsNYV7xlKzyrALx0v';
|
||||
const DATA_PLANE_URL = 'https://telemetry.automatisch.io/v1/batch';
|
||||
const CPUS = os.cpus();
|
||||
const SIX_HOURS_IN_MILLISECONDS = 21600000;
|
||||
const AUTOMATISCH_DATA_PLANE_URL = 'https://telemetry.automatisch.io/v1/batch';
|
||||
const MATION_DATA_PLANE_URL = 'https://telemetry.mation.work/v1/batch';
|
||||
const DATA_PLANE_URL = appConfig.isMation
|
||||
? MATION_DATA_PLANE_URL
|
||||
: AUTOMATISCH_DATA_PLANE_URL;
|
||||
|
||||
class Telemetry {
|
||||
constructor() {
|
||||
|
||||
@@ -28,10 +28,10 @@ export default defineConfig({
|
||||
],
|
||||
thresholds: {
|
||||
autoUpdate: true,
|
||||
statements: 99.44,
|
||||
branches: 98.41,
|
||||
statements: 99.45,
|
||||
branches: 98.46,
|
||||
functions: 99.09,
|
||||
lines: 99.44,
|
||||
lines: 99.45,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user