Skip to content

Commit 106bade

Browse files
committed
Add NIO test case for TLS connection info logging
[#163862785] References #441
1 parent 6b836c5 commit 106bade

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

src/test/java/com/rabbitmq/client/test/ssl/TlsConnectionLogging.java

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,60 @@
1818
import com.rabbitmq.client.Connection;
1919
import com.rabbitmq.client.ConnectionFactory;
2020
import com.rabbitmq.client.impl.TlsUtils;
21+
import com.rabbitmq.client.impl.nio.NioParams;
2122
import com.rabbitmq.client.test.TestUtils;
2223
import org.assertj.core.api.Assertions;
2324
import org.junit.Test;
25+
import org.junit.runner.RunWith;
26+
import org.junit.runners.Parameterized;
2427

2528
import javax.net.ssl.*;
2629
import java.security.cert.X509Certificate;
2730
import java.util.concurrent.atomic.AtomicReference;
31+
import java.util.function.Function;
32+
import java.util.function.Supplier;
2833

2934
import static org.junit.Assert.assertNotNull;
3035

36+
@RunWith(Parameterized.class)
3137
public class TlsConnectionLogging {
3238

39+
@Parameterized.Parameter
40+
public Function<ConnectionFactory, Supplier<SSLSession>> configurer;
41+
42+
@Parameterized.Parameters
43+
public static Object[] data() {
44+
return new Object[]{blockingIo(), nio()};
45+
}
46+
47+
public static Function<ConnectionFactory, Supplier<SSLSession>> blockingIo() {
48+
return connectionFactory -> {
49+
connectionFactory.useBlockingIo();
50+
AtomicReference<SSLSocket> socketCaptor = new AtomicReference<>();
51+
connectionFactory.setSocketConfigurator(socket -> socketCaptor.set((SSLSocket) socket));
52+
return () -> socketCaptor.get().getSession();
53+
};
54+
}
55+
56+
public static Function<ConnectionFactory, Supplier<SSLSession>> nio() {
57+
return connectionFactory -> {
58+
connectionFactory.useNio();
59+
AtomicReference<SSLEngine> sslEngineCaptor = new AtomicReference<>();
60+
connectionFactory.setNioParams(new NioParams()
61+
.setSslEngineConfigurator(sslEngine -> sslEngineCaptor.set(sslEngine)));
62+
return () -> sslEngineCaptor.get().getSession();
63+
};
64+
}
65+
3366
@Test
3467
public void certificateInfoAreProperlyExtracted() throws Exception {
3568
SSLContext sslContext = TestUtils.getSSLContext();
3669
sslContext.init(null, new TrustManager[]{new AlwaysTrustTrustManager()}, null);
3770
ConnectionFactory connectionFactory = TestUtils.connectionFactory();
3871
connectionFactory.useSslProtocol(sslContext);
39-
connectionFactory.useBlockingIo();
40-
AtomicReference<SSLSocket> socketCaptor = new AtomicReference<>();
41-
connectionFactory.setSocketConfigurator(socket -> socketCaptor.set((SSLSocket) socket));
72+
Supplier<SSLSession> sslSessionSupplier = configurer.apply(connectionFactory);
4273
try (Connection ignored = connectionFactory.newConnection()) {
43-
SSLSession session = socketCaptor.get().getSession();
74+
SSLSession session = sslSessionSupplier.get();
4475
assertNotNull(session);
4576
String info = TlsUtils.peerCertificateInfo(session.getPeerCertificates()[0], "some prefix");
4677
Assertions.assertThat(info).contains("some prefix")

0 commit comments

Comments
 (0)