1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.xml.secure;
19
20 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
21 import static org.junit.jupiter.api.Assertions.assertNotNull;
22 import static org.junit.jupiter.api.Assertions.assertNull;
23
24 import java.io.StringReader;
25 import java.util.Properties;
26
27 import javax.xml.transform.Templates;
28 import javax.xml.transform.Transformer;
29 import javax.xml.transform.TransformerFactory;
30 import javax.xml.transform.stream.StreamSource;
31
32 import org.junit.jupiter.api.Tag;
33 import org.junit.jupiter.api.Test;
34
35 @Tag("trax")
36 class SecureTemplatesTest {
37
38 @Test
39 void delegatesPropertiesAndWrapsProducedTransformer() throws Exception {
40 final Templates delegate = TransformerFactory.newInstance().newTemplates(new StreamSource(
41 new StringReader("<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'><xsl:template match='/'/></xsl:stylesheet>")));
42 final SecureTemplates templates = new SecureTemplates(delegate, (href, base) -> null, null, false);
43 assertNotNull(templates.getOutputProperties());
44 assertInstanceOf(SecureTransformer.class, templates.newTransformer());
45 assertNotNull(templates.getDelegate());
46 }
47
48 @Test
49 void preservesANullTransformerFromTheDelegate() throws Exception {
50 final Templates delegate = new Templates() {
51
52 @Override
53 public Properties getOutputProperties() {
54 return new Properties();
55 }
56
57 @Override
58 public Transformer newTransformer() {
59 return null;
60 }
61 };
62 assertNull(new SecureTemplates(delegate, null, null, false).newTransformer());
63 }
64 }