feature/Add testcontainers RabbitMQ

This commit is contained in:
Marko Milić 2024-11-16 16:53:40 +01:00
parent 3bc7d9114b
commit fa323be804
2 changed files with 71 additions and 1 deletions

View File

@ -499,7 +499,15 @@
<artifactId>amqp-client</artifactId>
<version>5.22.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testcontainers/rabbitmq -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>rabbitmq</artifactId>
<version>1.20.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>

View File

@ -0,0 +1,62 @@
package code.container
import code.api.v5_0_0.V500ServerSetup
import code.setup.DefaultUsers
import com.rabbitmq.client.{Channel, Connection, ConnectionFactory}
import org.scalatest.Ignore
import org.testcontainers.containers.RabbitMQContainer
@Ignore
class EmbeddedRabbitMQ extends V500ServerSetup with DefaultUsers {
val rabbitMQContainer = new RabbitMQContainer("rabbitmq:3.7.25-management-alpine")
override def beforeAll(): Unit = {
super.beforeAll()
// Start RabbitMQ container
rabbitMQContainer.start()
}
override def afterAll(): Unit = {
super.afterAll()
rabbitMQContainer.stop()
}
feature(s"test EmbeddedRabbitMQ") {
scenario("Publish and Consume Message") {
val rabbitHost = rabbitMQContainer.getHost
val rabbitPort = rabbitMQContainer.getAmqpPort
// Set up RabbitMQ connection
val factory = new ConnectionFactory()
factory.setHost(rabbitHost)
factory.setPort(rabbitPort)
val connection: Connection = factory.newConnection()
val channel: Channel = connection.createChannel()
// Declare a queue
val queueName = "test-queue"
channel.queueDeclare(queueName, false, false, false, null)
// Publish a message
val message = "Hello, RabbitMQ!"
channel.basicPublish("", queueName, null, message.getBytes)
println(s"Published message: $message")
// Consume the message
val delivery = channel.basicGet(queueName, true)
val consumedMessage = new String(delivery.getBody)
println(s"Consumed message: $consumedMessage")
consumedMessage shouldBe message
// Clean up
channel.close()
connection.close()
}
}
}