aboutsummaryrefslogtreecommitdiffstats
path: root/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org
diff options
context:
space:
mode:
authorPatrick Brady <pb071s@att.com>2017-02-10 15:00:49 -0800
committerPatrick Brady <pb071s@att.com>2017-02-10 15:01:38 -0800
commit57b5eeff74c35a75472d9e8cd5714eea6cc5a267 (patch)
treed36ed37d9ba818de6c51de025d4103b1b1ad8be3 /app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org
parent1b019964e34360484876623fae8032deb4abc558 (diff)
Initial OpenECOMP APPC commit
Change-Id: Ifc3647aec40c0507d260ccc041c10a2aa1441c74 Signed-off-by: Patrick Brady <pb071s@att.com>
Diffstat (limited to 'app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org')
-rw-r--r--app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/DAOServiceMock.java97
-rw-r--r--app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/MockOperationalStateValidatorImpl.java61
-rw-r--r--app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientFactoryMock.java43
-rw-r--r--app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientJschMock.java100
-rw-r--r--app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientPluginImplTest.java678
-rw-r--r--app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfDBPluginImplTest.java250
-rw-r--r--app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/ObjectMapperMock.java45
-rw-r--r--app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/OperationStateValidatorFactoryMock.java47
8 files changed, 1321 insertions, 0 deletions
diff --git a/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/DAOServiceMock.java b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/DAOServiceMock.java
new file mode 100644
index 000000000..38d74c300
--- /dev/null
+++ b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/DAOServiceMock.java
@@ -0,0 +1,97 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.dg.netconf.impl;
+
+import java.util.HashMap;
+
+import org.openecomp.appc.adapter.netconf.ConnectionDetails;
+import org.openecomp.appc.adapter.netconf.NetconfConnectionDetails;
+import org.openecomp.appc.adapter.netconf.NetconfDataAccessService;
+import org.openecomp.appc.adapter.netconf.exception.DataAccessException;
+import org.openecomp.sdnc.sli.resource.dblib.DbLibService;
+
+class DAOServiceMock implements NetconfDataAccessService {
+
+ private String configFile;
+ private ConnectionDetails connection;
+ private HashMap<String, String> backupConf;
+
+ @Override
+ public void setSchema(String schema) {
+ }
+
+ @Override
+ public void setDbLibService(DbLibService dbLibService) {
+ }
+
+ void setConfigFile(String configFile) {
+ this.configFile = configFile;
+ }
+
+ public HashMap<String, String> getBackupConf() {
+ return backupConf;
+ }
+
+ public void setConnection(ConnectionDetails connection) {
+ this.connection = connection;
+ }
+
+ @Override
+ public String retrieveConfigFileName(String xmlID) throws DataAccessException {
+ if (!xmlID.equals("wrong")) {
+ return configFile;
+ } else {
+ throw new DataAccessException();
+ }
+ }
+
+ @Override
+ public boolean retrieveConnectionDetails(String vnfType, ConnectionDetails connectionDetails) throws
+ DataAccessException {
+ return false;
+ }
+
+ @Override
+ public boolean retrieveNetconfConnectionDetails(String vnfType, NetconfConnectionDetails connectionDetails) throws
+ DataAccessException {
+ if (vnfType.equals("VNF")) {
+ connectionDetails.setHost(connection.getHost());
+ connectionDetails.setPassword(connection.getPassword());
+ connectionDetails.setPort(connection.getPort());
+ connectionDetails.setUsername(connection.getUsername());
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean logDeviceInteraction(String instanceId, String requestId, String creationDate, String logText) throws
+ DataAccessException {
+ this.backupConf = new HashMap<>();
+ backupConf.put("creationDate", creationDate);
+ backupConf.put("logText", logText);
+ return true;
+ }
+
+}
diff --git a/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/MockOperationalStateValidatorImpl.java b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/MockOperationalStateValidatorImpl.java
new file mode 100644
index 000000000..7109fe8e8
--- /dev/null
+++ b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/MockOperationalStateValidatorImpl.java
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.dg.netconf.impl;
+
+import org.openecomp.appc.adapter.netconf.OperationalStateValidator;
+import org.openecomp.appc.adapter.netconf.VnfType;
+import org.openecomp.appc.exceptions.APPCException;
+
+
+public class MockOperationalStateValidatorImpl implements OperationalStateValidator {
+
+ private boolean validated;
+ private String configurationFileName;
+
+ public boolean isValidated() {
+ return validated;
+ }
+
+ @Override
+ public VnfType getVnfType() {
+ return null;
+ }
+
+ @Override
+ public String getConfigurationFileName() {
+ return configurationFileName;
+ }
+
+ @Override
+ public void validateResponse(String response) throws APPCException {
+ if (response.equals("wrong")) {
+ throw new APPCException();
+ } else {
+ this.validated = true;
+ }
+
+ }
+
+ public void setConfigurationFileName(String configurationFileName) {
+ this.configurationFileName = configurationFileName;
+ }
+}
diff --git a/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientFactoryMock.java b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientFactoryMock.java
new file mode 100644
index 000000000..73dba9a29
--- /dev/null
+++ b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientFactoryMock.java
@@ -0,0 +1,43 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.dg.netconf.impl;
+
+import org.openecomp.appc.adapter.netconf.NetconfClient;
+import org.openecomp.appc.adapter.netconf.NetconfClientFactory;
+import org.openecomp.appc.adapter.netconf.NetconfClientType;
+import org.openecomp.appc.adapter.netconf.jsch.NetconfClientJsch;
+import org.openecomp.appc.adapter.netconf.odlconnector.NetconfClientRestconfImpl;
+
+
+public class NetconfClientFactoryMock extends NetconfClientFactory {
+
+ private final NetconfClientJschMock jschClient = new NetconfClientJschMock();
+
+ @Override
+ public NetconfClient GetNetconfClient(NetconfClientType type){
+
+ return jschClient;
+
+ }
+}
+
+
diff --git a/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientJschMock.java b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientJschMock.java
new file mode 100644
index 000000000..5c01724f1
--- /dev/null
+++ b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientJschMock.java
@@ -0,0 +1,100 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.dg.netconf.impl;
+
+import org.openecomp.appc.adapter.netconf.NetconfClient;
+import org.openecomp.appc.adapter.netconf.NetconfConnectionDetails;
+import org.openecomp.appc.exceptions.APPCException;
+
+
+public class NetconfClientJschMock implements NetconfClient {
+
+ private boolean connection;
+ private String lastMessage;
+ private String answer = "answer";
+ private String configuration;
+ private NetconfConnectionDetails lastConnectionDetails;
+
+ public boolean isConnection() {
+ return connection;
+ }
+
+ public String getLastMessage() {
+ return lastMessage;
+ }
+
+ public String getAnswer() {
+ return answer;
+ }
+
+ public String getConf() {
+ return configuration;
+ }
+
+ public void setConf(String configuration) {
+ this.configuration = configuration;
+ }
+
+ public void setAnswer(String answer) {
+ this.answer = answer;
+ }
+
+ public NetconfConnectionDetails getLastConnectionDetails() {
+ return lastConnectionDetails;
+ }
+
+ @Override
+ public void connect(NetconfConnectionDetails connectionDetails) throws APPCException {
+ this.connection = true;
+ this.lastConnectionDetails = connectionDetails;
+
+ }
+
+ @Override
+ public String exchangeMessage(String message) throws APPCException {
+ if (connection) {
+ this.lastMessage = message;
+ return answer;
+ } else return null;
+ }
+
+ @Override
+ public void configure(String configuration) throws APPCException {
+ if (connection) {
+ this.configuration = configuration;
+ }
+
+ }
+
+ @Override
+ public String getConfiguration() throws APPCException {
+ if (connection) {
+ return configuration;
+ } else return null;
+ }
+
+ @Override
+ public void disconnect() throws APPCException {
+ this.connection = false;
+
+ }
+}
diff --git a/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientPluginImplTest.java b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientPluginImplTest.java
new file mode 100644
index 000000000..b3bb4858a
--- /dev/null
+++ b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfClientPluginImplTest.java
@@ -0,0 +1,678 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.dg.netconf.impl;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+import org.openecomp.appc.adapter.netconf.*;
+import org.openecomp.appc.adapter.netconf.util.Constants;
+import org.openecomp.appc.dg.netconf.impl.NetconfClientPluginImpl;
+import org.openecomp.appc.exceptions.APPCException;
+import org.openecomp.sdnc.sli.SvcLogicContext;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import java.lang.reflect.Field;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.powermock.api.mockito.PowerMockito.when;
+
+
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({OperationalStateValidatorFactory.class, NetconfClientPluginImpl.class, FrameworkUtil.class, ObjectMapper.class})
+
+public class NetconfClientPluginImplTest {
+ private NetconfClientPluginImpl netconfClientPlugin;
+ private NetconfDataAccessService dao;
+ private NetconfClientFactory clientFactory;
+ private Map<String, String> params;
+
+ private final BundleContext bundleContext = Mockito.mock(BundleContext.class);
+ private final Bundle bundleService = Mockito.mock(Bundle.class);
+ private final ServiceReference sref1 = Mockito.mock(ServiceReference.class);
+ private final ServiceReference sref2 = Mockito.mock(ServiceReference.class);
+ private final ServiceReference sref3 = Mockito.mock(ServiceReference.class);
+ private static final String DG_OUTPUT_STATUS_MESSAGE = "output.status.message";
+
+
+ String host = "http://www.test.com";
+ String host1 = "http://www.test1.com";
+ String vnfType = "VNF";
+ int port = 8080;
+ String username = "test";
+ String password = "test";
+ String connectionDetails = "{\"host\":\"" + host + "\",\"port\":" + port + ",\"username\":\"" + username + "\",\"password\":\"" + password + "\",\"capabilities\":null,\"additionalProperties\":null}";
+ String fileContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<rpc message-id=\"101\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n" +
+ "\t<get-config>\n" +
+ "\t\t<source>\n" +
+ "\t\t\t<running/>\n" +
+ "\t\t </source>\n" +
+ "\t</get-config>\n" +
+ "</rpc>'";
+ String operationalState = "<rpc message-id=\"101\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n" +
+ " <get>\n" +
+ " <filter>\n" +
+ " <ManagedElement xmlns=\"urn:org:openecomp:appc:Test\">\n" +
+ " <VnfFunction xmlns=\"urn:org:openecomop:appc:Test\">\n" +
+ " <ProcessorManagement>\n" +
+ " <MatedPair>\n" +
+ " <operationalState/>\n" +
+ " <PayloadProcessor>\n" +
+ " <operationalState/>\n" +
+ " </PayloadProcessor>\n" +
+ " </MatedPair>\n" +
+ " <SystemController>\n" +
+ " <operationalState/>\n" +
+ " </SystemController>\n" +
+ " </ProcessorManagement>\n" +
+ " </VnfFunction>\n" +
+ " </ManagedElement>\n" +
+ " </filter>\n" +
+ " </get>\n" +
+ "</rpc>\n";
+
+
+ @Before
+ public void setUp() throws NoSuchFieldException, IllegalAccessException {
+ clientFactory = new NetconfClientFactoryMock();
+
+ }
+
+
+ @Test
+ public void testConfigure() throws Exception {
+
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+
+ params = new HashMap<>();
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, connectionDetails);
+ params.put(Constants.FILE_CONTENT_FIELD_NAME, fileContent);
+
+ netconfClientPlugin.configure(params, ctx);
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+
+ try {
+ Assert.assertEquals("wrong configuration", fileContent, client.getConf());
+ Assert.assertEquals("wrong host", host, client.getLastConnectionDetails().getHost());
+ Assert.assertEquals("wrong port", port, client.getLastConnectionDetails().getPort());
+ Assert.assertEquals("wrong username", username, client.getLastConnectionDetails().getUsername());
+ Assert.assertEquals("wrong password", password, client.getLastConnectionDetails().getPassword());
+ Assert.assertFalse(client.isConnection());
+ } catch (Exception e) {
+ Assert.fail("failed with because of " + e.getCause());
+ }
+
+
+ }
+
+
+ @Test
+ public void testConfigureNegativeIOException() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+
+ params = new HashMap<>();
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, "{" + connectionDetails);
+ params.put(Constants.FILE_CONTENT_FIELD_NAME, fileContent);
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+
+
+ try {
+ netconfClientPlugin.configure(params, ctx);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ Assert.assertNull(client.getLastConnectionDetails());
+ Assert.assertNull(client.getConf());
+ }
+
+ }
+
+ @Test
+ public void testOperationStateValidation() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setAnswer(operationalState);
+
+
+ params = new HashMap<>();
+ params.put(Constants.VNF_TYPE_FIELD_NAME, vnfType);
+ params.put(Constants.VNF_HOST_IP_ADDRESS_FIELD_NAME, host1);
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, connectionDetails);
+ MockOperationalStateValidatorImpl validatorMock = new MockOperationalStateValidatorImpl();
+ validatorMock.setConfigurationFileName("VnfGetRunningConfig");
+
+ PowerMockito.mockStatic(OperationalStateValidatorFactory.class);
+ when(OperationalStateValidatorFactory.getOperationalStateValidator(Matchers.any(VnfType.class))).thenReturn(validatorMock);
+
+ netconfClientPlugin.operationStateValidation(params, ctx);
+
+ Assert.assertTrue("validation process failed", validatorMock.isValidated());
+ Assert.assertEquals(fileContent, client.getLastMessage());
+ }
+
+
+ @Test
+ public void testOperationStateValidationNegativeJsonProcessingNullIllegalStateException() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setAnswer(operationalState);
+
+ params = new HashMap<>();
+ params.put(Constants.VNF_TYPE_FIELD_NAME, vnfType);
+ params.put(Constants.VNF_HOST_IP_ADDRESS_FIELD_NAME, host1);
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, connectionDetails);
+ MockOperationalStateValidatorImpl validatorMock = new MockOperationalStateValidatorImpl();
+ validatorMock.setConfigurationFileName("VnfGetRunningConfig");
+
+ PowerMockito.mockStatic(OperationalStateValidatorFactory.class);
+ when(OperationalStateValidatorFactory.getOperationalStateValidator(Matchers.any(VnfType.class))).thenReturn(validatorMock);
+ substituteMapper(true);
+
+ try {
+ netconfClientPlugin.operationStateValidation(params, ctx);
+ substituteMapper(false);
+ } catch (APPCException e) {
+ substituteMapper(false);
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+ Assert.assertFalse(validatorMock.isValidated());
+ Assert.assertNull(client.getLastMessage());
+ }
+ }
+
+ @Test
+ public void testOperationStateValidationNegativeConnectionDetailsAreNullNullPointerException() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setAnswer(operationalState);
+
+
+ params = new HashMap<>();
+ params.put(Constants.VNF_TYPE_FIELD_NAME, vnfType);
+ params.put(Constants.VNF_HOST_IP_ADDRESS_FIELD_NAME, host1);
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, null);
+ MockOperationalStateValidatorImpl validatorMock = new MockOperationalStateValidatorImpl();
+ validatorMock.setConfigurationFileName("VnfGetRunningConfig");
+
+ PowerMockito.mockStatic(OperationalStateValidatorFactory.class);
+ when(OperationalStateValidatorFactory.getOperationalStateValidator(Matchers.any(VnfType.class))).thenReturn(validatorMock);
+ ObjectMapper mapper = PowerMockito.mock(ObjectMapper.class);
+ final NetconfConnectionDetails netconfConnectionDetails = null;
+ when(mapper.readValue(Matchers.anyString(), Matchers.any(Class.class))).thenReturn(netconfConnectionDetails);
+
+
+ try {
+ netconfClientPlugin.operationStateValidation(params, ctx);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+ Assert.assertFalse("validation process failed", validatorMock.isValidated());
+
+ }
+ }
+
+
+ @Test
+ public void testOperationStateValidationNegativeAppcException() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setAnswer("wrong");
+
+
+ params = new HashMap<>();
+ params.put(Constants.VNF_TYPE_FIELD_NAME, vnfType);
+ params.put(Constants.VNF_HOST_IP_ADDRESS_FIELD_NAME, host1);
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, connectionDetails);
+ MockOperationalStateValidatorImpl validatorMock = new MockOperationalStateValidatorImpl();
+ validatorMock.setConfigurationFileName("VnfGetRunningConfig");
+
+ PowerMockito.mockStatic(OperationalStateValidatorFactory.class);
+ when(OperationalStateValidatorFactory.getOperationalStateValidator(Matchers.any(VnfType.class))).thenReturn(validatorMock);
+
+
+ try {
+ netconfClientPlugin.operationStateValidation(params, ctx);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+ Assert.assertFalse("validation process failed", validatorMock.isValidated());
+
+ }
+ }
+
+
+ @Test
+ public void testOperationStateValidatioConnectionDetailsInParamsAreEmpty() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setAnswer(operationalState);
+ ((DAOServiceMock) dao).setConnection(getConnectionDetails());
+
+
+ params = new HashMap<>();
+ params.put(Constants.VNF_TYPE_FIELD_NAME, vnfType);
+ params.put(Constants.VNF_HOST_IP_ADDRESS_FIELD_NAME, host1);
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, "");
+ MockOperationalStateValidatorImpl validatorMock = new MockOperationalStateValidatorImpl();
+ validatorMock.setConfigurationFileName("VnfGetRunningConfig");
+
+ PowerMockito.mockStatic(OperationalStateValidatorFactory.class);
+ when(OperationalStateValidatorFactory.getOperationalStateValidator(Matchers.any(VnfType.class))).thenReturn(validatorMock);
+
+ netconfClientPlugin.operationStateValidation(params, ctx);
+
+ Assert.assertTrue("validation process failed", validatorMock.isValidated());
+ Assert.assertEquals(fileContent, client.getLastMessage());
+ }
+
+ @Test
+ public void testOperationStateValidatioConnectionDetailsInParamsAreNull() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setAnswer(operationalState);
+ ((DAOServiceMock) dao).setConnection(getConnectionDetails());
+
+
+ params = new HashMap<>();
+ params.put(Constants.VNF_TYPE_FIELD_NAME, vnfType);
+ params.put(Constants.VNF_HOST_IP_ADDRESS_FIELD_NAME, host1);
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, null);
+ MockOperationalStateValidatorImpl validatorMock = new MockOperationalStateValidatorImpl();
+ validatorMock.setConfigurationFileName("VnfGetRunningConfig");
+
+ PowerMockito.mockStatic(OperationalStateValidatorFactory.class);
+ when(OperationalStateValidatorFactory.getOperationalStateValidator(Matchers.any(VnfType.class))).thenReturn(validatorMock);
+
+ netconfClientPlugin.operationStateValidation(params, ctx);
+
+ Assert.assertTrue("validation process failed", validatorMock.isValidated());
+ Assert.assertEquals(fileContent, client.getLastMessage());
+ }
+
+
+ @Test
+ public void testBackupConfiguration() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, connectionDetails);
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setConf(fileContent);
+ netconfClientPlugin.backupConfiguration(params, ctx);
+
+ DAOServiceMock mockdao = (DAOServiceMock) dao;
+ DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
+ Date date = new Date();
+ String creationDateExpected = dateFormat.format(date);
+ String creationDateActual = mockdao.getBackupConf().get("creationDate").substring(0, 10);
+
+
+ Assert.assertEquals("wrong configuration in db", fileContent, mockdao.getBackupConf().get("logText"));
+ Assert.assertEquals(creationDateExpected, creationDateActual);
+
+
+ }
+
+
+ @Test
+ public void testBackupConfigurationNegativeDgErrorFieldName() throws Exception {
+ shortInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, "{" + connectionDetails);
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setConf(fileContent);
+ try {
+ netconfClientPlugin.backupConfiguration(params, ctx);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+
+ DAOServiceMock mockdao = (DAOServiceMock) dao;
+ Assert.assertNull(mockdao.getBackupConf());
+ }
+
+ }
+
+ @Test
+ public void testGetConfig() throws Exception {
+ fullInit();
+ String entity = "123";
+
+ SvcLogicContext ctx = new SvcLogicContext();
+ ctx.setAttribute("entity", entity);
+
+ params = new HashMap<>();
+ params.put("conf-id", "current");
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, connectionDetails);
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setConf(fileContent);
+
+
+ netconfClientPlugin.getConfig(params, ctx);
+
+ Assert.assertEquals("Success", ctx.getAttribute("getConfig_Result"));
+ Assert.assertEquals(fileContent, ctx.getAttribute("fullConfig"));
+ Assert.assertNotNull(ctx.getAttribute(entity + ".Configuration"));
+ Assert.assertEquals(fileContent, ctx.getAttribute(entity + ".Configuration"));
+ }
+
+
+ @Test
+ public void testGetConfigNegativeConfigurationNull() throws Exception {
+ fullInit();
+ String entity = "123";
+
+ SvcLogicContext ctx = new SvcLogicContext();
+ ctx.setAttribute("entity", entity);
+
+ params = new HashMap<>();
+ params.put("conf-id", "current");
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, connectionDetails);
+
+
+ netconfClientPlugin.getConfig(params, ctx);
+
+ Assert.assertEquals("failure", ctx.getAttribute("getConfig_Result"));
+ Assert.assertNull(ctx.getAttribute("fullConfig"));
+ Assert.assertNull(ctx.getAttribute(entity + ".Configuration"));
+ Assert.assertNull(ctx.getAttribute(entity + ".Configuration"));
+ }
+
+
+ @Test
+ public void testGetConfigNegativeNotSupportedConfId() throws Exception {
+ fullInit();
+ String entity = "123";
+ SvcLogicContext ctx = new SvcLogicContext();
+ ctx.setAttribute("entity", entity);
+
+ params = new HashMap<>();
+ params.put("conf-id", "current1");
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, connectionDetails);
+
+
+ netconfClientPlugin.getConfig(params, ctx);
+
+ Assert.assertNull(ctx.getAttribute("getConfig_Result"));
+ Assert.assertNull(ctx.getAttribute("fullConfig"));
+ Assert.assertNull(ctx.getAttribute(entity + ".Configuration"));
+ Assert.assertNull(ctx.getAttribute(entity + ".Configuration"));
+ }
+
+ @Test
+ public void testGetConfigNegativeWronjJsonConnectionDetailsException() throws Exception {
+ fullInit();
+ String entity = "123";
+
+ SvcLogicContext ctx = new SvcLogicContext();
+ ctx.setAttribute("entity", entity);
+
+ params = new HashMap<>();
+ params.put("conf-id", "current");
+ params.put(Constants.CONNECTION_DETAILS_FIELD_NAME, "{" + connectionDetails);
+
+
+ try {
+ netconfClientPlugin.getConfig(params, ctx);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ Assert.assertEquals("failure", ctx.getAttribute("getConfig_Result"));
+ Assert.assertNull(ctx.getAttribute("fullConfig"));
+ Assert.assertNull(ctx.getAttribute(entity + ".Configuration"));
+ Assert.assertNull(ctx.getAttribute(entity + ".Configuration"));
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+ }
+
+
+ }
+
+ @Test
+ public void testGetRunningConfig() throws Exception {
+ fullInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put("host-ip-address", host);
+ params.put("user-name", username);
+ params.put("password", password);
+ params.put("port-number", String.valueOf(port));
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setConf(fileContent);
+
+ netconfClientPlugin.getRunningConfig(params, ctx);
+
+ Assert.assertEquals("Success", ctx.getAttribute("getRunningConfig_Result"));
+ Assert.assertEquals(fileContent, ctx.getAttribute("running-config"));
+ Assert.assertEquals("success", ctx.getStatus());
+ }
+
+ @Test
+ public void testGetRunningConfigWithoutPortNumberDgErrorFieldNameException() throws Exception {
+ fullInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put("host-ip-address", host);
+ params.put("user-name", username);
+ params.put("password", password);
+
+ NetconfClientJschMock client = (NetconfClientJschMock) clientFactory.GetNetconfClient(NetconfClientType.SSH);
+ client.setConf(fileContent);
+
+ try {
+ netconfClientPlugin.getRunningConfig(params, ctx);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ Assert.assertEquals("failure", ctx.getAttribute("getRunningConfig_Result"));
+ Assert.assertNull(ctx.getAttribute("running-config"));
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+ }
+
+
+ }
+
+ @Test
+ public void testGetRunningConfigNegativeConfigurationNull() throws Exception {
+ fullInit();
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put("host-ip-address", host);
+ params.put("user-name", username);
+ params.put("password", password);
+ params.put("port-number", String.valueOf(port));
+
+ netconfClientPlugin.getRunningConfig(params, ctx);
+
+ Assert.assertEquals("failure", ctx.getAttribute("getRunningConfig_Result"));
+ Assert.assertNull(ctx.getAttribute("running-config"));
+ }
+
+ @Test
+ public void testValidateMandatoryParamNegativeEmptyParamValue() throws Exception {
+ shortInit();
+ String paramName = "test";
+ String paramValue = "";
+
+ try {
+ netconfClientPlugin.validateMandatoryParam(paramName, paramValue);
+ Assert.assertTrue(false);
+ } catch (Exception e) {
+ Assert.assertTrue(true);
+ }
+ }
+
+ @Test
+ public void testRetrieveConnectionDetails() throws Exception {
+ shortInit();
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+ ConnectionDetails connectionDetails1 = getConnectionDetails();
+ daoServiceMock.setConnection(connectionDetails1);
+
+ NetconfConnectionDetails connectionDetailsActual = netconfClientPlugin.retrieveConnectionDetails(VnfType.VNF);
+
+
+ Assert.assertEquals("wrong host", connectionDetails1.getHost(), connectionDetailsActual.getHost());
+ Assert.assertEquals("wrong password", connectionDetails1.getPassword(), connectionDetailsActual.getPassword());
+ Assert.assertEquals("wrong port", connectionDetails1.getPort(), connectionDetailsActual.getPort());
+ Assert.assertEquals("wrong usename", connectionDetails1.getUsername(), connectionDetailsActual.getUsername());
+ }
+
+
+ @Test
+ public void testRetrieveConnectionDetailsNegativeMissingConfiguration() throws Exception {
+ shortInit();
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+ ConnectionDetails connectionDetails1 = getConnectionDetails();
+ daoServiceMock.setConnection(connectionDetails1);
+
+ NetconfConnectionDetails connectionDetailsActual = null;
+ try {
+ connectionDetailsActual = netconfClientPlugin.retrieveConnectionDetails(VnfType.MOCK);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ Assert.assertNull(connectionDetailsActual);
+ }
+
+
+ }
+
+ @Test
+ public void testRetrieveConfigurationFileContent() throws Exception {
+ shortInit();
+
+ DAOServiceMock daoServiceMock = (DAOServiceMock) dao;
+ daoServiceMock.setConfigFile(fileContent);
+
+ Assert.assertEquals("wrong config in a database", fileContent, netconfClientPlugin.retrieveConfigurationFileContent("VnfGetRunningConfig"));
+ }
+
+ private ConnectionDetails getConnectionDetails() {
+
+ ConnectionDetails connectionDetails = new ConnectionDetails();
+ connectionDetails.setPassword(password);
+ connectionDetails.setPort(port);
+ connectionDetails.setUsername(username);
+ connectionDetails.setHost(host);
+ return connectionDetails;
+ }
+
+
+ private void initDao() throws NoSuchFieldException, IllegalAccessException {
+ dao = new DAOServiceMock();
+ PowerMockito.mockStatic(FrameworkUtil.class);
+ when(FrameworkUtil.getBundle(Matchers.any(Class.class))).thenReturn(bundleService);
+ when(bundleService.getBundleContext()).thenReturn(bundleContext);
+ when(bundleContext.getServiceReference(NetconfDataAccessService.class)).thenReturn(sref1);
+ when(bundleContext.getService(sref1)).thenReturn(dao);
+
+
+ }
+
+ private void fullInit() throws NoSuchFieldException, IllegalAccessException {
+ initClientFactory();
+ initClientFactory2();
+ initDao();
+ netconfClientPlugin = new NetconfClientPluginImpl();
+ netconfClientPlugin.setDao(this.dao);
+ }
+
+ private void shortInit() throws NoSuchFieldException, IllegalAccessException {
+ initClientFactory();
+ initDao();
+ netconfClientPlugin = new NetconfClientPluginImpl();
+ netconfClientPlugin.setDao(this.dao);
+ }
+
+ private void initClientFactory() throws NoSuchFieldException, IllegalAccessException {
+
+ PowerMockito.mockStatic(FrameworkUtil.class);
+ when(FrameworkUtil.getBundle(Matchers.any(Class.class))).thenReturn(bundleService);
+ when(bundleService.getBundleContext()).thenReturn(bundleContext);
+ when(bundleContext.getServiceReference(NetconfClientFactory.class)).thenReturn(sref2);
+ when(bundleContext.getService(sref2)).thenReturn(clientFactory);
+
+ }
+
+ private void initClientFactory2() {
+ PowerMockito.mockStatic(FrameworkUtil.class);
+ when(FrameworkUtil.getBundle(Matchers.any(Class.class))).thenReturn(bundleService);
+ when(bundleService.getBundleContext()).thenReturn(bundleContext);
+ when(bundleContext.getServiceReference(Matchers.anyString())).thenReturn(sref3);
+ when(bundleContext.getService(sref3)).thenReturn(clientFactory);
+ }
+
+ private void substituteMapper(boolean command) throws NoSuchFieldException, IllegalAccessException {
+ ObjectMapper mapper = new ObjectMapperMock();
+ ObjectMapper mapper2 = new ObjectMapper();
+ Field field = NetconfClientPluginImpl.class.getDeclaredField("mapper");
+ field.setAccessible(true);
+ if (command) {
+ field.set(netconfClientPlugin, mapper);
+ } else {
+ field.set(netconfClientPlugin, mapper2);
+ }
+ }
+
+}
diff --git a/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfDBPluginImplTest.java b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfDBPluginImplTest.java
new file mode 100644
index 000000000..a591648c4
--- /dev/null
+++ b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/NetconfDBPluginImplTest.java
@@ -0,0 +1,250 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.dg.netconf.impl;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.*;
+import org.openecomp.appc.adapter.netconf.ConnectionDetails;
+import org.openecomp.appc.adapter.netconf.NetconfConnectionDetails;
+import org.openecomp.appc.adapter.netconf.NetconfDataAccessService;
+import org.openecomp.appc.adapter.netconf.exception.DataAccessException;
+import org.openecomp.appc.dg.netconf.impl.NetconfDBPluginImpl;
+import org.openecomp.appc.exceptions.APPCException;
+import org.openecomp.sdnc.sli.SvcLogicContext;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.powermock.api.support.SuppressCode.suppressConstructor;
+
+public class NetconfDBPluginImplTest {
+ private NetconfDBPluginImpl netconfDBPlugin;
+ private NetconfDataAccessService daoService;
+ private DAOServiceMock daoMock;
+ private Map<String, String> params;
+ private static final String DG_OUTPUT_STATUS_MESSAGE = "output.status.message";
+ String host = "http://www.test.com";
+ String host1 = "http://www.test1.com";
+ int port = 8080;
+ String username = "test";
+ String password = "test";
+ String configContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<rpc message-id=\"101\" xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n" +
+ "\t<get-config>\n" +
+ "\t\t<source>\n" +
+ "\t\t\t<running/>\n" +
+ "\t\t </source>\n" +
+ "\t</get-config>\n" +
+ "</rpc>'";
+
+
+ @Test
+ public void testRetrieveDSConfiguration() throws Exception {
+ init();
+ params = new HashMap<>();
+ params.put("org.openecomp.appc.vftype", "VNF");
+ params.put("configuration-file-name", "VnfGetRunningConfig");
+ SvcLogicContext ctx = new SvcLogicContext();
+ netconfDBPlugin.retrieveDSConfiguration(params, ctx);
+
+ Assert.assertEquals("lack of success of status", "success", ctx.getStatus());
+ Assert.assertEquals("wrong config file content", configContent, ctx.getAttribute("file-content"));
+ }
+
+
+ @Test
+ public void testRetrieveDSConfigurationNegativeErrorFieldNameDaoException() throws Exception {
+ init();
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put("configuration-file-name", "wrong");
+
+ try {
+ netconfDBPlugin.retrieveDSConfiguration(params, ctx);
+ } catch (DataAccessException e) {
+ //Assert.assertNotNull(ctx.getAttribute("org.openecomp.appc.dg.error"));
+ Assert.assertNull(ctx.getAttribute("file-content"));
+ }
+
+
+ }
+
+ @Test
+ public void testRetrieveVMDSConfiguration() throws Exception {
+ init();
+ params = new HashMap<>();
+ params.put("resourceKey", "VNF");
+ SvcLogicContext ctx = new SvcLogicContext();
+ netconfDBPlugin.retrieveVMDSConfiguration(params, ctx);
+
+ Assert.assertEquals("lack of success of retrieveVMDSConfiguration_Result", "success", ctx.getAttribute("retrieveVMDSConfiguration_Result"));
+ Assert.assertEquals("wrong entity", "VNF", ctx.getAttribute("entity"));
+ assertConnectionDetails(ctx, host);
+ }
+
+ @Test
+ public void testRetrieveVMDSConfigurationNegativeMissingConfiguration() throws Exception {
+ init();
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put("resourceKey", "MOCK");
+
+ try {
+ netconfDBPlugin.retrieveVMDSConfiguration(params, ctx);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+
+ Assert.assertEquals("failure", ctx.getAttribute("retrieveVMDSConfiguration_Result"));
+ }
+ }
+
+
+ @Test
+ public void testRetrieveVMDSConfigurationNegativeJsonProcessingException() throws Exception {
+
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put("resourceKey", "VNF");
+
+ init();
+ substituteMapper(true);
+ try {
+ netconfDBPlugin.retrieveVMDSConfiguration(params, ctx);
+ substituteMapper(false);
+ Assert.assertTrue(false);
+
+ } catch (APPCException e) {
+ substituteMapper(false);
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+
+ }
+
+ }
+
+ @Test
+ public void testRetrieveConfigFile() throws Exception {
+ init();
+ SvcLogicContext ctx = new SvcLogicContext();
+ params = new HashMap<>();
+ params.put("configuration-file-name", "VnfGetRunningConfig");
+ netconfDBPlugin.retrieveConfigFile(params, ctx);
+
+ Assert.assertEquals("lack of success of status", "success", ctx.getStatus());
+ Assert.assertEquals("wrong config file content", configContent, ctx.getAttribute("file-content"));
+ }
+
+ @Test
+ public void testRetrieveConnectionDetails() throws Exception {
+ init();
+ params = new HashMap<>();
+ params.put("org.openecomp.appc.vftype", "VNF");
+ params.put("vnf-host-ip-address", host1);
+ SvcLogicContext ctx = new SvcLogicContext();
+ netconfDBPlugin.retrieveConnectionDetails(params, ctx);
+
+ assertConnectionDetails(ctx, host1);
+ }
+
+ @Test
+ public void testRetrieveConnectionDetailsNegativeJsonProcessingException() throws Exception {
+ init();
+ params = new HashMap<>();
+ params.put("org.openecomp.appc.vftype", "MOCK");
+ params.put("vnf-host-ip-address", host1);
+ SvcLogicContext ctx = new SvcLogicContext();
+
+ try {
+ netconfDBPlugin.retrieveConnectionDetails(params, ctx);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ Assert.assertNull(ctx.getAttribute("connection-details"));
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+ }
+
+ }
+
+
+ @Test
+ public void testRetrieveConnectionDetailsNegativeMissingConfiguration() throws Exception {
+ init();
+ params = new HashMap<>();
+ params.put("org.openecomp.appc.vftype", "VNF");
+ params.put("vnf-host-ip-address", host1);
+ SvcLogicContext ctx = new SvcLogicContext();
+ substituteMapper(true);
+
+ try {
+ netconfDBPlugin.retrieveConnectionDetails(params, ctx);
+ substituteMapper(false);
+ Assert.assertTrue(false);
+ } catch (APPCException e) {
+ substituteMapper(false);
+ Assert.assertNull(ctx.getAttribute("connection-details"));
+ Assert.assertNotNull(ctx.getAttribute(DG_OUTPUT_STATUS_MESSAGE));
+ }
+
+ }
+
+ private void assertConnectionDetails(SvcLogicContext ctx, String host) throws IOException {
+ String sConnectionDetails = ctx.getAttribute("connection-details");
+ NetconfConnectionDetails connectionDetails = new ObjectMapper().readValue(sConnectionDetails, NetconfConnectionDetails.class);
+ Assert.assertEquals(host, connectionDetails.getHost());
+ Assert.assertEquals(port, connectionDetails.getPort());
+ Assert.assertEquals(username, connectionDetails.getUsername());
+ Assert.assertEquals(password, connectionDetails.getPassword());
+ Assert.assertNull(connectionDetails.getCapabilities());
+ Assert.assertNull(connectionDetails.getAdditionalProperties());
+ }
+
+ private void init() {
+ netconfDBPlugin = new NetconfDBPluginImpl();
+ daoService = new DAOServiceMock();
+ netconfDBPlugin.setDaoService(daoService);
+ daoMock = (DAOServiceMock) daoService;
+ daoMock.setConfigFile(configContent);
+ daoMock.setConnection(getConnectionDetails());
+
+ }
+
+ private ConnectionDetails getConnectionDetails() {
+ ConnectionDetails connectionDetails = new ConnectionDetails();
+ connectionDetails.setHost(host);
+ connectionDetails.setUsername(username);
+ connectionDetails.setPort(port);
+ connectionDetails.setPassword(password);
+ return connectionDetails;
+ }
+
+ private void substituteMapper(boolean command) throws NoSuchFieldException, IllegalAccessException {
+ ObjectMapper mapper = new ObjectMapperMock();
+ ObjectMapper mapper2 = new ObjectMapper();
+ Field field = NetconfDBPluginImpl.class.getDeclaredField("mapper");
+ field.setAccessible(true);
+ if (command) {
+ field.set(netconfDBPlugin, mapper);
+ } else {
+ field.set(netconfDBPlugin, mapper2);
+ }
+ }
+}
diff --git a/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/ObjectMapperMock.java b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/ObjectMapperMock.java
new file mode 100644
index 000000000..6a7da63ee
--- /dev/null
+++ b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/ObjectMapperMock.java
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.dg.netconf.impl;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+
+
+public class ObjectMapperMock extends ObjectMapper {
+
+ @Override
+ public String writeValueAsString(Object var1) throws JsonProcessingException {
+ throw new JsonProcessingException("") {
+ };
+
+ }
+
+ @Override
+ public <T> T readValue(String var1, Class<T> var2) throws IOException, JsonParseException, JsonMappingException {
+ return null;
+ }
+}
diff --git a/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/OperationStateValidatorFactoryMock.java b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/OperationStateValidatorFactoryMock.java
new file mode 100644
index 000000000..1dea8eb86
--- /dev/null
+++ b/app-c/appc/appc-dg/appc-dg-shared/appc-dg-netconf/src/test/java/org/openecomp/appc/dg/netconf/impl/OperationStateValidatorFactoryMock.java
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.appc.dg.netconf.impl;
+
+import org.apache.commons.lang3.NotImplementedException;
+import org.openecomp.appc.adapter.netconf.*;
+
+
+public class OperationStateValidatorFactoryMock extends OperationalStateValidatorFactory {
+ public static OperationalStateValidator getOperationalStateValidator(String vnfType) {
+ VnfType vnfTypeEnum = null;
+ try {
+ vnfTypeEnum = VnfType.getVnfType(vnfType);
+ } catch (IllegalArgumentException e) {
+ throw new IllegalArgumentException("Illegal value in vnfType. vnfType=" + vnfType, e);
+ }
+ return getOperationalStateValidator(vnfTypeEnum);
+ }
+
+ public static OperationalStateValidator getOperationalStateValidator(VnfType vnfType) {
+
+ return new MockOperationalStateValidatorImpl();
+
+
+ }
+
+
+}