Fixed wiring of ALPN integration tests
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/SSLTestContexts.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/SSLTestContexts.java
index 7853927..b259790 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/SSLTestContexts.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/SSLTestContexts.java
@@ -32,6 +32,7 @@
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
@@ -40,15 +41,13 @@
import org.apache.hc.core5.ssl.SSLContextBuilder;
public final class SSLTestContexts {
- public static SSLContext createServerSSLContext() {
- return createServerSSLContext(null);
- }
- public static SSLContext createServerSSLContext(final String protocol) {
+ public static SSLContext createServerSSLContext(final Provider provider, final String protocol) {
final URL keyStoreURL = SSLTestContexts.class.getResource("/test.p12");
final String storePassword = "nopassword";
try {
return SSLContextBuilder.create()
+ .setProvider(provider)
.setKeyStoreType("pkcs12")
.loadTrustMaterial(keyStoreURL, storePassword.toCharArray())
.loadKeyMaterial(keyStoreURL, storePassword.toCharArray(), storePassword.toCharArray())
@@ -60,11 +59,15 @@ public static SSLContext createServerSSLContext(final String protocol) {
}
}
- public static SSLContext createClientSSLContext() {
- return createClientSSLContext(null);
+ public static SSLContext createServerSSLContext(final String protocol) {
+ return createServerSSLContext(null, protocol);
}
- public static SSLContext createClientSSLContext(final String protocol) {
+ public static SSLContext createServerSSLContext() {
+ return createServerSSLContext(null, null);
+ }
+
+ public static SSLContext createClientSSLContext(final Provider provider, final String protocol) {
final URL keyStoreURL = SSLTestContexts.class.getResource("/test.p12");
final String storePassword = "nopassword";
try {
@@ -79,4 +82,12 @@ public static SSLContext createClientSSLContext(final String protocol) {
}
}
+ public static SSLContext createClientSSLContext(final String protocol) {
+ return createClientSSLContext(null, protocol);
+ }
+
+ public static SSLContext createClientSSLContext() {
+ return createClientSSLContext(null, null);
+ }
+
}
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/extension/SecurityProviderResource.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/extension/SecurityProviderResource.java
index 34e7e84..5a50554 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/extension/SecurityProviderResource.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/extension/SecurityProviderResource.java
@@ -82,7 +82,7 @@ public void afterEach(final ExtensionContext context) throws Exception {
}
public Provider securityProvider() {
- return securityProvider;
+ return securityProvider != null ? securityProvider : Security.getProvider(securityProviderName);
}
}
diff --git a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/AlpnTest.java b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/AlpnTest.java
index fb11d53..82d1346 100644
--- a/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/AlpnTest.java
+++ b/httpcore5-testing/src/test/java/org/apache/hc/core5/testing/nio/AlpnTest.java
@@ -55,6 +55,7 @@
import org.apache.hc.core5.http.nio.support.BasicRequestProducer;
import org.apache.hc.core5.http.nio.support.BasicResponseConsumer;
import org.apache.hc.core5.http2.HttpVersionPolicy;
+import org.apache.hc.core5.http2.ssl.H2ClientTlsStrategy;
import org.apache.hc.core5.http2.ssl.H2ServerTlsStrategy;
import org.apache.hc.core5.reactor.IOReactorConfig;
import org.apache.hc.core5.reactor.ListenerEndpoint;
@@ -64,6 +65,7 @@
import org.apache.hc.core5.testing.extension.nio.H2AsyncServerResource;
import org.apache.hc.core5.util.Timeout;
import org.hamcrest.CoreMatchers;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -75,6 +77,8 @@ abstract class AlpnTest {
@RegisterExtension
@Order(1)
private final SecurityProviderResource securityProviderResource;
+ private final Function<SSLContext, TlsStrategy> serverTlsStrategyFactory;
+ private final Function<SSLContext, TlsStrategy> clientTlsStrategyFactory;
@RegisterExtension
@Order(2)
private final H2AsyncServerResource serverResource;
@@ -86,12 +90,10 @@ public AlpnTest(final String securityProviderName,
final Function<SSLContext, TlsStrategy> serverTlsStrategyFactory,
final Function<SSLContext, TlsStrategy> clientTlsStrategyFactory) {
this.securityProviderResource = new SecurityProviderResource(securityProviderName);
+ this.serverTlsStrategyFactory = serverTlsStrategyFactory;
+ this.clientTlsStrategyFactory = clientTlsStrategyFactory;
this.serverResource = new H2AsyncServerResource();
this.serverResource.configure(bootstrap -> bootstrap
- .setVersionPolicy(HttpVersionPolicy.NEGOTIATE)
- .setTlsStrategy(serverTlsStrategyFactory != null ?
- serverTlsStrategyFactory.apply(SSLTestContexts.createServerSSLContext()) :
- new H2ServerTlsStrategy(SSLTestContexts.createServerSSLContext()))
.setIOReactorConfig(
IOReactorConfig.custom()
.setSoTimeout(TIMEOUT)
@@ -103,16 +105,26 @@ public AlpnTest(final String securityProviderName,
);
this.clientResource = new H2AsyncRequesterResource();
this.clientResource.configure(bootstrap -> bootstrap
- .setVersionPolicy(HttpVersionPolicy.NEGOTIATE)
- .setTlsStrategy(clientTlsStrategyFactory != null ?
- clientTlsStrategyFactory.apply(SSLTestContexts.createServerSSLContext()) :
- new H2ServerTlsStrategy(SSLTestContexts.createServerSSLContext()))
.setIOReactorConfig(IOReactorConfig.custom()
.setSoTimeout(TIMEOUT)
.build())
);
}
+ @BeforeEach
+ void setup() throws Exception {
+ final SSLContext serverSSLContext = SSLTestContexts.createServerSSLContext(securityProviderResource.securityProvider(), "TLS");
+ serverResource.configure(bootstrap -> bootstrap
+ .setVersionPolicy(HttpVersionPolicy.NEGOTIATE)
+ .setTlsStrategy(serverTlsStrategyFactory != null ? serverTlsStrategyFactory.apply(serverSSLContext) : new H2ServerTlsStrategy(serverSSLContext))
+ );
+ final SSLContext clientSSLContext = SSLTestContexts.createClientSSLContext(securityProviderResource.securityProvider(), "TLS");
+ clientResource.configure(bootstrap -> bootstrap
+ .setVersionPolicy(HttpVersionPolicy.NEGOTIATE)
+ .setTlsStrategy(clientTlsStrategyFactory != null ? clientTlsStrategyFactory.apply(clientSSLContext) : new H2ClientTlsStrategy(clientSSLContext))
+ );
+ }
+
@Test
void testForceHttp1() throws Exception {
final HttpAsyncServer server = serverResource.start();