\r
package org.openecomp.mso.bpmn.common.scripts\r
\r
-import static org.apache.commons.lang3.StringUtils.*\r
-\r
-import org.apache.commons.lang3.*\r
+import org.apache.commons.lang3.StringEscapeUtils\r
import org.camunda.bpm.engine.delegate.BpmnError\r
import org.camunda.bpm.engine.runtime.Execution\r
import org.openecomp.mso.rest.APIResponse\r
import org.springframework.web.util.UriUtils\r
\r
+import static org.apache.commons.lang3.StringUtils.isBlank\r
+\r
\r
/**\r
* This class supports the GenericGetService Sub Flow.\r
if(responseCode == 200){\r
utils.log("DEBUG", " Query for Service Instance Url Received a Good Response Code", isDebugEnabled)\r
execution.setVariable("GENGS_SuccessIndicator", true)\r
- if(utils.nodeExists(aaiResponse, "result-data")){\r
+ String globalCustomerId = execution.getVariable("GENGS_globalCustomerId")\r
+ boolean nodeExists = isBlank(globalCustomerId) ? utils.nodeExists(aaiResponse, "result-data") : hasCustomerServiceInstance(aaiResponse, globalCustomerId)\r
+ if(nodeExists){\r
utils.log("DEBUG", "Query for Service Instance Url Response Does Contain Data" , isDebugEnabled)\r
execution.setVariable("GENGS_FoundIndicator", true)\r
String resourceLink = utils.getNodeText1(aaiResponse, "resource-link")\r
utils.log("DEBUG", " *** COMPLETED GenericGetService GetServiceObject Process*** ", isDebugEnabled)\r
}\r
\r
+ /**\r
+ * An utility method which check whether a service(by name) is already present within a globalCustomerId or not.\r
+ * @param jsonResponse raw response received from AAI by searching ServiceInstance by Name.\r
+ * @param globalCustomerId\r
+ * @return {@code true} if globalCustomerId is found at 6th position within "resource-link", {@code false} in any other cases.\r
+ */\r
+ public boolean hasCustomerServiceInstance(String aaiResponse, final String globalCustomerId) {\r
+ if (isBlank(aaiResponse)) {\r
+ return false\r
+ }\r
+ aaiResponse = utils.removeXmlNamespaces(aaiResponse)\r
+ ArrayList<String> linksArray = utils.getMultNodeObjects(aaiResponse, "resource-link")\r
+ if (linksArray == null || linksArray.size() == 0) {\r
+ return false\r
+ }\r
+ for (String resourceLink : linksArray) {\r
+ int custStart = resourceLink.indexOf("customer/")\r
+ int custEnd = resourceLink.indexOf("/service-subscriptions/")\r
+ String receivedCustomerId = resourceLink.substring(custStart + 9, custEnd)\r
+ if (globalCustomerId.equals(receivedCustomerId)) {\r
+ return true\r
+ }\r
+ }\r
+ return false\r
+ }\r
+\r
}
\ No newline at end of file
assertEquals(expectedWorkflowException, workflowException);\r
}\r
\r
+ @Test\r
+ @Deployment(resources = {"subprocess/GenericGetService.bpmn"})\r
+ public void testGenericGetService_success_serviceInstance_byNameServicePresent() throws Exception{\r
+\r
+ MockNodeQueryServiceInstanceByName("1604-MVM-26", "GenericFlows/getSIUrlByNameMultiCustomer.xml");\r
+ MockGetServiceInstance("XyCorporation", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");\r
+\r
+ Map<String, String> variables = new HashMap<String, String>();\r
+ setVariablesInstance(variables, null, "1604-MVM-26", "XyCorporation", null);\r
+\r
+ WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "GenericGetService", variables);\r
+ waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());\r
+\r
+ String successIndicator = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_SuccessIndicator");\r
+ String found = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_FoundIndicator");\r
+ String resourceLink = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_resourceLink");\r
+ String response = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "WorkflowResponse");\r
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "WorkflowException");\r
+ String siUrlResponseCode = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_obtainSIUrlResponseCode");\r
+\r
+ assertEquals("true", successIndicator);\r
+ assertEquals("true", found);\r
+ assertNotNull(resourceLink);\r
+ assertNotNull(response);\r
+ assertEquals("200", siUrlResponseCode);\r
+ assertEquals(null, workflowException);\r
+ }\r
+\r
+ @Test\r
+ @Deployment(resources = {"subprocess/GenericGetService.bpmn"})\r
+ public void testGenericGetService_success_serviceInstance_byNameServiceNotPresent() throws Exception{\r
+\r
+ MockNodeQueryServiceInstanceByName("1604-MVM-26", "GenericFlows/getSIUrlByNameMultiCustomer.xml");\r
+ MockGetServiceInstance("CorporationNotPresent", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");\r
+\r
+ Map<String, String> variables = new HashMap<String, String>();\r
+ setVariablesInstance(variables, null, "1604-MVM-26", "CorporationNotPresent", null);\r
+\r
+ WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "GenericGetService", variables);\r
+ waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());\r
+\r
+ String successIndicator = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_SuccessIndicator");\r
+ String found = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_FoundIndicator");\r
+ String resourceLink = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_resourceLink");\r
+ String response = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "WorkflowResponse");\r
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "WorkflowException");\r
+ String siUrlResponseCode = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_obtainSIUrlResponseCode");\r
+\r
+ assertEquals("true", successIndicator);\r
+ assertEquals("false", found);\r
+ assertEquals(null, resourceLink);\r
+ assertEquals(" ", response);\r
+ assertEquals("200", siUrlResponseCode);\r
+ assertEquals(null, workflowException);\r
+ }\r
\r
private void setVariablesInstance(Map<String, String> variables, String siId, String siName, String globalCustId, String serviceType) {\r
variables.put("isDebugLogEnabled", "true");\r