@Test public void testKeyUsingFileName() throws Exception { SftpPersistentAcceptOnceFileListFilter filter = new SftpPersistentAcceptOnceFileListFilter( new SimpleMetadataStore(), "rollback:"); ChannelSftp channel = new ChannelSftp(); SftpATTRS attrs = mock(SftpATTRS.class); @SuppressWarnings("unchecked") Constructor<LsEntry> ctor = (Constructor<LsEntry>) LsEntry.class.getDeclaredConstructors()[0]; ctor.setAccessible(true); LsEntry sftpFile1 = ctor.newInstance(channel, "foo", "same", attrs); LsEntry sftpFile2 = ctor.newInstance(channel, "bar", "same", attrs); LsEntry[] files = new LsEntry[] {sftpFile1, sftpFile2}; List<LsEntry> now = filter.filterFiles(files); assertEquals(2, now.size()); assertEquals("foo", now.get(0).getFilename()); assertEquals("bar", now.get(1).getFilename()); filter.close(); }
@Test public void testNotSharedSession() throws Exception { JSch jsch = spy(new JSch()); Constructor<com.jcraft.jsch.Session> ctor = com.jcraft.jsch.Session.class.getDeclaredConstructor(JSch.class, String.class, String.class, int.class); ctor.setAccessible(true); com.jcraft.jsch.Session jschSession1 = spy(ctor.newInstance(jsch, "foo", "host", 22)); com.jcraft.jsch.Session jschSession2 = spy(ctor.newInstance(jsch, "foo", "host", 22)); new DirectFieldAccessor(jschSession1).setPropertyValue("isConnected", true); new DirectFieldAccessor(jschSession2).setPropertyValue("isConnected", true); when(jsch.getSession("foo", "host", 22)).thenReturn(jschSession1, jschSession2); ChannelSftp channel1 = spy(new ChannelSftp()); ChannelSftp channel2 = spy(new ChannelSftp()); new DirectFieldAccessor(channel1).setPropertyValue("session", jschSession1); new DirectFieldAccessor(channel2).setPropertyValue("session", jschSession1); doReturn(channel1).when(jschSession1).openChannel("sftp"); doReturn(channel2).when(jschSession2).openChannel("sftp"); DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(jsch, false); factory.setHost("host"); factory.setUser("foo"); factory.setPassword("bar"); noopConnect(channel1); noopConnect(channel2); Session<LsEntry> s1 = factory.getSession(); Session<LsEntry> s2 = factory.getSession(); assertNotSame(TestUtils.getPropertyValue(s1, "jschSession"), TestUtils.getPropertyValue(s2, "jschSession")); assertSame(channel1, TestUtils.getPropertyValue(s1, "channel")); assertSame(channel2, TestUtils.getPropertyValue(s2, "channel")); }
@Test public void testRollback() throws Exception { SftpPersistentAcceptOnceFileListFilter filter = new SftpPersistentAcceptOnceFileListFilter( new SimpleMetadataStore(), "rollback:"); ChannelSftp channel = new ChannelSftp(); SftpATTRS attrs = mock(SftpATTRS.class); @SuppressWarnings("unchecked") Constructor<LsEntry> ctor = (Constructor<LsEntry>) LsEntry.class.getDeclaredConstructors()[0]; ctor.setAccessible(true); LsEntry sftpFile1 = ctor.newInstance(channel, "foo", "foo", attrs); LsEntry sftpFile2 = ctor.newInstance(channel, "bar", "bar", attrs); LsEntry ftpFile3 = ctor.newInstance(channel, "baz", "baz", attrs); LsEntry[] files = new LsEntry[] {sftpFile1, sftpFile2, ftpFile3}; List<LsEntry> passed = filter.filterFiles(files); assertTrue(Arrays.equals(files, passed.toArray())); List<LsEntry> now = filter.filterFiles(files); assertEquals(0, now.size()); filter.rollback(passed.get(1), passed); now = filter.filterFiles(files); assertEquals(2, now.size()); assertEquals("bar", now.get(0).getFilename()); assertEquals("baz", now.get(1).getFilename()); now = filter.filterFiles(files); assertEquals(0, now.size()); filter.close(); }
final ChannelSftp channel1 = spy(new ChannelSftp()); doReturn("channel1").when(channel1).toString(); final ChannelSftp channel2 = spy(new ChannelSftp()); doReturn("channel2").when(channel2).toString(); new DirectFieldAccessor(channel1).setPropertyValue("session", jschSession1);
final ChannelSftp channel1 = spy(new ChannelSftp()); doReturn("channel1").when(channel1).toString(); final ChannelSftp channel2 = spy(new ChannelSftp()); doReturn("channel2").when(channel2).toString(); final ChannelSftp channel3 = spy(new ChannelSftp()); doReturn("channel3").when(channel3).toString(); final ChannelSftp channel4 = spy(new ChannelSftp()); doReturn("channel4").when(channel4).toString(); new DirectFieldAccessor(channel1).setPropertyValue("session", jschSession1);
static Channel getChannel(String type) { if (type.equals("session")) { return new ChannelSession(); } if (type.equals("shell")) { return new ChannelShell(); } if (type.equals("exec")) { return new ChannelExec(); } if (type.equals("x11")) { return new ChannelX11(); } if (type.equals("auth-agent@openssh.com")) { return new ChannelAgentForwarding(); } if (type.equals("direct-tcpip")) { return new ChannelDirectTCPIP(); } if (type.equals("forwarded-tcpip")) { return new ChannelForwardedTCPIP(); } if (type.equals("sftp")) { return new ChannelSftp(); } if (type.equals("subsystem")) { return new ChannelSubsystem(); } return null; }
return new ChannelSftp();
return new ChannelSftp();
@Before public void setUp() throws JSchException { initMocks(this); userCredentials = new UserCredentials("user", "password"); SFTPClient.setHost("host"); SFTPClient.setPort(999); SFTPClient.setCredentials(userCredentials); when(mockConnectionFactory.createSFTPConnection(any(Channel.class))).thenReturn(new SFTPConnection(new ChannelSftp())); }