GenericResourceApiProvider unit tests part 6.
[sdnc/northbound.git] / generic-resource-api / provider / src / test / java / org / onap / sdnc / northbound / ContrailRouteTopologyOperationRPCTest.java
index d3513f7..55b7db4 100644 (file)
@@ -8,12 +8,18 @@ import static org.onap.sdnc.northbound.GenericResourceApiProvider.INVALID_INPUT_
 import static org.onap.sdnc.northbound.GenericResourceApiProvider.NO_SERVICE_LOGIC_ACTIVE;
 import static org.onap.sdnc.northbound.GenericResourceApiProvider.NULL_OR_EMPTY_ERROR_PARAM;
 import static org.onap.sdnc.northbound.util.MDSALUtil.build;
+import static org.onap.sdnc.northbound.util.MDSALUtil.contrailRouteResponseInformation;
 import static org.onap.sdnc.northbound.util.MDSALUtil.contrailRouteTopologyOperationInput;
+import static org.onap.sdnc.northbound.util.MDSALUtil.contrailRouteTopologyOperationOutput;
 import static org.onap.sdnc.northbound.util.MDSALUtil.exec;
+import static org.onap.sdnc.northbound.util.MDSALUtil.requestInformation;
+import static org.onap.sdnc.northbound.util.MDSALUtil.sdncRequestHeader;
 import static org.onap.sdnc.northbound.util.MDSALUtil.service;
 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceData;
 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceInformationBuilder;
 import static org.onap.sdnc.northbound.util.MDSALUtil.serviceLevelOperStatus;
+import static org.onap.sdnc.northbound.util.MDSALUtil.serviceResponseInformation;
+import static org.onap.sdnc.northbound.util.MDSALUtil.serviceStatus;
 
 import java.time.Instant;
 import org.junit.Before;
@@ -32,6 +38,10 @@ import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.re
 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.LastOrderStatus;
 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.LastRpcAction;
 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.OperStatusData.OrderStatus;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.request.information.RequestInformation;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.sdnc.request.header.SdncRequestHeader.SvcAction;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.data.ServiceData;
+import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.information.ServiceInformation;
 import org.opendaylight.yang.gen.v1.org.onap.sdnc.northbound.generic.resource.rev170824.service.model.infrastructure.Service;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 
@@ -65,6 +75,10 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro
     public void should_fail_when_invalid_service_data() throws Exception {
 
         ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput()
+            .setSdncRequestHeader(build(sdncRequestHeader()
+                .setSvcRequestId("test-svc-request-id")
+                .setSvcAction(SvcAction.Assign)
+            ))
             .setServiceInformation(build(serviceInformationBuilder()
                 .setServiceInstanceId("test-service-instance-id")
             ))
@@ -86,6 +100,10 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro
         svcClient.mockExecute(new RuntimeException("test exception"));
 
         ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput()
+            .setSdncRequestHeader(build(sdncRequestHeader()
+                .setSvcRequestId("test-svc-request-id")
+                .setSvcAction(SvcAction.Assign)
+            ))
             .setServiceInformation(build(serviceInformationBuilder()
                 .setServiceInstanceId("test-service-instance-id")
             ))
@@ -107,6 +125,10 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro
         svcClient.mockHasGraph(false);
 
         ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput()
+            .setSdncRequestHeader(build(sdncRequestHeader()
+                .setSvcRequestId("test-svc-request-id")
+                .setSvcAction(SvcAction.Assign)
+            ))
             .setServiceInformation(build(serviceInformationBuilder()
                 .setServiceInstanceId("test-service-instance-id")
             ))
@@ -136,6 +158,10 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro
         genericResourceApiProvider.setDataBroker(spyDataBroker);
 
         ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput()
+            .setSdncRequestHeader(build(sdncRequestHeader()
+                .setSvcRequestId("test-svc-request-id")
+                .setSvcAction(SvcAction.Assign)
+            ))
             .setServiceInformation(build(serviceInformationBuilder()
                 .setServiceInstanceId("test-service-instance-id")
             ))
@@ -152,6 +178,47 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro
     }
 
 
