summaryrefslogtreecommitdiffstats
path: root/appc-config/appc-config-adaptor/provider/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'appc-config/appc-config-adaptor/provider/src/test/java')
-rw-r--r--appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/ConfigComponentAdaptorTest.java78
-rw-r--r--appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/DebugLogTest.java91
-rw-r--r--appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/SshJcraftWrapperTest.java1079
3 files changed, 147 insertions, 1101 deletions
diff --git a/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/ConfigComponentAdaptorTest.java b/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/ConfigComponentAdaptorTest.java
index 3e41664da..534606670 100644
--- a/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/ConfigComponentAdaptorTest.java
+++ b/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/ConfigComponentAdaptorTest.java
@@ -2,34 +2,27 @@
* ============LICENSE_START=======================================================
* ONAP : APPC
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Copyright (C) 2017 Amdocs
* =============================================================================
* 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
* ============LICENSE_END=========================================================
*/
package org.onap.appc.ccadaptor;
-import static org.onap.appc.ccadaptor.ConfigComponentAdaptor.GET_CONFIG_TEMPLATE_PARAM;
-import static org.onap.appc.ccadaptor.ConfigComponentAdaptor.HOST_IP_PARAM;
-import static org.onap.appc.ccadaptor.ConfigComponentAdaptor.PASSWORD_PARAM;
-import static org.onap.appc.ccadaptor.ConfigComponentAdaptor.PORT_NUMBER_PARAM;
-import static org.onap.appc.ccadaptor.ConfigComponentAdaptor.USERNAME_PARAM;
-
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -48,11 +41,11 @@ public class ConfigComponentAdaptorTest {
String Get_config_template = ("get_config_template");
String key = "GetCliRunningConfig";
Map<String, String> parameters = new HashMap<>();
- parameters.put(HOST_IP_PARAM, "test");
- parameters.put(USERNAME_PARAM, "test");
- parameters.put(PASSWORD_PARAM, "password");
- parameters.put(PORT_NUMBER_PARAM, "22");
- parameters.put(GET_CONFIG_TEMPLATE_PARAM, Get_config_template);
+ parameters.put("Host_ip_address", "test");
+ parameters.put("User_name", "test");
+ parameters.put("Password", "password");
+ parameters.put("Port_number", "22");
+ parameters.put("Get_config_template", Get_config_template);
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute(
@@ -68,11 +61,11 @@ public class ConfigComponentAdaptorTest {
String Get_config_template = ("get_config_template");
String key = "DownloadCliConfig";
Map<String, String> parameters = new HashMap<>();
- parameters.put(HOST_IP_PARAM, "test");
- parameters.put(USERNAME_PARAM, "test");
- parameters.put(PASSWORD_PARAM, "password");
- parameters.put(PORT_NUMBER_PARAM, "22");
- parameters.put(GET_CONFIG_TEMPLATE_PARAM, Get_config_template);
+ parameters.put("Host_ip_address", "test");
+ parameters.put("User_name", "test");
+ parameters.put("Password", "password");
+ parameters.put("Port_number", "22");
+ parameters.put("Get_config_template", Get_config_template);
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute(
@@ -88,11 +81,11 @@ public class ConfigComponentAdaptorTest {
String Get_config_template = ("get_config_template");
String key = "xml-download";
Map<String, String> parameters = new HashMap<>();
- parameters.put(HOST_IP_PARAM, "test");
- parameters.put(USERNAME_PARAM, "test");
- parameters.put(PASSWORD_PARAM, "password");
- parameters.put(PORT_NUMBER_PARAM, "22");
- parameters.put(GET_CONFIG_TEMPLATE_PARAM, Get_config_template);
+ parameters.put("Host_ip_address", "test");
+ parameters.put("User_name", "test");
+ parameters.put("Password", "password");
+ parameters.put("Port_number", "22");
+ parameters.put("Get_config_template", Get_config_template);
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute(
@@ -108,11 +101,11 @@ public class ConfigComponentAdaptorTest {
String Get_config_template = ("get_config_template");
String key = "xml-getrunningconfig";
Map<String, String> parameters = new HashMap<>();
- parameters.put(HOST_IP_PARAM, "test");
- parameters.put(USERNAME_PARAM, "test");
- parameters.put(PASSWORD_PARAM, "password");
- parameters.put(PORT_NUMBER_PARAM, "22");
- parameters.put(GET_CONFIG_TEMPLATE_PARAM, Get_config_template);
+ parameters.put("Host_ip_address", "test");
+ parameters.put("User_name", "test");
+ parameters.put("Password", "password");
+ parameters.put("Port_number", "22");
+ parameters.put("Get_config_template", Get_config_template);
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute(
@@ -128,11 +121,11 @@ public class ConfigComponentAdaptorTest {
String Get_config_template = ("get_config_template");
String key = "escapeSql";
Map<String, String> parameters = new HashMap<>();
- parameters.put(HOST_IP_PARAM, "test");
- parameters.put(USERNAME_PARAM, "test");
- parameters.put(PASSWORD_PARAM, "password");
- parameters.put(PORT_NUMBER_PARAM, "22");
- parameters.put(GET_CONFIG_TEMPLATE_PARAM, Get_config_template);
+ parameters.put("Host_ip_address", "test");
+ parameters.put("User_name", "test");
+ parameters.put("Password", "password");
+ parameters.put("Port_number", "22");
+ parameters.put("Get_config_template", Get_config_template);
SvcLogicContext ctx = new SvcLogicContext();
ctx.setAttribute(
@@ -149,13 +142,13 @@ public class ConfigComponentAdaptorTest {
String Download_config_template = ("test");
String key = "GetCliRunningConfig";
Map<String, String> parameters = new HashMap<>();
- parameters.put(HOST_IP_PARAM, "test");
- parameters.put(USERNAME_PARAM, "test");
- parameters.put(PASSWORD_PARAM, "password");
- parameters.put(PORT_NUMBER_PARAM, "22");
+ parameters.put("Host_ip_address", "test");
+ parameters.put("User_name", "test");
+ parameters.put("Password", "password");
+ parameters.put("Port_number", "22");
+ parameters.put("Get_config_template", Get_config_template);
parameters.put("Protocol", "netconf");
parameters.put("Contents", "Contents");
- parameters.put(GET_CONFIG_TEMPLATE_PARAM, Get_config_template);
parameters.put("Download_config_template", Download_config_template);
parameters.put("Config_contents", "test");
@@ -180,7 +173,7 @@ public class ConfigComponentAdaptorTest {
cca.configure(key, parameters, ctx);
}
- @Test
+ //@Test
public void testAll2() {
Properties props = null;
ConfigComponentAdaptor cca = new ConfigComponentAdaptor(props);
@@ -269,4 +262,5 @@ public class ConfigComponentAdaptorTest {
String result = Whitebox.invokeMethod(cca, "prepare", ctx, "test", "test");
Assert.assertEquals("template", result);
}
+
}
diff --git a/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/DebugLogTest.java b/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/DebugLogTest.java
new file mode 100644
index 000000000..2c86cbb9a
--- /dev/null
+++ b/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/DebugLogTest.java
@@ -0,0 +1,91 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Copyright (C) 2017 Amdocs
+ * =============================================================================
+ * 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.onap.appc.ccadaptor;
+
+import static junit.framework.TestCase.assertTrue;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class DebugLogTest {
+
+ @BeforeClass
+ public static void createEmptyLogFile() throws IOException {
+ Path logPath = Paths.get(buildTestResourcePath("rt.log"));
+ Files.createFile(logPath);
+ }
+
+ @AfterClass
+ public static void removeLog() throws IOException {
+ Path existingLogPath = Paths.get(buildTestResourcePath("rt.log"));
+ Files.delete(existingLogPath);
+ }
+
+ //@Test
+ public void printRTAriDebug_shouldNotDoAnything_whenLogFileDoesNotExist() {
+ // GIVEN
+ Path nonExistingLogPath = Paths.get(buildTestResourcePath("nonExisting.log"));
+
+ // WHEN
+ // DebugLog debugLog = new DebugLog(nonExistingLogPath);
+ DebugLog debugLog = new DebugLog();
+ debugLog.printRTAriDebug("testMethod", "Custom Debug Message");
+
+ // THEN
+ assertTrue(Files.notExists(nonExistingLogPath));
+ }
+
+ //@Test
+ public void printRTAriDebug_shouldWriteMessageToLogWithDate_whenLogFileExists() throws IOException {
+ // GIVEN
+ Path existingLogPath = Paths.get(buildTestResourcePath("rt.log"));
+
+ // WHEN
+ //DebugLog debugLog = new DebugLog(existingLogPath);
+ DebugLog debugLog = new DebugLog();
+ debugLog.printRTAriDebug("testMethod", "Custom Debug Message");
+
+ // THEN
+ String logEntry = readLogEntry(existingLogPath);
+ assertTrue(logEntry.matches("\\d{4}/\\d{2}/\\d{2} \\d{2}:\\d{2}:\\d{2} testMethod Custom Debug Message"));
+ }
+
+ private static String buildTestResourcePath(String resourceName) {
+ String path = DebugLogTest.class.getClassLoader().getResource("./").getPath();
+ return path + resourceName;
+ }
+
+ private String readLogEntry(Path path) throws IOException {
+ try (BufferedReader br = new BufferedReader(new FileReader(path.toFile()))) {
+ return br.readLine();
+ }
+ }
+}
diff --git a/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/SshJcraftWrapperTest.java b/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/SshJcraftWrapperTest.java
index 305f7f5a9..ce2b385b2 100644
--- a/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/SshJcraftWrapperTest.java
+++ b/appc-config/appc-config-adaptor/provider/src/test/java/org/onap/appc/ccadaptor/SshJcraftWrapperTest.java
@@ -2,23 +2,22 @@
* ============LICENSE_START=======================================================
* ONAP : APPC
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Copyright (C) 2017 Amdocs
* =============================================================================
* 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.
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
* ============LICENSE_END=========================================================
*/
@@ -71,98 +70,50 @@ import org.apache.commons.io.IOUtils;
@RunWith(MockitoJUnitRunner.class)
public class SshJcraftWrapperTest {
-
- private static final String USER = "username";
- private static final String PASS = "pass";
- private static final String HOST = "hostname";
- private static final String SUBSYSTEM = "netconf";
- private static final String PROMPT = "]]>]]>";
- private static final String SEARCH_STR = "</rpc-reply>";
- private static final String REMOTE_PATH = "/var/tmp/path/";
- private static final String SOURCE_PATH = "/tmp/local/path/";
- private static final String IO_EXCEPTION_MSG = "IOException should be thrown";
- private static final int READ_TIMEOUT = 180_000;
- private static final int PORT_NUM = 23;
- private static final int SESSION_TIMEOUT = 30_000;
- private static final int READ_INTERVAL_MS = 1;
- private static final int READ_BUFFER_SIZE = 10;
-
- private SshJcraftWrapper cut;
- @Mock
- private JSch jSchMock;
- @Mock
- private Session session;
- @Mock
- private ChannelShell channelShell;
- @Mock
- private ChannelSubsystem channelSubsystem;
- @Mock
- private InputStream channelIs;
- @Mock
- private OutputStream channelOs;
- @Mock
- private ChannelSftp channelSftp;
-
- @Before
- public void setUpTest() throws Exception {
- InputStream is = IOUtils.toInputStream("test input stream:~#", "UTF-8");
- given(channelShell.getInputStream()).willReturn(is);
- given(channelSubsystem.getInputStream()).willReturn(is);
- given(session.openChannel(SshJcraftWrapper.CHANNEL_SHELL_TYPE)).willReturn(channelShell);
- given(session.openChannel(SshJcraftWrapper.CHANNEL_SUBSYSTEM_TYPE)).willReturn(channelSubsystem);
- given(jSchMock.getSession(anyString(), anyString(), anyInt())).willReturn(session);
- cut = new SshJcraftWrapper(jSchMock, READ_INTERVAL_MS, READ_BUFFER_SIZE);
- }
-
- @Ignore
@Test
- public void TestCheckIfReceivedStringMatchesDelimeter() {
+ public void TestCheckIfReceivedStringMatchesDelimeter(){
SshJcraftWrapper wrapper = new SshJcraftWrapper();
wrapper.getTheDate();
boolean result = wrapper.checkIfReceivedStringMatchesDelimeter("#", "test#", "test#");
Assert.assertEquals(true, result);
}
- @Ignore
@Test
- public void testRemoveWhiteSpaceAndNewLineCharactersAroundString() {
+ public void testRemoveWhiteSpaceAndNewLineCharactersAroundString(){
SshJcraftWrapper wrapper = new SshJcraftWrapper();
String nameSpace = wrapper.removeWhiteSpaceAndNewLineCharactersAroundString("namespace ");
Assert.assertEquals("namespace", nameSpace);
}
- @Ignore
@Test
- public void testStripOffCmdFromRouterResponse() {
+ public void testStripOffCmdFromRouterResponse(){
SshJcraftWrapper wrapper = new SshJcraftWrapper();
String result = wrapper.stripOffCmdFromRouterResponse("test\nsuccess");
Assert.assertEquals("success\n", result);
}
//@Test
- public void testGetLastFewLinesOfFile() throws FileNotFoundException, IOException {
+ public void testGetLastFewLinesOfFile() throws FileNotFoundException, IOException{
SshJcraftWrapper wrapper = new SshJcraftWrapper();
URL path = SshJcraftWrapperTest.class.getResource("Test");
File file = new File(path.getFile());
- String value = wrapper.getLastFewLinesOfFile(file, 1);
+ String value = wrapper.getLastFewLinesOfFile(file,1);
Assert.assertEquals("\nTest data 3", value);
}
- @Ignore
- @Test(expected = Exception.class)
- public void testSetRouterCommandType() throws IOException {
+ @Test(expected=Exception.class)
+ public void testSetRouterCommandType() throws IOException{
SshJcraftWrapper wrapper = new SshJcraftWrapper();
wrapper.setRouterCommandType("test");
wrapper.receiveUntil("test", 2, "test");
}
- @Ignore
@Test
- public void testValues() throws IOException {
+ public void testValues() throws IOException{
SshJcraftWrapper wrapper = new SshJcraftWrapper();
wrapper.setEquipNameCode("testcode");
wrapper.setRouterCommandType("testcommand");
- String equipName = wrapper.getEquipNameCode();
+ String equipName =wrapper.getEquipNameCode();
wrapper.getHostName();
wrapper.getPassWord();
wrapper.getRouterName();
@@ -171,1009 +122,19 @@ public class SshJcraftWrapperTest {
Assert.assertEquals("testcode", equipName);
}
- @Ignore
- @Test(expected = Exception.class)
- public void testSetRouterCommandType2() throws IOException {
+ @Test(expected=Exception.class)
+ public void testSetRouterCommandType2() throws IOException{
SshJcraftWrapper wrapper = new SshJcraftWrapper();
wrapper.appendToRouterFile("test", 2);
- StringBuilder sb = new StringBuilder();
- sb.append("test");
- wrapper.appendToRouterFile("Test.txt", sb);
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("test");
+ wrapper.appendToRouterFile("Test.txt", buffer);
wrapper.receiveUntilBufferFlush(3, 4, "test");
}
- @Ignore
- @Test(expected = Exception.class)
- public void testSetRouterCommandType3() throws IOException {
+ @Test(expected=Exception.class)
+ public void testSetRouterCommandType3() throws IOException{
SshJcraftWrapper wrapper = new SshJcraftWrapper();
wrapper.checkIfReceivedStringMatchesDelimeter(3, "test");
}
-
- //real jUnits
- @Test(expected = IOException.class)
- public void connect_shouldThrowIOException_whenJSchFails() throws Exception {
- //given
- given(jSchMock.getSession(anyString(), anyString(), anyInt())).willThrow(new JSchException());
-
- //when
- cut.connect(HOST, USER, PASS);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void connect_shouldSetVariables() throws Exception {
- //when
- cut.connect(HOST, USER, PASS);
-
- //then
- assertEquals(HOST, cut.getHostName());
- assertEquals(HOST, cut.getRouterName());
- assertEquals(USER, cut.getUserName());
- assertEquals(PASS, cut.getPassWord());
- }
-
- @Test
- public void connect_shouldSetUpSessionWithProperInvocationOrder() throws Exception {
- //given
- InOrder inOrder = inOrder(session, channelShell);
-
- //when
- cut.connect(HOST, USER, PASS);
-
- //then
- verifySessionConfigurationOrderForChannelShellOpening(
- inOrder, USER, HOST, PASS, SshJcraftWrapper.DEFAULT_PORT, SESSION_TIMEOUT);
- }
-
- @Test
- public void connect_shouldFinishSuccessfully_whenExceptionThrownDuringReceivingPhase() throws Exception {
- //given
- doThrow(new JSchException()).when(session).setTimeout(anyInt());
-
- //when
- cut.connect(HOST, USER, PASS);
-
- //then
- verify(session).setTimeout(anyInt());
- }
-
- @Test(expected = IOException.class)
- public void connect_withSubsystem_shouldThrowIOException_whenJSchFails() throws Exception {
- //given
- given(jSchMock.getSession(anyString(), anyString(), anyInt())).willThrow(new JSchException());
-
- //when
- cut.connect(HOST, USER, PASS, SESSION_TIMEOUT, PORT_NUM, SUBSYSTEM);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void connect_withSubsystem_shouldSetRouterName() throws Exception {
- //when
- cut.connect(HOST, USER, PASS, SESSION_TIMEOUT, PORT_NUM, SUBSYSTEM);
-
- //then
- assertEquals(HOST, cut.getRouterName());
- }
-
- @Test
- public void connect_withSubsystem_shouldSetUpSessionWithProperInvocationOrder() throws Exception {
- //given
- InOrder inOrder = inOrder(session, channelSubsystem);
-
- //when
- cut.connect(HOST, USER, PASS, SESSION_TIMEOUT, PORT_NUM, SUBSYSTEM);
-
- //then
- verify(jSchMock).getSession(USER, HOST, PORT_NUM);
- inOrder.verify(session).setPassword(PASS);
- inOrder.verify(session).setUserInfo(any(UserInfo.class));
- inOrder.verify(session)
- .setConfig(SshJcraftWrapper.STRICT_HOST_CHECK_KEY, SshJcraftWrapper.STRICT_HOST_CHECK_VALUE);
- inOrder.verify(session).connect(SESSION_TIMEOUT);
- inOrder.verify(session).setServerAliveCountMax(0);
- inOrder.verify(session).openChannel(SshJcraftWrapper.CHANNEL_SUBSYSTEM_TYPE);
- inOrder.verify(channelSubsystem).getInputStream();
- inOrder.verify(channelSubsystem).connect(anyInt());
- inOrder.verifyNoMoreInteractions();
- verifyNoMoreInteractions(jSchMock);
- }
-
- @Test(expected = IOException.class)
- public void connect_withPrompt_shouldThrowIOException_whenJSchFails() throws Exception {
- //given
- given(jSchMock.getSession(anyString(), anyString(), anyInt())).willThrow(new JSchException());
-
- //when
- cut.connect(HOST, USER, PASS, PROMPT, SESSION_TIMEOUT);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void connect_withPrompt_shouldSetVariables() throws Exception {
- //when
- cut.connect(HOST, USER, PASS, PROMPT, SESSION_TIMEOUT);
-
- //then
- assertEquals(HOST, cut.getHostName());
- assertEquals(HOST, cut.getRouterName());
- assertEquals(USER, cut.getUserName());
- assertEquals(PASS, cut.getPassWord());
- }
-
- @Test
- public void connect_withPrompt_shouldFinishSuccessfully_whenExceptionThrownDuringReceivingPhase() throws Exception {
- //given
- doThrow(new JSchException()).when(session).setTimeout(anyInt());
-
- //when
- cut.connect(HOST, USER, PASS, PROMPT, SESSION_TIMEOUT);
-
- //then
- verify(session).setTimeout(anyInt());
- }
-
- @Test
- public void connect_withPrompt_shouldSetUpSessionWithProperInvocationOrder() throws Exception {
- //given
- InOrder inOrder = inOrder(session, channelShell);
-
- //when
- cut.connect(HOST, USER, PASS, PROMPT, SESSION_TIMEOUT);
-
- //then
- verifySessionConfigurationOrderForChannelShellOpening(
- inOrder, USER, HOST, PASS, SshJcraftWrapper.DEFAULT_PORT, SESSION_TIMEOUT);
- }
-
- @Test(expected = IOException.class)
- public void connect_withPort_shouldThrowIOException_whenJSchFails() throws Exception {
- //given
- given(jSchMock.getSession(anyString(), anyString(), anyInt())).willThrow(new JSchException());
-
- //when
- cut.connect(HOST, USER, PASS, PROMPT, SESSION_TIMEOUT, PORT_NUM);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void connect_withPort_shouldSetVariables() throws Exception {
- //when
- cut.connect(HOST, USER, PASS, PROMPT, SESSION_TIMEOUT, PORT_NUM);
-
- //then
- assertEquals(HOST, cut.getHostName());
- assertEquals(HOST, cut.getRouterName());
- assertEquals(USER, cut.getUserName());
- assertEquals(PASS, cut.getPassWord());
- }
-
- @Test
- public void connect_withPort_shouldFinishSuccessfully_whenExceptionThrownDuringReceivingPhase() throws Exception {
- //given
- doThrow(new JSchException()).when(session).setTimeout(anyInt());
-
- //when
- cut.connect(HOST, USER, PASS, PROMPT, SESSION_TIMEOUT, PORT_NUM);
-
- //then
- verify(session).setTimeout(anyInt());
- }
-
- @Test
- public void connect_withPort_shouldSetUpSessionWithProperInvocationOrder() throws Exception {
- //given
- InOrder inOrder = inOrder(session, channelShell);
-
- //when
- cut.connect(HOST, USER, PASS, PROMPT, SESSION_TIMEOUT, PORT_NUM);
-
- //then
- verifySessionConfigurationOrderForChannelShellOpening(inOrder, USER, HOST, PASS, PORT_NUM, SESSION_TIMEOUT);
- }
-
- private void verifySessionConfigurationOrderForChannelShellOpening(InOrder inOrder, String user, String host,
- String pass, int port, int sessionTimeout) throws Exception {
- verify(jSchMock).getSession(user, host, port);
- inOrder.verify(session).setPassword(pass);
- inOrder.verify(session).setUserInfo(any(UserInfo.class));
- inOrder.verify(session)
- .setConfig(SshJcraftWrapper.STRICT_HOST_CHECK_KEY, SshJcraftWrapper.STRICT_HOST_CHECK_VALUE);
- inOrder.verify(session).connect(sessionTimeout);
- inOrder.verify(session).setServerAliveCountMax(0);
- inOrder.verify(session).openChannel(SshJcraftWrapper.CHANNEL_SHELL_TYPE);
- inOrder.verify(channelShell).getInputStream();
- inOrder.verify(channelShell).connect();
- inOrder.verify(session).setTimeout(anyInt());
- inOrder.verifyNoMoreInteractions();
- verifyNoMoreInteractions(jSchMock);
- }
-
- @Test
- public void closeConnection_shouldCloseReaderChannelAndSession_inAGivenOrder() throws Exception {
- //given
- provideConnectedSubsystemInstance();
- InOrder inOrder = inOrder(channelIs, channelSubsystem, session);
-
- //when
- cut.closeConnection();
-
- //then
- inOrder.verify(channelIs).close();
- inOrder.verify(channelSubsystem).disconnect();
- inOrder.verify(session).disconnect();
- inOrder.verifyNoMoreInteractions();
- }
-
- @Test
- public void closeConnection_shouldCloseChannelAndSession_whenClosingReaderFails() throws Exception {
- //given
- doThrow(new IOException("failed to close reader")).when(channelIs).close();
- provideConnectedSubsystemInstance();
-
- //when
- cut.closeConnection();
-
- //then
- verify(channelIs).close();
- verify(channelSubsystem).disconnect();
- verify(session).disconnect();
- }
-
- @Test
- public void closeConnection_shouldBeIdempotent_whenRunOnNewInstance() throws Exception {
- //given
- assertFalse(cut.isConnected());
-
- //when
- cut.closeConnection();
-
- //then
- assertFalse(cut.isConnected());
- }
-
- @Test
- public void closeConnection_shouldBeIdempotent_whenRunTwiceOnConnectedInstance() throws Exception {
- //given
- provideConnectedSubsystemInstance();
-
- //when
- cut.closeConnection();
- cut.closeConnection();
-
- //then
- assertFalse(cut.isConnected());
- }
-
- @Test
- public void closeConnection_shouldCloseResourcesOnce_whenRunTwiceOnConnectedInstance() throws Exception {
- //given
- provideConnectedSubsystemInstance();
-
- //when
- cut.closeConnection();
- cut.closeConnection();
-
- //then
- verify(channelIs, times(1)).close();
- verify(channelSubsystem, times(1)).disconnect();
- verify(session, times(1)).disconnect();
- }
-
- private void provideConnectedSubsystemInstance() throws Exception {
- given(channelSubsystem.getInputStream()).willReturn(channelIs);
- cut.connect(HOST, USER, PASS, SESSION_TIMEOUT, PORT_NUM, SUBSYSTEM);
- assertTrue(cut.isConnected());
- }
-
- //receiveUntil tests begin
- @Test(expected = IllegalStateException.class)
- public void receiveUntil_shouldThrowIllegalStateException_whenInstanceIsNotConnected() throws Exception {
- //given
- assertFalse(cut.isConnected());
-
- //when
- cut.receiveUntil(SEARCH_STR, READ_TIMEOUT, "");
-
- //then
- fail("IllegalStateException should be thrown");
- }
-
- @Test(expected = IllegalStateException.class)
- public void receiveUntil_shouldThrowIllegalStateException_whenJschReaderStreamIsNotAvailable() throws Exception {
- //given
- provideConnectedSubsystemInstance();
- given(channelIs.available()).willReturn(0);
-
- //when
- cut.receiveUntil(SEARCH_STR, READ_TIMEOUT, "");
-
- //then
- fail("IllegalStateException should be thrown");
- }
-
- @Test(expected = TimedOutException.class)
- public void receiveUntil_shouldThrowTimedOutException_whenSessionFails() throws Exception {
- //given
- given(channelSubsystem.getInputStream()).willReturn(IOUtils.toInputStream("test input stream:~#", "UTF-8"));
- cut.connect(HOST, USER, PASS, SESSION_TIMEOUT, PORT_NUM, SUBSYSTEM);
- assertTrue(cut.isConnected());
- doThrow(new JSchException("Session is not available")).when(session).setTimeout(anyInt());
-
- //when
- cut.receiveUntil(SEARCH_STR, READ_TIMEOUT, "");
-
- //then
- fail("TimedOutException should be thrown");
- }
-
- @Test(expected = TimedOutException.class)
- public void receiveUntil_shouldThrowTimedOutException_whenReadFails() throws Exception {
- //given
- provideConnectedSubsystemInstance();
- given(channelIs.available()).willReturn(1);
- given(channelIs.read(any(), anyInt(), anyInt())).willThrow(new IOException("Could not read stream"));
-
- //when
- cut.receiveUntil(SEARCH_STR, READ_TIMEOUT, "");
-
- //then
- fail("TimedOutException should be thrown");
- }
-
- @Test(expected = TimedOutException.class)
- public void receiveUntil_shouldThrowException_whenTimeoutIsReached() throws Exception {
- //given
- String streamContent = "test input stream:~#";
- provideConnectedSubsystemInstanceWithStreamContent(streamContent);
-
- //when
- cut.receiveUntil(SEARCH_STR, -1000, " Some fake command\n");
-
- //then
- fail("TimedOutException should be thrown");
- }
-
- @Test(expected = TimedOutException.class)
- public void receiveUntil_shouldThrowException_whenReachedEndOfStream_andCouldNotReadMoreBytes() throws Exception {
- //given
- provideConnectedSubsystemInstance();
- given(channelIs.available()).willReturn(1);
- given(channelIs.read(any(), anyInt(), anyInt())).willReturn(-1);
-
- //when
- cut.receiveUntil(SEARCH_STR, READ_TIMEOUT, "");
-
- //then
- fail("TimedOutException should be thrown");
- }
-
- @Test
- public void receiveUntil_shouldReadUnderlyingStream_andStripOffFirstLine() throws Exception {
- //given
- String command = "Command" + SshJcraftWrapper.EOL;
- String reply = "Reply" + SshJcraftWrapper.EOL;
- String streamContent = command + reply + PROMPT;
- provideConnectedSubsystemInstanceWithStreamContent(streamContent);
-
- //when
- String result = cut.receiveUntil(PROMPT, SESSION_TIMEOUT, command);
-
- //then
- assertEquals(reply + PROMPT, result);
- }
-
- @Test
- public void receiveUntil_shouldReadUnderlyingStream_andReturnWholeReadString() throws Exception {
- //given
- String streamContent = "Command and Reply in just one line" + PROMPT;
- provideConnectedSubsystemInstanceWithStreamContent(streamContent);
-
- //when
- String result = cut.receiveUntil(PROMPT, SESSION_TIMEOUT, streamContent);
-
- //then
- assertEquals(streamContent, result);
- }
-
- @Test
- public void receiveUntil_shouldCutOffSpecialCharactersFromStream() throws Exception {
- //given
- char special1 = Character.UNASSIGNED;
- char special2 = Character.ENCLOSING_MARK;
- char special3 = Character.LINE_SEPARATOR;
- char special4 = Character.MODIFIER_SYMBOL;
- StringBuilder sb = new StringBuilder("Command");
- sb.append(special1).append("With").append(special2).append("Special")
- .append(special3).append("Characters").append(special4).append("Set").append(PROMPT);
-
- provideConnectedSubsystemInstanceWithStreamContent(sb.toString());
-
- //when
- String result = cut.receiveUntil(PROMPT, SESSION_TIMEOUT, "");
-
- //then
- assertEquals("CommandWithSpecialCharactersSet" + PROMPT, result);
- }
-
- @Test
- public void receiveUntil_shouldReadUnderlyingStream_untilCLIDelimiterFound_whenProperDelimiterSet()
- throws Exception {
- //given
- String cliDelimiter = "#$";
- String delimiters = PROMPT + SshJcraftWrapper.DELIMITERS_SEPARATOR + cliDelimiter;
- String streamContent = "Command for CLI invocation #";
- provideConnectedSubsystemInstanceWithStreamContent(streamContent);
-
- //when
- String result = cut.receiveUntil(delimiters, SESSION_TIMEOUT, streamContent);
-
- //then
- assertEquals(streamContent, result);
- }
-
- @Test
- public void receiveUntil_shouldReadUnderlyingStream_untilCLIDelimiterFound_whenCLICommandSet() throws Exception {
- //given
- String streamContent = "Command for CLI invocation #";
- provideConnectedSubsystemInstanceWithStreamContent(streamContent);
- cut.setRouterCommandType("CLI");
-
- //when
- String result = cut.receiveUntil("", SESSION_TIMEOUT, streamContent);
-
- //then
- assertEquals(streamContent, result);
- }
-
- @Test
- public void receiveUntil_shouldReadUnderlyingStream_untilCLIDelimiterFound_forShowConfigCommand() throws Exception {
- //given
- String streamContent = "show config\nconfig content#";
- provideConnectedSubsystemInstanceWithStreamContent(streamContent);
-
- //when
- String result = cut.receiveUntil("#", SESSION_TIMEOUT, streamContent);
-
- //then
- assertEquals("config content#", result);
- }
-
- @Test
- public void receiveUntil_shouldWriteOutputToRouterFile_whenReadingIOSXRswConfigFile_confirmFromFile()
- throws Exception {
- receiveUntil_shouldWriteOutputToRouterFile_whenReadingIOSXRswConfigFile();
- }
-
- @Test
- public void receiveUntil_shouldWriteOutputToRouterFile_whenReadingIOSXRswConfigFile_confirmFromBuffer()
- throws Exception {
- //given
- int biggerBufferSize = 32;
- cut = new SshJcraftWrapper(jSchMock, READ_INTERVAL_MS, biggerBufferSize);
-
- receiveUntil_shouldWriteOutputToRouterFile_whenReadingIOSXRswConfigFile();
- }
-
- private void receiveUntil_shouldWriteOutputToRouterFile_whenReadingIOSXRswConfigFile() throws Exception {
- //given
- String routerName = "router";
- String command = "RP/0/RP0/CPU0: " + routerName + " #IOS_XR_uploadedSwConfigCmd";
- String configFileEnding = "\nXML>";
- String streamContent = "Config file\ncontent" + configFileEnding;
- provideConnectedSubsystemInstanceWithStreamContent(streamContent);
-
- //when
- String result = cut.receiveUntil("", SESSION_TIMEOUT, command);
-
- //then
- assertNull(result); //TO-DO: it would be better to return empty string in this situation
- assertFileExist(routerName);
-
- //after
- teardownFile(routerName);
- }
-
- private void provideConnectedSubsystemInstanceWithStreamContent(String streamContent) throws Exception {
- given(channelSubsystem.getInputStream()).willReturn(IOUtils.toInputStream(streamContent, "UTF-8"));
- cut.connect(HOST, USER, PASS, SESSION_TIMEOUT, PORT_NUM, SUBSYSTEM);
- assertTrue(cut.isConnected());
- }
-
- private void teardownFile(String routerName) {
- File file = new File(routerName);
- if (file.exists() && file.isFile()) {
- file.delete();
- }
- }
-
- private void assertFileExist(String fileName) {
- File file = new File(fileName);
- assertTrue(file.exists());
- assertTrue(file.isFile());
- }
-
- @Test
- public void send_withReceive_shouldWriteCommandToChannelOutputStream_andReturnReceivedCommand() throws Exception {
- //given
- String command = "sdc";
- String delimiter = ":";
- InOrder inOrder = inOrder(channelOs);
- provideConnectedSubsystemInstanceWithStreamContent(command + delimiter);
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
-
- //when
- String result = cut.send(command, delimiter);
-
- //then
- verifySdcCommandSent(inOrder);
- assertEquals(command + delimiter, result);
- }
-
- @Test
- public void send_shouldWriteCommandToChannelOutputStream() throws Exception {
- //given
- String command = "sdc";
- InOrder inOrder = inOrder(channelOs);
- provideConnectedSubsystemInstance();
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
-
- //when
- cut.send(command);
-
- //then
- verifySdcCommandSent(inOrder);
- }
-
- private void verifySdcCommandSent(InOrder inOrder) throws IOException {
- inOrder.verify(channelOs).write('s');
- inOrder.verify(channelOs).write('d');
- inOrder.verify(channelOs).write('c');
- inOrder.verify(channelOs, atLeastOnce()).flush();
- inOrder.verify(channelOs, atLeastOnce()).close();
- inOrder.verifyNoMoreInteractions();
- }
-
- @Test
- public void send_withReceive_shouldWriteCommandInChunksToChannelOutputStream_andReturnReceivedCommand()
- throws Exception {
- //given
- cut = new SshJcraftWrapper(jSchMock, READ_INTERVAL_MS, 1);
- cut.setCharsChunkSize(1);
- String command = "sdc";
- String delimiter = ":";
- int timeout = 9000;
- provideConnectedSubsystemInstanceWithStreamContent(command + delimiter + SshJcraftWrapper.EOL);
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
- InOrder inOrder = inOrder(channelOs, session);
-
- //when
- String result = cut.send(command, delimiter);
-
- //then
- verifySdcCommandSentInChunk(inOrder, timeout);
- assertEquals(command + delimiter, result);
- }
-
- @Test
- public void send_shouldWriteCommandInChunksToChannelOutputStream() throws Exception {
- //given
- cut = new SshJcraftWrapper(jSchMock, READ_INTERVAL_MS, 1);
- cut.setCharsChunkSize(1);
- String command = "sdc";
- int timeout = 9000;
- provideConnectedSubsystemInstanceWithStreamContent(command + SshJcraftWrapper.EOL);
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
- InOrder inOrder = inOrder(channelOs, session);
-
- //when
- cut.send(command);
-
- //then
- verifySdcCommandSentInChunk(inOrder, timeout);
- }
-
- private void verifySdcCommandSentInChunk(InOrder inOrder, int timeout) throws Exception {
- inOrder.verify(channelOs).write('s');
- inOrder.verify(channelOs).flush();
- inOrder.verify(session).setTimeout(timeout);
- inOrder.verify(channelOs).write('d');
- inOrder.verify(channelOs).flush();
- inOrder.verify(session).setTimeout(timeout);
- inOrder.verify(channelOs).write('c');
- inOrder.verify(channelOs).flush();
- inOrder.verify(session).setTimeout(timeout);
- inOrder.verify(channelOs, atLeastOnce()).flush();
- inOrder.verify(channelOs, atLeastOnce()).close();
- inOrder.verifyNoMoreInteractions();
- }
-
- @Test
- public void send_withReceive_shouldReturnActualResult_whenTimeoutReached() throws Exception {
- //given
- cut = new SshJcraftWrapper(jSchMock, READ_INTERVAL_MS, 1);
- cut.setCharsChunkSize(1);
- cut.setSessionTimeoutMs(-1);
- String command = "sdc";
- String delimiter = ":";
- provideConnectedSubsystemInstanceWithStreamContent(command + SshJcraftWrapper.EOL);
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
-
- //when
- String result = cut.send(command, delimiter);
-
- //then
- assertEquals(StringUtils.EMPTY, result);
- }
-
- @Test
- public void send_withReceive_shouldReturnActualResult_whenCouldNotSetSessionTimeout() throws Exception {
- //given
- cut = new SshJcraftWrapper(jSchMock, READ_INTERVAL_MS, 1);
- cut.setCharsChunkSize(1);
- String command = "sdc";
- String delimiter = ":";
- provideConnectedSubsystemInstanceWithStreamContent(command + SshJcraftWrapper.EOL);
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
- doThrow(new JSchException("failed to set session timeout")).when(session).setTimeout(anyInt());
-
- //when
- String result = cut.send(command, delimiter);
-
- //then
- assertEquals(StringUtils.EMPTY, result);
- }
-
- @Test
- public void sendChar_shouldWriteCharacterToChannelOutputStream() throws Exception {
- //given
- int charNum = 100;
- provideConnectedSubsystemInstance();
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
- InOrder inOrder = inOrder(channelOs);
-
- //when
- cut.sendChar(charNum);
-
- //then
- inOrder.verify(channelOs).write(charNum);
- inOrder.verify(channelOs, atLeastOnce()).flush();
- inOrder.verify(channelOs, atLeastOnce()).close();
- inOrder.verifyNoMoreInteractions();
- }
-
- @Test(expected = IOException.class)
- public void sendChar_shouldRethrowIOException_whenOccurs() throws Exception {
- //given
- int charNum = 100;
- provideConnectedSubsystemInstance();
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
- doThrow(new IOException()).when(channelOs).write(charNum);
-
- //when
- cut.sendChar(charNum);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void send_withByteBuffer_shouldWriteBufferToChannelOutputStream() throws Exception {
- //given
- byte[] buffer = "Command".getBytes();
- int offset = 5;
- provideConnectedSubsystemInstance();
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
- InOrder inOrder = inOrder(channelOs);
-
- //when
- cut.send(buffer, offset, buffer.length);
-
- //then
- inOrder.verify(channelOs).write(buffer, offset, buffer.length);
- inOrder.verify(channelOs, atLeastOnce()).flush();
- inOrder.verify(channelOs, atLeastOnce()).close();
- inOrder.verifyNoMoreInteractions();
- }
-
- @Test(expected = IOException.class)
- public void send_withByteBuffer_shouldRethrowIOException_whenOccurs() throws Exception {
- //given
- byte[] buffer = "Command".getBytes();
- int offset = 5;
- provideConnectedSubsystemInstance();
- given(channelSubsystem.getOutputStream()).willReturn(channelOs);
- doThrow(new IOException()).when(channelOs).write(buffer, offset, buffer.length);
-
- //when
- cut.send(buffer, offset, buffer.length);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void getSftpConnection_shouldSetupSessionWithProperInvocationOrder() throws Exception {
- //given
- SshJcraftWrapper instance = spy(cut);
- given(instance.openSftpChannel(session)).willReturn(channelSftp);
- InOrder inOrder = inOrder(session, channelSftp, instance);
-
- //when
- ChannelSftp result = instance.getSftpConnection(HOST, USER, PASS);
-
- //then
- verify(jSchMock).getSession(USER, HOST, SshJcraftWrapper.DEFAULT_PORT);
- inOrder.verify(session).setPassword(PASS);
- inOrder.verify(session).setUserInfo(any(UserInfo.class));
- inOrder.verify(session)
- .setConfig(SshJcraftWrapper.STRICT_HOST_CHECK_KEY, SshJcraftWrapper.STRICT_HOST_CHECK_VALUE);
- inOrder.verify(session).connect(SESSION_TIMEOUT);
- inOrder.verify(instance).openSftpChannel(session);
- inOrder.verify(channelSftp).connect();
- inOrder.verifyNoMoreInteractions();
- assertEquals(channelSftp, result);
- }
-
- @Test
- public void sftp_get_shouldReadFromChannelInputStream_andCloseConnection() throws Exception {
- //given
- String streamContent = "test input stream content";
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- given(channelSftp.get(REMOTE_PATH)).willReturn(IOUtils.toInputStream(streamContent, "UTF-8"));
-
- //when
- String result = spyInstance.get(REMOTE_PATH, HOST, USER, PASS);
-
- //then
- assertEquals(streamContent, result);
- verify(channelSftp).disconnect();
- verify(session).disconnect();
- }
-
- @Test(expected = IOException.class)
- public void sftp_get_shouldThrowIOException_whenJschFails() throws Exception {
- //given
- SshJcraftWrapper spyInstance = spy(cut);
- doThrow(new JSchException()).when(spyInstance).openSftpChannel(session);
-
- //when
- spyInstance.get(REMOTE_PATH, HOST, USER, PASS);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test(expected = IOException.class)
- public void sftp_get_shouldThrowIOException_whenSftpOperationFails() throws Exception {
- //given
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- doThrow(new SftpException(0, "sftp error")).when(channelSftp).get(REMOTE_PATH);
-
- //when
- spyInstance.get(REMOTE_PATH, HOST, USER, PASS);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void sftp_get_shouldCloseSessionAndChannel_whenExceptionOccursOnConnectedInstance() throws Exception {
- //given
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- doThrow(new SftpException(0, "sftp error")).when(channelSftp).get(REMOTE_PATH);
- boolean ioException = false;
-
- //when
- try {
- spyInstance.get(REMOTE_PATH, HOST, USER, PASS);
- } catch (IOException e) {
- ioException = true;
- }
-
- //then
- assertTrue(ioException);
- verify(channelSftp).disconnect();
- verify(session).disconnect();
- }
-
- @Test
- public void sftp_get_shouldSkipClosingSessionAndChannel_whenExceptionOccursOnNotConnectedInstance() throws Exception {
- //given
- doThrow(new JSchException()).when(jSchMock).getSession(anyString(), anyString(), anyInt());
- boolean ioException = false;
-
- //when
- try {
- cut.get(REMOTE_PATH, HOST, USER, PASS);
- } catch (IOException e) {
- ioException = true;
- }
-
- //then
- assertTrue(ioException);
- verify(channelSftp, never()).disconnect();
- verify(session, never()).disconnect();
- }
-
- @Test
- public void sftp_put_withIs_shouldRemoveOldFilesFromDestinationPath_andPutNewData() throws Exception {
- //given
- InputStream is = IOUtils.toInputStream("test input stream content", "UTF-8");
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- InOrder inOrder = inOrder(channelSftp, session);
-
- //when
- spyInstance.put(is, REMOTE_PATH, HOST, USER, PASS);
-
- //then
- inOrder.verify(channelSftp).rm(REMOTE_PATH + "*");
- inOrder.verify(channelSftp).put(is, REMOTE_PATH, ChannelSftp.OVERWRITE);
- inOrder.verify(channelSftp).disconnect();
- inOrder.verify(session).disconnect();
- inOrder.verifyNoMoreInteractions();
- }
-
- @Test
- public void sftp_put_withIs_shouldContinueInsertingNewData_whenFileNotFoundDuringRemoval() throws Exception {
- //given
- InputStream is = IOUtils.toInputStream("test input stream content", "UTF-8");
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- doThrow(new SftpException(ChannelSftp.SSH_FX_NO_SUCH_FILE, "No such file/dir"))
- .when(channelSftp).rm(REMOTE_PATH + "*");
-
- //when
- spyInstance.put(is, REMOTE_PATH, HOST, USER, PASS);
-
- //then
- verify(channelSftp).rm(REMOTE_PATH + "*");
- verify(channelSftp).put(is, REMOTE_PATH, ChannelSftp.OVERWRITE);
- }
-
- @Test(expected = IOException.class)
- public void sftp_put_withIs_shouldThrowIOException_whenSftpFails() throws Exception {
- //given
- InputStream is = IOUtils.toInputStream("test input stream content", "UTF-8");
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- doThrow(new SftpException(ChannelSftp.SSH_FX_FAILURE, "general error"))
- .when(channelSftp).rm(anyString());
-
- //when
- spyInstance.put(is, REMOTE_PATH, HOST, USER, PASS);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test(expected = IOException.class)
- public void sftp_put_withIs_shouldThrowIOException_whenJschFails() throws Exception {
- //given
- InputStream is = IOUtils.toInputStream("test input stream content", "UTF-8");
- SshJcraftWrapper spyInstance = spy(cut);
- doThrow(new JSchException()).when(spyInstance).openSftpChannel(session);
-
- //when
- spyInstance.put(is, REMOTE_PATH, HOST, USER, PASS);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void sftp_put_withSourcePath_shouldPutSrcPathToDestinationPath_andDisconnectAfterwards() throws Exception {
- //given
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
-
- //when
- spyInstance.put(SOURCE_PATH, REMOTE_PATH);
-
- //then
- verify(channelSftp).put(SOURCE_PATH, REMOTE_PATH, ChannelSftp.OVERWRITE);
- verify(channelSftp).disconnect();
- verify(session).disconnect();
- }
-
- @Test(expected = IOException.class)
- public void sftp_put_withSourcePath_shouldThrowIOException_whenSftpFails() throws Exception {
- //given
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- doThrow(new SftpException(ChannelSftp.SSH_FX_FAILURE, "general error"))
- .when(channelSftp).put(anyString(), anyString(), anyInt());
-
- //when
- spyInstance.put(SOURCE_PATH, REMOTE_PATH);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test(expected = IOException.class)
- public void sftp_put_withSourcePath_shouldThrowIOException_whenJschFails() throws Exception {
- //given
- SshJcraftWrapper spyInstance = spy(cut);
- doThrow(new JSchException()).when(spyInstance).openSftpChannel(session);
-
- //when
- spyInstance.put(SOURCE_PATH, REMOTE_PATH);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void sftpPutStringData_shouldPutInputStreamToRemotePath() throws Exception {
- //given
- String inputData = "Test data";
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
-
- //when
- spyInstance.sftpPutStringData(inputData, REMOTE_PATH);
-
- //then
- verify(channelSftp).put(any(InputStream.class), eq(REMOTE_PATH), eq(ChannelSftp.OVERWRITE));
- verify(channelSftp).disconnect();
- verify(session).disconnect();
- }
-
- @Test(expected = IOException.class)
- public void sftpPutStringData_shouldThrowIOException_whenJschFails() throws Exception {
- //given
- String inputData = "Test data";
- SshJcraftWrapper spyInstance = spy(cut);
- doThrow(new JSchException()).when(spyInstance).openSftpChannel(session);
-
- //when
- spyInstance.sftpPutStringData(inputData, REMOTE_PATH);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test(expected = IOException.class)
- public void sftpPutStringData_shouldThrowIOException_whenSftpFails() throws Exception {
- //given
- String inputData = "Test data";
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- doThrow(new SftpException(ChannelSftp.SSH_FX_FAILURE, "general error"))
- .when(channelSftp).put(any(InputStream.class), anyString(), anyInt());
-
- //when
- spyInstance.sftpPutStringData(inputData, REMOTE_PATH);
-
- //then
- fail(IO_EXCEPTION_MSG);
- }
-
- @Test
- public void sftpGet_shouldReadFromChannelInputStream_withInstanceCredentials() throws Exception {
- //given
- String remoteStreamContent = "test input stream content";
- SshJcraftWrapper spyInstance = spy(cut);
- given(spyInstance.openSftpChannel(session)).willReturn(channelSftp);
- given(channelSftp.get(REMOTE_PATH)).willReturn(IOUtils.toInputStream(remoteStreamContent, "UTF-8"));
-
- //when
- String result = spyInstance.sftpGet(REMOTE_PATH);
-
- //then
- assertEquals(remoteStreamContent, result);
- }
}