/* * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.restconf.parser; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; /** * Unit tests for {@link IdentifierCodec} mostly according to examples from draft-ietf-netconf-restconf-13 */ public class IdentifierCodecTest { private static final String URI_WITH_LIST_AND_LEAF = "list-test:top/list1=%2C%27" + '"' + "%3A" + '"' + "%20%2F,,foo/list2=a,b/result"; private static final String URI_WITH_LEAF_LIST = "list-test:top/Y=x%3Ay"; private static final String URI_WITH_INT_VAL_LEAF_LIST = "list-test:top/Y=4"; private SchemaContext schemaContext; @Before public void init() throws Exception { this.schemaContext = TestRestconfUtils.loadSchemaContext("/restconf/parser"); } /** * Positive test of deserialization URI String to YangInstanceIdentifier and * serialization of YangInstanceIdentifier to String/code> when original String * URI contains list identifier and leaf identifier. */ @Test public void codecListAndLeafTest() { final YangInstanceIdentifier dataYangII = IdentifierCodec.deserialize( this.URI_WITH_LIST_AND_LEAF, this.schemaContext); final String serializedDataYangII = IdentifierCodec.serialize(dataYangII, this.schemaContext); assertEquals("Failed codec deserialization and serialization test", this.URI_WITH_LIST_AND_LEAF, serializedDataYangII); } /** * Positive test of deserialization URI String to YangInstanceIdentifier and * serialization of YangInstanceIdentifier to String/code> when original String * URI contains leaf list identifier. */ @Test public void codecLeafListTest() { final YangInstanceIdentifier dataYangII = IdentifierCodec.deserialize( this.URI_WITH_INT_VAL_LEAF_LIST, this.schemaContext); final String serializedDataYangII = IdentifierCodec.serialize(dataYangII, this.schemaContext); assertEquals("Failed codec deserialization and serialization test", this.URI_WITH_INT_VAL_LEAF_LIST, serializedDataYangII); } /** * Positive test of deserialization URI String to YangInstanceIdentifier when * String URI is null. YangInstanceIdentifier.EMPTY is * expected to be returned. */ @Test public void codecDeserializeNullTest () { final YangInstanceIdentifier dataYangII = IdentifierCodec.deserialize(null, this.schemaContext); assertEquals("Failed codec deserialization test", YangInstanceIdentifier.EMPTY, dataYangII); } /** * Positive test of serialization YangInstanceIdentifier.EMPTY. Empty String is * expected to be returned. */ @Test public void codecSerializeEmptyTest () { final String serialized = IdentifierCodec.serialize(YangInstanceIdentifier.EMPTY, this.schemaContext); assertTrue("Failed codec serialization test", serialized.isEmpty()); } /** * Positive test of serialization YangInstanceIdentifier.EMPTY and deserialization of result back to * YangInstanceIdentifier.EMPTY. */ @Test public void codecDeserializeAndSerializeEmptyTest() { final String serialized = IdentifierCodec.serialize(YangInstanceIdentifier.EMPTY, this.schemaContext); assertEquals("Failed codec serialization and deserialization test", YangInstanceIdentifier.EMPTY, IdentifierCodec.deserialize(serialized, this.schemaContext)); } }