Skip to content

Commit b3cde82

Browse files
committed
Conditional TLS test exclusion
Signed-off-by: Jorge Bescos Gascon <[email protected]>
1 parent 02726f6 commit b3cde82

File tree

1 file changed

+38
-2
lines changed
  • connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal

1 file changed

+38
-2
lines changed

connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/SslFilterTest.java

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,29 @@
2424
import java.net.ServerSocket;
2525
import java.net.SocketException;
2626
import java.nio.ByteBuffer;
27+
import java.security.KeyManagementException;
28+
import java.security.NoSuchAlgorithmException;
29+
import java.util.Arrays;
30+
import java.util.List;
2731
import java.util.concurrent.CountDownLatch;
2832
import java.util.concurrent.ExecutorService;
2933
import java.util.concurrent.Executors;
3034
import java.util.concurrent.TimeUnit;
3135
import java.util.concurrent.atomic.AtomicReference;
32-
3336
import javax.net.ServerSocketFactory;
3437
import javax.net.ssl.HostnameVerifier;
38+
import javax.net.ssl.SSLContext;
3539
import javax.net.ssl.SSLException;
3640
import javax.net.ssl.SSLServerSocket;
3741
import javax.net.ssl.SSLServerSocketFactory;
3842
import javax.net.ssl.SSLSession;
3943
import javax.net.ssl.SSLSocket;
40-
4144
import org.glassfish.jersey.SslConfigurator;
4245
import org.junit.jupiter.api.Test;
46+
import org.junit.jupiter.api.extension.ConditionEvaluationResult;
47+
import org.junit.jupiter.api.extension.ExecutionCondition;
48+
import org.junit.jupiter.api.extension.ExtendWith;
49+
import org.junit.jupiter.api.extension.ExtensionContext;
4350

4451
import static org.junit.jupiter.api.Assertions.assertEquals;
4552
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -48,6 +55,7 @@
4855
/**
4956
* @author Petr Janouch
5057
*/
58+
@ExtendWith(SslFilterTest.DeprecatedTLSCondition.class)
5159
public abstract class SslFilterTest {
5260

5361
private static final int PORT = 8321;
@@ -531,4 +539,32 @@ void rehandshake() throws IOException {
531539
socket.startHandshake();
532540
}
533541
}
542+
543+
public static class DeprecatedTLSCondition implements ExecutionCondition {
544+
545+
@Override
546+
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
547+
Class<?> test = context.getTestClass().get();
548+
String required = null;
549+
if (test == SslFilterTLS1Test.class) {
550+
required = "TLSv1";
551+
} else if (test == SslFilterTLS11Test.class) {
552+
required = "TLSv1.1";
553+
}
554+
if (required != null) {
555+
try {
556+
SSLContext context1 = SSLContext.getInstance("TLS");
557+
context1.init(null, null, null);
558+
List<String> supportedProtocols = Arrays.asList(context1.getDefaultSSLParameters().getProtocols());
559+
if (!supportedProtocols.contains(required)) {
560+
return ConditionEvaluationResult.disabled("JDK does not support " + required);
561+
}
562+
} catch (KeyManagementException | NoSuchAlgorithmException e) {
563+
return ConditionEvaluationResult.disabled("JDK does not support TLS: " + e.getMessage());
564+
}
565+
}
566+
return ConditionEvaluationResult.enabled("JDK is valid to run " + test.getCanonicalName());
567+
}
568+
569+
}
534570
}

0 commit comments

Comments
 (0)