[java-identity-provider] 04/04: IDP-1450 TDD: Fix empty/just space attribute in Attribute Filter

Rod Widdowson rdw at steadingsoftware.com
Thu Jun 20 08:40:55 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=1b0dba07aa7117408174792098f0e4df0086732a

commit 1b0dba07aa7117408174792098f0e4df0086732a
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu Jun 20 13:36:11 2019 +0100

    IDP-1450 TDD: Fix empty/just space attribute in Attribute Filter
    
    https://issues.shibboleth.net/jira/browse/IDP-1450
---
 .../filter/matcher/impl/AbstractStringMatcher.java  | 14 +++++++++++++-
 .../saml/impl/AttributeInMetadataMatcher.java       | 14 ++++++++++----
 .../impl/AbstractEntityAttributePolicyRule.java     |  7 +++++--
 .../AttributeRequesterInEntityGroupPolicyRule.java  | 10 ++++++----
 .../matcher/impl/AbstractStringMatcherParser.java   |  5 +++--
 .../impl/AbstractEntityAttributeRuleParser.java     | 11 ++++++-----
 .../AttributeRequesterInEntityGroupRuleParser.java  |  5 +++--
 .../impl/MappedAttributeInMetadataRuleParser.java   |  9 +++++----
 .../matcher/AttributeValueMatcherParserTest.java    |  7 +------
 ...uteIssuerEntityAttributeExactRuleParserTest.java | 10 ++++++++++
 ...tributeRequesterInEntityGroupRuleParserTest.java |  9 +--------
 .../MappedAttributeInMetadataRuleParserTest.java    | 21 +++++++++------------
 .../idp/attribute/filter/policyrule/issuerEA3.xml   |  8 ++++++++
 13 files changed, 80 insertions(+), 50 deletions(-)

diff --git a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/AbstractStringMatcher.java b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/AbstractStringMatcher.java
index 683b738..263e1e8 100644
--- a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/AbstractStringMatcher.java
+++ b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/impl/AbstractStringMatcher.java
@@ -19,6 +19,9 @@ package net.shibboleth.idp.attribute.filter.matcher.impl;
 
 import javax.annotation.Nullable;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.attribute.filter.Matcher;
 import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
