[java-idp-plugin-oidc-op-oidfed] 03/03: Improve test case validation

Codeberg noreply at shibboleth.net
Thu Oct 1 12:20:52 UTC 2026


This is an automated email from the git hooks/post-receive script.

codeberg pushed a commit to branch main
in repository java-idp-plugin-oidc-op-oidfed.

View the commit online:
https://codeberg.org/Shibboleth/java-idp-plugin-oidc-op-oidfed/commit/99d53c6df02cc762570cf3e62f8be895fefad43d

commit 99d53c6df02cc762570cf3e62f8be895fefad43d
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Thu Oct 1 15:20:17 2026 +0300

    Improve test case validation
---
 .../flow/oidfed/AbstractFederationFlowTest.java    |  2 +-
 .../flow/oidfed/EntityConfigurationFlowTest.java   |  8 +++---
 ...shedAuthorizeFlowAutomaticRegistrationTest.java |  7 +++++
 .../profile/flow/oidfed/RegistrationFlowTest.java  | 31 +++++++++++++++++++++-
 .../profile/flow/oidfed/SignedKeysetFlowTest.java  |  6 ++---
 5 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/AbstractFederationFlowTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/AbstractFederationFlowTest.java
index 7f1479f..e9f069e 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/AbstractFederationFlowTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/AbstractFederationFlowTest.java
@@ -615,7 +615,7 @@ public class AbstractFederationFlowTest extends AbstractOidcFlowTest {
             metadata.setRedirectionURI(new URI(redirectUri));
             metadata.setJWKSet(new JWKSet(rpKey.toPublicJWK()));
             mapResponse(entityConfigurationUrl(clientId),
-                    mockResponse(rpEntityConfiguration(clientId, metadata, null, configCrit, rpKey)));
+                    mockResponse(rpEntityConfiguration(clientId, metadata, null, configCrit, leafKey)));
             mapResponse(entityConfigurationUrl(anchorId), mockResponse(trustedAnchorConfiguration()));
             mapResponse(subordinateStatementUrl(anchorFetchEndpoint, clientId),
                     mockResponse(subordinateStatement(clientId, Map.of("openid_relying_party",
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/EntityConfigurationFlowTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/EntityConfigurationFlowTest.java
index c470270..0ba6bb2 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/EntityConfigurationFlowTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/EntityConfigurationFlowTest.java
@@ -100,20 +100,20 @@ public class EntityConfigurationFlowTest extends AbstractFederationFlowTest {
         
         final FlowExecutionResult result2 = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
         final Response response2 = parseResponse(result2);
-        Assert.assertEquals(response2.toHTTPResponse().getContent(), response.toHTTPResponse().getContent());
+        Assert.assertEquals(response2.toHTTPResponse().getBody(), response.toHTTPResponse().getBody());
         
         Thread.sleep(2000);
         final FlowExecutionResult result3 = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
         final Response response3 = parseResponse(result3);
         assertEntityStatement(response3);
-        Assert.assertNotEquals(response3.toHTTPResponse().getContent(), response.toHTTPResponse().getContent());
+        Assert.assertNotEquals(response3.toHTTPResponse().getBody(), response.toHTTPResponse().getBody());
     }
 
     protected void assertEntityStatement(final Response response) throws ParseException {
         final EntityConfiguration entityStatement;
         try {
             entityStatement = EntityConfigurationImpl.parse(
-                    SignedJWT.parse(response.toHTTPResponse().getContent()), payloadObjectMapper);
+                    SignedJWT.parse(response.toHTTPResponse().getBody()), payloadObjectMapper);
         } catch (JsonProcessingException | java.text.ParseException e) {
             Assert.fail();
             return;
@@ -185,7 +185,7 @@ public class EntityConfigurationFlowTest extends AbstractFederationFlowTest {
         for (final Algorithm alg : algs) {
             algStrings.add(alg.toString());
         }
-        return strings.size() == algStrings.size() ? strings.containsAll(strings) : false;
+        return strings.size() == algStrings.size() ? strings.containsAll(algStrings) : false;
     }
 
 }
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/PushedAuthorizeFlowAutomaticRegistrationTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/PushedAuthorizeFlowAutomaticRegistrationTest.java
index e0d0ffa..aee6fd0 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/PushedAuthorizeFlowAutomaticRegistrationTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/PushedAuthorizeFlowAutomaticRegistrationTest.java
@@ -51,6 +51,7 @@ import com.nimbusds.jose.jwk.JWKSet;
 import com.nimbusds.jwt.JWT;
 import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.jwt.SignedJWT;
+import com.nimbusds.oauth2.sdk.AuthorizationSuccessResponse;
 import com.nimbusds.oauth2.sdk.OAuth2Error;
 import com.nimbusds.oauth2.sdk.PushedAuthorizationSuccessResponse;
 import com.nimbusds.oauth2.sdk.ResponseType;
@@ -621,6 +622,12 @@ public class PushedAuthorizeFlowAutomaticRegistrationTest extends AbstractFedera
 
         final FlowExecutionResult result = flowExecutor.launchExecution("oidc/authorize", null, externalContext);
         Assert.assertEquals(result.getOutcome().getId(), END_STATE_ID);
+        final ProfileRequestContext prc =
+                (ProfileRequestContext)request.getAttribute(ProfileRequestContext.BINDING_KEY);
+        assert prc != null;
+        final Object responseMessage = prc.ensureOutboundMessageContext().getMessage();
+        Assert.assertTrue(responseMessage instanceof AuthorizationSuccessResponse,
+                "Unexpected response message " + responseMessage);
         if (jkt != null) {
             final String url = response.getRedirectedUrl();
             assert url != null;
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/RegistrationFlowTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/RegistrationFlowTest.java
index b9ad3d4..eb9f820 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/RegistrationFlowTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/RegistrationFlowTest.java
@@ -31,6 +31,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.storage.StorageRecord;
 import org.opensaml.storage.StorageService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,7 +48,9 @@ import com.nimbusds.jose.jwk.JWKSet;
 import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.jwt.SignedJWT;
 import com.nimbusds.oauth2.sdk.ParseException;
+import com.nimbusds.oauth2.sdk.PushedAuthorizationSuccessResponse;
 import com.nimbusds.oauth2.sdk.Scope;
+import com.nimbusds.openid.connect.sdk.AuthenticationSuccessResponse;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 
@@ -97,7 +100,7 @@ public class RegistrationFlowTest extends AbstractFederationFlowTest {
         final OIDCClientMetadata metadata = new OIDCClientMetadata();
         metadata.setRedirectionURI(new URI(redirectUri));
         metadata.setJWKSet(new JWKSet(rpKey.toPublicJWK()));
-        setRequest("POST", rpEntityConfigurationUnmatchingKey(clientId, metadata),
+        setRequest("POST", explicitRegistrationRequestUnmatchingKey(clientId, metadata),
                 "application/entity-statement+jwt");
         final FlowExecutionResult result = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
         verify(federationHttpClient, times(0)).executeOpen(any(),
@@ -581,6 +584,12 @@ public class RegistrationFlowTest extends AbstractFederationFlowTest {
 
         final FlowExecutionResult result = flowExecutor.launchExecution("oidc/authorize", null, externalContext);
         Assert.assertEquals(result.getOutcome().getId(), END_STATE_ID);
+        final ProfileRequestContext prc =
+                (ProfileRequestContext)request.getAttribute(ProfileRequestContext.BINDING_KEY);
+        assert prc != null;
+        final Object responseMessage = prc.ensureOutboundMessageContext().getMessage();
+        Assert.assertTrue(responseMessage instanceof AuthenticationSuccessResponse,
+                "Unexpected response message " + responseMessage);
     }
 
     protected void verifyParEndpoint(final String clientId, final String redirectUri) throws JOSEException {
@@ -596,6 +605,12 @@ public class RegistrationFlowTest extends AbstractFederationFlowTest {
         final FlowExecutionResult result = flowExecutor.launchExecution("oauth2/pushed-authorization", null,
                 externalContext);
         Assert.assertEquals(result.getOutcome().getId(), END_STATE_ID);
+        final ProfileRequestContext prc =
+                (ProfileRequestContext)request.getAttribute(ProfileRequestContext.BINDING_KEY);
+        assert prc != null;
+        final Object responseMessage = prc.ensureOutboundMessageContext().getMessage();
+        Assert.assertTrue(responseMessage instanceof PushedAuthorizationSuccessResponse,
+                "Unexpected response message " + responseMessage);
     }
 
     protected String explicitRegistrationRequest(final String clientId, final String... authorityHints)
@@ -645,4 +660,18 @@ public class RegistrationFlowTest extends AbstractFederationFlowTest {
         return FederationJwtSupport.entityStatement(JWSAlgorithm.RS256, leafKey, builder.build()).serialize();
     }
 
+    protected String explicitRegistrationRequestUnmatchingKey(final String clientId,
+            final OIDCClientMetadata metadata, final String... authorityHints) throws URISyntaxException {
+        final JWTClaimsSet claimsSet = new JWTClaimsSet.Builder().issuer(clientId).subject(clientId)
+                .issueTime(Date.from(Instant.now()))
+                .expirationTime(Date.from(Instant.now().plusSeconds(300)))
+                .claim("jwks", new JWKSet(leafKey).toJSONObject(true))
+                .claim("metadata", Map.of("openid_relying_party", metadata.toJSONObject()))
+                .claim("authority_hints", authorityHints == null || authorityHints.length == 0 ?
+                        new String[] { anchorId } : authorityHints)
+                .audience(issuer)
+                .build();
+        return FederationJwtSupport.entityStatement(JWSAlgorithm.RS256, anchorKey, claimsSet).serialize();
+    }
+
 }
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/SignedKeysetFlowTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/SignedKeysetFlowTest.java
index 062fd42..83b7215 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/SignedKeysetFlowTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/SignedKeysetFlowTest.java
@@ -72,13 +72,13 @@ public class SignedKeysetFlowTest extends AbstractFederationFlowTest {
 
         final FlowExecutionResult result2 = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
         final Response response2 = parseResponse(result2);
-        Assert.assertEquals(response2.toHTTPResponse().getContent(), response.toHTTPResponse().getContent());
+        Assert.assertEquals(response2.toHTTPResponse().getBody(), response.toHTTPResponse().getBody());
         
         Thread.sleep(2100);
         final FlowExecutionResult result3 = flowExecutor.launchExecution(FLOW_ID, null, externalContext);
         final Response response3 = parseResponse(result3);
         assertEntityStatement(response3);
-        Assert.assertNotEquals(response3.toHTTPResponse().getContent(), response.toHTTPResponse().getContent());
+        Assert.assertNotEquals(response3.toHTTPResponse().getBody(), response.toHTTPResponse().getBody());
 
     }
 
@@ -87,7 +87,7 @@ public class SignedKeysetFlowTest extends AbstractFederationFlowTest {
         final SignedKeyset entityStatement;
         try {
             entityStatement = SignedKeysetImpl.parse(
-                    SignedJWT.parse(response.toHTTPResponse().getContent()), payloadObjectMapper);
+                    SignedJWT.parse(response.toHTTPResponse().getBody()), payloadObjectMapper);
         } catch (JsonProcessingException | java.text.ParseException e) {
             Assert.fail();
             return;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list