[java-identity-provider] 03/03: IDP-1450 Use standard support to convert from attribute to boolean

Rod Widdowson rdw at steadingsoftware.com
Mon Jul 22 10:36:07 EDT 2019


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

rdw pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=04f0b053345d9c01b95239bc96b869255aeb9bab

commit 04f0b053345d9c01b95239bc96b869255aeb9bab
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon Jul 22 15:27:49 2019 +0100

    IDP-1450 Use standard support to convert from attribute to boolean
    
    https://issues.shibboleth.net/jira/browse/IDP-1450
---
 .../metadata/AbstractMetadataProviderParser.java   |  8 ++--
 .../metadata/TLSSocketFactoryFactoryBean.java      |  5 ++-
 .../filter/impl/EntityRoleFilterParser.java        |  5 ++-
 .../filter/impl/NameIDFormatFilterParser.java      |  4 +-
 .../filter/impl/PredicateFilterParser.java         |  6 +--
 .../filter/impl/SignatureValidationParser.java     |  3 +-
 .../AbstractDynamicMetadataProviderParser.java     |  6 +--
 .../AbstractReloadingMetadataProviderParser.java   |  5 ++-
 .../impl/FileBackedHTTPMetadataProviderParser.java |  3 +-
 .../impl/InlineMetadataProviderParser.java         |  5 ++-
 .../FileBackedHTTPMetadataProviderParserTest.java  | 52 ++++++++++++++++++++++
 .../metadata/FilesystemMetadataParserTest.java     | 19 ++++++++
 .../metadata/InlineMetadataParserTest.java         | 20 +++++++++
 .../metadata/fileBackedHTTPEntityBadIFBF.xml       | 15 +++++++
 .../fileBackedHTTPEntityDisRegardTLSBad.xml        | 16 +++++++
 .../spring/relyingparty/metadata/fileBadRVPO.xml   | 13 ++++++
 .../relyingparty/metadata/inLineEntityBadRVPO.xml  | 21 +++++++++
 17 files changed, 185 insertions(+), 21 deletions(-)

diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java
index 56b32f5..890a0d7 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java
@@ -167,12 +167,12 @@ public abstract class AbstractMetadataProviderParser extends AbstractSingleBeanD
 
         if (isPresentNotChaining(element, "failFastInitialization")) {
             builder.addPropertyValue("failFastInitialization",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "failFastInitialization")));
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "failFastInitialization")));
         }
 
         if (isPresentNotChaining(element, "requireValidMetadata")) {
             builder.addPropertyValue("requireValidMetadata",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "requireValidMetadata")));
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "requireValidMetadata")));
         }
 
         processPredicateOptions(element, parserContext, builder);
