GH-3092: Refactor (S)FTP outbound specs, handlers
Fixes https://github.com/spring-projects/spring-integration/issues/3092
This commit is contained in:
committed by
GitHub
parent
2419c03b25
commit
7cefd53e10
@@ -70,6 +70,7 @@ import org.springframework.util.FileCopyUtils;
|
||||
* @author Artem Bilan
|
||||
* @author Gary Russell
|
||||
* @author Joaquin Santana
|
||||
* @author Deepak Gunasekaran
|
||||
*
|
||||
* @since 5.0
|
||||
*/
|
||||
@@ -203,6 +204,59 @@ public class FtpTests extends FtpTestSupport {
|
||||
registration.destroy();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFtpOutboundFlowWithFtpRemoteTemplate() {
|
||||
|
||||
FtpRemoteFileTemplate ftpTemplate = new FtpRemoteFileTemplate(sessionFactory());
|
||||
IntegrationFlow flow = f -> f
|
||||
.handle(Ftp.outboundAdapter(ftpTemplate)
|
||||
.useTemporaryFileName(false)
|
||||
.fileNameExpression("headers['" + FileHeaders.FILENAME + "']")
|
||||
.remoteDirectory("ftpTarget"));
|
||||
IntegrationFlowRegistration registration = this.flowContext.registration(flow).register();
|
||||
String fileName = "foo.file";
|
||||
Message<ByteArrayInputStream> message = MessageBuilder
|
||||
.withPayload(new ByteArrayInputStream("foo".getBytes(StandardCharsets.UTF_8)))
|
||||
.setHeader(FileHeaders.FILENAME, fileName)
|
||||
.build();
|
||||
registration.getInputChannel().send(message);
|
||||
FTPFile[] files = ftpTemplate.execute(session ->
|
||||
session.list(getTargetRemoteDirectory().getName() + "/" + fileName));
|
||||
assertThat(files.length).isEqualTo(1);
|
||||
assertThat(files[0].getSize()).isEqualTo(3);
|
||||
|
||||
registration.destroy();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFtpOutboundFlowWithFtpRemoteTemplateAndMode() {
|
||||
|
||||
FtpRemoteFileTemplate ftpTemplate = new FtpRemoteFileTemplate(sessionFactory());
|
||||
IntegrationFlow flow = f -> f
|
||||
.handle(Ftp.outboundAdapter(ftpTemplate, FileExistsMode.APPEND)
|
||||
.useTemporaryFileName(false)
|
||||
.fileNameExpression("headers['" + FileHeaders.FILENAME + "']")
|
||||
.remoteDirectory("ftpTarget"));
|
||||
IntegrationFlowRegistration registration = this.flowContext.registration(flow).register();
|
||||
String fileName = "foo.file";
|
||||
Message<ByteArrayInputStream> message1 = MessageBuilder
|
||||
.withPayload(new ByteArrayInputStream("foo".getBytes(StandardCharsets.UTF_8)))
|
||||
.setHeader(FileHeaders.FILENAME, fileName)
|
||||
.build();
|
||||
Message<ByteArrayInputStream> message2 = MessageBuilder
|
||||
.withPayload(new ByteArrayInputStream("foo".getBytes(StandardCharsets.UTF_8)))
|
||||
.setHeader(FileHeaders.FILENAME, fileName)
|
||||
.build();
|
||||
registration.getInputChannel().send(message1);
|
||||
registration.getInputChannel().send(message2);
|
||||
FTPFile[] files = ftpTemplate.execute(session ->
|
||||
session.list(getTargetRemoteDirectory().getName() + "/" + fileName));
|
||||
assertThat(files.length).isEqualTo(1);
|
||||
assertThat(files[0].getSize()).isEqualTo(6);
|
||||
|
||||
registration.destroy();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFtpOutboundFlowWithChmod() {
|
||||
IntegrationFlow flow = f -> f
|
||||
|
||||
Reference in New Issue
Block a user