You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by on...@apache.org on 2016/10/09 19:03:49 UTC
svn commit: r1763998 -
/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java
Author: onealj
Date: Sun Oct 9 19:03:49 2016
New Revision: 1763998
URL: http://svn.apache.org/viewvc?rev=1763998&view=rev
Log:
bug 60230: add disabled unit test from PJ Fanning for a roundtrip write/read of an encrypted XSSFWorkbook
Modified:
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java?rev=1763998&r1=1763997&r2=1763998&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/TestWorkbookProtection.java Sun Oct 9 19:03:49 2016
@@ -23,9 +23,26 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+
+import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.poifs.crypt.CryptoFunctions;
+import org.apache.poi.poifs.crypt.Decryptor;
+import org.apache.poi.poifs.crypt.EncryptionInfo;
+import org.apache.poi.poifs.crypt.EncryptionMode;
+import org.apache.poi.poifs.crypt.Encryptor;
import org.apache.poi.poifs.crypt.HashAlgorithm;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.TempFile;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.Ignore;
import org.junit.Test;
public class TestWorkbookProtection {
@@ -171,4 +188,46 @@ public class TestWorkbookProtection {
assertTrue(wb.isRevisionLocked());
assertTrue(wb.validateRevisionsPassword("test"));
}
+
+ @Ignore("bug 60230: currently failing due to regression from bug 59857 r1762726")
+ @Test
+ public void testEncryptDecrypt() throws Exception {
+ final String password = "abc123";
+ final String sheetName = "TestSheet1";
+ final String cellValue = "customZipEntrySource";
+ XSSFWorkbook workbook = new XSSFWorkbook();
+ XSSFSheet sheet1 = workbook.createSheet(sheetName);
+ XSSFRow row1 = sheet1.createRow(1);
+ XSSFCell cell1 = row1.createCell(1);
+ cell1.setCellValue(cellValue);
+ File tf1 = TempFile.createTempFile("poitest", ".xlsx");
+ FileOutputStream fos1 = new FileOutputStream(tf1);
+ workbook.write(fos1);
+ IOUtils.closeQuietly(fos1);
+ POIFSFileSystem poiFileSystem = new POIFSFileSystem();
+ EncryptionInfo encryptionInfo = new EncryptionInfo(EncryptionMode.agile);
+ Encryptor enc = encryptionInfo.getEncryptor();
+ enc.confirmPassword(password);
+ OPCPackage opc = OPCPackage.open(new FileInputStream(tf1));
+ try {
+ OutputStream os = enc.getDataStream(poiFileSystem);
+ opc.save(os);
+ IOUtils.closeQuietly(os);
+ } finally {
+ IOUtils.closeQuietly(opc);
+ }
+ tf1.delete();
+ FileOutputStream fos2 = new FileOutputStream(tf1);
+ poiFileSystem.writeFilesystem(fos2);
+ IOUtils.closeQuietly(fos2);
+ workbook.close();
+ POIFSFileSystem poiFileSystem2 = new POIFSFileSystem(new FileInputStream(tf1));
+ EncryptionInfo encryptionInfo2 = new EncryptionInfo(poiFileSystem2);
+ Decryptor decryptor = encryptionInfo2.getDecryptor();
+ decryptor.verifyPassword(password);
+ XSSFWorkbook workbook2 = new XSSFWorkbook(decryptor.getDataStream(poiFileSystem2));
+ workbook2.close();
+ tf1.delete();
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org