72f4ddd98a53c8bbf49e2fd06d1beeb7b510afb2
[smo/teiv.git] /
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2024 Ericsson
4  *  Modifications Copyright (C) 2024 OpenInfra Foundation Europe
5  *  ================================================================================
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  *
18  *  SPDX-License-Identifier: Apache-2.0
19  *  ============LICENSE_END=========================================================
20  */
21 package org.oran.smo.yangtools.parser.data.dom.test;
22
23 import static org.junit.Assert.assertTrue;
24
25 import java.util.Arrays;
26
27 import org.junit.Test;
28
29 import org.oran.smo.yangtools.parser.data.dom.YangDataDomDocumentRoot;
30 import org.oran.smo.yangtools.parser.data.dom.YangDataDomDocumentRoot.SourceDataType;
31 import org.oran.smo.yangtools.parser.data.dom.YangDataDomNode;
32 import org.oran.smo.yangtools.parser.findings.ParserFindingType;
33 import org.oran.smo.yangtools.parser.testutils.YangTestCommon;
34
35 public class XmlRootElementsTest extends YangTestCommon {
36
37     private static final String DIR = "src/test/resources/data-dom/xml-test/";
38
39     @Test
40     public void testRootElement_Config() {
41
42         severityCalculator.suppressFinding(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
43         parseAbsoluteYangData(Arrays.asList(DIR + "root-config.xml"));
44
45         assertNoFindings();
46         checkDataParsedCorrectly();
47     }
48
49     @Test
50     public void testRootElement_InstanceDataSet() {
51
52         severityCalculator.suppressFinding(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
53         parseAbsoluteYangData(Arrays.asList(DIR + "root-instance-data-set.xml"));
54
55         assertNoFindings();
56         checkDataParsedCorrectly();
57     }
58
59     @Test
60     public void testRootElement_data() {
61
62         severityCalculator.suppressFinding(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
63         parseAbsoluteYangData(Arrays.asList(DIR + "root-data.xml"));
64
65         assertNoFindings();
66         checkDataParsedCorrectly();
67     }
68
69     @Test
70     public void testRootElement_assume_module_root_element() {
71
72         severityCalculator.suppressFinding(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
73         parseAbsoluteYangData(Arrays.asList(DIR + "root-assume-module-root-element.xml"));
74
75         assertHasFindingOfType(ParserFindingType.P071_INCORRECT_ROOT_ELEMENT_OF_DATA_FILE.toString());
76         checkDataParsedCorrectly();
77     }
78
79     @Test
80     public void testRootElement_InstanceDataSet_Wrong() {
81
82         severityCalculator.suppressFinding(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
83         parseAbsoluteYangData(Arrays.asList(DIR + "root-instance-data-set-wrong.xml"));
84
85         assertHasFindingOfType(ParserFindingType.P079_EMPTY_DATA_FILE.toString());
86     }
87
88     @Test
89     public void testRootElement_RpcReply() {
90
91         severityCalculator.suppressFinding(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
92         parseAbsoluteYangData(Arrays.asList(DIR + "root-rpc-reply.xml"));
93
94         assertHasNotFindingOfType(ParserFindingType.P071_INCORRECT_ROOT_ELEMENT_OF_DATA_FILE.toString());
95         checkDataParsedCorrectly();
96     }
97
98     @Test
99     public void testRootElement_RpcReply_Wrong() {
100
101         severityCalculator.suppressFinding(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
102         parseAbsoluteYangData(Arrays.asList(DIR + "root-rpc-reply-wrong-no-data.xml"));
103
104         assertHasFindingOfType(ParserFindingType.P079_EMPTY_DATA_FILE.toString());
105     }
106
107     @Test
108     public void testRootElement_no_namespace() {
109
110         severityCalculator.suppressFinding(ParserFindingType.P075_CORRESPONDING_SCHEMA_NODE_NOT_FOUND.toString());
111         parseAbsoluteYangData(Arrays.asList(DIR + "root-data-no-namespace.xml"));
112
113         assertHasFindingOfType(ParserFindingType.P015_INVALID_SYNTAX_IN_DOCUMENT.toString());
114     }
115
116     private void checkDataParsedCorrectly() {
117
118         final YangDataDomDocumentRoot root = yangDeviceModel.getYangInstanceDataInputs().get(0)
119                 .getYangDataDomDocumentRoot();
120
121         final YangDataDomNode cont1 = getChildDataDomNode(root, "cont1");
122         assertTrue(cont1.getNamespace().equals("test:module"));
123
124         final YangDataDomNode leaf1 = getChildDataDomNode(cont1, "leaf1");
125         assertTrue(leaf1.getNamespace().equals("test:module"));
126         assertTrue(leaf1.getValue().equals(new String("42")));
127         assertTrue(leaf1.getSourceDataType() == SourceDataType.XML);
128     }
129 }