Skip to content

Commit ca27b12

Browse files
Merge pull request #697 from ottonomy/bugfix/693-py3-make_metadata-accept-str
Allow generation of signed metadata in python3
2 parents 8e0582a + 4a568c9 commit ca27b12

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/saml2/metadata.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ def metadata_tostring_fix(desc, nspair, xmlstring=""):
6666
if not xmlstring:
6767
xmlstring = desc.to_string(nspair)
6868

69-
if six.PY2:
69+
try:
7070
if "\"xs:string\"" in xmlstring and XMLNSXS not in xmlstring:
7171
xmlstring = xmlstring.replace(MDNS, MDNS + XMLNSXS)
72-
else:
72+
except TypeError:
7373
if b"\"xs:string\"" in xmlstring and bXMLNSXS not in xmlstring:
7474
xmlstring = xmlstring.replace(bMDNS, bMDNS + bXMLNSXS)
7575

tests/test_39_metadata.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import copy
22
from saml2.config import SPConfig
3-
from saml2.metadata import entity_descriptor
3+
from saml2.metadata import create_metadata_string, entity_descriptor
44
from saml2.saml import NAME_FORMAT_URI, NAME_FORMAT_BASIC
5+
from saml2 import sigver
6+
7+
from pathutils import full_path
58

69
__author__ = 'roland'
710

@@ -47,5 +50,17 @@ def test_requested_attribute_name_format():
4750
assert req_attr.name_format == NAME_FORMAT_BASIC
4851

4952

53+
def test_signed_metadata_proper_str_bytes_handling():
54+
sp_conf_2 = sp_conf.copy()
55+
sp_conf_2['key_file'] = full_path("test.key")
56+
sp_conf_2['cert_file'] = full_path("inc-md-cert.pem")
57+
# requires xmlsec binaries per https://pysaml2.readthedocs.io/en/latest/examples/sp.html
58+
sp_conf_2['xmlsec_binary'] = sigver.get_xmlsec_binary(["/opt/local/bin"])
59+
cnf = SPConfig().load(sp_conf_2, metadata_construction=True)
60+
61+
# This will raise TypeError if string/bytes handling is not correct
62+
sp_metadata = create_metadata_string('', config=cnf, sign=True)
63+
64+
5065
if __name__ == '__main__':
51-
test_requested_attribute_name_format()
66+
test_requested_attribute_name_format()

0 commit comments

Comments
 (0)