Skip to content

Commit ad1636f

Browse files
Phillip WirthDave Syer
authored andcommitted
RabbitMQ virtual hosts can how start with a slash
The autoconfig strips out slashes where necessary to make a valid hostname Fixes gh-1128
1 parent 3411995 commit ad1636f

File tree

3 files changed

+43
-26
lines changed

3 files changed

+43
-26
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitProperties.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
/**
2323
* Configuration properties for Rabbit.
24-
*
24+
*
2525
* @author Greg Turnquist
2626
* @author Dave Syer
2727
*/
@@ -110,10 +110,15 @@ public String getVirtualHost() {
110110
}
111111

112112
public void setVirtualHost(String virtualHost) {
113-
while (virtualHost.startsWith("/") && virtualHost.length() > 0) {
114-
virtualHost = virtualHost.substring(1);
115-
}
116-
this.virtualHost = "/" + virtualHost;
113+
if ("".equals(virtualHost) || virtualHost.equals("/")) {
114+
this.virtualHost = "/";
115+
} else {
116+
// remove all trailing /
117+
while (virtualHost.startsWith("/") && virtualHost.length() > 0) {
118+
virtualHost = virtualHost.substring(1);
119+
}
120+
this.virtualHost = virtualHost;
121+
}
117122
}
118123

119124
}

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoconfigurationTests.java

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.springframework.boot.autoconfigure.amqp;
1818

19+
import static org.junit.Assert.assertEquals;
20+
import static org.junit.Assert.assertNotNull;
21+
1922
import org.junit.Rule;
2023
import org.junit.Test;
2124
import org.junit.rules.ExpectedException;
@@ -30,12 +33,9 @@
3033
import org.springframework.context.annotation.Bean;
3134
import org.springframework.context.annotation.Configuration;
3235

33-
import static org.junit.Assert.assertEquals;
34-
import static org.junit.Assert.assertNotNull;
35-
3636
/**
3737
* Tests for {@link RabbitAutoConfiguration}.
38-
*
38+
*
3939
* @author Greg Turnquist
4040
*/
4141
public class RabbitAutoconfigurationTests {
@@ -74,7 +74,7 @@ public void testRabbitTemplateWithOverrides() {
7474
.getBean(CachingConnectionFactory.class);
7575
assertEquals("remote-server", connectionFactory.getHost());
7676
assertEquals(9000, connectionFactory.getPort());
77-
assertEquals("/vhost", connectionFactory.getVirtualHost());
77+
assertEquals("vhost", connectionFactory.getVirtualHost());
7878
}
7979

8080
@Test
@@ -89,18 +89,6 @@ public void testRabbitTemplateEmptyVirtualHost() {
8989
assertEquals("/", connectionFactory.getVirtualHost());
9090
}
9191

92-
@Test
93-
public void testRabbitTemplateVirtualHostMissingSlash() {
94-
this.context = new AnnotationConfigApplicationContext();
95-
this.context.register(TestConfiguration.class, RabbitAutoConfiguration.class);
96-
EnvironmentTestUtils.addEnvironment(this.context,
97-
"spring.rabbitmq.virtual_host:foo");
98-
this.context.refresh();
99-
CachingConnectionFactory connectionFactory = this.context
100-
.getBean(CachingConnectionFactory.class);
101-
assertEquals("/foo", connectionFactory.getVirtualHost());
102-
}
103-
10492
@Test
10593
public void testRabbitTemplateDefaultVirtualHost() {
10694
this.context = new AnnotationConfigApplicationContext();

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@
1616

1717
package org.springframework.boot.autoconfigure.amqp;
1818

19-
import org.junit.Test;
20-
2119
import static org.junit.Assert.assertEquals;
2220
import static org.junit.Assert.assertNull;
2321

22+
import org.junit.Test;
23+
2424
/**
2525
* Tests for {@link RabbitProperties}.
26-
*
26+
*
2727
* @author Dave Syer
2828
*/
2929
public class RabbitPropertiesTests {
3030

31-
private RabbitProperties properties = new RabbitProperties();
31+
private final RabbitProperties properties = new RabbitProperties();
3232

3333
@Test
3434
public void addressesNotSet() {
@@ -50,4 +50,28 @@ public void addressesDoubleValued() {
5050
assertEquals(9999, this.properties.getPort());
5151
}
5252

53+
@Test
54+
public void testDefaultVirtualHost() {
55+
this.properties.setVirtualHost("/");
56+
assertEquals("/", this.properties.getVirtualHost());
57+
}
58+
59+
@Test
60+
public void testemptyVirtualHost() {
61+
this.properties.setVirtualHost("");
62+
assertEquals("/", this.properties.getVirtualHost());
63+
}
64+
65+
@Test
66+
public void testCustomVirtualHost() {
67+
this.properties.setVirtualHost("myvHost");
68+
assertEquals("myvHost", this.properties.getVirtualHost());
69+
}
70+
71+
@Test
72+
public void testCustomFalsyVirtualHost() {
73+
this.properties.setVirtualHost("/myvHost");
74+
assertEquals("myvHost", this.properties.getVirtualHost());
75+
}
76+
5377
}

0 commit comments

Comments
 (0)