2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.netconf.sal.restconf.impl;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNull;
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.yangtools.concepts.Codec;
19 import org.opendaylight.yangtools.yang.common.QName;
20 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
21 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
22 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
24 public class InstanceIdentifierCodecImplTest {
26 private Codec<IdentityValuesDTO, YangInstanceIdentifier> instanceIdentifierDTO;
27 private YangInstanceIdentifier instanceIdentifierBadNamespace;
28 private YangInstanceIdentifier instanceIdentifierOKList;
29 private YangInstanceIdentifier instanceIdentifierOKLeafList;
30 private SchemaContext schemaContext;
33 public void setUp() throws Exception {
35 YangParserTestUtils.parseYangSources(TestRestconfUtils.loadFiles("/restconf/parser/deserializer"));
36 this.instanceIdentifierDTO = new InstanceIdentifierCodecImpl(null);
37 ControllerContext.getInstance().setGlobalSchema(this.schemaContext);
39 final QName baseQName = QName.create("deserializer:test", "2016-06-06", "deserializer-test");
40 final QName contA = QName.create(baseQName, "contA");
41 final QName leafList = QName.create(baseQName, "leaf-list-A");
43 this.instanceIdentifierOKLeafList = YangInstanceIdentifier.builder()
45 .node(new YangInstanceIdentifier.NodeWithValue<>(leafList, "instance"))
48 this.instanceIdentifierOKList = YangInstanceIdentifier.builder()
49 .node(new YangInstanceIdentifier.NodeIdentifierWithPredicates(
50 QName.create(baseQName, "list-one-key"),
51 QName.create(QName.create(baseQName, "list-one-key"), "name"), "value"))
54 this.instanceIdentifierBadNamespace = YangInstanceIdentifier.builder()
55 .nodeWithKey(QName.create("nonexistent:module", "2016-10-17", "nonexistent-1"),
56 QName.create("nonexistent:module", "2016-10-17", "nonexistent"),
62 public void testSerializeDeserializeList() throws Exception {
63 final IdentityValuesDTO valuesDTO =
64 this.instanceIdentifierDTO.serialize(this.instanceIdentifierOKList);
66 final YangInstanceIdentifier deserializedIdentifier =
67 this.instanceIdentifierDTO.deserialize(valuesDTO);
68 assertEquals(this.instanceIdentifierOKList, deserializedIdentifier);
72 public void testSerializeDeserializeLeafList() throws Exception {
73 final IdentityValuesDTO valuesDTO =
74 this.instanceIdentifierDTO.serialize(this.instanceIdentifierOKLeafList);
76 final YangInstanceIdentifier deserializedIdentifier =
77 this.instanceIdentifierDTO.deserialize(valuesDTO);
78 assertEquals(this.instanceIdentifierOKLeafList, deserializedIdentifier);
82 public void testSerializeDeserializeBadModuleNamespace() throws Exception {
83 final IdentityValuesDTO valuesDTO =
84 this.instanceIdentifierDTO.serialize(this.instanceIdentifierBadNamespace);
85 assertEquals("nonexistent-1", valuesDTO.getValuesWithNamespaces().get(0).getValue());
86 assertEquals("nonexistent:module", valuesDTO.getValuesWithNamespaces().get(0).getNamespace());
88 final YangInstanceIdentifier deserializedIdentifier =
89 this.instanceIdentifierDTO.deserialize(valuesDTO);
90 assertNull(deserializedIdentifier);