Skip to content

[GenAI] Test fix for io.jsonwebtoken:jjwt-gson:0.12.0 using gpt-5.4#48

Open
kimeta wants to merge 6 commits into
masterfrom
ai/fix-javac-io.jsonwebtoken-jjwt-gson-0.12.0
Open

[GenAI] Test fix for io.jsonwebtoken:jjwt-gson:0.12.0 using gpt-5.4#48
kimeta wants to merge 6 commits into
masterfrom
ai/fix-javac-io.jsonwebtoken-jjwt-gson-0.12.0

Conversation

@kimeta

@kimeta kimeta commented Mar 16, 2026

Copy link
Copy Markdown
Owner

What does this PR do?

Fixes: oracle#716

This PR provides test fixes and new metadata for io.jsonwebtoken:jjwt-gson:0.12.0, addressing compile java failures caused by changes in the updated library version. The fixes were generated using gpt-5.4.

Summary:

  • Input tokens: 104219
  • Output tokens: 3739
  • Entries found: 108
  • Iterations: 4
  • Library coverage percentage: 90.48

Comparison between existing test version and AI-Generated update

diff --git a/tests/src/io.jsonwebtoken/jjwt-gson/0.11.5/build.gradle b/tests/src/io.jsonwebtoken/jjwt-gson/0.12.0/build.gradle
index 7680b347..d56e1583 100644
--- a/tests/src/io.jsonwebtoken/jjwt-gson/0.11.5/build.gradle
+++ b/tests/src/io.jsonwebtoken/jjwt-gson/0.12.0/build.gradle
@@ -17,6 +17,13 @@ dependencies {
     testImplementation "io.jsonwebtoken:jjwt-impl:$libraryVersion"
 }
 
