Files
AltaNetowrkScanner/test/electron-contract.test.js
T

36 lines
1.8 KiB
JavaScript

'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const root = path.join(__dirname, '..');
test('Electron boundary stays isolated and packaged files are declared', () => {
const main = fs.readFileSync(path.join(root, 'main.js'), 'utf8');
const preload = fs.readFileSync(path.join(root, 'preload.js'), 'utf8');
const appProtocol = fs.readFileSync(path.join(root, 'src', 'app-protocol.js'), 'utf8');
const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'));
assert.match(main, /nodeIntegration:\s*false/);
assert.match(main, /contextIsolation:\s*true/);
assert.match(main, /sandbox:\s*true/);
assert.match(main, /isTrustedSender/);
assert.match(main, /setPermissionCheckHandler/);
assert.match(main, /setPermissionRequestHandler/);
assert.match(main, /registerSchemesAsPrivileged/);
assert.match(appProtocol, /app:\/\/bundle/);
assert.doesNotMatch(main, /\.loadFile\s*\(/);
assert.doesNotMatch(preload, /require\(['"](?:node:)?(?:fs|child_process|dgram)/);
assert.match(preload, /exportCsv:\s*\(\)\s*=>\s*ipcRenderer\.invoke\('export-csv'\)/);
assert.ok(pkg.build.files.includes('src/**/*'));
assert.ok(pkg.build.files.includes('static/**/*'));
assert.equal(pkg.build.win.icon, 'assets/icon.ico');
assert.equal(pkg.build.electronFuses.runAsNode, false);
assert.equal(pkg.build.electronFuses.enableNodeOptionsEnvironmentVariable, false);
assert.equal(pkg.build.electronFuses.enableNodeCliInspectArguments, false);
assert.equal(pkg.build.electronFuses.enableEmbeddedAsarIntegrityValidation, true);
assert.equal(pkg.build.electronFuses.onlyLoadAppFromAsar, true);
assert.equal(pkg.build.electronFuses.grantFileProtocolExtraPrivileges, false);
});