From c6df73b0f00e0399f078a684ea973efd5fb657bb Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 4 Mar 2018 13:33:38 +0000 Subject: [PATCH] Add unit test which verifies that ThresholdInputStream can be used. This currently fails with Java 10 because the reflection relies on internals of class ZipFile that were changed. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1825818 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/openxml4j/util/TestZipSecureFile.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/ooxml/testcases/org/apache/poi/openxml4j/util/TestZipSecureFile.java diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/util/TestZipSecureFile.java b/src/ooxml/testcases/org/apache/poi/openxml4j/util/TestZipSecureFile.java new file mode 100644 index 0000000000..4752912bb2 --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/util/TestZipSecureFile.java @@ -0,0 +1,32 @@ +package org.apache.poi.openxml4j.util; + +import org.apache.poi.openxml4j.opc.internal.ZipHelper; +import org.apache.poi.xssf.XSSFTestDataSamples; +import org.junit.Test; + +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.zip.ZipEntry; + +import static org.junit.Assert.assertTrue; + +public class TestZipSecureFile { + @Test + public void testThresholdInputStream() throws Exception { + // This fails in Java 10 because our reflection injection of the ThresholdInputStream causes a + // ClassCastException in ZipFile now + ZipSecureFile.ThresholdInputStream zis = ZipHelper.openZipStream(new FileInputStream(XSSFTestDataSamples.getSampleFile("template.xlsx"))); + ZipInputStreamZipEntrySource thresholdInputStream = new ZipInputStreamZipEntrySource(zis); + + ZipSecureFile secureFile = new ZipSecureFile(XSSFTestDataSamples.getSampleFile("template.xlsx")); + + Enumeration entries = thresholdInputStream.getEntries(); + while (entries.hasMoreElements()) { + ZipEntry entry = entries.nextElement(); + + InputStream inputStream = secureFile.getInputStream(entry); + assertTrue(inputStream.available() > 0); + } + } +} \ No newline at end of file -- 2.39.5