def test_xmlrpc_handler_size_limit(monkeypatch): app = pretend.stub() request = pretend.stub(headers={ 'Content-Type': 'text/xml', 'Content-Length': str(10 * 1024 * 1024 + 1) }, ) with pytest.raises(BadRequest): xmlrpc.handle_request(app, request)
def test_xmlrpc_handler_size_limit(monkeypatch): app = pretend.stub() request = pretend.stub( headers={ 'Content-Type': 'text/xml', 'Content-Length': str(10 * 1024 * 1024 + 1) }, ) with pytest.raises(BadRequest): xmlrpc.handle_request(app, request)
def pypi(app, request): # if the MIME type of the request is XML then we go into XML-RPC mode if request.headers.get("Content-Type") == "text/xml": return xmlrpc.handle_request(app, request) # check for the legacy :action-style dispatch action = request.args.get(":action") if action in _action_methods: return _action_methods[action](app, request) # no XML-RPC and no :action means we render the index, or at least we # redirect to where it moved to return redirect(url_for(request, "warehouse.views.index"), code=301)
def pypi(app, request): # if the MIME type of the request is XML then we go into XML-RPC mode if request.headers.get('Content-Type') == 'text/xml': return xmlrpc.handle_request(app, request) # no XML-RPC and no :action means we render the index, or at least we # redirect to where it moved to return redirect( url_for( request, "warehouse.views.index", ), code=301, )
def test_xmlrpc_handler(monkeypatch): Response = pretend.call_recorder(lambda *a, **k: 'response') monkeypatch.setattr(xmlrpc, "Response", Response) # I'm aware that list_packages shouldn't return data with unicode strings # but for the purposes of this test I'm just ensuring that unicode data is # handled sanely interface = pretend.stub( list_packages=pretend.call_recorder(lambda *a, **k: ['one', 'unicod€']) ) Interface = lambda a, r: interface monkeypatch.setattr(xmlrpc, "Interface", Interface) app = pretend.stub() xml_request = '''<?xml version="1.0"?><methodCall> <methodName>list_packages</methodName></methodCall>''' request = pretend.stub( headers={ 'Content-Type': 'text/xml', 'Content-Length': str(len(xml_request)), }, get_data=lambda **k: xml_request, ) assert xmlrpc.handle_request(app, request) == 'response' assert interface.list_packages.calls == [pretend.call()] response_xml = Response.calls[0].args[0] assert response_xml == '''<?xml version='1.0'?> <methodResponse> <params> <param> <value><array><data> <value><string>one</string></value> <value><string>unicod\xe2\x82\xac</string></value> </data></array></value> </param> </params> </methodResponse> ''' assert Response.calls[0].kwargs == dict(mimetype='text/xml; charset=utf-8')
def test_xmlrpc_handler(monkeypatch): Response = pretend.call_recorder(lambda *a, **k: 'response') monkeypatch.setattr(xmlrpc, "Response", Response) interface = pretend.stub( list_packages=pretend.call_recorder(lambda *a, **k: 'one two'.split()) ) Interface = lambda a, r: interface monkeypatch.setattr(xmlrpc, "Interface", Interface) app = pretend.stub() xml_request = '''<?xml version="1.0"?><methodCall> <methodName>list_packages</methodName></methodCall>''' request = pretend.stub( headers={ 'Content-Type': 'text/xml', 'Content-Length': str(len(xml_request)), }, get_data=lambda **k: xml_request, ) assert xmlrpc.handle_request(app, request) == 'response' assert interface.list_packages.calls == [pretend.call()] response_xml = Response.calls[0].args[0] assert response_xml == u'''<?xml version='1.0'?> <methodResponse> <params> <param> <value><array><data> <value><string>one</string></value> <value><string>two</string></value> </data></array></value> </param> </params> </methodResponse> ''' assert Response.calls[0].kwargs == dict(mimetype='text/xml')
def test_xmlrpc_handler(monkeypatch): Response = pretend.call_recorder(lambda *a, **k: 'response') monkeypatch.setattr(xmlrpc, "Response", Response) interface = pretend.stub( list_packages=pretend.call_recorder(lambda *a, **k: ['one', 'two'])) Interface = lambda a, r: interface monkeypatch.setattr(xmlrpc, "Interface", Interface) app = pretend.stub() xml_request = '''<?xml version="1.0"?><methodCall> <methodName>list_packages</methodName></methodCall>''' request = pretend.stub( headers={ 'Content-Type': 'text/xml', 'Content-Length': str(len(xml_request)), }, get_data=lambda **k: xml_request, ) assert xmlrpc.handle_request(app, request) == 'response' assert interface.list_packages.calls == [pretend.call()] response_xml = Response.calls[0].args[0] assert response_xml == u'''<?xml version='1.0'?> <methodResponse> <params> <param> <value><array><data> <value><string>one</string></value> <value><string>two</string></value> </data></array></value> </param> </params> </methodResponse> ''' assert Response.calls[0].kwargs == dict(mimetype='text/xml')