1.1 --- a/tests/xmlrpc_test.py Sun Sep 30 23:23:40 2007 +0000
1.2 +++ b/tests/xmlrpc_test.py Sun Sep 30 23:23:48 2007 +0000
1.3 @@ -2,6 +2,8 @@
1.4
1.5 import libxml2dom.xmlrpc
1.6
1.7 +# Some examples from the specification.
1.8 +
1.9 request = """<?xml version="1.0"?>
1.10 <methodCall>
1.11 <methodName>examples.getStateName</methodName>
1.12 @@ -13,6 +15,12 @@
1.13 </methodCall>"""
1.14
1.15 req = libxml2dom.xmlrpc.parseString(request)
1.16 +assert req.methodName == "examples.getStateName"
1.17 +assert req.parameterValues == [41]
1.18 +assert req.fault is None
1.19 +print "Method name:", req.methodName
1.20 +print "Parameter values:", req.parameterValues
1.21 +print "Fault:", req.fault
1.22
1.23 response = """<?xml version="1.0"?>
1.24 <methodResponse>
1.25 @@ -24,6 +32,12 @@
1.26 </methodResponse>"""
1.27
1.28 resp = libxml2dom.xmlrpc.parseString(response)
1.29 +assert resp.methodName is None
1.30 +assert resp.parameterValues == ["South Dakota"]
1.31 +assert resp.fault is None
1.32 +print "Method name:", resp.methodName
1.33 +print "Parameter values:", resp.parameterValues
1.34 +print "Fault:", resp.fault
1.35
1.36 failed = """<?xml version="1.0"?>
1.37 <methodResponse>
1.38 @@ -44,5 +58,54 @@
1.39 </methodResponse>"""
1.40
1.41 f = libxml2dom.xmlrpc.parseString(failed)
1.42 +assert f.methodName is None
1.43 +assert f.parameterValues == []
1.44 +assert f.fault.code == "4"
1.45 +assert f.fault.reason == "Too many parameters."
1.46 +print "Method name:", f.methodName
1.47 +print "Parameter values:", f.parameterValues
1.48 +print "Fault code:", f.fault.code
1.49 +
1.50 +# Python Package Index examples.
1.51 +
1.52 +search = """<?xml version="1.0"?>
1.53 +<methodCall>
1.54 + <methodName>search</methodName>
1.55 + <params>
1.56 + <param>
1.57 + <value>
1.58 + <struct>
1.59 + <member>
1.60 + <name>name</name>
1.61 + <value><string>libxml2dom</string></value>
1.62 + </member>
1.63 + <member>
1.64 + <name>description</name>
1.65 + <value>XML</value>
1.66 + </member>
1.67 + </struct>
1.68 + </value>
1.69 + </param>
1.70 + <param>
1.71 + <value>
1.72 + <string>and</string>
1.73 + </value>
1.74 + </param>
1.75 + </params>
1.76 +</methodCall>"""
1.77 +
1.78 +s = libxml2dom.xmlrpc.parseString(search)
1.79 +assert s.methodName == "search"
1.80 +assert s.parameterValues == [[("name", "libxml2dom"), ("description", "XML")], "and"]
1.81 +assert s.parameterItems == [
1.82 + (None, [("name", "libxml2dom"), ("description", "XML")]),
1.83 + (None, "and")
1.84 + ]
1.85 +assert s.fault is None
1.86 +print "Method name:", s.methodName
1.87 +print "Parameter values:", s.parameterValues
1.88 +print "Parameter items:", s.parameterItems
1.89 +print "Parameter map:", s.parameterMap
1.90 +print "Fault:", s.fault
1.91
1.92 # vim: tabstop=4 expandtab shiftwidth=4