[java-idp-plugin-oidc-op-oidfed] 01/02: Use TrustChainTestUtil from oidfed-common-testing.

Codeberg noreply at shibboleth.net
Thu Sep 17 11:31:14 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/070b94a3b24dbdc6d5ee284b796f4eb0fb042ac2

commit 070b94a3b24dbdc6d5ee284b796f4eb0fb042ac2
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Thu Sep 17 14:14:44 2026 +0300

    Use TrustChainTestUtil from oidfed-common-testing.
---
 .../plugin/oidc/op/oidfed/TrustChainTestUtil.java  | 164 ---------------------
 .../AuthorizeFlowAutomaticRegistrationTest.java    |   2 +-
 .../flow/oidfed/EntityConfigurationFlowTest.java   |   2 +-
 .../profile/flow/oidfed/RegistrationFlowTest.java  |   2 +-
 .../profile/flow/oidfed/ResolveEntityFlowTest.java |   2 +-
 .../UserInfoFlowAutomaticRegistrationTest.java     |   2 +-
 .../EntityConfigurationMetadataCacheTest.java      |   2 +-
 .../oidfed/cache/TrustChainMetadataCacheTest.java  |   2 +-
 8 files changed, 7 insertions(+), 171 deletions(-)

diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/oidfed/TrustChainTestUtil.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/oidfed/TrustChainTestUtil.java
deleted file mode 100644
index f19ccdf..0000000
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/oidfed/TrustChainTestUtil.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.plugin.oidc.op.oidfed;
-
-import java.text.ParseException;
-import java.time.Instant;
-import java.util.Date;
-import java.util.List;
-
-import javax.annotation.Nonnull;
-
-import org.testng.Assert;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.nimbusds.jose.JOSEException;
-import com.nimbusds.jose.JOSEObjectType;
-import com.nimbusds.jose.JWSAlgorithm;
-import com.nimbusds.jose.JWSHeader;
-import com.nimbusds.jose.crypto.ECDSASigner;
-import com.nimbusds.jose.crypto.RSASSASigner;
-import com.nimbusds.jose.jwk.JWK;
-import com.nimbusds.jose.jwk.JWKSet;
-import com.nimbusds.jose.jwk.KeyUse;
-import com.nimbusds.jose.jwk.RSAKey;
-import com.nimbusds.jose.jwk.gen.RSAKeyGenerator;
-import com.nimbusds.jwt.JWTClaimsSet;
-import com.nimbusds.jwt.SignedJWT;
-
-import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
-import net.shibboleth.oidfed.metadata.EntityStatement;
-import net.shibboleth.oidfed.metadata.impl.EntityConfigurationImpl;
-import net.shibboleth.oidfed.metadata.impl.SubordinateStatementImpl;
-import net.shibboleth.oidfed.metadata.jackson.InstantDeserializer;
-import net.shibboleth.oidfed.metadata.jackson.JWKSetDeserializer;
-import net.shibboleth.oidfed.metadata.payload.claim.Metadata;
-import net.shibboleth.oidfed.metadata.payload.claim.impl.MetadataImpl;
-import net.shibboleth.oidfed.metadata.policy.FederationMetadataPolicyDeserializer;
-
-/**
- * Various utility methods for testing trust chains.
- */
-public class TrustChainTestUtil {
-
-    public static List<EntityStatement<?>> chainWithIntermediate(final EntityStatement<?> leaf, final String anchorId,
-            final String intermediateId) {
-        try {
-            final RSAKey anchorKey = new RSAKeyGenerator(2048)
-                    .keyID("mockTrustAnchorKey")
-                    .keyUse(KeyUse.SIGNATURE)
-                    .generate();
-            final RSAKey intermediateKey = new RSAKeyGenerator(2048)
-                    .keyID("mockIntermediateKey")
-                    .keyUse(KeyUse.SIGNATURE)
-                    .generate();
-            final EntityStatement<?> trustAnchor = trustAnchor(JWSAlgorithm.RS256, anchorKey, anchorId);
-            final EntityStatement<?> intermediateStatement = entityStatement(JWSAlgorithm.RS256, anchorKey,
-                    new JWTClaimsSet.Builder()
-                    .subject(intermediateId)
-                    .issueTime(new Date())
-                    .issuer(anchorId)
-                    .build());
-            final EntityStatement<?> leafSubordinateStatement = entityStatement(JWSAlgorithm.RS256, intermediateKey,
-                    new JWTClaimsSet.Builder(leaf.getJwt().getJWTClaimsSet())
-                    .subject(leaf.getSubject())
-                    .issueTime(new Date())
-                    .issuer(intermediateId)
-                    .build());
-            return List.of(leaf, leafSubordinateStatement, intermediateStatement, trustAnchor);
-        } catch (final  JOSEException | ParseException e) {
-            Assert.fail("Could not construct trust chain", e);
-        }
-        return null;
-    }
-
-    public static EntityStatement<?> trustAnchor(final JWSAlgorithm algorithm, final JWK jwk, final String entityId) {
-        return entityStatement(algorithm, jwk, 
-                new JWTClaimsSet.Builder()
-                .subject(entityId)
-                .issueTime(new Date())
-                .issuer(entityId)
-                .build());
-    }
-
-    public static EntityStatement<?> entityStatement(final JWSAlgorithm algorithm, final JWK jwk,
-            final JWTClaimsSet claimsSet) {
-        return entityStatement(signedJwt(algorithm, jwk, "entity-statement+jwt", claimsSet));
-    }
-
-    public static EntityStatement<?> entityStatement(final SignedJWT jwt) {
-        try {
-            if (jwt.getJWTClaimsSet().getSubject().equals(jwt.getJWTClaimsSet().getIssuer())) {
-                return EntityConfigurationImpl.parse(jwt, payloadObjectMapper());
-            }
-            return SubordinateStatementImpl.parse(jwt, payloadObjectMapper());
-        } catch (JsonProcessingException | ParseException e) {
-            Assert.fail("Could not construct entity configuration", e);
-        }
-        return null;
-        
-    }
-
-    @Nonnull public static ObjectMapper payloadObjectMapper() {
-        final SimpleModule jacksonModule = new SimpleModule();
-        jacksonModule.addDeserializer(MetadataPolicy.class, new FederationMetadataPolicyDeserializer("scope"));
-        jacksonModule.addDeserializer(JWKSet.class, new JWKSetDeserializer());
-        jacksonModule.addDeserializer(Instant.class, new InstantDeserializer());
-        final SimpleAbstractTypeResolver jacksonResolver = new SimpleAbstractTypeResolver();
-        jacksonResolver.addMapping(Metadata.class, MetadataImpl.class);
-        jacksonModule.setAbstractTypes(jacksonResolver);
-        final ObjectMapper objectMapper = new ObjectMapper();
-        objectMapper.registerModule(jacksonModule);
-        return objectMapper;
-    }
-
-    public static SignedJWT trustMark(final JWSAlgorithm algorithm, final JWK jwk, final String iss, final String sub,
-            final String id, final Instant exp) {
-        final JWTClaimsSet.Builder builder = new JWTClaimsSet.Builder()
-                .subject(sub)
-                .issuer(iss)
-                .claim("trust_mark_type", id)
-                .issueTime(new Date())
-                .expirationTime(exp == null ? null : Date.from(exp));
-        return signedJwt(algorithm, jwk, "trust-mark+jwt", builder.build());
-    }
-
-    public static SignedJWT signedJwt(final JWSAlgorithm algorithm, final JWK jwk, final String type,
-            final JWTClaimsSet claimsSet) {
-        return signedJwt(algorithm, jwk,
-                new JWSHeader.Builder(algorithm).type(new JOSEObjectType(type)).keyID(jwk.getKeyID()).build(),
-                claimsSet);
-    }
-
-    public static SignedJWT signedJwt(final JWSAlgorithm algorithm, final JWK jwk, final JWSHeader header,
-            final JWTClaimsSet claimsSet) {
-        final SignedJWT signedJwt = new SignedJWT(header, claimsSet);
-        try {
-            if (JWSAlgorithm.Family.RSA.contains(algorithm)) {
-                signedJwt.sign(new RSASSASigner(jwk.toRSAKey()));
-            } else {
-                signedJwt.sign(new ECDSASigner(jwk.toECKey()));
-            }
-            return signedJwt;
-        } catch (final JOSEException e) {
-            Assert.fail("Could not construct signed JWT", e);
-        }
-        return null;
-    }
-
-}
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/AuthorizeFlowAutomaticRegistrationTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/AuthorizeFlowAutomaticRegistrationTest.java
index 1ecfa46..e015429 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/AuthorizeFlowAutomaticRegistrationTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/AuthorizeFlowAutomaticRegistrationTest.java
@@ -53,11 +53,11 @@ import com.nimbusds.openid.connect.sdk.AuthenticationResponse;
 import com.nimbusds.openid.connect.sdk.AuthenticationSuccessResponse;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 
