Skip to content

Commit d2a615f

Browse files
committed
Split AmazonJavaSdkNewTestSuite into separate files by test category
1 parent c1f4651 commit d2a615f

File tree

7 files changed

+827
-785
lines changed

7 files changed

+827
-785
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package org.elasticmq.rest.sqs.aws
2+
3+
import org.elasticmq.rest.sqs.AwsConfig
4+
import org.elasticmq.rest.sqs.client._
5+
import org.elasticmq.MessageAttribute
6+
import org.scalatest.concurrent.Eventually
7+
import org.scalatest.funsuite.AnyFunSuite
8+
import org.scalatest.matchers.should.Matchers
9+
10+
trait AmazonJavaSdkNewTestBase
11+
extends AnyFunSuite
12+
with HasSqsTestClient
13+
with AwsConfig
14+
with Matchers
15+
with Eventually {
16+
17+
protected def assertError(
18+
result: Either[SqsClientError, _],
19+
expectedType: SqsClientErrorType,
20+
messageSubstring: String
21+
): Unit = {
22+
result match {
23+
case Left(SqsClientError(errorType, message)) =>
24+
errorType shouldBe expectedType
25+
message should include(messageSubstring)
26+
case Right(_) =>
27+
fail(s"Expected error $expectedType with message containing '$messageSubstring', but got success")
28+
}
29+
}
30+
31+
protected def doTestSendAndReceiveMessageWithAttributes(
32+
content: String,
33+
messageAttributes: Map[String, MessageAttribute] = Map.empty,
34+
requestedAttributes: List[String] = List.empty,
35+
awsTraceHeader: Option[String] = None,
36+
requestedSystemAttributes: List[String] = List.empty
37+
): ReceivedMessage = {
38+
// given
39+
val queue = testClient.createQueue("testQueue1").toOption.get
40+
val sendResult =
41+
testClient.sendMessage(queue, content, messageAttributes = messageAttributes, awsTraceHeader = awsTraceHeader)
42+
sendResult shouldBe Right(())
43+
val message = receiveSingleMessageObject(queue, requestedAttributes, requestedSystemAttributes).orNull
44+
45+
// then
46+
message.body shouldBe content
47+
checkMessageAttributesMatchRequestedAttributes(messageAttributes, requestedAttributes, message)
48+
49+
message
50+
}
51+
52+
protected def receiveSingleMessageObject(
53+
queueUrl: String,
54+
requestedAttributes: List[String],
55+
requestedSystemAttributes: List[String]
56+
): Option[ReceivedMessage] = {
57+
testClient
58+
.receiveMessage(queueUrl, systemAttributes = requestedSystemAttributes, messageAttributes = requestedAttributes)
59+
.headOption
60+
}
61+
62+
protected def checkMessageAttributesMatchRequestedAttributes(
63+
messageAttributes: Map[String, MessageAttribute],
64+
requestedAttributes: List[String],
65+
message: ReceivedMessage
66+
): Unit = {
67+
val filteredMessageAttributes = filterBasedOnRequestedAttributes(requestedAttributes, messageAttributes)
68+
message.messageAttributes should be(filteredMessageAttributes)
69+
}
70+
71+
protected def filterBasedOnRequestedAttributes[T](
72+
requestedAttributes: List[String],
73+
messageAttributes: Map[String, T]
74+
): Map[String, T] = {
75+
if (requestedAttributes.contains("All")) {
76+
messageAttributes
77+
} else {
78+
messageAttributes.filterKeys(k => requestedAttributes.contains(k)).toMap
79+
}
80+
}
81+
}

0 commit comments

Comments
 (0)