From 32290bd2bfa2a210cb2da808d13d2846abca10fc Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 20 Feb 2014 00:06:34 +0000 Subject: [PATCH] Another content types test, for #55026 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1570002 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFRelation.java | 6 ++++ .../poi/openxml4j/opc/TestContentType.java | 26 ++++++++++++++++-- .../openxml4j/ContentTypeHasEntities.ooxml | Bin 0 -> 10995 bytes 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 test-data/openxml4j/ContentTypeHasEntities.ooxml diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java index e20052b68d..06642faaab 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java @@ -107,6 +107,12 @@ public final class XWPFRelation extends POIXMLRelation { "/word/footer#.xml", XWPFFooter.class ); + public static final XWPFRelation THEME = new XWPFRelation( + "application/vnd.openxmlformats-officedocument.theme+xml", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", + "/word/theme/theme#.xml", + null + ); public static final XWPFRelation HYPERLINK = new XWPFRelation( null, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java index 22660ddbf3..e77e4f8482 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java @@ -24,6 +24,7 @@ import junit.framework.TestCase; import org.apache.poi.openxml4j.OpenXML4JTestDataSamples; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.internal.ContentType; +import org.apache.poi.xwpf.usermodel.XWPFRelation; /** * Tests for content type (ContentType class). @@ -142,8 +143,29 @@ public final class TestContentType extends TestCase { * OOXML content types don't need entities, but we shouldn't * barf if we get one from a third party system that added them */ - public void testFileWithContentTypeEntities() { - // TODO + public void testFileWithContentTypeEntities() throws Exception { + InputStream is = OpenXML4JTestDataSamples.openSampleStream("ContentTypeHasEntities.ooxml"); + OPCPackage p = OPCPackage.open(is); + + // Check we found the contents of it + boolean foundCoreProps = false, foundDocument = false, foundTheme1 = false; + for (PackagePart part : p.getParts()) { + if (part.getPartName().toString().equals("/docProps/core.xml")) { + assertEquals(ContentTypes.CORE_PROPERTIES_PART, part.getContentType()); + foundCoreProps = true; + } + if (part.getPartName().toString().equals("/word/document.xml")) { + assertEquals(XWPFRelation.DOCUMENT.getContentType(), part.getContentType()); + foundDocument = true; + } + if (part.getPartName().toString().equals("/word/theme/theme1.xml")) { + assertEquals(XWPFRelation.THEME.getContentType(), part.getContentType()); + foundTheme1 = true; + } + } + assertTrue("Core not found in " + p.getParts(), foundCoreProps); + assertTrue("Document not found in " + p.getParts(), foundDocument); + assertTrue("Theme1 not found in " + p.getParts(), foundTheme1); } /** diff --git a/test-data/openxml4j/ContentTypeHasEntities.ooxml b/test-data/openxml4j/ContentTypeHasEntities.ooxml new file mode 100644 index 0000000000000000000000000000000000000000..9581a2e77a3da91e9f77f9360ba93e5e9f7db6b9 GIT binary patch literal 10995 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 u0+a9F|BZX+sy{{Zp{wM6