#on AF_INET only.
URL = "http://%s:%d"%(ADDR, PORT)
serv.server_activate()
- paths = ["/foo", "/foo/bar"]
+ paths = [
+ "/foo", "/foo/bar",
+ "/foo?k=v", "/foo#frag", "/foo?k=v#frag",
+ "", "/", "/RPC2", "?k=v", "#frag",
+ ]
for path in paths:
d = serv.add_dispatcher(path, xmlrpc.server.SimpleXMLRPCDispatcher())
d.register_introspection_functions()
d.register_multicall_functions()
+ d.register_function(lambda p=path: p, 'test')
serv.get_dispatcher(paths[0]).register_function(pow)
serv.get_dispatcher(paths[1]).register_function(lambda x,y: x+y, 'add')
serv.add_dispatcher("/is/broken", BrokenDispatcher())
p = xmlrpclib.ServerProxy(URL+"/is/broken")
self.assertRaises(xmlrpclib.Fault, p.add, 6, 8)
+ def test_invalid_path(self):
+ p = xmlrpclib.ServerProxy(URL+"/invalid")
+ self.assertRaises(xmlrpclib.Fault, p.add, 6, 8)
+
+ def test_path_query_fragment(self):
+ p = xmlrpclib.ServerProxy(URL+"/foo?k=v#frag")
+ self.assertEqual(p.test(), "/foo?k=v#frag")
+
+ def test_path_fragment(self):
+ p = xmlrpclib.ServerProxy(URL+"/foo#frag")
+ self.assertEqual(p.test(), "/foo#frag")
+
+ def test_path_query(self):
+ p = xmlrpclib.ServerProxy(URL+"/foo?k=v")
+ self.assertEqual(p.test(), "/foo?k=v")
+
+ def test_empty_path(self):
+ p = xmlrpclib.ServerProxy(URL)
+ self.assertEqual(p.test(), "/RPC2")
+
+ def test_root_path(self):
+ p = xmlrpclib.ServerProxy(URL + "/")
+ self.assertEqual(p.test(), "/")
+
+ def test_empty_path_query(self):
+ p = xmlrpclib.ServerProxy(URL + "?k=v")
+ self.assertEqual(p.test(), "?k=v")
+
+ def test_empty_path_fragment(self):
+ p = xmlrpclib.ServerProxy(URL + "#frag")
+ self.assertEqual(p.test(), "#frag")
+
+
#A test case that verifies that a server using the HTTP/1.1 keep-alive mechanism
#does indeed serve subsequent requests on the same connection
class BaseKeepaliveServerTestCase(BaseServerTestCase):