[java-shib-metadata] branch main updated: Restore most Predicate filter tests.

Scott Cantor cantor.2 at osu.edu
Wed Jul 6 14:17:55 UTC 2022


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

scantor pushed a commit to branch main
in repository java-shib-metadata.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-metadata.git;a=commit;h=bda7c4bc1e04cb1402d29c77df7476fbf87b0667

The following commit(s) were added to refs/heads/main by this push:
     new bda7c4bc1 Restore most Predicate filter tests.
bda7c4bc1 is described below

commit bda7c4bc1e04cb1402d29c77df7476fbf87b0667
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Jul 6 10:17:52 2022 -0400

    Restore most Predicate filter tests.
---
 .../metadata/filter/PredicateFilterParserTest.java | 139 +++++++++++++++++++++
 .../metadata/filter/predicateBadDirection.xml      |  11 ++
 .../spring/metadata/filter/predicateCustomBean.xml |  23 ++++
 .../spring/metadata/filter/predicateEmpty.xml      |   9 ++
 .../spring/metadata/filter/predicateEntity.xml     |  12 ++
 .../spring/metadata/filter/predicateGroup.xml      |  12 ++
 .../spring/metadata/filter/predicateOr.xml         |  22 ++++
 .../spring/metadata/filter/predicateScript.xml     |  12 ++
 .../metadata/filter/predicateScriptCustom.xml      |  12 ++
 .../spring/metadata/filter/predicateScriptOr.xml   |  15 +++
 .../spring/metadata/filter/predicateTag.xml        |  18 +++
 11 files changed, 285 insertions(+)

