1
1
package software .amazon .lambda .powertools .sqs .internal ;
2
2
3
3
import java .io .IOException ;
4
+ import java .time .LocalDateTime ;
4
5
import java .util .HashMap ;
5
- import java .util .Random ;
6
6
import java .util .function .Consumer ;
7
7
8
8
import com .amazonaws .services .lambda .runtime .Context ;
9
9
import com .amazonaws .services .lambda .runtime .RequestHandler ;
10
10
import com .amazonaws .services .lambda .runtime .events .APIGatewayProxyRequestEvent ;
11
11
import com .amazonaws .services .lambda .runtime .events .SQSEvent ;
12
12
import com .fasterxml .jackson .databind .ObjectMapper ;
13
+ import org .assertj .core .api .Assertions ;
13
14
import org .junit .jupiter .api .BeforeEach ;
14
15
import org .junit .jupiter .api .Test ;
15
16
import org .mockito .ArgumentCaptor ;
28
29
29
30
import static org .assertj .core .api .Assertions .assertThat ;
30
31
import static org .assertj .core .api .Assertions .assertThatExceptionOfType ;
32
+ import static org .assertj .core .api .Assertions .in ;
31
33
import static org .mockito .ArgumentMatchers .any ;
32
34
import static org .mockito .Mockito .mock ;
33
35
import static org .mockito .Mockito .never ;
39
41
import static software .amazon .lambda .powertools .sqs .SqsUtils .overrideSqsClient ;
40
42
41
43
public class SqsMessageBatchProcessorAspectTest {
42
- public static final Random mockedRandom = mock (Random .class );
44
+ public static final SqsClient interactionClient = mock (SqsClient .class );
43
45
private static final SqsClient sqsClient = mock (SqsClient .class );
44
46
private static final ObjectMapper MAPPER = new ObjectMapper ();
45
47
@@ -51,7 +53,7 @@ public class SqsMessageBatchProcessorAspectTest {
51
53
@ BeforeEach
52
54
void setUp () throws IOException {
53
55
overrideSqsClient (sqsClient );
54
- reset (mockedRandom );
56
+ reset (interactionClient );
55
57
reset (sqsClient );
56
58
setupContext ();
57
59
event = MAPPER .readValue (this .getClass ().getResource ("/sampleSqsBatchEvent.json" ), SQSEvent .class );
@@ -62,7 +64,7 @@ void setUp() throws IOException {
62
64
void shouldBatchProcessAllMessageSuccessfullyAndNotDeleteFromSQS () {
63
65
requestHandler .handleRequest (event , context );
64
66
65
- verify (mockedRandom , times (2 )).nextInt ();
67
+ verify (interactionClient , times (2 )).listQueues ();
66
68
verify (sqsClient , times (0 )).deleteMessageBatch (any (DeleteMessageBatchRequest .class ));
67
69
}
68
70
@@ -75,7 +77,7 @@ void shouldBatchProcessMessageWithSuccessDeletedOnFailureInBatchFromSQS() {
75
77
.satisfies (e -> {
76
78
assertThat (e .getExceptions ())
77
79
.hasSize (1 )
78
- .extracting ("detailMessage " )
80
+ .extracting ("message " )
79
81
.containsExactly ("2e1424d4-f796-459a-8184-9c92662be6da" );
80
82
81
83
assertThat (e .getFailures ())
@@ -88,7 +90,7 @@ void shouldBatchProcessMessageWithSuccessDeletedOnFailureInBatchFromSQS() {
88
90
.contains ("Success" );
89
91
});
90
92
91
- verify (mockedRandom ). nextInt ();
93
+ verify (interactionClient ). listQueues ();
92
94
verify (sqsClient ).deleteMessageBatch (any (DeleteMessageBatchRequest .class ));
93
95
}
94
96
@@ -98,7 +100,7 @@ void shouldBatchProcessMessageWithSuccessDeletedOnFailureWithSuppressionInBatchF
98
100
99
101
requestHandler .handleRequest (event , context );
100
102
101
- verify (mockedRandom ). nextInt ();
103
+ verify (interactionClient ). listQueues ();
102
104
verify (sqsClient ).deleteMessageBatch (any (DeleteMessageBatchRequest .class ));
103
105
}
104
106
@@ -129,7 +131,7 @@ void shouldBatchProcessAndMoveNonRetryableExceptionToDlq() {
129
131
130
132
requestHandler .handleRequest (event , context );
131
133
132
- verify (mockedRandom ). nextInt ();
134
+ verify (interactionClient ). listQueues ();
133
135
verify (sqsClient ).deleteMessageBatch (any (DeleteMessageBatchRequest .class ));
134
136
verify (sqsClient ).sendMessageBatch (any (Consumer .class ));
135
137
}
@@ -141,7 +143,7 @@ void shouldBatchProcessAndDeleteNonRetryableExceptionMessage() {
141
143
142
144
requestHandler .handleRequest (event , context );
143
145
144
- verify (mockedRandom ). nextInt ();
146
+ verify (interactionClient ). listQueues ();
145
147
ArgumentCaptor <DeleteMessageBatchRequest > captor = ArgumentCaptor .forClass (DeleteMessageBatchRequest .class );
146
148
verify (sqsClient ).deleteMessageBatch (captor .capture ());
147
149
verify (sqsClient , never ()).sendMessageBatch (any (Consumer .class ));
@@ -169,7 +171,7 @@ void shouldBatchProcessAndFailWithExceptionForNonRetryableExceptionAndNoDlq() {
169
171
.satisfies (e -> {
170
172
assertThat (e .getExceptions ())
171
173
.hasSize (1 )
172
- .extracting ("detailMessage " )
174
+ .extracting ("message " )
173
175
.containsExactly ("Invalid message and was moved to DLQ" );
174
176
175
177
assertThat (e .getFailures ())
@@ -182,7 +184,7 @@ void shouldBatchProcessAndFailWithExceptionForNonRetryableExceptionAndNoDlq() {
182
184
.contains ("Success" );
183
185
});
184
186
185
- verify (mockedRandom ). nextInt ();
187
+ verify (interactionClient ). listQueues ();
186
188
verify (sqsClient ).deleteMessageBatch (any (DeleteMessageBatchRequest .class ));
187
189
verify (sqsClient , never ()).sendMessageBatch (any (Consumer .class ));
188
190
}
@@ -206,7 +208,7 @@ void shouldBatchProcessAndFailWithExceptionForNonRetryableExceptionWhenFailedPar
206
208
.satisfies (e -> {
207
209
assertThat (e .getExceptions ())
208
210
.hasSize (1 )
209
- .extracting ("detailMessage " )
211
+ .extracting ("message " )
210
212
.containsExactly ("Invalid message and was moved to DLQ" );
211
213
212
214
assertThat (e .getFailures ())
@@ -219,7 +221,7 @@ void shouldBatchProcessAndFailWithExceptionForNonRetryableExceptionWhenFailedPar
219
221
.contains ("Success" );
220
222
});
221
223
222
- verify (mockedRandom ). nextInt ();
224
+ verify (interactionClient ). listQueues ();
223
225
verify (sqsClient ).deleteMessageBatch (any (DeleteMessageBatchRequest .class ));
224
226
verify (sqsClient , never ()).sendMessageBatch (any (Consumer .class ));
225
227
}
@@ -247,7 +249,7 @@ void shouldBatchProcessAndMoveNonRetryableExceptionToDlqAndThrowException() thro
247
249
.satisfies (e -> {
248
250
assertThat (e .getExceptions ())
249
251
.hasSize (1 )
250
- .extracting ("detailMessage " )
252
+ .extracting ("message " )
251
253
.containsExactly ("Invalid message and should be reprocessed" );
252
254
253
255
assertThat (e .getFailures ())
@@ -260,7 +262,7 @@ void shouldBatchProcessAndMoveNonRetryableExceptionToDlqAndThrowException() thro
260
262
.contains ("Success" );
261
263
});
262
264
263
- verify (mockedRandom ). nextInt ();
265
+ verify (interactionClient ). listQueues ();
264
266
verify (sqsClient ).deleteMessageBatch (any (DeleteMessageBatchRequest .class ));
265
267
verify (sqsClient ).sendMessageBatch (any (Consumer .class ));
266
268
}
0 commit comments