diff options
author | Roland Hedberg <roland.hedberg@adm.umu.se> | 2014-03-28 09:39:36 +0100 |
---|---|---|
committer | Roland Hedberg <roland.hedberg@adm.umu.se> | 2014-03-28 09:39:36 +0100 |
commit | 2db8008701a05823be41d2321aa5e1f59df3b8ca (patch) | |
tree | 1b97cc6546d253c5199351298b111318e4f6bb2b /src/saml2/assertion.py | |
parent | 692aaac27cece54949bd189be1f580c7374d999b (diff) | |
download | pysaml2-2db8008701a05823be41d2321aa5e1f59df3b8ca.tar.gz |
More user friendly error message.
Diffstat (limited to 'src/saml2/assertion.py')
-rw-r--r-- | src/saml2/assertion.py | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/src/saml2/assertion.py b/src/saml2/assertion.py index 0ed30570..59cd6216 100644 --- a/src/saml2/assertion.py +++ b/src/saml2/assertion.py @@ -93,32 +93,33 @@ def filter_on_attributes(ava, required=None, optional=None, acs=None): if required is None: required = [] + nform = "friendly_name" for attr in required: - found = False - nform = "" - for nform in ["friendly_name", "name"]: - try: - _name = attr[nform] - except KeyError: - if nform == "friendly_name": - _name = get_local_name(acs, attr["name"], - attr["name_format"]) - else: - continue + try: + _name = attr[nform] + except KeyError: + if nform == "friendly_name": + _name = get_local_name(acs, attr["name"], + attr["name_format"]) + else: + continue - _fn = _match(_name, ava) - if _fn: - try: - values = [av["text"] for av in attr["attribute_value"]] - except KeyError: - values = [] - res[_fn] = _filter_values(ava[_fn], values, True) - found = True - break + _fn = _match(_name, ava) + if not _fn: # In the unlikely case that someone has provided us + # with URIs as attribute names + _fn = _match(attr["name"], ava) - if not found: - raise MissingValue("Required attribute missing: '%s'" % ( - attr[nform],)) + if _fn: + try: + values = [av["text"] for av in attr["attribute_value"]] + except KeyError: + values = [] + res[_fn] = _filter_values(ava[_fn], values, True) + continue + else: + desc = "Required attribute missing: '%s' (%s)" % (attr["name"], + _name) + raise MissingValue(desc) if optional is None: optional = [] |