[java-opensaml COMMIT] in /trunk: opensaml-saml-api/src/main/java/org/opensaml/saml/criterion/ArtifactSourceIDCriteri...

noreply at shibboleth.net noreply at shibboleth.net
Tue Oct 6 22:13:37 EDT 2015


Author: putmanb
Date: Tue Oct  6 22:13:36 2015
New Revision: 4346

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4346&view=rev
Log:
OSJ-130: Create metadata index impl for artifact sourceID

Also includes new ArtifactSourceIDCriterion for query input.

Added:
    trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/criterion/ArtifactSourceIDCriterion.java   (with props)
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/ArtifactSourceIDMetadataIndex.java   (with props)
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/ArtifactSourceIDMetadataIndexTest.java   (with props)
Modified:
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexingTest.java

Modified: trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexingTest.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexingTest.java?rev=4346&r1=4345&r2=4346&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexingTest.java	(original)
+++ trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexingTest.java	Tue Oct  6 22:13:36 2015
@@ -19,12 +19,14 @@
 
 import java.io.File;
 import java.net.URL;
+import java.security.MessageDigest;
 import java.util.HashSet;
 
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
 import org.opensaml.core.xml.XMLObjectBaseTestCase;
+import org.opensaml.saml.criterion.ArtifactSourceIDCriterion;
 import org.opensaml.saml.criterion.EntityRoleCriterion;
 import org.opensaml.saml.metadata.resolver.impl.AbstractBatchMetadataResolver;
 import org.opensaml.saml.metadata.resolver.impl.FilesystemMetadataResolver;
@@ -33,6 +35,7 @@
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.opensaml.saml.saml2.metadata.IDPSSODescriptor;
 import org.opensaml.saml.saml2.metadata.SPSSODescriptor;
+import org.opensaml.security.crypto.JCAConstants;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -48,6 +51,7 @@
     private File mdFile;
 
     private String entityID;
+    private byte[] artifactSourceID, otherSourceID;
 
     private CriteriaSet criteriaSet;
     
@@ -55,9 +59,15 @@
     protected void setUp() throws Exception {
         entityID = "urn:mace:incommon:washington.edu";
         
+        MessageDigest sha1Digester = MessageDigest.getInstance(JCAConstants.DIGEST_SHA1);
+        artifactSourceID = sha1Digester.digest(entityID.getBytes("UTF-8"));
+        sha1Digester.reset();
+        otherSourceID = sha1Digester.digest("foobar".getBytes("UTF-8"));
+        
         HashSet<MetadataIndex> indexes = new HashSet<>();
         indexes.add(new FunctionDrivenMetadataIndex(new UppercaseEntityIdDescriptorFunction(), new SimpleStringCriteriaFunction()));
         indexes.add(new RoleMetadataIndex());
+        indexes.add(new ArtifactSourceIDMetadataIndex());
 
         URL mdURL = FilesystemMetadataResolverTest.class
                 .getResource("/data/org/opensaml/saml/saml2/metadata/InCommon-metadata.xml");
@@ -70,6 +80,27 @@
         metadataProvider.initialize();
         
         criteriaSet = new CriteriaSet();
+    }
+    
+    @Test
+    public void testResolveByArtifactSourceID() throws ResolverException {
+        //Empty criteria set.  Not an error, just no result.
+        criteriaSet.clear();
+        EntityDescriptor descriptor = metadataProvider.resolveSingle(criteriaSet);
+        Assert.assertNull(descriptor);
+        
+        //Criteria with non-matching criterion value. Not an error, just no result.
+        criteriaSet.clear();
+        criteriaSet.add(new ArtifactSourceIDCriterion(otherSourceID));
+        descriptor = metadataProvider.resolveSingle(criteriaSet);
+        Assert.assertNull(descriptor);
+        
+        //Criteria with matching criterion value. This should be resolved from the index.
+        criteriaSet.clear();
+        criteriaSet.add(new ArtifactSourceIDCriterion(artifactSourceID));
+        descriptor = metadataProvider.resolveSingle(criteriaSet);
+        Assert.assertNotNull(descriptor, "Retrieved entity descriptor was null");
+        Assert.assertEquals(descriptor.getEntityID(), entityID, "Entity's ID does not match requested ID");
     }
     
     @Test



More information about the commits mailing list