[Zope-Checkins] CVS: Zope/lib/python/OFS/tests - testObjectManager.py:1.4

Zachery Bir zbir at urbanape.com
Wed Mar 17 18:50:57 EST 2004


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

Added Files:
	testObjectManager.py 
Log Message:
Test module for ObjectManager, testing only the changes to the
_setObject method.

Specifically the key for 'Owner' local role should be the user's Id,
not UserName

Tests this behavior with six combinations:

  'None' security manager attempting to set ownership
  'Emergency User' security manager attempting to set ownership
  'System User' security manager attempting to set ownership
  'Anonymous User' security manager attempting to set ownership
  'User' security manager attempting to set ownership
  'Faux User' security manager attempting to set ownership

  'None' security manager not attempting to set ownership
  'Emergency User' security manager not attempting to set ownership
  'System User' security manager not attempting to set ownership
  'Anonymous User' security manager not attempting to set ownership
  'User' security manager not attempting to set ownership
  'Faux User' security manager not attempting to set ownership



=== Zope/lib/python/OFS/tests/testObjectManager.py 1.3 => 1.4 ===
--- /dev/null	Wed Mar 17 18:50:56 2004
+++ Zope/lib/python/OFS/tests/testObjectManager.py	Wed Mar 17 18:50:56 2004
@@ -0,0 +1,256 @@
+import unittest
+
+from Acquisition import Implicit, aq_base, aq_parent
+from AccessControl.SecurityManagement import newSecurityManager
+from AccessControl.SecurityManagement import noSecurityManager
+from AccessControl.User import User
+from AccessControl.SpecialUsers import emergency_user, nobody, system
+from AccessControl.Owned import EmergencyUserCannotOwn, Owned
+from OFS.ObjectManager import ObjectManager
+from OFS.SimpleItem import SimpleItem
+
+class FauxRoot( Implicit ):
+
+    id = '/'
+
+    def getPhysicalRoot( self ):
+        return self
+
+    def getPhysicalPath( self ):
+        return ()
+
+class FauxUser( Implicit ):
+
+    def __init__( self, id, login ):
+
+        self._id = id
+        self._login = login
+        self._roles = {}
+        self._groups = {}
+
+    def getId( self ):
+
+        return self._id
+
+    def getUserName( self ):
+
+        return self._login
+
+    def getRoles( self ):
+
+        return self._roles
+
+    def getGroups( self ):
+
+        return self._groups
+
+    def allowed( self, value, roles ):
+
+        return 1
+
+    def _addRoles( self, roles ):
+
+        for role in roles:
+            self._roles[role] = 1
+
+    def _addGroups(self, groups):
+        
+        for group in groups:
+            self._groups[group] = 1
+
+    def __repr__( self ):
+
+        return '<FauxUser: %s>' % self._id
+
+
+class ObjectManagerTests( unittest.TestCase ):
+
+    def tearDown( self ):
+
+        noSecurityManager()
+
+    def _getTargetClass( self ):
+
+        from OFS.ObjectManager import ObjectManager
+
+        return ObjectManager
+
+    def _makeOne( self, *args, **kw ):
+
+        return self._getTargetClass()( *args, **kw ).__of__( FauxRoot() )
+
+    def test_setObject_set_owner_with_no_user( self ):
+
+        om = self._makeOne()
+
+        newSecurityManager( None, None )
+
+        si = SimpleItem( 'no_user' )
+
+        om._setObject( 'no_user', si )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+    def test_setObject_set_owner_with_emergency_user( self ):
+
+        om = self._makeOne()
+
+        newSecurityManager( None, emergency_user )
+
+        si = SimpleItem( 'should_fail' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        self.assertRaises( EmergencyUserCannotOwn
+                         , om._setObject, 'should_fail', si )
+
+    def test_setObject_set_owner_with_system_user( self ):
+
+        om = self._makeOne()
+
+        newSecurityManager( None, system )
+
+        si = SimpleItem( 'system' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'system', si )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+    def test_setObject_set_owner_with_anonymous_user( self ):
+
+        om = self._makeOne()
+
+        newSecurityManager( None, nobody )
+
+        si = SimpleItem( 'anon' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'anon', si )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+    def test_setObject_set_owner_with_simple_user( self ):
+
+        om = self._makeOne()
+
+        user = User( 'user', '123', (), () ).__of__( FauxRoot() )
+
+        newSecurityManager( None, user )
+
+        si = SimpleItem( 'faux_creation' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'faux_creation', si )
+
+        self.assertEqual( si.__ac_local_roles__, { 'user': ['Owner'] } )
+
+    def test_setObject_set_owner_with_faux_user( self ):
+
+        om = self._makeOne()
+
+        user = FauxUser( 'user_id', 'user_login' ).__of__( FauxRoot() )
+
+        newSecurityManager( None, user )
+
+        si = SimpleItem( 'faux_creation' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'faux_creation', si )
+
+        self.assertEqual( si.__ac_local_roles__, { 'user_id': ['Owner'] } )
+
+    def test_setObject_no_set_owner_with_no_user( self ):
+
+        om = self._makeOne()
+
+        newSecurityManager( None, None )
+
+        si = SimpleItem( 'should_be_okay' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'should_be_okay', si, set_owner=0 )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+    def test_setObject_no_set_owner_with_emergency_user( self ):
+
+        om = self._makeOne()
+
+        newSecurityManager( None, emergency_user )
+
+        si = SimpleItem( 'should_be_okay' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'should_be_okay', si, set_owner=0 )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+    def test_setObject_no_set_owner_with_system_user( self ):
+
+        om = self._makeOne()
+
+        newSecurityManager( None, system )
+
+        si = SimpleItem( 'should_be_okay' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'should_be_okay', si, set_owner=0 )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+    def test_setObject_no_set_owner_with_anonymous_user( self ):
+
+        om = self._makeOne()
+
+        newSecurityManager( None, nobody )
+
+        si = SimpleItem( 'should_be_okay' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'should_be_okay', si, set_owner=0 )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+    def test_setObject_no_set_owner_with_user( self ):
+
+        om = self._makeOne()
+
+        user = User( 'user', '123', (), () ).__of__( FauxRoot() )
+
+        newSecurityManager( None, user )
+
+        si = SimpleItem( 'should_be_okay' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'should_be_okay', si, set_owner=0 )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+    def test_setObject_no_set_owner_with_faux_user( self ):
+
+        om = self._makeOne()
+
+        user = FauxUser( 'user_id', 'user_login' ).__of__( FauxRoot() )
+
+        newSecurityManager( None, user )
+
+        si = SimpleItem( 'should_be_okay' )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+        om._setObject( 'should_be_okay', si, set_owner=0 )
+
+        self.assertEqual( si.__ac_local_roles__, None )
+
+if __name__ == "__main__":
+    unittest.main()




More information about the Zope-Checkins mailing list