forked from buildbot/buildbot
-
Notifications
You must be signed in to change notification settings - Fork 6
/
test_status_web_authz_Authz.py
124 lines (100 loc) · 4.17 KB
/
test_status_web_authz_Authz.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from zope.interface import implements
from twisted.trial import unittest
from buildbot.status.web.authz import Authz
from buildbot.status.web.auth import IAuth
class StubRequest(object):
# all we need from a request is username/password
def __init__(self, username, passwd):
self.args = {
'username' : [ username ],
'passwd' : [ passwd ],
}
class StubAuth(object):
implements(IAuth)
def __init__(self, user):
self.user = user
def authenticate(self, user, pw):
return user == self.user
class TestAuthz(unittest.TestCase):
def test_actionAllowed_Defaults(self):
"by default, nothing is allowed"
z = Authz()
failedActions = []
for a in Authz.knownActions:
if z.actionAllowed(a, StubRequest('foo', 'bar')):
failedActions.append(a)
if failedActions:
raise unittest.FailTest("action(s) %s do not default to False"
% (failedActions,))
def test_actionAllowed_Positive(self):
"'True' should always permit access"
z = Authz(forceBuild=True)
assert z.actionAllowed('forceBuild',
StubRequest('foo', 'bar'))
def test_actionAllowed_AuthPositive(self):
z = Authz(auth=StubAuth('jrobinson'),
stopBuild='auth')
assert z.actionAllowed('stopBuild',
StubRequest('jrobinson', 'bar'))
def test_actionAllowed_AuthNegative(self):
z = Authz(auth=StubAuth('jrobinson'),
stopBuild='auth')
assert not z.actionAllowed('stopBuild',
StubRequest('apeterson', 'bar'))
def test_actionAllowed_AuthCallable(self):
myargs = []
def myAuthzFn(*args):
myargs.extend(args)
z = Authz(auth=StubAuth('uu'),
stopBuild=myAuthzFn)
z.actionAllowed('stopBuild', StubRequest('uu', 'shh'), 'arg', 'arg2')
self.assertEqual(myargs, ['uu', 'arg', 'arg2'])
def test_actionAllowed_AuthCallableTrue(self):
def myAuthzFn(*args):
return True
z = Authz(auth=StubAuth('uu'),
stopBuild=myAuthzFn)
self.assertTrue(z.actionAllowed('stopBuild',
StubRequest('uu', 'shh')))
def test_actionAllowed_AuthCallableFalse(self):
def myAuthzFn(*args):
return False
z = Authz(auth=StubAuth('uu'),
stopBuild=myAuthzFn)
self.assertFalse(z.actionAllowed('stopBuild',
StubRequest('uu', 'shh')))
def test_advertiseAction_False(self):
z = Authz(forceBuild = False)
assert not z.advertiseAction('forceBuild')
def test_advertiseAction_True(self):
z = Authz(forceAllBuilds = True)
assert z.advertiseAction('forceAllBuilds')
def test_advertiseAction_auth(self):
z = Authz(stopBuild = 'auth')
assert z.advertiseAction('stopBuild')
def test_advertiseAction_callable(self):
z = Authz(stopAllBuilds = lambda u : False)
assert z.advertiseAction('stopAllBuilds')
def test_needAuthForm_False(self):
z = Authz(forceBuild = False)
assert not z.needAuthForm('forceBuild')
def test_needAuthForm_True(self):
z = Authz(forceAllBuilds = True)
assert not z.needAuthForm('forceAllBuilds')
def test_needAuthForm_auth(self):
z = Authz(stopBuild = 'auth')
assert z.needAuthForm('stopBuild')
def test_needAuthForm_callable(self):
z = Authz(stopAllBuilds = lambda u : False)
assert z.needAuthForm('stopAllBuilds')
def test_constructor_invalidAction(self):
self.assertRaises(ValueError, Authz, someRandomAction=3)
def test_advertiseAction_invalidAction(self):
z = Authz()
self.assertRaises(KeyError, z.advertiseAction, 'someRandomAction')
def test_needAuthForm_invalidAction(self):
z = Authz()
self.assertRaises(KeyError, z.needAuthForm, 'someRandomAction')
def test_actionAllowed_invalidAction(self):
z = Authz()
self.assertRaises(KeyError, z.actionAllowed, 'someRandomAction', StubRequest('snow', 'foo'))