*/
package org.opendaylight.restconf.nb.rfc8040.utils.parser;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
-import java.util.LinkedHashMap;
+import com.google.common.collect.ImmutableMap;
import java.util.Map;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
+import org.opendaylight.yangtools.yang.common.ErrorTag;
+import org.opendaylight.yangtools.yang.common.ErrorType;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
/**
* Unit tests for {@link YangInstanceIdentifierSerializer}.
*/
-public class YangInstanceIdentifierSerializerTest {
+class YangInstanceIdentifierSerializerTest {
// schema context with test modules
- private static EffectiveModelContext SCHEMA_CONTEXT;
-
- @BeforeClass
- public static void beforeClass() {
- SCHEMA_CONTEXT = YangParserTestUtils.parseYangResourceDirectory("/restconf/parser/serializer");
- }
-
- @AfterClass
- public static void afterClass() {
- SCHEMA_CONTEXT = null;
- }
+ private static final EffectiveModelContext SCHEMA_CONTEXT =
+ YangParserTestUtils.parseYangResourceDirectory("/restconf/parser/serializer");
/**
* Positive test of serialization of <code>YangInstanceIdentifier</code> containing container node to
* <code>String</code>. Returned <code>String</code> is compared to have expected value.
*/
@Test
- public void serializeContainerTest() {
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
- .node(QName.create("serializer:test", "2016-06-06", "contA"))
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful",
- "serializer-test:contA", result);
+ void serializeContainerTest() {
+ assertEquals("serializer-test:contA", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.of(QName.create("serializer:test", "2016-06-06", "contA"))));
}
/**
* <code>String</code>. Returned <code>String</code> is compared to have expected value.
*/
@Test
- public void serializeContainerWithLeafTest() {
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
- .node(QName.create("serializer:test", "2016-06-06", "contA"))
- .node(QName.create("serializer:test", "2016-06-06", "leaf-A"))
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:contA/leaf-A", result);
+ void serializeContainerWithLeafTest() {
+ assertEquals("serializer-test:contA/leaf-A", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.of(
+ QName.create("serializer:test", "2016-06-06", "contA"),
+ QName.create("serializer:test", "2016-06-06", "leaf-A"))));
}
/**
* list node to <code>String</code>. Returned <code>String</code> is compared to have expected value.
*/
@Test
- public void serializeContainerWithListWithLeafListTest() {
- final QName list = QName.create("serializer:test", "2016-06-06", "list-A");
- final QName leafList = QName.create("serializer:test", "2016-06-06", "leaf-list-AA");
+ void serializeContainerWithListWithLeafListTest() {
+ final var list = QName.create("serializer:test", "2016-06-06", "list-A");
+ final var leafList = QName.create("serializer:test", "2016-06-06", "leaf-list-AA");
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
+ assertEquals("serializer-test:contA/list-A=100/leaf-list-AA=instance",
+ YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, YangInstanceIdentifier.builder()
.node(QName.create("serializer:test", "2016-06-06", "contA"))
.node(list)
.node(NodeIdentifierWithPredicates.of(list, QName.create(list, "list-key"), 100))
.node(leafList)
.node(new NodeWithValue<>(leafList, "instance"))
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful",
- "serializer-test:contA/list-A=100/leaf-list-AA=instance",
- result);
+ .build()));
}
/**
* expected value.
*/
@Test
- public void serializeListWithNoKeysTest() {
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
- .node(QName.create("serializer:test", "2016-06-06", "list-no-key"))
- .node(QName.create("serializer:test", "2016-06-06", "list-no-key"))
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:list-no-key", result);
+ void serializeListWithNoKeysTest() {
+ assertEquals("serializer-test:list-no-key", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.of(
+ QName.create("serializer:test", "2016-06-06", "list-no-key"),
+ QName.create("serializer:test", "2016-06-06", "list-no-key"))));
}
/**
* <code>String</code> is compared to have expected value.
*/
@Test
- public void serializeMapWithNoKeysTest() {
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
+ void serializeMapWithNoKeysTest() {
+ assertEquals("serializer-test:list-one-key", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.builder()
.node(QName.create("serializer:test", "2016-06-06", "list-one-key"))
.nodeWithKey(QName.create("serializer:test", "2016-06-06", "list-one-key"), Map.of())
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:list-one-key", result);
+ .build()));
}
/**
* expected value.
*/
@Test
- public void serializeMapWithOneKeyTest() {
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
+ void serializeMapWithOneKeyTest() {
+ assertEquals("serializer-test:list-one-key=value", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.builder()
.node(QName.create("serializer:test", "2016-06-06", "list-one-key"))
.nodeWithKey(QName.create("serializer:test", "2016-06-06", "list-one-key"),
- QName.create("serializer:test", "2016-06-06", "list-one-key"), "value")
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:list-one-key=value", result);
+ QName.create("serializer:test", "2016-06-06", "list-one-key"), "value")
+ .build()));
}
/**
* to have expected value.
*/
@Test
- public void serializeMapWithMultipleKeysTest() {
- final QName list = QName.create("serializer:test", "2016-06-06", "list-multiple-keys");
- final Map<QName, Object> values = new LinkedHashMap<>();
- values.put(QName.create(list, "name"), "value-1");
- values.put(QName.create(list, "number"), "2");
- values.put(QName.create(list, "enabled"), "true");
-
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
- .node(list).nodeWithKey(list, values).build();
+ void serializeMapWithMultipleKeysTest() {
+ final var list = QName.create("serializer:test", "2016-06-06", "list-multiple-keys");
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:list-multiple-keys=value-1,2,true", result);
+ assertEquals("serializer-test:list-multiple-keys=value-1,2,true",
+ YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, YangInstanceIdentifier.builder()
+ .node(list)
+ .nodeWithKey(list, ImmutableMap.of(
+ QName.create(list, "name"), "value-1",
+ QName.create(list, "number"), "2",
+ QName.create(list, "enabled"), "true"))
+ .build()));
}
/**
* expected value.
*/
@Test
- public void serializeLeafTest() {
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
- .node(QName.create("serializer:test", "2016-06-06", "leaf-0"))
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:leaf-0", result);
+ void serializeLeafTest() {
+ assertEquals("serializer-test:leaf-0", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.of(QName.create("serializer:test", "2016-06-06", "leaf-0"))));
}
/**
* expected value.
*/
@Test
- public void serializeLeafListTest() {
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
+ void serializeLeafListTest() {
+ assertEquals("serializer-test:leaf-list-0=instance", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.builder()
.node(QName.create("serializer:test", "2016-06-06", "leaf-list-0"))
.node(new NodeWithValue<>(QName.create("serializer:test", "2016-06-06", "leaf-list-0"), "instance"))
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:leaf-list-0=instance", result);
+ .build()));
}
/**
* <code>NullPointerException</code>.
*/
@Test
- public void serializeNullSchemaContextNegativeTest() {
+ void serializeNullSchemaContextNegativeTest() {
assertThrows(NullPointerException.class,
() -> YangInstanceIdentifierSerializer.create(null, YangInstanceIdentifier.of()));
}
* <code>NullPointerException</code>.
*/
@Test
- public void serializeNullDataNegativeTest() {
+ void serializeNullDataNegativeTest() {
assertThrows(NullPointerException.class,
() -> YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, null));
}
* Empty <code>String</code> is expected as a return value.
*/
@Test
- public void serializeEmptyDataTest() {
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, YangInstanceIdentifier.of());
- assertTrue("Empty identifier is expected", result.isEmpty());
+ void serializeEmptyDataTest() {
+ assertEquals("", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, YangInstanceIdentifier.of()));
}
/**
* Negative test when it is not possible to find child node of current node. Test is expected to fail with
- * <code>RestconfDocumentedException</code> and error message is compared to expected error message.
+ * {@link RestconfDocumentedException} and error message is compared to expected error message.
*/
@Test
- public void serializeChildNodeNotFoundNegativeTest() {
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
- .node(QName.create("serializer:test", "2016-06-06", "contA"))
- .node(QName.create("serializer:test", "2016-06-06", "not-existing-leaf"))
- .build();
+ void serializeChildNodeNotFoundNegativeTest() {
+ final var data = YangInstanceIdentifier.of(
+ QName.create("serializer:test", "2016-06-06", "contA"),
+ QName.create("serializer:test", "2016-06-06", "not-existing-leaf"));
- assertThrows(RestconfDocumentedException.class,
+ final var ex = assertThrows(RestconfDocumentedException.class,
() -> YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data));
+ final var errors = ex.getErrors();
+ assertEquals(1, errors.size());
+ final var error = errors.get(0);
+ assertEquals("""
+ Invalid input '/(serializer:test?revision=2016-06-06)contA/not-existing-leaf': schema for argument \
+ '(serializer:test?revision=2016-06-06)not-existing-leaf' (after 'serializer-test:contA') not found""",
+ error.getErrorMessage());
+ assertEquals(ErrorType.APPLICATION, error.getErrorType());
+ assertEquals(ErrorTag.UNKNOWN_ELEMENT, error.getErrorTag());
}
/**
* Test if URIs with percent encoded characters are all correctly serialized.
*/
@Test
- public void serializePercentEncodingTest() {
- final String value = "foo:foo bar/foo,bar/'bar'";
- final String encoded = "foo%3Afoo%20bar%2Ffoo%2Cbar%2F%27bar%27";
-
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
- .node(QName.create("serializer:test", "2016-06-06", "list-one-key"))
- .nodeWithKey(QName.create("serializer:test", "2016-06-06", "list-one-key"),
- QName.create("serializer:test", "2016-06-06", "list-one-key"), value)
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:list-one-key=" + encoded, result);
+ void serializePercentEncodingTest() {
+ assertEquals("serializer-test:list-one-key=foo%3Afoo bar%2Ffoo%2Cbar%2F%27bar%27",
+ YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.builder()
+ .node(QName.create("serializer:test", "2016-06-06", "list-one-key"))
+ .nodeWithKey(QName.create("serializer:test", "2016-06-06", "list-one-key"),
+ QName.create("serializer:test", "2016-06-06", "list-one-key"), "foo:foo bar/foo,bar/'bar'")
+ .build()));
}
/**
* Test if URIs with no percent encoded characters are correctly serialized. Input should be untouched.
*/
@Test
- public void serializeNoPercentEncodingTest() {
- final String value = "foo\"b\"bar";
-
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
+ void serializeNoPercentEncodingTest() {
+ assertEquals("serializer-test:list-one-key=foo\"b\"bar", YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT,
+ YangInstanceIdentifier.builder()
.node(QName.create("serializer:test", "2016-06-06", "list-one-key"))
.nodeWithKey(QName.create("serializer:test", "2016-06-06", "list-one-key"),
- QName.create("serializer:test", "2016-06-06", "list-one-key"), value)
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
- assertEquals("Serialization not successful", "serializer-test:list-one-key=" + value, result);
+ QName.create("serializer:test", "2016-06-06", "list-one-key"), "foo\"b\"bar")
+ .build()));
}
/**
* modules by using augmentation.
*/
@Test
- public void serializeIncludedNodesTest() {
- final QName list = QName.create("serializer:test:included", "2016-06-06", "augmented-list");
- final QName child = QName.create("serializer:test", "2016-06-06", "augmented-leaf");
+ void serializeIncludedNodesTest() {
+ final var list = QName.create("serializer:test:included", "2016-06-06", "augmented-list");
+ final var child = QName.create("serializer:test", "2016-06-06", "augmented-leaf");
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
+ assertEquals("serializer-test-included:augmented-list=100/serializer-test:augmented-leaf",
+ YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, YangInstanceIdentifier.builder()
.node(list)
.node(NodeIdentifierWithPredicates.of(list, QName.create(list, "list-key"), 100))
.node(child)
- .build();
-
- final String result = YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data);
-
- assertEquals("Serialization not successful",
- "serializer-test-included:augmented-list=100/serializer-test:augmented-leaf", result);
+ .build()));
}
/**
* parent and will not be found.
*/
@Test
- public void serializeIncludedNodesSerializationTest() {
- final QName list = QName.create("serializer:test:included", "2016-06-06", "augmented-list");
- // child should has different namespace
- final QName child = QName.create("serializer:test:included", "2016-06-06", "augmented-leaf");
+ void serializeIncludedNodesSerializationTest() {
+ final var list = QName.create("serializer:test:included", "2016-06-06", "augmented-list");
- final YangInstanceIdentifier data = YangInstanceIdentifier.builder()
+ final var data = YangInstanceIdentifier.builder()
.node(list)
.node(NodeIdentifierWithPredicates.of(list, QName.create(list, "list-key"), 100))
- .node(child)
+ // child should has different namespace
+ .node(QName.create("serializer:test:included", "2016-06-06", "augmented-leaf"))
.build();
- assertThrows(RestconfDocumentedException.class,
+ final var ex = assertThrows(RestconfDocumentedException.class,
() -> YangInstanceIdentifierSerializer.create(SCHEMA_CONTEXT, data));
+ final var errors = ex.getErrors();
+ assertEquals(1, errors.size());
+ final var error = errors.get(0);
+ assertEquals("""
+ Invalid input '/(serializer:test:included?revision=2016-06-06)augmented-list/augmented-list[{(\
+ serializer:test:included?revision=2016-06-06)list-key=100}]/augmented-leaf': schema for argument \
+ '(serializer:test:included?revision=2016-06-06)augmented-leaf' (after \
+ 'serializer-test-included:augmented-list=100') not found""", error.getErrorMessage());
+ assertEquals(ErrorType.APPLICATION, error.getErrorType());
+ assertEquals(ErrorTag.UNKNOWN_ELEMENT, error.getErrorTag());
}
}