Split web and player build artifacts
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
const express = require('express');
|
||||
|
||||
require('../src/common');
|
||||
|
||||
const { createRequestAuthHeaders } = require('../src/request-auth');
|
||||
const registerInternalSyncRoutes = require('../src/web/routes/internal/sync');
|
||||
|
||||
test('player media sync requests are queued as background tasks', async () => {
|
||||
const originalSecret = process.env.PULSE_SIGNAGE_SHARED_SECRET;
|
||||
process.env.PULSE_SIGNAGE_SHARED_SECRET = 'test-shared-secret';
|
||||
|
||||
const queuedTasks = [];
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
|
||||
registerInternalSyncRoutes(app, {
|
||||
backgroundTaskQueue: {
|
||||
async enqueueTask(definition) {
|
||||
queuedTasks.push(definition);
|
||||
return {
|
||||
id: 42,
|
||||
key: definition.key,
|
||||
taskType: definition.taskType,
|
||||
title: definition.title,
|
||||
category: definition.category,
|
||||
status: 'queued',
|
||||
createdAt: new Date().toISOString(),
|
||||
startedAt: '',
|
||||
finishedAt: '',
|
||||
errorMessage: '',
|
||||
attempts: 0,
|
||||
metadata: definition.metadata,
|
||||
payload: definition.payload
|
||||
};
|
||||
}
|
||||
},
|
||||
uploadSyncService: {},
|
||||
mediaDir: 'e:/Projects Git/pulse-signage/media'
|
||||
});
|
||||
|
||||
app.use(function (error, _req, res, _next) {
|
||||
res.status(error.statusCode || 500).json({ error: String(error && error.message ? error.message : error) });
|
||||
});
|
||||
|
||||
const server = app.listen(0);
|
||||
|
||||
try {
|
||||
const address = server.address();
|
||||
const body = {
|
||||
deviceId: 'player-remote',
|
||||
playerPublicBaseUrl: 'https://player.example.test',
|
||||
playerInternalBaseUrl: 'http://player-bridge:8090'
|
||||
};
|
||||
const headers = Object.assign({
|
||||
'content-type': 'application/json'
|
||||
}, createRequestAuthHeaders({
|
||||
method: 'POST',
|
||||
pathname: '/api/internal/sync/player-media',
|
||||
body: body
|
||||
}));
|
||||
|
||||
const response = await fetch(`http://127.0.0.1:${address.port}/api/internal/sync/player-media`, {
|
||||
method: 'POST',
|
||||
headers: headers,
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
|
||||
assert.equal(response.status, 202);
|
||||
assert.equal(queuedTasks.length, 1);
|
||||
assert.equal(queuedTasks[0].key, 'player-media-sync');
|
||||
assert.equal(queuedTasks[0].taskType, 'media-sync');
|
||||
assert.equal(queuedTasks[0].payload.mode, 'initial');
|
||||
assert.equal(queuedTasks[0].payload.playerIdentifier, 'player-remote');
|
||||
assert.equal(queuedTasks[0].metadata.playerLabel, 'player-remote');
|
||||
} finally {
|
||||
await new Promise(function (resolve) {
|
||||
server.close(resolve);
|
||||
});
|
||||
process.env.PULSE_SIGNAGE_SHARED_SECRET = originalSecret;
|
||||
}
|
||||
});
|
||||
|
||||
test('player font sync requests are queued as background tasks', async () => {
|
||||
const originalSecret = process.env.PULSE_SIGNAGE_SHARED_SECRET;
|
||||
process.env.PULSE_SIGNAGE_SHARED_SECRET = 'test-shared-secret';
|
||||
|
||||
const queuedTasks = [];
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
|
||||
registerInternalSyncRoutes(app, {
|
||||
backgroundTaskQueue: {
|
||||
async enqueueTask(definition) {
|
||||
queuedTasks.push(definition);
|
||||
return {
|
||||
id: 43,
|
||||
key: definition.key,
|
||||
taskType: definition.taskType,
|
||||
title: definition.title,
|
||||
category: definition.category,
|
||||
status: 'queued',
|
||||
createdAt: new Date().toISOString(),
|
||||
startedAt: '',
|
||||
finishedAt: '',
|
||||
errorMessage: '',
|
||||
attempts: 0,
|
||||
metadata: definition.metadata,
|
||||
payload: definition.payload
|
||||
};
|
||||
}
|
||||
},
|
||||
uploadSyncService: {},
|
||||
mediaDir: 'e:/Projects Git/pulse-signage/media'
|
||||
});
|
||||
|
||||
app.use(function (error, _req, res, _next) {
|
||||
res.status(error.statusCode || 500).json({ error: String(error && error.message ? error.message : error) });
|
||||
});
|
||||
|
||||
const server = app.listen(0);
|
||||
|
||||
try {
|
||||
const address = server.address();
|
||||
const body = {
|
||||
deviceId: 'player-remote',
|
||||
playerPublicBaseUrl: 'https://player.example.test',
|
||||
playerInternalBaseUrl: 'http://player-bridge:8090'
|
||||
};
|
||||
const headers = Object.assign({
|
||||
'content-type': 'application/json'
|
||||
}, createRequestAuthHeaders({
|
||||
method: 'POST',
|
||||
pathname: '/api/internal/sync/player-font',
|
||||
body: body
|
||||
}));
|
||||
|
||||
const response = await fetch(`http://127.0.0.1:${address.port}/api/internal/sync/player-font`, {
|
||||
method: 'POST',
|
||||
headers: headers,
|
||||
body: JSON.stringify(body)
|
||||
});
|
||||
|
||||
assert.equal(response.status, 202);
|
||||
assert.equal(queuedTasks.length, 1);
|
||||
assert.equal(queuedTasks[0].key, 'player-font-sync');
|
||||
assert.equal(queuedTasks[0].taskType, 'font-sync');
|
||||
assert.equal(queuedTasks[0].payload.mode, 'initial');
|
||||
assert.equal(queuedTasks[0].payload.playerIdentifier, 'player-remote');
|
||||
assert.equal(queuedTasks[0].metadata.playerLabel, 'player-remote');
|
||||
} finally {
|
||||
await new Promise(function (resolve) {
|
||||
server.close(resolve);
|
||||
});
|
||||
process.env.PULSE_SIGNAGE_SHARED_SECRET = originalSecret;
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user