mirror of
https://github.com/UNITRONIX/BetterDesk.git
synced 2026-09-11 21:59:06 +00:00
25618caac1
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)
47 lines
1.3 KiB
JavaScript
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');
|
|
});
|
|
});
|