[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