+test {
+    jvmArgs(
+            '--add-exports=java.base/sun.security.util=ALL-UNNAMED',
+            '--add-opens=java.base/java.io=ALL-UNNAMED'
+    )
+}
+
 graalvmNative {
     agent {
         defaultMode = "conditional"
diff --git a/tests/src/io.jsonwebtoken/jjwt-gson/0.11.5/gradle.properties b/tests/src/io.jsonwebtoken/jjwt-gson/0.12.0/gradle.properties
index 1664cadd..ad4d2512 100644
--- a/tests/src/io.jsonwebtoken/jjwt-gson/0.11.5/gradle.properties
+++ b/tests/src/io.jsonwebtoken/jjwt-gson/0.12.0/gradle.properties
@@ -1,2 +1,2 @@
-library.version = 0.11.5
-metadata.dir = io.jsonwebtoken/jjwt-gson/0.11.5/
+library.version = 0.12.0
+metadata.dir = io.jsonwebtoken/jjwt-gson/0.12.0/
diff --git a/tests/src/io.jsonwebtoken/jjwt-gson/0.11.5/src/test/java/io_jsonwebtoken/jjwt_gson/Jjwt_gsonTest.java b/tests/src/io.jsonwebtoken/jjwt-gson/0.12.0/src/test/java/io_jsonwebtoken/jjwt_gson/Jjwt_gsonTest.java
index 1d4b6b2c..c488437a 100644
--- a/tests/src/io.jsonwebtoken/jjwt-gson/0.11.5/src/test/java/io_jsonwebtoken/jjwt_gson/Jjwt_gsonTest.java
+++ b/tests/src/io.jsonwebtoken/jjwt-gson/0.12.0/src/test/java/io_jsonwebtoken/jjwt_gson/Jjwt_gsonTest.java
@@ -6,11 +6,11 @@
  */
 package io_jsonwebtoken.jjwt_gson;
 
-import io.jsonwebtoken.SignatureAlgorithm;
-import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.CompressionCodecs;
-import io.jsonwebtoken.JwtParserBuilder;
 import io.jsonwebtoken.IncorrectClaimException;
+import io.jsonwebtoken.JwtParserBuilder;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
 import io.jsonwebtoken.io.Decoders;
 import io.jsonwebtoken.io.Encoders;
 import io.jsonwebtoken.security.Keys;
@@ -31,10 +31,10 @@ class Jjwt_gsonTest {
         SecretKey firstKey = Keys.secretKeyFor(SignatureAlgorithm.HS256);
         String secretString = Encoders.BASE64.encode(firstKey.getEncoded());
         SecretKey secondKey = Keys.hmacShaKeyFor(Decoders.BASE64.decode(secretString));
-        assertThat(Jwts.parserBuilder().setSigningKey(firstKey).build().parseClaimsJws(
+        assertThat(Jwts.parser().setSigningKey(firstKey).build().parseClaimsJws(
                 Jwts.builder().setSubject("Joe").signWith(firstKey).compact()
         ).getBody().getSubject()).isEqualTo("Joe");
-        assertThat(Jwts.parserBuilder().setSigningKey(secondKey).build().parseClaimsJws(
+        assertThat(Jwts.parser().setSigningKey(secondKey).build().parseClaimsJws(
                 Jwts.builder().setSubject("Joe").signWith(secondKey).compact()
         ).getBody().getSubject()).isEqualTo("Joe");
     }
@@ -58,26 +58,35 @@ class Jjwt_gsonTest {
                 .signWith(firstKey, SignatureAlgorithm.HS256)
                 .compressWith(CompressionCodecs.GZIP)
                 .compact();
-        JwtParserBuilder jwtParserBuilder = Jwts.parserBuilder().setAllowedClockSkewSeconds(3 * 60).setSigningKey(firstKey);
+
+        JwtParserBuilder jwtParserBuilder = Jwts.parser()
+                .setAllowedClockSkewSeconds(3 * 60)
+                .setSigningKey(firstKey);
+
         assertThat(jwtParserBuilder.build().parseClaimsJws(firstCompactJws).getBody().getSubject()).isEqualTo("Joe");
         assertDoesNotThrow(() -> jwtParserBuilder.requireSubject("Joe").build().parseClaimsJws(firstCompactJws));
         assertDoesNotThrow(() -> jwtParserBuilder.requireIssuer("Aaron").build().parseClaimsJws(firstCompactJws));
         assertDoesNotThrow(() -> jwtParserBuilder.requireAudience("Abel").build().parseClaimsJws(firstCompactJws));
-        // This is an error caused by GSON's own parsing
-        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.requireExpiration(secondDate).build().parseClaimsJws(firstCompactJws));
-        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.requireNotBefore(firstDate).build().parseClaimsJws(firstCompactJws));
-        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.requireIssuedAt(firstDate).build().parseClaimsJws(firstCompactJws));
-        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.requireId(uuidString).build().parseClaimsJws(firstCompactJws));
-        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.require("exampleClaim", "Adam").build().parseClaimsJws(firstCompactJws));
+        assertDoesNotThrow(() -> jwtParserBuilder.requireExpiration(secondDate).build().parseClaimsJws(firstCompactJws));
+        assertDoesNotThrow(() -> jwtParserBuilder.requireNotBefore(firstDate).build().parseClaimsJws(firstCompactJws));
+        assertDoesNotThrow(() -> jwtParserBuilder.requireIssuedAt(firstDate).build().parseClaimsJws(firstCompactJws));
+        assertDoesNotThrow(() -> jwtParserBuilder.requireId(uuidString).build().parseClaimsJws(firstCompactJws));
+        assertDoesNotThrow(() -> jwtParserBuilder.require("exampleClaim", "Adam").build().parseClaimsJws(firstCompactJws));
+
+        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.requireSubject("Jane").build().parseClaimsJws(firstCompactJws));
+        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.requireIssuer("Moses").build().parseClaimsJws(firstCompactJws));
+        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.requireAudience("Cain").build().parseClaimsJws(firstCompactJws));
+        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.requireId("different-id").build().parseClaimsJws(firstCompactJws));
+        assertThrows(IncorrectClaimException.class, () -> jwtParserBuilder.require("exampleClaim", "Eve").build().parseClaimsJws(firstCompactJws));
     }
 
     @Test
     void testCompression() {
         SecretKey firstKey = Keys.secretKeyFor(SignatureAlgorithm.HS256);
-        assertThat(Jwts.parserBuilder().setSigningKey(firstKey).build().parseClaimsJws(
+        assertThat(Jwts.parser().setSigningKey(firstKey).build().parseClaimsJws(
                 Jwts.builder().setSubject("Joe").signWith(firstKey).compressWith(CompressionCodecs.DEFLATE).compact()
         ).getBody().getSubject()).isEqualTo("Joe");
-        assertThat(Jwts.parserBuilder().setSigningKey(firstKey).build().parseClaimsJws(
+        assertThat(Jwts.parser().setSigningKey(firstKey).build().parseClaimsJws(
                 Jwts.builder().setSubject("Joe").signWith(firstKey).compressWith(CompressionCodecs.GZIP).compact()
         ).getBody().getSubject()).isEqualTo("Joe");
     }
@@ -86,14 +95,14 @@ class Jjwt_gsonTest {
     void testSignatureAlgorithms() {
         Stream.of(SignatureAlgorithm.HS256, SignatureAlgorithm.HS384, SignatureAlgorithm.HS512)
                 .map(Keys::secretKeyFor)
-                .forEach(secretKey -> assertThat(Jwts.parserBuilder().setSigningKey(secretKey).build().parseClaimsJws(
+                .forEach(secretKey -> assertThat(Jwts.parser().setSigningKey(secretKey).build().parseClaimsJws(
                         Jwts.builder().setSubject("Joe").signWith(secretKey).compact()
                 ).getBody().getSubject()).isEqualTo("Joe"));
         Stream.of(SignatureAlgorithm.ES256, SignatureAlgorithm.ES384, SignatureAlgorithm.ES512,
                         SignatureAlgorithm.RS256, SignatureAlgorithm.RS384, SignatureAlgorithm.RS512,
                         SignatureAlgorithm.PS256, SignatureAlgorithm.PS384, SignatureAlgorithm.PS512)
                 .map(Keys::keyPairFor)
-                .forEach(keyPair -> assertThat(Jwts.parserBuilder().setSigningKey(keyPair.getPublic()).build().parseClaimsJws(
+                .forEach(keyPair -> assertThat(Jwts.parser().setSigningKey(keyPair.getPublic()).build().parseClaimsJws(
                         Jwts.builder().setSubject("Joe").signWith(keyPair.getPrivate()).compact()
                 ).getBody().getSubject()).isEqualTo("Joe"));
     }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Automation] javac compile fails for io.jsonwebtoken:jjwt-gson:0.12.0

1 participant