bpo-5038: http lib, seek to the beginning of mmap'ed file · Pull Request #11843 · python/cpython
def do_POST(self): if not self.headers.get("Authorization", ""): self.do_AUTHHEAD() self.wfile.write(b"No Auth header received") elif self.headers.get( "Authorization", "") == "Basic " + self.ENCODED_AUTH: encoding = self.headers.get("Transfer-Encoding") if encoding is None: length = int(self.headers.get("Content-Length")) else: assert encoding == "chunked" length = int(self.rfile.readline(), 16) request = self.rfile.read(length) assert len(request) == length if length > 0: self.send_response(200, "OK") self.end_headers() self.wfile.write(request) else: self.send_response(400, "Empty request data") self.end_headers() else: self.do_AUTHHEAD()
# Proxy test infrastructure
def test_basic_auth_mmap_payload(self): from mmap import mmap data = "field=value".encode("ascii") mem = mmap(-1, len(data)) mem[:] = data auth_handler = urllib.request.HTTPBasicAuthHandler() auth_handler.add_password(realm=self.REALM, uri=self.server_url, user=self.USER, passwd=self.PASSWD) opener = urllib.request.build_opener(auth_handler) urllib.request.install_opener(opener) response = opener.open(self.server_url, mem) self.assertEqual(response.read(), data)
class ProxyAuthTests(unittest.TestCase): URL = "http://localhost"
threads_key = None
def setUpModule():