Unit test proxy auth.

This commit is contained in:
Aldo Cortesi 2013-03-03 11:04:33 +13:00
parent 5c6587d4a8
commit 33cdd5d083
2 changed files with 20 additions and 8 deletions

View File

@ -1,6 +1,6 @@
import socket, time import socket, time
import mock import mock
from netlib import tcp from netlib import tcp, http_auth, http
from libpathod import pathoc from libpathod import pathoc
import tutils, tservers import tutils, tservers
from libmproxy import flow, proxy from libmproxy import flow, proxy
@ -135,6 +135,23 @@ class TestHTTP(tservers.HTTPProxTest, CommonMixin):
assert req.status_code == 400 assert req.status_code == 400
class TestHTTPAuth(tservers.HTTPProxTest):
authenticator = http_auth.BasicProxyAuth(http_auth.PassManSingleUser("test", "test"), "realm")
def test_auth(self):
assert self.pathod("202").status_code == 407
p = self.pathoc()
ret = p.request("""
get
'http://localhost:%s/p/202'
h'%s'='%s'
"""%(
self.server.port,
http_auth.BasicProxyAuth.AUTH_HEADER,
http.assemble_http_basic_auth("basic", "test", "test")
))
assert ret.status_code == 202
class TestHTTPConnectSSLError(tservers.HTTPProxTest): class TestHTTPConnectSSLError(tservers.HTTPProxTest):
certfile = True certfile = True
def test_go(self): def test_go(self):
@ -163,7 +180,6 @@ class TestHTTPS(tservers.HTTPProxTest, CommonMixin):
assert p.request("get:/:i0,'invalid\r\n\r\n'").status_code == 400 assert p.request("get:/:i0,'invalid\r\n\r\n'").status_code == 400
class TestHTTPSNoUpstream(tservers.HTTPProxTest, CommonMixin): class TestHTTPSNoUpstream(tservers.HTTPProxTest, CommonMixin):
ssl = True ssl = True
no_upstream_cert = True no_upstream_cert = True
@ -303,8 +319,3 @@ class TestTransparentResolveError(tservers.TransparentProxTest):
def test_resolve_error(self): def test_resolve_error(self):
assert self.pathod("304").status_code == 502 assert self.pathod("304").status_code == 502

View File

@ -72,7 +72,7 @@ class ProxTestBase:
clientcerts = False clientcerts = False
certfile = None certfile = None
no_upstream_cert = False no_upstream_cert = False
authenticator = None
masterclass = TestMaster masterclass = TestMaster
@classmethod @classmethod
def setupAll(cls): def setupAll(cls):
@ -83,6 +83,7 @@ class ProxTestBase:
config = proxy.ProxyConfig( config = proxy.ProxyConfig(
no_upstream_cert = cls.no_upstream_cert, no_upstream_cert = cls.no_upstream_cert,
cacert = tutils.test_data.path("data/serverkey.pem"), cacert = tutils.test_data.path("data/serverkey.pem"),
authenticator = cls.authenticator,
**pconf **pconf
) )
tmaster = cls.masterclass(cls.tqueue, config) tmaster = cls.masterclass(cls.tqueue, config)