76 lines
2.1 KiB
JavaScript
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');
|