diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetails.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetails.java index a5a27f510d..1ac95b513f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetails.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetails.java @@ -53,9 +53,9 @@ class PropertiesRabbitConnectionDetails implements RabbitConnectionDetails { public List
getAddresses() { List addresses = new ArrayList<>(); for (String address : this.properties.determineAddresses().split(",")) { - int portSeparatorPosition = address.lastIndexOf(':'); - String host = address.substring(0, portSeparatorPosition); - String port = address.substring(portSeparatorPosition + 1); + int portSeparatorIndex = address.lastIndexOf(':'); + String host = address.substring(0, portSeparatorIndex); + String port = address.substring(portSeparatorIndex + 1); addresses.add(new Address(host, Integer.parseInt(port))); } return addresses; diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetailsTest.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetailsTests.java similarity index 59% rename from spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetailsTest.java rename to spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetailsTests.java index 99643fe7fd..fb4f65d9cf 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetailsTest.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/PropertiesRabbitConnectionDetailsTests.java @@ -23,20 +23,32 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails.Address; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; -class PropertiesRabbitConnectionDetailsTest { +/** + * Tests for {@link PropertiesRabbitConnectionDetails}. + * + * @author Jonas Fügedi + */ +class PropertiesRabbitConnectionDetailsTests { + + private static final int DEFAULT_PORT = 5672; @Test void getAddresses() { RabbitProperties properties = new RabbitProperties(); - properties.setAddresses("localhost:1234,[::1]:32863"); - PropertiesRabbitConnectionDetails propertiesRabbitConnectionDetails = new PropertiesRabbitConnectionDetails(properties); + properties.setAddresses("localhost,localhost:1234,[::1],[::1]:32863"); + PropertiesRabbitConnectionDetails propertiesRabbitConnectionDetails = new PropertiesRabbitConnectionDetails( + properties); List addresses = propertiesRabbitConnectionDetails.getAddresses(); - assertThat(addresses.size()).isEqualTo(2); + assertThat(addresses.size()).isEqualTo(4); assertThat(addresses.get(0).host()).isEqualTo("localhost"); - assertThat(addresses.get(1).host()).isEqualTo("[::1]"); - assertThat(addresses.get(0).port()).isEqualTo(1234); - assertThat(addresses.get(1).port()).isEqualTo(32863); + assertThat(addresses.get(0).port()).isEqualTo(DEFAULT_PORT); + assertThat(addresses.get(1).host()).isEqualTo("localhost"); + assertThat(addresses.get(1).port()).isEqualTo(1234); + assertThat(addresses.get(2).host()).isEqualTo("[::1]"); + assertThat(addresses.get(2).port()).isEqualTo(DEFAULT_PORT); + assertThat(addresses.get(3).host()).isEqualTo("[::1]"); + assertThat(addresses.get(3).port()).isEqualTo(32863); } -} \ No newline at end of file + +} diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java index 41657e8b96..5107b38adb 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitPropertiesTests.java @@ -274,13 +274,6 @@ class RabbitPropertiesTests { assertThat(this.properties.determineAddresses()).isEqualTo("localhost:5671"); } - @Test - void determineAddressesUsesHostAndPortPropertiesWhenNoAddressesSetIpV6() { - this.properties.setHost("[::1]"); - this.properties.setPort(32863); - assertThat(this.properties.determineAddresses()).isEqualTo("[::1]:32863"); - } - @Test void determineAddressesUsesHostAndPortPropertiesWhenNoAddressesSet() { this.properties.setHost("rabbit.example.com"); @@ -288,6 +281,13 @@ class RabbitPropertiesTests { assertThat(this.properties.determineAddresses()).isEqualTo("rabbit.example.com:1234"); } + @Test + void determineAddressesUsesIpv6HostAndPortPropertiesWhenNoAddressesSet() { + this.properties.setHost("[::1]"); + this.properties.setPort(32863); + assertThat(this.properties.determineAddresses()).isEqualTo("[::1]:32863"); + } + @Test void determineSslUsingAmqpsReturnsStateOfFirstAddress() { this.properties.setAddresses("amqps://root:password@otherhost,amqp://root:password2@otherhost2");