1 package org.onap.sdnc.northbound;
 
   3 import static org.junit.Assert.assertEquals;
 
   4 import static org.onap.sdnc.northbound.GenericResourceApiProvider.APP_NAME;
 
   5 import static org.onap.sdnc.northbound.GenericResourceApiProvider.NO_SERVICE_LOGIC_ACTIVE;
 
   6 import static org.onap.sdnc.northbound.GenericResourceApiProvider.NULL_OR_EMPTY_ERROR_PARAM;
 
   7 import static org.onap.sdnc.northbound.util.MDSALUtil.build;
 
   8 import static org.onap.sdnc.northbound.util.MDSALUtil.exec;
 
   9 import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
 
  10 import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
 
  11 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceInformationBuilder;
 
  12 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceResponseInformation;
 
  13 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnResponseInformation;
 
  14 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnTopologyOperationInput;
 
  15 import static org.onap.sdnc.northbound.util.MDSALUtil.tunnelxconnTopologyOperationOutput;
 
  17 import org.junit.Before;
 
  18 import org.junit.Test;
 
  19 import org.junit.runner.RunWith;
 
  20 import org.mockito.runners.MockitoJUnitRunner;
 
  21 import org.onap.sdnc.northbound.util.PropBuilder;
 
  22 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationInput;
 
  23 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.TunnelxconnTopologyOperationOutput;
 
  24 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
 
  25 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction;
 
  26 import org.opendaylight.yangtools.yang.common.RpcResult;
 
  28 @RunWith(MockitoJUnitRunner.class)
 
  29 public class TunnelxconnTopologyOperationRPCTest extends GenericResourceApiProviderTest {
 
  32     private static final String SVC_OPERATION = "tunnelxconn-topology-operation";
 
  36     public void setUp() throws Exception {
 
  38         svcClient.setScvOperation(SVC_OPERATION);
 
  42     public void should_fail_when_service_instance_id_not_present() throws Exception {
 
  44         TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput());
 
  46         TunnelxconnTopologyOperationOutput output =
 
  47             exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
 
  49         assertEquals("404", output.getResponseCode());
 
  50         assertEquals(NULL_OR_EMPTY_ERROR_PARAM, output.getResponseMessage());
 
  51         assertEquals("Y", output.getAckFinalIndicator());
 
  55     public void should_fail_when_client_execution_failed() throws Exception {
 
  57         svcClient.mockHasGraph(true);
 
  58         svcClient.mockExecuteWoServiceData(new RuntimeException("test exception"));
 
  60         TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
 
  61             .setSdncRequestHeader(build(sdncRequestHeader()
 
  62                 .setSvcRequestId("test-svc-request-id")
 
  63                 .setSvcAction(SvcAction.Assign)
 
  65             .setServiceInformation(build(serviceInformationBuilder()
 
  66                 .setServiceInstanceId("test-service-instance-id")
 
  70         TunnelxconnTopologyOperationOutput output =
 
  71             exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
 
  73         assertEquals("500", output.getResponseCode());
 
  74         assertEquals("test exception", output.getResponseMessage());
 
  75         assertEquals("Y", output.getAckFinalIndicator());
 
  79     public void should_fail_when_client_has_no_graph() throws Exception {
 
  81         svcClient.mockHasGraph(false);
 
  83         TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
 
  84             .setSdncRequestHeader(build(sdncRequestHeader()
 
  85                 .setSvcRequestId("test-svc-request-id")
 
  86                 .setSvcAction(SvcAction.Assign)
 
  88             .setServiceInformation(build(serviceInformationBuilder()
 
  89                 .setServiceInstanceId("test-service-instance-id")
 
  93         TunnelxconnTopologyOperationOutput output =
 
  94             exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
 
  96         assertEquals("503", output.getResponseCode());
 
  97         assertEquals(NO_SERVICE_LOGIC_ACTIVE + APP_NAME + ": '" + SVC_OPERATION + "'", output.getResponseMessage());
 
  98         assertEquals("Y", output.getAckFinalIndicator());
 
 102     public void should_success_when_no_errors_encountered() throws Exception {
 
 104         svcClient.mockHasGraph(true);
 
 105         PropBuilder svcResultProp = svcClient.createExecuteOKResult();
 
 106         svcResultProp.set("security-zone-object-path", "securityZoneObjectPath: XYZ");
 
 107         svcClient.mockExecuteWoServiceData(svcResultProp);
 
 109         TunnelxconnTopologyOperationInput input = build(tunnelxconnTopologyOperationInput()
 
 110             .setRequestInformation(build(requestInformation()
 
 111                 .setRequestId("test-request-id")
 
 112                 .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
 
 114             .setServiceInformation(build(serviceInformationBuilder()
 
 115                 .setServiceInstanceId("test-service-instance-id")
 
 119         TunnelxconnTopologyOperationOutput output =
 
 120             exec(genericResourceApiProvider::tunnelxconnTopologyOperation, input, RpcResult::getResult);
 
 122         assertEquals("200", output.getResponseCode());
 
 123         assertEquals("OK", output.getResponseMessage());
 
 124         assertEquals("Y", output.getAckFinalIndicator());
 
 126         TunnelxconnTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
 
 127         assertEquals(expectedOutput, output);
 
 131     private TunnelxconnTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder,
 
 132         TunnelxconnTopologyOperationInput input) {
 
 134         return build(tunnelxconnTopologyOperationOutput()
 
 135             .setTunnelxconnResponseInformation(build(tunnelxconnResponseInformation()
 
 136                 .setObjectPath(propBuilder.get("tunnelxconn-object-path"))))
 
 137             .setResponseCode(propBuilder.get(svcClient.errorCode))
 
 138             .setAckFinalIndicator(propBuilder.get(svcClient.ackFinal))
 
 139             .setResponseMessage(propBuilder.get(svcClient.errorMessage))
 
 140             .setServiceResponseInformation(build(serviceResponseInformation()
 
 141                 .setInstanceId(input.getServiceInformation().getServiceInstanceId())
 
 142                 .setObjectPath(propBuilder.get(svcClient.serviceObjectPath))