summaryrefslogtreecommitdiff
path: root/src/saml2/mdstore.py
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 /src/saml2/mdstore.py
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.
Diffstat (limited to 'src/saml2/mdstore.py')
-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)