diff options
author | Ivan Kanakarakis <ivan.kanak@gmail.com> | 2020-07-07 12:46:49 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-07 12:46:49 +0300 |
commit | ca27b128e135cdde90117f9c418673079c1fdea5 (patch) | |
tree | ccac39cf8a1e9039f6c2d09f1a6b4c2f0a394013 | |
parent | 8e0582ad87307f59370028ca93a4aa6f1bdc10a4 (diff) | |
parent | 4a568c964b5dc59f3620249ead45b5c75225346f (diff) | |
download | pysaml2-ca27b128e135cdde90117f9c418673079c1fdea5.tar.gz |
Merge pull request #697 from ottonomy/bugfix/693-py3-make_metadata-accept-str
Allow generation of signed metadata in python3
-rw-r--r-- | src/saml2/metadata.py | 4 | ||||
-rw-r--r-- | tests/test_39_metadata.py | 19 |
2 files changed, 19 insertions, 4 deletions
diff --git a/src/saml2/metadata.py b/src/saml2/metadata.py index 5c465032..b2317131 100644 --- a/src/saml2/metadata.py +++ b/src/saml2/metadata.py @@ -66,10 +66,10 @@ def metadata_tostring_fix(desc, nspair, xmlstring=""): if not xmlstring: xmlstring = desc.to_string(nspair) - if six.PY2: + try: if "\"xs:string\"" in xmlstring and XMLNSXS not in xmlstring: xmlstring = xmlstring.replace(MDNS, MDNS + XMLNSXS) - else: + except TypeError: if b"\"xs:string\"" in xmlstring and bXMLNSXS not in xmlstring: xmlstring = xmlstring.replace(bMDNS, bMDNS + bXMLNSXS) diff --git a/tests/test_39_metadata.py b/tests/test_39_metadata.py index a3796083..8ab6dfa5 100644 --- a/tests/test_39_metadata.py +++ b/tests/test_39_metadata.py @@ -1,7 +1,10 @@ import copy from saml2.config import SPConfig -from saml2.metadata import entity_descriptor +from saml2.metadata import create_metadata_string, entity_descriptor from saml2.saml import NAME_FORMAT_URI, NAME_FORMAT_BASIC +from saml2 import sigver + +from pathutils import full_path __author__ = 'roland' @@ -47,5 +50,17 @@ def test_requested_attribute_name_format(): assert req_attr.name_format == NAME_FORMAT_BASIC +def test_signed_metadata_proper_str_bytes_handling(): + sp_conf_2 = sp_conf.copy() + sp_conf_2['key_file'] = full_path("test.key") + sp_conf_2['cert_file'] = full_path("inc-md-cert.pem") + # requires xmlsec binaries per https://pysaml2.readthedocs.io/en/latest/examples/sp.html + sp_conf_2['xmlsec_binary'] = sigver.get_xmlsec_binary(["/opt/local/bin"]) + cnf = SPConfig().load(sp_conf_2, metadata_construction=True) + + # This will raise TypeError if string/bytes handling is not correct + sp_metadata = create_metadata_string('', config=cnf, sign=True) + + if __name__ == '__main__': - test_requested_attribute_name_format()
\ No newline at end of file + test_requested_attribute_name_format() |