diff options
Diffstat (limited to 'test/test_proxy.py')
-rw-r--r-- | test/test_proxy.py | 162 |
1 files changed, 70 insertions, 92 deletions
diff --git a/test/test_proxy.py b/test/test_proxy.py index c67e93a0..a5dc666a 100644 --- a/test/test_proxy.py +++ b/test/test_proxy.py @@ -2,60 +2,57 @@ import cStringIO, textwrap from cStringIO import StringIO import libpry from libmproxy import proxy, flow +import tutils +class Dummy: pass -class u_read_chunked(libpry.AutoTree): - def test_all(self): - s = cStringIO.StringIO("1\r\na\r\n0\r\n") - libpry.raises(IOError, proxy.read_chunked, s, None) - - s = cStringIO.StringIO("1\r\na\r\n0\r\n\r\n") - assert proxy.read_chunked(s, None) == "a" - s = cStringIO.StringIO("\r\n") - libpry.raises(IOError, proxy.read_chunked, s, None) +def test_read_chunked(): + s = cStringIO.StringIO("1\r\na\r\n0\r\n") + tutils.raises(IOError, proxy.read_chunked, s, None) - s = cStringIO.StringIO("1\r\nfoo") - libpry.raises(IOError, proxy.read_chunked, s, None) + s = cStringIO.StringIO("1\r\na\r\n0\r\n\r\n") + assert proxy.read_chunked(s, None) == "a" - s = cStringIO.StringIO("foo\r\nfoo") - libpry.raises(proxy.ProxyError, proxy.read_chunked, s, None) + s = cStringIO.StringIO("\r\n") + tutils.raises(IOError, proxy.read_chunked, s, None) + s = cStringIO.StringIO("1\r\nfoo") + tutils.raises(IOError, proxy.read_chunked, s, None) -class Dummy: pass + s = cStringIO.StringIO("foo\r\nfoo") + tutils.raises(proxy.ProxyError, proxy.read_chunked, s, None) -class u_read_http_body(libpry.AutoTree): - def test_all(self): +def test_read_http_body(): + d = Dummy() + h = flow.ODict() + s = cStringIO.StringIO("testing") + assert proxy.read_http_body(s, d, h, False, None) == "" - d = Dummy() - h = flow.ODict() - s = cStringIO.StringIO("testing") - assert proxy.read_http_body(s, d, h, False, None) == "" + h["content-length"] = ["foo"] + s = cStringIO.StringIO("testing") + tutils.raises(proxy.ProxyError, proxy.read_http_body, s, d, h, False, None) - h["content-length"] = ["foo"] - s = cStringIO.StringIO("testing") - libpry.raises(proxy.ProxyError, proxy.read_http_body, s, d, h, False, None) + h["content-length"] = [5] + s = cStringIO.StringIO("testing") + assert len(proxy.read_http_body(s, d, h, False, None)) == 5 + s = cStringIO.StringIO("testing") + tutils.raises(proxy.ProxyError, proxy.read_http_body, s, d, h, False, 4) - h["content-length"] = [5] - s = cStringIO.StringIO("testing") - assert len(proxy.read_http_body(s, d, h, False, None)) == 5 - s = cStringIO.StringIO("testing") - libpry.raises(proxy.ProxyError, proxy.read_http_body, s, d, h, False, 4) + h = flow.ODict() + s = cStringIO.StringIO("testing") + assert len(proxy.read_http_body(s, d, h, True, 4)) == 4 + s = cStringIO.StringIO("testing") + assert len(proxy.read_http_body(s, d, h, True, 100)) == 7 - h = flow.ODict() - s = cStringIO.StringIO("testing") - assert len(proxy.read_http_body(s, d, h, True, 4)) == 4 - s = cStringIO.StringIO("testing") - assert len(proxy.read_http_body(s, d, h, True, 100)) == 7 - -class u_parse_request_line(libpry.AutoTree): +class TestParseRequestLine: def test_simple(self): - libpry.raises(proxy.ProxyError, proxy.parse_request_line, "") + tutils.raises(proxy.ProxyError, proxy.parse_request_line, "") u = "GET ... HTTP/1.1" - libpry.raises("invalid url", proxy.parse_request_line, u) + tutils.raises("invalid url", proxy.parse_request_line, u) u = "GET http://foo.com:8888/test HTTP/1.1" m, s, h, po, pa, minor = proxy.parse_request_line(u) @@ -77,7 +74,7 @@ class u_parse_request_line(libpry.AutoTree): assert proxy.parse_request_line(u) == ('GET', None, None, None, '/', 1) -class uFileLike(libpry.AutoTree): +class TestFileLike: def test_wrap(self): s = cStringIO.StringIO("foobar\nfoobar") s = proxy.FileLike(s) @@ -88,14 +85,13 @@ class uFileLike(libpry.AutoTree): assert s.isatty - -class uProxyError(libpry.AutoTree): +class TestProxyError: def test_simple(self): p = proxy.ProxyError(111, "msg") assert repr(p) -class u_read_headers(libpry.AutoTree): +class TestReadHeaders: def test_read_simple(self): data = """ Header: one @@ -135,63 +131,45 @@ class u_read_headers(libpry.AutoTree): assert headers["header"] == ['one\r\n two'] -class u_parse_http_protocol(libpry.AutoTree): - def test_simple(self): - assert proxy.parse_http_protocol("HTTP/1.1") == (1, 1) - assert proxy.parse_http_protocol("HTTP/0.0") == (0, 0) - assert not proxy.parse_http_protocol("foo/0.0") - +def test_parse_http_protocol(): + assert proxy.parse_http_protocol("HTTP/1.1") == (1, 1) + assert proxy.parse_http_protocol("HTTP/0.0") == (0, 0) + assert not proxy.parse_http_protocol("foo/0.0") -class u_parse_init_connect(libpry.AutoTree): - def test_simple(self): - assert proxy.parse_init_connect("CONNECT host.com:443 HTTP/1.0") - assert not proxy.parse_init_connect("bogus") - assert not proxy.parse_init_connect("GET host.com:443 HTTP/1.0") - assert not proxy.parse_init_connect("CONNECT host.com443 HTTP/1.0") - assert not proxy.parse_init_connect("CONNECT host.com:443 foo/1.0") +def test_parse_init_connect(): + assert proxy.parse_init_connect("CONNECT host.com:443 HTTP/1.0") + assert not proxy.parse_init_connect("bogus") + assert not proxy.parse_init_connect("GET host.com:443 HTTP/1.0") + assert not proxy.parse_init_connect("CONNECT host.com443 HTTP/1.0") + assert not proxy.parse_init_connect("CONNECT host.com:443 foo/1.0") -class u_parse_init_proxy(libpry.AutoTree): - def test_simple(self): - u = "GET http://foo.com:8888/test HTTP/1.1" - m, s, h, po, pa, major, minor = proxy.parse_init_proxy(u) - assert m == "GET" - assert s == "http" - assert h == "foo.com" - assert po == 8888 - assert pa == "/test" - assert major == 1 - assert minor == 1 - - assert not proxy.parse_init_proxy("invalid") - assert not proxy.parse_init_proxy("GET invalid HTTP/1.1") - assert not proxy.parse_init_proxy("GET http://foo.com:8888/test foo/1.1") +def test_prase_init_proxy(): + u = "GET http://foo.com:8888/test HTTP/1.1" + m, s, h, po, pa, major, minor = proxy.parse_init_proxy(u) + assert m == "GET" + assert s == "http" + assert h == "foo.com" + assert po == 8888 + assert pa == "/test" + assert major == 1 + assert minor == 1 -class u_parse_init_http(libpry.AutoTree): - def test_simple(self): - u = "GET /test HTTP/1.1" - m, u, major, minor = proxy.parse_init_http(u) - assert m == "GET" - assert u == "/test" - assert major == 1 - assert minor == 1 + assert not proxy.parse_init_proxy("invalid") + assert not proxy.parse_init_proxy("GET invalid HTTP/1.1") + assert not proxy.parse_init_proxy("GET http://foo.com:8888/test foo/1.1") - assert not proxy.parse_init_http("invalid") - assert not proxy.parse_init_http("GET invalid HTTP/1.1") - assert not proxy.parse_init_http("GET /test foo/1.1") +def test_parse_init_http(): + u = "GET /test HTTP/1.1" + m, u, major, minor = proxy.parse_init_http(u) + assert m == "GET" + assert u == "/test" + assert major == 1 + assert minor == 1 + assert not proxy.parse_init_http("invalid") + assert not proxy.parse_init_http("GET invalid HTTP/1.1") + assert not proxy.parse_init_http("GET /test foo/1.1") -tests = [ - u_parse_http_protocol(), - u_parse_init_connect(), - u_parse_init_proxy(), - u_parse_init_http(), - uProxyError(), - uFileLike(), - u_parse_request_line(), - u_read_chunked(), - u_read_http_body(), - u_read_headers() -] |