comparison test/test_security.py @ 3120:ac1803a09920 maint-0.8

far more merging from HEAD than is good
author Richard Jones <richard@users.sourceforge.net>
date Fri, 28 Jan 2005 04:10:22 +0000
parents 79f91a6dbc7f
children
comparison
equal deleted inserted replaced
3116:ed309360be21 3120:ac1803a09920
16 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 17 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 18 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 # SOFTWARE. 19 # SOFTWARE.
20 20
21 # $Id: test_security.py,v 1.7 2004-11-18 15:54:09 a1s Exp $ 21 # $Id: test_security.py,v 1.7.2.1 2005-01-28 04:10:22 richard Exp $
22 22
23 import os, unittest, shutil 23 import os, unittest, shutil
24 24
25 from roundup import backends 25 from roundup import backends
26 from roundup.password import Password 26 from roundup.password import Password
57 self.db.security.getPermission('Edit') 57 self.db.security.getPermission('Edit')
58 self.db.security.getPermission('View') 58 self.db.security.getPermission('View')
59 self.assertRaises(ValueError, self.db.security.getPermission, 'x') 59 self.assertRaises(ValueError, self.db.security.getPermission, 'x')
60 self.assertRaises(ValueError, self.db.security.getPermission, 'Edit', 60 self.assertRaises(ValueError, self.db.security.getPermission, 'Edit',
61 'fubar') 61 'fubar')
62 ei = self.db.security.addPermission(name="Edit", klass="issue", 62
63 description="User is allowed to edit issues") 63 add = self.db.security.addPermission
64 self.db.security.getPermission('Edit', 'issue') 64 get = self.db.security.getPermission
65 ai = self.db.security.addPermission(name="View", klass="issue", 65
66 description="User is allowed to access issues") 66 # class
67 self.db.security.getPermission('View', 'issue') 67 ei = add(name="Edit", klass="issue")
68 self.assertEquals(get('Edit', 'issue'), ei)
69 ai = add(name="View", klass="issue")
70 self.assertEquals(get('View', 'issue'), ai)
71
72 # property
73 epi = add(name="Edit", klass="issue", properties=['title'])
74 self.assertEquals(get('Edit', 'issue', properties=['title']), epi)
75 api = add(name="View", klass="issue", properties=['title'])
76 self.assertEquals(get('View', 'issue', properties=['title']), api)
77
78 # check function
79 dummy = lambda: 0
80 eci = add(name="Edit", klass="issue", check=dummy)
81 self.assertEquals(get('Edit', 'issue', check=dummy), eci)
82 aci = add(name="View", klass="issue", check=dummy)
83 self.assertEquals(get('View', 'issue', check=dummy), aci)
84
85 # all
86 epci = add(name="Edit", klass="issue", properties=['title'],
87 check=dummy)
88 self.assertEquals(get('Edit', 'issue', properties=['title'],
89 check=dummy), epci)
90 apci = add(name="View", klass="issue", properties=['title'],
91 check=dummy)
92 self.assertEquals(get('View', 'issue', properties=['title'],
93 check=dummy), apci)
68 94
69 def testDBinit(self): 95 def testDBinit(self):
70 self.db.user.create(username="anonymous", roles='User') 96 self.db.user.create(username="demo", roles='User')
97 self.db.user.create(username="anonymous", roles='Anonymous')
71 98
72 def testAccessControls(self): 99 def testAccessControls(self):
73 self.testDBinit() 100 add = self.db.security.addPermission
74 ei = self.db.security.addPermission(name="Edit", klass="issue", 101 has = self.db.security.hasPermission
75 description="User is allowed to edit issues") 102 addRole = self.db.security.addRole
76 self.db.security.addPermissionToRole('User', ei) 103 addToRole = self.db.security.addPermissionToRole
104
105 none = self.db.user.create(username='none', roles='None')
106
107 # test admin access
108 addRole(name='Super')
109 addToRole('Super', add(name="Test"))
110 super = self.db.user.create(username='super', roles='Super')
77 111
78 # test class-level access 112 # test class-level access
79 userid = self.db.user.lookup('admin') 113 addRole(name='Role1')
80 self.assertEquals(self.db.security.hasPermission('Edit', userid, 114 addToRole('Role1', add(name="Test", klass="test"))
81 'issue'), 1) 115 user1 = self.db.user.create(username='user1', roles='Role1')
82 self.assertEquals(self.db.security.hasPermission('Edit', userid, 116 self.assertEquals(has('Test', user1, 'test'), 1)
83 'user'), 1) 117 self.assertEquals(has('Test', super, 'test'), 1)
84 userid = self.db.user.lookup('anonymous') 118 self.assertEquals(has('Test', none, 'test'), 0)
85 self.assertEquals(self.db.security.hasPermission('Edit', userid,
86 'issue'), 1)
87 self.assertEquals(self.db.security.hasPermission('Edit', userid,
88 'user'), 0)
89 self.assertEquals(self.db.security.hasPermission('View', userid,
90 'issue'), 0)
91 119
92 # test node-level access 120 # property
93 issueid = self.db.issue.create(title='foo', assignedto='admin') 121 addRole(name='Role2')
94 userid = self.db.user.lookup('admin') 122 addToRole('Role2', add(name="Test", klass="test", properties=['a','b']))
95 self.assertEquals(self.db.security.hasNodePermission('issue', 123 user2 = self.db.user.create(username='user2', roles='Role2')
96 issueid, assignedto=userid), 1) 124 # *any* access to class
97 self.assertEquals(self.db.security.hasNodePermission('issue', 125 self.assertEquals(has('Test', user1, 'test'), 1)
98 issueid, nosy=userid), 0) 126 self.assertEquals(has('Test', user2, 'test'), 1)
99 self.db.issue.set(issueid, nosy=[userid]) 127
100 self.assertEquals(self.db.security.hasNodePermission('issue', 128 # *any* access to item
101 issueid, nosy=userid), 1) 129 self.assertEquals(has('Test', user1, 'test', itemid='1'), 1)
130 self.assertEquals(has('Test', user2, 'test', itemid='1'), 1)
131 self.assertEquals(has('Test', super, 'test', itemid='1'), 1)
132 self.assertEquals(has('Test', none, 'test', itemid='1'), 0)
133
134 # now property test
135 self.assertEquals(has('Test', user2, 'test', property='a'), 1)
136 self.assertEquals(has('Test', user2, 'test', property='b'), 1)
137 self.assertEquals(has('Test', user2, 'test', property='c'), 0)
138 self.assertEquals(has('Test', user1, 'test', property='a'), 1)
139 self.assertEquals(has('Test', user1, 'test', property='b'), 1)
140 self.assertEquals(has('Test', user1, 'test', property='c'), 1)
141 self.assertEquals(has('Test', super, 'test', property='a'), 1)
142 self.assertEquals(has('Test', super, 'test', property='b'), 1)
143 self.assertEquals(has('Test', super, 'test', property='c'), 1)
144 self.assertEquals(has('Test', none, 'test', property='a'), 0)
145 self.assertEquals(has('Test', none, 'test', property='b'), 0)
146 self.assertEquals(has('Test', none, 'test', property='c'), 0)
147 self.assertEquals(has('Test', none, 'test'), 0)
148
149 # check function
150 check = lambda db, userid, itemid: itemid == '1'
151 addRole(name='Role3')
152 addToRole('Role3', add(name="Test", klass="test", check=check))
153 user3 = self.db.user.create(username='user3', roles='Role3')
154 # *any* access to class
155 self.assertEquals(has('Test', user1, 'test'), 1)
156 self.assertEquals(has('Test', user2, 'test'), 1)
157 self.assertEquals(has('Test', user3, 'test'), 1)
158 self.assertEquals(has('Test', none, 'test'), 0)
159 # now check function
160 self.assertEquals(has('Test', user3, 'test', itemid='1'), 1)
161 self.assertEquals(has('Test', user3, 'test', itemid='2'), 0)
162 self.assertEquals(has('Test', user2, 'test', itemid='1'), 1)
163 self.assertEquals(has('Test', user2, 'test', itemid='2'), 1)
164 self.assertEquals(has('Test', user1, 'test', itemid='2'), 1)
165 self.assertEquals(has('Test', user1, 'test', itemid='2'), 1)
166 self.assertEquals(has('Test', super, 'test', itemid='1'), 1)
167 self.assertEquals(has('Test', super, 'test', itemid='2'), 1)
168 self.assertEquals(has('Test', none, 'test', itemid='1'), 0)
169 self.assertEquals(has('Test', none, 'test', itemid='2'), 0)
102 170
103 def test_suite(): 171 def test_suite():
104 suite = unittest.TestSuite() 172 suite = unittest.TestSuite()
105 suite.addTest(unittest.makeSuite(PermissionTest)) 173 suite.addTest(unittest.makeSuite(PermissionTest))
106 return suite 174 return suite

Roundup Issue Tracker: http://roundup-tracker.org/