@@ -208,12 +208,12 @@ public abstract class AbstractMetadataProviderParser extends AbstractSingleBeanD
         
         if (isPresentNotChaining(element, "satisfyAnyPredicates")) {
             builder.addPropertyValue("satisfyAnyPredicates",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "satisfyAnyPredicates")));
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "satisfyAnyPredicates")));
         }
 
         if (isPresentNotChaining(element, "useDefaultPredicateRegistry")) {
             builder.addPropertyValue("useDefaultPredicateRegistry",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "useDefaultPredicateRegistry")));
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "useDefaultPredicateRegistry")));
         }
 
         if (isPresentNotChaining(element, "criterionPredicateRegistryRef")) {
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/TLSSocketFactoryFactoryBean.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/TLSSocketFactoryFactoryBean.java
index d18c341..d8f11a3 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/TLSSocketFactoryFactoryBean.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/TLSSocketFactoryFactoryBean.java
@@ -19,8 +19,6 @@ package net.shibboleth.idp.profile.spring.relyingparty.metadata;
 
 import javax.annotation.Nullable;
 
-import net.shibboleth.utilities.java.support.httpclient.HttpClientSupport;
-
 import org.apache.http.client.HttpClient;
 import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
 import org.opensaml.security.httpclient.HttpClientSecurityParameters;
@@ -29,6 +27,8 @@ import org.opensaml.security.trust.TrustEngine;
 import org.opensaml.security.x509.X509Credential;
 import org.springframework.beans.factory.config.AbstractFactoryBean;
 
+import net.shibboleth.utilities.java.support.httpclient.HttpClientSupport;
+
 /**
  * A factory bean for producing instances of {@link LayeredConnectionSocketFactory} for use in {@link HttpClient}.
  */
@@ -70,6 +70,7 @@ public class TLSSocketFactoryFactoryBean extends AbstractFactoryBean {
         connectionDisregardTLSCertificate = disregard;
     }
 
+
     /** {@inheritDoc} */
     @Override public Class getObjectType() {
         return LayeredConnectionSocketFactory.class;
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/EntityRoleFilterParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/EntityRoleFilterParser.java
index cf037f2..1216b85 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/EntityRoleFilterParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/EntityRoleFilterParser.java
@@ -23,6 +23,7 @@ import java.util.List;
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.AbstractMetadataProviderParser;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
@@ -63,12 +64,12 @@ public class EntityRoleFilterParser extends AbstractSingleBeanDefinitionParser {
 
         if (element.hasAttributeNS(null, "removeRolelessEntityDescriptors")) {
             builder.addPropertyValue("removeRolelessEntityDescriptors",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "removeRolelessEntityDescriptors")));
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "removeRolelessEntityDescriptors")));
         }
 
         if (element.hasAttributeNS(null, "removeEmptyEntitiesDescriptors")) {
             builder.addPropertyValue("removeEmptyEntitiesDescriptors",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "removeEmptyEntitiesDescriptors")));
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "removeEmptyEntitiesDescriptors")));
         }
     }
 
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/NameIDFormatFilterParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/NameIDFormatFilterParser.java
index 01c24e4..a7891e6 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/NameIDFormatFilterParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/NameIDFormatFilterParser.java
@@ -23,6 +23,7 @@ import java.util.List;
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.AbstractMetadataProviderParser;
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.ScriptTypeBeanParser;
 import net.shibboleth.utilities.java.support.logic.ScriptedPredicate;
@@ -64,7 +65,8 @@ public class NameIDFormatFilterParser extends AbstractSingleBeanDefinitionParser
         builder.setLazyInit(true);
 
         if (element.hasAttributeNS(null, "removeExistingFormats")) {
-            builder.addPropertyValue("removeExistingFormats", element.getAttributeNS(null, "removeExistingFormats"));
+            builder.addPropertyValue("removeExistingFormats", 
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "removeExistingFormats")));
         }
         
         // Accumulate formats to attach as rule values.
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/PredicateFilterParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/PredicateFilterParser.java
index a682723..92f8241 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/PredicateFilterParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/PredicateFilterParser.java
@@ -69,8 +69,8 @@ public class PredicateFilterParser extends AbstractSingleBeanDefinitionParser {
             final BeanDefinitionBuilder builder) {
 
         if (element.hasAttributeNS(null, "removeEmptyEntitiesDescriptors")) {
-            builder.addPropertyValue("removeEmptyEntitiesDescriptors",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "removeEmptyEntitiesDescriptors")));
+            builder.addPropertyValue("removeEmptyEntitiesDescriptors", SpringSupport.getStringValueAsBoolean(
+                    element.getAttributeNS(null, "removeEmptyEntitiesDescriptors")));
         }
 
         final BeanDefinitionBuilder directionBuilder =
