[java-identity-provider] 04/04: IDP-1434 Allow properties in encodeType and add tests for same

Rod Widdowson rdw at steadingsoftware.com
Sun May 5 10:48:20 EDT 2019


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

rdw pushed a commit to branch feature/IDP-1434
in repository java-identity-provider.

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

commit a7628e8461ab654d74c97b791b45f22c4609b5f5
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sun May 5 15:41:15 2019 +0100

    IDP-1434 Allow properties in encodeType and add tests for same
---
 .../enc/BaseSAML1AttributeEncoderParser.java       |  10 +-
 .../enc/BaseSAML2AttributeEncoderParser.java       |  12 ++-
 .../spring/BaseAttributeDefinitionParserTest.java  |  43 ---------
 .../spring/BaseEncoderDefinitionParserTest.java    | 101 +++++++++++++++++++++
 .../enc/SAML1Base64AttributeEncoderParserTest.java |  27 +++---
 ...AML1ScopedStringAttributeEncoderParserTest.java |  27 +++---
 .../enc/SAML1StringAttributeEncoderParserTest.java |  26 +++---
 .../SAML1XMLObjectAttributeEncoderParserTest.java  |  27 +++---
 .../enc/SAML2Base64AttributeEncoderParserTest.java |  27 +++---
 ...AML2ScopedStringAttributeEncoderParserTest.java |  27 +++---
 .../enc/SAML2StringAttributeEncoderParserTest.java |  27 +++---
 .../SAML2XMLObjectAttributeEncoderParserTest.java  |  26 +++---
 .../resolver/spring/enc/resolver/saml1Base64.xml   |   2 +-
 .../resolver/spring/enc/resolver/saml1Scoped.xml   |   2 +-
 .../resolver/spring/enc/resolver/saml1String.xml   |   2 +-
 .../spring/enc/resolver/saml1XmlObject.xml         |   2 +-
 .../resolver/spring/enc/resolver/saml2Base64.xml   |   2 +-
 .../resolver/spring/enc/resolver/saml2Scoped.xml   |   2 +-
 .../resolver/spring/enc/resolver/saml2String.xml   |   2 +-
 .../spring/enc/resolver/saml2XmlObject.xml         |   2 +-
 20 files changed, 228 insertions(+), 168 deletions(-)

diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML1AttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML1AttributeEncoderParser.java
index 8d01a90..0467f23 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML1AttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML1AttributeEncoderParser.java
@@ -25,6 +25,7 @@ import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTrans
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.springframework.beans.factory.BeanDefinitionStoreException;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
@@ -50,9 +51,12 @@ public abstract class BaseSAML1AttributeEncoderParser extends BaseAttributeEncod
                     StringSupport.trimOrNull(config.getAttributeNS(null, "namespace")));
         }
 
-        if (config.hasAttributeNS(null, "encodeType")) {
-            rule.put(AbstractSAML1AttributeTranscoder.PROP_ENCODE_TYPE,
-                    Boolean.valueOf(StringSupport.trimOrNull(config.getAttributeNS(null, "encodeType"))));
+        final String value = StringSupport.trimOrNull(config.getAttributeNS(null, "encodeType"));
+        if (value != null) {
+            final BeanDefinitionBuilder booleanBuilder =
+                BeanDefinitionBuilder.rootBeanDefinition(Boolean.class, "valueOf");
+            booleanBuilder.addConstructorArgValue(value);
+            rule.put(AbstractSAML1AttributeTranscoder.PROP_ENCODE_TYPE,booleanBuilder.getBeanDefinition());
         }
     }
     
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML2AttributeEncoderParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML2AttributeEncoderParser.java
index eb86f35..1d987df 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML2AttributeEncoderParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/enc/BaseSAML2AttributeEncoderParser.java
@@ -25,6 +25,7 @@ import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTrans
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 import org.springframework.beans.factory.BeanDefinitionStoreException;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
@@ -54,11 +55,14 @@ public abstract class BaseSAML2AttributeEncoderParser extends BaseAttributeEncod
             rule.put(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME,
                     StringSupport.trimOrNull(config.getAttributeNS(null, "friendlyName")));
         }
