[java-oidc-common] branch main updated: Return an empty list when no criteria supplied to provider resolver

Phil Smart philip.smart at jisc.ac.uk
Tue May 2 09:25:24 UTC 2023


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

philsmart pushed a commit to branch main
in repository java-oidc-common.

View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=30cc6c5322f2f914fb611d06724fc8cc20edd7d5

The following commit(s) were added to refs/heads/main by this push:
     new 30cc6c5  Return an empty list when no criteria supplied to provider resolver
30cc6c5 is described below

commit 30cc6c5322f2f914fb611d06724fc8cc20edd7d5
Author: Phil Smart <philip.smart at jisc.ac.uk>
AuthorDate: Tue May 2 10:25:21 2023 +0100

    Return an empty list when no criteria supplied to provider resolver
    
     - Avoids unwanted error logging
     - Provides the same semantics. The chaining resolver will iterate
    through all the resolvers either way
---
 .../impl/ProviderMetadataCredentialResolver.java           |  4 ++--
 .../impl/BaseMetadataCredentialResolverTest.java           | 11 ++++++++---
 .../impl/ClientInformationCredentialResolverTest.java      | 14 --------------
 .../impl/ProviderMetadataCredentialResolverTest.java       | 11 ++++++++---
 4 files changed, 18 insertions(+), 22 deletions(-)

diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
index f633c8c..b54ba5d 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolver.java
@@ -114,8 +114,8 @@ public class ProviderMetadataCredentialResolver extends BasicJOSEObjectCredentia
             return resolveFromMetadata(criteriaSet, metadata);
             
         } else {
-            throw new ResolverException("Criteria did not contain a ProviderMetadataCriterion " 
-                    + "could not perform resolution");
+            log.debug("Criteria did not contain a ProviderMetadataCriterion could not perform resolution");
+            return Collections.emptySet();
         }
     }
     
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/BaseMetadataCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/BaseMetadataCredentialResolverTest.java
index 0ce9264..354e7dd 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/BaseMetadataCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/BaseMetadataCredentialResolverTest.java
@@ -57,7 +57,6 @@ import net.shibboleth.oidc.security.jose.criterion.KeyIdCriterion;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.component.InitializableComponent;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
 /**
  * Base unit test for the credential resolvers fetching the credentials from metadata.
@@ -129,11 +128,17 @@ public abstract class BaseMetadataCredentialResolverTest<T extends BasicJOSEObje
      */
     protected abstract CriteriaSet buildInitialCriteriaSet() throws Exception;
 
-    @Test(expectedExceptions = ResolverException.class)
+    @Test
     public void testFail_EmptyCriteria() throws Exception {
         ((InitializableComponent) resolver).initialize();
         criteria = new CriteriaSet();        
-        resolver.resolve(criteria);
+        final Iterable<Credential> creds = resolver.resolve(criteria);
+        
+        assertNotNull(creds);
+        final List<Credential> credsList = new ArrayList<>();
+        creds.forEach(credsList::add);        
+        // No keys
+        assertEquals(credsList.size(), 0);
     }
 
     @Test
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
index a2509de..3c5a6db 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ClientInformationCredentialResolverTest.java
@@ -86,20 +86,6 @@ public class ClientInformationCredentialResolverTest extends BaseMetadataCredent
         assertEquals(credsList.size(), 0);
     }
 
-    @Override
-    @Test
-    public void testFail_EmptyCriteria() throws Exception {
-        ((InitializableComponent) resolver).initialize();
-        criteria = new CriteriaSet();        
-        final Iterable<Credential> creds = resolver.resolve(criteria);
-        
-        assertNotNull(creds);
-        final List<Credential> credsList = new ArrayList<>();
-        creds.forEach(credsList::add);        
-        // No keys
-        assertEquals(credsList.size(), 0);
-    }
-
     @Test
     public void testSuccess_Secret() throws Exception {
         ((InitializableComponent) resolver).initialize();
diff --git a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
index 86a8dfd..c710625 100644
--- a/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
+++ b/oidc-common-crypto-impl/src/test/java/net/shibboleth/oidc/security/credential/impl/ProviderMetadataCredentialResolverTest.java
@@ -17,6 +17,10 @@
 
 package net.shibboleth.oidc.security.credential.impl;
 
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+
+import org.opensaml.security.credential.Credential;
 import org.springframework.core.io.ClassPathResource;
 import org.testng.annotations.Test;
 
@@ -30,7 +34,6 @@ import net.shibboleth.oidc.security.jose.criterion.ClientInformationCriterion;
 import net.shibboleth.oidc.security.jose.criterion.ProviderMetadataCriterion;
 import net.shibboleth.utilities.java.support.component.InitializableComponent;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
 /**
  * Unit tests for {@link ProviderMetadataCredentialResolver}.
@@ -59,13 +62,15 @@ public class ProviderMetadataCredentialResolverTest extends BaseMetadataCredenti
         return criteria;
     }
         
-    @Test(expectedExceptions = ResolverException.class)
+    @Test
     public void testFail_IncorrectCriteria() throws Exception {
         ((InitializableComponent) resolver).initialize();
         // Needs ProviderMetadataCriterion or ClientInformationCriterion
         criteria = new CriteriaSet();
         criteria.add(new ClientInformationCriterion(new OIDCClientInformation(new ClientID("mockClientId"),
                 new OIDCClientMetadata())));
-        resolver.resolve(criteria);
+        final Iterable<Credential> creds = resolver.resolve(criteria);
+        assertNotNull(creds);
+        assertFalse(creds.iterator().hasNext());
     }
 }

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


More information about the commits mailing list