@@ -234,7 +234,7 @@ public class PredicateFilterParser extends AbstractSingleBeanDefinitionParser {
             final BeanDefinitionBuilder builder =
                     BeanDefinitionBuilder.genericBeanDefinition(EntityAttributesPredicate.class);
             builder.addConstructorArgValue(managedTagList);
-            builder.addConstructorArgValue(StringSupport.trimOrNull(element.getAttributeNS(null, "trim")));
+            builder.addConstructorArgValue(SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "trim")));
             return builder;
         }
 
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/SignatureValidationParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/SignatureValidationParser.java
index 297d6e4..e9bfbe5 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/SignatureValidationParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/impl/SignatureValidationParser.java
@@ -126,7 +126,8 @@ public class SignatureValidationParser extends AbstractSingleBeanDefinitionParse
         }
 
         if (element.hasAttributeNS(null, "requireSignedRoot")) {
-            builder.addPropertyValue("requireSignedRoot", element.getAttributeNS(null, "requireSignedRoot"));
+            builder.addPropertyValue("requireSignedRoot", 
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "requireSignedRoot")));
         }
 
         if (element.hasAttributeNS(null, "defaultCriteriaRef")) {
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/AbstractDynamicMetadataProviderParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/AbstractDynamicMetadataProviderParser.java
index bfc50e7..de7580c 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/AbstractDynamicMetadataProviderParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/AbstractDynamicMetadataProviderParser.java
@@ -17,6 +17,7 @@
 
 package net.shibboleth.idp.profile.spring.relyingparty.metadata.impl;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.AbstractMetadataProviderParser;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
@@ -110,7 +111,7 @@ public abstract class AbstractDynamicMetadataProviderParser extends AbstractMeta
 
         if (element.hasAttributeNS(null, "removeIdleEntityData")) {
             builder.addPropertyValue("removeIdleEntityData",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "removeIdleEntityData")));
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "removeIdleEntityData")));
         }
 
         if (element.hasAttributeNS(null, "cleanupTaskInterval")) {
@@ -156,8 +157,7 @@ public abstract class AbstractDynamicMetadataProviderParser extends AbstractMeta
         }
         
         if (element.hasAttributeNS(null, "initializeFromPersistentCacheInBackground")) {
-            builder.addPropertyValue("initializeFromPersistentCacheInBackground",
-                    StringSupport.trimOrNull(
+            builder.addPropertyValue("initializeFromPersistentCacheInBackground", SpringSupport.getStringValueAsBoolean(
                             element.getAttributeNS(null, "initializeFromPersistentCacheInBackground")));
         }
         
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/AbstractReloadingMetadataProviderParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/AbstractReloadingMetadataProviderParser.java
index 94e5d84..2598cf9 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/AbstractReloadingMetadataProviderParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/AbstractReloadingMetadataProviderParser.java
@@ -17,6 +17,7 @@
 
 package net.shibboleth.idp.profile.spring.relyingparty.metadata.impl;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.AbstractMetadataProviderParser;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
@@ -56,8 +57,8 @@ public abstract class AbstractReloadingMetadataProviderParser extends AbstractMe
         }
 
         if (element.hasAttributeNS(null, "resolveViaPredicatesOnly")) {
-            builder.addPropertyValue("resolveViaPredicatesOnly",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "resolveViaPredicatesOnly")));
+            builder.addPropertyValue("resolveViaPredicatesOnly", SpringSupport.getStringValueAsBoolean(
+                    element.getAttributeNS(null, "resolveViaPredicatesOnly")));
         }
 
         if (element.hasAttributeNS(null, "refreshDelayFactor")) {
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/FileBackedHTTPMetadataProviderParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/FileBackedHTTPMetadataProviderParser.java
index 9067406..01c12f7 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/FileBackedHTTPMetadataProviderParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/FileBackedHTTPMetadataProviderParser.java
@@ -19,6 +19,7 @@ package net.shibboleth.idp.profile.spring.relyingparty.metadata.impl;
 
 import javax.xml.namespace.QName;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.AbstractMetadataProviderParser;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
@@ -50,7 +51,7 @@ public class FileBackedHTTPMetadataProviderParser extends HTTPMetadataProviderPa
         
         if (element.hasAttributeNS(null, "initializeFromBackupFile")) {
             builder.addPropertyValue("initializeFromBackupFile",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "initializeFromBackupFile")));
