Further warnings mitigation
[netconf.git] / plugins / netconf-common-mdsal / src / test / java / org / opendaylight / netconf / common / mdsal / NormalizedDataUtilTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. 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 package org.opendaylight.netconf.common.mdsal;
9
10 import static org.junit.Assert.assertFalse;
11
12 import java.util.List;
13 import javax.xml.transform.dom.DOMResult;
14 import org.junit.Test;
15 import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
16 import org.opendaylight.netconf.api.xml.XmlUtil;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.NetconfState;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Sessions;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.Session;
20 import org.opendaylight.yang.svc.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.YangModuleInfoImpl;
21 import org.opendaylight.yangtools.yang.common.QName;
22 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
23 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
24 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
25 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
26 import org.xmlunit.builder.DiffBuilder;
27 import org.xmlunit.diff.DefaultNodeMatcher;
28 import org.xmlunit.diff.ElementSelectors;
29
30 public class NormalizedDataUtilTest {
31     @Test
32     public void testWriteNormalizedNode() throws Exception {
33         final var context = BindingRuntimeHelpers.createEffectiveModel(List.of(YangModuleInfoImpl.getInstance()));
34         final var result = new DOMResult(XmlUtil.newDocument());
35         NormalizedDataUtil.writeNormalizedNode(ImmutableNodes.newContainerBuilder()
36             .withNodeIdentifier(new NodeIdentifier(Sessions.QNAME))
37             .withChild(ImmutableNodes.newSystemMapBuilder()
38                 .withNodeIdentifier(new NodeIdentifier(Session.QNAME))
39                 .withChild(ImmutableNodes.newMapEntryBuilder()
40                     .withNodeIdentifier(
41                         NodeIdentifierWithPredicates.of(Session.QNAME, QName.create(Session.QNAME, "session-id"), 1L))
42                     .withChild(ImmutableNodes.leafNode(QName.create(Session.QNAME, "username"), "admin"))
43                     .build())
44                 .build())
45             .build(), result, context, Absolute.of(NetconfState.QNAME));
46
47         final var diff = DiffBuilder.compare(result.getNode())
48             .withTest("""
49                 <sessions xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
50                     <session>
51                         <session-id>1</session-id>
52                         <username>admin</username>
53                     </session>
54                 </sessions>
55                 """)
56             .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byNameAndText))
57             .ignoreWhitespace()
58             .checkForSimilar()
59             .build();
60
61         assertFalse(diff.toString(), diff.hasDifferences());
62     }
63 }