[Zope-Checkins] CVS: Zope/lib/python/AccessControl/tests - testUserFolder.py:1.8

Stefan H. Holek stefan at epy.co.at
Fri Jan 30 09:00:33 EST 2004


Update of /cvs-repository/Zope/lib/python/AccessControl/tests
In directory cvs.zope.org:/tmp/cvs-serv16075

Modified Files:
	testUserFolder.py 
Log Message:
Added the new user folder tests to HEAD as well. Please see http://zope.org/Collectors/Zope/1210


=== Zope/lib/python/AccessControl/tests/testUserFolder.py 1.7 => 1.8 ===
--- Zope/lib/python/AccessControl/tests/testUserFolder.py:1.7	Mon Jan 20 21:58:58 2003
+++ Zope/lib/python/AccessControl/tests/testUserFolder.py	Fri Jan 30 09:00:32 2004
@@ -16,15 +16,152 @@
 __rcs_id__='$Id$'
 __version__='$Revision$'[11:-2]
 
-import os, sys, unittest
+import os, sys, base64, unittest
+
+from Testing.makerequest import makerequest
+
+import Zope
+Zope.startup()
+
+from AccessControl import Unauthorized
+from AccessControl.SecurityManagement import newSecurityManager
+from AccessControl.SecurityManagement import noSecurityManager
+from AccessControl.User import BasicUserFolder
+from AccessControl.User import User
+
+# XXX: Uncomment to enforce C implementation
+#from AccessControl.SecurityManager import setSecurityPolicy
+#from AccessControl.cAccessControl import ZopeSecurityPolicy
+#setSecurityPolicy(ZopeSecurityPolicy(True, True))
 
-import ZODB
-from AccessControl import User, Unauthorized
-from AccessControl.User import BasicUserFolder, UserFolder, User
-from ExtensionClass import Base
 
 class UserFolderTests(unittest.TestCase):
 
+    def setUp(self):
+        get_transaction().begin()
+        self.app = makerequest(Zope.app())
+        try:
+            # Set up a user and role
+            self.uf = self.app.acl_users    
+            self.uf._doAddUser('user1', 'secret', ['role1'], [])
+            self.app._addRole('role1')
+            self.app.manage_role('role1', ['View'])
+            # Set up a published object accessible to user
+            self.app.addDTMLMethod('doc', file='')
+            self.app.doc.manage_permission('View', ['role1'], acquire=0)
+            # Rig the REQUEST so it looks like we traversed to doc
+            self.app.REQUEST.set('PUBLISHED', self.app.doc)
+            self.app.REQUEST.set('PARENTS', [self.app])
+            self.app.REQUEST.steps = ['doc']
+            self.basic = 'Basic %s' % base64.encodestring('user1:secret')
+        except:
+            self.tearDown()
+            raise
+
+    def tearDown(self):
+        noSecurityManager()
+        get_transaction().abort()
+        self.app._p_jar.close()
+
+    def login(self, name):
+        user = self.uf.getUserById(name)
+        user = user.__of__(self.uf)
+        newSecurityManager(None, user)
+
+    def testGetUser(self):
+        self.failIfEqual(self.uf.getUser('user1'), None)
+
+    def testGetBadUser(self):
+        self.assertEqual(self.uf.getUser('user2'), None)
+
+    def testGetUserById(self):
+        self.failIfEqual(self.uf.getUserById('user1'), None)
+
+    def testGetBadUserById(self):
+        self.assertEqual(self.uf.getUserById('user2'), None)
+
+    def testGetUsers(self):
+        users = self.uf.getUsers()
+        self.failUnless(users)
+        self.assertEqual(users[0].getUserName(), 'user1')
+
+    def testGetUserNames(self):
+        names = self.uf.getUserNames()
+        self.failUnless(names)
+        self.assertEqual(names[0], 'user1')
+
+    def testIdentify(self):
+        name, password = self.uf.identify(self.basic)
+        self.assertEqual(name, 'user1')
+        self.assertEqual(password, 'secret')
+
+    def testGetRoles(self):
+        user = self.uf.getUser('user1')
+        self.failUnless('role1' in user.getRoles())
+
+    def testGetRolesInContext(self):
+        user = self.uf.getUser('user1')
+        self.app.manage_addLocalRoles('user1', ['Owner'])
+        roles = user.getRolesInContext(self.app)
+        self.failUnless('role1' in roles)
+        self.failUnless('Owner' in roles)
+
+    def testHasRole(self):
+        user = self.uf.getUser('user1')
+        self.failUnless(user.has_role('role1', self.app))
+
+    def testHasLocalRole(self):
+        user = self.uf.getUser('user1')
+        self.app.manage_addLocalRoles('user1', ['Owner'])
+        self.failUnless(user.has_role('Owner', self.app))
+
+    def testHasPermission(self):
+        user = self.uf.getUser('user1')
+        self.failUnless(user.has_permission('View', self.app))
+        self.app.manage_role('role1', ['Add Folders'])
+        self.failUnless(user.has_permission('Add Folders', self.app))
+
+    def testHasLocalRolePermission(self):
+        user = self.uf.getUser('user1')
+        self.app.manage_role('Owner', ['Add Folders'])
+        self.app.manage_addLocalRoles('user1', ['Owner'])
+        self.failUnless(user.has_permission('Add Folders', self.app))
+        
+    def testAuthenticate(self):
+        user = self.uf.getUser('user1')
+        self.failUnless(user.authenticate('secret', self.app.REQUEST))
+
+    def testValidate(self):
+        user = self.uf.validate(self.app.REQUEST, self.basic, ['role1'])
+        self.failIfEqual(user, None)
+        self.assertEqual(user.getUserName(), 'user1')
+
+    def testNotValidateWithoutAuth(self):
+        user = self.uf.validate(self.app.REQUEST, '', ['role1'])
+        self.assertEqual(user, None)
+
+    def testNotValidateWithoutRoles(self):
+        user = self.uf.validate(self.app.REQUEST, self.basic)
+        self.assertEqual(user, None)
+
+    def testNotValidateWithEmptyRoles(self):
+        user = self.uf.validate(self.app.REQUEST, self.basic, [])
+        self.assertEqual(user, None)
+
+    def testNotValidateWithWrongRoles(self):
+        user = self.uf.validate(self.app.REQUEST, self.basic, ['Manager'])
+        self.assertEqual(user, None)
+
+    def testAllowAccessToUser(self):
+        self.login('user1')
+        try:
+            self.app.restrictedTraverse('doc')
+        except Unauthorized:
+            self.fail('Unauthorized')
+
+    def testDenyAccessToAnonymous(self):
+        self.assertRaises(Unauthorized, self.app.restrictedTraverse, 'doc')
+
     def testMaxListUsers(self):
         # create a folder-ish thing which contains a roleManager,
         # then put an acl_users object into the folde-ish thing
@@ -65,6 +202,7 @@
         except OverflowError:
             assert 0, "Raised overflow error erroneously"
 
+
 class UserTests(unittest.TestCase):
 
     def testGetUserName(self):
@@ -93,14 +231,13 @@
         f = User('chris', '123', ['Manager'], [])
         self.assertEqual(f.getDomains(), ())
 
+
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(UserFolderTests))
     suite.addTest(unittest.makeSuite(UserTests))
     return suite
 
-def main():
-    unittest.TextTestRunner().run(test_suite())
-
 if __name__ == '__main__':
-    main()
+    unittest.main(defaultTest='test_suite')
+




More information about the Zope-Checkins mailing list