Skip to content

Commit

Permalink
Add some missing schema-files to ooxml-lite
Browse files Browse the repository at this point in the history
  • Loading branch information
centic9 committed Oct 7, 2023
1 parent 42651f6 commit a428428
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 23 deletions.
1 change: 1 addition & 0 deletions poi-ooxml-lite/missing-xsbs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ ctwraptightae95type
ctwraptopbottom5e13type
lockedcanvaselement
polylineelement
relationships93b3doctype
relidselement
stalignh768ctype
stalignv5abetype
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more
import org.apache.poi.POIDataSamples;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.poifs.crypt.CryptoFunctions;
import org.apache.poi.poifs.crypt.HashAlgorithm;
Expand Down Expand Up @@ -226,7 +227,7 @@ void testShapes() throws Exception {
private String getShapesString(XSSFReader.SheetIterator it) {
StringBuilder sb = new StringBuilder();
while (it.hasNext()) {
it.next();
assertNotNull(it.next());
List<XSSFShape> shapes = it.getShapes();
if (shapes != null) {
for (XSSFShape shape : shapes) {
Expand Down Expand Up @@ -259,27 +260,27 @@ void testBug57914() throws Exception {
}
}

/**
* NPE from XSSFReader$SheetIterator.<init> on XLSX files generated by
* the openpyxl library
*/
@Test
void test58747() throws Exception {
try (OPCPackage pkg = XSSFTestDataSamples.openSamplePackage("58747.xlsx")) {
ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(pkg);
assertNotNull(strings);
XSSFReader reader = new XSSFReader(pkg);
StylesTable styles = reader.getStylesTable();
assertNotNull(styles);

XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) reader.getSheetsData();
assertTrue(iter.hasNext());
iter.next();

assertFalse(iter.hasNext());
assertEquals("Orders", iter.getSheetName());
}
}
/**
* NPE from XSSFReader$SheetIterator.<init> on XLSX files generated by
* the openpyxl library
*/
@Test
void test58747() throws Exception {
try (OPCPackage pkg = XSSFTestDataSamples.openSamplePackage("58747.xlsx")) {
ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(pkg);
assertNotNull(strings);
XSSFReader reader = new XSSFReader(pkg);
StylesTable styles = reader.getStylesTable();
assertNotNull(styles);

XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) reader.getSheetsData();
assertTrue(iter.hasNext());
assertNotNull(iter.next());

assertFalse(iter.hasNext());
assertEquals("Orders", iter.getSheetName());
}
}

/**
* NPE when sheet has no relationship id in the workbook
Expand Down Expand Up @@ -329,6 +330,7 @@ void test61034() throws Exception {
}

@Disabled("until we fix issue https://bz.apache.org/bugzilla/show_bug.cgi?id=61701")
@Test
void test61701() throws Exception {
try(Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("simple-table-named-range.xlsx")) {
Name name = workbook.getName("total");
Expand All @@ -353,15 +355,17 @@ void test66612() throws Exception {
}

@Test
void testStrictOoxmlNotAllowed() throws Exception {
void testStrictOoxmlNotAllowed() {
assertThrows(POIXMLException.class, () -> {
try (OPCPackage pkg = OPCPackage.open(_ssTests.openResourceAsStream("sample.strict.xlsx"))) {
XSSFReader reader = new XSSFReader(pkg);
assertNotNull(reader);
}
});
assertThrows(POIXMLException.class, () -> {
try (OPCPackage pkg = OPCPackage.open(_ssTests.openResourceAsStream("sample.strict.xlsx"))) {
XSSFReader reader = new XSSFReader(pkg, false);
assertNotNull(reader);
}
});
}
Expand Down Expand Up @@ -435,4 +439,16 @@ private static String hash(XSSFReader reader) throws IOException {

return Base64.getEncoder().encodeToString(md.digest());
}

@Test
public void testMissingLiteFile() throws IOException, OpenXML4JException {
try (OPCPackage pkg = OPCPackage.open(_ssTests.openResourceAsStream(
"clusterfuzz-testcase-minimized-XLSX2CSVFuzzer-6594557414080512.xlsx"))) {
XSSFReader xssfReader = new XSSFReader(pkg);
assertThrows(IOException.class,
xssfReader::getStylesTable,
"The file is broken, but triggers loading of some additional resources which would "
+ "be missing in the ooxml-lite package otherwise.");
}
}
}

0 comments on commit a428428

Please sign in to comment.