+                    SpringSupport.getStringValueAsBoolean(element.getAttributeNS(null, "initializeFromBackupFile")));
         }
         
         if (element.hasAttributeNS(null, "backupFileInitNextRefreshDelay")) {
diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/InlineMetadataProviderParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/InlineMetadataProviderParser.java
index 474ba44..9c684e7 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/InlineMetadataProviderParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/InlineMetadataProviderParser.java
@@ -22,6 +22,7 @@ import java.util.List;
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.AbstractMetadataProviderParser;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.xml.ElementSupport;
@@ -63,8 +64,8 @@ public class InlineMetadataProviderParser extends AbstractMetadataProviderParser
         }
         
         if (element.hasAttributeNS(null, "resolveViaPredicatesOnly")) {
-            builder.addPropertyValue("resolveViaPredicatesOnly",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "resolveViaPredicatesOnly")));
+            builder.addPropertyValue("resolveViaPredicatesOnly", SpringSupport.getStringValueAsBoolean(
+                    element.getAttributeNS(null, "resolveViaPredicatesOnly")));
         }
         
     }
diff --git a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FileBackedHTTPMetadataProviderParserTest.java b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FileBackedHTTPMetadataProviderParserTest.java
index 652527c..44c65a0 100644
--- a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FileBackedHTTPMetadataProviderParserTest.java
+++ b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FileBackedHTTPMetadataProviderParserTest.java
@@ -66,6 +66,58 @@ public class FileBackedHTTPMetadataProviderParserTest extends AbstractMetadataPa
         Assert.assertNull(resolver.resolveSingle(criteriaFor(SP_ID)));
     }
 
