diff options
Diffstat (limited to 'bpmn')
12 files changed, 312 insertions, 251 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/GenericGetService.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/GenericGetService.groovy index 14f9135826..cfc5171dca 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/GenericGetService.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/GenericGetService.groovy @@ -20,14 +20,14 @@ package org.openecomp.mso.bpmn.common.scripts
-import static org.apache.commons.lang3.StringUtils.*
-
-import org.apache.commons.lang3.*
+import org.apache.commons.lang3.StringEscapeUtils
import org.camunda.bpm.engine.delegate.BpmnError
import org.camunda.bpm.engine.runtime.Execution
import org.openecomp.mso.rest.APIResponse
import org.springframework.web.util.UriUtils
+import static org.apache.commons.lang3.StringUtils.isBlank
+
/**
* This class supports the GenericGetService Sub Flow.
@@ -301,7 +301,9 @@ class GenericGetService extends AbstractServiceTaskProcessor{ if(responseCode == 200){
utils.log("DEBUG", " Query for Service Instance Url Received a Good Response Code", isDebugEnabled)
execution.setVariable("GENGS_SuccessIndicator", true)
- if(utils.nodeExists(aaiResponse, "result-data")){
+ String globalCustomerId = execution.getVariable("GENGS_globalCustomerId")
+ boolean nodeExists = isBlank(globalCustomerId) ? utils.nodeExists(aaiResponse, "result-data") : hasCustomerServiceInstance(aaiResponse, globalCustomerId)
+ if(nodeExists){
utils.log("DEBUG", "Query for Service Instance Url Response Does Contain Data" , isDebugEnabled)
execution.setVariable("GENGS_FoundIndicator", true)
String resourceLink = utils.getNodeText1(aaiResponse, "resource-link")
@@ -439,4 +441,30 @@ class GenericGetService extends AbstractServiceTaskProcessor{ utils.log("DEBUG", " *** COMPLETED GenericGetService GetServiceObject Process*** ", isDebugEnabled)
}
+ /**
+ * An utility method which check whether a service(by name) is already present within a globalCustomerId or not.
+ * @param jsonResponse raw response received from AAI by searching ServiceInstance by Name.
+ * @param globalCustomerId
+ * @return {@code true} if globalCustomerId is found at 6th position within "resource-link", {@code false} in any other cases.
+ */
+ public boolean hasCustomerServiceInstance(String aaiResponse, final String globalCustomerId) {
+ if (isBlank(aaiResponse)) {
+ return false
+ }
+ aaiResponse = utils.removeXmlNamespaces(aaiResponse)
+ ArrayList<String> linksArray = utils.getMultNodeObjects(aaiResponse, "resource-link")
+ if (linksArray == null || linksArray.size() == 0) {
+ return false
+ }
+ for (String resourceLink : linksArray) {
+ int custStart = resourceLink.indexOf("customer/")
+ int custEnd = resourceLink.indexOf("/service-subscriptions/")
+ String receivedCustomerId = resourceLink.substring(custStart + 9, custEnd)
+ if (globalCustomerId.equals(receivedCustomerId)) {
+ return true
+ }
+ }
+ return false
+ }
+
}
\ No newline at end of file diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/GenericGetServiceTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/GenericGetServiceTest.java index b1172837cf..82cceb0b70 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/GenericGetServiceTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/GenericGetServiceTest.java @@ -482,6 +482,61 @@ public class GenericGetServiceTest extends WorkflowTest { assertEquals(expectedWorkflowException, workflowException);
}
+ @Test
+ @Deployment(resources = {"subprocess/GenericGetService.bpmn"})
+ public void testGenericGetService_success_serviceInstance_byNameServicePresent() throws Exception{
+
+ MockNodeQueryServiceInstanceByName("1604-MVM-26", "GenericFlows/getSIUrlByNameMultiCustomer.xml");
+ MockGetServiceInstance("XyCorporation", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+
+ Map<String, String> variables = new HashMap<String, String>();
+ setVariablesInstance(variables, null, "1604-MVM-26", "XyCorporation", null);
+
+ WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "GenericGetService", variables);
+ waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+
+ String successIndicator = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_SuccessIndicator");
+ String found = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_FoundIndicator");
+ String resourceLink = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_resourceLink");
+ String response = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "WorkflowResponse");
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "WorkflowException");
+ String siUrlResponseCode = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_obtainSIUrlResponseCode");
+
+ assertEquals("true", successIndicator);
+ assertEquals("true", found);
+ assertNotNull(resourceLink);
+ assertNotNull(response);
+ assertEquals("200", siUrlResponseCode);
+ assertEquals(null, workflowException);
+ }
+
+ @Test
+ @Deployment(resources = {"subprocess/GenericGetService.bpmn"})
+ public void testGenericGetService_success_serviceInstance_byNameServiceNotPresent() throws Exception{
+
+ MockNodeQueryServiceInstanceByName("1604-MVM-26", "GenericFlows/getSIUrlByNameMultiCustomer.xml");
+ MockGetServiceInstance("CorporationNotPresent", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+
+ Map<String, String> variables = new HashMap<String, String>();
+ setVariablesInstance(variables, null, "1604-MVM-26", "CorporationNotPresent", null);
+
+ WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "GenericGetService", variables);
+ waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+
+ String successIndicator = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_SuccessIndicator");
+ String found = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_FoundIndicator");
+ String resourceLink = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_resourceLink");
+ String response = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "WorkflowResponse");
+ String workflowException = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "WorkflowException");
+ String siUrlResponseCode = BPMNUtil.getVariable(processEngineRule, "GenericGetService", "GENGS_obtainSIUrlResponseCode");
+
+ assertEquals("true", successIndicator);
+ assertEquals("false", found);
+ assertEquals(null, resourceLink);
+ assertEquals(" ", response);
+ assertEquals("200", siUrlResponseCode);
+ assertEquals(null, workflowException);
+ }
private void setVariablesInstance(Map<String, String> variables, String siId, String siName, String globalCustId, String serviceType) {
variables.put("isDebugLogEnabled", "true");
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowTest.java index 15dc4f4609..ce8eb7afec 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/WorkflowTest.java @@ -61,7 +61,6 @@ import org.custommonkey.xmlunit.DetailedDiff; import org.custommonkey.xmlunit.XMLUnit;
import org.jboss.resteasy.spi.AsynchronousResponse;
import org.json.JSONArray;
-import org.json.JSONObject;
import org.junit.Before;
import org.junit.Rule;
import org.openecomp.mso.bpmn.common.adapter.sdnc.CallbackHeader;
@@ -78,7 +77,7 @@ import org.openecomp.mso.bpmn.common.workflow.service.VnfAdapterNotifyServiceImp import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource;
import org.openecomp.mso.bpmn.common.workflow.service.WorkflowMessageResource;
import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
-import org.openecomp.mso.bpmn.core.CamundaDBSetup;
+import org.openecomp.mso.bpmn.core.utils.CamundaDBSetup;
import org.openecomp.mso.bpmn.core.PropertyConfigurationSetup;
import org.openecomp.mso.bpmn.core.domain.Resource;
import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/GenericFlows/getSIUrlByNameMultiCustomer.xml b/bpmn/MSOCommonBPMN/src/test/resources/__files/GenericFlows/getSIUrlByNameMultiCustomer.xml new file mode 100644 index 0000000000..fce47fcd0d --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/GenericFlows/getSIUrlByNameMultiCustomer.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<search-results xmlns="http://org.openecomp.aai.inventory/v11"> + <result-data> + <resource-type>service-instance</resource-type> + <resource-link>/aai/v11/business/customers/customer/AbcBank/service-subscriptions/service-subscription/ABC-ST/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET</resource-link> + </result-data> + <result-data> + <resource-type>service-instance</resource-type> + <resource-link>/aai/v11/business/customers/customer/XyCorporation/service-subscriptions/service-subscription/XY-ST/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET</resource-link> + </result-data> +</search-results>
\ No newline at end of file diff --git a/bpmn/MSOCoreBPMN/pom.xml b/bpmn/MSOCoreBPMN/pom.xml index 6884c1e33b..267f175533 100644 --- a/bpmn/MSOCoreBPMN/pom.xml +++ b/bpmn/MSOCoreBPMN/pom.xml @@ -158,9 +158,10 @@ <version>20160212</version> </dependency> <dependency> - <groupId>xmlunit</groupId> - <artifactId>xmlunit</artifactId> - <version>1.6</version> + <groupId>org.xmlunit</groupId> + <artifactId>xmlunit-core</artifactId> + <version>2.5.1</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.openecomp.so</groupId> diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/RollbackData.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/RollbackData.java index 66edaaae3c..7ece05ea9e 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/RollbackData.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/RollbackData.java @@ -89,6 +89,7 @@ public class RollbackData implements Serializable { /** * Returns a string representation of this object. */ + @Override public String toString() { StringBuilder out = new StringBuilder(); out.append(getClass().getSimpleName()); diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java index ce66e06089..4d895f3279 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/domain/JsonWrapper.java @@ -142,6 +142,7 @@ public abstract class JsonWrapper implements Serializable { /**
* Returns a string representation of this object.
*/
+ @Override
public String toString() {
return this.toJsonString();
}
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/plugins/LoggingAndURNMappingPlugin.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/plugins/LoggingAndURNMappingPlugin.java index 71ed0eae5e..c346308e2b 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/plugins/LoggingAndURNMappingPlugin.java +++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/plugins/LoggingAndURNMappingPlugin.java @@ -323,6 +323,7 @@ public class LoggingAndURNMappingPlugin extends AbstractProcessEnginePlugin { private void loadFromDB(DelegateExecution execution, ProcessEngineConfigurationImpl processEngineConfiguration) { Command<List<URNMapping>> command = new Command<List<URNMapping>>() { @SuppressWarnings("unchecked") + @Override public List<URNMapping> execute(CommandContext commandContext) { return (List<URNMapping>) commandContext.getDbSqlSession().selectList( "mso.urnMapping.selectAll", null); diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/JsonUtilsTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/JsonUtilsTest.java index 7f922ce30e..58f1ae264d 100644 --- a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/JsonUtilsTest.java +++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/JsonUtilsTest.java @@ -36,26 +36,24 @@ * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= - */ + */ package org.openecomp.mso.bpmn.core; -import java.io.BufferedReader; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.CharBuffer; - -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import org.junit.BeforeClass; import org.junit.Test; -import org.xml.sax.SAXException; -import org.custommonkey.xmlunit.Diff; - import org.openecomp.mso.bpmn.core.json.JsonUtils; import org.openecomp.mso.bpmn.core.xml.XmlTool; +import org.xmlunit.builder.DiffBuilder; +import org.xmlunit.diff.DefaultNodeMatcher; +import org.xmlunit.diff.Diff; +import org.xmlunit.diff.ElementSelectors; /** * @version 1.0 @@ -63,8 +61,8 @@ import org.openecomp.mso.bpmn.core.xml.XmlTool; public class JsonUtilsTest { private static final String EOL = "\n"; - private String xmlReq = - "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL + + private static final String XML_REQ = + "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL + " <request-info>" + EOL + " <request-id>DEV-VF-0021</request-id>" + EOL + " <action>CREATE_VF_MODULE</action>" + EOL + @@ -93,9 +91,9 @@ public class JsonUtilsTest { " <param name=\"server\">server1111</param>" + EOL + " </vnf-params> " + EOL + "</vnf-request>" + EOL; - - private String xmlReqNoAttrs = - "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL + + + private static final String XML_REQ_NO_ATTRS = + "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">" + EOL + " <request-info>" + EOL + " <action>DELETE_VF_MODULE</action>" + EOL + " <source>PORTAL</source>" + EOL + @@ -115,246 +113,214 @@ public class JsonUtilsTest { " <vnf-params xmlns:tns=\"http://org.openecomp/mso/infra/vnf-request/v1\"/>" + EOL + "</vnf-request>" + EOL; - private String xmlArrayReq = - "<ucpeInfo>" + EOL + + private static final String XML_ARRAY_REQ = + "<ucpeInfo>" + EOL + " <outOfBandManagementModem>BROADBAND</outOfBandManagementModem>" + EOL + - " <internetTopology>IVLAN</internetTopology>" + EOL + - " <ucpeAliasHostName>SHELLUCPE31</ucpeAliasHostName>" + EOL + - " <wanList>" + EOL + - " <wanInfo>" + EOL + - " <wanType>AVPN</wanType>" + EOL + - " <interfaceType>1000BASE-T</interfaceType>" + EOL + - " <transportProviderName>ATT</transportProviderName>" + EOL + - " <circuitId>BT/SLIR/70911</circuitId>" + EOL + - " <dualMode>Active</dualMode>" + EOL + - " <wanPortNumber>WAN1</wanPortNumber>" + EOL + - " <transportManagementOption>ATT</transportManagementOption>" + EOL + - " <transportVendorTotalBandwidth>100</transportVendorTotalBandwidth>" + EOL + - " <mediaType>ELECTRICAL</mediaType>" + EOL + - " </wanInfo>" + EOL + - " <wanInfo>" + EOL + - " <wanType>AVPN</wanType>" + EOL + - " <interfaceType>10/100/1000BASE-T</interfaceType>" + EOL + - " <transportProviderName>ATT</transportProviderName>" + EOL + - " <circuitId>AS/KRFN/34611</circuitId>" + EOL + - " <dualMode>Active</dualMode>" + EOL + - " <wanPortNumber>WAN2</wanPortNumber>" + EOL + - " <transportManagementOption>ATT</transportManagementOption>" + EOL + - " <transportVendorTotalBandwidth>10000</transportVendorTotalBandwidth>" + EOL + - " <mediaType>MMF</mediaType>" + EOL + - " </wanInfo>" + EOL + - " </wanList>" + EOL + - " <ucpeActivationCode>ASD-987-M31</ucpeActivationCode>" + EOL + - " <ucpeHostName>USOSTCDALTX0101UJZZ31</ucpeHostName>" + EOL + - " <ucpePartNumber>FG-VM00*</ucpePartNumber>" + EOL + + " <internetTopology>IVLAN</internetTopology>" + EOL + + " <ucpeAliasHostName>SHELLUCPE31</ucpeAliasHostName>" + EOL + + " <wanList>" + EOL + + " <wanInfo>" + EOL + + " <wanType>AVPN</wanType>" + EOL + + " <interfaceType>1000BASE-T</interfaceType>" + EOL + + " <transportProviderName>ATT</transportProviderName>" + EOL + + " <circuitId>BT/SLIR/70911</circuitId>" + EOL + + " <dualMode>Active</dualMode>" + EOL + + " <wanPortNumber>WAN1</wanPortNumber>" + EOL + + " <transportManagementOption>ATT</transportManagementOption>" + EOL + + " <transportVendorTotalBandwidth>100</transportVendorTotalBandwidth>" + EOL + + " <mediaType>ELECTRICAL</mediaType>" + EOL + + " </wanInfo>" + EOL + + " <wanInfo>" + EOL + + " <wanType>AVPN</wanType>" + EOL + + " <interfaceType>10/100/1000BASE-T</interfaceType>" + EOL + + " <transportProviderName>ATT</transportProviderName>" + EOL + + " <circuitId>AS/KRFN/34611</circuitId>" + EOL + + " <dualMode>Active</dualMode>" + EOL + + " <wanPortNumber>WAN2</wanPortNumber>" + EOL + + " <transportManagementOption>ATT</transportManagementOption>" + EOL + + " <transportVendorTotalBandwidth>10000</transportVendorTotalBandwidth>" + EOL + + " <mediaType>MMF</mediaType>" + EOL + + " </wanInfo>" + EOL + + " </wanList>" + EOL + + " <ucpeActivationCode>ASD-987-M31</ucpeActivationCode>" + EOL + + " <ucpeHostName>USOSTCDALTX0101UJZZ31</ucpeHostName>" + EOL + + " <ucpePartNumber>FG-VM00*</ucpePartNumber>" + EOL + "</ucpeInfo>"; // JSON request w/ embedded XML will be read from a file - private String jsonReq = null; - private String jsonReqArray = null; - - @Before - public void initialize() { - File file = new File("src/test/resources/request.json"); - File file2 = new File("src/test/resources/requestArray.json"); - FileInputStream fis = null; + private static String jsonReq; + private static String jsonReqArray; + + @BeforeClass + public static void initialize() throws Exception { + jsonReq = readFileToString("src/test/resources/request.json"); + jsonReqArray = readFileToString("src/test/resources/requestArray.json"); + } - try { - fis = new FileInputStream(file); - BufferedReader br = new BufferedReader(new InputStreamReader(fis)); - CharBuffer cbuf = CharBuffer.allocate((int)file.length()+1); - br.read(cbuf); - cbuf.flip(); - jsonReq = cbuf.toString(); - if (jsonReq != null) { - System.out.println("initialize(): json request: " + jsonReq); - } else { - System.out.println("initialize(): failed to read json request from src/test/resources/request.json"); - } - fis.close(); - fis = new FileInputStream(file2); - br = new BufferedReader(new InputStreamReader(fis)); - cbuf = CharBuffer.allocate((int)file.length()+1); - br.read(cbuf); - cbuf.flip(); - jsonReqArray = cbuf.toString(); - if (jsonReq != null) { - System.out.println("initialize(): json request w/ array: " + jsonReqArray); - } else { - System.out.println("initialize(): failed to read json request from src/test/resources/request2.json"); - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { - if (fis != null) - fis.close(); - } catch (IOException ex) { - ex.printStackTrace(); - } - } + private static String readFileToString(String path) throws IOException { + File file = new File(path); + return new String(Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8); } - - @After - public void cleanup(){ + + @Test + public void shouldConvertXmlToJsonAndBackToSameXml() throws Exception { + // Note: the current version of the JsonUtils.json2xml() method + // does not support converting the JSONObject representation + // of XML attributes (JSONArray) back to XML. So this test will + // only succeed if the original XML does not contain attributes + + // given + String xmlIn = XmlTool.removeNamespaces(XML_REQ_NO_ATTRS); + // when + String json = JsonUtils.xml2json(XML_REQ_NO_ATTRS); + String xmlOut = JsonUtils.json2xml(json); + // then + Diff diffXml = DiffBuilder.compare(xmlIn).withTest(xmlOut).ignoreWhitespace() + .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byName)).checkForSimilar().build(); + + assertThat(diffXml.hasDifferences()).withFailMessage(diffXml.toString()).isFalse(); } @Test -// @Ignore - public void testConversion() { - // Note: the current version of the JsonUtils.json2xml() method - // does not support converting the JSONObject representation - // of XML attributes (JSONArray) back to XML. So this test will - // only succeed if the original XML does not contain attributes - - // save a copy of the xml with the namespaces removed - String xmlIn = XmlTool.removeNamespaces(xmlReqNoAttrs); - // strip all the non-data whitespace - xmlIn = xmlIn.replaceAll(">\\s*<", "><"); - String json = JsonUtils.xml2json(xmlReqNoAttrs); - System.out.println("testConversion(): xml request to json: " + json); - String xmlOut = JsonUtils.json2xml(json); - System.out.println("testConversion(): json request back to xml: " + xmlOut); - - // strip all the non-data whitespace - xmlOut = xmlOut.replaceAll(">\\s*<", "><"); + public void shouldReadValuesForAbsoluteJsonPaths() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + // when, then + assertThat(JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.vnf-name")).isEqualTo("STMTN5MMSC21"); + assertThat(JsonUtils.getJsonValue(json, "vnf-request.request-info.action")).isEqualTo("CREATE_VF_MODULE"); + assertThat(JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.persona-model-version")).isEqualTo("1"); + assertThat(JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.vnf-persona-model-version")).isEqualTo("1.5"); + assertThat(JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.is-base-module")).isEqualTo("true"); + } - Diff diffXml; - try { - diffXml = new Diff(xmlIn, xmlOut); - Assert.assertTrue(diffXml.similar()); - } catch (SAXException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } + @Test + public void shouldReturnValueForJsonKey() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + // when, then + assertThat(JsonUtils.getJsonValueForKey(json, "source")).isEqualTo("PORTAL"); } @Test -// @Ignore - public void testRetrieval() { - String json = JsonUtils.xml2json(xmlReq); - System.out.println("testRetrieval(): xml request to json: " + json); - // full JSON path - String value = JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.vnf-name"); - Assert.assertEquals(value, "STMTN5MMSC21"); - value = JsonUtils.getJsonValue(json, "vnf-request.request-info.action"); - Assert.assertEquals(value, "CREATE_VF_MODULE"); - // retrieving an integer - value = JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.persona-model-version"); - Assert.assertEquals(value, "1"); - // retrieving a float - value = JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.vnf-persona-model-version"); - Assert.assertEquals(value, "1.5"); - // retrieving a boolean - value = JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.is-base-module"); - Assert.assertEquals(value, "true"); - // attempt to retrieve a value for a non-existent field - value = JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.bad"); - Assert.assertEquals(value, null); - // retrieving a parameter/array value (originally a XML attribute) - value = JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "name"); - Assert.assertEquals(value, "network"); - value = JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "content"); - Assert.assertEquals(value, "network1111"); - // retrieving a parameter/array value by index - value = JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "content", 1); - Assert.assertEquals(value, "server1111"); - value = JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "name", 1); - Assert.assertEquals(value, "server"); - // failure due to invalid parameter name - value = JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "badParam"); - Assert.assertEquals(value, null); - // failure due to array index out of bounds - value = JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "name", 2); - Assert.assertEquals(value, null); - // by field name/key - value = JsonUtils.getJsonValueForKey(json, "source"); - Assert.assertEquals(value, "PORTAL"); - value = JsonUtils.getJsonValueForKey(json, "vnf-module"); - Assert.assertEquals(value, null); + public void shouldReturnNullForNonexistentJsonNode() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + // when, then + assertThat(JsonUtils.getJsonValueForKey(json, "nonexistent-node")).isNull(); } @Test -// @Ignore - public void testUpdate() { - String json = JsonUtils.xml2json(xmlReq); - System.out.println("testUpdate(): xml request to json: " + json); - // the add should be successful - String jsonUpd = JsonUtils.addJsonValue(json, "vnf-request.request-info.comment", "Some comment"); - String value = JsonUtils.getJsonValue(jsonUpd, "vnf-request.request-info.comment"); - Assert.assertEquals(value, "Some comment"); - // the add should be ignored as the field already exists - jsonUpd = JsonUtils.addJsonValue(jsonUpd, "vnf-request.vnf-inputs.vnf-name", "STMTN5MMSC22"); - value = JsonUtils.getJsonValue(jsonUpd, "vnf-request.vnf-inputs.vnf-name"); - Assert.assertEquals(value, "STMTN5MMSC21"); - // the update should be successful - jsonUpd = JsonUtils.updJsonValue(jsonUpd, "vnf-request.vnf-inputs.vnf-name", "STMTN5MMSC22"); - value = JsonUtils.getJsonValue(jsonUpd, "vnf-request.vnf-inputs.vnf-name"); - Assert.assertEquals(value, "STMTN5MMSC22"); - // the delete should be successful - jsonUpd = JsonUtils.delJsonValue(jsonUpd, "vnf-request.request-info.comment"); - value = JsonUtils.getJsonValue(jsonUpd, "vnf-request.request-info.comment"); - Assert.assertEquals(value, null); - // the delete should fail as field 'vnf-model' does not exist - String jsonCur = jsonUpd; - jsonUpd = JsonUtils.delJsonValue(jsonUpd, "vnf-request.vnf-inputs.vnf-module"); - Assert.assertEquals(jsonCur, jsonUpd); + public void shouldReturnNullForNonExistentParameter() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + // when, then + assertThat(JsonUtils.getJsonValue(json, "vnf-request.vnf-inputs.bad")).isNull(); } - + @Test -// @Ignore - public void testEmbededXmlRetrievalConversion() { - try { - // extract the embedded XML from the request - String value = JsonUtils.getJsonValue(jsonReq, "variables.bpmnRequest.value"); - String xmlReq = XmlTool.removeNamespaces(XmlTool.normalize(value)); - System.out.println("testEmbededXmlRetrievalConversion(): xml payload: " + xmlReq); - String json = JsonUtils.xml2json(xmlReq); - System.out.println("testEmbededXmlRetrievalConversion(): xml request to json: " + json); - String xmlOut = JsonUtils.json2xml(json); - System.out.println("testEmbededXmlRetrievalConversion(): json request back to xml: " + xmlOut); - Diff diffXml; - try { - // compare the XML before and after - diffXml = new Diff(xmlReq, xmlOut); - Assert.assertTrue(diffXml.similar()); - } catch (SAXException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - } catch (Exception e) { - e.printStackTrace(); - } + public void shouldGetJasonParametersFromArray() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + // when, then + assertThat(JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "name")).isEqualTo("network"); + assertThat(JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "content")) + .isEqualTo("network1111"); + assertThat(JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "name", 1)).isEqualTo("server"); + assertThat(JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "content", 1)) + .isEqualTo("server1111"); + assertThat(JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "badParam")) + .withFailMessage("Expected null for nonexistent param").isNull(); + assertThat(JsonUtils.getJsonParamValue(json, "vnf-request.vnf-params.param", "name", 2)) + .withFailMessage("Expected null for index out of bound").isNull(); } @Test -// @Ignore - // Tests the conversion of a JSON Doc containing a JSON Array to XML - public void testConversionArray() { - try { - String jsonParm = JsonUtils.getJsonNodeValue(jsonReqArray, "requestDetails.requestParameters.ucpeInfo"); - System.out.println("testConversionArray(): json value: " + JsonUtils.prettyJson(jsonParm)); - String xmlOut = JsonUtils.json2xml(jsonParm); - System.out.println("testConversionArray(): json parameters to xml: " + xmlOut); - // strip all the non-data whitespace - xmlOut = xmlOut.replaceAll(">\\s*<", "><"); - System.out.println("testConversionArray(): XML after removing whitespace:" + xmlOut); - String xmlTest = xmlArrayReq.replaceAll(">\\s*<", "><"); + public void shouldAddJsonValue() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + String key = "vnf-request.request-info.comment"; + String value = "Some comment"; + // when + String jsonUpd = JsonUtils.addJsonValue(json, key, value); + // then + String extractedValue = JsonUtils.getJsonValue(jsonUpd, key); + assertThat(extractedValue).isEqualTo(value); + } - Diff diffXml; - try { - diffXml = new Diff(xmlTest, xmlOut); - Assert.assertTrue(diffXml.similar()); - } catch (SAXException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } catch (Exception e) { - e.printStackTrace(); - } + @Test + public void shouldIgnoreAddIfFieldAlreadyExists() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + String key = "vnf-request.vnf-inputs.vnf-name"; + String newValue = "STMTN5MMSC22"; + String oldValue = JsonUtils.getJsonValue(json, key); + // when + String jsonUpd = JsonUtils.addJsonValue(json, key, newValue); + // then + String extractedValue = JsonUtils.getJsonValue(jsonUpd, key); + assertThat(extractedValue).isEqualTo(oldValue).isNotEqualTo(newValue); + } + + @Test + public void shouldUpdateValueInJson() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + String key = "vnf-request.vnf-inputs.vnf-name"; + String newValue = "STMTN5MMSC22"; + String oldValue = JsonUtils.getJsonValue(json, key); + // when + String jsonUpd = JsonUtils.updJsonValue(json, key, newValue); + // then + String extractedValue = JsonUtils.getJsonValue(jsonUpd, key); + assertThat(extractedValue).isNotEqualTo(oldValue).isEqualTo(newValue); + } + + @Test + public void shouldDeleteValue() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + String key = "vnf-request.vnf-inputs.vnf-name"; + String oldValue = JsonUtils.getJsonValue(json, key); + // when + String jsonUpd = JsonUtils.delJsonValue(json, key); + // then + String extractedValue = JsonUtils.getJsonValue(jsonUpd, key); + assertThat(extractedValue).isNotEqualTo(oldValue).isNull(); + } + + @Test + public void shouldReturnOriginalJsonWhenTryingToRemoveNonexistentField() throws Exception { + // given + String json = JsonUtils.xml2json(XML_REQ); + String key = "vnf-request.vnf-inputs.does-not-exist"; + // when + String jsonUpd = JsonUtils.delJsonValue(json, key); + // then + assertThat(jsonUpd).isEqualTo(json); + } + + @Test + public void shouldConvertXmlToJsonAndBackToSameXmlExtractedFromTheRequest() throws Exception { + // given + String value = JsonUtils.getJsonValue(jsonReq, "variables.bpmnRequest.value"); + String xmlReq = XmlTool.removeNamespaces(XmlTool.normalize(value)); + // when + String json = JsonUtils.xml2json(xmlReq); + String xmlOut = JsonUtils.json2xml(json); + // then + Diff diffXml = DiffBuilder.compare(xmlReq).withTest(xmlOut).ignoreWhitespace() + .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byName)).checkForSimilar().build(); + assertThat(diffXml.hasDifferences()).withFailMessage(diffXml.toString()).isFalse(); + } + + @Test + public void shouldConvertJsonContainingArrayToXml() throws Exception { + // when + String jsonParm = JsonUtils.getJsonNodeValue(jsonReqArray, "requestDetails.requestParameters.ucpeInfo"); + String xmlOut = JsonUtils.json2xml(jsonParm); + // then + Diff diffXml = DiffBuilder.compare(XML_ARRAY_REQ).withTest(xmlOut).ignoreWhitespace() + .withNodeMatcher(new DefaultNodeMatcher(ElementSelectors.byName)).checkForSimilar().build(); + assertThat(diffXml.hasDifferences()).withFailMessage(diffXml.toString()).isFalse(); } } diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/TestBaseTask.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/TestBaseTask.java index 862cb76146..9730b129be 100644 --- a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/TestBaseTask.java +++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/TestBaseTask.java @@ -35,6 +35,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import org.openecomp.mso.bpmn.core.utils.CamundaDBSetup; import org.openecomp.mso.logger.MsoLogger; /** diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/CamundaDBSetup.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/utils/CamundaDBSetup.java index 9a8cad6b86..f29ccc75e0 100644 --- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/CamundaDBSetup.java +++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/utils/CamundaDBSetup.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.openecomp.mso.bpmn.core; +package org.openecomp.mso.bpmn.core.utils; import java.sql.Connection; import java.sql.DriverManager; @@ -35,9 +35,6 @@ public class CamundaDBSetup { private static final MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL); private CamundaDBSetup() { - /** - * Constructor. - */ } public static synchronized void configure() throws SQLException { diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java index 21c00918d3..571db76399 100644 --- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java @@ -79,8 +79,8 @@ public class CreateGenericALaCarteServiceInstanceTest extends WorkflowTest { MockGetCustomer("MCBH-1610", "CreateServiceInstance/createServiceInstance_queryGlobalCustomerId_AAIResponse_Success.xml"); MockPutServiceInstance("MCBH-1610", "viprsvc", "RaaTest-1-id", ""); MockGetServiceInstance("MCBH-1610", "viprsvc", "RaaTest-1-id", "GenericFlows/getServiceInstance.xml"); - MockNodeQueryServiceInstanceByName("RAATest-1", ""); - MockNodeQueryServiceInstanceById("RaaTest-1-id", ""); + MockNodeQueryServiceInstanceByName("RAATest-1", null); + MockNodeQueryServiceInstanceById("RaaTest-1-id", null); //SDNC mockSDNCAdapter(200); //DB |