|
1 | 1 | package org.springframework.integration.aws.support.config.xml.parsers; |
2 | 2 |
|
| 3 | +import org.bool.junit.mockito.inline.ConstructionMock; |
| 4 | + |
| 5 | +import org.assertj.core.api.InstanceOfAssertFactories; |
3 | 6 | import org.junit.jupiter.api.Test; |
4 | | -import org.springframework.beans.factory.config.BeanDefinition; |
5 | | -import org.springframework.beans.factory.config.RuntimeBeanReference; |
6 | | -import org.springframework.beans.factory.config.TypedStringValue; |
7 | | -import org.springframework.beans.factory.support.BeanDefinitionRegistry; |
8 | | -import org.springframework.beans.factory.support.SimpleBeanDefinitionRegistry; |
9 | | -import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; |
| 7 | +import org.mockito.Mock; |
| 8 | +import org.mockito.MockedConstruction.Context; |
10 | 9 | import org.springframework.integration.aws.outbound.SqsMessageHandler; |
11 | | - |
12 | | -import java.util.stream.Collectors; |
13 | | -import java.util.stream.Stream; |
| 10 | +import org.springframework.messaging.converter.MessageConverter; |
| 11 | +import software.amazon.awssdk.services.sqs.SqsAsyncClient; |
14 | 12 |
|
15 | 13 | import static org.assertj.core.api.Assertions.assertThat; |
16 | 14 |
|
17 | | -class SqsOutboundChannelAdapterParserTest { |
| 15 | +@ConstructionMock(SqsMessageHandler.class) |
| 16 | +class SqsOutboundChannelAdapterParserTest extends ParserTestBase { |
18 | 17 |
|
19 | | - private final BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry(); |
| 18 | + @Mock |
| 19 | + private SqsAsyncClient sqs; |
20 | 20 |
|
21 | | - private final XmlBeanDefinitionReader xmlBeanDefinitionReader = new XmlBeanDefinitionReader(registry); |
| 21 | + @Mock |
| 22 | + private MessageConverter messageConverter; |
22 | 23 |
|
23 | 24 | @Test |
24 | | - void testReader() { |
25 | | - int beansLoaded = xmlBeanDefinitionReader.loadBeanDefinitions("classpath:/sqs-outbound-channel-adapter.xml"); |
26 | | - var beans = Stream.of(registry.getBeanDefinitionNames()).collect(Collectors.toMap(k -> k, registry::getBeanDefinition)); |
27 | | - |
28 | | - assertThat(beans) |
29 | | - .hasSize(beansLoaded) |
30 | | - .containsKey("adapter"); |
31 | | - |
32 | | - var def = beans.values().stream() |
33 | | - .filter(bd -> bd.getBeanClassName().equals(SqsMessageHandler.class.getName())) |
34 | | - .findAny().orElseThrow(); |
35 | | - |
36 | | - assertThat(def) |
37 | | - .matches(bd -> bd.getConstructorArgumentValues().getArgumentValue(0, null).getValue().equals(new RuntimeBeanReference("sqsClient"))) |
38 | | - .extracting(BeanDefinition::getPropertyValues) |
39 | | - .matches(properties -> properties.get("async").equals(new TypedStringValue("false")), "async") |
40 | | - .matches(properties -> properties.get("messageConverter").equals(new RuntimeBeanReference("msgConv")), "message converter") |
41 | | - .matches(properties -> properties.get("outputChannelName").equals(new TypedStringValue("okChannel")), "success channel") |
42 | | - ; |
| 25 | + void testMessageHandler() { |
| 26 | + registerBean("sqs", sqs); |
| 27 | + registerBean("mc", messageConverter); |
| 28 | + |
| 29 | + parse(""" |
| 30 | + <int-aws:sqs-outbound-channel-adapter |
| 31 | + id="soca" |
| 32 | + channel="c" |
| 33 | + sqs="sqs" |
| 34 | + sync="false" |
| 35 | + message-converter="mc" |
| 36 | + error-message-strategy="ems" |
| 37 | + success-channel="sc" |
| 38 | + queue="q" |
| 39 | + send-timeout="#{50}" |
| 40 | + delay="#{5}" |
| 41 | + message-deduplication-id-expression="mdi.exp" |
| 42 | + message-group-id-expression="mgi.exp" |
| 43 | + failure-channel="unknownChannel" |
| 44 | + resource-id-resolver="unknownResolver" |
| 45 | + async-handler="unknownHandler" |
| 46 | + /> |
| 47 | + """); |
| 48 | + |
| 49 | + var handler = beanFactory.getBean(SqsMessageHandler.class); |
| 50 | + |
| 51 | + verify(handler).setQueue("q"); |
| 52 | + verify(handler).setAsync(true); |
| 53 | + verify(handler).setMessageConverter(messageConverter); |
| 54 | + verify(handler).setOutputChannelName("sc"); |
| 55 | + verify(handler).setMessageDeduplicationIdExpressionString("mdi.exp"); |
| 56 | + verify(handler).setMessageGroupIdExpressionString("mgi.exp"); |
| 57 | + verify(handler).setDelay(5); |
| 58 | + verify(handler).setSendTimeout(50L); |
| 59 | + } |
| 60 | + |
| 61 | + void testMessageHandler(SqsMessageHandler mock, Context context) { |
| 62 | + assertThat(context.arguments()).asInstanceOf(InstanceOfAssertFactories.LIST) |
| 63 | + .contains(sqs); |
43 | 64 | } |
44 | 65 | } |
0 commit comments