package org.onap.ccsdk.sli.plugins.restconfdiscovery;
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-
+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;
import org.junit.Test;
import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
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" +
- ":output.identifier", "100");
+ ":establish-subscription.output.identifier",
+ "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();
- 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)
throws SvcLogicException{
SvcLogicContext ctx = new SvcLogicContext();
Map<String, String> p = new HashMap<>();
- RestconfDiscoveryNode rdn = new RestconfDiscoveryNode();
+ RestconfDiscoveryNode rdn = new RestconfDiscoveryNode(
+ new RestconfApiCallNode(new RestapiCallNode()));
rdn.establishSubscription(p, ctx);
}
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute("restapi-result.response-code", "200");
ctx.setAttribute("response-code", "404");
- RestconfDiscoveryNode rdn = new RestconfDiscoveryNode();
+ RestconfDiscoveryNode rdn = new RestconfDiscoveryNode(
+ new RestconfApiCallNode(new RestapiCallNode()));
assertThat(rdn.getResponseCode("restapi-result", ctx),
is("200"));
assertThat(rdn.getResponseCode(null, ctx),
public void testOutputIdentifier() {
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute("restapi-result.ietf-subscribed-notifications:" +
- "output.identifier", "89");
- ctx.setAttribute("ietf-subscribed-notifications:output.identifier",
+ "establish-subscription.output.identifier",
"89");
- RestconfDiscoveryNode rdn = new RestconfDiscoveryNode();
+ ctx.setAttribute("ietf-subscribed-notifications:establish-subscripti" +
+ "on.output.identifier", "89");
+ RestconfDiscoveryNode rdn = new RestconfDiscoveryNode(
+ new RestconfApiCallNode(new RestapiCallNode()));
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"));
+ }
}