36 lines
1.8 KiB
JavaScript
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);
|
|
});
|