diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2013-03-03 10:37:28 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2013-03-03 10:37:28 +1300 |
commit | 0acab862a65ef4a1823a1bfb702d8be1e3d7b83d (patch) | |
tree | 4dbf39ed4e38c6e752080ac699a57029ae326340 /test/test_http_auth.py | |
parent | 97537417f01c17903fb4cebd59991eea57faa5e6 (diff) | |
download | mitmproxy-0acab862a65ef4a1823a1bfb702d8be1e3d7b83d.tar.gz mitmproxy-0acab862a65ef4a1823a1bfb702d8be1e3d7b83d.tar.bz2 mitmproxy-0acab862a65ef4a1823a1bfb702d8be1e3d7b83d.zip |
Integrate HTTP auth, test to 100%
Diffstat (limited to 'test/test_http_auth.py')
-rw-r--r-- | test/test_http_auth.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/test/test_http_auth.py b/test/test_http_auth.py new file mode 100644 index 00000000..cae69f5e --- /dev/null +++ b/test/test_http_auth.py @@ -0,0 +1,81 @@ +import binascii, cStringIO +from netlib import odict, http_auth, http +import tutils + +class TestPassManNonAnon: + def test_simple(self): + p = http_auth.PassManNonAnon() + assert not p.test("", "") + assert p.test("user", "") + + +class TestPassManHtpasswd: + def test_file_errors(self): + s = cStringIO.StringIO("foo") + tutils.raises("invalid htpasswd", http_auth.PassManHtpasswd, s) + s = cStringIO.StringIO("foo:bar$foo") + tutils.raises("invalid htpasswd", http_auth.PassManHtpasswd, s) + + def test_simple(self): + f = open(tutils.test_data.path("data/htpasswd")) + pm = http_auth.PassManHtpasswd(f) + + vals = ("basic", "test", "test") + p = http.assemble_http_basic_auth(*vals) + assert pm.test("test", "test") + assert not pm.test("test", "foo") + assert not pm.test("foo", "test") + assert not pm.test("test", "") + assert not pm.test("", "") + + +class TestPassManSingleUser: + def test_simple(self): + pm = http_auth.PassManSingleUser("test", "test") + assert pm.test("test", "test") + assert not pm.test("test", "foo") + assert not pm.test("foo", "test") + + +class TestNullProxyAuth: + def test_simple(self): + na = http_auth.NullProxyAuth(http_auth.PassManNonAnon()) + assert not na.auth_challenge_headers() + assert na.authenticate("foo") + na.clean({}) + + +class TestBasicProxyAuth: + def test_simple(self): + ba = http_auth.BasicProxyAuth(http_auth.PassManNonAnon(), "test") + h = odict.ODictCaseless() + assert ba.auth_challenge_headers() + assert not ba.authenticate(h) + + def test_authenticate_clean(self): + ba = http_auth.BasicProxyAuth(http_auth.PassManNonAnon(), "test") + + hdrs = odict.ODictCaseless() + vals = ("basic", "foo", "bar") + hdrs[ba.AUTH_HEADER] = [http.assemble_http_basic_auth(*vals)] + assert ba.authenticate(hdrs) + + ba.clean(hdrs) + assert not ba.AUTH_HEADER in hdrs + + + hdrs[ba.AUTH_HEADER] = [""] + assert not ba.authenticate(hdrs) + + hdrs[ba.AUTH_HEADER] = ["foo"] + assert not ba.authenticate(hdrs) + + vals = ("foo", "foo", "bar") + hdrs[ba.AUTH_HEADER] = [http.assemble_http_basic_auth(*vals)] + assert not ba.authenticate(hdrs) + + ba = http_auth.BasicProxyAuth(http_auth.PassMan(), "test") + vals = ("basic", "foo", "bar") + hdrs[ba.AUTH_HEADER] = [http.assemble_http_basic_auth(*vals)] + assert not ba.authenticate(hdrs) + |