import * as zlib from 'zlib'; import { PDFParse } from 'pdf-parse'; import { computeContentFingerprint } from './pdf-fingerprint.util'; jest.mock('pdf-parse', () => ({ PDFParse: jest.fn() })); describe('computeContentFingerprint – ungeprüfte Inhalte', () => { it('übergibt eine Deflate-Bombe nicht an pdf.js', async () => { const bombe = zlib.deflateSync(Buffer.alloc(300 * 1024 * 1024)); const pdf = Buffer.concat([ Buffer.from( `%PDF-1.7\n1 0 obj\n<< /Length ${bombe.length} /Filter /FlateDecode >>\nstream\n`, 'latin1', ), bombe, Buffer.from('\nendstream\nendobj\n%%EOF\n', 'latin1'), ]); await expect(computeContentFingerprint(pdf)).resolves.toBe(''); expect(PDFParse).not.toHaveBeenCalled(); }); it('übergibt verschlüsselte PDFs nicht an pdf.js', async () => { const pdf = Buffer.from( '%PDF-1.7\ntrailer\n<< /Encrypt 5 0 R >>\n%%EOF\n', 'latin1', ); await expect(computeContentFingerprint(pdf)).resolves.toBe(''); expect(PDFParse).not.toHaveBeenCalled(); }); });