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.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;
25 public class InstanceIdentifierCodecImplTest {
27 private Codec<IdentityValuesDTO, YangInstanceIdentifier> instanceIdentifierDTO;
28 private YangInstanceIdentifier instanceIdentifierBadNamespace;
29 private YangInstanceIdentifier instanceIdentifierOKList;
30 private YangInstanceIdentifier instanceIdentifierOKLeafList;
31 private SchemaContext schemaContext;
34 public void setUp() throws Exception {
36 YangParserTestUtils.parseYangFiles(TestRestconfUtils.loadFiles("/restconf/parser/deserializer"));
37 this.instanceIdentifierDTO = new InstanceIdentifierCodecImpl(null);
38 ControllerContext.getInstance().setGlobalSchema(this.schemaContext);
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");
44 this.instanceIdentifierOKLeafList = YangInstanceIdentifier.builder()
46 .node(new YangInstanceIdentifier.NodeWithValue<>(leafList, "instance"))
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"))
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"),
63 public void testSerializeDeserializeList() throws Exception {
64 final IdentityValuesDTO valuesDTO =
65 this.instanceIdentifierDTO.serialize(this.instanceIdentifierOKList);
67 final YangInstanceIdentifier deserializedIdentifier =
68 this.instanceIdentifierDTO.deserialize(valuesDTO);
69 assertEquals(this.instanceIdentifierOKList, deserializedIdentifier);
73 public void testSerializeDeserializeLeafList() throws Exception {
74 final IdentityValuesDTO valuesDTO =
75 this.instanceIdentifierDTO.serialize(this.instanceIdentifierOKLeafList);
77 final YangInstanceIdentifier deserializedIdentifier =
78 this.instanceIdentifierDTO.deserialize(valuesDTO);
79 assertEquals(this.instanceIdentifierOKLeafList, deserializedIdentifier);
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());
89 final YangInstanceIdentifier deserializedIdentifier =
90 this.instanceIdentifierDTO.deserialize(valuesDTO);
91 assertNull(deserializedIdentifier);