mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 18:10:18 +05:30
Major Features: - Integrated PDF viewer with zoom, page navigation, and fit modes - PDF editor toolbar with direct access to all PDF operations - New app branding with docico1.png icon - ConcreteInfo theme (light & dark variants) - Comprehensive PDF editing: merge, split, compress, rotate, delete, reorder - Watermark, encrypt, decrypt, and permissions management - Overwrite original file option for all PDF operations UI Improvements: - PDF viewer takes full screen when active (hides tabs and toolbar) - Compact modals with reduced font sizes - Dark theme fixes for icons and dialogs - Save/Save As options for PDF operations - Improved PDF toolbar theming Technical: - Added isPdfViewerActive state tracking - Proper PDF document lifecycle management - Fixed hang issues when switching between PDF and markdown - All dependencies are open-source (MIT, Apache 2.0, BSD) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
122 lines
3.6 KiB
JavaScript
122 lines
3.6 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',
|
|
'export-with-options',
|
|
'export-spreadsheet',
|
|
'batch-convert',
|
|
'select-folder',
|
|
'universal-convert',
|
|
'universal-convert-batch',
|
|
'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'
|
|
];
|
|
|
|
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',
|
|
'conversion-status',
|
|
'conversion-complete',
|
|
'batch-progress',
|
|
'folder-selected',
|
|
'pdf-folder-selected',
|
|
'header-footer-settings-data',
|
|
'header-footer-logo-selected',
|
|
'header-footer-logo-saved',
|
|
'page-settings-data',
|
|
'pdf-page-count',
|
|
'pdf-operation-complete',
|
|
'pdf-operation-error'
|
|
];
|
|
|
|
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();
|
|
});
|
|
});
|
|
});
|