mitmproxy/test/test_http_auth.py

107 lines
3.0 KiB
Python
Raw Normal View History

2013-03-02 21:37:28 +00:00
from netlib import odict, http_auth, http
import tutils
2013-03-02 21:37:28 +00:00
class TestPassManNonAnon:
2013-03-02 21:37:28 +00:00
def test_simple(self):
p = http_auth.PassManNonAnon()
assert not p.test("", "")
assert p.test("user", "")
class TestPassManHtpasswd:
2013-03-02 21:37:28 +00:00
def test_file_errors(self):
2014-08-16 13:28:09 +00:00
tutils.raises("malformed htpasswd file", http_auth.PassManHtpasswd, tutils.test_data.path("data/server.crt"))
2013-03-02 21:37:28 +00:00
def test_simple(self):
2014-08-16 13:28:09 +00:00
pm = http_auth.PassManHtpasswd(tutils.test_data.path("data/htpasswd"))
2013-03-02 21:37:28 +00:00
vals = ("basic", "test", "test")
http.assemble_http_basic_auth(*vals)
2013-03-02 21:37:28 +00:00
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:
2013-03-02 21:37:28 +00:00
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:
2013-03-02 21:37:28 +00:00
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:
2013-03-02 21:37:28 +00:00
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)
2013-12-08 00:35:42 +00:00
class Bunch:
pass
2013-12-08 00:35:42 +00:00
2013-12-08 00:35:42 +00:00
class TestAuthAction:
2013-12-08 00:35:42 +00:00
def test_nonanonymous(self):
m = Bunch()
aa = http_auth.NonanonymousAuthAction(None, "authenticator")
2013-12-08 00:35:42 +00:00
aa(None, m, None, None)
assert m.authenticator
2013-12-08 00:35:42 +00:00
def test_singleuser(self):
m = Bunch()
aa = http_auth.SingleuserAuthAction(None, "authenticator")
2013-12-08 00:35:42 +00:00
aa(None, m, "foo:bar", None)
assert m.authenticator
2013-12-08 00:35:42 +00:00
tutils.raises("invalid", aa, None, m, "foo", None)
def test_httppasswd(self):
m = Bunch()
aa = http_auth.HtpasswdAuthAction(None, "authenticator")
2013-12-08 00:35:42 +00:00
aa(None, m, tutils.test_data.path("data/htpasswd"), None)
assert m.authenticator