diff options
author | Vlad Mencl <vladimir.mencl@reannz.co.nz> | 2021-06-09 22:24:11 +1200 |
---|---|---|
committer | Vlad Mencl <vladimir.mencl@reannz.co.nz> | 2021-06-09 22:24:11 +1200 |
commit | 65674f8458c8a6f1c5050238313b2dd932bfa735 (patch) | |
tree | 0e248640b58ec7c6d4ca41ae8a5a38308e4feb6f /src/saml2/mdstore.py | |
parent | a084c8f9f8922ec8292ee71c75a12c254be19758 (diff) | |
download | pysaml2-65674f8458c8a6f1c5050238313b2dd932bfa735.tar.gz |
fix: mdstore: fix exception handler in InMemoryMetaData.parse
The exception handler in InMemoryMetaData.parse was failing for subclasses
other then `MetaDataFile` with:
AttributeError: 'MetaDataExtern' object has no attribute 'filename'
- because `self.filename` is only defined for MetaDataFile but not MetaDataExtern
The handler was essentially expecting it would only be invoked for MetaDataFile
and not other subclasses of InMemoryMetaData.
Provide useful descriptive messages for MetaDataFile and MetaDataExtern
subclassses - and fall back to a generic (but safe) message otherwise.
Diffstat (limited to 'src/saml2/mdstore.py')
-rw-r--r-- | src/saml2/mdstore.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/saml2/mdstore.py b/src/saml2/mdstore.py index 999d1ecf..eb797944 100644 --- a/src/saml2/mdstore.py +++ b/src/saml2/mdstore.py @@ -618,7 +618,10 @@ class InMemoryMetaData(MetaData): try: self.entities_descr = md.entities_descriptor_from_string(xmlstr) except Exception as e: - raise SAMLError(f'Failed to parse metadata file: {self.filename}') from e + _md_desc = (f'metadata file: {self.filename}' if isinstance(self,MetaDataFile) else + f'remote metadata: {self.url}' if isinstance(self, MetaDataExtern) else + 'metadata') + raise SAMLError(f'Failed to parse {_md_desc}') from e if not self.entities_descr: self.entity_descr = md.entity_descriptor_from_string(xmlstr) |