/** * Transforms {@link EncryptTaskCliArguments} to {@link EncryptParameters} * * @param taskCliArguments * @return populated task parameters */ @Override public EncryptParameters toTaskParameters(EncryptTaskCliArguments taskCliArguments) { EncryptParameters parameters = new EncryptParameters(taskCliArguments.getEncryptionType().getEnumValue()); populateAbstractParameters(parameters, taskCliArguments); populateSourceParameters(parameters, taskCliArguments); populateOutputTaskParameters(parameters, taskCliArguments); populateOutputPrefix(parameters, taskCliArguments); String ownerPassword = taskCliArguments.getAdministratorPassword(); if(ownerPassword.isEmpty()){ ownerPassword = UUID.randomUUID().toString(); } parameters.setOwnerPassword(ownerPassword); parameters.setUserPassword(taskCliArguments.getUserPassword()); if (taskCliArguments.isAllow()) { for (PdfAccessPermissionAdapter eachAllowedPermissionAdapter : taskCliArguments.getAllow()) { parameters.addPermission(eachAllowedPermissionAdapter.getEnumValue()); } } return parameters; } }
@Test public void testEmptyBoth() { EncryptParameters params = new EncryptParameters(PdfEncryption.AES_ENC_128); params.setOwnerPassword(""); params.setUserPassword(""); assertFalse(victim.isValid(params, null)); }
@Test public void testEmptyUser() { EncryptParameters params = new EncryptParameters(PdfEncryption.AES_ENC_128); params.setUserPassword(""); params.setOwnerPassword("Chuck"); assertTrue(victim.isValid(params, null)); }
@Test public void testBoth() { EncryptParameters params = new EncryptParameters(PdfEncryption.AES_ENC_128); params.setOwnerPassword("Chuck"); params.setUserPassword("Chuck"); assertTrue(victim.isValid(params, null)); }
@Test public void testOwner() { EncryptParameters params = new EncryptParameters(PdfEncryption.AES_ENC_128); params.setOwnerPassword("Chuck"); params.setUserPassword(null); assertTrue(victim.isValid(params, null)); }
@Test public void testUser() { EncryptParameters params = new EncryptParameters(PdfEncryption.AES_ENC_128); params.setOwnerPassword(null); params.setUserPassword("Chuck"); assertTrue(victim.isValid(params, null)); }
@Test public void testEmptyOwner() { EncryptParameters params = new EncryptParameters(PdfEncryption.AES_ENC_128); params.setOwnerPassword(""); params.setUserPassword("Chuck"); assertTrue(victim.isValid(params, null)); }
@Test public void enablingPrint() throws IOException { setUpParameters(PdfEncryption.STANDARD_ENC_128); parameters.setOwnerPassword("test"); parameters.addPermission(PdfAccessPermission.PRINT); testContext.directoryOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted(); testContext.forEachPdfOutput(d -> { assertTrue(d.isEncrypted()); assertTrue(d.getCurrentAccessPermission().canPrint()); assertFalse(d.getCurrentAccessPermission().canPrintDegraded()); }); }
@Test public void enablingPrintDegraded() throws IOException { setUpParameters(PdfEncryption.STANDARD_ENC_128); parameters.setOwnerPassword("test"); parameters.addPermission(PdfAccessPermission.DEGRADATED_PRINT); testContext.directoryOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted(); testContext.forEachPdfOutput(d -> { assertTrue(d.isEncrypted()); assertFalse(d.getCurrentAccessPermission().canPrint()); assertTrue(d.getCurrentAccessPermission().canPrintDegraded()); }); }
@Test public void arc128WithOwner() throws IOException { setUpParameters(PdfEncryption.STANDARD_ENC_128); parameters.setOwnerPassword("test"); parameters.addPermission(PdfAccessPermission.COPY_AND_EXTRACT); parameters.addPermission(PdfAccessPermission.FILL_FORMS); testContext.directoryOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted(); testContext.assertCreator().assertVersion(PdfVersion.VERSION_1_6).forEachPdfOutput(d -> { assertTrue(d.isEncrypted()); assertTrue(d.getCurrentAccessPermission().canExtractContent()); assertTrue(d.getCurrentAccessPermission().canFillInForm()); }); }
@Test public void aes256WithOwner() throws IOException { setUpParameters(PdfEncryption.AES_ENC_256); parameters.setVersion(PdfVersion.VERSION_1_7); parameters.setOwnerPassword("Chuck"); parameters.setUserPassword("Norris"); parameters.addPermission(PdfAccessPermission.COPY_AND_EXTRACT); parameters.addPermission(PdfAccessPermission.FILL_FORMS); testContext.directoryOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted("Norris"); testContext.assertCreator().assertVersion(PdfVersion.VERSION_1_7).forEachPdfOutput(d -> { assertTrue(d.isEncrypted()); assertTrue(d.getCurrentAccessPermission().canExtractContent()); assertTrue(d.getCurrentAccessPermission().canFillInForm()); }); }
@Test public void defaultPermissions() throws IOException { setUpParameters(PdfEncryption.STANDARD_ENC_128); assertEquals(parameters.getPermissions().size(), 0); parameters.setOwnerPassword("test"); testContext.directoryOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted(); testContext.forEachPdfOutput(d -> { assertTrue(d.isEncrypted()); assertFalse(d.getCurrentAccessPermission().canAssembleDocument()); assertFalse(d.getCurrentAccessPermission().canExtractContent()); assertTrue(d.getCurrentAccessPermission().canExtractForAccessibility()); assertFalse(d.getCurrentAccessPermission().canFillInForm()); assertFalse(d.getCurrentAccessPermission().canModify()); assertFalse(d.getCurrentAccessPermission().canModifyAnnotations()); assertFalse(d.getCurrentAccessPermission().canPrint()); assertFalse(d.getCurrentAccessPermission().canPrintDegraded()); }); } }