diff options
author | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2015-06-16 13:52:41 +0200 |
---|---|---|
committer | Thomas Kriechbaumer <thomas@kriechbaumer.name> | 2015-06-16 14:53:41 +0200 |
commit | 408b4ffef0a784bea7ec08c252e757bca6e28134 (patch) | |
tree | f7694eb9f7f875d72355b9f7c342910174574fc0 /test/test_language_http2.py | |
parent | ec68aa303e89398ba34bbe01f3fbd1ac1fc441f3 (diff) | |
download | mitmproxy-408b4ffef0a784bea7ec08c252e757bca6e28134.tar.gz mitmproxy-408b4ffef0a784bea7ec08c252e757bca6e28134.tar.bz2 mitmproxy-408b4ffef0a784bea7ec08c252e757bca6e28134.zip |
http2: implement Headers for request & response
improve test coverage
fix super ctor call
fix legacy httpversion
simpliy SSLInfo without ALPN
Diffstat (limited to 'test/test_language_http2.py')
-rw-r--r-- | test/test_language_http2.py | 111 |
1 files changed, 106 insertions, 5 deletions
diff --git a/test/test_language_http2.py b/test/test_language_http2.py index 3c751fd1..0be42253 100644 --- a/test/test_language_http2.py +++ b/test/test_language_http2.py @@ -10,8 +10,29 @@ import tutils def parse_request(s): return language.parse_pathoc(s, True).next() +def parse_response(s): + return language.parse_pathod(s, True).next() + +def default_settings(): + return language.Settings( + request_host = "foo.com", + protocol = netlib.http2.HTTP2Protocol(tcp.TCPClient(('localhost', 1234))) + ) + + +def test_make_error_response(): + d = cStringIO.StringIO() + s = http2.make_error_response("foo", "bar") + language.serve(s, d, default_settings()) + class TestRequest: + def test_cached_values(self): + req = parse_request("get:/") + req_id = id(req) + assert req_id == id(req.resolve(default_settings())) + assert req.values(default_settings()) == req.values(default_settings()) + def test_nonascii(self): tutils.raises("ascii", parse_request, "get:\xf0") @@ -57,16 +78,31 @@ class TestRequest: assert r[0].method.string() == "GET" assert r[1].method.string() == "GET" - def test_render(self): + def test_render_simple(self): s = cStringIO.StringIO() r = parse_request("GET:'/foo'") assert language.serve( r, s, - language.Settings( - request_host = "foo.com", - protocol = netlib.http2.HTTP2Protocol(tcp.TCPClient(('localhost', 1234))) - ) + default_settings(), + ) + + def test_render_with_headers(self): + s = cStringIO.StringIO() + r = parse_request('GET:/foo:h"foo"="bar"') + assert language.serve( + r, + s, + default_settings(), + ) + + def test_render_with_body(self): + s = cStringIO.StringIO() + r = parse_request("GET:'/foo':bfoobar") + assert language.serve( + r, + s, + default_settings(), ) def test_spec(self): @@ -74,3 +110,68 @@ class TestRequest: s = parse_request(s).spec() assert parse_request(s).spec() == s rt("get:/foo") + + +class TestResponse: + def test_cached_values(self): + res = parse_response("200") + res_id = id(res) + assert res_id == id(res.resolve(default_settings())) + assert res.values(default_settings()) == res.values(default_settings()) + + def test_nonascii(self): + tutils.raises("ascii", parse_response, "200:\xf0") + + def test_err(self): + tutils.raises(language.ParseException, parse_response, 'GET:/') + + def test_simple(self): + r = parse_response('200') + assert r.code.string() == "200" + assert len(r.headers) == 0 + + r = parse_response('200:h"foo"="bar"') + assert r.code.string() == "200" + assert len(r.headers) == 1 + assert r.headers[0].values(default_settings()) == ("foo", "bar") + assert r.body == None + + r = parse_response('200:h"foo"="bar":bfoobar:h"bla"="fasel"') + assert r.code.string() == "200" + assert len(r.headers) == 2 + assert r.headers[0].values(default_settings()) == ("foo", "bar") + assert r.headers[1].values(default_settings()) == ("bla", "fasel") + assert r.body.string() == "foobar" + + def test_render_simple(self): + s = cStringIO.StringIO() + r = parse_response('200') + assert language.serve( + r, + s, + default_settings(), + ) + + def test_render_with_headers(self): + s = cStringIO.StringIO() + r = parse_response('200:h"foo"="bar"') + assert language.serve( + r, + s, + default_settings(), + ) + + def test_render_with_body(self): + s = cStringIO.StringIO() + r = parse_response('200:bfoobar') + assert language.serve( + r, + s, + default_settings(), + ) + + def test_spec(self): + def rt(s): + s = parse_response(s).spec() + assert parse_response(s).spec() == s + rt("200:bfoobar") |