This is an automated email from the ASF dual-hosted git repository. garydgregory pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/commons-xml.git
commit 4881e0270a8ea1a88a391982e453862f6d171c95 Author: Gary Gregory <[email protected]> AuthorDate: Sun Aug 30 11:40:52 2026 -0400 Use imports instead of FQCNs in tests. --- .../commons/xml/AssociatedStylesheetTest.java | 4 +- .../commons/xml/EntityResolverFloorTest.java | 4 +- .../org/apache/commons/xml/ExternalDtdTest.java | 5 +- .../commons/xml/ExternalGeneralEntityTest.java | 5 +- .../commons/xml/ExternalParameterEntityTest.java | 5 +- .../xml/FallbackIgnoreEntityResolver2Test.java | 8 ++-- .../xml/FallbackIgnoreLSResourceResolverTest.java | 12 +++-- .../commons/xml/FallbackIgnoreURIResolverTest.java | 12 +++-- .../commons/xml/FallbackIgnoreXMLResolverTest.java | 7 ++- .../org/apache/commons/xml/SaxonProviderTest.java | 46 +++++++++++-------- .../commons/xml/SaxonXPathExternalCallsTest.java | 4 +- .../commons/xml/SchemaFactoryLanguageTest.java | 4 +- .../commons/xml/SecureSAXParserFactoryTest.java | 4 +- .../apache/commons/xml/SecureSAXParserTest.java | 53 +++++++++++++--------- .../commons/xml/SecureSchemaFactoryTest.java | 28 ++++++++---- .../apache/commons/xml/SecureTemplatesTest.java | 9 ++-- .../commons/xml/SecureTransformerFactoryTest.java | 27 +++++++---- .../commons/xml/SecureTransformerHandlerTest.java | 4 +- .../apache/commons/xml/SecureTransformerTest.java | 11 +++-- .../commons/xml/SecureValidatorHandlerTest.java | 4 +- .../apache/commons/xml/SecureValidatorTest.java | 36 +++++++++------ .../apache/commons/xml/SecureXMLFilterTest.java | 34 ++++++++------ .../apache/commons/xml/SecureXMLReaderTest.java | 12 +++-- .../commons/xml/SecureXPathExpressionTest.java | 7 ++- .../apache/commons/xml/SecureXPathFactoryTest.java | 28 +++++++----- .../org/apache/commons/xml/SecureXPathTest.java | 33 +++++++++----- .../apache/commons/xml/XPathInputSourceTest.java | 4 +- 27 files changed, 264 insertions(+), 146 deletions(-) diff --git a/src/test/java/org/apache/commons/xml/AssociatedStylesheetTest.java b/src/test/java/org/apache/commons/xml/AssociatedStylesheetTest.java index 3936db1..8467611 100644 --- a/src/test/java/org/apache/commons/xml/AssociatedStylesheetTest.java +++ b/src/test/java/org/apache/commons/xml/AssociatedStylesheetTest.java @@ -29,11 +29,13 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import javax.xml.transform.sax.SAXSource; + /** * Checks that {@code getAssociatedStylesheet} scans for {@code xml-stylesheet} PIs without fetching an external DTD declared in the document prolog. * * <p>The PI scan parses the prolog, where a {@code DOCTYPE} with an external subset is processed before the root element. On Apache Xalan the scan runs on a - * reader the engine provisions itself, ignoring a secure reader passed in a {@link javax.xml.transform.sax.SAXSource} (XALANJ-2849); the wrapper works around + * reader the engine provisions itself, ignoring a secure reader passed in a {@link SAXSource} (XALANJ-2849); the wrapper works around * that by handing Xalan a {@code DOMSource} it pre-parsed through a secure {@code DocumentBuilder}. The JDK's XSLTC honors the secure reader directly. Either * way the external DTD resolves to empty instead of being fetched. Tagged {@code trax}, so it runs on the stock JDK, Apache Xalan, Saxon, and the Android * runtime.</p> diff --git a/src/test/java/org/apache/commons/xml/EntityResolverFloorTest.java b/src/test/java/org/apache/commons/xml/EntityResolverFloorTest.java index 44b5bfb..6005d9a 100644 --- a/src/test/java/org/apache/commons/xml/EntityResolverFloorTest.java +++ b/src/test/java/org/apache/commons/xml/EntityResolverFloorTest.java @@ -53,6 +53,8 @@ import org.xml.sax.SAXException; import org.xml.sax.XMLReader; +import java.io.IOException; + /** * Checks that a caller-supplied resolver cannot remove the secure ignore-all floor on any factory. * @@ -96,7 +98,7 @@ class EntityResolverFloorTest { } try { return new URL(systemID).openStream(); - } catch (final java.io.IOException e) { + } catch (final IOException e) { throw new XMLStreamException(e); } }; diff --git a/src/test/java/org/apache/commons/xml/ExternalDtdTest.java b/src/test/java/org/apache/commons/xml/ExternalDtdTest.java index ce3acbe..f500087 100644 --- a/src/test/java/org/apache/commons/xml/ExternalDtdTest.java +++ b/src/test/java/org/apache/commons/xml/ExternalDtdTest.java @@ -21,6 +21,9 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import javax.xml.transform.Source; +import javax.xml.validation.Validator; + /** * Checks whether parsers can pull in an external DTD declared via {@code <!DOCTYPE root SYSTEM "...">}. * @@ -36,7 +39,7 @@ * <ul> * <li>DOM, SAX and StAX direct XML parsing.</li> * <li>{@code SchemaFactory.newSchema(Source)} compilation of an XSD whose source has the DOCTYPE.</li> - * <li>{@link javax.xml.validation.Validator#validate(javax.xml.transform.Source)} of an instance whose source has the DOCTYPE.</li> + * <li>{@link Validator#validate(Source)} of an instance whose source has the DOCTYPE.</li> * <li>Identity {@code Transformer} reading the input XML.</li> * <li>{@code TransformerFactory.newTransformer(Source)} compilation of a stylesheet whose source has the DOCTYPE.</li> * </ul> diff --git a/src/test/java/org/apache/commons/xml/ExternalGeneralEntityTest.java b/src/test/java/org/apache/commons/xml/ExternalGeneralEntityTest.java index 3fec8dc..f5f74c9 100644 --- a/src/test/java/org/apache/commons/xml/ExternalGeneralEntityTest.java +++ b/src/test/java/org/apache/commons/xml/ExternalGeneralEntityTest.java @@ -21,6 +21,9 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import javax.xml.transform.Source; +import javax.xml.validation.Validator; + /** * Checks whether parsers can pull in an external general entity declared inline in the internal subset. * @@ -35,7 +38,7 @@ * <ul> * <li>DOM, SAX and StAX direct XML parsing.</li> * <li>{@code SchemaFactory.newSchema(Source)} compilation of an XSD whose source has the entity-bearing DOCTYPE.</li> - * <li>{@link javax.xml.validation.Validator#validate(javax.xml.transform.Source)} of an instance whose source has the entity-bearing DOCTYPE.</li> + * <li>{@link Validator#validate(Source)} of an instance whose source has the entity-bearing DOCTYPE.</li> * <li>Identity {@code Transformer} reading the input XML.</li> * <li>{@code TransformerFactory.newTransformer(Source)} compilation of a stylesheet whose source has the entity-bearing DOCTYPE.</li> * </ul> diff --git a/src/test/java/org/apache/commons/xml/ExternalParameterEntityTest.java b/src/test/java/org/apache/commons/xml/ExternalParameterEntityTest.java index 846c1f6..5cc684b 100644 --- a/src/test/java/org/apache/commons/xml/ExternalParameterEntityTest.java +++ b/src/test/java/org/apache/commons/xml/ExternalParameterEntityTest.java @@ -31,6 +31,9 @@ import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; +import javax.xml.transform.Source; +import javax.xml.validation.Validator; + /** * Checks whether parsers can pull in an external DTD via a parameter-entity reference inside the internal subset. * @@ -48,7 +51,7 @@ * <ul> * <li>DOM, SAX and StAX direct XML parsing.</li> * <li>{@code SchemaFactory.newSchema(Source)} compilation of an XSD whose source has the parameter-entity DOCTYPE.</li> - * <li>{@link javax.xml.validation.Validator#validate(javax.xml.transform.Source)} of an instance whose source has the parameter-entity DOCTYPE.</li> + * <li>{@link Validator#validate(Source)} of an instance whose source has the parameter-entity DOCTYPE.</li> * <li>Identity {@code Transformer} reading the input XML.</li> * <li>{@code TransformerFactory.newTransformer(Source)} compilation of a stylesheet whose source has the parameter-entity DOCTYPE.</li> * </ul> diff --git a/src/test/java/org/apache/commons/xml/FallbackIgnoreEntityResolver2Test.java b/src/test/java/org/apache/commons/xml/FallbackIgnoreEntityResolver2Test.java index a86d03d..5f0e80f 100644 --- a/src/test/java/org/apache/commons/xml/FallbackIgnoreEntityResolver2Test.java +++ b/src/test/java/org/apache/commons/xml/FallbackIgnoreEntityResolver2Test.java @@ -28,6 +28,8 @@ import org.xml.sax.ext.DefaultHandler2; import org.xml.sax.ext.EntityResolver2; +import org.xml.sax.SAXException; + class FallbackIgnoreEntityResolver2Test { @Test @@ -36,14 +38,14 @@ void resolvesDelegatesAndAllFallbackPaths() throws Exception { assertEquals("https://example.test/base/entity.dtd", floor.resolveEntity("name", "public", "https://example.test/base/", "entity.dtd").getSystemId()); assertEquals("entity.dtd", floor.resolveEntity("name", "public", "not a URI", "entity.dtd").getSystemId()); assertNotNull(floor.resolveEntity("public", null)); - final InputSource expected = new org.xml.sax.InputSource(); + final InputSource expected = new InputSource(); final EntityResolver plain = (publicId, systemId) -> expected; floor.setDelegate(plain); assertSame(expected, floor.resolveEntity("name", "public", "https://example.test/base/", "entity.dtd")); final EntityResolver2 extended = new DefaultHandler2() { @Override - public org.xml.sax.InputSource resolveEntity(final String name, final String publicId, final String base, final String system) { + public InputSource resolveEntity(final String name, final String publicId, final String base, final String system) { return expected; } }; @@ -52,7 +54,7 @@ public org.xml.sax.InputSource resolveEntity(final String name, final String pub floor.setDelegate(null); System.setProperty(SecureException.THROW_ON_UNRESOLVED, "true"); try { - assertThrows(org.xml.sax.SAXException.class, () -> floor.resolveEntity("p", "s")); + assertThrows(SAXException.class, () -> floor.resolveEntity("p", "s")); } finally { System.clearProperty(SecureException.THROW_ON_UNRESOLVED); } diff --git a/src/test/java/org/apache/commons/xml/FallbackIgnoreLSResourceResolverTest.java b/src/test/java/org/apache/commons/xml/FallbackIgnoreLSResourceResolverTest.java index 9c76314..2df0487 100644 --- a/src/test/java/org/apache/commons/xml/FallbackIgnoreLSResourceResolverTest.java +++ b/src/test/java/org/apache/commons/xml/FallbackIgnoreLSResourceResolverTest.java @@ -22,24 +22,28 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; +import org.w3c.dom.ls.LSException; +import org.w3c.dom.ls.LSInput; +import org.w3c.dom.ls.LSResourceResolver; + class FallbackIgnoreLSResourceResolverTest { @Test void coversDelegateFallbackAndDenyBranches() { final FallbackIgnoreLSResourceResolver resolver = new FallbackIgnoreLSResourceResolver(null); - final org.w3c.dom.ls.LSInput fallback = resolver.resolveResource("t", "n", "p", "s", "b"); + final LSInput fallback = resolver.resolveResource("t", "n", "p", "s", "b"); assertEquals("p", fallback.getPublicId()); assertEquals("s", fallback.getSystemId()); assertEquals("b", fallback.getBaseURI()); - final org.w3c.dom.ls.LSInput expected = fallback; - final org.w3c.dom.ls.LSResourceResolver delegate = (type, namespace, publicId, systemId, base) -> expected; + final LSInput expected = fallback; + final LSResourceResolver delegate = (type, namespace, publicId, systemId, base) -> expected; resolver.setDelegate(delegate); assertSame(delegate, resolver.getDelegate()); assertSame(expected, resolver.resolveResource("t", "n", "p", "s", "b")); resolver.setDelegate(null); System.setProperty(SecureException.THROW_ON_UNRESOLVED, "true"); try { - assertThrows(org.w3c.dom.ls.LSException.class, () -> resolver.resolveResource("t", "n", "p", "s", "b")); + assertThrows(LSException.class, () -> resolver.resolveResource("t", "n", "p", "s", "b")); } finally { System.clearProperty(SecureException.THROW_ON_UNRESOLVED); } diff --git a/src/test/java/org/apache/commons/xml/FallbackIgnoreURIResolverTest.java b/src/test/java/org/apache/commons/xml/FallbackIgnoreURIResolverTest.java index 2d156d8..d150f60 100644 --- a/src/test/java/org/apache/commons/xml/FallbackIgnoreURIResolverTest.java +++ b/src/test/java/org/apache/commons/xml/FallbackIgnoreURIResolverTest.java @@ -21,22 +21,26 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; +import javax.xml.transform.TransformerException; +import javax.xml.transform.URIResolver; +import javax.xml.transform.dom.DOMSource; + class FallbackIgnoreURIResolverTest { @Test void resolvesDelegatedAndFallbackSources() throws Exception { - final javax.xml.transform.dom.DOMSource empty = new javax.xml.transform.dom.DOMSource(); + final DOMSource empty = new DOMSource(); final FallbackIgnoreURIResolver resolver = new FallbackIgnoreURIResolver(null, () -> empty, () -> false); assertSame(empty, resolver.resolve("href", "base")); - final javax.xml.transform.dom.DOMSource delegated = new javax.xml.transform.dom.DOMSource(); - final javax.xml.transform.URIResolver delegate = (href, base) -> delegated; + final DOMSource delegated = new DOMSource(); + final URIResolver delegate = (href, base) -> delegated; resolver.setDelegate(delegate); assertSame(delegate, resolver.getDelegate()); assertSame(delegated, resolver.resolve("href", "base")); resolver.setDelegate(null); System.setProperty(SecureException.THROW_ON_UNRESOLVED, "true"); try { - assertThrows(javax.xml.transform.TransformerException.class, () -> resolver.resolve("href", "base")); + assertThrows(TransformerException.class, () -> resolver.resolve("href", "base")); } finally { System.clearProperty(SecureException.THROW_ON_UNRESOLVED); } diff --git a/src/test/java/org/apache/commons/xml/FallbackIgnoreXMLResolverTest.java b/src/test/java/org/apache/commons/xml/FallbackIgnoreXMLResolverTest.java index 4c0504d..ee67a54 100644 --- a/src/test/java/org/apache/commons/xml/FallbackIgnoreXMLResolverTest.java +++ b/src/test/java/org/apache/commons/xml/FallbackIgnoreXMLResolverTest.java @@ -22,6 +22,9 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.Test; +import javax.xml.stream.XMLResolver; +import javax.xml.stream.XMLStreamException; + class FallbackIgnoreXMLResolverTest { @Test @@ -29,14 +32,14 @@ void coversDelegateFallbackAndDenyBranches() throws Exception { final FallbackIgnoreXMLResolver resolver = new FallbackIgnoreXMLResolver(null); assertNotNull(resolver.resolveEntity("p", "s", "b", "n")); final Object expected = new Object(); - final javax.xml.stream.XMLResolver delegate = (publicId, systemId, base, namespace) -> expected; + final XMLResolver delegate = (publicId, systemId, base, namespace) -> expected; resolver.setDelegate(delegate); assertSame(delegate, resolver.getDelegate()); assertSame(expected, resolver.resolveEntity("p", "s", "b", "n")); resolver.setDelegate(null); System.setProperty(SecureException.THROW_ON_UNRESOLVED, "true"); try { - assertThrows(javax.xml.stream.XMLStreamException.class, () -> resolver.resolveEntity("p", "s", "b", "n")); + assertThrows(XMLStreamException.class, () -> resolver.resolveEntity("p", "s", "b", "n")); } finally { System.clearProperty(SecureException.THROW_ON_UNRESOLVED); } diff --git a/src/test/java/org/apache/commons/xml/SaxonProviderTest.java b/src/test/java/org/apache/commons/xml/SaxonProviderTest.java index 7c1abf8..15973ea 100644 --- a/src/test/java/org/apache/commons/xml/SaxonProviderTest.java +++ b/src/test/java/org/apache/commons/xml/SaxonProviderTest.java @@ -26,14 +26,22 @@ import javax.xml.xpath.XPathFactory; import org.junit.jupiter.api.Test; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import javax.xml.transform.TransformerFactoryConfigurationError; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.xml.sax.SAXNotSupportedException; +import org.xml.sax.helpers.XMLFilterImpl; + class SaxonProviderTest { /** Reader used to force SecureConfiguration.makeParser through its SecureException translation path. */ - public static final class FailingXMLReader extends org.xml.sax.helpers.XMLFilterImpl { + public static final class FailingXMLReader extends XMLFilterImpl { @Override - public void setFeature(final String name, final boolean value) throws org.xml.sax.SAXNotSupportedException { - throw new org.xml.sax.SAXNotSupportedException(name); + public void setFeature(final String name, final boolean value) throws SAXNotSupportedException { + throw new SAXNotSupportedException(name); } } @@ -50,7 +58,7 @@ private static Object newSaxon(final String className) throws ReflectiveOperatio } @Test - @org.junit.jupiter.api.Tag("xpath3") + @Tag("xpath3") void configuresSaxonFactoriesAndSuppliesAnEmptySource() throws ReflectiveOperationException { final TransformerFactory transformerFactory = TransformerFactory.class.cast(newSaxon("net.sf.saxon.TransformerFactoryImpl")); final XPathFactory xpathFactory = XPathFactory.class.cast(newSaxon("net.sf.saxon.xpath.XPathFactoryImpl")); @@ -65,35 +73,35 @@ void recognizesNonSaxonClass() { } @Test - @org.junit.jupiter.api.Tag("xpath3") + @Tag("xpath3") void recognizesOpenSourceAndCommercialSaxonClasses() { assertTrue(SaxonProvider.isSaxon(loadSaxon("net.sf.saxon.TransformerFactoryImpl"))); assertTrue(SaxonProvider.isSaxon(com.saxonica.ProviderMarker.class)); } @Test - @org.junit.jupiter.api.Tag("xpath3") + @Tag("xpath3") void rejectsFactoriesThatDoNotImplementSaxonApis() { - org.junit.jupiter.api.Assertions.assertThrows(SecureException.class, + Assertions.assertThrows(SecureException.class, () -> SaxonProvider.configure(TransformerFactory.newInstance("com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl", null))); - org.junit.jupiter.api.Assertions.assertThrows(SecureException.class, () -> SaxonProvider + Assertions.assertThrows(SecureException.class, () -> SaxonProvider .configure(XPathFactory.newInstance(XPathFactory.DEFAULT_OBJECT_MODEL_URI, "com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl", null))); } @Test - @org.junit.jupiter.api.Tag("xpath3") + @Tag("xpath3") void rejectsSaxonCollectionResolutionWhenConfiguredToThrow() throws Exception { final XPathFactory factory = XPathFactory.class.cast(newSaxon("net.sf.saxon.xpath.XPathFactoryImpl")); SaxonProvider.configure(factory); final Object configuration = factory.getClass().getMethod("getConfiguration").invoke(factory); final Object finder = configuration.getClass().getMethod("getCollectionFinder").invoke(configuration); - final java.lang.reflect.Method findCollection = finder.getClass().getMethod("findCollection", loadSaxon("net.sf.saxon.expr.XPathContext"), + final Method findCollection = finder.getClass().getMethod("findCollection", loadSaxon("net.sf.saxon.expr.XPathContext"), String.class); final String previous = System.getProperty(SecureException.THROW_ON_UNRESOLVED); try { System.setProperty(SecureException.THROW_ON_UNRESOLVED, "true"); - final java.lang.reflect.InvocationTargetException exception = org.junit.jupiter.api.Assertions - .assertThrows(java.lang.reflect.InvocationTargetException.class, () -> findCollection.invoke(finder, null, "urn:collection")); + final InvocationTargetException exception = Assertions + .assertThrows(InvocationTargetException.class, () -> findCollection.invoke(finder, null, "urn:collection")); assertEquals("net.sf.saxon.trans.XPathException", exception.getCause().getClass().getName()); } finally { if (previous == null) { @@ -105,16 +113,16 @@ void rejectsSaxonCollectionResolutionWhenConfiguredToThrow() throws Exception { } @Test - @org.junit.jupiter.api.Tag("xpath3") + @Tag("xpath3") void translatesSecureParserFailuresToSaxonConfigurationErrors() throws Exception { final TransformerFactory factory = TransformerFactory.class.cast(newSaxon("net.sf.saxon.TransformerFactoryImpl")); SaxonProvider.configure(factory); final Object configuration = factory.getClass().getMethod("getConfiguration").invoke(factory); - final java.lang.reflect.Method makeParser = configuration.getClass().getMethod("makeParser", String.class); - final java.lang.reflect.InvocationTargetException exception = org.junit.jupiter.api.Assertions - .assertThrows(java.lang.reflect.InvocationTargetException.class, () -> makeParser.invoke(configuration, FailingXMLReader.class.getName())); - final javax.xml.transform.TransformerFactoryConfigurationError error = org.junit.jupiter.api.Assertions - .assertInstanceOf(javax.xml.transform.TransformerFactoryConfigurationError.class, exception.getCause()); - org.junit.jupiter.api.Assertions.assertInstanceOf(SecureException.class, error.getException()); + final Method makeParser = configuration.getClass().getMethod("makeParser", String.class); + final InvocationTargetException exception = Assertions + .assertThrows(InvocationTargetException.class, () -> makeParser.invoke(configuration, FailingXMLReader.class.getName())); + final TransformerFactoryConfigurationError error = Assertions + .assertInstanceOf(TransformerFactoryConfigurationError.class, exception.getCause()); + Assertions.assertInstanceOf(SecureException.class, error.getException()); } } diff --git a/src/test/java/org/apache/commons/xml/SaxonXPathExternalCallsTest.java b/src/test/java/org/apache/commons/xml/SaxonXPathExternalCallsTest.java index 01e4283..26463f0 100644 --- a/src/test/java/org/apache/commons/xml/SaxonXPathExternalCallsTest.java +++ b/src/test/java/org/apache/commons/xml/SaxonXPathExternalCallsTest.java @@ -29,6 +29,8 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import javax.xml.xpath.XPath; + /** * Checks whether Saxon's XPath 3.1 URI-fetching functions can pull external resources into the result. * @@ -97,7 +99,7 @@ private static String jsonDocExpression() { * Instantiates Saxon's {@code XPathFactoryImpl} reflectively. * * <p>Saxon 12.9 ships no {@code META-INF/services} entry for - * {@link javax.xml.xpath.XPathFactory}, so {@link XPathFactory#newInstance(String)} cannot find it; direct instantiation bypasses that lookup.</p> + * {@link XPathFactory}, so {@link XPathFactory#newInstance(String)} cannot find it; direct instantiation bypasses that lookup.</p> */ private static XPathFactory saxonXPathFactory() { try { diff --git a/src/test/java/org/apache/commons/xml/SchemaFactoryLanguageTest.java b/src/test/java/org/apache/commons/xml/SchemaFactoryLanguageTest.java index 513eaff..cbcc7d8 100644 --- a/src/test/java/org/apache/commons/xml/SchemaFactoryLanguageTest.java +++ b/src/test/java/org/apache/commons/xml/SchemaFactoryLanguageTest.java @@ -22,8 +22,10 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import javax.xml.validation.Schema; + /** - * Checks that {@link SecureSchemaFactory#newInstance(String)} passes the schema language through to {@link javax.xml.validation.SchemaFactory#newInstance}. + * Checks that {@link SecureSchemaFactory#newInstance(String)} passes the schema language through to {@link SchemaFactory#newInstance}. * * <p>The working W3C XML Schema path is exercised by the whole schema suite; this test covers only the language-selection contract.</p> */ diff --git a/src/test/java/org/apache/commons/xml/SecureSAXParserFactoryTest.java b/src/test/java/org/apache/commons/xml/SecureSAXParserFactoryTest.java index 7080e6e..71eb6ed 100644 --- a/src/test/java/org/apache/commons/xml/SecureSAXParserFactoryTest.java +++ b/src/test/java/org/apache/commons/xml/SecureSAXParserFactoryTest.java @@ -37,6 +37,8 @@ import org.xml.sax.InputSource; import org.xml.sax.XMLReader; +import javax.xml.parsers.SAXParser; + class SecureSAXParserFactoryTest { @Test @@ -65,7 +67,7 @@ void forwardsFactoryConfigurationAndCreatesNamespaceAwareParsers() throws Except @Test void respectsDefaultParserSelectionAndLeavesReadersSecureOnlyOnce() throws Exception { - final String factoryId = "javax.xml.parsers.SAXParserFactory"; + final String factoryId = "SAXParserFactory"; final String previous = System.getProperty(factoryId); try { System.setProperty(factoryId, SAXParserFactory.newInstance().getClass().getName()); diff --git a/src/test/java/org/apache/commons/xml/SecureSAXParserTest.java b/src/test/java/org/apache/commons/xml/SecureSAXParserTest.java index 22926a8..7da57f1 100644 --- a/src/test/java/org/apache/commons/xml/SecureSAXParserTest.java +++ b/src/test/java/org/apache/commons/xml/SecureSAXParserTest.java @@ -17,52 +17,63 @@ package org.apache.commons.xml; +import java.util.Locale; + import static org.junit.jupiter.api.Assertions.assertNotNull; import javax.xml.parsers.SAXParserFactory; import org.junit.jupiter.api.Test; +import javax.xml.parsers.SAXParser; +import javax.xml.validation.Schema; +import org.junit.jupiter.api.Assertions; +import org.xml.sax.DocumentHandler; +import org.xml.sax.Parser; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; +import org.xml.sax.XMLReader; + class SecureSAXParserTest { - private static final class ParserSecureReader extends SecureXMLReader implements org.xml.sax.Parser { + private static final class ParserSecureReader extends SecureXMLReader implements Parser { - ParserSecureReader(final org.xml.sax.XMLReader reader) { + ParserSecureReader(final XMLReader reader) { super(reader); } @Override - public void setDocumentHandler(final org.xml.sax.DocumentHandler handler) { + public void setDocumentHandler(final DocumentHandler handler) { } @Override - public void setLocale(final java.util.Locale locale) { + public void setLocale(final Locale locale) { } } - private static final class ReaderSAXParser extends javax.xml.parsers.SAXParser { + private static final class ReaderSAXParser extends SAXParser { - private final org.xml.sax.XMLReader reader; + private final XMLReader reader; - ReaderSAXParser(final org.xml.sax.XMLReader reader) { + ReaderSAXParser(final XMLReader reader) { this.reader = reader; } @Override - public org.xml.sax.Parser getParser() { - return (org.xml.sax.Parser) reader; + public Parser getParser() { + return (Parser) reader; } @Override - public Object getProperty(final String name) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException { + public Object getProperty(final String name) throws SAXNotRecognizedException, SAXNotSupportedException { return reader.getProperty(name); } @Override - public javax.xml.validation.Schema getSchema() { + public Schema getSchema() { return null; } @Override - public org.xml.sax.XMLReader getXMLReader() { + public XMLReader getXMLReader() { return reader; } @@ -86,7 +97,7 @@ public void reset() { } @Override - public void setProperty(final String name, final Object value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException { + public void setProperty(final String name, final Object value) throws SAXNotRecognizedException, SAXNotSupportedException { reader.setProperty(name, value); } } @@ -94,15 +105,15 @@ public void setProperty(final String name, final Object value) throws org.xml.sa @Test void cachesSecureViewsThenRecreatesThemAfterReset() throws Exception { final SecureSAXParser parser = new SecureSAXParser(SAXParserFactory.newInstance().newSAXParser()); - final org.xml.sax.XMLReader firstReader = parser.getXMLReader(); - final org.xml.sax.Parser firstParser = parser.getParser(); - org.junit.jupiter.api.Assertions.assertSame(firstReader, parser.getXMLReader()); - org.junit.jupiter.api.Assertions.assertSame(firstParser, parser.getParser()); + final XMLReader firstReader = parser.getXMLReader(); + final Parser firstParser = parser.getParser(); + Assertions.assertSame(firstReader, parser.getXMLReader()); + Assertions.assertSame(firstParser, parser.getParser()); parser.setProperty("http://xml.org/sax/properties/lexical-handler", null); - org.junit.jupiter.api.Assertions.assertNull(parser.getProperty("http://xml.org/sax/properties/lexical-handler")); + Assertions.assertNull(parser.getProperty("http://xml.org/sax/properties/lexical-handler")); parser.reset(); - org.junit.jupiter.api.Assertions.assertNotSame(firstReader, parser.getXMLReader()); - org.junit.jupiter.api.Assertions.assertNotSame(firstParser, parser.getParser()); + Assertions.assertNotSame(firstReader, parser.getXMLReader()); + Assertions.assertNotSame(firstParser, parser.getParser()); } @Test @@ -121,6 +132,6 @@ void exposesSecureParserViewsAndState() throws Exception { void reusesAReaderThatAlreadyImplementsSax1Parser() throws Exception { final ParserSecureReader reader = new ParserSecureReader(SAXParserFactory.newInstance().newSAXParser().getXMLReader()); final SecureSAXParser parser = new SecureSAXParser(new ReaderSAXParser(reader)); - org.junit.jupiter.api.Assertions.assertSame(reader, parser.getParser()); + Assertions.assertSame(reader, parser.getParser()); } } diff --git a/src/test/java/org/apache/commons/xml/SecureSchemaFactoryTest.java b/src/test/java/org/apache/commons/xml/SecureSchemaFactoryTest.java index 63cc9c8..087683d 100644 --- a/src/test/java/org/apache/commons/xml/SecureSchemaFactoryTest.java +++ b/src/test/java/org/apache/commons/xml/SecureSchemaFactoryTest.java @@ -27,6 +27,14 @@ import org.junit.jupiter.api.Test; import org.xml.sax.helpers.DefaultHandler; +import javax.xml.transform.Source; +import javax.xml.validation.Schema; +import org.w3c.dom.ls.LSResourceResolver; +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; + class SecureSchemaFactoryTest { private static final class PropertySchemaFactory extends SchemaFactory { @@ -34,12 +42,12 @@ private static final class PropertySchemaFactory extends SchemaFactory { private final SchemaFactory delegate = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); @Override - public org.xml.sax.ErrorHandler getErrorHandler() { + public ErrorHandler getErrorHandler() { return delegate.getErrorHandler(); } @Override - public boolean getFeature(final String name) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException { + public boolean getFeature(final String name) throws SAXNotRecognizedException, SAXNotSupportedException { return delegate.getFeature(name); } @@ -49,7 +57,7 @@ public Object getProperty(final String name) { } @Override - public org.w3c.dom.ls.LSResourceResolver getResourceResolver() { + public LSResourceResolver getResourceResolver() { return delegate.getResourceResolver(); } @@ -59,22 +67,22 @@ public boolean isSchemaLanguageSupported(final String language) { } @Override - public javax.xml.validation.Schema newSchema() throws org.xml.sax.SAXException { + public Schema newSchema() throws SAXException { return delegate.newSchema(); } @Override - public javax.xml.validation.Schema newSchema(final javax.xml.transform.Source[] sources) throws org.xml.sax.SAXException { + public Schema newSchema(final Source[] sources) throws SAXException { return delegate.newSchema(sources); } @Override - public void setErrorHandler(final org.xml.sax.ErrorHandler handler) { + public void setErrorHandler(final ErrorHandler handler) { delegate.setErrorHandler(handler); } @Override - public void setFeature(final String name, final boolean value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException { + public void setFeature(final String name, final boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { delegate.setFeature(name, value); } @@ -83,7 +91,7 @@ public void setProperty(final String name, final Object value) { } @Override - public void setResourceResolver(final org.w3c.dom.ls.LSResourceResolver resolver) { + public void setResourceResolver(final LSResourceResolver resolver) { delegate.setResourceResolver(resolver); } } @@ -98,7 +106,7 @@ void createsSecureSchemas() throws Exception { void forwardsSchemaFactoryConfigurationAndAccessors() throws Exception { final SchemaFactory factory = SecureSchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); final DefaultHandler errorHandler = new DefaultHandler(); - final org.w3c.dom.ls.LSResourceResolver resolver = (type, namespace, publicId, systemId, base) -> null; + final LSResourceResolver resolver = (type, namespace, publicId, systemId, base) -> null; factory.setErrorHandler(errorHandler); factory.setResourceResolver(resolver); factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); @@ -107,7 +115,7 @@ void forwardsSchemaFactoryConfigurationAndAccessors() throws Exception { assertSame(resolver, factory.getResourceResolver()); assertTrue(factory.isSchemaLanguageSupported(XMLConstants.W3C_XML_SCHEMA_NS_URI)); assertTrue(factory.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING)); - assertThrows(org.xml.sax.SAXNotRecognizedException.class, () -> factory.getProperty("foo")); + assertThrows(SAXNotRecognizedException.class, () -> factory.getProperty("foo")); } @Test diff --git a/src/test/java/org/apache/commons/xml/SecureTemplatesTest.java b/src/test/java/org/apache/commons/xml/SecureTemplatesTest.java index 8c94ffb..79fae25 100644 --- a/src/test/java/org/apache/commons/xml/SecureTemplatesTest.java +++ b/src/test/java/org/apache/commons/xml/SecureTemplatesTest.java @@ -22,6 +22,9 @@ import static org.junit.jupiter.api.Assertions.assertNull; import java.io.StringReader; +import java.util.Properties; + +import javax.xml.transform.Transformer; import javax.xml.transform.Templates; import javax.xml.transform.TransformerFactory; @@ -46,12 +49,12 @@ void preservesANullTransformerFromTheDelegate() throws Exception { final Templates delegate = new Templates() { @Override - public java.util.Properties getOutputProperties() { - return new java.util.Properties(); + public Properties getOutputProperties() { + return new Properties(); } @Override - public javax.xml.transform.Transformer newTransformer() { + public Transformer newTransformer() { return null; } }; diff --git a/src/test/java/org/apache/commons/xml/SecureTransformerFactoryTest.java b/src/test/java/org/apache/commons/xml/SecureTransformerFactoryTest.java index 9663061..186c847 100644 --- a/src/test/java/org/apache/commons/xml/SecureTransformerFactoryTest.java +++ b/src/test/java/org/apache/commons/xml/SecureTransformerFactoryTest.java @@ -22,6 +22,8 @@ import static org.junit.jupiter.api.Assertions.assertSame; import java.io.StringReader; +import java.util.HashMap; +import java.util.Map; import javax.xml.transform.ErrorListener; import javax.xml.transform.Source; @@ -39,13 +41,20 @@ import org.junit.jupiter.api.Test; import org.xml.sax.XMLFilter; +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.sax.SAXSource; +import org.junit.jupiter.api.Assertions; +import org.xml.sax.InputSource; + class SecureTransformerFactoryTest { private static class NullProductsFactory extends SAXTransformerFactory { private final SAXTransformerFactory delegate = (SAXTransformerFactory) TransformerFactory.newInstance(); - private final java.util.Map<String, Object> attributes = new java.util.HashMap<>(); + private final Map<String, Object> attributes = new HashMap<>(); @Override public Source getAssociatedStylesheet(final Source source, final String media, final String title, final String charset) @@ -173,13 +182,13 @@ void preservesNullResultsFromEveryWrappableProduct() throws Exception { assertNull(factory.newTransformerHandler(templates)); assertNull(factory.newXMLFilter(stylesheet())); factory.setAttribute("test", "value"); - org.junit.jupiter.api.Assertions.assertEquals("value", factory.getAttribute("test")); - factory.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, true); + Assertions.assertEquals("value", factory.getAttribute("test")); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); } @Test void rejectsDelegatesThatCannotEnableSecureProcessing() { - org.junit.jupiter.api.Assertions.assertThrows(SecureException.class, () -> SecureTransformerFactory.secure(new RejectingFeatureFactory())); + Assertions.assertThrows(SecureException.class, () -> SecureTransformerFactory.secure(new RejectingFeatureFactory())); } @Test @@ -188,12 +197,12 @@ void securesAssociatedStylesheetSourcesOfEverySupportedShape() throws Exception final SAXTransformerFactory factory = (SAXTransformerFactory) SecureTransformerFactory.newInstance(); associatedStylesheet(factory, new StreamSource(new StringReader("<root/>"))); associatedStylesheet(factory, new StreamSource(new StringReader("<root>"))); - associatedStylesheet(factory, new javax.xml.transform.sax.SAXSource(new org.xml.sax.InputSource(new StringReader("<root/>")))); - associatedStylesheet(factory, new javax.xml.transform.sax.SAXSource()); + associatedStylesheet(factory, new SAXSource(new InputSource(new StringReader("<root/>")))); + associatedStylesheet(factory, new SAXSource()); associatedStylesheet(factory, - new javax.xml.transform.sax.SAXSource(SecureSAXParserFactory.newXMLReader(false), new org.xml.sax.InputSource(new StringReader("<root/>")))); + new SAXSource(SecureSAXParserFactory.newXMLReader(false), new InputSource(new StringReader("<root/>")))); associatedStylesheet(factory, - new javax.xml.transform.dom.DOMSource(javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument())); + new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument())); } @Test @@ -204,7 +213,7 @@ void wrapsEveryStandardAndSaxFactoryProduct() throws Exception { assertSame(resolver, factory.getURIResolver()); factory.setErrorListener(factory.getErrorListener()); factory.setAttribute("indent-number", 2); - org.junit.jupiter.api.Assertions.assertThrows(IllegalArgumentException.class, () -> factory.getAttribute("indent-number")); + Assertions.assertThrows(IllegalArgumentException.class, () -> factory.getAttribute("indent-number")); final Templates templates = factory.newTemplates(stylesheet()); assertInstanceOf(SecureTemplates.class, templates); assertInstanceOf(SecureTransformer.class, factory.newTransformer()); diff --git a/src/test/java/org/apache/commons/xml/SecureTransformerHandlerTest.java b/src/test/java/org/apache/commons/xml/SecureTransformerHandlerTest.java index 217de4f..78d1015 100644 --- a/src/test/java/org/apache/commons/xml/SecureTransformerHandlerTest.java +++ b/src/test/java/org/apache/commons/xml/SecureTransformerHandlerTest.java @@ -29,6 +29,8 @@ import org.junit.jupiter.api.Test; import org.xml.sax.helpers.AttributesImpl; +import org.xml.sax.helpers.LocatorImpl; + class SecureTransformerHandlerTest { @Test @@ -37,7 +39,7 @@ void forwardsEveryTransformerHandlerMethod() throws Exception { final SecureTransformerHandler handler = new SecureTransformerHandler(factory.newTransformerHandler(), null, null, false); final char[] chars = { 'x' }; handler.setResult(new StreamResult(new StringWriter())); - handler.setDocumentLocator(new org.xml.sax.helpers.LocatorImpl()); + handler.setDocumentLocator(new LocatorImpl()); handler.setSystemId("system"); handler.startDocument(); handler.startDTD("root", null, null); diff --git a/src/test/java/org/apache/commons/xml/SecureTransformerTest.java b/src/test/java/org/apache/commons/xml/SecureTransformerTest.java index 9f635fd..ba3f6c0 100644 --- a/src/test/java/org/apache/commons/xml/SecureTransformerTest.java +++ b/src/test/java/org/apache/commons/xml/SecureTransformerTest.java @@ -32,6 +32,9 @@ import org.junit.jupiter.api.Test; +import javax.xml.transform.ErrorListener; +import javax.xml.transform.TransformerException; + class SecureTransformerTest { @Test @@ -48,18 +51,18 @@ void forwardsEveryTransformerMethod() throws Exception { assertNotNull(transformer.getOutputProperty(OutputKeys.METHOD)); transformer.setOutputProperties(new Properties()); assertNotNull(transformer.getOutputProperties()); - transformer.setErrorListener(new javax.xml.transform.ErrorListener() { + transformer.setErrorListener(new ErrorListener() { @Override - public void error(final javax.xml.transform.TransformerException e) { + public void error(final TransformerException e) { } @Override - public void fatalError(final javax.xml.transform.TransformerException e) { + public void fatalError(final TransformerException e) { } @Override - public void warning(final javax.xml.transform.TransformerException e) { + public void warning(final TransformerException e) { } }); assertNotNull(transformer.getErrorListener()); diff --git a/src/test/java/org/apache/commons/xml/SecureValidatorHandlerTest.java b/src/test/java/org/apache/commons/xml/SecureValidatorHandlerTest.java index f0c8817..6bc46ff 100644 --- a/src/test/java/org/apache/commons/xml/SecureValidatorHandlerTest.java +++ b/src/test/java/org/apache/commons/xml/SecureValidatorHandlerTest.java @@ -332,7 +332,7 @@ void delegatesProperty() throws Exception { final SecureValidatorHandler handler = new SecureValidatorHandler(delegate); // Verify delegation of getProperty; setProperty may be unsupported on this implementation // Spelled out because Android's XMLConstants predates JAXP 1.5 and lacks ACCESS_EXTERNAL_DTD; this file also compiles in android-tests. - final String property = "http://javax.xml.XMLConstants/property/accessExternalDTD"; + final String property = "http://XMLConstants/property/accessExternalDTD"; final Object delegateValue; try { delegateValue = delegate.getProperty(property); @@ -356,7 +356,7 @@ void delegatesSetContentHandler() throws Exception { void delegatesSetDocumentLocator() throws Exception { final ValidatorHandler delegate = newValidatorHandler(); final SecureValidatorHandler handler = new SecureValidatorHandler(delegate); - final Locator locator = new org.xml.sax.Locator() { + final Locator locator = new Locator() { @Override public int getColumnNumber() { diff --git a/src/test/java/org/apache/commons/xml/SecureValidatorTest.java b/src/test/java/org/apache/commons/xml/SecureValidatorTest.java index a143686..651bab1 100644 --- a/src/test/java/org/apache/commons/xml/SecureValidatorTest.java +++ b/src/test/java/org/apache/commons/xml/SecureValidatorTest.java @@ -29,23 +29,33 @@ import org.junit.jupiter.api.Test; import org.xml.sax.helpers.DefaultHandler; +import java.io.IOException; +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.validation.Validator; +import org.w3c.dom.ls.LSResourceResolver; +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; + class SecureValidatorTest { - private static final class PropertyValidator extends javax.xml.validation.Validator { + private static final class PropertyValidator extends Validator { - private final javax.xml.validation.Validator delegate; + private final Validator delegate; - PropertyValidator() throws org.xml.sax.SAXException { + PropertyValidator() throws SAXException { delegate = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema().newValidator(); } @Override - public org.xml.sax.ErrorHandler getErrorHandler() { + public ErrorHandler getErrorHandler() { return delegate.getErrorHandler(); } @Override - public boolean getFeature(final String name) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException { + public boolean getFeature(final String name) throws SAXNotRecognizedException, SAXNotSupportedException { return delegate.getFeature(name); } @@ -55,7 +65,7 @@ public Object getProperty(final String name) { } @Override - public org.w3c.dom.ls.LSResourceResolver getResourceResolver() { + public LSResourceResolver getResourceResolver() { return delegate.getResourceResolver(); } @@ -65,12 +75,12 @@ public void reset() { } @Override - public void setErrorHandler(final org.xml.sax.ErrorHandler errorHandler) { + public void setErrorHandler(final ErrorHandler errorHandler) { delegate.setErrorHandler(errorHandler); } @Override - public void setFeature(final String name, final boolean value) throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException { + public void setFeature(final String name, final boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { delegate.setFeature(name, value); } @@ -80,13 +90,13 @@ public void setProperty(final String name, final Object object) { } @Override - public void setResourceResolver(final org.w3c.dom.ls.LSResourceResolver resourceResolver) { + public void setResourceResolver(final LSResourceResolver resourceResolver) { delegate.setResourceResolver(resourceResolver); } @Override - public void validate(final javax.xml.transform.Source source, final javax.xml.transform.Result result) - throws org.xml.sax.SAXException, java.io.IOException { + public void validate(final Source source, final Result result) + throws SAXException, IOException { delegate.validate(source, result); } } @@ -100,7 +110,7 @@ void getsPropertiesFromTheDelegate() throws Exception { void preservesNonRemovableResolverFloorAndForwardsConfiguration() throws Exception { final SecureValidator validator = new SecureValidator(SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema().newValidator(), false); final DefaultHandler errorHandler = new DefaultHandler(); - final org.w3c.dom.ls.LSResourceResolver resolver = (type, namespace, publicId, systemId, base) -> null; + final LSResourceResolver resolver = (type, namespace, publicId, systemId, base) -> null; validator.setErrorHandler(errorHandler); assertSame(errorHandler, validator.getErrorHandler()); assertNull(validator.getResourceResolver()); @@ -109,7 +119,7 @@ void preservesNonRemovableResolverFloorAndForwardsConfiguration() throws Excepti validator.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, ""); assertSame(resolver, validator.getResourceResolver()); assertTrue(validator.getFeature(XMLConstants.FEATURE_SECURE_PROCESSING)); - assertThrows(org.xml.sax.SAXNotRecognizedException.class, () -> validator.getProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA)); + assertThrows(SAXNotRecognizedException.class, () -> validator.getProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA)); validator.reset(); assertNull(validator.getResourceResolver()); } diff --git a/src/test/java/org/apache/commons/xml/SecureXMLFilterTest.java b/src/test/java/org/apache/commons/xml/SecureXMLFilterTest.java index 15ed8fe..c4530e4 100644 --- a/src/test/java/org/apache/commons/xml/SecureXMLFilterTest.java +++ b/src/test/java/org/apache/commons/xml/SecureXMLFilterTest.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.StringReader; +import java.util.Properties; import java.util.concurrent.atomic.AtomicInteger; import javax.xml.transform.Result; @@ -38,6 +39,13 @@ import org.xml.sax.SAXParseException; import org.xml.sax.helpers.DefaultHandler; +import javax.xml.transform.ErrorListener; +import javax.xml.transform.Source; +import org.junit.jupiter.api.Assertions; +import org.xml.sax.Attributes; +import org.xml.sax.ext.DefaultHandler2; +import org.xml.sax.helpers.XMLFilterImpl; + class SecureXMLFilterTest { private static SecureXMLFilter filter() throws Exception { @@ -52,13 +60,13 @@ void propagatesSaxFailuresFromTheTransformationHandler() throws Exception { filter.setContentHandler(new DefaultHandler() { @Override - public void startElement(final String uri, final String localName, final String qName, final org.xml.sax.Attributes attributes) + public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) throws SAXException { throw new SAXException("handler"); } }); final SAXException exception = assertThrows(SAXException.class, () -> filter.parse(new InputSource(new StringReader("<root/>")))); - org.junit.jupiter.api.Assertions.assertEquals("handler", exception.getMessage()); + Assertions.assertEquals("handler", exception.getMessage()); } @Test @@ -86,7 +94,7 @@ public void warning(final SAXParseException e) { filter.error(new TransformerException("error", new SAXParseException("cause", null))); final TransformerException fatal = new TransformerException("fatal"); assertSame(fatal, assertThrows(TransformerException.class, () -> filter.fatalError(fatal))); - org.junit.jupiter.api.Assertions.assertEquals(3, reports.get()); + Assertions.assertEquals(3, reports.get()); } @Test @@ -103,7 +111,7 @@ void rethrowsAnIoExceptionFromTheTransformer() throws Exception { final Templates templates = new Templates() { @Override - public java.util.Properties getOutputProperties() { + public Properties getOutputProperties() { return delegate.getOutputProperties(); } @@ -117,12 +125,12 @@ public void clearParameters() { } @Override - public javax.xml.transform.ErrorListener getErrorListener() { + public ErrorListener getErrorListener() { return delegate.getErrorListener(); } @Override - public java.util.Properties getOutputProperties() { + public Properties getOutputProperties() { return delegate.getOutputProperties(); } @@ -147,12 +155,12 @@ public void reset() { } @Override - public void setErrorListener(final javax.xml.transform.ErrorListener listener) { + public void setErrorListener(final ErrorListener listener) { delegate.setErrorListener(listener); } @Override - public void setOutputProperties(final java.util.Properties properties) { + public void setOutputProperties(final Properties properties) { delegate.setOutputProperties(properties); } @@ -172,7 +180,7 @@ public void setURIResolver(final URIResolver resolver) { } @Override - public void transform(final javax.xml.transform.Source source, final Result result) throws TransformerException { + public void transform(final Source source, final Result result) throws TransformerException { throw new TransformerException(new IOException("transform")); } }; @@ -181,13 +189,13 @@ public void transform(final javax.xml.transform.Source source, final Result resu final SecureXMLFilter filter = new SecureXMLFilter(new SecureTemplates(templates, null, null, false)); filter.setContentHandler(new DefaultHandler()); final IOException exception = assertThrows(IOException.class, () -> filter.parse(new InputSource(new StringReader("<root/>")))); - org.junit.jupiter.api.Assertions.assertEquals("transform", exception.getMessage()); + Assertions.assertEquals("transform", exception.getMessage()); } @Test void sendsLexicalEventsToALexicalContentHandler() throws Exception { final SecureXMLFilter filter = filter(); - filter.setContentHandler(new org.xml.sax.ext.DefaultHandler2()); + filter.setContentHandler(new DefaultHandler2()); filter.parse(new InputSource(new StringReader("<root><!--comment--><![CDATA[text]]></root>"))); } @@ -213,7 +221,7 @@ public void warning(final SAXParseException e) throws SAXException { void wrapsIoFailuresFromTheParentReader() throws Exception { final SecureXMLFilter filter = filter(); filter.setContentHandler(new DefaultHandler()); - filter.setParent(new org.xml.sax.helpers.XMLFilterImpl() { + filter.setParent(new XMLFilterImpl() { @Override public void parse(final InputSource input) throws IOException { @@ -221,6 +229,6 @@ public void parse(final InputSource input) throws IOException { } }); final SAXException exception = assertThrows(SAXException.class, () -> filter.parse(new InputSource(new StringReader("<root/>")))); - org.junit.jupiter.api.Assertions.assertNotNull(exception.getCause()); + Assertions.assertNotNull(exception.getCause()); } } diff --git a/src/test/java/org/apache/commons/xml/SecureXMLReaderTest.java b/src/test/java/org/apache/commons/xml/SecureXMLReaderTest.java index 6c5554c..0016602 100644 --- a/src/test/java/org/apache/commons/xml/SecureXMLReaderTest.java +++ b/src/test/java/org/apache/commons/xml/SecureXMLReaderTest.java @@ -23,9 +23,13 @@ import org.xml.sax.InputSource; import org.xml.sax.helpers.DefaultHandler; +import java.io.IOException; +import org.junit.jupiter.api.Assertions; +import org.xml.sax.helpers.XMLFilterImpl; + class SecureXMLReaderTest { - private static final class RecordingReader extends org.xml.sax.helpers.XMLFilterImpl { + private static final class RecordingReader extends XMLFilterImpl { boolean inputSourceParsed; @@ -48,8 +52,8 @@ void forwardsBothParseOverloads() throws Exception { final SecureXMLReader reader = new SecureXMLReader(delegate); reader.parse(new InputSource()); reader.parse("system"); - org.junit.jupiter.api.Assertions.assertTrue(delegate.inputSourceParsed); - org.junit.jupiter.api.Assertions.assertTrue(delegate.systemIdParsed); + Assertions.assertTrue(delegate.inputSourceParsed); + Assertions.assertTrue(delegate.systemIdParsed); } @Test @@ -65,6 +69,6 @@ void forwardsReaderConfigurationAndParse() throws Exception { reader.getErrorHandler(); reader.getEntityResolver(); reader.parse(new InputSource(new StringReader("<root/>"))); - org.junit.jupiter.api.Assertions.assertThrows(java.io.IOException.class, () -> reader.parse("file:/definitely-not-present-commons-xml-test.xml")); + Assertions.assertThrows(IOException.class, () -> reader.parse("file:/definitely-not-present-commons-xml-test.xml")); } } diff --git a/src/test/java/org/apache/commons/xml/SecureXPathExpressionTest.java b/src/test/java/org/apache/commons/xml/SecureXPathExpressionTest.java index 390dae4..d0f29b0 100644 --- a/src/test/java/org/apache/commons/xml/SecureXPathExpressionTest.java +++ b/src/test/java/org/apache/commons/xml/SecureXPathExpressionTest.java @@ -26,6 +26,9 @@ import org.junit.jupiter.api.Test; import org.xml.sax.InputSource; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; + class SecureXPathExpressionTest { @Test @@ -33,9 +36,9 @@ void evaluatesEveryXPathExpressionOverload() throws Exception { final SecureXPathExpression expression = new SecureXPathExpression(XPathFactory.newInstance().newXPath().compile("/root/text()"), false); final InputSource source = new InputSource(new StringReader("<root>value</root>")); assertEquals("value", expression.evaluate(source)); - assertEquals("value", expression.evaluate(new InputSource(new StringReader("<root>value</root>")), javax.xml.xpath.XPathConstants.STRING)); + assertEquals("value", expression.evaluate(new InputSource(new StringReader("<root>value</root>")), XPathConstants.STRING)); assertEquals("value", expression.evaluate(org.apache.commons.xml.SecureXPath.parse(new InputSource(new StringReader("<root>value</root>")), false))); assertEquals("value", - expression.evaluate(SecureXPath.parse(new InputSource(new StringReader("<root>value</root>")), false), javax.xml.xpath.XPathConstants.STRING)); + expression.evaluate(SecureXPath.parse(new InputSource(new StringReader("<root>value</root>")), false), XPathConstants.STRING)); } } diff --git a/src/test/java/org/apache/commons/xml/SecureXPathFactoryTest.java b/src/test/java/org/apache/commons/xml/SecureXPathFactoryTest.java index d474c2e..1fe8bea 100644 --- a/src/test/java/org/apache/commons/xml/SecureXPathFactoryTest.java +++ b/src/test/java/org/apache/commons/xml/SecureXPathFactoryTest.java @@ -25,14 +25,20 @@ import org.junit.jupiter.api.Test; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathFactoryConfigurationException; +import javax.xml.xpath.XPathFunctionResolver; +import javax.xml.xpath.XPathVariableResolver; +import org.junit.jupiter.api.Assertions; + class SecureXPathFactoryTest { @Test void createsAndConfiguresAFactoryForTheDefaultObjectModel() throws Exception { final XPathFactory factory = SecureXPathFactory.newInstance(XPathFactory.DEFAULT_OBJECT_MODEL_URI); - final javax.xml.xpath.XPathFunctionResolver resolver = (name, arity) -> null; + final XPathFunctionResolver resolver = (name, arity) -> null; factory.setXPathFunctionResolver(resolver); - final javax.xml.xpath.XPathVariableResolver variableResolver = name -> null; + final XPathVariableResolver variableResolver = name -> null; factory.setXPathVariableResolver(variableResolver); assertTrue(factory.isObjectModelSupported(XPathFactory.DEFAULT_OBJECT_MODEL_URI)); final SecureXPath xpath = (SecureXPath) factory.newXPath(); @@ -61,7 +67,7 @@ public boolean isObjectModelSupported(final String objectModel) { } @Override - public javax.xml.xpath.XPath newXPath() { + public XPath newXPath() { return null; } @@ -70,11 +76,11 @@ public void setFeature(final String name, final boolean value) { } @Override - public void setXPathFunctionResolver(final javax.xml.xpath.XPathFunctionResolver resolver) { + public void setXPathFunctionResolver(final XPathFunctionResolver resolver) { } @Override - public void setXPathVariableResolver(final javax.xml.xpath.XPathVariableResolver resolver) { + public void setXPathVariableResolver(final XPathVariableResolver resolver) { } }; assertNull(SecureXPathFactory.secure(delegate).newXPath()); @@ -95,23 +101,23 @@ public boolean isObjectModelSupported(final String objectModel) { } @Override - public javax.xml.xpath.XPath newXPath() { + public XPath newXPath() { return null; } @Override - public void setFeature(final String name, final boolean value) throws javax.xml.xpath.XPathFactoryConfigurationException { - throw new javax.xml.xpath.XPathFactoryConfigurationException(name); + public void setFeature(final String name, final boolean value) throws XPathFactoryConfigurationException { + throw new XPathFactoryConfigurationException(name); } @Override - public void setXPathFunctionResolver(final javax.xml.xpath.XPathFunctionResolver resolver) { + public void setXPathFunctionResolver(final XPathFunctionResolver resolver) { } @Override - public void setXPathVariableResolver(final javax.xml.xpath.XPathVariableResolver resolver) { + public void setXPathVariableResolver(final XPathVariableResolver resolver) { } }; - org.junit.jupiter.api.Assertions.assertThrows(SecureException.class, () -> SecureXPathFactory.secure(rejectingFactory)); + Assertions.assertThrows(SecureException.class, () -> SecureXPathFactory.secure(rejectingFactory)); } } diff --git a/src/test/java/org/apache/commons/xml/SecureXPathTest.java b/src/test/java/org/apache/commons/xml/SecureXPathTest.java index b64dae0..0c05576 100644 --- a/src/test/java/org/apache/commons/xml/SecureXPathTest.java +++ b/src/test/java/org/apache/commons/xml/SecureXPathTest.java @@ -24,6 +24,7 @@ import java.io.StringReader; import java.util.Collections; +import java.util.Iterator; import javax.xml.XMLConstants; import javax.xml.namespace.NamespaceContext; @@ -32,6 +33,14 @@ import org.junit.jupiter.api.Test; import org.xml.sax.InputSource; +import javax.xml.namespace.QName; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpression; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFunctionResolver; +import javax.xml.xpath.XPathVariableResolver; + class SecureXPathTest { @Test @@ -50,7 +59,7 @@ public String getPrefix(final String namespaceUri) { } @Override - public java.util.Iterator<String> getPrefixes(final String namespaceUri) { + public Iterator<String> getPrefixes(final String namespaceUri) { return Collections.<String>emptyList().iterator(); } }; @@ -62,19 +71,19 @@ public java.util.Iterator<String> getPrefixes(final String namespaceUri) { assertNotNull(xpath.getXPathVariableResolver()); assertNotNull(xpath.compile("/root")); assertEquals("value", xpath.evaluate("/root/text()", new InputSource(new StringReader("<root>value</root>")))); - assertEquals("value", xpath.evaluate("/root/text()", new InputSource(new StringReader("<root>value</root>")), javax.xml.xpath.XPathConstants.STRING)); + assertEquals("value", xpath.evaluate("/root/text()", new InputSource(new StringReader("<root>value</root>")), XPathConstants.STRING)); assertEquals("value", xpath.evaluate("/root/text()", SecureXPath.parse(new InputSource(new StringReader("<root>value</root>")), false))); assertEquals("value", xpath.evaluate("/root/text()", SecureXPath.parse(new InputSource(new StringReader("<root>value</root>")), false), - javax.xml.xpath.XPathConstants.STRING)); + XPathConstants.STRING)); xpath.reset(); } @Test void preservesANullCompiledExpressionFromTheDelegate() throws Exception { - final javax.xml.xpath.XPath delegate = new javax.xml.xpath.XPath() { + final XPath delegate = new XPath() { @Override - public javax.xml.xpath.XPathExpression compile(final String expression) { + public XPathExpression compile(final String expression) { return null; } @@ -84,7 +93,7 @@ public String evaluate(final String expression, final InputSource source) { } @Override - public Object evaluate(final String expression, final InputSource source, final javax.xml.namespace.QName returnType) { + public Object evaluate(final String expression, final InputSource source, final QName returnType) { return null; } @@ -94,7 +103,7 @@ public String evaluate(final String expression, final Object item) { } @Override - public Object evaluate(final String expression, final Object item, final javax.xml.namespace.QName returnType) { + public Object evaluate(final String expression, final Object item, final QName returnType) { return null; } @@ -104,12 +113,12 @@ public NamespaceContext getNamespaceContext() { } @Override - public javax.xml.xpath.XPathFunctionResolver getXPathFunctionResolver() { + public XPathFunctionResolver getXPathFunctionResolver() { return null; } @Override - public javax.xml.xpath.XPathVariableResolver getXPathVariableResolver() { + public XPathVariableResolver getXPathVariableResolver() { return null; } @@ -122,11 +131,11 @@ public void setNamespaceContext(final NamespaceContext context) { } @Override - public void setXPathFunctionResolver(final javax.xml.xpath.XPathFunctionResolver resolver) { + public void setXPathFunctionResolver(final XPathFunctionResolver resolver) { } @Override - public void setXPathVariableResolver(final javax.xml.xpath.XPathVariableResolver resolver) { + public void setXPathVariableResolver(final XPathVariableResolver resolver) { } }; assertNull(new SecureXPath(delegate, false).compile("/root")); @@ -134,7 +143,7 @@ public void setXPathVariableResolver(final javax.xml.xpath.XPathVariableResolver @Test void wrapsParseFailuresAsXPathExpressionExceptions() { - final javax.xml.xpath.XPathExpressionException exception = assertThrows(javax.xml.xpath.XPathExpressionException.class, + final XPathExpressionException exception = assertThrows(XPathExpressionException.class, () -> SecureXPath.parse(new InputSource(new StringReader("<root>")), false)); assertNotNull(exception.getCause()); } diff --git a/src/test/java/org/apache/commons/xml/XPathInputSourceTest.java b/src/test/java/org/apache/commons/xml/XPathInputSourceTest.java index 423aeac..34bb534 100644 --- a/src/test/java/org/apache/commons/xml/XPathInputSourceTest.java +++ b/src/test/java/org/apache/commons/xml/XPathInputSourceTest.java @@ -26,11 +26,13 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import org.xml.sax.InputSource; + /** * Checks that the document parse behind {@code XPath.evaluate(String, InputSource)} (and its compiled {@code XPathExpression} counterpart) cannot pull in an * external general entity. * - * <p>The stock JDK and Apache Xalan implement the {@link org.xml.sax.InputSource}-taking {@code evaluate} entry points by provisioning an internal document + * <p>The stock JDK and Apache Xalan implement the {@link InputSource}-taking {@code evaluate} entry points by provisioning an internal document * parser that {@code FEATURE_SECURE_PROCESSING} on the {@link XPathFactory} does not reach. The {@link SecureXPathFactory} wrapper parses the input * through a secure {@code DocumentBuilder} instead, so the external reference resolves to empty on the floor, while the * evaluation itself still works. Tagged {@code xpath}, so it runs under test-stockjdk, test-jdk-xerces, test-xalan and test-xalan-xerces; the Saxon engine takes the separate
