[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