Skip to content

Commit 9e3aac1

Browse files
committed
test: SqsMessageDrivenChannelAdapterParserTest
1 parent 6d9edb4 commit 9e3aac1

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package org.springframework.integration.aws.support.config.xml.parsers;
2+
3+
import org.bool.junit.mockito.inline.ConstructionMock;
4+
5+
import io.awspring.cloud.sqs.listener.QueueNotFoundStrategy;
6+
import io.awspring.cloud.sqs.listener.SqsContainerOptions;
7+
import io.awspring.cloud.sqs.listener.acknowledgement.handler.AcknowledgementMode;
8+
import org.assertj.core.api.InstanceOfAssertFactories;
9+
import org.junit.jupiter.api.Test;
10+
import org.mockito.ArgumentCaptor;
11+
import org.mockito.Captor;
12+
import org.mockito.Mock;
13+
import org.mockito.MockedConstruction.Context;
14+
import org.springframework.core.task.TaskExecutor;
15+
import org.springframework.integration.aws.inbound.SqsMessageDrivenChannelAdapter;
16+
import org.springframework.messaging.MessageChannel;
17+
import org.springframework.messaging.core.DestinationResolver;
18+
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
19+
20+
import java.time.Duration;
21+
22+
import static org.assertj.core.api.Assertions.assertThat;
23+
24+
@ConstructionMock(SqsMessageDrivenChannelAdapter.class)
25+
class SqsMessageDrivenChannelAdapterParserTest extends ParserTestBase {
26+
27+
@Captor
28+
private ArgumentCaptor<SqsContainerOptions> containerOptions;
29+
30+
@Mock
31+
private SqsAsyncClient sqs;
32+
33+
@Mock
34+
private TaskExecutor taskExecutor;
35+
36+
@Mock
37+
private DestinationResolver<MessageChannel> destinationResolver;
38+
39+
@Test
40+
void testAdapter() {
41+
registerBean("sqs", sqs);
42+
registerBean("ex", taskExecutor);
43+
registerBean("dr", destinationResolver);
44+
45+
parse("""
46+
<int-aws:sqs-message-driven-channel-adapter
47+
id="smdca"
48+
channel="c"
49+
queues="q1,q2"
50+
sqs="sqs"
51+
destination-resolver="dr"
52+
error-channel="ec"
53+
max-number-of-messages="#{5}"
54+
message-deletion-policy="#{'ON_SUCCESS'}"
55+
queue-stop-timeout="#{50}"
56+
send-timeout="#{50}"
57+
task-executor="ex"
58+
visibility-timeout="#{50}"
59+
wait-time-out="#{5}"
60+
resource-id-resolver="unknownResolver"
61+
fail-on-missing-queue="true"
62+
/>
63+
""");
64+
65+
var adapter = beanFactory.getBean(SqsMessageDrivenChannelAdapter.class);
66+
67+
verify(adapter).setBeanName("smdca");
68+
verify(adapter).setOutputChannelName("c");
69+
verify(adapter).setErrorChannelName("ec");
70+
verify(adapter).setSendTimeout(50);
71+
verify(adapter).setSqsContainerOptions(containerOptions.capture());
72+
73+
assertThat(containerOptions.getValue())
74+
.returns(AcknowledgementMode.ON_SUCCESS, SqsContainerOptions::getAcknowledgementMode)
75+
.returns(5, SqsContainerOptions::getMaxConcurrentMessages)
76+
.returns(5, SqsContainerOptions::getMaxMessagesPerPoll)
77+
.returns(Duration.ofMillis(50), SqsContainerOptions::getListenerShutdownTimeout)
78+
.returns(Duration.ofSeconds(50), SqsContainerOptions::getMessageVisibility)
79+
.returns(Duration.ofSeconds(5), SqsContainerOptions::getPollTimeout)
80+
.returns(taskExecutor, SqsContainerOptions::getComponentsTaskExecutor)
81+
.returns(QueueNotFoundStrategy.FAIL, SqsContainerOptions::getQueueNotFoundStrategy)
82+
;
83+
}
84+
85+
void testBeanDefinition(SqsMessageDrivenChannelAdapter mock, Context context) {
86+
assertThat(context.arguments()).asInstanceOf(InstanceOfAssertFactories.LIST)
87+
.contains(sqs, new String[] {"q1", "q2"});
88+
}
89+
}

0 commit comments

Comments
 (0)