Files
BetterDesk/web-nodejs/tests/privilegedUpdateHelper.test.js
T
Knienartowicz 30585a8bc7 fix(panel): persist connection mode via privileged systemd drop-in
Panel runs as betterdesk and cannot rewrite /etc/systemd/system/*.service.
Write ALLOW_SHARED_NAT_INITIATOR and related flags through the fixed root
broker into a service.d drop-in so Settings no longer fails with EACCES.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-18 10:29:26 +02:00

37 lines
1.4 KiB
JavaScript

'use strict';
const {
ALLOWED_SERVICES,
PRIVILEGED_UPDATE_HELPER_PATH,
invokePrivilegedUpdate,
restartService,
} = require('../lib/privilegedUpdateHelper');
describe('privileged update broker client', () => {
test('uses a fixed root-owned helper and a narrow service allowlist', () => {
expect(PRIVILEGED_UPDATE_HELPER_PATH)
.toBe('/usr/local/libexec/betterdesk/betterdesk-privileged-update.js');
expect([...ALLOWED_SERVICES]).toEqual(
expect.arrayContaining(['betterdesk-console', 'betterdesk-server']),
);
expect(ALLOWED_SERVICES.has('sshd')).toBe(false);
});
test('rejects malformed requests before invoking a privileged process', () => {
expect(() => invokePrivilegedUpdate(null)).toThrow(/Invalid privileged update request/);
expect(() => restartService('sshd')).toThrow(/Service is not allowlisted/);
});
test('broker source documents write_connection_env for panel settings', () => {
const fs = require('fs');
const path = require('path');
const src = fs.readFileSync(
path.join(__dirname, '..', 'scripts', 'betterdesk-privileged-update.js'),
'utf8'
);
expect(src).toContain("case 'write_connection_env'");
expect(src).toContain('ALLOW_SHARED_NAT_INITIATOR');
expect(src).toContain('50-betterdesk-connection.conf');
});
});