Merge "Reorder modifiers"
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / vcpe / DoCreateAllottedResourceBRGRollbackTest.java
index f5c3775..0407e17 100644 (file)
@@ -1,4 +1,4 @@
-/*-
+/*
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- *
+ * 
  *      http://www.apache.org/licenses/LICENSE-2.0
- *
+ * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
-/*
- * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
- */
 package org.openecomp.mso.bpmn.vcpe;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
@@ -36,23 +35,22 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.camunda.bpm.engine.test.Deployment;
-import org.junit.Assert;
 import org.junit.Test;
 import org.openecomp.mso.bpmn.common.BPMNUtil;
-import org.openecomp.mso.bpmn.common.WorkflowTest;
 import org.openecomp.mso.bpmn.core.RollbackData;
 import org.openecomp.mso.bpmn.mock.FileUtil;
 
 
-public class DoCreateAllottedResourceBRGRollbackTest extends WorkflowTest {
+public class DoCreateAllottedResourceBRGRollbackTest extends AbstractTestBase {
 
+       private static final String PROCNAME = "DoCreateAllottedResourceBRGRollback";
        private static final String RbType = "DCARBRG_";
        private final CallbackSet callbacks = new CallbackSet();
        
        public DoCreateAllottedResourceBRGRollbackTest() throws IOException {
-               callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
-               callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
-               callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+               callbacks.put("deactivate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+               callbacks.put("delete", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyDeleteCallback.xml"));
+               callbacks.put("unassign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyUnassignCallback.xml"));
        }
        
        @Test
