import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.when;
+import java.text.ParseException;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
+import org.opendaylight.restconf.nb.rfc8040.FieldsParam;
import org.opendaylight.restconf.nb.rfc8040.TestRestconfUtils;
import org.opendaylight.yangtools.yang.common.ErrorTag;
import org.opendaylight.yangtools.yang.common.ErrorType;
*/
@Test
public void parseFieldsParameterSimplePathTest() {
- final String input = "library";
- final List<Set<QName>> parsedFields = ParserFieldsParameter.parseFieldsParameter(identifierJukebox, input);
+ final List<Set<QName>> parsedFields = assertFieldsParameter(identifierJukebox, "library");
assertNotNull(parsedFields);
assertEquals(1, parsedFields.size());
*/
@Test
public void parseFieldsParameterDoublePathTest() {
- final String input = "library;player";
- final List<Set<QName>> parsedFields = ParserFieldsParameter.parseFieldsParameter(identifierJukebox, input);
+ final List<Set<QName>> parsedFields = assertFieldsParameter(identifierJukebox, "library;player");
assertNotNull(parsedFields);
assertEquals(1, parsedFields.size());
*/
@Test
public void parseFieldsParameterSubPathTest() {
- final String input = "library/album/name";
- final List<Set<QName>> parsedFields = ParserFieldsParameter.parseFieldsParameter(identifierJukebox, input);
+ final List<Set<QName>> parsedFields = assertFieldsParameter(identifierJukebox, "library/album/name");
assertNotNull(parsedFields);
assertEquals(3, parsedFields.size());
*/
@Test
public void parseFieldsParameterChildrenPathTest() {
- final String input = "library(album(name))";
- final List<Set<QName>> parsedFields = ParserFieldsParameter.parseFieldsParameter(identifierJukebox, input);
+ final List<Set<QName>> parsedFields = assertFieldsParameter(identifierJukebox, "library(album(name))");
assertNotNull(parsedFields);
assertEquals(3, parsedFields.size());
*/
@Test
public void parseFieldsParameterNamespaceTest() {
- final String input = "augmented-jukebox:augmented-library";
- final List<Set<QName>> parsedFields = ParserFieldsParameter.parseFieldsParameter(identifierJukebox, input);
+ final List<Set<QName>> parsedFields = assertFieldsParameter(identifierJukebox,
+ "augmented-jukebox:augmented-library");
assertNotNull(parsedFields);
assertEquals(1, parsedFields.size());
*/
@Test
public void parseFieldsParameterWithMultipleChildrenTest1() {
- final String input = "services(type-of-service;instance/instance-name;instance/provider)";
- final List<Set<QName>> parsedFields = ParserFieldsParameter.parseFieldsParameter(identifierTestServices, input);
+ final List<Set<QName>> parsedFields = assertFieldsParameter(identifierTestServices,
+ "services(type-of-service;instance/instance-name;instance/provider)");
assertNotNull(parsedFields);
assertEquals(parsedFields.size(), 3);
*/
@Test
public void parseFieldsParameterWithMultipleChildrenTest2() {
- final String input = "services(type-of-service;instance(instance-name;provider))";
- final List<Set<QName>> parsedFields = ParserFieldsParameter.parseFieldsParameter(identifierTestServices, input);
+ final List<Set<QName>> parsedFields = assertFieldsParameter(identifierTestServices,
+ "services(type-of-service;instance(instance-name;provider))");
assertNotNull(parsedFields);
assertEquals(parsedFields.size(), 3);
*/
@Test
public void parseFieldsParameterWithMultipleChildrenTest3() {
- final String input = "services(instance/instance-name;type-of-service;next-data/next-service)";
- final List<Set<QName>> parsedFields = ParserFieldsParameter.parseFieldsParameter(identifierTestServices, input);
+ final List<Set<QName>> parsedFields = assertFieldsParameter(identifierTestServices,
+ "services(instance/instance-name;type-of-service;next-data/next-service)");
assertNotNull(parsedFields);
assertEquals(parsedFields.size(), 3);
List.of(INSTANCE_NAME_Q_NAME, NEXT_SERVICE_Q_NAME)));
}
- /**
- * Test parse fields parameter containing not expected character.
- */
- @Test
- public void parseFieldsParameterNotExpectedCharacterNegativeTest() {
- final RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
- () -> ParserFieldsParameter.parseFieldsParameter(identifierJukebox, "*"));
- // Bad request
- assertEquals("Error type is not correct", ErrorType.PROTOCOL, ex.getErrors().get(0).getErrorType());
- assertEquals("Error tag is not correct", ErrorTag.INVALID_VALUE, ex.getErrors().get(0).getErrorTag());
- }
-
- /**
- * Test parse fields parameter with missing closing parenthesis.
- */
- @Test
- public void parseFieldsParameterMissingParenthesisNegativeTest() {
- final String input = "library(";
-
- final RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
- () -> ParserFieldsParameter.parseFieldsParameter(identifierJukebox, input));
- // Bad request
- assertEquals("Error type is not correct", ErrorType.PROTOCOL, ex.getErrors().get(0).getErrorType());
- assertEquals("Error tag is not correct", ErrorTag.INVALID_VALUE, ex.getErrors().get(0).getErrorTag());
- }
-
/**
* Test parse fields parameter when not existing child node selected.
*/
@Test
- public void parseFieldsParameterMissingChildNodeNegativeTest() {
- final String input = "library(not-existing)";
-
- final RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
- () -> ParserFieldsParameter.parseFieldsParameter(identifierJukebox, input));
- // Bad request
- assertEquals("Error type is not correct", ErrorType.PROTOCOL, ex.getErrors().get(0).getErrorType());
- assertEquals("Error tag is not correct", ErrorTag.INVALID_VALUE, ex.getErrors().get(0).getErrorTag());
- }
-
- /**
- * Test parse fields parameter with unexpected character after parenthesis.
- */
- @Test
- public void parseFieldsParameterAfterParenthesisNegativeTest() {
- final String input = "library(album);";
+ public void parseFieldsParameterMissingChildNodeNegativeTest() throws ParseException {
+ final FieldsParam input = FieldsParam.parse("library(not-existing)");
final RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
() -> ParserFieldsParameter.parseFieldsParameter(identifierJukebox, input));
assertEquals("Error tag is not correct", ErrorTag.INVALID_VALUE, ex.getErrors().get(0).getErrorTag());
}
- /**
- * Test parse fields parameter with missing semicolon after parenthesis.
- */
- @Test
- public void parseFieldsParameterMissingSemicolonNegativeTest() {
- final String input = "library(album)player";
-
- final RestconfDocumentedException ex = assertThrows(RestconfDocumentedException.class,
- () -> ParserFieldsParameter.parseFieldsParameter(this.identifierJukebox, input));
- // Bad request
- assertEquals("Error type is not correct", ErrorType.PROTOCOL, ex.getErrors().get(0).getErrorType());
- assertEquals("Error tag is not correct", ErrorTag.INVALID_VALUE, ex.getErrors().get(0).getErrorTag());
- }
-
@Test
public void parseTopLevelContainerToPathTest() {
- final String input = "library";
- final List<YangInstanceIdentifier> parsedFields = ParserFieldsParameter.parseFieldsPaths(
- identifierJukebox, input);
+ final List<YangInstanceIdentifier> parsedFields = assertFieldsPaths(identifierJukebox, "library");
assertNotNull(parsedFields);
assertEquals(1, parsedFields.size());
@Test
public void parseTwoTopLevelContainersToPathsTest() {
final String input = "library;player";
- final List<YangInstanceIdentifier> parsedFields = ParserFieldsParameter.parseFieldsPaths(
- identifierJukebox, input);
+ final List<YangInstanceIdentifier> parsedFields = assertFieldsPaths(identifierJukebox, input);
assertNotNull(parsedFields);
assertEquals(2, parsedFields.size());
@Test
public void parseNestedLeafToPathTest() {
- final String input = "library/album/name";
- final List<YangInstanceIdentifier> parsedFields = ParserFieldsParameter.parseFieldsPaths(
- identifierJukebox, input);
+ final List<YangInstanceIdentifier> parsedFields = assertFieldsPaths(identifierJukebox, "library/album/name");
assertEquals(1, parsedFields.size());
final List<PathArgument> pathArguments = parsedFields.get(0).getPathArguments();
@Test
public void parseAugmentedLeafToPathTest() {
- final String input = "player/augmented-jukebox:speed";
- final List<YangInstanceIdentifier> parsedFields = ParserFieldsParameter.parseFieldsPaths(
- identifierJukebox, input);
+ final List<YangInstanceIdentifier> parsedFields = assertFieldsPaths(identifierJukebox,
+ "player/augmented-jukebox:speed");
assertEquals(1, parsedFields.size());
final List<PathArgument> pathArguments = parsedFields.get(0).getPathArguments();
@Test
public void parseMultipleFieldsOnDifferentLevelsToPathsTest() {
- final String input = "services(type-of-service;instance/instance-name;instance/provider)";
- final List<YangInstanceIdentifier> parsedFields = ParserFieldsParameter.parseFieldsPaths(
- identifierTestServices, input);
+ final List<YangInstanceIdentifier> parsedFields = assertFieldsPaths(identifierTestServices,
+ "services(type-of-service;instance/instance-name;instance/provider)");
assertEquals(3, parsedFields.size());
@Test
public void parseListFieldUnderListToPathTest() {
- final String input = "services/instance";
- final List<YangInstanceIdentifier> parsedFields = ParserFieldsParameter.parseFieldsPaths(
- identifierTestServices, input);
+ final List<YangInstanceIdentifier> parsedFields = assertFieldsPaths(identifierTestServices,
+ "services/instance");
assertEquals(1, parsedFields.size());
final List<PathArgument> pathArguments = parsedFields.get(0).getPathArguments();
@Test
public void parseLeafListFieldToPathTest() {
- final String input = "protocols";
- final List<YangInstanceIdentifier> parsedFields = ParserFieldsParameter.parseFieldsPaths(
- identifierTestServices, input);
+ final List<YangInstanceIdentifier> parsedFields = assertFieldsPaths(identifierTestServices, "protocols");
assertEquals(1, parsedFields.size());
final List<PathArgument> pathArguments = parsedFields.get(0).getPathArguments();
.filter(path -> lastPathArg.equals(path.getLastPathArgument().getNodeType()))
.findAny();
}
+
+ private static List<Set<QName>> assertFieldsParameter(final InstanceIdentifierContext<?> identifier,
+ final String input) {
+ return ParserFieldsParameter.parseFieldsParameter(identifier, assertFields(input));
+ }
+
+ private static List<YangInstanceIdentifier> assertFieldsPaths(final InstanceIdentifierContext<?> identifier,
+ final String input) {
+ return ParserFieldsParameter.parseFieldsPaths(identifier, assertFields(input));
+ }
+
+ private static FieldsParam assertFields(final String input) {
+ try {
+ return FieldsParam.parse(input);
+ } catch (ParseException e) {
+ throw new AssertionError(e);
+ }
+ }
}
\ No newline at end of file