[Zope-Checkins] CVS: Zope/lib/python/AccessControl/tests -
testUserFolder.py:1.5.6.3
Stefan H. Holek
stefan at epy.co.at
Wed Jan 28 14:22:29 EST 2004
Update of /cvs-repository/Zope/lib/python/AccessControl/tests
In directory cvs.zope.org:/tmp/cvs-serv4939
Modified Files:
Tag: Zope-2_6-branch
testUserFolder.py
Log Message:
Added some tests to testUserFolder.py. One of these tests fails currently
when ZOPE_SECURITY_POLICY=PYTHON. Also see http://zope.org/Collectors/Zope/1210
=== Zope/lib/python/AccessControl/tests/testUserFolder.py 1.5.6.2 => 1.5.6.3 ===
--- Zope/lib/python/AccessControl/tests/testUserFolder.py:1.5.6.2 Mon Jan 20 21:59:48 2003
+++ Zope/lib/python/AccessControl/tests/testUserFolder.py Wed Jan 28 14:22:28 2004
@@ -16,15 +16,147 @@
__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
-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 +197,7 @@
except OverflowError:
assert 0, "Raised overflow error erroneously"
+
class UserTests(unittest.TestCase):
def testGetUserName(self):
@@ -93,14 +226,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