diff options
author | Cédric Krier <cedk@users.noreply.github.com> | 2019-02-19 16:18:50 (GMT) |
---|---|---|
committer | Victor Stinner <vstinner@redhat.com> | 2019-02-19 16:18:50 (GMT) |
commit | beda52ed36e701e45f22903fc4d3bec0d085b25b (patch) | |
tree | e96db330072912b7dce724ffdc547291bae4758a /Lib/test/test_xmlrpc.py | |
parent | 513e9b4425d09cb0b4889495f9b93dda341b8dd0 (diff) | |
download | cpython-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.py | 63 |
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) |