def test__checkId_PortalRoot(self): acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) test = self._makeOne('test') acl_users = self.site._setObject('acl_users', DummyUserFolder()) test._checkId('acl_users') newSecurityManager(None, acl_users.user_foo) self.assertRaises(BadRequest, test._checkId, 'acl_users')
def test__checkId_MethodAlias(self): acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) test = self._makeOne('test') test._setPortalTypeName('Dummy Content 15') ttool = TypesTool() ttool._setObject('Dummy Content 15', FTI(**FTIDATA_CMF[0])) getSiteManager().registerUtility(ttool, ITypesTool) acl_users = self.site._setObject('acl_users', DummyUserFolder()) test._checkId('view') newSecurityManager(None, acl_users.user_foo) self.assertRaises(BadRequest, test._checkId, 'view')
def test_catalogUnindexAndIndex(self): # # Test is a new object does get cataloged upon _setObject # and uncataloged upon manage_deleteObjects # acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) test = self._makeOne('test') ctool = DummyCatalogTool() self.assertEqual(len(ctool), 0) sm = getSiteManager() sm.registerUtility(ctool, ICatalogTool) sm.registerUtility(TypesTool(), ITypesTool) test._setObject('foo', DummyContent('foo', catalog=1)) foo = test.foo self.assertTrue(foo.after_add_called) self.assertFalse(foo.before_delete_called) self.assertEqual(len(ctool), 1) foo.reset() test._delObject('foo') self.assertFalse(foo.after_add_called) self.assertTrue(foo.before_delete_called) self.assertEqual(len(ctool), 0)
def test_tracker261(self): # # Tracker issue #261 says that content in a deleted folder # is not being uncatalogued. Try creating a subfolder with # content object, and test. # from Products.CMFCore.PortalFolder import PortalFolder acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) test = self._makeOne('test') ctool = DummyCatalogTool() getSiteManager().registerUtility(ctool, ICatalogTool) self.assertEqual(len(ctool), 0) test._setObject('sub', PortalFolder('sub', '')) sub = test.sub sub._setObject('foo', DummyContent('foo', catalog=1)) foo = sub.foo self.assertTrue(foo.after_add_called) self.assertFalse(foo.before_delete_called) self.assertEqual(len(ctool), 1) foo.reset() test._delObject('sub') self.assertFalse(foo.after_add_called) self.assertTrue(foo.before_delete_called) self.assertEqual(len(ctool), 0)
def test_createMemberAreaCMFBTreeFolder(self): # Test member area creation if the toplevel "Members" folder is # a CMFBTreeFolder (http://www.zope.org/Collectors/CMF/441 site = self._makeSite() mtool = site.portal_membership members = site._setObject( 'Members', CMFBTreeFolder('Members') ) acl_users = site._setObject( 'acl_users', DummyUserFolder() ) wtool = site._setObject( 'portal_workflow', DummyTool() ) # permission mtool.createMemberArea('user_foo') self.assertFalse( hasattr(members.aq_self, 'user_foo') ) newSecurityManager(None, acl_users.user_bar) mtool.createMemberArea('user_foo') self.assertFalse( hasattr(members.aq_self, 'user_foo') ) newSecurityManager(None, acl_users.user_foo) mtool.setMemberareaCreationFlag() mtool.createMemberArea('user_foo') self.assertFalse( hasattr(members.aq_self, 'user_foo') ) newSecurityManager(None, acl_users.all_powerful_Oz) mtool.setMemberareaCreationFlag() mtool.createMemberArea('user_foo') self.assertTrue( hasattr(members.aq_self, 'user_foo') ) # default content f = members.user_foo ownership = acl_users.user_foo localroles = ( ( 'user_foo', ('Owner',) ), ) self.assertEqual( f.getOwner(), ownership ) self.assertEqual( f.get_local_roles(), localroles, 'CMF Collector issue #162 (LocalRoles broken): %s' % str( f.get_local_roles() ) )
def setUp(self): SecurityRequestTest.setUp(self) setUpEvents() self.root._setObject('site', DummySite('site')) self.site = self.root.site self.acl_users = self.site._setObject('acl_users', DummyUserFolder())
def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.acl_users = self.site._setObject('acl_users', DummyUserFolder()) self.ttool = self.site._setObject('portal_types', TypesTool()) fti = FTIDATA_DUMMY[0].copy() self.ttool._setObject('Dummy Content', FTI(**fti))
def test_getCandidateLocalRoles(self): mtool = self.mtool acl_users = self.site._setObject( 'acl_users', DummyUserFolder() ) newSecurityManager(None, acl_users.user_foo) rval = mtool.getCandidateLocalRoles(mtool) self.assertEqual( rval, ('Dummy',) )
def test_deleteMembers(self): site = self._makeSite() sm = getSiteManager() mtool = site.portal_membership members = site._setObject('Members', PortalFolder('Members')) acl_users = site._setObject('acl_users', DummyUserFolder()) utool = site._setObject('portal_url', DummyTool()) sm.registerUtility(utool, IURLTool) wtool = site._setObject('portal_workflow', DummyTool()) mdtool = site._setObject('portal_memberdata', MemberDataTool()) sm.registerUtility(mdtool, IMemberDataTool) newSecurityManager(None, acl_users.all_powerful_Oz) self.assertEqual(acl_users.getUserById('user_foo'), acl_users.user_foo) mtool.createMemberArea('user_foo') self.failUnless(hasattr(members.aq_self, 'user_foo')) mdtool.registerMemberData('Dummy', 'user_foo') self.failUnless(mdtool._members.has_key('user_foo')) rval = mtool.deleteMembers(('user_foo', 'user_baz')) self.assertEqual(rval, ('user_foo', )) self.failIf(acl_users.getUserById('user_foo', None)) self.failIf(mdtool._members.has_key('user_foo')) self.failIf(hasattr(members.aq_self, 'user_foo')) cleanUp()
def test_createMemberArea(self): site = self._makeSite() mtool = site.portal_membership members = site._setObject('Members', PortalFolder('Members')) acl_users = site._setObject('acl_users', DummyUserFolder()) wtool = site._setObject('portal_workflow', DummyTool()) # permission mtool.createMemberArea('user_foo') self.failIf(hasattr(members.aq_self, 'user_foo')) newSecurityManager(None, acl_users.user_bar) mtool.createMemberArea('user_foo') self.failIf(hasattr(members.aq_self, 'user_foo')) newSecurityManager(None, acl_users.user_foo) mtool.setMemberareaCreationFlag() mtool.createMemberArea('user_foo') self.failIf(hasattr(members.aq_self, 'user_foo')) newSecurityManager(None, acl_users.all_powerful_Oz) mtool.setMemberareaCreationFlag() mtool.createMemberArea('user_foo') self.failUnless(hasattr(members.aq_self, 'user_foo')) # default content f = members.user_foo ownership = acl_users.user_foo localroles = (('user_foo', ('Owner', )), ) self.assertEqual(f.getOwner(), ownership) self.assertEqual( f.get_local_roles(), localroles, 'CMF Collector issue #162 (LocalRoles broken): %s' % str(f.get_local_roles()))
def setUp(self): from Products.CMFCore.TypesTool import FactoryTypeInformation as FTI from Products.CMFCore.tests.base.dummy import DummySite from Products.CMFCore.tests.base.dummy import DummyUserFolder from Products.CMFCore.tests.base.tidata import FTIDATA_DUMMY SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.acl_users = self.site._setObject('acl_users', DummyUserFolder()) self.ttool = self.site._setObject('portal_types', self._makeOne()) fti = FTIDATA_DUMMY[0].copy() self.ttool._setObject('Dummy Content', FTI(**fti)) # setup workflow tool # to test 'Instance creation conditions' of workflows from Products.CMFCore.WorkflowTool import WorkflowTool self.site._setObject('portal_workflow', WorkflowTool()) wftool = self.site.portal_workflow from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition wftool._setObject('wf', DCWorkflowDefinition('wf')) wftool.setDefaultChain('wf') wf = wftool.wf wf.states.addState('initial') wf.states.setInitialState('initial') from Products.DCWorkflow.Guard import Guard g = Guard() wf.creation_guard = g
def test_deleteMembersUnsupported(self): # Quite a few user folders do not support the deletion API # http://www.zope.org/Collectors/CMF/481 # Make sure we get the right exception site = self._makeSite() sm = getSiteManager() sm.registerUtility(site, ISiteRoot) mtool = site.portal_membership members = site._setObject('Members', PortalFolder('Members')) acl_users = site._setObject('acl_users', DummyUserFolder()) mdtool = MemberDataTool() sm.registerUtility(mdtool, IMemberDataTool) newSecurityManager(None, acl_users.all_powerful_Oz) self.assertEqual(acl_users.getUserById('user_foo'), acl_users.user_foo) mtool.createMemberArea('user_foo') self.assertTrue(hasattr(members.aq_self, 'user_foo')) mdtool.registerMemberData('Dummy', 'user_foo') self.assertTrue('user_foo' in mdtool._members) # Fake an incompatible user folder by deleting the class method deletion_method = DummyUserFolder.userFolderDelUsers del DummyUserFolder.userFolderDelUsers self.assertRaises(NotImplementedError, mtool.deleteMembers, ('user_foo', )) self.assertTrue(acl_users.getUserById('user_foo', None)) self.assertTrue('user_foo' in mdtool._members) self.assertTrue(hasattr(members.aq_self, 'user_foo')) # Cleanup DummyUserFolder.userFolderDelUsers = deletion_method
def test_getMemberById_nonesuch(self): INVALID_USER_ID = 'nonesuch' self.root._setObject('folder', Folder('folder')) site = self._makeSite(self.root.folder) tool = site.portal_membership site.acl_users = DummyUserFolder() self.assertEqual(None, tool.getMemberById(INVALID_USER_ID))
def test_manageAddFolder(self): # # Does MKDIR/MKCOL intercept work? # from Products.CMFCore.PortalFolder import PortalFolder from Products.CMFCore.PortalFolder import PortalFolderFactory acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) test = self._makeOne('test') ttool = TypesTool() ttool._setObject( 'Folder', FTI(id='Folder', title='Folder or Directory', meta_type=PortalFolder.meta_type, factory='cmf.folder', filter_content_types=0)) ttool._setObject( 'Grabbed', FTI('Grabbed', title='Grabbed Content', meta_type=PortalFolder.meta_type, factory='cmf.folder')) sm = getSiteManager() sm.registerUtility(ttool, ITypesTool) sm.registerUtility(PortalFolderFactory, IFactory, 'cmf.folder') # First, test default behavior test.manage_addFolder(id='simple', title='Simple') self.assertEqual(test.simple.getPortalTypeName(), 'Folder') self.assertEqual(test.simple.Type(), 'Folder or Directory') self.assertEqual(test.simple.getId(), 'simple') self.assertEqual(test.simple.Title(), 'Simple') # Now, test overridden behavior ttool.Folder.setMethodAliases({'mkdir': 'grabbed'}) class Grabbed: _grabbed_with = None def __init__(self, context): self._context = context def __call__(self, id): self._grabbed_with = id self._context._setOb(id, PortalFolder(id)) self._context._getOb(id)._setPortalTypeName('Grabbed') self.app.grabbed = Grabbed(test) test.manage_addFolder(id='indirect', title='Indirect') self.assertEqual(test.indirect.getPortalTypeName(), 'Grabbed') self.assertEqual(test.indirect.Type(), 'Grabbed Content') self.assertEqual(test.indirect.getId(), 'indirect') self.assertEqual(test.indirect.Title(), 'Indirect')
def setUp( self ): SecurityTest.setUp(self) filterwarnings('ignore', category=DeprecationWarning) self.site = DummySite('site').__of__(self.root) self.acl_users = self.site._setObject( 'acl_users', DummyUserFolder() ) self.ttool = self.site._setObject( 'portal_types', TypesTool() ) fti = FTIDATA_DUMMY[0].copy() self.ttool._setObject( 'Dummy Content', FTI(**fti) )
def test_getMemberById_nonlocal(self): NONLOCAL_USER_ID = 'user_bar' self.root._setObject('folder', Folder('folder')) site = self._makeSite(self.root.folder) self.root.folder._setObject('acl_users', DummyUserFolder()) tool = site.portal_membership member = tool.getMemberById(NONLOCAL_USER_ID) self.assertEqual(member.getId(), NONLOCAL_USER_ID)
def test_checkIdAvailableCatchesBadRequest(self): # # checkIdAvailable() should catch BadRequest # acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) test = self._makeOne('test') test._setObject('foo', DummyContent('foo')) self.assertFalse(test.checkIdAvailable('foo'))
def test__checkId_MethodAlias(self): test = self._makeOne('test') test._setPortalTypeName('Dummy Content 15') ttool = self.site._setObject('portal_types', TypesTool()) ttool._setObject('Dummy Content 15', FTI(**FTIDATA_CMF[0])) acl_users = self.site._setObject('acl_users', DummyUserFolder()) test._checkId('view.html') newSecurityManager(None, acl_users.user_foo) self.assertRaises(BadRequest, test._checkId, 'view.html')
def setUp(self): from Products.CMFCore.TypesTool import FactoryTypeInformation as FTI SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.acl_users = self.site._setObject( 'acl_users', DummyUserFolder() ) self.ttool = self.site._setObject( 'portal_types', self._makeOne() ) fti = FTIDATA_DUMMY[0].copy() self.ttool._setObject( 'Dummy Content', FTI(**fti) )
def test__checkId_Duplicate(self): # # _checkId() should raise BadRequest on duplicate id # acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) test = self._makeOne('test') test._setObject('foo', DummyContent('foo')) self.assertRaises(BadRequest, test._checkId, 'foo')
def test_getMemberById_local(self): LOCAL_USER_ID = 'user_foo' self.app._setObject('folder', Folder('folder')) site = self._makeSite(self.app.folder) site._setObject('acl_users', DummyUserFolder()) tool = site.portal_membership member = tool.getMemberById(LOCAL_USER_ID) self.assertEqual(member.getId(), LOCAL_USER_ID)
def test_getCandidateLocalRoles(self): mtool = self.mtool acl_users = self.site._setObject( 'acl_users', DummyUserFolder() ) newSecurityManager(None, acl_users.user_foo) rval = mtool.getCandidateLocalRoles(mtool) self.assertEqual( rval, ('Dummy',) ) newSecurityManager(None, acl_users.all_powerful_Oz) rval = mtool.getCandidateLocalRoles(mtool) self.assertEqual( rval, ('Manager', 'Member', 'Owner', 'Reviewer') )
def test_manageDelObjects(self): acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) test = self._makeOne('test') foo = DummyContent('foo') test._setObject('foo', foo) foo.reset() test.manage_delObjects(ids=['foo']) self.assertFalse(foo.after_add_called) self.assertTrue(foo.before_delete_called)
def test_createMemberarea(self): mtool = self.mtool self.site._setObject('Members', DummyFolder()) self.site._setObject('acl_users', DummyUserFolder()) self.site._setObject('portal_workflow', DummyTool()) self.site.user_bar = 'test attribute' mtool.createMemberarea('user_foo') self.failUnless(hasattr(self.site.Members.aq_self, 'user_foo')) mtool.createMemberarea('user_bar') self.failUnless(hasattr(self.site.Members.aq_self, 'user_bar'), 'CMF Collector issue #102 (acquisition bug)')
def test_notifyModified(self): acl_users = self.site._setObject( 'acl_users', DummyUserFolder() ) newSecurityManager(None, acl_users.user_foo) item = self._makeDummyContent('item') self.assertEqual( item.listCreators(), () ) item.setModificationDate(0) initial_date = item.ModificationDate() item.notifyModified() self.assertEqual( item.listCreators(), ('user_foo',) ) self.assertNotEqual( item.ModificationDate(), initial_date )
def test_getMemberById_chained(self): LOCAL_USER_ID = 'user_foo' NONLOCAL_USER_ID = 'user_bar' self.root._setObject('folder', Folder('folder')) site = self._makeSite(self.root.folder) tool = site.portal_membership local_uf = DummyUserFolder() delattr(local_uf, NONLOCAL_USER_ID) site._setObject('acl_users', local_uf) nonlocal_uf = DummyUserFolder() delattr(nonlocal_uf, LOCAL_USER_ID) self.root.folder._setObject('acl_users', nonlocal_uf) local_member = tool.getMemberById(LOCAL_USER_ID) self.assertEqual(local_member.getId(), LOCAL_USER_ID) nonlocal_member = tool.getMemberById(NONLOCAL_USER_ID) self.assertEqual(nonlocal_member.getId(), NONLOCAL_USER_ID)
def setUp(self): self.site = DummySite('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) self.site._setObject('portal_membership', MembershipTool()) self.site._setObject('acl_users', DummyUserFolder()) addWorkflowFactory(DefaultWorkflowDefinition, id='default_workflow', title='default_workflow') self._constructDummyWorkflow()
def setUp(self): from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition self.site = DummySite('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) self.site._setObject('portal_membership', DummyTool()) self.site._setObject('acl_users', DummyUserFolder()) wftool = self.site.portal_workflow wftool._setObject('wf', DefaultWorkflowDefinition('wf')) wftool.setDefaultChain('wf')
def test_notifyModified(self): site = DummySite('site').__of__(self.root) acl_users = site._setObject('acl_users', DummyUserFolder()) site._setObject('portal_membership', MembershipTool()) newSecurityManager(None, acl_users.user_foo) item = self._makeDummyContent('item').__of__(site) self.assertEqual(item.listCreators(), ()) item.setModificationDate(0) initial_date = item.ModificationDate() item.notifyModified() self.assertEqual(item.listCreators(), ('user_foo', )) self.assertNotEqual(item.ModificationDate(), initial_date)
def setUp(self): from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition self.site = DummySite('site') self.site._setObject('acl_users', DummyUserFolder()) self.wtool = WorkflowTool() self.wtool._setObject('wf', DefaultWorkflowDefinition('wf')) self.wtool.setDefaultChain('wf') sm = getSiteManager() sm.registerUtility(self.wtool, IWorkflowTool) sm.registerUtility(DummyTool(), IMembershipTool) sm.registerUtility(DummyTool(), ITypesTool)