+    @Test(expectedExceptions = {BeanCreationException.class}) public void badIFBVF() throws Exception {
+        MockPropertySource propSource = singletonPropertySource(PROP_MDURL,
+                RepositorySupport.buildHTTPResourceURL(REPO_IDP, ENTITY_XML, false));
+
+        FileBackedHTTPMetadataResolver resolver = getBean(FileBackedHTTPMetadataResolver.class, propSource, "fileBackedHTTPEntityBadIFBF.xml", "beans.xml");
+
+        Assert.assertEquals(resolver.getId(), "BadIFBF");
+
+        final Iterator<EntityDescriptor> entities = resolver.resolve(criteriaFor(IDP_ID)).iterator();
+        Assert.assertTrue(resolver.isFailFastInitialization());
+        Assert.assertTrue(resolver.isRequireValidMetadata());
+
+        Assert.assertEquals(entities.next().getEntityID(), IDP_ID);
+        Assert.assertFalse(entities.hasNext());
+
+        Assert.assertEquals(resolver.getRefreshDelayFactor(), 0.75, 0.001);
+        Assert.assertEquals(resolver.getExpirationWarningThreshold(), Duration.ofHours(12));
+        Assert.assertSame(resolver.getParserPool(), parserPool);
+
+        Assert.assertEquals(resolver.isInitializeFromBackupFile(), true);
+        Assert.assertEquals(resolver.getBackupFileInitNextRefreshDelay(), Duration.ofSeconds(10));
+
+        Assert.assertNull(resolver.resolveSingle(criteriaFor(SP_ID)));
+    }
+
+    
+    @Test(expectedExceptions = {BeanCreationException.class}) public void badTLS() throws Exception {
+        MockPropertySource propSource = singletonPropertySource(PROP_MDURL,
+                RepositorySupport.buildHTTPResourceURL(REPO_IDP, ENTITY_XML, false));
+
+        FileBackedHTTPMetadataResolver resolver = getBean(FileBackedHTTPMetadataResolver.class, propSource, "fileBackedHTTPEntityDisRegardTLSBad.xml", "beans.xml");
+
+        Assert.assertEquals(resolver.getId(), "badTLS");
+
+        final Iterator<EntityDescriptor> entities = resolver.resolve(criteriaFor(IDP_ID)).iterator();
+        Assert.assertTrue(resolver.isFailFastInitialization());
+        Assert.assertTrue(resolver.isRequireValidMetadata());
+
+        Assert.assertEquals(entities.next().getEntityID(), IDP_ID);
+        Assert.assertFalse(entities.hasNext());
+
+        Assert.assertEquals(resolver.getRefreshDelayFactor(), 0.75, 0.001);
+        Assert.assertEquals(resolver.getExpirationWarningThreshold(), Duration.ofHours(12));
+        Assert.assertSame(resolver.getParserPool(), parserPool);
+
+        Assert.assertEquals(resolver.isInitializeFromBackupFile(), false);
+        Assert.assertEquals(resolver.getBackupFileInitNextRefreshDelay(), Duration.ofSeconds(10));
+
+        Assert.assertNull(resolver.resolveSingle(criteriaFor(SP_ID)));
+    }
+
+
     @Test public void entities() throws Exception {
         MockPropertySource propSource = singletonPropertySource(PROP_MDURL,
                 RepositorySupport.buildHTTPResourceURL(REPO_IDP, ENTITIES_XML, false));
diff --git a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FilesystemMetadataParserTest.java b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FilesystemMetadataParserTest.java
index f36d6d2..65fa08d 100644
--- a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FilesystemMetadataParserTest.java
+++ b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FilesystemMetadataParserTest.java
@@ -23,6 +23,7 @@ import java.util.Iterator;
 
 import org.opensaml.saml.metadata.resolver.impl.FilesystemMetadataResolver;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
+import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.context.ApplicationContext;
 import org.testng.Assert;
 import org.testng.annotations.Test;
@@ -111,4 +112,22 @@ public class FilesystemMetadataParserTest extends AbstractMetadataParserTest {
         Assert.assertTrue(resolver.isResolveViaPredicatesOnly());
     }
     
+    @Test(expectedExceptions = {BeanCreationException.class}) public void badRVPO() throws IOException {
+        ApplicationContext appContext = getApplicationContext("filesystemResolverContext",
+                "fileBadRVPO.xml", "beans.xml");
+        
+        RelyingPartyMetadataProvider rpProvider = 
+                appContext.getBean("BadRVPO", RelyingPartyMetadataProvider.class);
+        FilesystemMetadataResolver resolver = 
+                FilesystemMetadataResolver.class.cast(rpProvider.getEmbeddedResolver());
+        
+        Assert.assertEquals(resolver.getId(), "BadRVPO");
+        
+        Assert.assertTrue(resolver.isSatisfyAnyPredicates());
+        Assert.assertTrue(resolver.isUseDefaultPredicateRegistry());
+        Assert.assertNotNull(resolver.getCriterionPredicateRegistry());
+        Assert.assertSame(resolver.getCriterionPredicateRegistry(), appContext.getBean("metadata.CriterionPredicateRegistry"));
+        Assert.assertFalse(resolver.isResolveViaPredicatesOnly());
+    }
+
 }
diff --git a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/InlineMetadataParserTest.java b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/InlineMetadataParserTest.java
index 27b0e6a..117ff9c 100644
--- a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/InlineMetadataParserTest.java
+++ b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/InlineMetadataParserTest.java
@@ -31,6 +31,7 @@ import net.shibboleth.utilities.java.support.service.ServiceableComponent;
 import org.opensaml.saml.metadata.resolver.MetadataResolver;
 import org.opensaml.saml.metadata.resolver.impl.DOMMetadataResolver;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
+import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.core.io.ResourceLoader;
 import org.testng.Assert;
@@ -57,6 +58,25 @@ public class InlineMetadataParserTest extends AbstractMetadataParserTest {
         Assert.assertFalse(entities.hasNext());
 
     }
