Skip to content

Commit d505f6c

Browse files
committed
Add java25 checks
Upgrade mock-oauth2-server to 5.0.2 and skip tests on JDK16 and below using JUnit 5 annotations for mock-oauth-server Signed-off-by: Appu <appu@google.com>
1 parent 2a56fe1 commit d505f6c

10 files changed

Lines changed: 37 additions & 25 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
strategy:
2121
matrix:
2222
# sigstore-java still supports Java 11, however, we test it with conformance-tests only
23-
java-version: [17, 21]
23+
java-version: [17, 21, 25]
2424
fail-fast: false
2525

2626
concurrency:

build-logic/jvm/src/main/kotlin/build-logic.java.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ tasks.configureEach<JavaExec> {
2525

2626
spotless {
2727
java {
28-
googleJavaFormat("1.24.0")
28+
googleJavaFormat("1.35.0")
2929
licenseHeaderFile("$rootDir/config/licenseHeader")
3030
// Note if submodule needs to add more exclusions, it should list ALL of them since
3131
// Spotless does not have "addTargetExclude" method

build-logic/jvm/src/main/kotlin/build-logic.testing.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@ tasks.withType<Test>().configureEach {
2222
if (project.hasProperty("skipStaging")) {
2323
systemProperty("sigstore-java.test.skipStaging", project.findProperty("skipStaging")!!)
2424
}
25+
if (buildParameters.testJdkVersion >= 23) {
26+
jvmArgs("--sun-misc-unsafe-memory-access=deny")
27+
}
2528
}

fuzzing/oss_fuzz_build.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
# TODO: this should be a gradle plugin
44

55
# build the fuzzing classes and extract dependencies into $OUT
6-
./gradlew :fuzzing:copyToFuzzOut -x test -PfuzzOut="$OUT"
6+
# Exclude spotlessCheck because GJF 1.35.0+ requires JDK 21+ to run, which would crash the build in CIFuzz (currently running on JDK 17).
7+
./gradlew :fuzzing:copyToFuzzOut -x test -x spotlessCheck -PfuzzOut="$OUT"
78
ALL_JARS=""
89
for jarfile in $(find $OUT -name *.jar)
910
do

sigstore-java/build.gradle.kts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ plugins {
1010

1111
description = "A Java client for signing and verifying using Sigstore"
1212

13+
// allow java17 test dependencies even if test java version is < 17 (like 11)
14+
configurations.testCompileClasspath {
15+
attributes.attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 17)
16+
}
17+
configurations.testRuntimeClasspath.configure {
18+
attributes.attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 17)
19+
}
20+
1321
dependencies {
1422
compileOnly("org.immutables:gson:2.12.2")
1523
compileOnly("org.immutables:value-annotations:2.12.2")
@@ -50,7 +58,7 @@ dependencies {
5058
testImplementation("org.mockito:mockito-core")
5159
testImplementation("org.mockito:mockito-junit-jupiter")
5260

53-
testImplementation("no.nav.security:mock-oauth2-server:0.5.10")
61+
testImplementation("no.nav.security:mock-oauth2-server:5.0.2")
5462
testImplementation("com.squareup.okhttp3:mockwebserver:5.4.0")
5563
testImplementation("net.sourceforge.htmlunit:htmlunit:2.70.0")
5664

@@ -91,12 +99,12 @@ spotless {
9199
)
92100
}
93101
format("conscrypt", com.diffplug.gradle.spotless.JavaExtension::class.java) {
94-
googleJavaFormat("1.24.0")
102+
googleJavaFormat("1.35.0")
95103
licenseHeaderFile("$rootDir/config/conscryptLicenseHeader")
96104
target("src/*/java/dev/sigstore/encryption/certificates/transparency/*.java")
97105
}
98106
format("webPki", com.diffplug.gradle.spotless.JavaExtension::class.java) {
99-
googleJavaFormat("1.24.0")
107+
googleJavaFormat("1.35.0")
100108
licenseHeaderFile("$rootDir/config/webPKILicenseHeader")
101109
target("src/*/java/dev/sigstore/json/canonicalizer/*.java")
102110
}

sigstore-java/src/test/java/dev/sigstore/fulcio/client/FulcioClientTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,13 @@
3131
import java.util.function.Function;
3232
import java.util.stream.Stream;
3333
import org.junit.jupiter.api.Assertions;
34+
import org.junit.jupiter.api.condition.EnabledForJreRange;
35+
import org.junit.jupiter.api.condition.JRE;
3436
import org.junit.jupiter.api.extension.ExtendWith;
3537
import org.junit.jupiter.params.ParameterizedTest;
3638
import org.junit.jupiter.params.provider.MethodSource;
3739

40+
@EnabledForJreRange(min = JRE.JAVA_17)
3841
public class FulcioClientTest {
3942

4043
static Stream<org.junit.jupiter.api.Named<Function<FulcioWrapper, FulcioClient>>> clients() {

sigstore-java/src/test/java/dev/sigstore/oidc/client/WebOidcClientNonceTest.java

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,25 @@
1818
import com.gargoylesoftware.htmlunit.WebClient;
1919
import com.google.common.io.Resources;
2020
import dev.sigstore.trustroot.Service;
21-
import java.io.IOException;
2221
import java.nio.charset.StandardCharsets;
2322
import java.util.Map;
2423
import no.nav.security.mock.oauth2.MockOAuth2Server;
2524
import no.nav.security.mock.oauth2.OAuth2Config;
26-
import org.junit.jupiter.api.AfterEach;
2725
import org.junit.jupiter.api.Assertions;
2826
import org.junit.jupiter.api.Test;
27+
import org.junit.jupiter.api.condition.EnabledForJreRange;
28+
import org.junit.jupiter.api.condition.JRE;
2929

30+
@EnabledForJreRange(min = JRE.JAVA_17)
3031
public class WebOidcClientNonceTest {
3132

32-
private MockOAuth2Server server;
33-
34-
@AfterEach
35-
void teardown() throws IOException {
36-
if (server != null) {
37-
server.shutdown();
38-
}
39-
}
40-
4133
@Test
4234
void testNonceVerificationSuccess() throws Exception {
4335
String config =
4436
Resources.toString(
4537
Resources.getResource("dev/sigstore/oidc/server/config.json"), StandardCharsets.UTF_8);
46-
server = new MockOAuth2Server(OAuth2Config.Companion.fromJson(config));
38+
var server = new MockOAuth2Server(OAuth2Config.Companion.fromJson(config));
4739
server.start();
48-
4940
try (var webClient = new WebClient()) {
5041
var oidcClient =
5142
WebOidcClient.builder()
@@ -55,6 +46,8 @@ void testNonceVerificationSuccess() throws Exception {
5546

5647
var token = oidcClient.getIDToken(Map.of());
5748
Assertions.assertNotNull(token.getIdToken());
49+
} finally {
50+
server.shutdown();
5851
}
5952
}
6053

@@ -64,9 +57,8 @@ void testNonceVerificationFailure_MismatchedNonce() throws Exception {
6457
Resources.toString(
6558
Resources.getResource("dev/sigstore/oidc/server/config-bad-nonce.json"),
6659
StandardCharsets.UTF_8);
67-
server = new MockOAuth2Server(OAuth2Config.Companion.fromJson(config));
60+
var server = new MockOAuth2Server(OAuth2Config.Companion.fromJson(config));
6861
server.start();
69-
7062
try (var webClient = new WebClient()) {
7163
var oidcClient =
7264
WebOidcClient.builder()
@@ -81,6 +73,8 @@ void testNonceVerificationFailure_MismatchedNonce() throws Exception {
8173
oidcClient.getIDToken(Map.of());
8274
});
8375
Assertions.assertTrue(exception.getMessage().contains("nonce in id token does not match"));
76+
} finally {
77+
server.shutdown();
8478
}
8579
}
8680
}

sigstore-java/src/test/java/dev/sigstore/oidc/client/WebOidcClientTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@
2323
import java.util.Map;
2424
import org.junit.jupiter.api.Assertions;
2525
import org.junit.jupiter.api.Test;
26+
import org.junit.jupiter.api.condition.EnabledForJreRange;
27+
import org.junit.jupiter.api.condition.JRE;
2628
import org.junit.jupiter.api.extension.RegisterExtension;
2729
import org.slf4j.event.Level;
2830

31+
@EnabledForJreRange(min = JRE.JAVA_17)
2932
public class WebOidcClientTest {
3033

3134
@RegisterExtension

sigstore-java/src/test/resources/dev/sigstore/oidc/server/config-bad-nonce.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"tokenExpiry": 120,
1212
"requestMappings": [
1313
{
14-
"requestParam": "scope",
15-
"match": "openid email",
14+
"requestParam": "client_id",
15+
"match": "sigstore",
1616
"claims": {
1717
"audience": "sigstore",
1818
"email": "test.person@test.com",

sigstore-java/src/test/resources/dev/sigstore/oidc/server/config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"tokenExpiry": 120,
1212
"requestMappings": [
1313
{
14-
"requestParam": "scope",
15-
"match": "openid email",
14+
"requestParam": "client_id",
15+
"match": "sigstore",
1616
"claims": {
1717
"audience": "sigstore",
1818
"email": "test.person@test.com",

0 commit comments

Comments
 (0)