summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVlad Mencl <vladimir.mencl@reannz.co.nz>2021-06-09 22:24:11 +1200
committerVlad Mencl <vladimir.mencl@reannz.co.nz>2021-06-09 22:24:11 +1200
commit65674f8458c8a6f1c5050238313b2dd932bfa735 (patch)
tree0e248640b58ec7c6d4ca41ae8a5a38308e4feb6f
parenta084c8f9f8922ec8292ee71c75a12c254be19758 (diff)
downloadpysaml2-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.
-rw-r--r--src/saml2/mdstore.py5
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)