-import net.shibboleth.idp.plugin.oidc.op.oidfed.TrustChainTestUtil;
 import net.shibboleth.idp.plugin.oidc.op.profile.flow.AuthorizeFlowTest;
 import net.shibboleth.idp.plugin.oidc.op.profile.logic.DefaultPushedAuthorizationRequestUriSerializationFunction;
 import net.shibboleth.idp.plugin.oidc.op.token.support.AuthorizeCodeClaimsSet;
 import net.shibboleth.idp.session.SessionException;
+import net.shibboleth.oidfed.testing.TrustChainTestUtil;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.collection.Pair;
 import net.shibboleth.shared.component.ComponentInitializationException;
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 fcb2f54..090529d 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
@@ -44,11 +44,11 @@ import com.nimbusds.openid.connect.sdk.federation.registration.ClientRegistratio
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.minidev.json.JSONObject;
-import net.shibboleth.idp.plugin.oidc.op.oidfed.TrustChainTestUtil;
 import net.shibboleth.oidfed.metadata.EntityConfiguration;
 import net.shibboleth.oidfed.metadata.cache.trustmark.DefaultTrustMarkFetchingStrategy;
 import net.shibboleth.oidfed.metadata.impl.EntityConfigurationImpl;
 import net.shibboleth.oidfed.metadata.payload.EntityConfigurationPayload;
