Skip to content

Commit f1fe502

Browse files
committed
test: S3InboundChannelAdapterParserTest
1 parent cf07412 commit f1fe502

File tree

2 files changed

+101
-1
lines changed

2 files changed

+101
-1
lines changed

int-aws/src/main/resources/org/springframework/schema/integration/aws/spring-integration-aws.xsd

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1399,7 +1399,6 @@
13991399
<documentation><![CDATA[
14001400
Reference to an [org.springframework.integration.file.remote.session.SessionFactory] bean with
14011401
a [software.amazon.awssdk.services.s3.model.S3Object] generic type parameter.
1402-
Mutually exclusive with 's3'.
14031402
]]></documentation>
14041403
</annotation>
14051404
</attribute>
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
package org.springframework.integration.aws.config.xml.parsers;
2+
3+
import org.bool.junit.mockito.inline.ConstructionMock;
4+
5+
import org.assertj.core.api.InstanceOfAssertFactories;
6+
import org.junit.jupiter.api.Test;
7+
import org.mockito.Mock;
8+
import org.mockito.MockedConstruction.Context;
9+
import org.springframework.integration.aws.inbound.S3InboundFileSynchronizer;
10+
import org.springframework.integration.aws.inbound.S3InboundFileSynchronizingMessageSource;
11+
import org.springframework.integration.channel.DirectChannel;
12+
import org.springframework.integration.file.DirectoryScanner;
13+
import org.springframework.integration.file.filters.FileListFilter;
14+
import org.springframework.integration.file.remote.session.SessionFactory;
15+
import org.springframework.integration.metadata.MetadataStore;
16+
import software.amazon.awssdk.services.s3.model.S3Object;
17+
18+
import java.io.File;
19+
import java.util.Comparator;
20+
21+
import static org.assertj.core.api.Assertions.assertThat;
22+
23+
@ConstructionMock({
24+
S3InboundFileSynchronizingMessageSource.class,
25+
S3InboundFileSynchronizer.class,
26+
})
27+
class S3InboundChannelAdapterParserTest extends ParserTestBase {
28+
29+
@Mock
30+
private SessionFactory<S3Object> sessionFactory;
31+
32+
@Mock
33+
private MetadataStore metadataStore;
34+
35+
@Mock
36+
private FileListFilter<File> fileListFilter;
37+
38+
@Mock
39+
private Comparator<File> comparator;
40+
41+
@Mock
42+
private DirectoryScanner scanner;
43+
44+
private S3InboundFileSynchronizer synchronizer;
45+
46+
@Test
47+
void testAdapter() {
48+
registerBean("c", DirectChannel.class, new DirectChannel());
49+
registerBean("sf", SessionFactory.class, sessionFactory);
50+
registerBean("rfms", MetadataStore.class, metadataStore);
51+
registerBean("lf", FileListFilter.class, fileListFilter);
52+
registerBean("cmp", Comparator.class, comparator);
53+
registerBean("scn", DirectoryScanner.class, scanner);
54+
55+
var messageSource = loadBean(S3InboundFileSynchronizingMessageSource.class, """
56+
<int-aws:s3-inbound-channel-adapter
57+
id="s3ica"
58+
channel="c"
59+
local-directory="local"
60+
session-factory="sf"
61+
delete-remote-files="#{true}"
62+
filename-pattern="file*name"
63+
local-filename-generator-expression="lfg.exp"
64+
local-filter="lf"
65+
max-fetch-size="#{10}"
66+
metadata-store-prefix="pfx"
67+
preserve-timestamp="#{true}"
68+
remote-directory-expression="rd.exp"
69+
remote-file-metadata-store="rfms"
70+
scanner="scn"
71+
temporary-file-suffix=".test"
72+
remote-file-separator=";"
73+
auto-create-local-directory="#{true}"
74+
comparator="cmp"/>
75+
""");
76+
77+
verify(messageSource).setLocalDirectory(new File("local"));
78+
verify(messageSource).setScanner(scanner);
79+
verify(messageSource).setLocalFilter(fileListFilter);
80+
verify(messageSource).setMaxFetchSize(10);
81+
verify(messageSource).setAutoCreateLocalDirectory(true);
82+
83+
verify(synchronizer).setDeleteRemoteFiles(true);
84+
verify(synchronizer).setRemoteFileMetadataStore(metadataStore);
85+
verify(synchronizer).setTemporaryFileSuffix(".test");
86+
verify(synchronizer).setPreserveTimestamp(true);
87+
verify(synchronizer).setRemoteFileSeparator(";");
88+
verify(synchronizer).setLocalFilenameGeneratorExpression(assertArg(e -> assertThat(e.getExpressionString()).isEqualTo("lfg.exp")));
89+
}
90+
91+
void testAdapter(S3InboundFileSynchronizingMessageSource mock, Context context) {
92+
assertThat(context.arguments()).asInstanceOf(InstanceOfAssertFactories.LIST)
93+
.contains(comparator);
94+
}
95+
96+
void testAdapter(S3InboundFileSynchronizer mock, Context context) {
97+
assertThat(context.arguments()).asInstanceOf(InstanceOfAssertFactories.LIST)
98+
.contains(sessionFactory);
99+
synchronizer = mock;
100+
}
101+
}

0 commit comments

Comments
 (0)