@@ -28,6 +31,9 @@ import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.Object
  */
 public abstract class AbstractStringMatcher extends AbstractMatcher implements Matcher {
 
+    /** Class logger. */
+    private final Logger log = LoggerFactory.getLogger(AbstractStringMatcher.class);
+
     /** String to match for a positive evaluation. */
     private String matchString;
 
@@ -78,6 +84,7 @@ public abstract class AbstractStringMatcher extends AbstractMatcher implements M
      * Gets whether the match evaluation is case sensitive.
      * 
      * @return whether the match evaluation is case sensitive
+     * @since 4.0.0
      */
     public boolean isCaseSensitive() {
         return caseSensitive;
@@ -87,8 +94,13 @@ public abstract class AbstractStringMatcher extends AbstractMatcher implements M
      * Sets whether the match evaluation is case sensitive.
      * 
      * @param isCaseSensitive whether the match evaluation is case sensitive
+     * @since 4.0.0
      */
-    public void setCaseSensitive(final boolean isCaseSensitive) {
+    public void setCaseSensitive(final @Nullable Boolean isCaseSensitive) {
+        if (null == isCaseSensitive) {
+            log.warn("{} empty property passed to isCaseSensitive", getLogPrefix());
+            return;
+        }
         caseSensitive = isCaseSensitive;
     }
 
diff --git a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
index 4e1ce3f..6b19d7b 100644
--- a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
+++ b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
@@ -101,9 +101,12 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
      * 
      * @param flag whether optionally requested attributes should be matched
      */
-    public void setOnlyIfRequired(final boolean flag) {
+    public void setOnlyIfRequired(final @Nullable Boolean flag) {
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        if (null == flag) {
+            log.warn("{} empty property passed to onlyIfRequired", getLogPrefix());
+            return;
+        }
         onlyIfRequired = flag;
     }
 
@@ -121,9 +124,12 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
      * 
      * @param flag whether to match if the metadata contains no AttributeConsumingService
      */
-    public void setMatchIfMetadataSilent(final boolean flag) {
+    public void setMatchIfMetadataSilent(final @Nullable Boolean flag) {
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        if (null == flag) {
+            log.warn("{} empty property passed to matchIfMetadataSilent", getLogPrefix());
+            return;
+        }
         matchIfMetadataSilent = flag;
     }
 
diff --git a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityAttributePolicyRule.java b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityAttributePolicyRule.java
index a27dc33..961e249 100644
--- a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityAttributePolicyRule.java
+++ b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AbstractEntityAttributePolicyRule.java
@@ -142,9 +142,12 @@ public abstract class AbstractEntityAttributePolicyRule extends AbstractPolicyRu
      * 
      * @param flag flag to set
      */
-    public void setIgnoreUnmappedEntityAttributes(final boolean flag) {
+    public void setIgnoreUnmappedEntityAttributes(final @Nullable Boolean flag) {
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        if (null == flag) {
+            log.warn("{} empty property passed to ignoreUnmappedEntityAttribute", getLogPrefix());
+            return;
+        }
         ignoreUnmappedEntityAttributes = flag;
     }
     
diff --git a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AttributeRequesterInEntityGroupPolicyRule.java b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AttributeRequesterInEntityGroupPolicyRule.java
index 2fba263..e611e9c 100644
--- a/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AttributeRequesterInEntityGroupPolicyRule.java
+++ b/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/AttributeRequesterInEntityGroupPolicyRule.java
@@ -81,12 +81,14 @@ public class AttributeRequesterInEntityGroupPolicyRule extends AbstractPolicyRul
      * <p>Defaults to false.</p>
      * 
      * @param flag flag to set
-     * 
-     * @since 3.4.0
      */
-    public void setCheckAffiliations(final boolean flag) {
+    public void setCheckAffiliations(final @Nullable Boolean flag) {
         ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        if (null == flag) {
+            log.warn("{} empty property passed to checkAffiliations", getLogPrefix());
+            return;
+        }
+
         checkAffiliations = flag;
     }
 
diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/impl/AbstractStringMatcherParser.java b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/impl/AbstractStringMatcherParser.java
index f194c96..b207d1b 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/impl/AbstractStringMatcherParser.java
+++ b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/matcher/impl/AbstractStringMatcherParser.java
@@ -25,6 +25,7 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.attribute.filter.spring.matcher.BaseAttributeValueMatcherParser;
 import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
@@ -52,8 +53,8 @@ public abstract class AbstractStringMatcherParser extends BaseAttributeValueMatc
                         parserContext.getReaderContext().getResource().getDescription());
             }
 
-            builder.addPropertyValue("caseSensitive", 
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "caseSensitive")));
+            builder.addPropertyValue("caseSensitive", SpringSupport.getStringValueAsBoolean(
+                    StringSupport.trimOrNull(element.getAttributeNS(null, "caseSensitive"))));
         
         } else if (element.hasAttributeNS(null, "ignoreCase")) {
             DeprecationSupport.warnOnce(ObjectType.ELEMENT,
diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AbstractEntityAttributeRuleParser.java b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AbstractEntityAttributeRuleParser.java
index 7799388..e030bf3 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AbstractEntityAttributeRuleParser.java
+++ b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AbstractEntityAttributeRuleParser.java
@@ -19,13 +19,14 @@ package net.shibboleth.idp.attribute.filter.spring.saml.impl;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
+import net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
+
 /**
  * Base definition for all EntityAttribute Parsers.
  */
@@ -44,8 +45,8 @@ public abstract class AbstractEntityAttributeRuleParser extends BasePolicyRulePa
         }
         
         if (element.hasAttributeNS(null, "ignoreUnmappedEntityAttributes")) {
-            builder.addPropertyValue("ignoreUnmappedEntityAttributes",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "ignoreUnmappedEntityAttributes")));
+            builder.addPropertyValue("ignoreUnmappedEntityAttributes", SpringSupport.getStringValueAsBoolean(
+                    StringSupport.trimOrNull(element.getAttributeNS(null, "ignoreUnmappedEntityAttributes"))));
         }
     }
 }
\ No newline at end of file
diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AttributeRequesterInEntityGroupRuleParser.java b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AttributeRequesterInEntityGroupRuleParser.java
index a7b1d8b..7bd7f4a 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AttributeRequesterInEntityGroupRuleParser.java
+++ b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/AttributeRequesterInEntityGroupRuleParser.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.attribute.filter.spring.saml.impl;
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.attribute.filter.policyrule.saml.impl.AttributeRequesterInEntityGroupPolicyRule;
 import net.shibboleth.idp.attribute.filter.spring.BaseFilterParser;
 import net.shibboleth.idp.attribute.filter.spring.policyrule.BasePolicyRuleParser;