+import net.shibboleth.oidfed.testing.TrustChainTestUtil;
 import net.shibboleth.shared.collection.CollectionSupport;
 
 /**
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 1a2a3d1..92ce2f8 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
@@ -52,10 +52,10 @@ import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 
 import net.minidev.json.JSONObject;
 import net.minidev.json.parser.JSONParser;
-import net.shibboleth.idp.plugin.oidc.op.oidfed.TrustChainTestUtil;
 import net.shibboleth.oidc.metadata.impl.BaseStorageServiceClientInformationComponent;
 import net.shibboleth.oidfed.messaging.impl.ExplicitClientRegistrationResponse;
 import net.shibboleth.oidfed.metadata.EntityStatement;
+import net.shibboleth.oidfed.testing.TrustChainTestUtil;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.collection.Pair;
 
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/ResolveEntityFlowTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/ResolveEntityFlowTest.java
index a0a36f4..edf6771 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/ResolveEntityFlowTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/ResolveEntityFlowTest.java
@@ -39,10 +39,10 @@ import com.nimbusds.oauth2.sdk.Response;
 import com.nimbusds.oauth2.sdk.Scope;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 
-import net.shibboleth.idp.plugin.oidc.op.oidfed.TrustChainTestUtil;
 import net.shibboleth.oidc.profile.messaging.JSONErrorResponse;
 import net.shibboleth.oidfed.messaging.impl.ResolveEntityResponse;
 import net.shibboleth.oidfed.metadata.EntityStatement;
+import net.shibboleth.oidfed.testing.TrustChainTestUtil;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.minidev.json.JSONObject;
 
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/UserInfoFlowAutomaticRegistrationTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/UserInfoFlowAutomaticRegistrationTest.java
index 48a6314..4004944 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/UserInfoFlowAutomaticRegistrationTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/UserInfoFlowAutomaticRegistrationTest.java
@@ -41,11 +41,11 @@ import com.nimbusds.openid.connect.sdk.UserInfoSuccessResponse;
 import com.nimbusds.openid.connect.sdk.claims.UserInfo;
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientMetadata;
 
-import net.shibboleth.idp.plugin.oidc.op.oidfed.TrustChainTestUtil;
 import net.shibboleth.idp.plugin.oidc.op.oidfed.support.ClaimsSetExtensionSupport;
 import net.shibboleth.idp.plugin.oidc.op.profile.flow.UserInfoTest;
 import net.shibboleth.idp.plugin.oidc.op.token.support.AccessTokenClaimsSet;
 import net.shibboleth.idp.plugin.oidc.op.token.support.TokenClaimsSet;
+import net.shibboleth.oidfed.testing.TrustChainTestUtil;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.security.DataSealerException;
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/cache/EntityConfigurationMetadataCacheTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/cache/EntityConfigurationMetadataCacheTest.java
index 2902952..b4c7829 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/cache/EntityConfigurationMetadataCacheTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/cache/EntityConfigurationMetadataCacheTest.java
@@ -47,7 +47,6 @@ import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.jwt.PlainJWT;
 import com.nimbusds.jwt.SignedJWT;
 
-import net.shibboleth.idp.plugin.oidc.op.oidfed.TrustChainTestUtil;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
 import net.shibboleth.oidfed.flow.AbstractFederationFlowTest;
@@ -57,6 +56,7 @@ import net.shibboleth.oidfed.metadata.EntityConfiguration;
 import net.shibboleth.oidfed.metadata.cache.ResponseContainerExpirationCriterion;
 import net.shibboleth.oidfed.metadata.cache.SubjectEntityIDCriterion;
 import net.shibboleth.oidfed.metadata.cache.configuration.EntityConfigurationContainer;
+import net.shibboleth.oidfed.testing.TrustChainTestUtil;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.resolver.CriteriaSet;
 
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/cache/TrustChainMetadataCacheTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/cache/TrustChainMetadataCacheTest.java
index 0bf7878..08603e3 100644
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/cache/TrustChainMetadataCacheTest.java
+++ b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/profile/flow/oidfed/cache/TrustChainMetadataCacheTest.java
@@ -31,7 +31,6 @@ import com.nimbusds.jose.JWSAlgorithm;
 import com.nimbusds.jose.jwk.JWKSet;
 import com.nimbusds.jwt.JWTClaimsSet;
 
-import net.shibboleth.idp.plugin.oidc.op.oidfed.TrustChainTestUtil;
 import net.shibboleth.oidc.metadata.cache.MetadataCache;
 import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
 import net.shibboleth.oidfed.flow.AbstractFederationFlowTest;
@@ -40,6 +39,7 @@ import net.shibboleth.oidfed.metadata.cache.IssuerEntityIDCriterion;
 import net.shibboleth.oidfed.metadata.cache.ResponseContainerExpirationCriterion;
 import net.shibboleth.oidfed.metadata.cache.SubjectEntityIDCriterion;
 import net.shibboleth.oidfed.metadata.cache.trustchain.TrustChainsContainer;
+import net.shibboleth.oidfed.testing.TrustChainTestUtil;
 import net.shibboleth.shared.resolver.CriteriaSet;
 
 /**

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


More information about the commits mailing list