1616package org .springframework .modulith .events .amqp ;
1717
1818import static org .assertj .core .api .Assertions .*;
19+ import static org .mockito .ArgumentMatchers .*;
1920import static org .mockito .Mockito .*;
2021
2122import io .namastack .outbox .handler .OutboxHandler ;
@@ -58,29 +59,6 @@ class RabbitEventExternalizerConfigurationIntegrationTests {
5859 static final EventExternalizationConfiguration EXTERNALIZATION_ENABLED = EventExternalizationConfiguration
5960 .defaults ("org" ).build ();
6061
61- @ Test
62- void requiresCorrelatedPublisherConfirmsForOutboxMode () {
63-
64- basicSetupWithoutPublisherConfirms (EXTERNALIZATION_ENABLED , confirmingOperations ())
65- .withPropertyValues (ExternalizationMode .PROPERTY + "=" + ExternalizationMode .OUTBOX )
66- .run (ctxt -> {
67- assertThat (ctxt ).hasFailed ();
68- assertThat (ctxt .getStartupFailure ())
69- .hasRootCauseMessage ("RabbitMQ outbox event externalization requires "
70- + "spring.rabbitmq.publisher-confirm-type=correlated!" );
71- });
72- }
73-
74- @ Test
75- void doesNotRequireCorrelatedPublisherConfirmsForModuleListenerMode () {
76-
77- basicSetupWithoutPublisherConfirms (EXTERNALIZATION_ENABLED , mock (RabbitMessageOperations .class ))
78- .run (ctxt -> {
79- assertThat (ctxt ).hasNotFailed ();
80- assertThat (ctxt ).hasSingleBean (EventExternalizerModuleListener .class );
81- });
82- }
83-
8462 @ Test // GH-342
8563 void registersExternalizerByDefault () {
8664
@@ -152,7 +130,31 @@ void publishesEventExternalizedAfterNamastackExternalization() {
152130 assertEventExternalizedPublished (OutboxHandler .class , (transport , event ) -> transport .handle (event , null ));
153131 }
154132
155- @ Test
133+ @ Test // GH-1727
134+ void requiresCorrelatedPublisherConfirmsForOutboxMode () {
135+
136+ basicSetupWithoutPublisherConfirms (EXTERNALIZATION_ENABLED , confirmingOperations ())
137+ .withPropertyValues (ExternalizationMode .PROPERTY + "=" + ExternalizationMode .OUTBOX )
138+ .run (ctxt -> {
139+
140+ assertThat (ctxt ).hasFailed ();
141+ assertThat (ctxt .getStartupFailure ())
142+ .hasRootCauseMessage ("RabbitMQ outbox event externalization requires "
143+ + "spring.rabbitmq.publisher-confirm-type=correlated!" );
144+ });
145+ }
146+
147+ @ Test // GH-1727
148+ void doesNotRequireCorrelatedPublisherConfirmsForModuleListenerMode () {
149+
150+ basicSetupWithoutPublisherConfirms (EXTERNALIZATION_ENABLED , mock (RabbitMessageOperations .class ))
151+ .run (ctxt -> {
152+ assertThat (ctxt ).hasNotFailed ();
153+ assertThat (ctxt ).hasSingleBean (EventExternalizerModuleListener .class );
154+ });
155+ }
156+
157+ @ Test // GH-1727
156158 void propagatesSynchronousFailureAsFailedFuture () {
157159
158160 var operations = mock (RabbitMessageOperations .class );
@@ -170,7 +172,7 @@ void propagatesSynchronousFailureAsFailedFuture() {
170172 });
171173 }
172174
173- @ Test
175+ @ Test // GH-1727
174176 void completesTransportFutureAfterPositivePublisherConfirm () {
175177
176178 var correlations = new ArrayList <CorrelationData >();
@@ -194,13 +196,13 @@ void completesTransportFutureAfterPositivePublisherConfirm() {
194196 });
195197 }
196198
197- @ Test
199+ @ Test // GH-1727
198200 void completesTransportFutureExceptionallyAfterPublisherNack () {
199201
200202 assertPublisherNack (JobRunrExternalizationTransport .class , JobRunrExternalizationTransport ::externalize );
201203 }
202204
203- @ Test
205+ @ Test // GH-1727
204206 void moduleListenerDoesNotUsePublisherConfirms () {
205207
206208 var operations = mock (RabbitMessageOperations .class );
@@ -212,18 +214,18 @@ void moduleListenerDoesNotUsePublisherConfirms() {
212214 assertThat (headers ).doesNotContainKey (AmqpHeaders .PUBLISH_CONFIRM_CORRELATION );
213215
214216 return null ;
217+
215218 }).when (operations ).convertAndSend (any (), any (), any (), anyMap ());
216219
217- basicSetupWithoutPublisherConfirms (EXTERNALIZATION_ENABLED , operations )
218- .run (ctxt -> {
220+ basicSetupWithoutPublisherConfirms (EXTERNALIZATION_ENABLED , operations ).run (ctxt -> {
219221
220- var result = ctxt .getBean (EventExternalizerModuleListener .class ).externalize (new SampleEvent ());
222+ var result = ctxt .getBean (EventExternalizerModuleListener .class ).externalize (new SampleEvent ());
221223
222- assertThat (result ).isCompleted ();
223- });
224+ assertThat (result ).isCompleted ();
225+ });
224226 }
225227
226- @ Test
228+ @ Test // GH-1727
227229 void addsUniquePublisherConfirmCorrelationForEachPublish () {
228230
229231 var correlations = new ArrayList <CorrelationData >();
@@ -244,7 +246,7 @@ void addsUniquePublisherConfirmCorrelationForEachPublish() {
244246 });
245247 }
246248
247- @ Test
249+ @ Test // GH-1727
248250 void propagatesPublisherNackToNamastackOutboxHandler () {
249251
250252 assertPublisherNack (OutboxHandler .class , (transport , event ) -> transport .handle (event , null ));
0 commit comments