diff options
author | Rob Austein <sra@hactrn.net> | 2007-08-02 16:32:49 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-08-02 16:32:49 +0000 |
commit | 2a46fbe7fcdd0a4b549e00507edc4f673b320f51 (patch) | |
tree | 71bb3b9ca5a4eab645c0b606600f57511a29a6a0 /scripts/xml-parse-test.py | |
parent | de681c632972d65fa0351bebac9a1a6b1fbc1920 (diff) |
Checkpoint
svn path=/scripts/Makefile; revision=820
Diffstat (limited to 'scripts/xml-parse-test.py')
-rwxr-xr-x | scripts/xml-parse-test.py | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/scripts/xml-parse-test.py b/scripts/xml-parse-test.py index 8e830d8d..0993a02f 100755 --- a/scripts/xml-parse-test.py +++ b/scripts/xml-parse-test.py @@ -1,17 +1,19 @@ # $Id$ -import glob, rpki.up_down, rpki.left_right, xml.sax, lxml.etree, lxml.sax +import glob, rpki.up_down, rpki.left_right, xml.sax, lxml.etree, lxml.sax, pprint, POW, POW.pkix -def test(fileglob, schema, proto, encoding): +def test(fileglob, schema, sax_handler, encoding, tester=None): rng = lxml.etree.RelaxNG(lxml.etree.parse(schema)) files = glob.glob(fileglob) files.sort() for f in files: print "\n<!--", f, "-->" - handler = proto.sax_handler() + handler = sax_handler() et = lxml.etree.parse(f) rng.assertValid(et) lxml.sax.saxify(et, handler) + if (tester): + tester(et, handler.result) et = handler.result.toXML() print lxml.etree.tostring(et, pretty_print=True, encoding=encoding, xml_declaration=True) try: @@ -20,6 +22,31 @@ def test(fileglob, schema, proto, encoding): print rng.error_log.last_error raise -test("up-down-protocol-samples/*.xml", "up-down-medium-schema.rng", rpki.up_down, encoding="utf-8") +def pprint_cert(cert): + print POW.derRead(POW.X509_CERTIFICATE, cert.toString()).pprint() -test("left-right-protocol-samples/*.xml", "left-right-schema.rng", rpki.left_right, encoding="us-ascii") +def ud_tester(et, msg): + assert isinstance(msg, rpki.up_down.message_pdu) + if isinstance(msg.payload, rpki.up_down.list_response_pdu): + for c in msg.payload.classes: + for i in range(len(c.certs)): + print "[Certificate #%d]" % i + pprint_cert(c.certs[i].cert) + print "[Issuer]" + pprint_cert(c.issuer) + print "Type:", et.getroot().get("type") + +def lr_tester(et, msg): + assert isinstance(msg, rpki.left_right.msg) + +test(fileglob="up-down-protocol-samples/*.xml", + schema="up-down-medium-schema.rng", + sax_handler=rpki.up_down.sax_handler, + encoding="utf-8", + tester=ud_tester) + +test(fileglob="left-right-protocol-samples/*.xml", + schema="left-right-schema.rng", + sax_handler=rpki.left_right.sax_handler, + encoding="us-ascii", + tester=lr_tester) |