@@ -178,6 +178,33 @@ def testAccessControls(self):
178178 self .assertEquals (has ('Test' , none , 'test' , itemid = '1' ), 0 )
179179 self .assertEquals (has ('Test' , none , 'test' , itemid = '2' ), 0 )
180180
181+ def testTransitiveSearchPermissions (self ):
182+ add = self .db .security .addPermission
183+ has = self .db .security .hasSearchPermission
184+ addRole = self .db .security .addRole
185+ addToRole = self .db .security .addPermissionToRole
186+ user = self .db .user .create (username = 'user1' , roles = 'User' )
187+ anon = self .db .user .create (username = 'anonymous' , roles = 'Anonymous' )
188+ addRole (name = 'User' )
189+ addRole (name = 'Anonymous' )
190+ iv = add (name = "View" , klass = "issue" )
191+ addToRole ('User' , iv )
192+ addToRole ('Anonymous' , iv )
193+ ms = add (name = "Search" , klass = "msg" )
194+ addToRole ('User' , ms )
195+ addToRole ('Anonymous' , ms )
196+ addToRole ('User' , add (name = "View" , klass = "user" ))
197+ self .assertEquals (has (anon , 'issue' , 'messages' ), 1 )
198+ self .assertEquals (has (anon , 'issue' , 'messages.author' ), 1 )
199+ self .assertEquals (has (anon , 'issue' , 'messages.author.username' ), 0 )
200+ self .assertEquals (has (anon , 'issue' , 'messages.recipients' ), 1 )
201+ self .assertEquals (has (anon , 'issue' , 'messages.recipients.username' ), 0 )
202+ self .assertEquals (has (user , 'issue' , 'messages' ), 1 )
203+ self .assertEquals (has (user , 'issue' , 'messages.author' ), 1 )
204+ self .assertEquals (has (user , 'issue' , 'messages.author.username' ), 1 )
205+ self .assertEquals (has (user , 'issue' , 'messages.recipients' ), 1 )
206+ self .assertEquals (has (user , 'issue' , 'messages.recipients.username' ), 1 )
207+
181208def test_suite ():
182209 suite = unittest .TestSuite ()
183210 suite .addTest (unittest .makeSuite (PermissionTest ))
0 commit comments