+        
+        final String value = StringSupport.trimOrNull(config.getAttributeNS(null, "encodeType"));
+        if (value != null) {
+            final BeanDefinitionBuilder booleanBuilder =
+                BeanDefinitionBuilder.rootBeanDefinition(Boolean.class, "valueOf");
+            booleanBuilder.addConstructorArgValue(value);
                 
-        if (config.hasAttributeNS(null, "encodeType")) {
-            rule.put(AbstractSAML2AttributeTranscoder.PROP_ENCODE_TYPE,
-                    Boolean.valueOf(StringSupport.trimOrNull(config.getAttributeNS(null, "encodeType"))));
+            rule.put(AbstractSAML2AttributeTranscoder.PROP_ENCODE_TYPE,booleanBuilder.getBeanDefinition());
         }
     }
-    
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseAttributeDefinitionParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseAttributeDefinitionParserTest.java
index d808bcb..0066528 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseAttributeDefinitionParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseAttributeDefinitionParserTest.java
@@ -17,23 +17,17 @@
 
 package net.shibboleth.idp.attribute.resolver.spring;
 
-import static net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE;
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
 
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.Map;
 
 import org.opensaml.core.OpenSAMLInitBaseTestCase;
 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ConversionServiceFactoryBean;
 import org.springframework.context.support.GenericApplicationContext;
-import org.springframework.core.env.MutablePropertySources;
-import org.springframework.core.env.StandardEnvironment;
-import org.springframework.mock.env.MockPropertySource;
 import org.testng.annotations.AfterMethod;
 
 import net.shibboleth.ext.spring.config.IdentifiableBeanPostProcessor;
@@ -183,8 +177,6 @@ public abstract class BaseAttributeDefinitionParserTest extends OpenSAMLInitBase
         return getDataConnector(fileName, claz, false);
     }
     
-    
-
     private <Type extends DataConnector> Type
             getDataConnector(final String fileName, final Class<Type> claz, final boolean supressValid) {
 
@@ -196,35 +188,6 @@ public abstract class BaseAttributeDefinitionParserTest extends OpenSAMLInitBase
         return getBean(DATACONNECTOR_FILE_PATH + fileName, claz, context, supressValid);
     }
 
-    protected Collection<Map<String,Object>> getAttributeTranscoderRule(final String fileName, final Class<Collection> claz) {
-        return getAttributeTranscoderRule(fileName, claz, (String)null);
-    }
-
-    protected Collection<Map<String,Object>> getAttributeTranscoderRule(final String fileName, final Class<Collection> claz, String propValue) {
-
-        final GenericApplicationContext context = new GenericApplicationContext();
-
-        if (propValue != null) {
-            final MockPropertySource mockEnvVars = new MockPropertySource();
-            mockEnvVars.setProperty("the.activation.property", propValue);
-            final MutablePropertySources propertySources = context.getEnvironment().getPropertySources();
-            propertySources.replace(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, mockEnvVars);
-        }
-
-        setTestContext(context);
-        context.setDisplayName("ApplicationContext: " + claz);
-
-        return getAttributeTranscoderRule(fileName, claz, context);
-
-    }
-
-    protected Collection<Map<String,Object>> getAttributeTranscoderRule(final String fileName, final Class<Collection> claz,
-            final GenericApplicationContext context) {
-
-        return getBean(ENCODER_FILE_PATH + fileName, claz, context);
-
-    }
-
     static public AttributeResolverImpl getResolver(final ApplicationContext appCtx) {
         final AttributeResolverServiceStrategy strategy = new AttributeResolverServiceStrategy();
         strategy.setId("testResolver");
@@ -236,10 +199,4 @@ public abstract class BaseAttributeDefinitionParserTest extends OpenSAMLInitBase
         return (AttributeResolverImpl) strategy.apply(appCtx);
     }
 
