Skip to content

Commit a2a69ad

Browse files
committed
Merge pull request #26954 from dreis2211
* pr/26954: Avoid illegal reflective access in RabbitAutoConfigurationTests Closes gh-26954
2 parents 168478f + 03cd6be commit a2a69ad

File tree

1 file changed

+10
-22
lines changed

1 file changed

+10
-22
lines changed

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

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,17 @@
2020
import java.util.List;
2121
import java.util.concurrent.atomic.AtomicInteger;
2222

23-
import javax.net.ssl.SSLContext;
2423
import javax.net.ssl.SSLSocketFactory;
25-
import javax.net.ssl.TrustManager;
2624

2725
import com.rabbitmq.client.Address;
2826
import com.rabbitmq.client.Connection;
2927
import com.rabbitmq.client.JDKSaslConfig;
30-
import com.rabbitmq.client.SslContextFactory;
31-
import com.rabbitmq.client.TrustEverythingTrustManager;
3228
import com.rabbitmq.client.impl.CredentialsProvider;
3329
import com.rabbitmq.client.impl.CredentialsRefreshService;
3430
import com.rabbitmq.client.impl.DefaultCredentialsProvider;
3531
import org.aopalliance.aop.Advice;
3632
import org.junit.jupiter.api.Test;
33+
import org.junit.jupiter.api.extension.ExtendWith;
3734
import org.mockito.InOrder;
3835

3936
import org.springframework.amqp.core.AcknowledgeMode;
@@ -59,6 +56,8 @@
5956
import org.springframework.boot.autoconfigure.AutoConfigurations;
6057
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
6158
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
59+
import org.springframework.boot.test.system.CapturedOutput;
60+
import org.springframework.boot.test.system.OutputCaptureExtension;
6261
import org.springframework.context.annotation.Bean;
6362
import org.springframework.context.annotation.Configuration;
6463
import org.springframework.context.annotation.Primary;
@@ -92,6 +91,7 @@
9291
* @author HaiTao Zhang
9392
* @author Franjo Zilic
9493
*/
94+
@ExtendWith(OutputCaptureExtension.class)
9595
class RabbitAutoConfigurationTests {
9696

9797
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
@@ -722,24 +722,24 @@ void enableSslWithKeystoreTypeAndTrustStoreTypeShouldWork() {
722722
}
723723

724724
@Test
725-
void enableSslWithValidateServerCertificateFalse() {
725+
void enableSslWithValidateServerCertificateFalse(CapturedOutput output) {
726726
this.contextRunner.withUserConfiguration(TestConfiguration.class)
727727
.withPropertyValues("spring.rabbitmq.ssl.enabled:true",
728728
"spring.rabbitmq.ssl.validateServerCertificate=false")
729729
.run((context) -> {
730730
com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory = getTargetConnectionFactory(context);
731-
TrustManager trustManager = getTrustManager(rabbitConnectionFactory);
732-
assertThat(trustManager).isInstanceOf(TrustEverythingTrustManager.class);
731+
assertThat(rabbitConnectionFactory.isSSL()).isTrue();
732+
assertThat(output).contains("TrustEverythingTrustManager", "SECURITY ALERT");
733733
});
734734
}
735735

736736
@Test
737-
void enableSslWithValidateServerCertificateDefault() {
737+
void enableSslWithValidateServerCertificateDefault(CapturedOutput output) {
738738
this.contextRunner.withUserConfiguration(TestConfiguration.class)
739739
.withPropertyValues("spring.rabbitmq.ssl.enabled:true").run((context) -> {
740740
com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory = getTargetConnectionFactory(context);
741-
TrustManager trustManager = getTrustManager(rabbitConnectionFactory);
742-
assertThat(trustManager).isNotInstanceOf(TrustEverythingTrustManager.class);
741+
assertThat(rabbitConnectionFactory.isSSL()).isTrue();
742+
assertThat(output).doesNotContain("TrustEverythingTrustManager", "SECURITY ALERT");
743743
});
744744
}
745745

@@ -849,18 +849,6 @@ void whenMultipleConnectionFactoryCustomizersAreDefinedThenTheyAreCalledInOrder(
849849
});
850850
}
851851

852-
private TrustManager getTrustManager(com.rabbitmq.client.ConnectionFactory rabbitConnectionFactory) {
853-
SslContextFactory sslContextFactory = (SslContextFactory) ReflectionTestUtils.getField(rabbitConnectionFactory,
854-
"sslContextFactory");
855-
SSLContext sslContext = sslContextFactory.create("connection");
856-
Object spi = ReflectionTestUtils.getField(sslContext, "contextSpi");
857-
Object trustManager = ReflectionTestUtils.getField(spi, "trustManager");
858-
while (trustManager.getClass().getName().endsWith("Wrapper")) {
859-
trustManager = ReflectionTestUtils.getField(trustManager, "tm");
860-
}
861-
return (TrustManager) trustManager;
862-
}
863-
864852
private com.rabbitmq.client.ConnectionFactory getTargetConnectionFactory(AssertableApplicationContext context) {
865853
CachingConnectionFactory connectionFactory = context.getBean(CachingConnectionFactory.class);
866854
return connectionFactory.getRabbitConnectionFactory();

0 commit comments

Comments
 (0)