53 lines
1.5 KiB
JavaScript
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'
|
|
}]
|
|
}
|
|
}]);
|
|
});
|