diff --git a/module/spring-boot-amqp/src/dockerTest/java/org/springframework/boot/amqp/docker/compose/RabbitDockerComposeConnectionDetailsFactoryIntegrationTests.java b/module/spring-boot-amqp/src/dockerTest/java/org/springframework/boot/amqp/docker/compose/RabbitDockerComposeConnectionDetailsFactoryIntegrationTests.java index cab917ea4c5..53dfa91b1b7 100644 --- a/module/spring-boot-amqp/src/dockerTest/java/org/springframework/boot/amqp/docker/compose/RabbitDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/module/spring-boot-amqp/src/dockerTest/java/org/springframework/boot/amqp/docker/compose/RabbitDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -16,6 +16,9 @@ package org.springframework.boot.amqp.docker.compose; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; + import org.springframework.boot.amqp.autoconfigure.RabbitConnectionDetails; import org.springframework.boot.amqp.autoconfigure.RabbitConnectionDetails.Address; import org.springframework.boot.docker.compose.service.connection.test.DockerComposeTest; @@ -42,10 +45,26 @@ class RabbitDockerComposeConnectionDetailsFactoryIntegrationTests { @DockerComposeTest(composeFile = "rabbit-ssl-compose.yaml", image = TestImage.RABBITMQ, additionalResources = { "ca.crt", "server.crt", "server.key", "client.crt", "client.key", "rabbitmq.conf" }) - void runWithSslCreatesConnectionDetails(RabbitConnectionDetails connectionDetails) { + void runWithSslCreatesConnectionDetails(RabbitConnectionDetails connectionDetails) throws Exception { assertConnectionDetails(connectionDetails); SslBundle sslBundle = connectionDetails.getSslBundle(); assertThat(sslBundle).isNotNull(); + assertThatSslConnectionCanBeMade(connectionDetails, sslBundle); + } + + private void assertThatSslConnectionCanBeMade(RabbitConnectionDetails connectionDetails, SslBundle sslBundle) + throws Exception { + ConnectionFactory connectionFactory = new ConnectionFactory(); + Address address = connectionDetails.getFirstAddress(); + connectionFactory.setHost(address.host()); + connectionFactory.setPort(address.port()); + connectionFactory.setUsername(connectionDetails.getUsername()); + connectionFactory.setPassword(connectionDetails.getPassword()); + connectionFactory.setVirtualHost(connectionDetails.getVirtualHost()); + connectionFactory.useSslProtocol(sslBundle.createSslContext()); + try (Connection connection = connectionFactory.newConnection()) { + assertThat(connection.isOpen()).isTrue(); + } } private void assertConnectionDetails(RabbitConnectionDetails connectionDetails) { diff --git a/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/docker/compose/RabbitDockerComposeConnectionDetailsFactory.java b/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/docker/compose/RabbitDockerComposeConnectionDetailsFactory.java index a601ab093c3..31b1cfdc35e 100644 --- a/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/docker/compose/RabbitDockerComposeConnectionDetailsFactory.java +++ b/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/docker/compose/RabbitDockerComposeConnectionDetailsFactory.java @@ -40,6 +40,8 @@ class RabbitDockerComposeConnectionDetailsFactory private static final int RABBITMQ_PORT = 5672; + private static final int RABBITMQ_TLS_PORT = 5671; + protected RabbitDockerComposeConnectionDetailsFactory() { super("rabbitmq"); } @@ -66,7 +68,8 @@ class RabbitDockerComposeConnectionDetailsFactory super(service); this.environment = new RabbitEnvironment(service.env()); this.sslBundle = getSslBundle(service); - this.addresses = List.of(new Address(service.host(), service.ports().get(RABBITMQ_PORT))); + int containerPort = (this.sslBundle != null) ? RABBITMQ_TLS_PORT : RABBITMQ_PORT; + this.addresses = List.of(new Address(service.host(), service.ports().get(containerPort))); } @Override