pdfkit/tests/integration/security.spec.js

57 lines
2.0 KiB
JavaScript

var {runDocTest} = require('./helpers');
var PDFDocument = require('../../lib/document').default;
var CryptoJS = require('crypto-js');
describe('pdfmake', function () {
let generateRandomWordArray = null;
beforeAll(function () {
const doc = new PDFDocument({ userPassword: 'user' });
generateRandomWordArray = Object.getPrototypeOf(doc._security).constructor.generateRandomWordArray;
Object.getPrototypeOf(doc._security).constructor.generateRandomWordArray = function (bytes) {
return CryptoJS.lib.WordArray.create(null, bytes);
};
});
afterAll(function () {
const doc = new PDFDocument({ userPassword: 'user' });
Object.getPrototypeOf(doc._security).constructor.generateRandomWordArray = generateRandomWordArray;
});
test('encryption with RC-40 (PDF 1.3)', function () {
return runDocTest({ pdfVersion: '1.3', userPassword: 'user', ownerPassword: 'owner' }, function(doc) {
doc.text('test');
});
});
test('encryption with RC-128 (PDF 1.4)', function () {
return runDocTest({ pdfVersion: '1.4', userPassword: 'user', ownerPassword: 'owner' }, function(doc) {
doc.text('test');
});
});
test('encryption with RC-128 (PDF 1.5)', function () {
return runDocTest({ pdfVersion: '1.5', userPassword: 'user', ownerPassword: 'owner' }, function(doc) {
doc.text('test');
});
});
test('encryption with AES-128 (PDF 1.6)', function () {
return runDocTest({ pdfVersion: '1.6', userPassword: 'user', ownerPassword: 'owner' }, function(doc) {
doc.text('test');
});
});
test('encryption with AES-128 (PDF 1.7)', function () {
return runDocTest({ pdfVersion: '1.7', userPassword: 'user', ownerPassword: 'owner' }, function(doc) {
doc.text('test');
});
});
test('encryption with AES-256 (PDF 1.7 extension 3)', function () {
return runDocTest({ pdfVersion: '1.7ext3', userPassword: 'user', ownerPassword: 'owner' }, function(doc) {
doc.text('test');
});
});
});