X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Fsal-rest-docgen%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frest%2Fdoc%2Fimpl%2FMountPointSwaggerTest.java;h=56d3e910dc4d05d8691c0e35efc120eaf39a295c;hb=4e117e0cce9f9ac1b53ace1d9659412dddc1afa2;hp=881f9e95657e0ae3df0fc9a0a80a813b62c7334c;hpb=9173dd3c7d8283cc53edeef754250d0d6fbc91e4;p=netconf.git diff --git a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java index 881f9e9565..56d3e910dc 100644 --- a/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java +++ b/restconf/sal-rest-docgen/src/test/java/org/opendaylight/controller/sal/rest/doc/impl/MountPointSwaggerTest.java @@ -12,135 +12,100 @@ import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.google.common.base.Optional; -import java.net.URISyntaxException; -import java.util.Arrays; -import java.util.HashSet; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.TreeSet; import javax.ws.rs.core.UriInfo; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.sal.core.api.model.SchemaService; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMSchemaService; +import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion; +import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType; +import org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorDraft02; import org.opendaylight.netconf.sal.rest.doc.mountpoints.MountPointSwagger; -import org.opendaylight.netconf.sal.rest.doc.swagger.Api; -import org.opendaylight.netconf.sal.rest.doc.swagger.ApiDeclaration; -import org.opendaylight.netconf.sal.rest.doc.swagger.Operation; -import org.opendaylight.netconf.sal.rest.doc.swagger.Resource; -import org.opendaylight.netconf.sal.rest.doc.swagger.ResourceList; +import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; - -public class MountPointSwaggerTest { +public final class MountPointSwaggerTest extends AbstractApiDocTest { private static final String HTTP_URL = "http://localhost/path"; - private static final YangInstanceIdentifier instanceId = YangInstanceIdentifier.builder() - .node(QName.create("nodes")) - .node(QName.create("node")) - .nodeWithKey(QName.create("node"), QName.create("id"), "123").build(); - private static final String INSTANCE_URL = "nodes/node/123/"; + private static final YangInstanceIdentifier INSTANCE_ID = YangInstanceIdentifier.builder() + .node(QName.create("", "nodes")) + .node(QName.create("", "node")) + .nodeWithKey(QName.create("", "node"), QName.create("", "id"), "123").build(); + private static final String INSTANCE_URL = "/nodes/node/123/"; + private MountPointSwagger swagger; - private DocGenTestHelper helper; - private SchemaContext schemaContext; @Before - public void setUp() throws Exception { - swagger = new MountPointSwagger(); - helper = new DocGenTestHelper(); - helper.setUp(); - schemaContext = new YangParserImpl().resolveSchemaContext(new HashSet(helper.getModules().values())); - } + public void before() { + // We are sharing the global schema service and the mount schema service + // in our test. + // OK for testing - real thing would have separate instances. + final DOMMountPoint mountPoint = mock(DOMMountPoint.class); + when(mountPoint.getService(DOMSchemaService.class)).thenReturn(Optional.of(SCHEMA_SERVICE)); - @Test() - public void testGetResourceListBadIid() throws Exception { - UriInfo mockInfo = helper.createMockUriInfo(HTTP_URL); + final DOMMountPointService service = mock(DOMMountPointService.class); + when(service.getMountPoint(INSTANCE_ID)).thenReturn(Optional.of(mountPoint)); - assertEquals(null, swagger.getResourceList(mockInfo, 1L)); + swagger = new MountPointSwaggerGeneratorDraft02(SCHEMA_SERVICE, service).getMountPointSwagger(); } @Test() - public void getInstanceIdentifiers() throws Exception { - UriInfo mockInfo = setUpSwaggerForDocGeneration(); - + public void getInstanceIdentifiers() { assertEquals(0, swagger.getInstanceIdentifiers().size()); - swagger.onMountPointCreated(instanceId); // add this ID into the list of - // mount points + swagger.onMountPointCreated(INSTANCE_ID); // add this ID into the list of mount points assertEquals(1, swagger.getInstanceIdentifiers().size()); assertEquals((Long) 1L, swagger.getInstanceIdentifiers().entrySet().iterator().next() .getValue()); assertEquals(INSTANCE_URL, swagger.getInstanceIdentifiers().entrySet().iterator().next() .getKey()); - swagger.onMountPointRemoved(instanceId); // remove ID from list of mount - // points + swagger.onMountPointRemoved(INSTANCE_ID); // remove ID from list of mount points assertEquals(0, swagger.getInstanceIdentifiers().size()); } - @Test - public void testGetResourceListGoodId() throws Exception { - UriInfo mockInfo = setUpSwaggerForDocGeneration(); - swagger.onMountPointCreated(instanceId); // add this ID into the list of - // mount points - ResourceList resourceList = swagger.getResourceList(mockInfo, 1L); - - Resource dataStoreResource = null; - for (Resource r : resourceList.getApis()) { - if (r.getPath().endsWith("/Datastores(-)")) { - dataStoreResource = r; - } - } - assertNotNull("Failed to find data store resource", dataStoreResource); - } - @Test public void testGetDataStoreApi() throws Exception { - UriInfo mockInfo = setUpSwaggerForDocGeneration(); - swagger.onMountPointCreated(instanceId); // add this ID into the list of - // mount points - ApiDeclaration mountPointApi = swagger.getMountPointApi(mockInfo, 1L, "Datastores", "-"); + final UriInfo mockInfo = DocGenTestHelper.createMockUriInfo(HTTP_URL); + swagger.onMountPointCreated(INSTANCE_ID); // add this ID into the list of mount points + + final SwaggerObject mountPointApi = (SwaggerObject) swagger.getMountPointApi(mockInfo, 1L, "Datastores", + "-", URIType.DRAFT02, OAversion.V2_0); assertNotNull("failed to find Datastore API", mountPointApi); - List apis = mountPointApi.getApis(); - assertEquals("Unexpected api list size", 3, apis.size()); - - Set actualApis = new TreeSet<>(); - for (Api api : apis) { - actualApis.add(api.getPath()); - List operations = api.getOperations(); - assertEquals("unexpected operation size on " + api.getPath(), 1, operations.size()); - assertEquals("unexpected operation method " + api.getPath(), "GET", operations.get(0) - .getMethod()); - assertNotNull("expected non-null desc on " + api.getPath(), operations.get(0) - .getNotes()); - } - Set expectedApis = new TreeSet<>(Arrays.asList(new String[] { - "/config/" + INSTANCE_URL + "yang-ext:mount/", - "/operational/" + INSTANCE_URL + "yang-ext:mount/", - "/operations/" + INSTANCE_URL + "yang-ext:mount/", })); - assertEquals(expectedApis, actualApis); - } - protected UriInfo setUpSwaggerForDocGeneration() throws URISyntaxException { - UriInfo mockInfo = helper.createMockUriInfo(HTTP_URL); - // We are sharing the global schema service and the mount schema service - // in our test. - // OK for testing - real thing would have seperate instances. - SchemaContext context = helper.createMockSchemaContext(); - SchemaService schemaService = helper.createMockSchemaService(context); + final ObjectNode pathsObject = mountPointApi.getPaths(); + assertNotNull(pathsObject); - DOMMountPoint mountPoint = mock(DOMMountPoint.class); - when(mountPoint.getSchemaContext()).thenReturn(context); + assertEquals("Unexpected api list size", 3, pathsObject.size()); - DOMMountPointService service = mock(DOMMountPointService.class); - when(service.getMountPoint(instanceId)).thenReturn(Optional.of(mountPoint)); - swagger.setMountService(service); - swagger.setGlobalSchema(schemaService); + final Set actualUrls = new TreeSet<>(); - return mockInfo; - } + final Iterator> fields = pathsObject.fields(); + while (fields.hasNext()) { + final Map.Entry field = fields.next(); + final String path = field.getKey(); + final JsonNode operations = field.getValue(); + actualUrls.add(field.getKey()); + assertEquals("unexpected operations size on " + path, 1, operations.size()); + final JsonNode getOperation = operations.get("get"); + + assertNotNull("unexpected operation method on " + path, getOperation); + + assertNotNull("expected non-null desc on " + path, getOperation.get("description")); + } + + final Set expectedUrls = new TreeSet<>(List.of( + "/restconf/config" + INSTANCE_URL + "yang-ext:mount", + "/restconf/operational" + INSTANCE_URL + "yang-ext:mount", + "/restconf/operations" + INSTANCE_URL + "yang-ext:mount")); + assertEquals(expectedUrls, actualUrls); + } }