Test coverage imporvement and code refactoring of restconf discovery node.
[ccsdk/sli/plugins.git] / restconf-client / provider / src / test / java / org / onap / ccsdk / sli / plugins / restconfdiscovery / TestRestconfDiscoveryNode.java
index af354e9..aa89d67 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.onap.ccsdk.sli.plugins.restconfdiscovery;
 
+import org.glassfish.grizzly.http.server.HttpServer;
 import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
 import org.glassfish.jersey.media.sse.SseFeature;
 import org.glassfish.jersey.server.ResourceConfig;
@@ -29,29 +30,41 @@ import org.onap.ccsdk.sli.core.sli.SvcLogicException;
 import org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode;
 import org.onap.ccsdk.sli.plugins.restconfapicall.RestconfApiCallNode;
 
+import java.io.IOException;
 import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
 
 public class TestRestconfDiscoveryNode {
 
     private static final URI CONTEXT = URI.create("http://localhost:8080/");
 
     @Test
-    public void testEstablishPersistentConnection() throws SvcLogicException,
-            InterruptedException {
+    public void sendRequest() throws SvcLogicException, InterruptedException, IOException {
         final ResourceConfig resourceConfig = new ResourceConfig(
                 SseServerMock.class, SseFeature.class);
-        GrizzlyHttpServerFactory.createHttpServer(CONTEXT, resourceConfig);
+        HttpServer server = GrizzlyHttpServerFactory.createHttpServer(CONTEXT,
+                                                           resourceConfig);
+        server.start();
+        RestconfApiCallNode restconf = mock(RestconfApiCallNode.class);
+        doNothing().when(restconf)
+                .sendRequest(any(Map.class), any(SvcLogicContext.class));
+        RestapiCallNode restApi = new RestapiCallNode();
+        doReturn(restApi).when(restconf).getRestapiCallNode();
+
         SvcLogicContext ctx = new SvcLogicContext();
         ctx.setAttribute("prop.encoding-json", "encoding-json");
         ctx.setAttribute("restapi-result.response-code", "200");
         ctx.setAttribute("restapi-result.ietf-subscribed-notifications" +
                                  ":establish-subscription.output.identifier",
-                         "100");
+                         "89");
 
         Map<String, String> p = new HashMap<>();
         p.put("sseConnectURL", "http://localhost:8080/events");
@@ -64,11 +77,15 @@ public class TestRestconfDiscoveryNode {
                 "bv5itd6m1cftldpjarnyle3sdcqq9hftc4lebz464b5ffxmlbvg9");
         p.put("restapiUrl", "https://localhost:8080/restconf/operations/" +
                 "ietf-subscribed-notifications:establish-subscription");
-        RestconfDiscoveryNode rdn = new RestconfDiscoveryNode(
-                new RestconfApiCallNode(new RestapiCallNode()));
-        rdn.establishPersistentConnection(p, ctx, "networkId");
-        Thread.sleep(2000);
+        p.put("module", "testmodule");
+        p.put("rpc", "testrpc");
+        p.put("version", "1.0");
+        p.put("mode", "sync");
+        RestconfDiscoveryNode rdn = new RestconfDiscoveryNode(restconf);
+        rdn.establishSubscription(p, ctx);
+        Thread.sleep(1000);
         rdn.deleteSubscription(p, ctx);
+        server.shutdown();
     }
 
     @Test(expected = SvcLogicException.class)
@@ -132,4 +149,27 @@ public class TestRestconfDiscoveryNode {
                               "emlqm4bbsmnar3vrtbyrzukbv5itd6m1cftldpjarnyle3sdcqq9h" +
                               "ftc4lebz464b5ffxmlbvg9"));
     }
+
+    @Test
+    public void testSubscriptionInfo() throws SvcLogicException {
+        SubscriptionInfo info = new SubscriptionInfo();
+        info.subscriberId("network-id");
+        info.subscriptionId("8");
+        info.filterUrl("/ietf-interfaces:interfaces");
+        info.yangFilePath("/opt/yang");
+        SvcLogicGraphInfo svcLogicGraphInfo = new SvcLogicGraphInfo();
+        svcLogicGraphInfo.mode("sync");
+        svcLogicGraphInfo.module("testModule");
+        svcLogicGraphInfo.rpc("testRpc");
+        svcLogicGraphInfo.version("1.0");
+        info.callBackDG(svcLogicGraphInfo);
+        assertThat(info.subscriberId(), is("network-id"));
+        assertThat(info.subscriptionId(), is("8"));
+        assertThat(info.filterUrl(), is("/ietf-interfaces:interfaces"));
+        assertThat(info.yangFilePath(), is("/opt/yang"));
+        assertThat(info.callBackDG().module(), is("testModule"));
+        assertThat(info.callBackDG().mode(), is("sync"));
+        assertThat(info.callBackDG().rpc(), is("testRpc"));
+        assertThat(info.callBackDG().version(), is("1.0"));
+    }
 }