+    
+    @Test(expectedExceptions = {BeanCreationException.class}) public void badResolveViaPredicatesOnly() throws ResolverException, IOException {
+        final DOMMetadataResolver resolver = getBean(DOMMetadataResolver.class, "inLineEntityBadRVPO.xml", "beans.xml");
+
+        Assert.assertEquals(resolver.getId(), "badRVPO");
+
+        Assert.assertTrue(resolver.isFailFastInitialization());
+        Assert.assertTrue(resolver.isRequireValidMetadata());
+        
+        Assert.assertFalse(resolver.isResolveViaPredicatesOnly());
+        Assert.assertNotNull(resolver.getIndexes());
+        Assert.assertFalse(resolver.getIndexes().isEmpty());
+
+        final Iterator<EntityDescriptor> entities = resolver.resolve(criteriaFor(IDP_ID)).iterator();
+        Assert.assertEquals(entities.next().getEntityID(), IDP_ID);
+        Assert.assertFalse(entities.hasNext());
+
+    }
+
 
     @Test public void entities() throws ResolverException, IOException {
         final DOMMetadataResolver resolver = getBean(DOMMetadataResolver.class, "inLineEntities.xml", "beans.xml");
diff --git a/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBackedHTTPEntityBadIFBF.xml b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBackedHTTPEntityBadIFBF.xml
new file mode 100644
index 0000000..493875b
--- /dev/null
+++ b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBackedHTTPEntityBadIFBF.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataProvider xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+	xmlns:metadata="urn:mace:shibboleth:2.0:metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+                       urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd"
+
+	id="BadIFBF" xsi:type="metadata:FileBackedHTTPMetadataProvider"
+	backingFile="%{DIR}/spoolFileEntity.xml"
+    initializeFromBackupFile=" "
+    backupFileInitNextRefreshDelay="PT10S"
+    expirationWarningThreshold="PT12H"
+	metadataURL="%{metadataURL}">
+
+</metadata:MetadataProvider>
+                                   
\ No newline at end of file
diff --git a/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBackedHTTPEntityDisRegardTLSBad.xml b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBackedHTTPEntityDisRegardTLSBad.xml
new file mode 100644
index 0000000..1648f0d
--- /dev/null
+++ b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBackedHTTPEntityDisRegardTLSBad.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataProvider xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+	xmlns:metadata="urn:mace:shibboleth:2.0:metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+                       urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd"
+
+	id="badTLS" xsi:type="metadata:FileBackedHTTPMetadataProvider"
+	backingFile="%{DIR}/spoolFileEntity.xml"
+    initializeFromBackupFile="false"
+    backupFileInitNextRefreshDelay="PT10S"
+    expirationWarningThreshold="PT12H"
+    disregardTLSCertificate=" "
+	metadataURL="%{metadataURL}">
+
+</metadata:MetadataProvider>
+                                   
\ No newline at end of file
diff --git a/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBadRVPO.xml b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBadRVPO.xml
new file mode 100644
index 0000000..92c6d34
--- /dev/null
+++ b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/fileBadRVPO.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataProvider xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+	xmlns:metadata="urn:mace:shibboleth:2.0:metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+                       urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd"
+
+    criterionPredicateRegistryRef="metadata.CriterionPredicateRegistry"
+    satisfyAnyPredicates="true"
+    resolveViaPredicatesOnly=" "
+    id="BadRVPO" xsi:type="metadata:FilesystemMetadataProvider" metadataFile="%{DIR}/entities.xml">
+
+</metadata:MetadataProvider>
+                                   
\ No newline at end of file
diff --git a/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/inLineEntityBadRVPO.xml b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/inLineEntityBadRVPO.xml
new file mode 100644
index 0000000..b3802da
--- /dev/null
+++ b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/inLineEntityBadRVPO.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataProvider xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+	xmlns:metadata="urn:mace:shibboleth:2.0:metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+                       urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd"
+
+    resolveViaPredicatesOnly=" "
+    indexesRef="metadata.Indexes"
+    
+	id="badRVPO" xsi:type="metadata:InlineMetadataProvider" sortKey="1">
+
+	<EntityDescriptor ID="ie1"
+		entityID="https://idp.example.org/idp/shibboleth">
+		<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
+			<SingleSignOnService
+				Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
+				Location="https://idp.example.org/idpie1/profile/SAML2/Redirect/SSO" />
+		</IDPSSODescriptor>
+	</EntityDescriptor>
+</metadata:MetadataProvider>
+                                   
\ No newline at end of file

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


More information about the commits mailing list