diff --git a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/PredicateFilterParserTest.java b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/PredicateFilterParserTest.java
new file mode 100644
index 000000000..80eaa7c55
--- /dev/null
+++ b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/filter/PredicateFilterParserTest.java
@@ -0,0 +1,139 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file except in
+ * compliance with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.spring.metadata.filter;
+
+import java.io.IOException;
+
+import org.opensaml.core.criterion.EntityIdCriterion;
+import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate;
+import org.opensaml.saml.common.profile.logic.EntityAttributesPredicate.Candidate;
+import org.opensaml.saml.common.profile.logic.EntityGroupNamePredicate;
+import org.opensaml.saml.common.profile.logic.EntityIdPredicate;
+import org.opensaml.saml.metadata.resolver.MetadataResolver;
+import org.opensaml.saml.metadata.resolver.filter.impl.PredicateFilter;
+import org.opensaml.saml.metadata.resolver.filter.impl.PredicateFilter.Direction;
+import org.opensaml.saml.saml2.metadata.EntityDescriptor;
+import org.springframework.beans.factory.BeanCreationException;
+import org.springframework.beans.factory.BeanDefinitionStoreException;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import net.shibboleth.spring.metadata.AbstractMetadataParserTest;
+import net.shibboleth.utilities.java.support.logic.ScriptedPredicate;
+import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.utilities.java.support.resolver.ResolverException;
+
+/**
+ * Test for parser for PredicateFilter filter.
+ */
+ at SuppressWarnings("javadoc")
+public class PredicateFilterParserTest extends AbstractMetadataParserTest {
+
+    @Test(expectedExceptions=BeanDefinitionStoreException.class)
+    public void empty() throws IOException {
+        getBean(PredicateFilter.class, "filter/predicateEmpty.xml");
+    }
+
+    @Test(expectedExceptions=BeanCreationException.class)
+    public void badDirection() throws IOException {
+        getBean(PredicateFilter.class, "filter/predicateBadDirection.xml");
+    }
+
+    @Test
+    public void entity() throws IOException {
+        final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateEntity.xml");
+        Assert.assertNotNull(filter);
+        Assert.assertEquals(filter.getDirection(), Direction.INCLUDE);
+        
+        final EntityIdPredicate condition = (EntityIdPredicate) filter.getCondition();
+        Assert.assertEquals(condition.getEntityIds().size(), 3);
+        Assert.assertTrue(condition.getEntityIds().contains("urn:bar"));
+    }
+
+    @Test
+    public void group() throws IOException {
+        final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateGroup.xml");
+        Assert.assertNotNull(filter);
+        Assert.assertEquals(filter.getDirection(), Direction.INCLUDE);
+        
+        final EntityGroupNamePredicate condition = (EntityGroupNamePredicate) filter.getCondition();
+        Assert.assertEquals(condition.getGroupNames().size(), 3);
+        Assert.assertTrue(condition.getGroupNames().contains("urn:bar"));
+    }
+
+    @Test
+    public void tag() throws IOException {
+        final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateTag.xml");
+        Assert.assertNotNull(filter);
+        Assert.assertEquals(filter.getDirection(), Direction.EXCLUDE);
+        
+        final EntityAttributesPredicate condition = (EntityAttributesPredicate) filter.getCondition();
+        Assert.assertTrue(condition.getTrimTags());
+        Assert.assertEquals(condition.getCandidates().size(), 2);
+        
+        final Candidate c1 = (Candidate) condition.getCandidates().toArray()[0];
+        final Candidate c2 = (Candidate) condition.getCandidates().toArray()[1];
+        Assert.assertEquals(c1.getValues().size(), 2);
+        Assert.assertEquals(c2.getValues().size(), 2);
+        if (c1.getName().equals("urn:foo")) {
+            Assert.assertNull(c1.getNameFormat());
+            Assert.assertEquals(c2.getNameFormat(), "foo");
+        } else {
+            Assert.assertNull(c2.getNameFormat());
+            Assert.assertEquals(c1.getNameFormat(), "foo");
+        }
+    }
+
+    @Test
+    public void script() throws IOException {
+        final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateScript.xml");
+        Assert.assertNotNull(filter);
+        Assert.assertEquals(filter.getDirection(), Direction.INCLUDE);
+        
+        Assert.assertTrue(filter.getCondition() instanceof ScriptedPredicate);
+        Assert.assertTrue(filter.getCondition().test(null));
+    }
+
+    @Test
+    public void script2() throws IOException {
+        final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateScriptOr.xml");
+        Assert.assertNotNull(filter);
+        Assert.assertEquals(filter.getDirection(), Direction.INCLUDE);
+        Assert.assertTrue(filter.getCondition().test(null));
+    }
+
+    @Test
+    public void or() throws IOException {
+        final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateOr.xml");
+        Assert.assertNotNull(filter);
+        Assert.assertEquals(filter.getDirection(), Direction.EXCLUDE);
+        Assert.assertNotNull(filter.getCondition());
+        Assert.assertFalse(filter.getCondition().test(null));
+    }
+
+    @Test
+    public void custom() throws IOException, ResolverException {
+        final PredicateFilter filter = getBean(PredicateFilter.class, "filter/predicateScriptCustom.xml", "filter/predicateCustomBean.xml");
+        Assert.assertNotNull(filter);
+        Assert.assertEquals(filter.getDirection(), Direction.INCLUDE);
+        // hack!
+        MetadataResolver resolver = getBean(MetadataResolver.class, "filter/entityTrueResolver.xml");
+        Iterable<EntityDescriptor> entities = resolver.resolve(new CriteriaSet(new EntityIdCriterion("https://sp.example.org/sp/TRUE")));
+        Assert.assertTrue(filter.getCondition().test(entities.iterator().next()));
+    }
+}
\ No newline at end of file
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateBadDirection.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateBadDirection.xml
new file mode 100644
index 000000000..41603c4b5
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateBadDirection.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter 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"
+
+	xsi:type="metadata:Predicate" direction="foo">
+    
+    <metadata:Entity>urn:foo</metadata:Entity>
+    
+</metadata:MetadataFilter>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateCustomBean.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateCustomBean.xml
new file mode 100644
index 000000000..c6271868c
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateCustomBean.xml
@@ -0,0 +1,23 @@
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:webflow="http://www.springframework.org/schema/webflow-config"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xmlns:c="http://www.springframework.org/schema/c"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+
+    <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"
+        p:placeholderPrefix="%{" p:placeholderSuffix="}" />
+
+    <util:constant id="myTRUE" static-field="java.lang.Boolean.TRUE" />
+    <util:constant id="myFALSE" static-field="java.lang.Boolean.FALSE" />
+
+
+	<util:map id="myCustomBean">
+		<entry key="https://sp.example.org/sp/TRUE" value-ref="myTRUE" />
+		<entry key="https://sp.example.org/sp/FALSE"  value-ref="myFALSE" />
+	</util:map> 
+</beans>
\ No newline at end of file
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEmpty.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEmpty.xml
new file mode 100644
index 000000000..5472106ed
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEmpty.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter 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"
+
+	xsi:type="metadata:Predicate" direction="include" removeEmptyEntitiesDescriptors="false">
+    
+</metadata:MetadataFilter>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEntity.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEntity.xml
new file mode 100644
index 000000000..432a03a1c
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateEntity.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter 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"
+
+	xsi:type="metadata:Predicate" direction="include" removeEmptyEntitiesDescriptors="false">
+    
+    <metadata:Entity>urn:foo</metadata:Entity>
+    <metadata:Entity>urn:bar</metadata:Entity>
+    <metadata:Entity>urn:baz</metadata:Entity>
+</metadata:MetadataFilter>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateGroup.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateGroup.xml
new file mode 100644
index 000000000..c602795f9
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateGroup.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter 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"
+
+	xsi:type="metadata:Predicate" direction="include" removeEmptyEntitiesDescriptors="false">
+    
+    <metadata:Group>urn:foo</metadata:Group>
+    <metadata:Group>urn:bar</metadata:Group>
+    <metadata:Group>urn:baz</metadata:Group>
+</metadata:MetadataFilter>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateOr.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateOr.xml
new file mode 100644
index 000000000..1b1398f91
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateOr.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter 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"
+
+	xsi:type="metadata:Predicate" direction="exclude" removeEmptyEntitiesDescriptors="false" trim="true">
+    
+    <metadata:Entity>urn:foo</metadata:Entity>
+    
+    <metadata:Group>urn:bar</metadata:Group>
+    
+    <metadata:MappedTag name="urn:foo">
+        <metadata:Value>bar</metadata:Value>
+        <metadata:Value>baz</metadata:Value>
+    </metadata:MappedTag>
+    
+    <metadata:Tag name="urn:fob" nameFormat="foo">
+        <metadata:Value>bat</metadata:Value>
+        <metadata:Value>baf</metadata:Value>
+    </metadata:Tag>
+</metadata:MetadataFilter>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScript.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScript.xml
new file mode 100644
index 000000000..14713e6a4
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScript.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter 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"
+
+	xsi:type="metadata:Predicate" direction="include" removeEmptyEntitiesDescriptors="false">
+    
+    <metadata:ConditionScript>
+        <metadata:Script>true</metadata:Script>
+    </metadata:ConditionScript>
+</metadata:MetadataFilter>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScriptCustom.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScriptCustom.xml
new file mode 100644
index 000000000..50ee72a00
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScriptCustom.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<MetadataFilter 
+	xmlns="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"
+
+	xsi:type="Predicate" direction="include" removeEmptyEntitiesDescriptors="false">
+    
+    <ConditionScript customObjectRef="myCustomBean">
+        <Script>custom.get(input.getEntityID());</Script>
+    </ConditionScript>
+</MetadataFilter>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScriptOr.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScriptOr.xml
new file mode 100644
index 000000000..de6d0a30d
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateScriptOr.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter 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"
+
+	xsi:type="metadata:Predicate" direction="include" removeEmptyEntitiesDescriptors="false">
+    
+    <metadata:ConditionScript>
+        <metadata:Script>false</metadata:Script>
+    </metadata:ConditionScript>
+    <metadata:ConditionScript>
+        <metadata:Script>true</metadata:Script>
+    </metadata:ConditionScript>
+</metadata:MetadataFilter>
diff --git a/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateTag.xml b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateTag.xml
new file mode 100644
index 000000000..a5b00564f
--- /dev/null
+++ b/shib-metadata-spring/src/test/resources/net/shibboleth/spring/metadata/filter/predicateTag.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataFilter 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"
+
+	xsi:type="metadata:Predicate" direction="exclude" removeEmptyEntitiesDescriptors="false" trim="true">
+    
+    <metadata:Tag name="urn:foo">
+        <metadata:Value>bar</metadata:Value>
+        <metadata:Value>baz</metadata:Value>
+    </metadata:Tag>
+    
+    <metadata:Tag name="urn:fob" nameFormat="foo">
+        <metadata:Value>bat</metadata:Value>
+        <metadata:Value>baf</metadata:Value>
+    </metadata:Tag>
+</metadata:MetadataFilter>

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


More information about the commits mailing list