fca1543b0557d26d64ac65c8a956adb68febd528
[netconf.git] / restconf / restconf-nb-bierman02 / src / test / java / org / opendaylight / netconf / sal / restconf / impl / InstanceIdentifierCodecImplTest.java
1 /*
2  * Copyright (c) 2016 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
9 package org.opendaylight.netconf.sal.restconf.impl;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNull;
13
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
17 import org.opendaylight.netconf.sal.restconf.impl.RestCodec.InstanceIdentifierCodecImpl;
18 import org.opendaylight.restconf.common.util.IdentityValuesDTO;
19 import org.opendaylight.yangtools.concepts.Codec;
20 import org.opendaylight.yangtools.yang.common.QName;
21 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
22 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
23 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
24
25 public class InstanceIdentifierCodecImplTest {
26
27     private Codec<IdentityValuesDTO, YangInstanceIdentifier> instanceIdentifierDTO;
28     private YangInstanceIdentifier instanceIdentifierBadNamespace;
29     private YangInstanceIdentifier instanceIdentifierOKList;
30     private YangInstanceIdentifier instanceIdentifierOKLeafList;
31     private SchemaContext schemaContext;
32
33     @Before
34     public void setUp() throws Exception {
35         this.schemaContext =
36                 YangParserTestUtils.parseYangFiles(TestRestconfUtils.loadFiles("/restconf/parser/deserializer"));
37         this.instanceIdentifierDTO = new InstanceIdentifierCodecImpl(null);
38         ControllerContext.getInstance().setGlobalSchema(this.schemaContext);
39
40         final QName baseQName = QName.create("deserializer:test", "2016-06-06", "deserializer-test");
41         final QName contA = QName.create(baseQName, "contA");
42         final QName leafList = QName.create(baseQName, "leaf-list-A");
43
44         this.instanceIdentifierOKLeafList = YangInstanceIdentifier.builder()
45                 .node(contA)
46                 .node(new YangInstanceIdentifier.NodeWithValue<>(leafList, "instance"))
47                 .build();
48
49         this.instanceIdentifierOKList = YangInstanceIdentifier.builder()
50                 .node(new YangInstanceIdentifier.NodeIdentifierWithPredicates(
51                         QName.create(baseQName, "list-one-key"),
52                         QName.create(QName.create(baseQName, "list-one-key"), "name"), "value"))
53                 .build();
54
55         this.instanceIdentifierBadNamespace = YangInstanceIdentifier.builder()
56                 .nodeWithKey(QName.create("nonexistent:module", "2016-10-17", "nonexistent-1"),
57                         QName.create("nonexistent:module", "2016-10-17", "nonexistent"),
58                         "value")
59                 .build();
60     }
61
62     @Test
63     public void testSerializeDeserializeList() throws Exception {
64         final IdentityValuesDTO valuesDTO =
65                 this.instanceIdentifierDTO.serialize(this.instanceIdentifierOKList);
66
67         final YangInstanceIdentifier deserializedIdentifier =
68                 this.instanceIdentifierDTO.deserialize(valuesDTO);
69         assertEquals(this.instanceIdentifierOKList, deserializedIdentifier);
70     }
71
72     @Test
73     public void testSerializeDeserializeLeafList() throws Exception {
74         final IdentityValuesDTO valuesDTO =
75                 this.instanceIdentifierDTO.serialize(this.instanceIdentifierOKLeafList);
76
77         final YangInstanceIdentifier deserializedIdentifier =
78                 this.instanceIdentifierDTO.deserialize(valuesDTO);
79         assertEquals(this.instanceIdentifierOKLeafList, deserializedIdentifier);
80     }
81
82     @Test
83     public void testSerializeDeserializeBadModuleNamespace() throws Exception {
84         final IdentityValuesDTO valuesDTO =
85                 this.instanceIdentifierDTO.serialize(this.instanceIdentifierBadNamespace);
86         assertEquals("nonexistent-1", valuesDTO.getValuesWithNamespaces().get(0).getValue());
87         assertEquals("nonexistent:module", valuesDTO.getValuesWithNamespaces().get(0).getNamespace());
88
89         final YangInstanceIdentifier deserializedIdentifier =
90                 this.instanceIdentifierDTO.deserialize(valuesDTO);
91         assertNull(deserializedIdentifier);
92     }
93 }