diff --git a/test/test_security.py b/test/test_security.py
index 825b582483058d9bafd534ed91493f2c015aefb9..c7d51286b4c35dcd5970f6a9821cf72936c4c2b4 100644 (file)
--- a/test/test_security.py
+++ b/test/test_security.py
self.assertEquals(has('Test', none, 'test', itemid='1'), 0)
self.assertEquals(has('Test', none, 'test', itemid='2'), 0)
+ def testTransitiveSearchPermissions(self):
+ add = self.db.security.addPermission
+ has = self.db.security.hasSearchPermission
+ addRole = self.db.security.addRole
+ addToRole = self.db.security.addPermissionToRole
+ addRole(name='User')
+ addRole(name='Anonymous')
+ addRole(name='Issue')
+ addRole(name='Msg')
+ addRole(name='UV')
+ user = self.db.user.create(username='user1', roles='User')
+ anon = self.db.user.create(username='anonymous', roles='Anonymous')
+ ui = self.db.user.create(username='user2', roles='Issue')
+ uim = self.db.user.create(username='user3', roles='Issue,Msg')
+ uimu = self.db.user.create(username='user4', roles='Issue,Msg,UV')
+ iv = add(name="View", klass="issue")
+ addToRole('User', iv)
+ addToRole('Anonymous', iv)
+ addToRole('Issue', iv)
+ ms = add(name="Search", klass="msg")
+ addToRole('User', ms)
+ addToRole('Anonymous', ms)
+ addToRole('Msg', ms)
+ uv = add(name="View", klass="user")
+ addToRole('User', uv)
+ addToRole('UV', uv)
+ self.assertEquals(has(anon, 'issue', 'messages'), 1)
+ self.assertEquals(has(anon, 'issue', 'messages.author'), 0)
+ self.assertEquals(has(anon, 'issue', 'messages.author.username'), 0)
+ self.assertEquals(has(anon, 'issue', 'messages.recipients'), 0)
+ self.assertEquals(has(anon, 'issue', 'messages.recipients.username'), 0)
+ self.assertEquals(has(user, 'issue', 'messages'), 1)
+ self.assertEquals(has(user, 'issue', 'messages.author'), 1)
+ self.assertEquals(has(user, 'issue', 'messages.author.username'), 1)
+ self.assertEquals(has(user, 'issue', 'messages.recipients'), 1)
+ self.assertEquals(has(user, 'issue', 'messages.recipients.username'), 1)
+
+ self.assertEquals(has(ui, 'issue', 'messages'), 0)
+ self.assertEquals(has(ui, 'issue', 'messages.author'), 0)
+ self.assertEquals(has(ui, 'issue', 'messages.author.username'), 0)
+ self.assertEquals(has(ui, 'issue', 'messages.recipients'), 0)
+ self.assertEquals(has(ui, 'issue', 'messages.recipients.username'), 0)
+
+ self.assertEquals(has(uim, 'issue', 'messages'), 1)
+ self.assertEquals(has(uim, 'issue', 'messages.author'), 0)
+ self.assertEquals(has(uim, 'issue', 'messages.author.username'), 0)
+ self.assertEquals(has(uim, 'issue', 'messages.recipients'), 0)
+ self.assertEquals(has(uim, 'issue', 'messages.recipients.username'), 0)
+
+ self.assertEquals(has(uimu, 'issue', 'messages'), 1)
+ self.assertEquals(has(uimu, 'issue', 'messages.author'), 1)
+ self.assertEquals(has(uimu, 'issue', 'messages.author.username'), 1)
+ self.assertEquals(has(uimu, 'issue', 'messages.recipients'), 1)
+ self.assertEquals(has(uimu, 'issue', 'messages.recipients.username'), 1)
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(PermissionTest))