Test coverage imporvement and code refactoring of restconf discovery node. 09/86009/1
authorVidyashree Rama <vidyashree.rama@huawei.com>
Tue, 23 Apr 2019 03:59:36 +0000 (09:29 +0530)
committerVidyashree Rama <vidyashree.rama@huawei.com>
Tue, 23 Apr 2019 03:59:36 +0000 (09:29 +0530)
Test coverage imporvement and code refactoring of restconf discovery node.

Issue-ID: CCSDK-1236

Change-Id: Ic44899d71b92be3d7b88be3abb0feb311e6ad8c0
Signed-off-by: Vidyashree Rama <vidyashree.rama@huawei.com>
restconf-client/provider/src/main/java/org/onap/ccsdk/sli/plugins/restconfdiscovery/RestconfDiscoveryNode.java
restconf-client/provider/src/test/java/org/onap/ccsdk/sli/plugins/restconfdiscovery/TestRestconfDiscoveryNode.java

index 5c7d695..cf69d7a 100644 (file)
@@ -141,7 +141,7 @@ public class RestconfDiscoveryNode implements SvcLogicDiscoveryPlugin {
             WebTarget target = null;
             try {
                 RestapiCallNode restapi = restconfApiCallNode.getRestapiCallNode();
-                p = restapi.getParameters(paramMap, new Parameters());
+                p = RestapiCallNode.getParameters(paramMap, new Parameters());
                 Client client =  ignoreSslClient().register(SseFeature.class);
                 target = restapi.addAuthType(client, p).target(url);
             } catch (SvcLogicException e) {
@@ -166,37 +166,37 @@ public class RestconfDiscoveryNode implements SvcLogicDiscoveryPlugin {
             eventSource.close();
             log.info("Closed connection to SSE source");
         }
-    }
-
-    private Client ignoreSslClient() {
-        SSLContext sslcontext = null;
 
-        try {
-            sslcontext = SSLContext.getInstance("TLS");
-            sslcontext.init(null, new TrustManager[]{new X509TrustManager() {
-                @Override
-                public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
-                }
+        private Client ignoreSslClient() {
+            SSLContext sslcontext = null;
 
-                @Override
-                public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
-                }
+            try {
+                sslcontext = SSLContext.getInstance("TLS");
+                sslcontext.init(null, new TrustManager[]{new X509TrustManager() {
+                    @Override
+                    public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
+                    }
+
+                    @Override
+                    public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
+                    }
+
+                    @Override
+                    public X509Certificate[] getAcceptedIssuers() {
+                        return new X509Certificate[0];
+                    }
+                } }, new java.security.SecureRandom());
+            } catch (NoSuchAlgorithmException | KeyManagementException e) {
+                throw new IllegalStateException(e);
+            }
 
-                @Override
-                public X509Certificate[] getAcceptedIssuers() {
-                    return new X509Certificate[0];
-                }
-            } }, new java.security.SecureRandom());
-        } catch (NoSuchAlgorithmException | KeyManagementException e) {
-            throw new IllegalStateException(e);
+            return ClientBuilder.newBuilder().sslContext(sslcontext).hostnameVerifier((s1, s2) -> true).build();
         }
-
-        return ClientBuilder.newBuilder().sslContext(sslcontext).hostnameVerifier((s1, s2) -> true).build();
     }
 
     protected String getTokenId(String customHttpHeaders) {
         if (customHttpHeaders.contains("=")) {
-            String s[] = customHttpHeaders.split("=");
+            String[] s = customHttpHeaders.split("=");
             return s[1];
         }
         return customHttpHeaders;
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"));
+    }
 }