Skip to content

Commit f3e88ab

Browse files
authored
add test for reproducing #890 (#1011)
1 parent 338afcd commit f3e88ab

File tree

4 files changed

+50
-40
lines changed

4 files changed

+50
-40
lines changed

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/aws/AmazonJavaSdkNewTestSuite.scala

+20-1
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,25 @@ abstract class AmazonJavaSdkNewTestSuite
386386
messageAttributes(MessageGroupId) shouldBe "gp1"
387387
}
388388

389+
test("should ignore zero delay seconds on message level with fifo queue") {
390+
// given
391+
val queueUrl =
392+
testClient.createQueue("testQueue1.fifo", Map(FifoQueueAttributeName -> "true", DelaySecondsAttributeName -> "5"))
393+
testClient.sendMessage(
394+
queueUrl,
395+
"test123",
396+
delaySeconds = Some(0),
397+
messageGroupId = Option("group1"),
398+
messageDeduplicationId = Option("dedup1")
399+
)
400+
401+
// when
402+
val messages = testClient.receiveMessage(queueUrl)
403+
404+
// then
405+
messages shouldBe empty
406+
}
407+
389408
private def doTestSendAndReceiveMessageWithAttributes(
390409
content: String,
391410
messageAttributes: Map[String, MessageAttribute] = Map.empty,
@@ -395,7 +414,7 @@ abstract class AmazonJavaSdkNewTestSuite
395414
) = {
396415
// given
397416
val queue = testClient.createQueue("testQueue1")
398-
testClient.sendMessage(queue, content, messageAttributes, awsTraceHeader)
417+
testClient.sendMessage(queue, content, messageAttributes = messageAttributes, awsTraceHeader = awsTraceHeader)
399418
val message = receiveSingleMessageObject(queue, requestedAttributes, requestedSystemAttributes).orNull
400419

401420
// then

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/client/AwsSdkV1SqsClient.scala

+11-29
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,7 @@
11
package org.elasticmq.rest.sqs.client
22

33
import com.amazonaws.services.sqs.AmazonSQS
4-
import com.amazonaws.services.sqs.model.{
5-
BatchResultErrorEntry,
6-
CancelMessageMoveTaskRequest,
7-
ChangeMessageVisibilityBatchRequest,
8-
ChangeMessageVisibilityBatchRequestEntry,
9-
CreateQueueRequest,
10-
DeleteMessageBatchRequest,
11-
DeleteMessageBatchRequestEntry,
12-
GetQueueAttributesRequest,
13-
GetQueueUrlRequest,
14-
ListDeadLetterSourceQueuesRequest,
15-
ListMessageMoveTasksRequest,
16-
MessageAttributeValue,
17-
MessageSystemAttributeValue,
18-
PurgeQueueRequest,
19-
QueueDoesNotExistException,
20-
ReceiveMessageRequest,
21-
ResourceNotFoundException,
22-
SendMessageBatchRequest,
23-
SendMessageBatchRequestEntry,
24-
SendMessageRequest,
25-
StartMessageMoveTaskRequest,
26-
UnsupportedOperationException
27-
}
4+
import com.amazonaws.services.sqs.model.{BatchResultErrorEntry, CancelMessageMoveTaskRequest, ChangeMessageVisibilityBatchRequest, ChangeMessageVisibilityBatchRequestEntry, CreateQueueRequest, DeleteMessageBatchRequest, DeleteMessageBatchRequestEntry, GetQueueAttributesRequest, GetQueueUrlRequest, ListDeadLetterSourceQueuesRequest, ListMessageMoveTasksRequest, MessageAttributeValue, MessageSystemAttributeValue, PurgeQueueRequest, QueueDoesNotExistException, ReceiveMessageRequest, ResourceNotFoundException, SendMessageBatchRequest, SendMessageBatchRequestEntry, SendMessageRequest, StartMessageMoveTaskRequest, UnsupportedOperationException}
285
import org.elasticmq._
296

307
import java.nio.ByteBuffer
@@ -70,16 +47,21 @@ class AwsSdkV1SqsClient(client: AmazonSQS) extends SqsClient {
7047

7148
override def sendMessage(
7249
queueUrl: QueueUrl,
73-
messageBody: String,
74-
messageAttributes: Map[String, MessageAttribute] = Map.empty,
75-
awsTraceHeader: Option[String] = None,
76-
messageGroupId: Option[String] = None,
77-
messageDeduplicationId: Option[String] = None
50+
messageBody: MessageMoveTaskStatus,
51+
delaySeconds: Option[Int] = None,
52+
messageAttributes: Map[
53+
MessageMoveTaskStatus,
54+
MessageAttribute
55+
] = Map.empty,
56+
awsTraceHeader: Option[MessageMoveTaskStatus] = None,
57+
messageGroupId: Option[MessageMoveTaskStatus] = None,
58+
messageDeduplicationId: Option[MessageMoveTaskStatus] = None
7859
): Either[SqsClientError, Unit] = interceptErrors {
7960
client.sendMessage(
8061
new SendMessageRequest()
8162
.withQueueUrl(queueUrl)
8263
.withMessageBody(messageBody)
64+
.withDelaySeconds(delaySeconds.map(Int.box).orNull)
8365
.withMessageSystemAttributes(
8466
mapAwsTraceHeader(awsTraceHeader)
8567
)

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/client/AwsSdkV2SqsClient.scala

+10-5
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,22 @@ class AwsSdkV2SqsClient(client: software.amazon.awssdk.services.sqs.SqsClient) e
3939

4040
override def sendMessage(
4141
queueUrl: QueueUrl,
42-
messageBody: String,
43-
messageAttributes: Map[String, MessageAttribute] = Map.empty,
44-
awsTraceHeader: Option[String] = None,
45-
messageGroupId: Option[String] = None,
46-
messageDeduplicationId: Option[String] = None
42+
messageBody: MessageMoveTaskStatus,
43+
delaySeconds: Option[Int] = None,
44+
messageAttributes: Map[
45+
MessageMoveTaskStatus,
46+
MessageAttribute
47+
] = Map.empty,
48+
awsTraceHeader: Option[MessageMoveTaskStatus] = None,
49+
messageGroupId: Option[MessageMoveTaskStatus] = None,
50+
messageDeduplicationId: Option[MessageMoveTaskStatus] = None
4751
): Either[SqsClientError, Unit] = interceptErrors {
4852
client.sendMessage(
4953
SendMessageRequest
5054
.builder()
5155
.queueUrl(queueUrl)
5256
.messageBody(messageBody)
57+
.delaySeconds(delaySeconds.map(Int.box).orNull)
5358
.messageSystemAttributes(mapAwsTraceHeader(awsTraceHeader))
5459
.messageAttributes(mapMessageAttributes(messageAttributes))
5560
.messageGroupId(messageGroupId.orNull)

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/client/SqsClient.scala

+9-5
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,15 @@ trait SqsClient {
1616

1717
def sendMessage(
1818
queueUrl: QueueUrl,
19-
messageBody: String,
20-
messageAttributes: Map[String, MessageAttribute] = Map.empty,
21-
awsTraceHeader: Option[String] = None,
22-
messageGroupId: Option[String] = None,
23-
messageDeduplicationId: Option[String] = None
19+
messageBody: MessageMoveTaskStatus,
20+
delaySeconds: Option[Int] = None,
21+
messageAttributes: Map[
22+
MessageMoveTaskStatus,
23+
MessageAttribute
24+
] = Map.empty,
25+
awsTraceHeader: Option[MessageMoveTaskStatus] = None,
26+
messageGroupId: Option[MessageMoveTaskStatus] = None,
27+
messageDeduplicationId: Option[MessageMoveTaskStatus] = None
2428
): Either[SqsClientError, Unit]
2529

2630
def receiveMessage(

0 commit comments

Comments
 (0)