@@ -48,8 +49,8 @@ public class AttributeRequesterInEntityGroupRuleParser extends BasePolicyRulePar
 
         builder.addPropertyValue("entityGroup", StringSupport.trimOrNull(element.getAttributeNS(null, "groupID")));
         if (element.hasAttributeNS(null, "checkAffiliations")) {
-            builder.addPropertyValue("checkAffiliations",
-                    StringSupport.trimOrNull(element.getAttributeNS(null, "checkAffiliations")));
+            builder.addPropertyValue("checkAffiliations", SpringSupport.getStringValueAsBoolean(
+                            StringSupport.trimOrNull(element.getAttributeNS(null, "checkAffiliations"))));
         }
     }
 }
diff --git a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/MappedAttributeInMetadataRuleParser.java b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/MappedAttributeInMetadataRuleParser.java
index d728030..9563ae7 100644
--- a/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/MappedAttributeInMetadataRuleParser.java
+++ b/idp-attribute-filter-spring/src/main/java/net/shibboleth/idp/attribute/filter/spring/saml/impl/MappedAttributeInMetadataRuleParser.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.attribute.filter.spring.saml.impl;
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.attribute.filter.matcher.saml.impl.AttributeInMetadataMatcher;
 import net.shibboleth.idp.attribute.filter.spring.BaseFilterParser;
 import net.shibboleth.idp.attribute.filter.spring.matcher.BaseAttributeValueMatcherParser;
@@ -57,13 +58,13 @@ public class MappedAttributeInMetadataRuleParser extends BaseAttributeValueMatch
         super.doParse(config, builder);
 
         if (config.hasAttributeNS(null, "onlyIfRequired")) {
-            builder.addPropertyValue("onlyIfRequired",
-                    StringSupport.trimOrNull(config.getAttributeNS(null, "onlyIfRequired")));
+            builder.addPropertyValue("onlyIfRequired", SpringSupport.getStringValueAsBoolean(
+                    StringSupport.trimOrNull(config.getAttributeNS(null, "onlyIfRequired"))));
         }
 
         if (config.hasAttributeNS(null, "matchIfMetadataSilent")) {
-            builder.addPropertyValue("matchIfMetadataSilent",
-                    StringSupport.trimOrNull(config.getAttributeNS(null, "matchIfMetadataSilent")));
+            builder.addPropertyValue("matchIfMetadataSilent", SpringSupport.getStringValueAsBoolean(
+                    StringSupport.trimOrNull(config.getAttributeNS(null, "matchIfMetadataSilent"))));
         }
         
         if (config.hasAttributeNS(null, "objectStrategyRef")) {
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/matcher/AttributeValueMatcherParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/matcher/AttributeValueMatcherParserTest.java
index 6fce7dc..6558ba0 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/matcher/AttributeValueMatcherParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/matcher/AttributeValueMatcherParserTest.java
@@ -26,7 +26,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.springframework.beans.FatalBeanException;
-import org.springframework.beans.factory.BeanCreationException;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
@@ -177,11 +176,7 @@ public class AttributeValueMatcherParserTest extends BaseAttributeFilterParserTe
     }
 
     @Test public void propertyEmptyCaseSensitive() throws ComponentInitializationException {
-        try {
-            propertyCaseSensitive("", false);
-        } catch (BeanCreationException e) {
-            assertEquals(IllegalArgumentException.class, rootCause(e));
-        }
+        propertyCaseSensitive("", false);
     }
 
 }
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeIssuerEntityAttributeExactRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeIssuerEntityAttributeExactRuleParserTest.java
index 0e3624f..c26673e 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeIssuerEntityAttributeExactRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeIssuerEntityAttributeExactRuleParserTest.java
@@ -38,5 +38,15 @@ public class AttributeIssuerEntityAttributeExactRuleParserTest extends BaseAttri
         assertEquals(rule.getAttributeName(), "urn:example.org:policy");
         assertTrue(rule.getIgnoreUnmappedEntityAttributes());
     }
+    
+    @Test public void empty() throws ComponentInitializationException {
+        AttributeIssuerEntityAttributeExactPolicyRule rule =
+                (AttributeIssuerEntityAttributeExactPolicyRule) getPolicyRule("issuerEA3.xml");
+
+        assertEquals(rule.getValue(), "urn:example.org:policy:ABCD1234");
+        assertEquals(rule.getAttributeName(), "urn:example.org:policy");
+        assertFalse(rule.getIgnoreUnmappedEntityAttributes());
+    }
+
 
 }
\ No newline at end of file
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeRequesterInEntityGroupRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeRequesterInEntityGroupRuleParserTest.java
index fd859a8..568805c 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeRequesterInEntityGroupRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/AttributeRequesterInEntityGroupRuleParserTest.java
@@ -18,9 +18,7 @@
 package net.shibboleth.idp.attribute.filter.spring.saml;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.fail;
 