-    static public void checkEncodeType(final Map<String,Object> rule, boolean expectedValue) {
-        final Object encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.TRUE);
-        assertTrue(encodeType instanceof Boolean);
-        assertTrue(encodeType.equals(expectedValue));
-    }
-
 }
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseEncoderDefinitionParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseEncoderDefinitionParserTest.java
new file mode 100644
index 0000000..43f2a9f
--- /dev/null
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/BaseEncoderDefinitionParserTest.java
@@ -0,0 +1,101 @@
+/*
+ * 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.idp.attribute.resolver.spring;
+
+import static net.shibboleth.idp.saml.attribute.transcoding.AbstractSAMLAttributeTranscoder.PROP_ENCODE_TYPE;
+import static org.testng.Assert.assertTrue;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.core.env.MutablePropertySources;
+import org.springframework.core.env.StandardEnvironment;
+import org.springframework.mock.env.MockPropertySource;
+import org.testng.annotations.Test;
+
+/**
+ * Base class for testing Attribute Encoding Parsers
+ */
+public abstract class BaseEncoderDefinitionParserTest extends BaseAttributeDefinitionParserTest {
+
+    protected Collection<Map<String,Object>> getAttributeTranscoderRule(final String fileName) {
+        return getAttributeTranscoderRule(fileName, null, null);
+    }
+    
+    protected Collection<Map<String,Object>> getAttributeTranscoderRule(final String fileName,final boolean activation, final Boolean encodeType) {
+        final String encodeTypeString;
+        if (null == encodeType) {
+            encodeTypeString = null;
+        } else if (encodeType ){  
+            encodeTypeString = "true";
+        } else { 
+            encodeTypeString = "false";
+        } 
+        return getAttributeTranscoderRule(fileName, activation?"true":"false", encodeTypeString);
+    }
+
+    private Collection<Map<String,Object>> getAttributeTranscoderRule(final String fileName,
+            final String activationValue,
+            final String encodeType) {
+
+        final GenericApplicationContext context = new GenericApplicationContext();
+
+        if (activationValue != null || encodeType != null) {
+            final MockPropertySource mockEnvVars = new MockPropertySource();
+            if (activationValue != null) {
+                mockEnvVars.setProperty("the.activation.property", activationValue);
+            }
+            if (encodeType != null) {
+                mockEnvVars.setProperty("the.encodeType.property", encodeType);
+            }
+            final MutablePropertySources propertySources = context.getEnvironment().getPropertySources();
+            propertySources.replace(StandardEnvironment.SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, mockEnvVars);
+        }
+
+        return getAttributeTranscoderRule(fileName, context);
+    }
+    
+    protected Collection<Map<String,Object>> getAttributeTranscoderRule(final String fileName, final GenericApplicationContext context) {
+
+        setTestContext(context);
+        context.setDisplayName("ApplicationContext for encocder");
+
+        return getBean(ENCODER_FILE_PATH + fileName, Collection.class, context);
+
+    }
+
+    static protected void checkEncodeType(final Map<String,Object> rule, boolean expectedValue) {
+        final Object encodeType = rule.getOrDefault(PROP_ENCODE_TYPE, Boolean.TRUE);
+        assertTrue(encodeType instanceof Boolean);
+        assertTrue(encodeType.equals(expectedValue));
+    }
+    
+    abstract protected void testWithProperties(final boolean activation, final Boolean encodeType);
+    
+    @Test public void values() {
+        testWithProperties(true);
+        testWithProperties(false);
+    }
+    
+    private void testWithProperties(final boolean activation) {
+        testWithProperties(activation, null);
+        testWithProperties(activation, true);        
+        testWithProperties(activation, false);
+    }
+}
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1Base64AttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1Base64AttributeEncoderParserTest.java
index 73564bc..141ca27 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1Base64AttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1Base64AttributeEncoderParserTest.java
@@ -17,7 +17,10 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.function.Predicate;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
+import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1Base64AttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
@@ -35,16 +38,12 @@ import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1ByteAttributeTran
 /**
  * Test for {@link SAML1Base64AttributeEncoderParser}.
  */
