Exemple #1
0
    def test_starting_stopping_server(self):
        proxy = ProxyServer()
        expected_host = socket.gethostbyname(socket.gethostname())
        expected_port = 1111

        th = threading.Thread(target=proxy.start,
                              kwargs={
                                  'host': '0.0.0.0',
                                  'port': expected_port
                              })
        th.start()
        time.sleep(0.1)
        host, port = proxy.get_addr()
        proxy.stop()

        self.assertEqual(host, expected_host)
        self.assertEqual(port, expected_port)
        self.assertEqual(proxy.sever_sock.fileno(), -1)
        self.assertIsNone(proxy.executor)
Exemple #2
0
    def test_handling_clients(self):
        url = 'http://{}:{}'.format(WEB_SERVER_ADDRESS[0],
                                    WEB_SERVER_ADDRESS[1])
        server = HTTPServer(WEB_SERVER_ADDRESS, CGIHTTPRequestHandler)
        proxy = ProxyServer()
        proxy_th = threading.Thread(target=proxy.start)
        http_th = threading.Thread(target=server.serve_forever)
        proxy_th.start()
        http_th.start()

        proxy_url = 'http://{}:{}'.format(*proxy.get_addr())
        proxies = {'http': proxy_url}
        r = requests.get(url, proxies=proxies)
        self.assertEqual(r.status_code, 200)
        proxy.stop()
        server.shutdown()
        http_th.join()
        proxy_th.join()
        self.assertEqual(proxy.executor, None)
Exemple #3
0
    def test_handling_https(self):
        proxy = ProxyServer()
        th = threading.Thread(target=proxy.start)
        th.start()

        host, port = proxy.get_addr()
        serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        serv.connect((host, port))
        serv.sendall(HTTPS_PACKAGE)

        response = b''
        while True:
            data = serv.recv(BUFFER_SIZE)
            if not data:
                break
            response += data
        self.assertEqual(SUCCESS_MESSAGE, response)
        proxy.stop()
        th.join()