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 b2094ca..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,39 +30,62 @@ 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");
         p.put("subscriberId", "networkId");
         p.put("responsePrefix", "restapi-result");
-        RestconfDiscoveryNode rdn = new RestconfDiscoveryNode(
-                new RestconfApiCallNode(new RestapiCallNode()));
-        rdn.establishPersistentConnection(p, ctx, "networkId");
-        Thread.sleep(2000);
+        p.put("restapiUser", "access");
+        p.put("restapiPassword", "abc@123");
+        p.put("customHttpHeaders", "X-ACCESS-TOKEN=x-ik2ps4ikvzupbx0486ft" +
+                "1ebzs7rt85futh9ho6eofy3wjsap7wqktemlqm4bbsmnar3vrtbyrzuk" +
+                "bv5itd6m1cftldpjarnyle3sdcqq9hftc4lebz464b5ffxmlbvg9");
+        p.put("restapiUrl", "https://localhost:8080/restconf/operations/" +
+                "ietf-subscribed-notifications:establish-subscription");
+        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)
@@ -111,4 +135,41 @@ public class TestRestconfDiscoveryNode {
         assertThat(rdn.getOutputIdentifier("restapi-result", ctx),
                    is("89"));
     }
+
+    @Test
+    public void testGetTokenId() {
+        String customHttpHeaders = "X-ACCESS-TOKEN=x-ik2ps4ikvzupbx0486ft1ebzs7rt85" +
+                "futh9ho6eofy3wjsap7wqktemlqm4bbsmnar3vrtbyrzukbv5itd6m1cftldpjarny" +
+                "le3sdcqq9hftc4lebz464b5ffxmlbvg9";
+        RestconfDiscoveryNode rdn = new RestconfDiscoveryNode(
+                new RestconfApiCallNode(new RestapiCallNode()));
+
+        assertThat(rdn.getTokenId(customHttpHeaders),
+                   is("x-ik2ps4ikvzupbx0486ft1ebzs7rt85futh9ho6eofy3wjsap7wqkt" +
+                              "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"));
+    }
 }