aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorWade 524 <u524@intrafile.com>2014-10-31 11:49:45 -0700
committerWade 524 <u524@intrafile.com>2014-10-31 11:49:45 -0700
commit2c64b90a3d239c76bca4c334f89d7b53a965d35b (patch)
tree776b4df006e341f599dc956f7885c76165ee8b65 /test
parent3b0964f36555949d35659f306054876a49dbcfa1 (diff)
downloadmitmproxy-2c64b90a3d239c76bca4c334f89d7b53a965d35b.tar.gz
mitmproxy-2c64b90a3d239c76bca4c334f89d7b53a965d35b.tar.bz2
mitmproxy-2c64b90a3d239c76bca4c334f89d7b53a965d35b.zip
Adding some test coverage for handling HTTP OPTIONS requests.
Diffstat (limited to 'test')
-rw-r--r--test/test_protocol_http.py35
1 files changed, 29 insertions, 6 deletions
diff --git a/test/test_protocol_http.py b/test/test_protocol_http.py
index ea6cf3fd..f5b9e0a1 100644
--- a/test/test_protocol_http.py
+++ b/test/test_protocol_http.py
@@ -23,7 +23,7 @@ def test_stripped_chunked_encoding_no_content():
class TestHTTPRequest:
- def test_asterisk_form(self):
+ def test_asterisk_form_in(self):
s = StringIO("OPTIONS * HTTP/1.1")
f = tutils.tflow(req=None)
f.request = HTTPRequest.from_stream(s)
@@ -33,7 +33,7 @@ class TestHTTPRequest:
f.request.scheme = "http"
assert f.request.assemble() == "OPTIONS * HTTP/1.1\r\nHost: address:22\r\n\r\n"
- def test_origin_form(self):
+ def test_relative_form_in(self):
s = StringIO("GET /foo\xff HTTP/1.1")
tutils.raises("Bad HTTP request line", HTTPRequest.from_stream, s)
s = StringIO("GET /foo HTTP/1.1\r\nConnection: Upgrade\r\nUpgrade: h2c")
@@ -52,8 +52,7 @@ class TestHTTPRequest:
r.update_host_header()
assert "Host" in r.headers
-
- def test_authority_form(self):
+ def test_authority_form_in(self):
s = StringIO("CONNECT oops-no-port.com HTTP/1.1")
tutils.raises("Bad HTTP request line", HTTPRequest.from_stream, s)
s = StringIO("CONNECT address:22 HTTP/1.1")
@@ -62,13 +61,37 @@ class TestHTTPRequest:
assert r.assemble() == "CONNECT address:22 HTTP/1.1\r\nHost: address:22\r\n\r\n"
assert r.pretty_url(False) == "address:22"
- def test_absolute_form(self):
+ def test_absolute_form_in(self):
s = StringIO("GET oops-no-protocol.com HTTP/1.1")
tutils.raises("Bad HTTP request line", HTTPRequest.from_stream, s)
s = StringIO("GET http://address:22/ HTTP/1.1")
r = HTTPRequest.from_stream(s)
assert r.assemble() == "GET http://address:22/ HTTP/1.1\r\nHost: address:22\r\n\r\n"
+ def test_http_options_relative_form_in(self):
+ """
+ Exercises fix for Issue #xxx.
+ """
+ s = StringIO("OPTIONS /secret/resource HTTP/1.1")
+ r = HTTPRequest.from_stream(s)
+ r.host = 'address'
+ r.port = 80
+ r.scheme = "http"
+ assert r.assemble() == ("OPTIONS "
+ "/secret/resource "
+ "HTTP/1.1\r\nHost: address\r\n\r\n")
+
+ def test_http_options_absolute_form_in(self):
+ s = StringIO("OPTIONS http://address/secret/resource HTTP/1.1")
+ r = HTTPRequest.from_stream(s)
+ r.host = 'address'
+ r.port = 80
+ r.scheme = "http"
+ assert r.assemble() == ("OPTIONS "
+ "http://address:80/secret/resource "
+ "HTTP/1.1\r\nHost: address\r\n\r\n")
+
+
def test_assemble_unknown_form(self):
r = tutils.treq()
tutils.raises("Invalid request form", r.assemble, "antiauthority")
@@ -133,4 +156,4 @@ class TestInvalidRequests(tservers.HTTPProxTest):
p.connect()
r = p.request("get:/p/200")
assert r.status_code == 400
- assert "Invalid HTTP request form" in r.content \ No newline at end of file
+ assert "Invalid HTTP request form" in r.content