summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Hedberg <roland@catalogix.se>2016-10-05 12:58:22 +0200
committerGitHub <noreply@github.com>2016-10-05 12:58:22 +0200
commitd61f88d1190c751920ca726b6231ae62a56083e6 (patch)
tree2f2e6396cffba40e35e4a65776d72fd92d5e289b
parentd14578563d7bed6000330516f3d7019674bb2a24 (diff)
parentaf18618cb7b6a3d13731517dd53c4326c7612680 (diff)
downloadpysaml2-d61f88d1190c751920ca726b6231ae62a56083e6.tar.gz
Merge pull request #361 from rebeckag/eptid-fix
Handle list of attribute values and serialize them properly.
-rw-r--r--src/saml2/attribute_converter.py9
-rw-r--r--tests/test_19_attribute_converter.py7
2 files changed, 11 insertions, 5 deletions
diff --git a/src/saml2/attribute_converter.py b/src/saml2/attribute_converter.py
index 561c5f24..3d52a816 100644
--- a/src/saml2/attribute_converter.py
+++ b/src/saml2/attribute_converter.py
@@ -8,7 +8,7 @@ from importlib import import_module
from saml2.s_utils import factory
from saml2.s_utils import do_ava
-from saml2 import saml
+from saml2 import saml, ExtensionElement, NAMESPACE
from saml2 import extension_elements_to_elements
from saml2 import SAMLError
from saml2.saml import NAME_FORMAT_UNSPECIFIED, NAMEID_FORMAT_PERSISTENT, NameID
@@ -495,7 +495,12 @@ class AttributeConverter(object):
if name:
if name == "urn:oid:1.3.6.1.4.1.5923.1.1.1.10":
# special case for eduPersonTargetedID
- attr_value = do_ava(NameID(format=NAMEID_FORMAT_PERSISTENT, text=value).to_string())
+ attr_value = []
+ for v in value:
+ extension_element = ExtensionElement("NameID", NAMESPACE,
+ attributes={'Format': NAMEID_FORMAT_PERSISTENT}, text=v)
+ attrval = saml.AttributeValue(extension_elements=[extension_element])
+ attr_value.append(attrval)
else:
attr_value = do_ava(value)
attributes.append(factory(saml.Attribute,
diff --git a/tests/test_19_attribute_converter.py b/tests/test_19_attribute_converter.py
index 7c1951e4..0fa807b7 100644
--- a/tests/test_19_attribute_converter.py
+++ b/tests/test_19_attribute_converter.py
@@ -211,11 +211,12 @@ class TestAC():
assert attr_conv._fro is None and attr_conv._to is None
def test_from_local_nest_eduPersonTargetedID_in_NameID(self):
- ava = {"edupersontargetedid": "test value"}
+ ava = {"edupersontargetedid": ["test value1", "test value2"]}
attributes = from_local(self.acs, ava, URI_NF)
assert len(attributes) == 1
- assert len(attributes[0].attribute_value) == 1
- assert attributes[0].attribute_value[0].text == NameID(format=NAMEID_FORMAT_PERSISTENT, text="test value").to_string().decode("utf-8")
+ assert len(attributes[0].attribute_value) == 2
+ assert attributes[0].attribute_value[0].extension_elements[0].text == "test value1"
+ assert attributes[0].attribute_value[1].extension_elements[0].text == "test value2"
def test_noop_attribute_conversion():