Files

184 lines
5.2 KiB
JavaScript

/**
* Tests for Preload Script Security
* Verifies that the IPC bridge is properly configured
*/
describe('Preload Security', () => {
describe('Allowed Channels', () => {
const EXPECTED_SEND_CHANNELS = [
'save-file',
'save-current-file',
'set-current-file',
'save-recent-files',
'clear-recent-files',
'renderer-ready',
'get-theme',
'do-print',
'do-print-with-options',
'export-with-options',
'export-spreadsheet',
'batch-convert',
'select-folder',
'universal-convert',
'universal-convert-batch',
'image-convert',
'image-batch-convert',
'image-resize',
'image-compress',
'image-rotate',
'audio-convert',
'audio-batch-convert',
'audio-extract',
'audio-trim',
'audio-merge',
'video-convert',
'video-batch-convert',
'video-compress',
'video-trim',
'video-frames',
'video-gif',
'get-header-footer-settings',
'save-header-footer-settings',
'browse-header-footer-logo',
'save-header-footer-logo',
'clear-header-footer-logo',
'get-page-settings',
'update-page-settings',
'set-custom-start-page',
'process-pdf-operation',
'get-pdf-page-count',
'select-pdf-folder',
'open-ascii-generator',
'open-table-generator',
'insert-generated-content',
'save-pasted-image',
'load-template',
'list-directory',
'read-file',
'write-file',
'delete-file',
'ensure-directory',
'path-exists',
'is-directory',
'copy-path',
'move-path',
'open-file-path',
'git-status',
'git-stage',
'git-commit',
'git-log',
'git-diff',
'get-snippets',
'save-snippet',
'delete-snippet',
'execute-code',
'show-pdf-editor-from-toolbar',
'menu-open',
'export'
];
const EXPECTED_RECEIVE_CHANNELS = [
'file-new',
'file-opened',
'file-save',
'get-content-for-save',
'get-content-for-spreadsheet',
'recent-files-cleared',
'toggle-preview',
'toggle-find',
'theme-changed',
'theme-data',
'undo',
'redo',
'adjust-font-size',
'print-preview',
'print-preview-styled',
'show-export-dialog',
'show-batch-dialog',
'show-universal-converter-dialog',
'show-table-generator',
'show-pdf-editor-dialog',
'show-image-converter',
'show-audio-converter',
'show-video-converter',
'open-pdf-viewer',
'conversion-status',
'conversion-complete',
'batch-progress',
'image-conversion-complete',
'audio-conversion-complete',
'video-conversion-complete',
'folder-selected',
'pdf-folder-selected',
'header-footer-settings-data',
'header-footer-logo-selected',
'header-footer-logo-saved',
'header-footer-logo-cleared',
'page-settings-data',
'pdf-page-count',
'pdf-operation-complete',
'pdf-operation-error',
'pdf-operation-progress',
'show-ascii-generator-window',
'show-ascii-generator',
'show-table-generator-window',
'open-header-footer-dialog',
'insert-content',
'load-template-menu',
'toggle-command-palette',
'toggle-sidebar-panel',
'toggle-bottom-panel'
];
test('should define all expected send channels', () => {
// This test documents expected channels
expect(EXPECTED_SEND_CHANNELS.length).toBeGreaterThan(0);
});
test('should define all expected receive channels', () => {
// This test documents expected channels
expect(EXPECTED_RECEIVE_CHANNELS.length).toBeGreaterThan(0);
});
});
describe('electronAPI Interface', () => {
test('should expose send method', () => {
expect(window.electronAPI.send).toBeDefined();
expect(typeof window.electronAPI.send).toBe('function');
});
test('should expose on method', () => {
expect(window.electronAPI.on).toBeDefined();
expect(typeof window.electronAPI.on).toBe('function');
});
test('should expose once method', () => {
expect(window.electronAPI.once).toBeDefined();
expect(typeof window.electronAPI.once).toBe('function');
});
test('should expose invoke method', () => {
expect(window.electronAPI.invoke).toBeDefined();
expect(typeof window.electronAPI.invoke).toBe('function');
});
test('should expose file convenience methods', () => {
expect(window.electronAPI.file).toBeDefined();
expect(window.electronAPI.file.save).toBeDefined();
expect(window.electronAPI.file.saveCurrent).toBeDefined();
expect(window.electronAPI.file.setCurrent).toBeDefined();
});
test('should expose theme convenience methods', () => {
expect(window.electronAPI.theme).toBeDefined();
expect(window.electronAPI.theme.get).toBeDefined();
});
test('should expose pdf convenience methods', () => {
expect(window.electronAPI.pdf).toBeDefined();
expect(window.electronAPI.pdf.processOperation).toBeDefined();
expect(window.electronAPI.pdf.getPageCount).toBeDefined();
});
});
});