-import org.springframework.beans.factory.BeanCreationException;
 import org.testng.annotations.Test;
 
 import net.shibboleth.idp.attribute.filter.policyrule.saml.impl.AttributeRequesterInEntityGroupPolicyRule;
@@ -41,12 +39,7 @@ public class AttributeRequesterInEntityGroupRuleParserTest extends  BaseAttribut
     }
 
     @Test public void basic() throws ComponentInitializationException {
-        try {
-            testRule("", false);
-            fail("should fail");
-        } catch (BeanCreationException e) {
-            assertEquals(IllegalArgumentException.class, rootCause(e));
-        }
+        testRule("", false);
     }
 
     @Test public void egTrue() throws ComponentInitializationException {
diff --git a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/MappedAttributeInMetadataRuleParserTest.java b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/MappedAttributeInMetadataRuleParserTest.java
index cabd10e..8ff2897 100644
--- a/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/MappedAttributeInMetadataRuleParserTest.java
+++ b/idp-attribute-filter-spring/src/test/java/net/shibboleth/idp/attribute/filter/spring/saml/MappedAttributeInMetadataRuleParserTest.java
@@ -19,9 +19,7 @@ package net.shibboleth.idp.attribute.filter.spring.saml;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
 
-import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.context.support.GenericApplicationContext;
 import org.testng.annotations.Test;
 
@@ -38,7 +36,7 @@ import net.shibboleth.utilities.java.support.component.ComponentInitializationEx
  */
 public class MappedAttributeInMetadataRuleParserTest extends  BaseAttributeFilterParserTest {
 
-     public void test(final String propValue, final boolean result) throws ComponentInitializationException {
+     public void test(final String propValue, final boolean metadataSilentResult, final boolean onlyResult) throws ComponentInitializationException {
         GenericApplicationContext context = contextWithPropertyValue(propValue);
         setTestContext(context);
         context.setDisplayName("ApplicationContext: Matcher");
@@ -47,16 +45,20 @@ public class MappedAttributeInMetadataRuleParserTest extends  BaseAttributeFilte
         rule.initialize();
         AttributeInMetadataMatcher matcher = (AttributeInMetadataMatcher) rule.getMatcher();
 
-        assertEquals(matcher.getMatchIfMetadataSilent(), result);
+        assertEquals(matcher.getMatchIfMetadataSilent(), metadataSilentResult);
         assertTrue(matcher.getOnlyIfRequired());
         assertTrue(matcher.getId().endsWith(":PermitRule"));
 
         final PolicyFromMatcher policyRule = (PolicyFromMatcher) getBean(PolicyRequirementRule.class, context);
         matcher = (AttributeInMetadataMatcher) policyRule.getMatcher();
         assertTrue(matcher.getMatchIfMetadataSilent());
-        assertEquals(matcher.getOnlyIfRequired(), result);
+        assertEquals(matcher.getOnlyIfRequired(), onlyResult);
         assertTrue(matcher.getId().endsWith(":PRR"));
-    }
+     }
+
+     public void test(final String propValue, final boolean result) throws ComponentInitializationException {
+         test(propValue, result, result);
+     }
 
      @Test public void testTrue() throws ComponentInitializationException {
          test("true", true);
@@ -67,11 +69,6 @@ public class MappedAttributeInMetadataRuleParserTest extends  BaseAttributeFilte
      }
 
      @Test public void testEmpty() throws ComponentInitializationException {
-         try {
-             test("", false);
-             fail("should fail");
-         } catch (BeanCreationException e) {
-             assertEquals(IllegalArgumentException.class, rootCause(e));
-         }
+         test("", false, true);
      }
 }
diff --git a/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/issuerEA3.xml b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/issuerEA3.xml
new file mode 100644
index 0000000..ae9b57f
--- /dev/null
+++ b/idp-attribute-filter-spring/src/test/resources/net/shibboleth/idp/attribute/filter/policyrule/issuerEA3.xml
@@ -0,0 +1,8 @@
+<AttributeFilterPolicy id="MostBasicExample" xmlns="urn:mace:shibboleth:2.0:afp"
+    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd">
+	<PolicyRequirementRule xsi:type="IssuerEntityAttributeExactMatch"
+                       attributeName="urn:example.org:policy"
+                       attributeValue="urn:example.org:policy:ABCD1234" 
+                       ignoreUnmappedEntityAttributes=" "/>
+</AttributeFilterPolicy>

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


More information about the commits mailing list