-public class SAML1Base64AttributeEncoderParserTest extends BaseAttributeDefinitionParserTest {
+public class SAML1Base64AttributeEncoderParserTest extends BaseEncoderDefinitionParserTest {
   
-    @Test public void newNameSpace() {
-        boolTest(true);
-        boolTest(false);
-    }
-
-    private void boolTest(boolean value) {
+    protected void testWithProperties(final boolean activation, final Boolean encodeType) {
+        
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml1Base64.xml", Collection.class, value?"true":"false");
+                getAttributeTranscoderRule("resolver/saml1Base64.xml", activation, encodeType);
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -52,14 +51,14 @@ public class SAML1Base64AttributeEncoderParserTest extends BaseAttributeDefiniti
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1ByteAttributeTranscoder);
         assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "SAML1_BASE64_ATTRIBUTE_NAME");
         assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_BASE64_ATTRIBUTE_NAME_SPACE");
-        assertEquals(value, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, false);
+        assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
+        checkEncodeType(rule, encodeType==null ? false: encodeType);
     }
 
     
     @Test public void defaultCase() {
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml1Base64Default.xml", Collection.class);
+                getAttributeTranscoderRule("resolver/saml1Base64Default.xml");
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -72,6 +71,6 @@ public class SAML1Base64AttributeEncoderParserTest extends BaseAttributeDefiniti
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
-        getAttributeTranscoderRule("resolver/saml1Base64NoName.xml", Collection.class);
+        getAttributeTranscoderRule("resolver/saml1Base64NoName.xml");
     }
 }
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1ScopedStringAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1ScopedStringAttributeEncoderParserTest.java
index 3fce643..7759822 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1ScopedStringAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1ScopedStringAttributeEncoderParserTest.java
@@ -17,7 +17,10 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.function.Predicate;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
+import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1ScopedStringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
@@ -35,16 +38,12 @@ import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1ScopedStringAttri
 /**
  * Test for {@link SAML1ScopedStringAttributeEncoderParser}.
  */
