Skip to content

Commit e5489d2

Browse files
authored
RabbitMQ: Support declaring an exchange within a vhost (#2362)
1 parent 83a3c94 commit e5489d2

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

modules/rabbitmq/src/main/java/org/testcontainers/containers/RabbitMQContainer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,17 @@ public RabbitMQContainer withExchange(String name, String type) {
345345

346346
public RabbitMQContainer withExchange(String name, String type, boolean autoDelete, boolean internal, boolean durable, Map<String, Object> arguments) {
347347
values.add(asList("rabbitmqadmin", "declare", "exchange",
348+
"name=" + name,
349+
"type=" + type,
350+
"auto_delete=" + autoDelete,
351+
"internal=" + internal,
352+
"durable=" + durable,
353+
"arguments=" + toJson(arguments)));
354+
return self();
355+
}
356+
357+
public RabbitMQContainer withExchange(String vhost, String name, String type, boolean autoDelete, boolean internal, boolean durable, Map<String, Object> arguments) {
358+
values.add(asList("rabbitmqadmin", "--vhost=" + vhost, "declare", "exchange",
348359
"name=" + name,
349360
"type=" + type,
350361
"auto_delete=" + autoDelete,

modules/rabbitmq/src/test/java/org/testcontainers/containers/RabbitMQContainerTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.security.NoSuchAlgorithmException;
2020
import java.security.UnrecoverableKeyException;
2121
import java.security.cert.CertificateException;
22+
import java.util.Collections;
2223
import javax.net.ssl.KeyManagerFactory;
2324
import javax.net.ssl.SSLContext;
2425
import javax.net.ssl.TrustManagerFactory;
@@ -91,6 +92,20 @@ public void shouldCreateRabbitMQContainerWithExchange() throws IOException, Inte
9192
}
9293
}
9394

95+
@Test
96+
public void shouldCreateRabbitMQContainerWithExchangeInVhost() throws IOException, InterruptedException
97+
{
98+
try (RabbitMQContainer container = new RabbitMQContainer()) {
99+
container.withVhost("test-vhost");
100+
container.withExchange("test-vhost", "test-exchange", "direct", false, false, false, Collections.emptyMap());
101+
102+
container.start();
103+
104+
assertThat(container.execInContainer("rabbitmqctl", "list_exchanges", "-p", "test-vhost").getStdout())
105+
.containsPattern("test-exchange\\s+direct");
106+
}
107+
}
108+
94109
@Test
95110
public void shouldCreateRabbitMQContainerWithQueues() throws IOException, InterruptedException
96111
{

0 commit comments

Comments
 (0)