summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_xmlrpc.py
diff options
context:
space:
mode:
authorCédric Krier <cedk@users.noreply.github.com>2019-02-19 16:18:50 (GMT)
committerVictor Stinner <vstinner@redhat.com>2019-02-19 16:18:50 (GMT)
commitbeda52ed36e701e45f22903fc4d3bec0d085b25b (patch)
treee96db330072912b7dce724ffdc547291bae4758a /Lib/test/test_xmlrpc.py
parent513e9b4425d09cb0b4889495f9b93dda341b8dd0 (diff)
downloadcpython-beda52ed36e701e45f22903fc4d3bec0d085b25b.zip
cpython-beda52ed36e701e45f22903fc4d3bec0d085b25b.tar.gz
cpython-beda52ed36e701e45f22903fc4d3bec0d085b25b.tar.bz2
bpo-35153: Add headers parameter to xmlrpc.client.ServerProxy (GH-10308)
Allow to add HTTP headers to XML-RPC requests sent to the server.
Diffstat (limited to 'Lib/test/test_xmlrpc.py')
-rw-r--r--Lib/test/test_xmlrpc.py63
1 files changed, 62 insertions, 1 deletions
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index 32263f7..916e9c4 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -1170,6 +1170,67 @@ class GzipUtilTestCase(unittest.TestCase):
xmlrpclib.gzip_decode(encoded, max_decode=-1)
+class HeadersServerTestCase(BaseServerTestCase):
+ class RequestHandler(xmlrpc.server.SimpleXMLRPCRequestHandler):
+ test_headers = None
+
+ def do_POST(self):
+ self.__class__.test_headers = self.headers
+ return super().do_POST()
+ requestHandler = RequestHandler
+ standard_headers = [
+ 'Host', 'Accept-Encoding', 'Content-Type', 'User-Agent',
+ 'Content-Length']
+
+ def setUp(self):
+ self.RequestHandler.test_headers = None
+ return super().setUp()
+
+ def assertContainsAdditionalHeaders(self, headers, additional):
+ expected_keys = sorted(self.standard_headers + list(additional.keys()))
+ self.assertListEqual(sorted(headers.keys()), expected_keys)
+
+ for key, value in additional.items():
+ self.assertEqual(headers.get(key), value)
+
+ def test_header(self):
+ p = xmlrpclib.ServerProxy(URL, headers=[('X-Test', 'foo')])
+ self.assertEqual(p.pow(6, 8), 6**8)
+
+ headers = self.RequestHandler.test_headers
+ self.assertContainsAdditionalHeaders(headers, {'X-Test': 'foo'})
+
+ def test_header_many(self):
+ p = xmlrpclib.ServerProxy(
+ URL, headers=[('X-Test', 'foo'), ('X-Test-Second', 'bar')])
+ self.assertEqual(p.pow(6, 8), 6**8)
+
+ headers = self.RequestHandler.test_headers
+ self.assertContainsAdditionalHeaders(
+ headers, {'X-Test': 'foo', 'X-Test-Second': 'bar'})
+
+ def test_header_empty(self):
+ p = xmlrpclib.ServerProxy(URL, headers=[])
+ self.assertEqual(p.pow(6, 8), 6**8)
+
+ headers = self.RequestHandler.test_headers
+ self.assertContainsAdditionalHeaders(headers, {})
+
+ def test_header_tuple(self):
+ p = xmlrpclib.ServerProxy(URL, headers=(('X-Test', 'foo'),))
+ self.assertEqual(p.pow(6, 8), 6**8)
+
+ headers = self.RequestHandler.test_headers
+ self.assertContainsAdditionalHeaders(headers, {'X-Test': 'foo'})
+
+ def test_header_items(self):
+ p = xmlrpclib.ServerProxy(URL, headers={'X-Test': 'foo'}.items())
+ self.assertEqual(p.pow(6, 8), 6**8)
+
+ headers = self.RequestHandler.test_headers
+ self.assertContainsAdditionalHeaders(headers, {'X-Test': 'foo'})
+
+
#Test special attributes of the ServerProxy object
class ServerProxyTestCase(unittest.TestCase):
def setUp(self):
@@ -1396,7 +1457,7 @@ def test_main():
BinaryTestCase, FaultTestCase, UseBuiltinTypesTestCase,
SimpleServerTestCase, SimpleServerEncodingTestCase,
KeepaliveServerTestCase1, KeepaliveServerTestCase2,
- GzipServerTestCase, GzipUtilTestCase,
+ GzipServerTestCase, GzipUtilTestCase, HeadersServerTestCase,
MultiPathServerTestCase, ServerProxyTestCase, FailingServerTestCase,
CGIHandlerTestCase, SimpleXMLRPCDispatcherTestCase)