[java-idp-plugin-oidc-op-oidfed] 01/03: Deleted obsolete test case from here
Codeberg
noreply at shibboleth.net
Fri Sep 18 07:58:57 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/3c0887eeb08c8305ae80a1f5cd46d873837a7df0
commit 3c0887eeb08c8305ae80a1f5cd46d873837a7df0
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Fri Sep 18 10:02:10 2026 +0300
Deleted obsolete test case from here
- Moved to java-oidfed-common
---
.../DefaultTrustChainFetchingStrategyTest.java | 365 ---------------------
1 file changed, 365 deletions(-)
diff --git a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/oidfed/metadata/cache/trustchain/DefaultTrustChainFetchingStrategyTest.java b/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/oidfed/metadata/cache/trustchain/DefaultTrustChainFetchingStrategyTest.java
deleted file mode 100644
index 9e9caec..0000000
--- a/idp-oidfed-op-impl/src/test/java/net/shibboleth/idp/plugin/oidc/op/oidfed/metadata/cache/trustchain/DefaultTrustChainFetchingStrategyTest.java
+++ /dev/null
@@ -1,365 +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.metadata.cache.trustchain;
-
-import static org.mockito.Mockito.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.time.Duration;
-import java.time.Instant;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import net.shibboleth.oidc.metadata.cache.MetadataCache;
-import net.shibboleth.oidc.metadata.cache.MetadataCacheException;
-import net.shibboleth.oidfed.metadata.EntityConfiguration;
-import net.shibboleth.oidfed.metadata.SubordinateStatement;
-import net.shibboleth.oidfed.metadata.cache.PreSelectedTrustChainCriterion;
-import net.shibboleth.oidfed.metadata.cache.configuration.EntityConfigurationContainer;
-import net.shibboleth.oidfed.metadata.cache.local.LocalKeyContainer;
-import net.shibboleth.oidfed.metadata.cache.subordinate.SubordinateStatementCacheIdentifier;
-import net.shibboleth.oidfed.metadata.cache.subordinate.SubordinateStatementContainer;
-import net.shibboleth.oidfed.metadata.cache.trustchain.DefaultTrustChainFetchingStrategy;
-import net.shibboleth.oidfed.metadata.cache.trustchain.TrustChainsContainer;
-import net.shibboleth.oidfed.metadata.payload.EntityConfigurationPayload;
-import net.shibboleth.oidfed.metadata.util.EntityStatementHelper;
-import net.shibboleth.shared.collection.CollectionSupport;
-import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.resolver.CriteriaSet;
-
-/**
- * Unit tests for {@link DefaultTrustChainFetchingStrategy}
- */
- at SuppressWarnings("null")
-public class DefaultTrustChainFetchingStrategyTest {
-
- DefaultTrustChainFetchingStrategy function;
-
- Function<CriteriaSet, String> criteriaToSubjectEntityIdStrategy;
- MetadataCache<EntityConfigurationContainer> entityConfigurationCache;
- MetadataCache<SubordinateStatementContainer> subordinateStatementCache;
- MetadataCache<Map<String, LocalKeyContainer>> localTrustAnchorsCache;
- Function<CriteriaSet, Duration> criteriaToValidContainerLifetimeStrategy;
- Function<CriteriaSet, Duration> criteriaToInvalidContainerLifetimeStrategy;
-
- @SuppressWarnings("unchecked")
- public void initMocks() {
- criteriaToSubjectEntityIdStrategy = mock(Function.class);
- entityConfigurationCache = mock(MetadataCache.class);
- subordinateStatementCache = mock(MetadataCache.class);
- localTrustAnchorsCache = mock(MetadataCache.class);
- criteriaToValidContainerLifetimeStrategy = mock(Function.class);
- criteriaToInvalidContainerLifetimeStrategy = mock(Function.class);
- }
-
- @BeforeMethod
- public void setup() {
- initMocks();
- function = new DefaultTrustChainFetchingStrategy();
- function.setCriteriaToSubjectEntityIdStrategy(criteriaToSubjectEntityIdStrategy);
- function.setEntityConfigurationCache(entityConfigurationCache);
- function.setSubordinateStatementCache(subordinateStatementCache);
- function.setLocalTrustAnchorsCache(localTrustAnchorsCache);
- function.setCriteriaToValidContainerLifetimeStrategy(criteriaToValidContainerLifetimeStrategy);
- function.setCriteriaToInvalidContainerLifetimeStrategy(criteriaToInvalidContainerLifetimeStrategy);
- function.setId("mockFunction");
- try {
- function.initialize();
- } catch (ComponentInitializationException e) {
- Assert.fail("Could not initialize the function", e);
- }
- }
-
- @Test
- public void nullCriteria_returnsNull() {
- Assert.assertEquals(function.apply(null), null);
- }
-
- @Test
- public void noValidLifetimeCriteria_returnsNull() {
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(null);
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- Assert.assertEquals(function.apply(new CriteriaSet()), null);
- }
-
- @Test
- public void noInvalidLifetimeCriteria_returnsNull() {
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(null);
- Assert.assertEquals(function.apply(new CriteriaSet()), null);
- }
-
- @Test
- public void noEntityConfigurationResolved_returnsNull() throws MetadataCacheException {
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(entityConfigurationCache.get(any())).thenReturn(CollectionSupport.emptyList());
- Assert.assertEquals(function.apply(new CriteriaSet()), null);
- }
-
- @Test
- public void entityConfigurationException_returnsNull() throws MetadataCacheException {
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(entityConfigurationCache.get(any())).thenThrow(MetadataCacheException.class);
- Assert.assertEquals(function.apply(new CriteriaSet()), null);
- }
-
- @Test
- public void entityConfigurationNoHints_returnsNull() throws MetadataCacheException {
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer("mockEntityId", CollectionSupport.emptyList());
- when(entityConfigurationCache.get(any())).thenReturn(CollectionSupport.listOf(ecContainer));
- Assert.assertEquals(function.apply(new CriteriaSet()), null);
- }
-
- @Test
- public void entityConfigurationOneUnresolvableHint_returnsEmptyContainer() throws MetadataCacheException {
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer("mockEntityId", CollectionSupport.listOf("https://federation.local/immediate"));
- when(entityConfigurationCache.get(any())).thenReturn(CollectionSupport.listOf(ecContainer));
- assertEmptyResult(function.apply(new CriteriaSet()));
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void entityConfigurationOneResolvableHint_returnsContainerWithOneChain() throws MetadataCacheException {
- final String leaf = "https://federation.local/leaf";
- final String anchor = "https://federation.local/immediate";
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer(leaf, CollectionSupport.listOf(anchor, "https://federation.local/other"));
- final EntityConfigurationContainer authorityContainer =
- ecContainer(anchor, CollectionSupport.emptyList());
- when(entityConfigurationCache.get(any()))
- .thenReturn(CollectionSupport.listOf(ecContainer), CollectionSupport.listOf(authorityContainer),
- CollectionSupport.emptyList());
- final SubordinateStatementContainer ssContainer = ssContainer(leaf, anchor);
- when(subordinateStatementCache.get(any())).thenReturn(CollectionSupport.listOf(ssContainer),
- CollectionSupport.emptyList());
- final TrustChainsContainer result = function.apply(new CriteriaSet());
- Assert.assertNotNull(result);
- assert result != null;
- Assert.assertEquals(result.getTrustChains().size(), 1);
- Assert.assertEquals(EntityStatementHelper.getEntityIds(result.getTrustChains().get(0)),
- List.of(leaf, anchor));
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void entityConfigurationOneResolvableLocalAuthorityWithBrokenHint_returnsContainerWithOneChain()
- throws MetadataCacheException {
- final String leaf = "https://federation.local/leaf";
- final String immediate = "https://federation.local/immediate";
- final String anchor = "https://federation.local/anchor";
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer(leaf, CollectionSupport.listOf(immediate, "https://federation.local/other"));
- final EntityConfigurationContainer immediateContainer =
- ecContainer(immediate, CollectionSupport.listOf(anchor));
- when(entityConfigurationCache.get(any()))
- .thenReturn(CollectionSupport.listOf(ecContainer), CollectionSupport.listOf(immediateContainer),
- CollectionSupport.emptyList());
- final SubordinateStatementContainer ssContainer = ssContainer(leaf, immediate);
- when(subordinateStatementCache.get(any())).thenReturn(CollectionSupport.listOf(ssContainer),
- CollectionSupport.emptyList());
- when(localTrustAnchorsCache.get(any())).thenReturn(
- CollectionSupport.listOf(CollectionSupport.singletonMap(immediate, mock(LocalKeyContainer.class))));
- final TrustChainsContainer result = function.apply(new CriteriaSet());
- Assert.assertNotNull(result);
- assert result != null;
- Assert.assertEquals(result.getTrustChains().size(), 1);
- Assert.assertEquals(EntityStatementHelper.getEntityIds(result.getTrustChains().get(0)),
- List.of(leaf, immediate));
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void entityConfigurationOneResolvableLocalAuthorityWithWorkingHint_returnsContainerWithTwoChains()
- throws MetadataCacheException {
- final String leaf = "https://federation.local/leaf";
- final String immediate = "https://federation.local/immediate";
- final String anchor = "https://federation.local/anchor";
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer(leaf, CollectionSupport.listOf(immediate));
- final EntityConfigurationContainer immediateContainer =
- ecContainer(immediate, CollectionSupport.listOf(anchor));
- final EntityConfigurationContainer authorityContainer =
- ecContainer(anchor, CollectionSupport.emptyList());
- when(entityConfigurationCache.get(any()))
- .thenReturn(CollectionSupport.listOf(ecContainer), CollectionSupport.listOf(immediateContainer),
- CollectionSupport.listOf(authorityContainer), CollectionSupport.emptyList());
- final SubordinateStatementContainer ssContainer1 = ssContainer(leaf, immediate);
- final SubordinateStatementContainer ssContainer2 = ssContainer(immediate, anchor);
- when(subordinateStatementCache.get(any())).thenReturn(CollectionSupport.listOf(ssContainer1),
- CollectionSupport.listOf(ssContainer2), CollectionSupport.emptyList());
- when(localTrustAnchorsCache.get(any())).thenReturn(
- CollectionSupport.listOf(CollectionSupport.singletonMap(immediate, mock(LocalKeyContainer.class))),
- CollectionSupport.emptyList());
- final TrustChainsContainer result = function.apply(new CriteriaSet());
- Assert.assertNotNull(result);
- assert result != null;
- Assert.assertEquals(result.getTrustChains().size(), 2);
- Assert.assertEquals(EntityStatementHelper.getEntityIds(result.getTrustChains().get(0)),
- List.of(leaf, immediate));
- Assert.assertEquals(EntityStatementHelper.getEntityIds(result.getTrustChains().get(1)),
- List.of(leaf, immediate, anchor));
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void entityConfigurationOneResolvableHint_matchPreSelected_returnsContainerWithOneChain()
- throws MetadataCacheException {
- final String leaf = "https://federation.local/leaf";
- final String anchor = "https://federation.local/immediate";
- final PreSelectedTrustChainCriterion preSelectedCriterion =
- new PreSelectedTrustChainCriterion(CollectionSupport.listOf(leaf, anchor));
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer(leaf, CollectionSupport.listOf(anchor, "https://federation.local/other"));
- final EntityConfigurationContainer authorityContainer =
- ecContainer(anchor, CollectionSupport.emptyList());
- when(entityConfigurationCache.get(any()))
- .thenReturn(CollectionSupport.listOf(ecContainer), CollectionSupport.listOf(authorityContainer),
- CollectionSupport.emptyList());
- final SubordinateStatementContainer ssContainer = ssContainer(leaf, anchor);
- when(subordinateStatementCache.get(any())).thenReturn(CollectionSupport.listOf(ssContainer),
- CollectionSupport.emptyList());
- final TrustChainsContainer result = function.apply(new CriteriaSet(preSelectedCriterion));
- Assert.assertNotNull(result);
- assert result != null;
- Assert.assertEquals(result.getTrustChains().size(), 1);
- Assert.assertEquals(EntityStatementHelper.getEntityIds(result.getTrustChains().get(0)),
- List.of(leaf, anchor));
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void entityConfigurationOneResolvableHint_notMatchingPreSelected_returnsEmptyContainer()
- throws MetadataCacheException {
- final String leaf = "https://federation.local/leaf";
- final String anchor = "https://federation.local/immediate";
- final PreSelectedTrustChainCriterion preSelectedCriterion =
- new PreSelectedTrustChainCriterion(CollectionSupport.listOf(leaf, "https://federation.local/not"));
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer(leaf, CollectionSupport.listOf(anchor, "https://federation.local/other"));
- final EntityConfigurationContainer authorityContainer =
- ecContainer(anchor, CollectionSupport.emptyList());
- when(entityConfigurationCache.get(any()))
- .thenReturn(CollectionSupport.listOf(ecContainer), CollectionSupport.listOf(authorityContainer),
- CollectionSupport.emptyList());
- final SubordinateStatementContainer ssContainer = ssContainer(leaf, anchor);
- when(subordinateStatementCache.get(any())).thenReturn(CollectionSupport.listOf(ssContainer),
- CollectionSupport.emptyList());
- assertEmptyResult(function.apply(new CriteriaSet(preSelectedCriterion)));
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void entityConfigurationTwoResolvableHints_returnsContainerWithTwoChains() throws MetadataCacheException {
- final String leaf = "https://federation.local/leaf";
- final String anchor1 = "https://federation.local/immediate1";
- final String anchor2 = "https://federation.local/immediate2";
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer(leaf, CollectionSupport.listOf(anchor1, anchor2));
- final EntityConfigurationContainer authorityContainer1 =
- ecContainer(anchor1, CollectionSupport.emptyList());
- final EntityConfigurationContainer authorityContainer2 =
- ecContainer(anchor2, CollectionSupport.emptyList());
- when(entityConfigurationCache.get(any()))
- .thenReturn(CollectionSupport.listOf(ecContainer), CollectionSupport.listOf(authorityContainer1),
- CollectionSupport.listOf(authorityContainer2));
- final SubordinateStatementContainer ssContainer1 = ssContainer(leaf, anchor1);
- final SubordinateStatementContainer ssContainer2 = ssContainer(leaf, anchor2);
- when(subordinateStatementCache.get(any())).thenReturn(CollectionSupport.listOf(ssContainer1),
- CollectionSupport.listOf(ssContainer2));
- final TrustChainsContainer result = function.apply(new CriteriaSet());
- Assert.assertNotNull(result);
- assert result != null;
- Assert.assertEquals(result.getTrustChains().size(), 2);
- Assert.assertEquals(EntityStatementHelper.getEntityIds(result.getTrustChains().get(0)),
- List.of(leaf, anchor1));
- Assert.assertEquals(EntityStatementHelper.getEntityIds(result.getTrustChains().get(1)),
- List.of(leaf, anchor2));
- }
-
- @SuppressWarnings("unchecked")
- @Test
- public void entityConfigurationAuthorityLoop_returnsEmptyContantainer() throws MetadataCacheException {
- final String leaf = "https://federation.local/leaf";
- final String anchor1 = "https://federation.local/immediate1";
- final String anchor2 = "https://federation.local/immediate2";
- when(criteriaToValidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- when(criteriaToInvalidContainerLifetimeStrategy.apply(any())).thenReturn(Duration.ofMinutes(5));
- final EntityConfigurationContainer ecContainer =
- ecContainer(leaf, CollectionSupport.listOf(anchor1));
- final EntityConfigurationContainer authorityContainer1 =
- ecContainer(anchor1, CollectionSupport.listOf(anchor2));
- final EntityConfigurationContainer authorityContainer2 =
- ecContainer(anchor2, CollectionSupport.listOf(anchor1));
- when(entityConfigurationCache.get(any()))
- .thenReturn(CollectionSupport.listOf(ecContainer), CollectionSupport.listOf(authorityContainer1),
- CollectionSupport.listOf(authorityContainer2));
- final SubordinateStatementContainer ssContainer1 = ssContainer(leaf, anchor1);
- final SubordinateStatementContainer ssContainer2 = ssContainer(anchor1, anchor2);
- final SubordinateStatementContainer ssContainer3 = ssContainer(anchor2, anchor1);
- when(subordinateStatementCache.get(any())).thenReturn(CollectionSupport.listOf(ssContainer1),
- CollectionSupport.listOf(ssContainer2), CollectionSupport.listOf(ssContainer3));
- assertEmptyResult(function.apply(new CriteriaSet()));
- }
-
- protected void assertEmptyResult(final TrustChainsContainer container) {
- Assert.assertNotNull(container);
- Assert.assertEquals(container.getTrustChains(), CollectionSupport.emptyList());
- }
-
- protected EntityConfigurationContainer ecContainer(final String id, final List<String> authorityHints) {
- final Instant expiration = Instant.now().plusSeconds(300);
- final EntityConfiguration configuration = mock(EntityConfiguration.class);
- final EntityConfigurationPayload payload = mock(EntityConfigurationPayload.class);
- when(payload.getAuthorityHints()).thenReturn(authorityHints);
- when(configuration.getParsedPayload()).thenReturn(payload);
- when(configuration.getSubject()).thenReturn(id);
- return new EntityConfigurationContainer(id, configuration, expiration, expiration);
- }
-
- protected SubordinateStatementContainer ssContainer(final String subject, final String issuer) {
- final Instant expiration = Instant.now().plusSeconds(300);
- final SubordinateStatement statement = mock(SubordinateStatement.class);
- when(statement.getSubject()).thenReturn(subject);
- when(statement.getIssuer()).thenReturn(issuer);
- return new SubordinateStatementContainer(
- new SubordinateStatementCacheIdentifier(issuer, subject), statement, expiration, expiration);
- }
-}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list