Make tests use UntrustedXML instead of XMLInputFactory
[yangtools.git] / yang / yang-data-codec-xml / src / test / java / org / opendaylight / yangtools / yang / data / codec / xml / Bug8675Test.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.yangtools.yang.data.codec.xml;
10
11 import static org.junit.Assert.assertNotNull;
12
13 import java.io.InputStream;
14 import javax.xml.stream.XMLStreamReader;
15 import org.junit.AfterClass;
16 import org.junit.BeforeClass;
17 import org.junit.Test;
18 import org.opendaylight.yangtools.util.xml.UntrustedXML;
19 import org.opendaylight.yangtools.yang.common.QName;
20 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
21 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
22 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
23 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
24 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
25 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
27 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
28 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
29 import org.opendaylight.yangtools.yang.model.api.Module;
30 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
31 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
32
33 public class Bug8675Test {
34
35     private static SchemaContext schemaContext;
36     private static Module fooModule;
37
38     @BeforeClass
39     public static void setup() {
40         schemaContext = YangParserTestUtils.parseYangResource("/bug8675/foo.yang");
41         fooModule = schemaContext.getModules().iterator().next();
42     }
43
44     @AfterClass
45     public static void cleanup() {
46         fooModule = null;
47         schemaContext = null;
48     }
49
50     @Test
51     public void testParsingEmptyElements() throws Exception {
52         final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
53                 QName.create(fooModule.getQNameModule(), "top-level-container"));
54         assertNotNull(topLevelContainer);
55
56         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
57                 "/bug8675/foo.xml");
58
59         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
60
61         final NormalizedNodeResult result = new NormalizedNodeResult();
62         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
63
64         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
65         xmlParser.parse(reader);
66
67         final NormalizedNode<?, ?> transformedInput = result.getResult();
68         assertNotNull(transformedInput);
69     }
70
71     @Test
72     public void testParsingEmptyRootElement() throws Exception {
73         final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
74                 QName.create(fooModule.getQNameModule(), "top-level-container"));
75         assertNotNull(topLevelContainer);
76
77         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
78                 "/bug8675/foo-2.xml");
79
80         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
81
82         final NormalizedNodeResult result = new NormalizedNodeResult();
83         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
84
85         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
86         xmlParser.parse(reader);
87
88         final NormalizedNode<?, ?> transformedInput = result.getResult();
89         assertNotNull(transformedInput);
90     }
91
92     @Test
93     public void testListAsRootElement() throws Exception {
94         final ListSchemaNode topLevelList = (ListSchemaNode) fooModule.getDataChildByName(
95                 QName.create(fooModule.getQNameModule(), "top-level-list"));
96         assertNotNull(topLevelList);
97
98         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
99
100         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
101
102         final NormalizedNodeResult result = new NormalizedNodeResult();
103         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
104
105         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelList);
106         xmlParser.parse(reader);
107
108         final NormalizedNode<?, ?> transformedInput = result.getResult();
109         assertNotNull(transformedInput);
110     }
111
112     @Test
113     public void testAnyXmlAsRootElement() throws Exception {
114         final AnyXmlSchemaNode topLevelAnyXml = (AnyXmlSchemaNode) fooModule.getDataChildByName(
115                 QName.create(fooModule.getQNameModule(), "top-level-anyxml"));
116         assertNotNull(topLevelAnyXml);
117
118         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
119
120         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
121
122         final NormalizedNodeResult result = new NormalizedNodeResult();
123         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
124
125         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelAnyXml);
126         xmlParser.parse(reader);
127
128         final NormalizedNode<?, ?> transformedInput = result.getResult();
129         assertNotNull(transformedInput);
130     }
131
132     @Test
133     public void testLeafAsRootElement() throws Exception {
134         final LeafSchemaNode topLevelLeaf = (LeafSchemaNode) fooModule.getDataChildByName(
135                 QName.create(fooModule.getQNameModule(), "top-level-leaf"));
136
137         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
138
139         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
140
141         final NormalizedNodeResult result = new NormalizedNodeResult();
142         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
143
144         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeaf);
145         xmlParser.parse(reader);
146
147         final NormalizedNode<?, ?> transformedInput = result.getResult();
148         assertNotNull(transformedInput);
149     }
150
151     @Test
152     public void testLeafListAsRootElement() throws Exception {
153         final LeafListSchemaNode topLevelLeafList = (LeafListSchemaNode) fooModule.getDataChildByName(
154                 QName.create(fooModule.getQNameModule(), "top-level-leaf-list"));
155
156         final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
157
158         final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
159
160         final NormalizedNodeResult result = new NormalizedNodeResult();
161         final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
162
163         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeafList);
164         xmlParser.parse(reader);
165
166         final NormalizedNode<?, ?> transformedInput = result.getResult();
167         assertNotNull(transformedInput);
168     }
169 }