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.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertNotNull;
22 import static org.junit.jupiter.api.Assertions.assertNull;
23 import static org.junit.jupiter.api.Assertions.assertTrue;
24
25 import javax.xml.parsers.DocumentBuilderFactory;
26
27 import org.junit.jupiter.api.Tag;
28 import org.junit.jupiter.api.Test;
29
30 @Tag("dom")
31 class SecureDocumentBuilderTest {
32
33 @Test
34 void createsDocument() throws Exception {
35 assertNotNull(new SecureDocumentBuilder(DocumentBuilderFactory.newInstance().newDocumentBuilder()).newDocument());
36 }
37
38 @Test
39 void forwardsDocumentBuilderStateAndDomImplementation() throws Exception {
40 final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
41 factory.setNamespaceAware(true);
42 factory.setValidating(false);
43 if (AttackTestSupport.DOM_SUPPORTS_XINCLUDE) {
44 factory.setXIncludeAware(false);
45 }
46 if (AttackTestSupport.DOM_SUPPORTS_SCHEMA) {
47 factory.setSchema(null);
48 }
49 final SecureDocumentBuilder builder = new SecureDocumentBuilder(factory.newDocumentBuilder());
50 assertTrue(builder.isNamespaceAware());
51 assertFalse(builder.isValidating());
52 if (AttackTestSupport.DOM_SUPPORTS_XINCLUDE) {
53 assertFalse(builder.isXIncludeAware());
54 }
55 if (AttackTestSupport.DOM_SUPPORTS_SCHEMA) {
56 assertNull(builder.getSchema());
57 }
58 assertNotNull(builder.getDOMImplementation());
59 }
60 }