From 4a12f557c13ee03831bf4aa5c3a02eb482998eba Mon Sep 17 00:00:00 2001 From: kurczews Date: Tue, 30 Jan 2018 10:32:23 +0100 Subject: [PATCH] Add coverage for ConfigResourceNode Change-Id: Ida31164383c01340d47b85d59034882c9206b9a2 Issue-ID: APPC-441 Signed-off-by: kurczews --- .../data/services/node/ConfigResourceNode.java | 111 ++++-------- .../data/services/db/TestConfigResourceNode.java | 91 ++++------ .../data/services/node/ConfigResourceNodeTest.java | 188 +++++++++++++++++++++ .../data/services/node/MockDbServiceBuilder.java | 36 ++++ 4 files changed, 294 insertions(+), 132 deletions(-) create mode 100644 appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/node/ConfigResourceNodeTest.java create mode 100644 appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/node/MockDbServiceBuilder.java diff --git a/appc-config/appc-data-services/provider/src/main/java/org/onap/appc/data/services/node/ConfigResourceNode.java b/appc-config/appc-data-services/provider/src/main/java/org/onap/appc/data/services/node/ConfigResourceNode.java index e22567336..8b9b8ddfa 100644 --- a/appc-config/appc-data-services/provider/src/main/java/org/onap/appc/data/services/node/ConfigResourceNode.java +++ b/appc-config/appc-data-services/provider/src/main/java/org/onap/appc/data/services/node/ConfigResourceNode.java @@ -23,6 +23,10 @@ */ package org.onap.appc.data.services.node; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -35,49 +39,65 @@ import org.onap.ccsdk.sli.core.sli.SvcLogicContext; import org.onap.ccsdk.sli.core.sli.SvcLogicException; import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; public class ConfigResourceNode implements SvcLogicJavaPlugin { + static final String DEVICE_CONF_PREFIX = "configfilereference-deviceconfig"; + static final String DEVICE_CONF_FILE_TYPE = "device_configuration"; + + static final String SUCCESS_PREFIX = "configfilereference-success"; + static final String SUCCESS_FILE_TYPE = "configuration_success"; + + static final String FAILURE_PREFIX = "configfilereference-failure"; + static final String FAILURE_FILE_TYPE = "configuration_error"; + + static final String LOG_PREFIX = "configfilereference-log"; + static final String LOG_FILE_TYPE = "log"; + private static final EELFLogger log = EELFManager.getInstance().getLogger(ConfigResourceNode.class); + private final DGGeneralDBService db; + + /** + * Constructor which provide default DB service + */ + public ConfigResourceNode() { + db = DGGeneralDBService.initialise(); + } + + /** + * Constructor which allow to provide custom DB service, prefer to use no-arg constructor + */ + public ConfigResourceNode(DGGeneralDBService dbService) { + db = dbService; + } public void getConfigFileReference(Map inParams, SvcLogicContext ctx) throws SvcLogicException { log.info("Received getConfigFiles call with params : " + inParams); - String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); try { - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; - DGGeneralDBService db = DGGeneralDBService.initialise(); - QueryStatus status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-deviceconfig", - "device_configuration"); + QueryStatus status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, DEVICE_CONF_PREFIX, DEVICE_CONF_FILE_TYPE); if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) throw new Exception("Unable to Read ConfigFileReference:device-configuration"); - status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-success", - "configuration_success"); + status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, SUCCESS_PREFIX, SUCCESS_FILE_TYPE); if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) throw new Exception("Unable to Read ConfigFileReference:configuration_success"); - status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-failure", - "configuration_error"); + status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, FAILURE_PREFIX, FAILURE_FILE_TYPE); if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) throw new Exception("Unable to Read ConfigFileReference:configuration_error"); - status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, "configfilereference-log", "log"); + status = db.getConfigFileReferenceByFileTypeNVnfType(ctx, LOG_PREFIX, LOG_FILE_TYPE); if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) throw new Exception("Unable to Read ConfigFileReference:configuration_log"); - ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); log.info("GetConfigFileReference Successful "); @@ -94,14 +114,10 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { public void getCommonConfigInfo(Map inParams, SvcLogicContext ctx) throws SvcLogicException { log.info("Received getDeviceInfo call with params : " + inParams); - String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); try { - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; - DGGeneralDBService db = DGGeneralDBService.initialise(); - QueryStatus status = db.getDeviceProtocolByVnfType(ctx, "tmp.deviceinterfaceprotocol"); if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) @@ -118,8 +134,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { throw new Exception("Unable to Read configure_action_dg"); } - - ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); log.info("getCommonConfigInfo Successful "); @@ -139,7 +153,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { log.info("Received getTemplate call with params : " + inParams); - String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); String fileCategory = inParams.get(AppcDataServiceConstant.INPUT_PARAM_FILE_CATEGORY); String templateName = ctx.getAttribute("template-name"); @@ -152,13 +165,10 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { log.info("RESPONSEPREFIX : " + responsePrefix); log.info("RESPONSEPREFIX1 : " + responsePrefix1); - DGGeneralDBService db = DGGeneralDBService.initialise(); - if (StringUtils.isBlank(templateName)) { // if ( !StringUtils.isBlank(ctx.getAttribute("vnfc-type"))) { - status = db.getTemplate(ctx, responsePrefix, fileCategory); if (status == QueryStatus.FAILURE) throw new Exception("Unable to Read " + fileCategory); @@ -188,7 +198,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { throw new Exception("Unable to Read " + fileCategory + " template"); } - ctx.setAttribute(responsePrefix1 + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); log.info("GetTemplate Successful "); @@ -211,7 +220,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { try { responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; - DGGeneralDBService db = DGGeneralDBService.initialise(); QueryStatus status = db.saveConfigFiles(ctx, "tmp.configFiles"); if (status == QueryStatus.FAILURE) @@ -249,7 +257,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { try { responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; - DGGeneralDBService db = DGGeneralDBService.initialise(); ctx.setAttribute("tmp.escaped.devicerunningconfig", EscapeUtils.escapeSql(ctx.getAttribute("device-running-config"))); @@ -292,7 +299,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { try { responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; - DGGeneralDBService db = DGGeneralDBService.initialise(); QueryStatus status = db.savePrepareRelationship(ctx, "tmp.preparerel", fileId, sdcArtifactInd); if (status == QueryStatus.FAILURE) @@ -318,10 +324,8 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); try { - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; ctx.setAttribute("tmp.convertconfig.escapeData", EscapeUtils.escapeSql(ctx.getAttribute("configuration"))); - DGGeneralDBService db = DGGeneralDBService.initialise(); if (StringUtils.isBlank(ctx.getAttribute("configuration-params"))) { saveDeviceConfiguration(inParams, ctx, "Request", ctx.getAttribute("tmp.convertconfig.escapeData"), @@ -358,9 +362,7 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); try { - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; - DGGeneralDBService db = DGGeneralDBService.initialise(); if (StringUtils.isBlank(ctx.getAttribute("configuration-params"))) { @@ -397,11 +399,8 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { } } - - public void saveStyleSheetConfig(Map inParams, SvcLogicContext ctx) throws SvcLogicException { - log.info("Received saveStyleSheet call with params : " + inParams); String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); @@ -414,7 +413,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { saveDeviceConfiguration(inParams, ctx, "StyleSheet", ctx.getAttribute("tmp.convertconfig.escapeData"), ctx.getAttribute("tmp.merge.mergedData")); - ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); log.info("saveStyleSheet Successful "); @@ -428,10 +426,8 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { } } - public void getSmmChainKeyFiles(Map inParams, SvcLogicContext ctx) throws SvcLogicException { - log.info("Received saveStyleSheet call with params : " + inParams); String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); @@ -441,32 +437,24 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { try { - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; - DGGeneralDBService db = DGGeneralDBService.initialise(); - - status = db.getTemplateByArtifactType(ctx, "smm", "smm", siteLocation); if (status == QueryStatus.FAILURE) throw new Exception("Unable to Read smm file"); - status = db.getTemplateByArtifactType(ctx, "intermediate-ca-chain", "intermediate_ca_chain", siteLocation); if (status == QueryStatus.FAILURE) throw new Exception("Unable to Read intermediate_ca_chain file"); - - status = db.getTemplateByArtifactType(ctx, "server-certificate-and-key", "server_certificate_and_key", siteLocation); if (status == QueryStatus.FAILURE) throw new Exception("Unable to Read server_certificate_and_key file"); - ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); log.info("saveStyleSheet Successful "); @@ -480,7 +468,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { } } - public void saveDeviceConfiguration(Map inParams, SvcLogicContext ctx, String dataSource, String fileContent, String deviceConfig) throws SvcLogicException { ctx.setAttribute("data-source", dataSource); @@ -505,7 +492,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { saveConfigFiles(inParams, ctx); } - public void getConfigFilesByVnfVmNCategory(Map inParams, SvcLogicContext ctx) throws SvcLogicException { @@ -516,16 +502,11 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { String vnfId = inParams.get(AppcDataServiceConstant.INPUT_PARAM_VNF_ID); String vmName = inParams.get(AppcDataServiceConstant.INPUT_PARAM_VM_NAME); try { - - - DGGeneralDBService db = DGGeneralDBService.initialise(); - QueryStatus status = db.getConfigFilesByVnfVmNCategory(ctx, responsePrefix, fileCategory, vnfId, vmName); if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) throw new Exception("Unable to get " + ctx.getAttribute("fileCategory") + " from configfiles"); - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); @@ -541,7 +522,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { } } - public void getDownloadConfigTemplateByVnf(Map inParams, SvcLogicContext ctx) throws SvcLogicException { @@ -549,14 +529,11 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); try { - DGGeneralDBService db = DGGeneralDBService.initialise(); - QueryStatus status = db.getDownloadConfigTemplateByVnf(ctx, responsePrefix); if (status == QueryStatus.NOT_FOUND || status == QueryStatus.FAILURE) throw new Exception("Unable to get download config template."); - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_SUCCESS); @@ -572,11 +549,8 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { } } - public void saveConfigTransactionLog(Map inParams, SvcLogicContext ctx) throws SvcLogicException { - - String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); String messageType = inParams.get(AppcDataServiceConstant.INPUT_PARAM_MESSAGE_TYPE); @@ -585,17 +559,13 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { try { SvcLogicContext logctx = new SvcLogicContext(); - String escapedMessage = EscapeUtils.escapeSql(message); - logctx.setAttribute("request-id", ctx.getAttribute("request-id")); logctx.setAttribute("log-message-type", messageType); logctx.setAttribute("log-message", escapedMessage); - responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; - DGGeneralDBService db = DGGeneralDBService.initialise(); QueryStatus status = db.saveConfigTransactionLog(logctx, responsePrefix); logctx.setAttribute("log-message", null); @@ -603,33 +573,23 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { if (status == QueryStatus.FAILURE) throw new Exception("Unable to insert into config_transaction_log"); - } catch (Exception e) { ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_STATUS, AppcDataServiceConstant.OUTPUT_STATUS_FAILURE); ctx.setAttribute(responsePrefix + AppcDataServiceConstant.OUTPUT_PARAM_ERROR_MESSAGE, e.getMessage()); - throw new SvcLogicException(e.getMessage()); } } - - public void getVnfcReference(Map inParams, SvcLogicContext ctx) throws SvcLogicException { log.info("Received getVnfcReference call with params : " + inParams); String responsePrefix = inParams.get(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX); - - QueryStatus status = null; try { - - - DGGeneralDBService db = DGGeneralDBService.initialise(); - if (!StringUtils.isBlank(ctx.getAttribute("vnfc-type"))) { status = db.getVnfcReferenceByVnfcTypeNAction(ctx, responsePrefix); @@ -672,7 +632,6 @@ public class ConfigResourceNode implements SvcLogicJavaPlugin { return; } try { - DGGeneralDBService db = DGGeneralDBService.initialise(); String cap = db.getCapability(ctx, inParams.get("vnf-type")); log.info("getCapability::returned from DB::+cap"); if (StringUtils.isBlank(cap)) { diff --git a/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/db/TestConfigResourceNode.java b/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/db/TestConfigResourceNode.java index 76ddbdcdf..e264ed5ad 100644 --- a/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/db/TestConfigResourceNode.java +++ b/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/db/TestConfigResourceNode.java @@ -24,9 +24,12 @@ package org.onap.appc.data.services.db; -import java.util.ArrayList; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; import java.util.HashMap; import java.util.Map; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import org.junit.Ignore; import org.junit.Test; @@ -35,25 +38,21 @@ import org.onap.appc.data.services.node.ConfigResourceNode; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.ObjectNode; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - +@Deprecated // class must be rewritten public class TestConfigResourceNode { + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testgetConfigFileReferenc() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); ctx.setAttribute("test", "test"); - ConfigResourceNode dbService = new ConfigResourceNode(); - Map map = new HashMap(); + ConfigResourceNode dbService = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map map = new HashMap<>(); dbService.getConfigFileReference(map, ctx); } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testgetTemplate() throws SvcLogicException { @@ -63,75 +62,81 @@ public class TestConfigResourceNode { ctx.setAttribute(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX, "tmp.test"); ctx.setAttribute("template-name", "test.json"); - ConfigResourceNode dbService = new ConfigResourceNode(); - Map map = new HashMap(); + ConfigResourceNode dbService = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map map = new HashMap<>(); dbService.getTemplate(map, ctx); } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testgetVnfcReference() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); ctx.setAttribute("test", "test"); - ConfigResourceNode dbService = new ConfigResourceNode(); - Map map = new HashMap(); + ConfigResourceNode dbService = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map map = new HashMap<>(); map.put(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX, "tmp.test"); dbService.getVnfcReference(map, ctx); } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testgetSmmChainKeyFiles() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); ctx.setAttribute("test", "test"); ctx.setAttribute("site-location","test/location"); - ConfigResourceNode dbService = new ConfigResourceNode(); - Map map = new HashMap(); + ConfigResourceNode dbService = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map map = new HashMap<>(); map.put(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX, "tmp.test"); dbService.getSmmChainKeyFiles(map, ctx); } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testgetDownloadConfigTemplateByVnf() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); ctx.setAttribute("test", "test"); - ConfigResourceNode dbService = new ConfigResourceNode(); - Map map = new HashMap(); + ConfigResourceNode dbService = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map map = new HashMap<>(); map.put(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX, "tmp.test"); dbService.getDownloadConfigTemplateByVnf(map, ctx); } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testgetCommonConfigInfo() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); ctx.setAttribute("test", "test"); - ConfigResourceNode dbService = new ConfigResourceNode(); - Map map = new HashMap(); + ConfigResourceNode dbService = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map map = new HashMap<>(); dbService.getCommonConfigInfo(map, ctx); } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testupdateUploadConfigss() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); ctx.setAttribute("test", "test"); - ConfigResourceNode dbService = new ConfigResourceNode(); - Map map = new HashMap(); + ConfigResourceNode dbService = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map map = new HashMap<>(); dbService.updateUploadConfig(map, ctx); } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testgetConfigFilesByVnfVmNCategory() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); - ConfigResourceNode node = new ConfigResourceNode(); - Map inParams = new HashMap(); + ConfigResourceNode node = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map inParams = new HashMap<>(); inParams.put(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX, "response-prefix"); inParams.put(AppcDataServiceConstant.INPUT_PARAM_FILE_CATEGORY, "config_template"); inParams.put((String) AppcDataServiceConstant.INPUT_PARAM_VNF_ID, "test"); @@ -139,12 +144,13 @@ public class TestConfigResourceNode { node.getConfigFilesByVnfVmNCategory(inParams, ctx); } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testsaveConfigTransactionLog() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); - ConfigResourceNode node = new ConfigResourceNode(); - Map inParams = new HashMap(); + ConfigResourceNode node = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map inParams = new HashMap<>(); inParams.put(AppcDataServiceConstant.INPUT_PARAM_MESSAGE, "testMessage"); inParams.put(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX, "response-prefix"); inParams.put(AppcDataServiceConstant.INPUT_PARAM_MESSAGE_TYPE, "testmessage"); @@ -153,12 +159,13 @@ public class TestConfigResourceNode { } + @Deprecated // timeout due NPE @Ignore("Test is taking 60 seconds") @Test(expected = Exception.class) public void testsaveConfigBlock() throws SvcLogicException { SvcLogicContext ctx = new SvcLogicContext(); - ConfigResourceNode node = new ConfigResourceNode(); - Map inParams = new HashMap(); + ConfigResourceNode node = new ConfigResourceNode(DGGeneralDBService.initialise()); + Map inParams = new HashMap<>(); inParams.put(AppcDataServiceConstant.INPUT_PARAM_RESPONSE_PREFIX, "tmp"); ctx.setAttribute("configuration", "test"); ctx.setAttribute("tmp.convertconfig.escapeData", "test"); @@ -166,32 +173,4 @@ public class TestConfigResourceNode { node.saveConfigBlock(inParams, ctx); } - @Test - public void testProcessCapabilitiesForVMLevel () throws Exception { - //{"capabilities":{"vnfc":[],"vm":[{"ConfigureTest":["SSC","MMSC"]}],"vf-module":[],"vnf":["ConfigModify","HealthCheck"]}} - SvcLogicContext ctx = new SvcLogicContext(); - ConfigResourceNode node = new ConfigResourceNode(); - String findCapability="Restart"; - JsonNode subCapabilities = JsonNodeFactory.instance.objectNode(); - String subCaps= "[{\"Restart\":[\"SSC\",\"MMC\"]},{\"Rebuild\":[\"SSC\"]},{\"Migrate\":[\"SSC\"]},{\"Snapshot\":[\"SSC\"]},{\"Start\":[\"SSC\"]},{\"Stop\":[\"SSC\"]}]"; - ObjectMapper m = new ObjectMapper(); - subCapabilities = m.readTree(subCaps); - String vServerId="testServer"; - ctx.setAttribute("tmp.vnfInfo.vm.vnfc.vnfc-function-code", "MMC"); - ctx.setAttribute("tmp.vnfInfo.vm.vnfc.vnfc-name","testVnfc") ; - node.processCapabilitiesForVMLevel( vServerId, ctx, - findCapability, subCapabilities); - String result=ctx.getAttribute("capabilities"); - assertEquals(result,"Supported"); - } - - @Test - public void testcheckIfCapabilityCheckNeeded () throws Exception { - ConfigResourceNode node = new ConfigResourceNode(); - String findCapability="Start"; - String capLevel="vnf"; - boolean result=node.checkIfCapabilityCheckNeeded(capLevel,findCapability); - assertFalse(result); - } - } diff --git a/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/node/ConfigResourceNodeTest.java b/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/node/ConfigResourceNodeTest.java new file mode 100644 index 000000000..6ee7a9da7 --- /dev/null +++ b/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/node/ConfigResourceNodeTest.java @@ -0,0 +1,188 @@ +package org.onap.appc.data.services.node; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import java.util.HashMap; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import static org.mockito.Mockito.mock; +import org.onap.appc.data.services.db.DGGeneralDBService; +import static org.onap.appc.data.services.node.ConfigResourceNode.DEVICE_CONF_FILE_TYPE; +import static org.onap.appc.data.services.node.ConfigResourceNode.DEVICE_CONF_PREFIX; +import static org.onap.appc.data.services.node.ConfigResourceNode.FAILURE_FILE_TYPE; +import static org.onap.appc.data.services.node.ConfigResourceNode.FAILURE_PREFIX; +import static org.onap.appc.data.services.node.ConfigResourceNode.LOG_FILE_TYPE; +import static org.onap.appc.data.services.node.ConfigResourceNode.LOG_PREFIX; +import static org.onap.appc.data.services.node.ConfigResourceNode.SUCCESS_FILE_TYPE; +import static org.onap.appc.data.services.node.ConfigResourceNode.SUCCESS_PREFIX; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource; + +public class ConfigResourceNodeTest { + + private HashMap inParams; + private SvcLogicContext contextMock; + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Before + public void setUp() { + contextMock = mock(SvcLogicContext.class); + inParams = new HashMap<>(); + } + + /** + * Example data: + * + * {"capabilities":{"vnfc":[],"vm":[{"ConfigureTest":["SSC","MMSC"]}],"vf-module":[],"vnf":["ConfigModify","HealthCheck"]}} + * + */ + @Test + public void shouldProcessCapabilitiesForVMLevel() throws Exception { + SvcLogicContext ctx = new SvcLogicContext(); + ConfigResourceNode node = new ConfigResourceNode(DGGeneralDBService.initialise()); + String findCapability = "Restart"; + JsonNodeFactory.instance.objectNode(); + String subCaps = "[{\"Restart\":[\"SSC\",\"MMC\"]},{\"Rebuild\":[\"SSC\"]},{\"Migrate\":[\"SSC\"]},{\"Snapshot\":[\"SSC\"]},{\"Start\":[\"SSC\"]},{\"Stop\":[\"SSC\"]}]"; + ObjectMapper m = new ObjectMapper(); + JsonNode subCapabilities = m.readTree(subCaps); + String vServerId = "testServer"; + ctx.setAttribute("tmp.vnfInfo.vm.vnfc.vnfc-function-code", "MMC"); + ctx.setAttribute("tmp.vnfInfo.vm.vnfc.vnfc-name", "testVnfc"); + node.processCapabilitiesForVMLevel(vServerId, ctx, findCapability, subCapabilities); + String result = ctx.getAttribute("capabilities"); + assertEquals(result, "Supported"); + } + + @Test + public void shouldCheckIfCapabilityCheckNeeded() { + ConfigResourceNode node = new ConfigResourceNode(DGGeneralDBService.initialise()); + String findCapability = "Start"; + String capLevel = "vnf"; + boolean result = node.checkIfCapabilityCheckNeeded(capLevel, findCapability); + assertFalse(result); + } + + @Test + public void should_not_throw_if_all_db_params_return_success() throws SvcLogicException { + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder().build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + + @Test + public void should_throw_exception_on_device_config_missing() throws Exception { + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder() + .configFileReference(DEVICE_CONF_PREFIX, DEVICE_CONF_FILE_TYPE, SvcLogicResource.QueryStatus.NOT_FOUND) + .build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + + expectedException.expect(SvcLogicException.class); + expectedException.expectMessage("Unable to Read ConfigFileReference:device-configuration"); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + + @Test + public void should_throw_exception_on_device_config_failure() throws Exception { + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder() + .configFileReference(DEVICE_CONF_PREFIX, DEVICE_CONF_FILE_TYPE, SvcLogicResource.QueryStatus.FAILURE) + .build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + + expectedException.expect(SvcLogicException.class); + expectedException.expectMessage("Unable to Read ConfigFileReference:device-configuration"); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + + @Test + public void should_throw_exception_on_success_param_missing() throws Exception { + + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder() + .configFileReference(SUCCESS_PREFIX, SUCCESS_FILE_TYPE, SvcLogicResource.QueryStatus.NOT_FOUND) + .build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + + expectedException.expect(SvcLogicException.class); + expectedException.expectMessage("Unable to Read ConfigFileReference:configuration_success"); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + + @Test + public void should_throw_exception_on_success_param_failure() throws Exception { + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder() + .configFileReference(SUCCESS_PREFIX, SUCCESS_FILE_TYPE, SvcLogicResource.QueryStatus.FAILURE) + .build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + + expectedException.expect(SvcLogicException.class); + expectedException.expectMessage("Unable to Read ConfigFileReference:configuration_success"); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + + @Test + public void should_throw_exception_on_failure_param_missing() throws Exception { + + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder() + .configFileReference(FAILURE_PREFIX, FAILURE_FILE_TYPE, SvcLogicResource.QueryStatus.NOT_FOUND) + .build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + + expectedException.expect(SvcLogicException.class); + expectedException.expectMessage("Unable to Read ConfigFileReference:configuration_error"); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + + @Test + public void should_throw_exception_on_failure_param_failure() throws Exception { + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder() + .configFileReference(FAILURE_PREFIX, FAILURE_FILE_TYPE, SvcLogicResource.QueryStatus.FAILURE) + .build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + + expectedException.expect(SvcLogicException.class); + expectedException.expectMessage("Unable to Read ConfigFileReference:configuration_error"); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + + @Test + public void should_throw_exception_on_log_param_missing() throws Exception { + + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder() + .configFileReference(LOG_PREFIX, LOG_FILE_TYPE, SvcLogicResource.QueryStatus.NOT_FOUND) + .build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + + expectedException.expect(SvcLogicException.class); + expectedException.expectMessage("Unable to Read ConfigFileReference:configuration_log"); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + + @Test + public void should_throw_exception_on_log_param_failure() throws Exception { + DGGeneralDBService dbServiceMock = new MockDbServiceBuilder() + .configFileReference(LOG_PREFIX, LOG_FILE_TYPE, SvcLogicResource.QueryStatus.FAILURE) + .build(); + + ConfigResourceNode configResourceNode = new ConfigResourceNode(dbServiceMock); + + expectedException.expect(SvcLogicException.class); + expectedException.expectMessage("Unable to Read ConfigFileReference:configuration_log"); + configResourceNode.getConfigFileReference(inParams, contextMock); + } + +} \ No newline at end of file diff --git a/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/node/MockDbServiceBuilder.java b/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/node/MockDbServiceBuilder.java new file mode 100644 index 000000000..04379e5dc --- /dev/null +++ b/appc-config/appc-data-services/provider/src/test/java/org/onap/appc/data/services/node/MockDbServiceBuilder.java @@ -0,0 +1,36 @@ +package org.onap.appc.data.services.node; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import org.onap.appc.data.services.db.DGGeneralDBService; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource; + +class MockDbServiceBuilder { + + private final DGGeneralDBService dbServiceMock; + + MockDbServiceBuilder() throws SvcLogicException { + dbServiceMock = mock(DGGeneralDBService.class); + + doReturn(SvcLogicResource.QueryStatus.SUCCESS) + .when(dbServiceMock) + .getConfigFileReferenceByFileTypeNVnfType(any(SvcLogicContext.class), anyString(), anyString()); + } + + MockDbServiceBuilder configFileReference(String prefix, String fileType, SvcLogicResource.QueryStatus status) throws SvcLogicException { + doReturn(status) + .when(dbServiceMock) + .getConfigFileReferenceByFileTypeNVnfType(any(SvcLogicContext.class), eq(prefix), eq(fileType)); + + return this; + } + + DGGeneralDBService build() { + return dbServiceMock; + } +} -- 2.16.6