Files
pulse-signage/test/player-control-sync.test.js
T
lzstealth 0a03cdd0b7
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 2m6s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 33s
Release v2.12.0
2026-09-11 17:22:31 +01:00

53 lines
1.5 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
const crypto = require('crypto');
const { registerPlayerControlSyncTask } = require('../src/web/lib/background-tasks/tasks-scheduled/player-control-sync');
test('player control sync sends minimized authorization data to remote players only', async () => {
let task = null;
const forwarded = [];
registerPlayerControlSyncTask({
pool: {
async query() {
return [[{
username: 'operator',
password_hash: 'hash',
password_salt: 'salt'
}]];
}
},
common: {
async fetchPlayerRegistrations() {
return [
{ identifier: 'local', internal_base_url: 'http://player:8081' },
{ identifier: 'remote', internal_base_url: 'http://remote-player:8081' }
];
}
},
backgroundTaskQueue: {
registerRecurringTask(value) {
task = value;
}
},
localPlayerInternalUrl: 'http://player:8081',
forwardPlayerCommandToDevice: async function (deviceId, payload) {
forwarded.push({ deviceId, payload });
}
});
assert.equal(task.intervalMs, 15 * 60 * 1000);
await task.run();
assert.deepEqual(forwarded, [{
deviceId: 'remote',
payload: {
command: 'sync-local-control',
users: [{
username_hash: crypto.createHash('sha256').update('operator').digest('hex'),
password_hash: 'hash',
password_salt: 'salt'
}]
}
}]);
});