Files
BetterDesk/web-nodejs/tests/database.facade.parity.test.js
T
UNITRONIX 25618caac1 fix(console): fail closed on missing peer/strategy scope writers
Reject POST/PATCH /api/users before mutating when peer grant or strategy
assignment DB methods are absent; return refreshed scope on PATCH; warn
on unknown peerIds; add facade parity and scope regression tests.

Refs #380

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-22 01:17:41 +02:00

47 lines
1.3 KiB
JavaScript

/**
* Ensure critical adapter methods stay re-exported on the database.js facade.
* Missing exports caused silent peerIds no-ops (#380).
*/
'use strict';
const REQUIRED_FACADE_METHODS = [
'getUserPeerGrants',
'setUserPeerGrants',
'getUserStrategyGuid',
'setUserStrategyAssignment',
'resolveUserAssignmentKey',
];
describe('database.js facade parity (Issue #380)', () => {
let facade;
beforeAll(() => {
jest.resetModules();
const mockAdapter = {};
for (const name of REQUIRED_FACADE_METHODS) {
mockAdapter[name] = jest.fn().mockResolvedValue(name === 'getUserPeerGrants' ? [] : undefined);
}
jest.doMock('../services/dbAdapter', () => ({
getAdapter: () => mockAdapter,
DB_TYPE: 'sqlite',
}));
jest.doMock('../config/config', () => ({
dataDir: '/tmp',
dbPath: '/tmp/test.db',
dbType: 'sqlite',
}));
facade = require('../services/database');
});
afterAll(() => {
jest.resetModules();
jest.dontMock('../services/dbAdapter');
jest.dontMock('../config/config');
});
it.each(REQUIRED_FACADE_METHODS)('exports %s as a function', (methodName) => {
expect(typeof facade[methodName]).toBe('function');
});
});