From 34cbee9bd36f4519571499a5ff996778b6894352 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 16 Oct 2015 18:48:26 +0200 Subject: [PATCH] Add unit-tests for PR 6531 --- test/pdfs/.gitignore | 2 ++ test/pdfs/pr6531_1.pdf | Bin 0 -> 43414 bytes test/pdfs/pr6531_2.pdf | 44 +++++++++++++++++++++++++++++++++ test/unit/api_spec.js | 55 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 101 insertions(+) create mode 100644 test/pdfs/pr6531_1.pdf create mode 100644 test/pdfs/pr6531_2.pdf diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 62bfa3a9b..db9276ada 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -55,6 +55,8 @@ !pdfkit_compressed.pdf !TAMReview.pdf !pr4922.pdf +!pr6531_1.pdf +!pr6531_2.pdf !bug900822.pdf !issue918.pdf !issue1905.pdf diff --git a/test/pdfs/pr6531_1.pdf b/test/pdfs/pr6531_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b1f905f59f6117d9289f2b3384d36c472502329e GIT binary patch literal 43414 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 gNs2*Z{%2HNT#cMvJ)OR literal 0 HcmV?d00001 diff --git a/test/pdfs/pr6531_2.pdf b/test/pdfs/pr6531_2.pdf new file mode 100644 index 000000000..396e18b1f --- /dev/null +++ b/test/pdfs/pr6531_2.pdf @@ -0,0 +1,44 @@ +%PDF-1.4 +%쏢 +1 0 obj<> +endobj +2 0 obj<> +endobj +3 0 obj<> +endobj +4 0 obj<> +endobj +5 0 obj<> +endobj +6 0 obj<>/DA(y\232\036\214A#\357n\310NA\315\213m\277X7\302\301\264\254!x\331\215\315\036\354s\017\334\346m\000\344\222\277\326\347#\347r"f\003NC\266)/DS(\201\2323\356\332\26605\216\266q\340c\027\356\226\364'f\365w\257\021\265\366\352\027\207\033\350\377\323\325w\232\345K~\b\031\321\032\237\312\206\002\321\216*\274\216\262\370&[\253\0179\311\007\326\023"H\032\t\226t>\003\304=\302+\234\250t&d\324wr+Q\264\313\306\374\027\\\344\327\341\242\250Ej\376\352h\317\(\245\275\(\215\005\242\n\265\320\207)/M(e\333\215\b\321ZA2\315\037\337z\263XM\355;\335\025A\006\022\230\227\223\216\205\253\276\017\251\3002X\020m~\357\303\334I8\203\216\312\017\350\331)/AP<>/Rect[33.30177 551.7525 488.2271 746.2612]/NM(|\362Z\355\322b{\302j\347\374\212\260\017\013\260\205\030\216\f\200?L\235\344\321{\255\202\327\231\346\206BB\023\031\261\021\2148\006\245\n\256\253\251\257)/RC(_\251h\256\336\266\205&Y\000!\273\326\264\2016@\242'\270\037|\315\220<\322\020\371\245\276\277\266\\\242\361\('\355A\322\242*W.\254\367u8\221\377\220\275\025\372\0035\021X0\034\203r\272@\024\224> +endobj +7 0 obj[6 0 R] +endobj +8 0 obj<>>> +endobj +9 0 obj<>>>/Matrix[1 0 0 1 -33.30179 -551.7524]/Length 160>> +stream +\,#+ǞzӂvEU0 Zg˶u[_iE [ed|blk 'aB +\@drrҹ[OOBz]f$ir9iК\kS:/'Ц7ZP5NM̳Y<JKdW]J*_G +endstream +endobj +11 0 obj<>>>/StmF/StdCF/StrF/StdCF/P -4/U<86270432ecb25433a37e461bfc3721bed1d73810583503f1be6afb42ad523da86adfe4b76358edf0738fbc8e053fb121>/UE<556ca676e248a3198b38f63302d3ff73c316b0e5b60010714ba511ae91687686>/O<384415c370731d581955244d1e475204d084d4b5be9a943e55f0a21d0a354d86002175233d6899ac4a244104ea74aaaa>/OE/Perms>> +endobj +xref +0 12 +0000000000 65535 f +0000000015 00000 n +0000000744 00000 n +0000000788 00000 n +0000000838 00000 n +0000000901 00000 n +0000000978 00000 n +0000003557 00000 n +0000003579 00000 n +0000004847 00000 n +0000000000 65535 f +0000005223 00000 n +trailer<]/Root 2 0 R/Encrypt 11 0 R>> +startxref +5738 +%%EOF diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 5a85a5435..4a7a7820c 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -2,6 +2,7 @@ /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ /* globals PDFJS, expect, it, describe, Promise, combineUrl, waitsFor, InvalidPDFException, MissingPDFException, StreamType, FontType, + PDFDocumentProxy, PasswordException, PasswordResponses, PDFPageProxy */ 'use strict'; @@ -97,6 +98,60 @@ describe('api', function() { expect(error instanceof MissingPDFException).toEqual(true); }); }); + it('creates pdf doc from PDF file protected with user and owner password', + function () { + var url = combineUrl(window.location.href, '../pdfs/pr6531_1.pdf'); + + var passwordNeededPromise = PDFJS.getDocument({ + url: url, password: '', + }); + waitsForPromiseRejected(passwordNeededPromise, function (data) { + expect(data instanceof PasswordException).toEqual(true); + expect(data.code).toEqual(PasswordResponses.NEED_PASSWORD); + }); + + var passwordIncorrectPromise = PDFJS.getDocument({ + url: url, password: 'qwerty', + }); + waitsForPromiseRejected(passwordIncorrectPromise, function (data) { + expect(data instanceof PasswordException).toEqual(true); + expect(data.code).toEqual(PasswordResponses.INCORRECT_PASSWORD); + }); + + var passwordAcceptedPromise = PDFJS.getDocument({ + url: url, password: 'asdfasdf', + }); + waitsForPromiseResolved(passwordAcceptedPromise, function (data) { + expect(data instanceof PDFDocumentProxy).toEqual(true); + }); + }); + it('creates pdf doc from PDF file protected with only a user password', + function () { + var url = combineUrl(window.location.href, '../pdfs/pr6531_2.pdf'); + + var passwordNeededPromise = PDFJS.getDocument({ + url: url, password: '', + }); + waitsForPromiseRejected(passwordNeededPromise, function (data) { + expect(data instanceof PasswordException).toEqual(true); + expect(data.code).toEqual(PasswordResponses.NEED_PASSWORD); + }); + + var passwordIncorrectPromise = PDFJS.getDocument({ + url: url, password: 'qwerty', + }); + waitsForPromiseRejected(passwordIncorrectPromise, function (data) { + expect(data instanceof PasswordException).toEqual(true); + expect(data.code).toEqual(PasswordResponses.INCORRECT_PASSWORD); + }); + + var passwordAcceptedPromise = PDFJS.getDocument({ + url: url, password: 'asdfasdf', + }); + waitsForPromiseResolved(passwordAcceptedPromise, function (data) { + expect(data instanceof PDFDocumentProxy).toEqual(true); + }); + }); }); }); describe('PDFDocument', function() {