aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/test/test_protocol_http1.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/test/test_protocol_http1.py')
-rw-r--r--mitmproxy/test/test_protocol_http1.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/mitmproxy/test/test_protocol_http1.py b/mitmproxy/test/test_protocol_http1.py
new file mode 100644
index 00000000..13e0eabe
--- /dev/null
+++ b/mitmproxy/test/test_protocol_http1.py
@@ -0,0 +1,63 @@
+from netlib.http import http1
+from netlib.tcp import TCPClient
+from netlib.tutils import treq
+from . import tutils, tservers
+
+
+class TestHTTPFlow(object):
+
+ def test_repr(self):
+ f = tutils.tflow(resp=True, err=True)
+ assert repr(f)
+
+
+class TestInvalidRequests(tservers.HTTPProxTest):
+ ssl = True
+
+ def test_double_connect(self):
+ p = self.pathoc()
+ r = p.request("connect:'%s:%s'" % ("127.0.0.1", self.server2.port))
+ assert r.status_code == 400
+ assert "Invalid HTTP request form" in r.content
+
+ def test_relative_request(self):
+ p = self.pathoc_raw()
+ p.connect()
+ r = p.request("get:/p/200")
+ assert r.status_code == 400
+ assert "Invalid HTTP request form" in r.content
+
+
+class TestExpectHeader(tservers.HTTPProxTest):
+
+ def test_simple(self):
+ client = TCPClient(("127.0.0.1", self.proxy.port))
+ client.connect()
+
+ # call pathod server, wait a second to complete the request
+ client.wfile.write(
+ b"POST http://localhost:%d/p/200 HTTP/1.1\r\n"
+ b"Expect: 100-continue\r\n"
+ b"Content-Length: 16\r\n"
+ b"\r\n" % self.server.port
+ )
+ client.wfile.flush()
+
+ assert client.rfile.readline() == "HTTP/1.1 100 Continue\r\n"
+ assert client.rfile.readline() == "\r\n"
+
+ client.wfile.write(b"0123456789abcdef\r\n")
+ client.wfile.flush()
+
+ resp = http1.read_response(client.rfile, treq())
+ assert resp.status_code == 200
+
+ client.finish()
+
+
+class TestHeadContentLength(tservers.HTTPProxTest):
+
+ def test_head_content_length(self):
+ p = self.pathoc()
+ resp = p.request("""head:'%s/p/200:h"Content-Length"="42"'""" % self.server.urlbase)
+ assert resp.headers["Content-Length"] == "42"