*/
public interface SshAdapter {
- /**
- * Creates instance of SshConnection.
- *
- * @param host remote host to open SSH connection to
- * @param port remote SSH port
- * @param username SSH connection user name
- * @param password SSH connection password
- * @return instance of SshConnection
- */
- SshConnection getConnection(String host, int port, String username, String password);
+ /**
+ * Creates instance of SshConnection.
+ *
+ * @param host remote host to open SSH connection to
+ * @param port remote SSH port
+ * @param username SSH connection user name
+ * @param password SSH connection password
+ * @return instance of SshConnection
+ */
+ SshConnection getConnection(String host, int port, String username, String password);
+
+ /**
+ * Creates instance of SshConnection.
+ *
+ * @param host remote host to open SSH connection to
+ * @param port remote SSH port
+ * @param keyFile SSH connection key file location
+ * @return instance of SshConnection
+ */
+ SshConnection getConnection(String host, int port, String keyFile);
}
*/
public interface SshConnection {
- /**
- * Connect to SSH server.
- */
- void connect();
+ /**
+ * Connect to SSH server.
+ */
+ void connect();
- /**
- * Connect to SSH Server using a retry mechanism
- */
- void connectWithRetry();
+ /**
+ * Connect to SSH Server using a retry mechanism
+ */
+ void connectWithRetry();
- /**
- * Disconnect from SSH server.
- */
- void disconnect();
+ /**
+ * Disconnect from SSH server.
+ */
+ void disconnect();
- /**
- * Exec remote command over SSH. Return command execution status.
- * Command output is written to out or err stream.
- *
- * @param cmd command to execute
- * @param out content of sysout will go to this stream
- * @param err content of syserr will go to this stream
- * @return command execution status
- */
- int execCommand(String cmd, OutputStream out, OutputStream err);
+ /**
+ * Exec remote command over SSH. Return command execution status.
+ * Command output is written to out or err stream.
+ *
+ * @param cmd command to execute
+ * @param out content of sysout will go to this stream
+ * @param err content of syserr will go to this stream
+ * @return command execution status
+ */
+ int execCommand(String cmd, OutputStream out, OutputStream err);
- /**
- * Exec remote command over SSH with pseudo-tty. Return command execution status.
- * Command output is written to out stream only as pseudo-tty writes to one stream only.
- *
- * @param cmd command to execute
- * @param out content of sysout will go to this stream
- * @return command execution status
- */
- int execCommandWithPty(String cmd, OutputStream out);
+ /**
+ * Exec remote command over SSH with pseudo-tty. Return command execution status.
+ * Command output is written to out stream only as pseudo-tty writes to one stream only.
+ *
+ * @param cmd command to execute
+ * @param out content of sysout will go to this stream
+ * @return command execution status
+ */
+ int execCommandWithPty(String cmd, OutputStream out);
- /**
- * Set the command execution timeout
- * @param timeout time in milliseconds
+ /**
+ * Set the command execution timeout
+ * @param timeout time in milliseconds
*/
- void setExecTimeout(long timeout);
+ void setExecTimeout(long timeout);
}
public class SshAdapterSshd implements SshAdapter {
- @Override
- public SshConnection getConnection(String host, int port, String username, String password) {
- return new SshConnectionSshd(host, port, username, password);
- }
+ @Override
+ public SshConnection getConnection(String host, int port, String username, String password) {
+ return new SshConnectionSshd(host, port, username, password);
+ }
+
+ @Override
+ public SshConnection getConnection(String host, int port, String keyFile) {
+ return new SshConnectionSshd(host, port, keyFile);
+ }
}
sshClient.connect(EncryptionTool.getInstance().decrypt(username), host, port).verify().getSession();
if (password != null) {
clientSession.addPasswordIdentity(EncryptionTool.getInstance().decrypt(password));
- }
- if (keyFile != null) {
+ } else if (keyFile != null) {
KeyPairProvider keyPairProvider = new FileKeyPairProvider(
new File(keyFile).toPath()
);
@Override
public SshConnection getConnection(String host, int port, String username, String password) {
- SshConnectionMock sshConnectionMock = new SshConnectionMock(host, port, username, password);
+ SshConnectionMock sshConnectionMock = new SshConnectionMock(host, port, username, password, null);
+ sshConnectionMock.setReturnStatus(returnStatus);
+ sshConnectionMock.setReturnStdout(returnStdout);
+ sshConnectionMock.setReturnStderr(returnStderr);
+ connectionMocks.add(sshConnectionMock);
+ return sshConnectionMock;
+ }
+
+ @Override
+ public SshConnection getConnection(String host, int port, String keyFile) {
+ SshConnectionMock sshConnectionMock = new SshConnectionMock(host, port, null, null, keyFile);
sshConnectionMock.setReturnStatus(returnStatus);
sshConnectionMock.setReturnStdout(returnStdout);
sshConnectionMock.setReturnStderr(returnStderr);
private static final int DEF_SUCCESS_STATUS = 0;
- private String host;
- private int port;
- private String username;
- private String password;
+ private final String host;
+ private final int port;
+ private final String username;
+ private final String password;
+ private final String keyFile;
private long timeout;
private int returnStatus = DEF_SUCCESS_STATUS;
private int disconnectCallCount = 0;
private List<String> executedCommands = new ArrayList<>();
- public SshConnectionMock(String host, int port, String username, String password) {
+ public SshConnectionMock(String host, int port, String username, String password, String keyFile) {
this.host = host;
this.port = port;
this.username = username;
this.password = password;
+ this.keyFile = keyFile;
}
@Override
return password;
}
+ public String getKeyFile() {
+ return keyFile;
+ }
+
public int getConnectCallCount() {
return connectCallCount;
}
private SshConnectionMock sshConnectionMock;
@Before
public void setUp() {
- sshConnectionMock=new SshConnectionMock("localhost", 8080, "myUser", "myPassword");
+ sshConnectionMock=new SshConnectionMock("localhost", 8080, "myUser", "myPassword", "sampleKeyFile");
}
@Test
public void testGetHost() {
- assertNotNull(sshConnectionMock.getHost());
- assertEquals(sshConnectionMock.getHost(), "localhost");
+ assertEquals("localhost", sshConnectionMock.getHost());
}
@Test
public void testGetPort() {
- assertNotNull(sshConnectionMock.getPort());
- assertEquals(sshConnectionMock.getPort(), 8080);
+ assertEquals(8080, sshConnectionMock.getPort());
}
@Test
public void testGetUsername() {
- assertNotNull(sshConnectionMock.getUsername());
- assertEquals(sshConnectionMock.getUsername(), "myUser");
+ assertEquals("myUser", sshConnectionMock.getUsername());
}
@Test
public void testGetPassword() {
- assertNotNull(sshConnectionMock.getPassword());
- assertEquals(sshConnectionMock.getPassword(), "myPassword");
+ assertEquals("myPassword", sshConnectionMock.getPassword());
}
+
+ @Test
+ public void testKeyFile() {
+ assertEquals("sampleKeyFile", sshConnectionMock.getKeyFile());
+ }
+
@Test
public void testGetReturnStderr() {
sshConnectionMock.setReturnStderr("returnStderr");
- assertNotNull(sshConnectionMock.getReturnStderr());
- assertEquals(sshConnectionMock.getReturnStderr(), "returnStderr");
+ assertEquals("returnStderr", sshConnectionMock.getReturnStderr());
}
@Test
public void testGetReturnStdout() {
sshConnectionMock.setReturnStdout("returnStdout");
- assertNotNull(sshConnectionMock.getReturnStdout());
- assertEquals(sshConnectionMock.getReturnStdout(), "returnStdout");
+ assertEquals("returnStdout", sshConnectionMock.getReturnStdout());
}
@Test
public void testGetReturnStatus() {
sshConnectionMock.setReturnStatus(200);
- assertNotNull(sshConnectionMock.getReturnStatus());
- assertEquals(sshConnectionMock.getReturnStatus(), 200);
+ assertEquals(200, sshConnectionMock.getReturnStatus());
}
@Test
public void testGetExecutedCommands() {