+    @Test
+    public void should_success_when_no_errors_encountered() throws Exception {
+
+        svcClient.mockHasGraph(true);
+        PropBuilder svcResultProp = svcClient.createExecuteOKResult();
+        svcResultProp.set("contrail-route-object-path", "contrailRouteObjectPath: XYZ");
+        svcClient.mockExecute(svcResultProp);
+
+        ContrailRouteTopologyOperationInput input = build(contrailRouteTopologyOperationInput()
+            .setSdncRequestHeader(build(sdncRequestHeader()
+                .setSvcRequestId("test-svc-request-id")
+                .setSvcAction(SvcAction.Assign)
+            ))
+            .setRequestInformation(build(requestInformation()
+                .setRequestId("test-request-id")
+                .setRequestAction(RequestInformation.RequestAction.CreateServiceInstance)
+            ))
+            .setServiceInformation(build(serviceInformationBuilder()
+                .setServiceInstanceId("test-service-instance-id")
+            ))
+        );
+
+        Service service = persistServiceInDataBroker(input);
+
+        ContrailRouteTopologyOperationOutput output =
+            exec(genericResourceApiProvider::contrailRouteTopologyOperation, input, RpcResult::getResult);
+
+        assertEquals("200", output.getResponseCode());
+        assertEquals("OK", output.getResponseMessage());
+        assertEquals("Y", output.getAckFinalIndicator());
+
+        ContrailRouteTopologyOperationOutput expectedOutput = createExpectedOutput(svcResultProp, input);
+        assertEquals(expectedOutput, output);
+
+        Service actualService = db
+            .read(input.getServiceInformation().getServiceInstanceId(), LogicalDatastoreType.CONFIGURATION);
+
+        Service expectedService = createExpectedService(input, service.getServiceData());
+        assertEquals(expectedService, actualService);
+    }
+
     private Service persistServiceInDataBroker(ContrailRouteTopologyOperationInput input) throws Exception {
 
         Service service = build(service()
@@ -160,7 +227,7 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro
                 .setServiceLevelOperStatus(build(serviceLevelOperStatus()
                     .setOrderStatus(OrderStatus.Created)
                     .setModifyTimestamp(Instant.now().toString())
-                    .setLastSvcRequestId("svc-request-id: abc")
+                    .setLastSvcRequestId(input.getSdncRequestHeader().getSvcRequestId())
                     .setLastRpcAction(LastRpcAction.Activate)
                     .setLastOrderStatus(LastOrderStatus.PendingAssignment)
                     .setLastAction(LastAction.ActivateNetworkInstance)
@@ -171,4 +238,34 @@ public class ContrailRouteTopologyOperationRPCTest extends GenericResourceApiPro
         db.write(true, service, LogicalDatastoreType.CONFIGURATION);
         return service;
     }
+
+    private ContrailRouteTopologyOperationOutput createExpectedOutput(PropBuilder propBuilder,
+        ContrailRouteTopologyOperationInput input) {
+
+        return build(contrailRouteTopologyOperationOutput()
+            .setContrailRouteResponseInformation(build(contrailRouteResponseInformation()
+                .setObjectPath(propBuilder.get("contrail-route-object-path"))))
+            .setSvcRequestId(input.getSdncRequestHeader().getSvcRequestId())
+            .setResponseCode(propBuilder.get(svcClient.errorCode))
+            .setAckFinalIndicator(propBuilder.get(svcClient.ackFinal))
+            .setResponseMessage(propBuilder.get(svcClient.errorMessage))
+            .setServiceResponseInformation(build(serviceResponseInformation()
+                .setInstanceId(input.getServiceInformation().getServiceInstanceId())
+                .setObjectPath(propBuilder.get(svcClient.serviceObjectPath))
+            ))
+        );
+    }
+
+    private Service createExpectedService(
+        ContrailRouteTopologyOperationInput expectedInput, ServiceData expectedServiceData) {
+
+        ServiceInformation expectedServiceInformation = expectedInput.getServiceInformation();
+
+        return build(service()
+            .setServiceInstanceId(expectedServiceInformation.getServiceInstanceId())
+            .setServiceData(build(serviceData()))
+            .setServiceData(expectedServiceData)
+            .setServiceStatus(build(serviceStatus()))
+        );
+    }
 }