@Test public void testCreateClientFailsIfPwdReturnsRelativePath() throws Exception { final String remoteRoot = "some/directory/in/my/home/dir"; hostConfig = createWithOverrideUsernameAndPassword(mockJSch); getHostConfig().setRemoteRootDir(remoteRoot); final BapSshCommonConfiguration commonConfiguration = new BapSshCommonConfiguration("Ignore me", null, null, false); getHostConfig().setCommonConfig(commonConfiguration); expect( mockJSch.getSession( getHostConfig().getUsername(), getHostConfig().getHostname(), getHostConfig().getPort())) .andReturn(mockSession); mockSession.setPassword(TEST_PASSPHRASE); mockSession.setConfig((Properties) anyObject()); mockSession.connect(getHostConfig().getTimeout()); expect(mockSession.openChannel("sftp")).andReturn(mockSftp); mockSftp.connect(getHostConfig().getTimeout()); testHelper.expectDirectoryCheck(getHostConfig().getRemoteRootDir(), true); mockSftp.cd(getHostConfig().getRemoteRootDir()); expect(mockSftp.pwd()).andReturn("home/bap/" + remoteRoot); expect(mockSftp.isConnected()).andReturn(false); expect(mockSession.isConnected()).andReturn(false); assertCreateClientThrowsException("home/bap/" + remoteRoot); }
@Test public void testCreateClientWillUseKeyIfKeyAndKeyPathPresent() throws Exception { final String testKey = "MyVeryBigKey"; final BapSshCommonConfiguration defaultKeyInfo = new BapSshCommonConfiguration( TEST_PASSPHRASE, testKey, "/this/file/will/not/be/used", false); hostConfig = createWithDefaultKeyInfo(mockJSch, defaultKeyInfo); getHostConfig().setPassword("Ignore me"); expect( mockJSch.getSession( getHostConfig().getUsername(), getHostConfig().getHostname(), getHostConfig().getPort())) .andReturn(mockSession); mockJSch.addIdentity( isA(String.class), aryEq(BapSshUtil.toBytes(testKey)), (byte[]) isNull(), aryEq(BapSshUtil.toBytes(TEST_PASSPHRASE))); mockSession.setConfig((Properties) anyObject()); mockSession.connect(getHostConfig().getTimeout()); expect(mockSession.openChannel("sftp")).andReturn(mockSftp); mockSftp.connect(getHostConfig().getTimeout()); testHelper.expectDirectoryCheck(getHostConfig().getRemoteRootDir(), true); mockSftp.cd(getHostConfig().getRemoteRootDir()); assertCreateClient(); }
@Test public void testCreateClientWithOverrideKeyPath() throws Exception { final String testKeyFilename = "myPrivateKey"; final RandomFile theKey = new RandomFile(jenkinsHome.getRoot(), testKeyFilename); hostConfig = createWithOverrideUsernameAndPassword(mockJSch, TEST_PASSPHRASE, testKeyFilename, ""); final BapSshCommonConfiguration commonConfiguration = new BapSshCommonConfiguration("Ignore me", null, null, false); getHostConfig().setCommonConfig(commonConfiguration); expect( mockJSch.getSession( getHostConfig().getUsername(), getHostConfig().getHostname(), getHostConfig().getPort())) .andReturn(mockSession); mockJSch.addIdentity( isA(String.class), aryEq(theKey.getContents()), (byte[]) isNull(), aryEq(BapSshUtil.toBytes(TEST_PASSPHRASE))); mockSession.setConfig((Properties) anyObject()); mockSession.connect(getHostConfig().getTimeout()); expect(mockSession.openChannel("sftp")).andReturn(mockSftp); mockSftp.connect(getHostConfig().getTimeout()); testHelper.expectDirectoryCheck(getHostConfig().getRemoteRootDir(), true); mockSftp.cd(getHostConfig().getRemoteRootDir()); assertCreateClient(); }
private BapSshClient assertCreateClientWithDefaultKey(final boolean disableExec) throws Exception { final String testKey = "MyVeryBigKey"; final BapSshCommonConfiguration defaultKeyInfo = new BapSshCommonConfiguration(TEST_PASSPHRASE, testKey, null, disableExec); hostConfig = createWithDefaultKeyInfo(mockJSch, defaultKeyInfo); getHostConfig().setPassword("Ignore me"); expect( mockJSch.getSession( getHostConfig().getUsername(), getHostConfig().getHostname(), getHostConfig().getPort())) .andReturn(mockSession); mockJSch.addIdentity( isA(String.class), aryEq(BapSshUtil.toBytes(testKey)), (byte[]) isNull(), aryEq(BapSshUtil.toBytes(defaultKeyInfo.getPassphrase()))); mockSession.setConfig((Properties) anyObject()); mockSession.connect(getHostConfig().getTimeout()); expect(mockSession.openChannel("sftp")).andReturn(mockSftp); mockSftp.connect(getHostConfig().getTimeout()); testHelper.expectDirectoryCheck(getHostConfig().getRemoteRootDir(), true); mockSftp.cd(getHostConfig().getRemoteRootDir()); return assertCreateClient(); }
private void assertCreateClientThrowsException(final String exceptionMessageShouldContain) throws Exception { testHelper.assertBPE( exceptionMessageShouldContain, new Runnable() { public void run() { getHostConfig().createClient(buildInfo); } }); }
@Test public void testCreateClientWithDefaultPassword() throws Exception { final BapSshCommonConfiguration defaultKeyInfo = new BapSshCommonConfiguration(TEST_PASSPHRASE, null, null, false); hostConfig = createWithDefaultKeyInfo(mockJSch, defaultKeyInfo); getHostConfig().setPassword("Ignore me"); expect( mockJSch.getSession( getHostConfig().getUsername(), getHostConfig().getHostname(), getHostConfig().getPort())) .andReturn(mockSession); mockSession.setPassword(defaultKeyInfo.getPassphrase()); mockSession.setConfig((Properties) anyObject()); mockSession.connect(getHostConfig().getTimeout()); expect(mockSession.openChannel("sftp")).andReturn(mockSftp); mockSftp.connect(getHostConfig().getTimeout()); testHelper.expectDirectoryCheck(getHostConfig().getRemoteRootDir(), true); mockSftp.cd(getHostConfig().getRemoteRootDir()); assertCreateClient(); }
private BapSshClient assertCreateWithDefaultInfo(final String responseFromPwd) throws JSchException, SftpException { final BapSshCommonConfiguration commonConfiguration = new BapSshCommonConfiguration("Ignore me", null, null, false); getHostConfig().setCommonConfig(commonConfiguration); expect( mockJSch.getSession( getHostConfig().getUsername(), getHostConfig().getHostname(), getHostConfig().getPort())) .andReturn(mockSession); mockSession.setPassword(getHostConfig().getPassword()); mockSession.setConfig((Properties) anyObject()); mockSession.connect(getHostConfig().getTimeout()); expect(mockSession.openChannel("sftp")).andReturn(mockSftp); mockSftp.connect(getHostConfig().getTimeout()); testHelper.expectDirectoryCheck(getHostConfig().getRemoteRootDir(), true); mockSftp.cd(getHostConfig().getRemoteRootDir()); if (responseFromPwd != null) expect(mockSftp.pwd()).andReturn(responseFromPwd); return assertCreateClient(); }