def _testProcess(self, uri, expectedURI, method=b"GET", data=b""): """ Build a request pointing at C{uri}, and check that a proxied request is created, pointing a C{expectedURI}. """ transport = StringTransportWithDisconnection() channel = DummyChannel(transport) reactor = MemoryReactor() request = ProxyRequest(channel, False, reactor) request.gotLength(len(data)) request.handleContentChunk(data) request.requestReceived(method, b"http://example.com" + uri, b"HTTP/1.0") self.assertEqual(len(reactor.tcpClients), 1) self.assertEqual(reactor.tcpClients[0][0], "example.com") self.assertEqual(reactor.tcpClients[0][1], 80) factory = reactor.tcpClients[0][2] self.assertIsInstance(factory, ProxyClientFactory) self.assertEqual(factory.command, method) self.assertEqual(factory.version, b"HTTP/1.0") self.assertEqual(factory.headers, {b"host": b"example.com"}) self.assertEqual(factory.data, data) self.assertEqual(factory.rest, expectedURI) self.assertEqual(factory.father, request)
def test_processWithPort(self): """ Check that L{ProxyRequest.process} correctly parse port in the incoming URL, and create an outgoing connection with this port. """ transport = StringTransportWithDisconnection() channel = DummyChannel(transport) reactor = MemoryReactor() request = ProxyRequest(channel, False, reactor) request.gotLength(0) request.requestReceived(b"GET", b"http://example.com:1234/foo/bar", b"HTTP/1.0") # That should create one connection, with the port parsed from the URL self.assertEqual(len(reactor.tcpClients), 1) self.assertEqual(reactor.tcpClients[0][0], "example.com") self.assertEqual(reactor.tcpClients[0][1], 1234)