-public class SAML1ScopedStringAttributeEncoderParserTest extends BaseAttributeDefinitionParserTest {
+public class SAML1ScopedStringAttributeEncoderParserTest extends BaseEncoderDefinitionParserTest {
 
-    @Test public void newNamespace() {
-        boolTest(true);
-        boolTest(false);
-    }
-
-    private void boolTest(boolean value) {
+    protected void testWithProperties(final boolean activation, final Boolean encodeType) {
+        
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml1Scoped.xml", Collection.class, value?"true":"false");
+                getAttributeTranscoderRule("resolver/saml1Scoped.xml", activation, encodeType);
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -55,14 +54,14 @@ public class SAML1ScopedStringAttributeEncoderParserTest extends BaseAttributeDe
         assertEquals(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE), "attribute");
         assertEquals(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_ATTR_NAME), "saml1ScopeAttrib");
         assertEquals(rule.get(SAML1ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER), "#@#");
-        assertEquals(value, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, false);
+        assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
+        checkEncodeType(rule, encodeType!=null ? encodeType : false);
 }
 
     
     @Test public void defaultCase() {
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml1ScopedDefault.xml", Collection.class);
+                getAttributeTranscoderRule("resolver/saml1ScopedDefault.xml");
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -78,7 +77,7 @@ public class SAML1ScopedStringAttributeEncoderParserTest extends BaseAttributeDe
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
-        getAttributeTranscoderRule("resolver/saml1ScopedNoName.xml", Collection.class);
+        getAttributeTranscoderRule("resolver/saml1ScopedNoName.xml");
     }
 
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringAttributeEncoderParserTest.java
index 7cdf9b8..28aad0b 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1StringAttributeEncoderParserTest.java
@@ -17,7 +17,10 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.function.Predicate;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
+import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1StringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
@@ -35,15 +38,12 @@ import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1StringAttributeTr
 /**
  * Test for {@link SAML1StringAttributeEncoderParser}.
  */
-public class SAML1StringAttributeEncoderParserTest extends BaseAttributeDefinitionParserTest {
+public class SAML1StringAttributeEncoderParserTest extends BaseEncoderDefinitionParserTest {
 
-    @Test public void newNameFormat() {
-        newNameFormat(true);
-        newNameFormat(false);
-    }
-    private void newNameFormat(boolean value) {
+    protected void testWithProperties(final boolean activation, final Boolean encodeType) {
+        
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml1String.xml", Collection.class, value?"true":"false");
+                getAttributeTranscoderRule("resolver/saml1String.xml", activation, encodeType);
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -51,14 +51,14 @@ public class SAML1StringAttributeEncoderParserTest extends BaseAttributeDefiniti
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1StringAttributeTranscoder);
         assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "SAML1_STRING_ATTRIBUTE_NAME");
         assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_STRING_ATTRIBUTE_NAME_SPACE");
-        assertEquals(value, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
+        checkEncodeType(rule, encodeType!=null ? encodeType : true);
     }
 
     
     @Test public void defaultCase() {
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml1StringDefault.xml", Collection.class);
+                getAttributeTranscoderRule("resolver/saml1StringDefault.xml");
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -71,7 +71,7 @@ public class SAML1StringAttributeEncoderParserTest extends BaseAttributeDefiniti
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
-        getAttributeTranscoderRule("resolver/saml1StringNoName.xml", Collection.class);
+        getAttributeTranscoderRule("resolver/saml1StringNoName.xml");
     }
     
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1XMLObjectAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1XMLObjectAttributeEncoderParserTest.java
index 92a8ccc..762af65 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1XMLObjectAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML1XMLObjectAttributeEncoderParserTest.java
@@ -17,7 +17,10 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.function.Predicate;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
+import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML1XMLObjectAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML1AttributeTranscoder;
@@ -35,16 +38,12 @@ import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1XMLObjectAttribut
 /**
  * Test for {@link SAML1XMLObjectAttributeEncoderParser}.
  */
-public class SAML1XMLObjectAttributeEncoderParserTest extends BaseAttributeDefinitionParserTest {
+public class SAML1XMLObjectAttributeEncoderParserTest extends BaseEncoderDefinitionParserTest {
 
-    @Test public void newNamespace() {
-        boolTest(true);
-        boolTest(false);
-    }
-
-    private void boolTest(boolean value) {
+    protected void testWithProperties(final boolean activation, final Boolean encodeType) {
+        
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml1XmlObject.xml", Collection.class, value?"true":"false");
+                getAttributeTranscoderRule("resolver/saml1XmlObject.xml", activation, encodeType);
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -52,13 +51,13 @@ public class SAML1XMLObjectAttributeEncoderParserTest extends BaseAttributeDefin
         assertTrue(rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER) instanceof SAML1XMLObjectAttributeTranscoder);
         assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAME), "SAML1_XMLObject_ATTRIBUTE_NAME");
         assertEquals(rule.get(AbstractSAML1AttributeTranscoder.PROP_NAMESPACE), "SAML1_XMLObject_ATTRIBUTE_NAME_SPACE");
-        assertEquals(value, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
+        checkEncodeType(rule, encodeType!=null ? encodeType : true);
 }
     
     @Test public void defaultCase() {
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml1XmlObjectDefault.xml", Collection.class);
+                getAttributeTranscoderRule("resolver/saml1XmlObjectDefault.xml");
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -71,6 +70,6 @@ public class SAML1XMLObjectAttributeEncoderParserTest extends BaseAttributeDefin
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
-        getAttributeTranscoderRule("resolver/saml1XmlObjectNoName.xml", Collection.class);
+        getAttributeTranscoderRule("resolver/saml1XmlObjectNoName.xml");
     }
 }
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2Base64AttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2Base64AttributeEncoderParserTest.java
index caec10a..28df56f 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2Base64AttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2Base64AttributeEncoderParserTest.java
@@ -17,7 +17,10 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.function.Predicate;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
+import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2Base64AttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
@@ -35,16 +38,12 @@ import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2ByteAttributeTran
 /**
  * Test for {@link SAML2Base64AttributeEncoderParser}.
  */
-public class SAML2Base64AttributeEncoderParserTest extends BaseAttributeDefinitionParserTest {
+public class SAML2Base64AttributeEncoderParserTest extends BaseEncoderDefinitionParserTest {
 
-    @Test public void newNameFormat() {
-        boolTest(true);
-        boolTest(false);
-    }
-
-    private void boolTest(boolean value) {
+    protected void testWithProperties(final boolean activation, final Boolean encodeType) {
+        
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml2Base64.xml", Collection.class, value?"true":"false");
+                getAttributeTranscoderRule("resolver/saml2Base64.xml", activation, encodeType);
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -53,13 +52,13 @@ public class SAML2Base64AttributeEncoderParserTest extends BaseAttributeDefiniti
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "Saml2Base64_ATTRIBUTE_NAME");
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2Base64_ATTRIBUTE_NAME_FORMAT");
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2Base64_ATTRIBUTE_FRIENDLY_NAME");
-        assertEquals(value, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
+        checkEncodeType(rule, encodeType!=null ? encodeType : true);
     }
     
     @Test public void defaultCase() {
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml2Base64Default.xml", Collection.class);
+                getAttributeTranscoderRule("resolver/saml2Base64Default.xml");
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -73,6 +72,6 @@ public class SAML2Base64AttributeEncoderParserTest extends BaseAttributeDefiniti
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
-        getAttributeTranscoderRule("resolver/saml2Base64NoName.xml", Collection.class);
+        getAttributeTranscoderRule("resolver/saml2Base64NoName.xml");
     }
 }
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2ScopedStringAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2ScopedStringAttributeEncoderParserTest.java
index e1c56a0..321331f 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2ScopedStringAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2ScopedStringAttributeEncoderParserTest.java
@@ -17,7 +17,10 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.function.Predicate;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
+import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2ScopedStringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
@@ -35,16 +38,12 @@ import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2ScopedStringAttri
 /**
  * Test for {@link SAML2ScopedStringAttributeEncoderParser}.
  */
-public class SAML2ScopedStringAttributeEncoderParserTest extends BaseAttributeDefinitionParserTest {
+public class SAML2ScopedStringAttributeEncoderParserTest extends BaseEncoderDefinitionParserTest {
 
-    @Test public void resolver() {
-        boolTest(true);
-        boolTest(false);
-    }
-
-    private void boolTest(boolean value) {
+    protected void testWithProperties(final boolean activation, final Boolean encodeType) {
+        
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml2Scoped.xml", Collection.class, value?"true":"false");
+                getAttributeTranscoderRule("resolver/saml2Scoped.xml", activation, encodeType);
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -56,13 +55,13 @@ public class SAML2ScopedStringAttributeEncoderParserTest extends BaseAttributeDe
         assertEquals(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_TYPE), "attribute");
         assertEquals(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_ATTR_NAME), "scopeAttrib");
         assertEquals(rule.get(SAML2ScopedStringAttributeTranscoder.PROP_SCOPE_DELIMITER), "###");
-        assertEquals(value, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, false);
+        assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
+        checkEncodeType(rule, encodeType!=null ? encodeType : false);
     }
     
     @Test public void defaultCase() {
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml2ScopedDefault.xml", Collection.class);
+                getAttributeTranscoderRule("resolver/saml2ScopedDefault.xml");
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -79,6 +78,6 @@ public class SAML2ScopedStringAttributeEncoderParserTest extends BaseAttributeDe
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
-        getAttributeTranscoderRule("resolver/saml2ScopedNoName.xml", Collection.class);
+        getAttributeTranscoderRule("resolver/saml2ScopedNoName.xml");
     }
 }
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringAttributeEncoderParserTest.java
index 5b567de..8d2f2c0 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2StringAttributeEncoderParserTest.java
@@ -17,7 +17,10 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.function.Predicate;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
+import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2StringAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
@@ -35,16 +38,12 @@ import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2StringAttributeTr
 /**
  * Test for {@link SAML2StringAttributeEncoderParser}.
  */
-public class SAML2StringAttributeEncoderParserTest extends BaseAttributeDefinitionParserTest {
+public class SAML2StringAttributeEncoderParserTest extends BaseEncoderDefinitionParserTest {
   
-    @Test public void newNameFormat() {
-        boolTest(true);
-        boolTest(false);
-    }
-
-    private void boolTest(boolean value) {
+    protected void testWithProperties(final boolean activation, final Boolean encodeType) {
+        
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml2String.xml", Collection.class, value?"true":"false");
+                getAttributeTranscoderRule("resolver/saml2String.xml", activation, encodeType);
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -53,13 +52,13 @@ public class SAML2StringAttributeEncoderParserTest extends BaseAttributeDefiniti
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "Saml2String_ATTRIBUTE_NAME");
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2String_ATTRIBUTE_NAME_FORMAT");
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2String_ATTRIBUTE_FRIENDLY_NAME");
-        assertEquals(value, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, false);
+        assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
+        checkEncodeType(rule, encodeType!=null ? encodeType : false);
     }
     
     @Test public void defaultCase() {
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml2StringDefault.xml", Collection.class);
+                getAttributeTranscoderRule("resolver/saml2StringDefault.xml");
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -73,7 +72,7 @@ public class SAML2StringAttributeEncoderParserTest extends BaseAttributeDefiniti
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
-        getAttributeTranscoderRule("resolver/saml2StringNoName.xml", Collection.class);
+        getAttributeTranscoderRule("resolver/saml2StringNoName.xml");
     }
     
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2XMLObjectAttributeEncoderParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2XMLObjectAttributeEncoderParserTest.java
index 44d3bce..94975df 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2XMLObjectAttributeEncoderParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/enc/SAML2XMLObjectAttributeEncoderParserTest.java
@@ -17,7 +17,10 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.enc;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
 
 import java.util.Collection;
 import java.util.Map;
@@ -26,7 +29,7 @@ import java.util.function.Predicate;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.testng.annotations.Test;
 
-import net.shibboleth.idp.attribute.resolver.spring.BaseAttributeDefinitionParserTest;
+import net.shibboleth.idp.attribute.resolver.spring.BaseEncoderDefinitionParserTest;
 import net.shibboleth.idp.attribute.resolver.spring.enc.impl.SAML2XMLObjectAttributeEncoderParser;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.saml.attribute.transcoding.AbstractSAML2AttributeTranscoder;
@@ -35,15 +38,12 @@ import net.shibboleth.idp.saml.attribute.transcoding.impl.SAML2XMLObjectAttribut
 /**
  * Test for {@link SAML2XMLObjectAttributeEncoderParser}.
  */
-public class SAML2XMLObjectAttributeEncoderParserTest extends BaseAttributeDefinitionParserTest {
+public class SAML2XMLObjectAttributeEncoderParserTest extends BaseEncoderDefinitionParserTest {
 
-    @Test public void newNameFormat() {
-        newNameFormat(true);
-        newNameFormat(false);
-    }
-    private void newNameFormat(boolean value) {
+    protected void testWithProperties(final boolean activation, final Boolean encodeType) {
+        
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml2XmlObject.xml", Collection.class, value?"true":"false");
+                getAttributeTranscoderRule("resolver/saml2XmlObject.xml", activation, encodeType);
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -52,13 +52,13 @@ public class SAML2XMLObjectAttributeEncoderParserTest extends BaseAttributeDefin
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME), "Saml2XmlObject_ATTRIBUTE_NAME");
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_NAME_FORMAT), "Saml2XmlObject_ATTRIBUTE_NAME_FORMAT");
         assertEquals(rule.get(AbstractSAML2AttributeTranscoder.PROP_FRIENDLY_NAME), "Saml2XmlObject_ATTRIBUTE_FRIENDLY_NAME");
-        assertEquals(value, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
-        checkEncodeType(rule, true);
+        assertEquals(activation, ((Predicate) rule.get(AttributeTranscoderRegistry.PROP_CONDITION)).test(null));
+        checkEncodeType(rule, encodeType!=null ? encodeType : true);
     }
 
     @Test public void defaultCase() {
         final Collection<Map<String,Object>> rules =
-                getAttributeTranscoderRule("resolver/saml2XmlObjectDefault.xml", Collection.class);
+                getAttributeTranscoderRule("resolver/saml2XmlObjectDefault.xml");
         assertEquals(rules.size(), 1);
         
         final Map<String,Object> rule = rules.iterator().next();
@@ -72,7 +72,7 @@ public class SAML2XMLObjectAttributeEncoderParserTest extends BaseAttributeDefin
     }
     
     @Test(expectedExceptions={BeanDefinitionStoreException.class,})  public void noName() {
-        getAttributeTranscoderRule("resolver/saml2XmlObjectNoName.xml", Collection.class);
+        getAttributeTranscoderRule("resolver/saml2XmlObjectNoName.xml");
     }
 
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1Base64.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1Base64.xml
index 550d989..389ee75 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1Base64.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1Base64.xml
@@ -4,7 +4,7 @@
 	xmlns="urn:mace:shibboleth:2.0:resolver"
 	name="SAML1_BASE64_ATTRIBUTE_NAME" 
 	namespace="SAML1_BASE64_ATTRIBUTE_NAME_SPACE"
-	encodeType="false"
+	encodeType="%{the.encodeType.property:false}"
 	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
     <ActivationConditionScript>
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1Scoped.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1Scoped.xml
index d76d6be..43beb17 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1Scoped.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1Scoped.xml
@@ -7,7 +7,7 @@
 	scopeType="attribute"
 	scopeAttribute="saml1ScopeAttrib"
 	scopeDelimiter="#@#"
-    encodeType="false"
+    encodeType="%{the.encodeType.property:false}"
 	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
     <ActivationConditionScript>
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1String.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1String.xml
index 40e84c0..034e593 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1String.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1String.xml
@@ -4,7 +4,7 @@
 	xmlns="urn:mace:shibboleth:2.0:resolver"
 	name="SAML1_STRING_ATTRIBUTE_NAME" 
 	namespace="SAML1_STRING_ATTRIBUTE_NAME_SPACE"
-	encodeType="true"
+	encodeType="%{the.encodeType.property:true}"
 	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
     <ActivationConditionScript>
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1XmlObject.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1XmlObject.xml
index 9482374..8ad6608 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1XmlObject.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml1XmlObject.xml
@@ -4,7 +4,7 @@
 	xmlns="urn:mace:shibboleth:2.0:resolver"
 	name="SAML1_XMLObject_ATTRIBUTE_NAME" 
 	namespace="SAML1_XMLObject_ATTRIBUTE_NAME_SPACE"
-	encodeType="true"
+	encodeType="%{the.encodeType.property:true}"
 	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
     <ActivationConditionScript>
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2Base64.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2Base64.xml
index 46cc6e7..931d44d 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2Base64.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2Base64.xml
@@ -5,7 +5,7 @@
 	name="Saml2Base64_ATTRIBUTE_NAME" 
 	nameFormat="Saml2Base64_ATTRIBUTE_NAME_FORMAT"
 	friendlyName="Saml2Base64_ATTRIBUTE_FRIENDLY_NAME"
-	encodeType="true"
+	encodeType="%{the.encodeType.property:true}"
 	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
     <ActivationConditionScript>
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2Scoped.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2Scoped.xml
index 0b66ea8..8b9c3ae 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2Scoped.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2Scoped.xml
@@ -8,7 +8,7 @@
 	scopeType="attribute"
 	scopeAttribute="scopeAttrib"
 	scopeDelimiter="###"
-	encodeType="false"
+	encodeType="%{the.encodeType.property:false}"
 	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
     <ActivationConditionScript>
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2String.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2String.xml
index df910c1..97ab520 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2String.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2String.xml
@@ -5,7 +5,7 @@
 	name="Saml2String_ATTRIBUTE_NAME" 
 	nameFormat="Saml2String_ATTRIBUTE_NAME_FORMAT"
 	friendlyName="Saml2String_ATTRIBUTE_FRIENDLY_NAME"
-	encodeType="false"
+	encodeType="%{the.encodeType.property:false}"
 	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
     <ActivationConditionScript>
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2XmlObject.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2XmlObject.xml
index cfab5c1..97d74f0 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2XmlObject.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/enc/resolver/saml2XmlObject.xml
@@ -5,7 +5,7 @@
 	name="Saml2XmlObject_ATTRIBUTE_NAME" 
 	nameFormat="Saml2XmlObject_ATTRIBUTE_NAME_FORMAT"
 	friendlyName="Saml2XmlObject_ATTRIBUTE_FRIENDLY_NAME"
-	encodeType="true"
+	encodeType="%{the.encodeType.property:true}"
 	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
 
     <ActivationConditionScript>

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


More information about the commits mailing list