Files
securebit-chat/tests/debug-window-hooks.test.mjs
T
2026-05-17 22:58:21 -04:00

76 lines
2.1 KiB
JavaScript

import assert from 'node:assert/strict';
const { installDebugWindowHooks, isSecureBitDebugEnabled } = await import('../src/utils/debugWindowHooks.js');
// Production mode does not expose debug/control globals.
{
const targetWindow = {};
const managerRef = { current: { disconnect() {} } };
const cleanup = installDebugWindowHooks({
targetWindow,
webrtcManagerRef: managerRef,
onClearData() {}
});
assert.equal(isSecureBitDebugEnabled(targetWindow), false);
assert.equal('forceCleanup' in targetWindow, false);
assert.equal('clearLogs' in targetWindow, false);
assert.equal('webrtcManagerRef' in targetWindow, false);
cleanup();
}
// Debug mode exposes hooks only when explicitly requested.
{
let clearDataCalls = 0;
let disconnectCalls = 0;
let clearLogCalls = 0;
const targetWindow = { SECUREBIT_DEBUG: true };
const managerRef = {
current: {
disconnect() {
disconnectCalls += 1;
}
}
};
const cleanup = installDebugWindowHooks({
targetWindow,
webrtcManagerRef: managerRef,
onClearData() {
clearDataCalls += 1;
},
clearConsole() {
clearLogCalls += 1;
}
});
assert.equal(isSecureBitDebugEnabled(targetWindow), true);
assert.equal(targetWindow.webrtcManagerRef, managerRef);
targetWindow.forceCleanup();
targetWindow.clearLogs();
assert.equal(clearDataCalls, 1);
assert.equal(disconnectCalls, 1);
assert.equal(clearLogCalls, 1);
cleanup();
assert.equal('forceCleanup' in targetWindow, false);
assert.equal('clearLogs' in targetWindow, false);
assert.equal('webrtcManagerRef' in targetWindow, false);
}
// Normal cleanup remains available through the app-owned callback path.
{
let clearDataCalls = 0;
const onClearData = () => {
clearDataCalls += 1;
};
installDebugWindowHooks({
targetWindow: {},
webrtcManagerRef: { current: null },
onClearData
});
onClearData();
assert.equal(clearDataCalls, 1);
}
console.log('Debug window hook tests passed');