2010-10-03 13:41:30 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
from base import *
|
|
|
|
from requests import *
|
|
|
|
|
|
|
|
#userI:passI for I in [1..4] with [apr-md5, crypt, plain and apr-sha]
|
|
|
|
PASSWORDS="""user1:$apr1$mhpONdUp$xSRcAbK2F6hLFUzW59tzW/
|
|
|
|
user2:JTMoqfZHCS0aI
|
|
|
|
user3:pass3
|
|
|
|
user4:{SHA}LbTBgR9CRYKpD41+53mVzwGNlEM=
|
|
|
|
"""
|
|
|
|
|
|
|
|
# user5:pass5 in realm 'Realm1'
|
|
|
|
DIGESTPASSWORDS="""user5:Realm1:b0590e8c95605dd708226b552fc86a22
|
|
|
|
"""
|
|
|
|
|
|
|
|
class TestAprMd5Fail(CurlRequest):
|
|
|
|
URL = "/test.txt"
|
|
|
|
EXPECT_RESPONSE_CODE = 401
|
|
|
|
AUTH = "user1:test1"
|
|
|
|
|
|
|
|
class TestAprMd5Success(CurlRequest):
|
|
|
|
URL = "/test.txt"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
AUTH = "user1:pass1"
|
|
|
|
|
|
|
|
class TestCryptFail(CurlRequest):
|
|
|
|
URL = "/test.txt"
|
|
|
|
EXPECT_RESPONSE_CODE = 401
|
|
|
|
AUTH = "user2:test2"
|
|
|
|
|
|
|
|
class TestCryptSuccess(CurlRequest):
|
|
|
|
URL = "/test.txt"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
AUTH = "user2:pass2"
|
|
|
|
|
|
|
|
class TestPlainFail(CurlRequest):
|
|
|
|
URL = "/test.txt?plain"
|
|
|
|
EXPECT_RESPONSE_CODE = 401
|
|
|
|
AUTH = "user3:test3"
|
|
|
|
|
|
|
|
class TestPlainSuccess(CurlRequest):
|
|
|
|
URL = "/test.txt?plain"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
AUTH = "user3:pass3"
|
|
|
|
|
|
|
|
class TestAprSha1Fail(CurlRequest):
|
|
|
|
URL = "/test.txt"
|
|
|
|
EXPECT_RESPONSE_CODE = 401
|
|
|
|
AUTH = "user4:test4"
|
|
|
|
|
|
|
|
class TestAprSha1Success(CurlRequest):
|
|
|
|
URL = "/test.txt"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
AUTH = "user4:pass4"
|
|
|
|
|
|
|
|
class TestDigestFail(CurlRequest):
|
|
|
|
URL = "/test.txt?digest"
|
|
|
|
EXPECT_RESPONSE_CODE = 401
|
|
|
|
AUTH = "user5:test5"
|
|
|
|
|
|
|
|
class TestDigestSuccess(CurlRequest):
|
|
|
|
URL = "/test.txt?digest"
|
|
|
|
EXPECT_RESPONSE_CODE = 200
|
|
|
|
AUTH = "user5:pass5"
|
|
|
|
|
2010-11-13 16:29:46 +00:00
|
|
|
class TestDeny(CurlRequest):
|
|
|
|
URL = "/test.txt?deny"
|
|
|
|
EXPECT_RESPONSE_CODE = 403
|
|
|
|
|
2010-10-03 13:41:30 +00:00
|
|
|
class Test(GroupTest):
|
|
|
|
group = [
|
|
|
|
TestAprMd5Fail, TestAprMd5Success,
|
|
|
|
TestCryptFail, TestCryptSuccess,
|
|
|
|
TestPlainFail, TestPlainSuccess,
|
|
|
|
TestAprSha1Fail, TestAprSha1Success,
|
|
|
|
TestDigestFail, TestDigestSuccess,
|
2010-11-13 16:29:46 +00:00
|
|
|
TestDeny,
|
2010-10-03 13:41:30 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
def Prepare(self):
|
|
|
|
passwdfile = self.PrepareFile("conf/mod-auth.htpasswd", PASSWORDS)
|
|
|
|
digestfile = self.PrepareFile("conf/mod-auth.htdigest", DIGESTPASSWORDS)
|
|
|
|
|
|
|
|
self.config = """
|
|
|
|
setup {{ module_load ( "mod_auth" ); }}
|
|
|
|
|
2011-08-28 09:57:31 +00:00
|
|
|
auth.debug true;
|
2010-10-03 13:41:30 +00:00
|
|
|
if req.query == "plain" {{
|
2011-08-28 09:57:31 +00:00
|
|
|
auth.plain ["method" => "basic", "realm" => "Basic Auth Realm", "file" => "{passwdfile}", "ttl" => 10];
|
2010-10-03 13:41:30 +00:00
|
|
|
}} else if req.query == "digest" {{
|
2011-08-28 09:57:31 +00:00
|
|
|
auth.htdigest ["method" => "basic", "realm" => "Realm1", "file" => "{digestfile}", "ttl" => 10];
|
2010-11-13 16:29:46 +00:00
|
|
|
}} else if req.query == "deny" {{
|
|
|
|
auth.deny;
|
2010-10-03 13:41:30 +00:00
|
|
|
}} else {{
|
2011-08-28 09:57:31 +00:00
|
|
|
auth.htpasswd ["method" => "basic", "realm" => "Basic Auth Realm", "file" => "{passwdfile}", "ttl" => 10];
|
2010-10-03 13:41:30 +00:00
|
|
|
}}
|
|
|
|
|
|
|
|
defaultaction;
|
|
|
|
""".format(passwdfile = passwdfile, digestfile = digestfile)
|