diff options
author | Roland Hedberg <roland.hedberg@adm.umu.se> | 2014-03-28 09:39:36 +0100 |
---|---|---|
committer | Fredrik Thulin <fredrik@thulin.net> | 2014-04-15 09:36:16 +0200 |
commit | 8614509ebb02dab6b31f2563f8ff0a79144dcc4e (patch) | |
tree | 4eda2f00ac3fe14087b6c66d7d5a29919cd1b8a7 | |
parent | a2cddd82dde2e7fddf1ff859e29903ab20c3e27b (diff) | |
download | pysaml2-8614509ebb02dab6b31f2563f8ff0a79144dcc4e.tar.gz |
More user friendly error message.
-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 f1dd790c..eba2ea84 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 = [] |