@@ -60,11 +58,11 @@ public class DoCreateAllottedResourceBRGRollbackTest extends WorkflowTest {
                        "subprocess/SDNCAdapterV1.bpmn",
                        "subprocess/FalloutHandler.bpmn",
                        "subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
-       public void testDoCreateAllottedResourceBRGRollback_success() throws Exception {
+       public void testDoCreateAllottedResourceBRGRollback_Success() throws Exception {
                
-               MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
-               MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
-               MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+               MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+               MockPatchAllottedResource(CUST, SVC, INST, ARID);
+               MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
                mockSDNCAdapter(200);
                mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
                
@@ -72,7 +70,7 @@ public class DoCreateAllottedResourceBRGRollbackTest extends WorkflowTest {
                Map<String, Object> variables = new HashMap<>();
                setVariablesSuccess(variables, "testRequestId1");
                
-               invokeSubProcess("DoCreateAllottedResourceBRGRollback", businessKey, variables);
+               invokeSubProcess(PROCNAME, businessKey, variables);
                
                injectSDNCCallbacks(callbacks, "deactivate");
                injectSDNCCallbacks(callbacks, "delete");
@@ -80,37 +78,268 @@ public class DoCreateAllottedResourceBRGRollbackTest extends WorkflowTest {
 
                waitForProcessEnd(businessKey, 10000);
                
-               Assert.assertTrue(isProcessEnded(businessKey));
-               String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceBRGRollback", "WorkflowException");
+               assertTrue(isProcessEnded(businessKey));
+               String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
                System.out.println("workflowException:\n" + workflowException);
                assertEquals(null, workflowException);
+               assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, "rolledBack"));
+               assertNull(BPMNUtil.getVariable(processEngineRule, PROCNAME, "rollbackError"));
        }
+       
+       @Test
+       @Deployment(resources = {
+                       "subprocess/SDNCAdapterV1.bpmn",
+                       "subprocess/FalloutHandler.bpmn",
+                       "subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+       public void testDoCreateAllottedResourceBRGRollback_skipRollback() throws Exception {
+               
+               MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+               MockPatchAllottedResource(CUST, SVC, INST, ARID);
+               MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
+               mockSDNCAdapter(200);
+               mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+               
+               String businessKey = UUID.randomUUID().toString();
+               Map<String, Object> variables = new HashMap<>();
+               RollbackData rollbackData = setVariablesSuccess(variables, "testRequestId1");
+
+               rollbackData.put(RbType, "rollbackAAI", "false");
+               rollbackData.put(RbType, "rollbackSDNCassign", "false");
+               
+               invokeSubProcess(PROCNAME, businessKey, variables);
 
-       private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+               waitForProcessEnd(businessKey, 10000);
+               
+               assertTrue(isProcessEnded(businessKey));
+               String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
+               System.out.println("workflowException:\n" + workflowException);
+               assertEquals(null, workflowException);
+               assertEquals(null, BPMNUtil.getVariable(processEngineRule, PROCNAME, "rolledBack"));
+               assertNull(BPMNUtil.getVariable(processEngineRule, PROCNAME, "rollbackError"));
+       }
+       
+       @Test
+       @Deployment(resources = {
+                       "subprocess/SDNCAdapterV1.bpmn",
+                       "subprocess/FalloutHandler.bpmn",
+                       "subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+       public void testDoCreateAllottedResourceBRGRollback_DoNotRollBack() throws Exception {
+               
+               mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+               
+               String businessKey = UUID.randomUUID().toString();
+               Map<String, Object> variables = new HashMap<>();
+               RollbackData rollbackData = setVariablesSuccess(variables, "testRequestId1");
+
+               // this will cause "rollbackSDNC" to be set to false
+               rollbackData.put(RbType, "rollbackSDNCassign", "false");
+               
+               invokeSubProcess(PROCNAME, businessKey, variables);
+
+               waitForProcessEnd(businessKey, 10000);
+               
+               assertTrue(isProcessEnded(businessKey));
+               String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
+               System.out.println("workflowException:\n" + workflowException);
+               assertEquals(null, workflowException);
+               assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, "rolledBack"));
+               assertNull(BPMNUtil.getVariable(processEngineRule, PROCNAME, "rollbackError"));
+       }
+       
+       @Test
+       @Deployment(resources = {
+                       "subprocess/SDNCAdapterV1.bpmn",
+                       "subprocess/FalloutHandler.bpmn",
+                       "subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+       public void testDoCreateAllottedResourceBRGRollback_NoDeactivate() throws Exception {
+               
+               MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+               MockPatchAllottedResource(CUST, SVC, INST, ARID);
+               MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
+               mockSDNCAdapter(200);
+               mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+               
+               String businessKey = UUID.randomUUID().toString();
+               Map<String, Object> variables = new HashMap<>();
+               RollbackData rollbackData = setVariablesSuccess(variables, "testRequestId1");
+
+               rollbackData.put(RbType, "rollbackSDNCactivate", "false");
+               
+               invokeSubProcess(PROCNAME, businessKey, variables);
+
+               injectSDNCCallbacks(callbacks, "delete");
+               injectSDNCCallbacks(callbacks, "unassign");
+
+               waitForProcessEnd(businessKey, 10000);
+               
+               assertTrue(isProcessEnded(businessKey));
+               String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
+               System.out.println("workflowException:\n" + workflowException);
+               assertEquals(null, workflowException);
+               assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, "rolledBack"));
+               assertNull(BPMNUtil.getVariable(processEngineRule, PROCNAME, "rollbackError"));
+       }
+       
+       @Test
+       @Deployment(resources = {
+                       "subprocess/SDNCAdapterV1.bpmn",
+                       "subprocess/FalloutHandler.bpmn",
+                       "subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+       public void testDoCreateAllottedResourceBRGRollback_NoDelete() throws Exception {
+               
+               MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+               MockPatchAllottedResource(CUST, SVC, INST, ARID);
+               MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
+               mockSDNCAdapter(200);
+               mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+               
+               String businessKey = UUID.randomUUID().toString();
+               Map<String, Object> variables = new HashMap<>();
+               RollbackData rollbackData = setVariablesSuccess(variables, "testRequestId1");
+
+               rollbackData.put(RbType, "rollbackSDNCcreate", "false");
+               
+               invokeSubProcess(PROCNAME, businessKey, variables);
+
+               injectSDNCCallbacks(callbacks, "deactivate");
+               injectSDNCCallbacks(callbacks, "unassign");
+
+               waitForProcessEnd(businessKey, 10000);
+               
+               assertTrue(isProcessEnded(businessKey));
+               String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
+               System.out.println("workflowException:\n" + workflowException);
+               assertEquals(null, workflowException);
+               assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, "rolledBack"));
+               assertNull(BPMNUtil.getVariable(processEngineRule, PROCNAME, "rollbackError"));
+       }
+       
+       @Test
+       @Deployment(resources = {
+                       "subprocess/SDNCAdapterV1.bpmn",
+                       "subprocess/FalloutHandler.bpmn",
+                       "subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+       public void testDoCreateAllottedResourceBRGRollback_NoUnassign() throws Exception {
+               
+               MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+               MockPatchAllottedResource(CUST, SVC, INST, ARID);
+               MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
+               mockSDNCAdapter(200);
+               mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+               
+               String businessKey = UUID.randomUUID().toString();
+               Map<String, Object> variables = new HashMap<>();
+               RollbackData rollbackData = setVariablesSuccess(variables, "testRequestId1");
+
+               rollbackData.put(RbType, "rollbackSDNCassign", "false");
+               
+               /*
+                * Note: if assign == false then the flow/script will set
+                * "skipRollback" to false, which will cause ALL of the SDNC steps
+                * to be skipped, not just the unassign step.
+                */
+               
+               invokeSubProcess(PROCNAME, businessKey, variables);
+
+               waitForProcessEnd(businessKey, 10000);
+               
+               assertTrue(isProcessEnded(businessKey));
+               String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
+               System.out.println("workflowException:\n" + workflowException);
+               assertEquals(null, workflowException);
+               assertEquals("true", BPMNUtil.getVariable(processEngineRule, PROCNAME, "rolledBack"));
+               assertNull(BPMNUtil.getVariable(processEngineRule, PROCNAME, "rollbackError"));
+       }
+       
+       @Test
+       @Deployment(resources = {
+                       "subprocess/SDNCAdapterV1.bpmn",
+                       "subprocess/FalloutHandler.bpmn",
+                       "subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+       public void testDoCreateAllottedResourceBRGRollback_SubProcessError() throws Exception {
+               
+               MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+               MockPatchAllottedResource(CUST, SVC, INST, ARID);
+               MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
+               mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+               mockSDNCAdapter(404);
+               
+               String businessKey = UUID.randomUUID().toString();
+               Map<String, Object> variables = new HashMap<>();
+               setVariablesSuccess(variables, "testRequestId1");
+               
+               invokeSubProcess(PROCNAME, businessKey, variables);
+
+               waitForProcessEnd(businessKey, 10000);
+               
+               assertTrue(isProcessEnded(businessKey));
+               String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
+               System.out.println("workflowException:\n" + workflowException);
+               assertEquals(null, workflowException);
+               assertEquals("false", BPMNUtil.getVariable(processEngineRule, PROCNAME, "rolledBack"));
+               assertNotNull(BPMNUtil.getVariable(processEngineRule, PROCNAME, "rollbackError"));
+       }
+       
+       @Test
+       @Deployment(resources = {
+                       "subprocess/SDNCAdapterV1.bpmn",
+                       "subprocess/FalloutHandler.bpmn",
+                       "subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+       public void testDoCreateAllottedResourceBRGRollback_JavaException() throws Exception {
+               
+               MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+               MockPatchAllottedResource(CUST, SVC, INST, ARID);
+               MockDeleteAllottedResource(CUST, SVC, INST, ARID, ARVERS);
+               mockSDNCAdapter(200);
+               mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+               
+               String businessKey = UUID.randomUUID().toString();
+               Map<String, Object> variables = new HashMap<>();
+               setVariablesSuccess(variables, "testRequestId1");
+
+               variables.put("rollbackData", "string instead of rollback data");
+               
+               invokeSubProcess(PROCNAME, businessKey, variables);
+
+               waitForProcessEnd(businessKey, 10000);
+               
+               assertTrue(isProcessEnded(businessKey));
+               String workflowException = BPMNUtil.getVariable(processEngineRule, PROCNAME, VAR_WFEX);
+               System.out.println("workflowException:\n" + workflowException);
+               assertEquals(null, workflowException);
+               assertEquals("false", BPMNUtil.getVariable(processEngineRule, PROCNAME, "rolledBack"));
+               assertNotNull(BPMNUtil.getVariable(processEngineRule, PROCNAME, "rollbackError"));
+       }
+
+       private RollbackData setVariablesSuccess(Map<String, Object> variables, String requestId) {
                variables.put("isDebugLogEnabled", "true");
                variables.put("failNotFound", "true");
                variables.put("msoRequestId", requestId);
                variables.put("mso-request-id", "requestId");
-               variables.put("allottedResourceId", "arId-1");
+               variables.put("allottedResourceId", ARID);
+
+               variables.put("serviceInstanceId", DEC_INST);
+               variables.put("parentServiceInstanceId", DEC_PARENT_INST);
                
-               variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
-               variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
                RollbackData rollbackData = new RollbackData();
 
-               rollbackData.put(RbType, "serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
-               rollbackData.put(RbType, "serviceSubscriptionType", "123456789");
+               rollbackData.put(RbType, "serviceInstanceId", DEC_INST);
+               rollbackData.put(RbType, "serviceSubscriptionType", SVC);
                rollbackData.put(RbType, "disablerollback", "false");
                rollbackData.put(RbType, "rollbackAAI", "true");
                rollbackData.put(RbType, "rollbackSDNCassign", "true");
                rollbackData.put(RbType, "rollbackSDNCactivate", "true");
                rollbackData.put(RbType, "rollbackSDNCcreate", "true");
-               rollbackData.put(RbType, "aaiARPath", "http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1");
+               rollbackData.put(RbType, "aaiARPath", "http://localhost:28090/aai/v9/business/customers/customer/"+CUST+"/service-subscriptions/service-subscription/"+SVC+"/service-instances/service-instance/"+INST+"/allotted-resources/allotted-resource/"+ARID);
                
                rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml"));
                rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml")); 
                rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml"));
                
                variables.put("rollbackData",rollbackData);
+               
+               return rollbackData;
        }
 
 }