Merge pull request #361 from rebeckag/eptid-fix
Handle list of attribute values and serialize them properly.
This commit is contained in:
@@ -8,7 +8,7 @@ from importlib import import_module
|
|||||||
|
|
||||||
from saml2.s_utils import factory
|
from saml2.s_utils import factory
|
||||||
from saml2.s_utils import do_ava
|
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 extension_elements_to_elements
|
||||||
from saml2 import SAMLError
|
from saml2 import SAMLError
|
||||||
from saml2.saml import NAME_FORMAT_UNSPECIFIED, NAMEID_FORMAT_PERSISTENT, NameID
|
from saml2.saml import NAME_FORMAT_UNSPECIFIED, NAMEID_FORMAT_PERSISTENT, NameID
|
||||||
@@ -495,7 +495,12 @@ class AttributeConverter(object):
|
|||||||
if name:
|
if name:
|
||||||
if name == "urn:oid:1.3.6.1.4.1.5923.1.1.1.10":
|
if name == "urn:oid:1.3.6.1.4.1.5923.1.1.1.10":
|
||||||
# special case for eduPersonTargetedID
|
# 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:
|
else:
|
||||||
attr_value = do_ava(value)
|
attr_value = do_ava(value)
|
||||||
attributes.append(factory(saml.Attribute,
|
attributes.append(factory(saml.Attribute,
|
||||||
|
|||||||
@@ -211,11 +211,12 @@ class TestAC():
|
|||||||
assert attr_conv._fro is None and attr_conv._to is None
|
assert attr_conv._fro is None and attr_conv._to is None
|
||||||
|
|
||||||
def test_from_local_nest_eduPersonTargetedID_in_NameID(self):
|
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)
|
attributes = from_local(self.acs, ava, URI_NF)
|
||||||
assert len(attributes) == 1
|
assert len(attributes) == 1
|
||||||
assert len(attributes[0].attribute_value) == 1
|
assert len(attributes[0].attribute_value) == 2
|
||||||
assert attributes[0].attribute_value[0].text == NameID(format=NAMEID_FORMAT_PERSISTENT, text="test value").to_string().decode("utf-8")
|
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():
|
def test_noop_attribute_conversion():
|
||||||
|
|||||||
Reference in New Issue
Block a user