class DynamicTypeTests(TestCase): def setUp(self): self.site = DummySite('site') self.site._setObject( 'portal_types', TypesTool() ) fti = FTIDATA_CMF15[0].copy() self.site.portal_types._setObject( 'Dummy Content 15', FTI(**fti) ) self.site._setObject( 'foo', DummyContent() ) def test___before_publishing_traverse__(self): dummy_view = self.site._setObject( 'dummy_view', DummyObject() ) response = HTTPResponse() environment = { 'URL': '', 'PARENTS': [self.site], 'REQUEST_METHOD': 'GET', 'steps': [], '_hacked_path': 0, 'response': response } r = BaseRequest(environment) r.traverse('foo') self.assertEqual( r.URL, '/foo/dummy_view' ) self.assertEqual( r.response.base, '/foo/', 'CMF Collector issue #192 (wrong base): %s' % (r.response.base or 'empty',) ) def test_interface(self): from Products.CMFCore.interfaces.Dynamic \ import DynamicType as IDynamicType verifyClass(IDynamicType, DynamicType)
class CoreUtilsTests(SecurityTest): def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject( 'acl_users', DummyUserFolder() ) self.site._setObject('content_dummy', DummyObject(id='content_dummy')) self.site._setObject('actions_dummy', DummyObject(id='actions_dummy')) def test__checkPermission(self): o = self.site.actions_dummy Permission('View',(),o).setRoles(('Anonymous',)) Permission('WebDAV access',(),o).setRoles(('Authenticated',)) Permission('Manage users',(),o).setRoles(('Manager',)) eo = self.site.content_dummy eo._owner = (['acl_users'], 'user_foo') getSecurityManager().addContext(eo) self.failUnless( _checkPermission('View', o) ) self.failIf( _checkPermission('WebDAV access', o) ) self.failIf( _checkPermission('Manage users', o) ) eo._proxy_roles = ('Authenticated',) self.failIf( _checkPermission('View', o) ) self.failUnless( _checkPermission('WebDAV access', o) ) self.failIf( _checkPermission('Manage users', o) ) def test_normalize(self): self.assertEqual( normalize('foo/bar'), 'foo/bar' ) self.assertEqual( normalize('foo\\bar'), 'foo/bar' )
class MembershipToolSecurityTests(SecurityTest): def _makeOne(self, *args, **kw): from Products.CMFDefault.MembershipTool import MembershipTool return MembershipTool(*args, **kw) def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject( 'portal_membership', self._makeOne() ) def tearDown(self): cleanUp() SecurityTest.tearDown(self) def test_createMemberArea(self): mtool = self.site.portal_membership members = self.site._setObject( 'Members', PortalFolder('Members') ) acl_users = self.site._setObject( 'acl_users', DummyUserFolder() ) wtool = self.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.Title(), "user_foo's Home" ) self.assertEqual( f.getOwner(), ownership ) self.assertEqual( f.get_local_roles(), localroles, 'CMF Collector issue #162 (LocalRoles broken): %s' % str( f.get_local_roles() ) ) self.assertEqual( f.index_html.getOwner(), ownership, 'CMF Collector issue #162 (Ownership broken): %s' % str( f.index_html.getOwner() ) ) self.assertEqual( f.index_html.get_local_roles(), localroles, 'CMF Collector issue #162 (LocalRoles broken): %s' % str( f.index_html.get_local_roles() ) ) self.assertEqual( wtool.test_notified, f.index_html ) # acquisition self.site.user_bar = 'test attribute' newSecurityManager(None, acl_users.user_bar) mtool.createMemberArea('user_bar') self.failUnless( hasattr(members.aq_self, 'user_bar'), 'CMF Collector issue #102 (acquisition bug)' )
class DynamicTypeSecurityTests(SecurityTest): def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.app) ttool = TypesTool() fti = FTIDATA_CMF[0].copy() ttool._setObject('Dummy Content 15', FTI(**fti)) self.site._setObject('foo', DummyContent()) sm = getSiteManager() sm.registerUtility(DummyTool(), IMembershipTool) sm.registerUtility(DummyTool().__of__(self.site), IURLTool) sm.registerUtility(ttool, ITypesTool) def tearDown(self): cleanUp() SecurityTest.tearDown(self) def test_getTypeInfo(self): foo = self.site.foo self.assertEqual(foo.getTypeInfo().getId(), 'Dummy Content 15') def test_getActionInfo(self): foo = self.site.foo self.assertEqual(foo.getActionInfo('object/view')['id'], 'view') # The following is nasty, but I want to make sure the ValueError # carries some useful information INVALID_ID = 'invalid_id' try: foo.getActionInfo('object/%s' % INVALID_ID) except ValueError, e: message = e.args[0] detail = '"%s" does not offer action "%s"' % (message, INVALID_ID) self.failUnless(message.find(INVALID_ID) != -1, detail)
class ActionInfoSecurityTests(SecurityTest): def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject( 'portal_membership', DummyMembershipTool() ) def _makeOne(self, *args, **kw): from Products.CMFCore.ActionInformation import ActionInfo return ActionInfo(*args, **kw) def test_create_from_dict(self): WANTED = {'allowed': True, 'available': True, 'category': 'object', 'id': 'foo', 'title': 'foo', 'url': '', 'visible': True} action = {'name': 'foo', 'url': '', 'permissions': ('View',)} ec = createExprContext(self.site, self.site, None) ai = self._makeOne(action, ec) self.assertEqual( ai['id'], WANTED['id'] ) self.assertEqual( ai['title'], WANTED['title'] ) self.assertEqual( ai['url'], WANTED['url'] ) self.assertEqual( ai['category'], WANTED['category'] ) self.assertEqual( ai['visible'], WANTED['visible'] ) self.assertEqual( ai['available'], WANTED['available'] ) self.assertEqual( ai['allowed'], WANTED['allowed'] ) self.assertEqual( ai, WANTED )
def setUp(self): from Products.CMFCore.ActionsTool import ActionsTool site = DummySite('site') site._setObject('portal_actions', ActionsTool('portal_actions')) self._obj = site.portal_actions self._BODY = _ACTIONSTOOL_BODY
class MembershipToolSecurityTests(SecurityTest): def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.mtool = MembershipTool().__of__(self.site) 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_createMemberarea(self): mtool = self.mtool self.site._setObject( 'Members', PortalFolder('Members') ) self.site._setObject( 'acl_users', DummyUserFolder() ) self.site._setObject( 'portal_workflow', DummyTool() ) mtool.createMemberarea('user_foo') f = self.site.Members.user_foo ownership = self.site.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() ) )
class DefaultWorkflowDefinitionTests(unittest.TestCase): 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_z2interfaces(self): from Interface.Verify import verifyClass from Products.CMFCore.interfaces.portal_workflow \ import WorkflowDefinition as IWorkflowDefinition from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition verifyClass(IWorkflowDefinition, DefaultWorkflowDefinition) def test_z3interfaces(self): from zope.interface.verify import verifyClass from Products.CMFCore.interfaces import IWorkflowDefinition from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition verifyClass(IWorkflowDefinition, DefaultWorkflowDefinition) def _getDummyWorkflow(self): wftool = self.site.portal_workflow return wftool.wf def test_isActionSupported(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ( 'submit', 'retract', 'publish', 'reject', ): self.assert_(wf.isActionSupported(dummy, action)) def test_isActionSupported_with_keywargs(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ( 'submit', 'retract', 'publish', 'reject', ): self.assert_(wf.isActionSupported(dummy, action, arg1=1, arg2=2))
class URLToolTests(TestCase): def setUp(self): self.site = DummySite(id='foo') def _makeOne(self, *args, **kw): url_tool = apply(URLTool, args, kw) return url_tool.__of__(self.site) def test_portal_methods(self): url_tool = self._makeOne() self.assertEqual(url_tool(), 'http://www.foobar.com/bar/foo') self.assertEqual(url_tool.getPortalObject(), self.site) self.assertEqual(url_tool.getPortalPath(), '/bar/foo') def test_content_methods(self): url_tool = self._makeOne() self.site._setObject('folder', DummyFolder(id='buz')) self.site.folder._setObject('item', DummyContent(id='qux.html')) obj = self.site.folder.item self.assertEqual(url_tool.getRelativeContentPath(obj), ('buz', 'qux.html')) self.assertEqual(url_tool.getRelativeContentURL(obj), 'buz/qux.html') self.assertEqual(url_tool.getRelativeUrl(obj), 'buz/qux.html') def test_interface(self): from Products.CMFCore.interfaces.portal_url \ import portal_url as IURLTool from Products.CMFCore.interfaces.portal_actions \ import ActionProvider as IActionProvider verifyClass(IURLTool, URLTool) verifyClass(IActionProvider, URLTool)
class ActionInfoSecurityTests(SecurityTest): def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject( 'portal_membership', DummyMembershipTool() ) def _makeOne(self, *args, **kw): from Products.CMFCore.ActionInformation import ActionInfo return ActionInfo(*args, **kw) def test_create_from_dict(self): WANTED = {'allowed': True, 'available': True, 'category': 'object', 'id': 'foo', 'name': 'foo', 'permissions': ('View',), 'title': 'foo', 'url': '', 'visible': True} action = {'name': 'foo', 'url': '', 'permissions': ('View',)} ec = createExprContext(self.site, self.site, None) ai = self._makeOne(action, ec) self.assertEqual( ai['id'], WANTED['id'] ) self.assertEqual( ai['title'], WANTED['title'] ) self.assertEqual( ai['url'], WANTED['url'] ) self.assertEqual( ai['category'], WANTED['category'] ) self.assertEqual( ai['visible'], WANTED['visible'] ) self.assertEqual( ai['available'], WANTED['available'] ) self.assertEqual( ai['allowed'], WANTED['allowed'] ) self.assertEqual( ai, WANTED )
def _makeSite(self, parent=None): if parent is None: parent = self.app site = DummySite('site').__of__(parent) site.__ac_roles__ = ('Reviewer', ) site._setObject('portal_membership', self._makeOne()) return site
class DynamicTypeSecurityTests(SecurityTest): def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.app) ttool = TypesTool() fti = FTIDATA_CMF[0].copy() ttool._setObject( 'Dummy Content 15', FTI(**fti) ) self.site._setObject( 'foo', DummyContent() ) sm = getSiteManager() sm.registerUtility(DummyTool(), IMembershipTool) sm.registerUtility(DummyTool().__of__(self.site), IURLTool) sm.registerUtility(ttool, ITypesTool) def tearDown(self): cleanUp() SecurityTest.tearDown(self) def test_getTypeInfo(self): foo = self.site.foo self.assertEqual( foo.getTypeInfo().getId(), 'Dummy Content 15' ) def test_getActionInfo(self): foo = self.site.foo self.assertEqual( foo.getActionInfo('object/view')['id'], 'view' ) # The following is nasty, but I want to make sure the ValueError # carries some useful information INVALID_ID = 'invalid_id' try: foo.getActionInfo('object/%s' % INVALID_ID) except ValueError, e: message = e.args[0] detail = '"%s" does not offer action "%s"' % (message, INVALID_ID) self.failUnless(message.find(INVALID_ID) != -1, detail)
class PortalFolderFactoryTests(SecurityTest): _PORTAL_TYPE = 'Test Folder' def _getTargetObject(self): from Products.CMFCore.PortalFolder import PortalFolderFactory return PortalFolderFactory def setUp(self): from Products.CMFCore.PortalFolder import PortalFolder SecurityTest.setUp(self) setUpEvents() gsm = getGlobalSiteManager() gsm.provideUtility(IFactory, self._getTargetObject(), 'cmf.folder') self.site = DummySite('site').__of__(self.root) acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) ttool = self.site._setObject('portal_types', TypesTool()) ttool._setObject(self._PORTAL_TYPE, FTI(id=self._PORTAL_TYPE, title='Folder or Directory', meta_type=PortalFolder.meta_type, factory='cmf.folder', filter_content_types=0)) ttool._setObject('Dummy Content', FTI(**FTIDATA_DUMMY[0].copy())) self.f = self.site._setObject('container', PortalFolder('container')) self.f._setPortalTypeName(self._PORTAL_TYPE) def tearDown(self): SecurityTest.tearDown(self) cleanUp() def test_invokeFactory(self): f = self.f self.failIf( 'foo' in f.objectIds() ) f.manage_addProduct = {'FooProduct': DummyFactoryDispatcher(f)} f.invokeFactory( type_name='Dummy Content', id='foo' ) self.failUnless( 'foo' in f.objectIds() ) foo = f.foo self.assertEqual( foo.getId(), 'foo' ) self.assertEqual( foo.getPortalTypeName(), 'Dummy Content' ) self.assertEqual( foo.Type(), 'Dummy Content Title' ) def test_invokeFactory_disallowed_type(self): f = self.f ftype = getattr(self.site.portal_types, self._PORTAL_TYPE) ftype.filter_content_types = 1 self.assertRaises(ValueError, f.invokeFactory, self._PORTAL_TYPE, 'sub') ftype.allowed_content_types = (self._PORTAL_TYPE,) f.invokeFactory(self._PORTAL_TYPE, id='sub') self.failUnless('sub' in f.objectIds()) self.assertRaises(ValueError, f.invokeFactory, 'Dummy Content', 'foo')
class DynamicTypeTests(TestCase): def setUp(self): self.site = DummySite('site') self.site._setObject('portal_types', TypesTool()) fti = FTIDATA_CMF15[0].copy() self.site.portal_types._setObject('Dummy Content 15', FTI(**fti)) self.site._setObject('foo', DummyContent()) def test___before_publishing_traverse__(self): dummy_view = self.site._setObject('dummy_view', DummyObject()) response = HTTPResponse() environment = { 'URL': '', 'PARENTS': [self.site], 'REQUEST_METHOD': 'GET', 'steps': [], '_hacked_path': 0, 'response': response } r = BaseRequest(environment) r.traverse('foo') self.assertEqual(r.URL, '/foo/dummy_view') self.assertEqual( r.response.base, '/foo/', 'CMF Collector issue #192 (wrong base): %s' % (r.response.base or 'empty', )) def test_interface(self): from Products.CMFCore.interfaces.Dynamic \ import DynamicType as IDynamicType verifyClass(IDynamicType, DynamicType)
class TestImageElement(ConformsToContent, unittest.TestCase): def _getTargetClass(self): from Products.CMFDefault.Image import Image return Image def _makeOne(self, *args, **kw): return self._getTargetClass()(*args, **kw) def setUp(self): self.site = DummySite('site') self.site._setObject( 'portal_membership', DummyTool() ) def test_getId_on_old_Image_instance(self): image = self.site._setObject('testimage', self._makeOne('testimage')) self.assertEqual(image.getId(), 'testimage') self.assertEqual(image.id, 'testimage') # Mimick old instance when base classes had OFS.Image.Image first image.__name__ = 'testimage' delattr(image, 'id') self.assertEqual(image.getId(), 'testimage') self.assertEqual(image.id(), 'testimage') def test_EditWithEmptyFile(self): # Test handling of empty file uploads image = self.site._setObject('testimage', self._makeOne('testimage')) testfile = open(TEST_JPG, 'rb') image.edit(file=testfile) testfile.seek(0,2) testfilesize = testfile.tell() testfile.close() assert image.get_size() == testfilesize emptyfile = StringIO() image.edit(file=emptyfile) assert image.get_size() > 0 assert image.get_size() == testfilesize def test_Image_setFormat(self): # Setting the DC.format must also set the content_type property image = self._makeOne('testimage', format='image/jpeg') self.assertEqual(image.Format(), 'image/jpeg') self.assertEqual(image.content_type, 'image/jpeg') image.setFormat('image/gif') self.assertEqual(image.Format(), 'image/gif') self.assertEqual(image.content_type, 'image/gif') def test_ImageContentTypeUponConstruction(self): # Test the content type after calling the constructor with the # file object being passed in (http://www.zope.org/Collectors/CMF/370) testfile = open(TEST_JPG, 'rb') image = self._makeOne('testimage', file=testfile) testfile.close() self.assertEqual(image.Format(), 'image/jpeg') self.assertEqual(image.content_type, 'image/jpeg')
class RequestTestBase(RequestTest): def setUp(self): RequestTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject('portal_membership', DummyTool()) def _makeOne(self, id, *args, **kw): return self.site._setObject(id, Document(id, *args, **kw))
class PortalFolderFactoryTests(SecurityTest): layer = TraversingEventZCMLLayer _PORTAL_TYPE = 'Test Folder' def _getTargetObject(self): from Products.CMFCore.PortalFolder import PortalFolderFactory return PortalFolderFactory def setUp(self): from Products.CMFCore.PortalFolder import PortalFolder SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.app) acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) self.ttool = ttool = TypesTool() ttool._setObject( self._PORTAL_TYPE, FTI(id=self._PORTAL_TYPE, title='Folder or Directory', meta_type=PortalFolder.meta_type, factory='cmf.folder', filter_content_types=0)) ttool._setObject('Dummy Content', FTI(**FTIDATA_DUMMY[0].copy())) sm = getSiteManager() sm.registerUtility(ttool, ITypesTool) sm.registerUtility(self._getTargetObject(), IFactory, 'cmf.folder') self.f = self.site._setObject('container', PortalFolder('container')) self.f._setPortalTypeName(self._PORTAL_TYPE) def test_invokeFactory(self): f = self.f self.assertFalse('foo' in f.objectIds()) f.manage_addProduct = {'FooProduct': DummyFactoryDispatcher(f)} f.invokeFactory(type_name='Dummy Content', id='foo') self.assertTrue('foo' in f.objectIds()) foo = f.foo self.assertEqual(foo.getId(), 'foo') self.assertEqual(foo.getPortalTypeName(), 'Dummy Content') self.assertEqual(foo.Type(), 'Dummy Content Title') def test_invokeFactory_disallowed_type(self): f = self.f ftype = getattr(self.ttool, self._PORTAL_TYPE) ftype.filter_content_types = 1 self.assertRaises(ValueError, f.invokeFactory, self._PORTAL_TYPE, 'sub') ftype.allowed_content_types = (self._PORTAL_TYPE, ) f.invokeFactory(self._PORTAL_TYPE, id='sub') self.assertTrue('sub' in f.objectIds()) self.assertRaises(ValueError, f.invokeFactory, 'Dummy Content', 'foo')
class RequestTestBase(RequestTest): def setUp(self): RequestTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject( 'portal_membership', DummyTool() ) def _makeOne(self, id, *args, **kw): return self.site._setObject( id, Document(id, *args, **kw) )
class PortalFolderFactoryTests(SecurityTest): layer = TraversingEventZCMLLayer _PORTAL_TYPE = 'Test Folder' def _getTargetObject(self): from Products.CMFCore.PortalFolder import PortalFolderFactory return PortalFolderFactory def setUp(self): from Products.CMFCore.PortalFolder import PortalFolder SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.app) acl_users = self.site._setObject('acl_users', DummyUserFolder()) newSecurityManager(None, acl_users.all_powerful_Oz) self.ttool = ttool = TypesTool() ttool._setObject(self._PORTAL_TYPE, FTI(id=self._PORTAL_TYPE, title='Folder or Directory', meta_type=PortalFolder.meta_type, factory='cmf.folder', filter_content_types=0)) ttool._setObject('Dummy Content', FTI(**FTIDATA_DUMMY[0].copy())) sm = getSiteManager() sm.registerUtility(ttool, ITypesTool) sm.registerUtility(self._getTargetObject(), IFactory, 'cmf.folder') self.f = self.site._setObject('container', PortalFolder('container')) self.f._setPortalTypeName(self._PORTAL_TYPE) def test_invokeFactory(self): f = self.f self.assertFalse('foo' in f.objectIds()) f.manage_addProduct = {'FooProduct': DummyFactoryDispatcher(f)} f.invokeFactory(type_name='Dummy Content', id='foo') self.assertTrue('foo' in f.objectIds()) foo = f.foo self.assertEqual(foo.getId(), 'foo') self.assertEqual(foo.getPortalTypeName(), 'Dummy Content') self.assertEqual(foo.Type(), 'Dummy Content Title') def test_invokeFactory_disallowed_type(self): f = self.f ftype = getattr(self.ttool, self._PORTAL_TYPE) ftype.filter_content_types = 1 self.assertRaises(ValueError, f.invokeFactory, self._PORTAL_TYPE, 'sub') ftype.allowed_content_types = (self._PORTAL_TYPE,) f.invokeFactory(self._PORTAL_TYPE, id='sub') self.assertTrue('sub' in f.objectIds()) self.assertRaises(ValueError, f.invokeFactory, 'Dummy Content', 'foo')
class CoreUtilsTests(SecurityTest): def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject('acl_users', DummyUserFolder()) self.site._setObject('content_dummy', DummyObject(id='content_dummy')) self.site._setObject('actions_dummy', DummyObject(id='actions_dummy')) def test__checkPermission(self): o = self.site.actions_dummy Permission('View', (), o).setRoles(('Anonymous', )) Permission('WebDAV access', (), o).setRoles(('Authenticated', )) Permission('Manage users', (), o).setRoles(('Manager', )) eo = self.site.content_dummy eo._owner = (['acl_users'], 'user_foo') getSecurityManager().addContext(eo) self.failUnless(_checkPermission('View', o)) self.failIf(_checkPermission('WebDAV access', o)) self.failIf(_checkPermission('Manage users', o)) eo._proxy_roles = ('Authenticated', ) self.failIf(_checkPermission('View', o)) self.failUnless(_checkPermission('WebDAV access', o)) self.failIf(_checkPermission('Manage users', o)) def test_normalize(self): self.assertEqual(normalize('foo/bar'), 'foo/bar') self.assertEqual(normalize('foo\\bar'), 'foo/bar') def test_keywordsplitter_empty(self): for x in ['', ' ', ',', ',,', ';', ';;']: self.assertEqual(keywordsplitter({'Keywords': x}), []) def test_keywordsplitter_single(self): for x in ['foo', ' foo ', 'foo,', 'foo ,,', 'foo;', 'foo ;;']: self.assertEqual(keywordsplitter({'Keywords': x}), ['foo']) def test_keywordsplitter_multi(self): for x in [ 'foo, bar, baz', 'foo, bar , baz', 'foo, bar,, baz', 'foo; bar; baz' ]: self.assertEqual(keywordsplitter({'Keywords': x}), ['foo', 'bar', 'baz']) def test_contributorsplitter_emtpy(self): for x in ['', ' ', ';', ';;']: self.assertEqual(contributorsplitter({'Contributors': x}), []) def test_contributorsplitter_single(self): for x in ['foo', ' foo ', 'foo;', 'foo ;;']: self.assertEqual(contributorsplitter({'Contributors': x}), ['foo']) def test_contributorsplitter_multi(self): for x in ['foo; bar; baz', 'foo; bar ; baz', 'foo; bar;; baz']: self.assertEqual(contributorsplitter({'Contributors': x}), ['foo', 'bar', 'baz'])
class URLToolTests(unittest.TestCase): def setUp(self): self.site = DummySite(id='foo') sm = getSiteManager() sm.registerUtility(self.site, ISiteRoot) def tearDown(self): cleanUp() def _makeOne(self, *args, **kw): from Products.CMFCore.URLTool import URLTool url_tool = URLTool(*args, **kw) return url_tool.__of__( self.site ) def test_z2interfaces(self): from Interface.Verify import verifyClass from Products.CMFCore.interfaces.portal_actions \ import ActionProvider as IActionProvider from Products.CMFCore.interfaces.portal_url \ import portal_url as IURLTool from Products.CMFCore.URLTool import URLTool verifyClass(IActionProvider, URLTool) verifyClass(IURLTool, URLTool) def test_z3interfaces(self): from zope.interface.verify import verifyClass from Products.CMFCore.interfaces import IActionProvider from Products.CMFCore.interfaces import IURLTool from Products.CMFCore.URLTool import URLTool verifyClass(IActionProvider, URLTool) verifyClass(IURLTool, URLTool) def test_portal_methods(self): url_tool = self._makeOne() self.assertEqual( url_tool() , 'http://www.foobar.com/bar/foo' ) self.assertEqual( url_tool.getPortalObject() , self.site ) self.assertEqual( url_tool.getPortalPath() , '/bar/foo' ) def test_content_methods(self): url_tool = self._makeOne() self.site._setObject( 'folder', DummyFolder(id='buz') ) self.site.folder._setObject( 'item', DummyContent(id='qux.html') ) obj = self.site.folder.item self.assertEqual( url_tool.getRelativeContentPath(obj) , ('buz', 'qux.html') ) self.assertEqual( url_tool.getRelativeContentURL(obj) , 'buz/qux.html' ) self.assertEqual( url_tool.getRelativeUrl(obj) , 'buz/qux.html' )
class DefaultWorkflowDefinitionTests(unittest.TestCase): 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) def tearDown(self): cleanUp() def test_interfaces(self): from Products.CMFCore.interfaces import IWorkflowDefinition from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition verifyClass(IWorkflowDefinition, DefaultWorkflowDefinition) def _getDummyWorkflow(self): return self.wtool.wf def test_isActionSupported(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ( 'submit', 'retract', 'publish', 'reject', ): self.assertTrue(wf.isActionSupported(dummy, action)) def test_isActionSupported_with_keywargs(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ( 'submit', 'retract', 'publish', 'reject', ): self.assertTrue(wf.isActionSupported(dummy, action, arg1=1, arg2=2))
def setUp(self): from Products.CMFCore.ActionsTool import ActionsTool PlacelessSetup.setUp(self) zcml.load_config('meta.zcml', Products.Five) zcml.load_config('configure.zcml', Products.CMFCore) site = DummySite('site') site._setObject('portal_actions', ActionsTool('portal_actions')) self._obj = site.portal_actions self._XML = _ACTIONSTOOL_XML
def setUp(self): import Products.CMFCore.exportimport from Products.CMFCore.ActionsTool import ActionsTool BodyAdapterTestCase.setUp(self) zcml.load_config('configure.zcml', Products.CMFCore.exportimport) site = DummySite('site') site._setObject('portal_actions', ActionsTool('portal_actions')) self._obj = site.portal_actions self._BODY = _ACTIONSTOOL_BODY
class FavoriteTests( TestCase ): def setUp( self ): self.site = DummySite('site') self.site._setObject( 'portal_membership', DummyTool() ) self.site._setObject( 'portal_url', DummyTool() ) def _makeOne(self, id, *args, **kw): return self.site._setObject( id, Favorite(id, *args, **kw) ) def test_Empty( self ): utool = self.site.portal_url f = self._makeOne( 'foo' ) self.assertEqual( f.getId(), 'foo' ) self.assertEqual( f.Title(), '' ) self.assertEqual( f.Description(), '' ) self.assertEqual( f.getRemoteUrl(), utool.root ) self.assertEqual( f.getObject(), self.site ) self.assertEqual( f.getIcon(), self.site.getIcon() ) self.assertEqual( f.getIcon(1), self.site.getIcon(1) ) def test_CtorArgs( self ): utool = self.site.portal_url self.assertEqual( self._makeOne( 'foo' , title='Title' ).Title(), 'Title' ) self.assertEqual( self._makeOne( 'bar' , description='Description' ).Description(), 'Description' ) baz = self._makeOne( 'baz', remote_url='portal_url' ) self.assertEqual( baz.getObject(), utool ) self.assertEqual( baz.getRemoteUrl() , '%s/portal_url' % utool.root ) self.assertEqual( baz.getIcon(), utool.getIcon() ) def test_edit( self ): utool = self.site.portal_url f = self._makeOne( 'foo' ) f.edit( 'portal_url' ) self.assertEqual( f.getObject(), utool ) self.assertEqual( f.getRemoteUrl() , '%s/portal_url' % utool.root ) self.assertEqual( f.getIcon(), utool.getIcon() ) def test_editEmpty( self ): utool = self.site.portal_url f = self._makeOne( 'gnnn' ) f.edit( '' ) self.assertEqual( f.getObject(), self.site ) self.assertEqual( f.getRemoteUrl(), utool.root ) self.assertEqual( f.getIcon(), self.site.getIcon() )
def setUp(self): from Products.CMFCore.ActionsTool import ActionsTool PlacelessSetup.setUp(self) zcml.load_config('meta.zcml', Products.Five) zcml.load_config('configure.zcml', Products.CMFCore.exportimport) site = DummySite('site') site._setObject('portal_actions', ActionsTool('portal_actions')) self._obj = site.portal_actions self._XML = _ACTIONSTOOL_XML
def setUp(self): import Products.CMFCore from Products.CMFCore.ActionsTool import ActionsTool BodyAdapterTestCase.setUp(self) zcml.load_config('configure.zcml', Products.CMFCore) site = DummySite('site') site._setObject('portal_actions', ActionsTool('portal_actions')) self._obj = site.portal_actions self._BODY = _ACTIONSTOOL_BODY
class DefaultWorkflowDefinitionTests(unittest.TestCase): 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_z2interfaces(self): from Interface.Verify import verifyClass from Products.CMFCore.interfaces.portal_workflow \ import WorkflowDefinition as IWorkflowDefinition from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition verifyClass(IWorkflowDefinition, DefaultWorkflowDefinition) def test_z3interfaces(self): from zope.interface.verify import verifyClass from Products.CMFCore.interfaces import IWorkflowDefinition from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition verifyClass(IWorkflowDefinition, DefaultWorkflowDefinition) def _getDummyWorkflow(self): wftool = self.site.portal_workflow return wftool.wf def test_isActionSupported(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ('submit', 'retract', 'publish', 'reject',): self.assert_(wf.isActionSupported(dummy, action)) def test_isActionSupported_with_keywargs(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ('submit', 'retract', 'publish', 'reject',): self.assert_(wf.isActionSupported(dummy, action, arg1=1, arg2=2))
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 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 test_refreshCatalog(self): site = DummySite('site').__of__(self.root) site._setObject('dummy', DummyContent(catalog=1)) site._setObject('portal_catalog', self._makeOne()) ctool = site.portal_catalog ctool.catalog_object(site.dummy, '/dummy') self.assertEqual(1, len(ctool._catalog.searchResults())) ctool.refreshCatalog(clear=1) self.assertEqual(1, len(ctool._catalog.searchResults()), 'CMF Collector issue #379 (\'Update Catalog\' ' 'fails): %s entries after refreshCatalog' % (len(ctool._catalog.searchResults()),))
def setUp(self): from Products.CMFCore.interfaces import IActionsTool from Products.CMFCore.ActionsTool import ActionsTool BodyAdapterTestCase.setUp(self) site = DummySite('site') site._setObject('portal_actions', ActionsTool('portal_actions')) self._obj = site.portal_actions self._BODY = _ACTIONSTOOL_BODY # utility registration sm = getSiteManager() sm.registerUtility(self._obj, IActionsTool)
class FavoriteTests(ConformsToContent, unittest.TestCase): def _getTargetClass(self): from Products.CMFDefault.Favorite import Favorite return Favorite def _makeOne(self, *args, **kw): return self._getTargetClass()(*args, **kw) def setUp(self): self.site = DummySite('site') self.site._setObject( 'portal_membership', DummyTool() ) self.site._setObject( 'portal_url', DummyTool() ) def test_Empty( self ): utool = self.site.portal_url f = self.site._setObject('foo', self._makeOne('foo')) self.assertEqual( f.getId(), 'foo' ) self.assertEqual( f.Title(), '' ) self.assertEqual( f.Description(), '' ) self.assertEqual( f.getRemoteUrl(), utool.root ) self.assertEqual( f.getObject(), self.site ) self.assertEqual( f.getIcon(), self.site.getIcon() ) self.assertEqual( f.getIcon(1), self.site.getIcon(1) ) def test_CtorArgs( self ): utool = self.site.portal_url self.assertEqual( self._makeOne( 'foo' , title='Title' ).Title(), 'Title' ) self.assertEqual( self._makeOne( 'bar' , description='Description' ).Description(), 'Description' ) baz = self.site._setObject('foo', self._makeOne('baz', remote_url='portal_url')) self.assertEqual( baz.getObject(), utool ) self.assertEqual( baz.getRemoteUrl() , '%s/portal_url' % utool.root ) self.assertEqual( baz.getIcon(), utool.getIcon() ) def test_edit( self ): utool = self.site.portal_url f = self.site._setObject('foo', self._makeOne('foo')) f.edit( 'portal_url' ) self.assertEqual( f.getObject(), utool ) self.assertEqual( f.getRemoteUrl() , '%s/portal_url' % utool.root ) self.assertEqual( f.getIcon(), utool.getIcon() ) def test_editEmpty( self ): utool = self.site.portal_url f = self.site._setObject('gnnn', self._makeOne('gnnn')) f.edit( '' ) self.assertEqual( f.getObject(), self.site ) self.assertEqual( f.getRemoteUrl(), utool.root ) self.assertEqual( f.getIcon(), self.site.getIcon() )
def test_refreshCatalog(self): site = DummySite('site') site._setObject('dummy', self._makeContent(catalog=1)) ctool = self._makeOne().__of__(site) ctool.addIndex('meta_type', 'FieldIndex') ctool.catalog_object(site.dummy, '/dummy') query = {'meta_type': 'Dummy'} self.assertEqual(1, len(ctool._catalog.searchResults(query))) ctool.refreshCatalog(clear=1) length = len(ctool._catalog.searchResults(query)) self.assertEqual( 1, length, 'CMF Collector issue #379 (\'Update Catalog\' ' 'fails): %s entries after refreshCatalog' % length)
class DynamicTypeSecurityTests(SecurityRequestTest): def setUp(self): SecurityRequestTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject( 'portal_membership', DummyTool() ) self.site._setObject( 'portal_types', TypesTool() ) self.site._setObject( 'portal_url', DummyTool() ) fti = FTIDATA_CMF15[0].copy() self.site.portal_types._setObject( 'Dummy Content 15', FTI(**fti) ) self.site._setObject( 'foo', DummyContent() ) def tearDown(self): cleanUp() SecurityRequestTest.tearDown(self) def test_getTypeInfo(self): foo = self.site.foo self.assertEqual( foo.getTypeInfo().getId(), 'Dummy Content 15' ) def test_getActionInfo(self): foo = self.site.foo self.assertEqual( foo.getActionInfo('object/view')['id'], 'view' ) # The following is nasty, but I want to make sure the ValueError # carries some useful information INVALID_ID = 'invalid_id' try: rval = foo.getActionInfo('object/%s' % INVALID_ID) except ValueError, e: message = e.args[0] detail = '"%s" does not offer action "%s"' % (message, INVALID_ID) self.failUnless(message.find(INVALID_ID) != -1, detail)
class URLToolTests(unittest.TestCase): def setUp(self): self.site = DummySite(id='foo') sm = getSiteManager() sm.registerUtility(self.site, ISiteRoot) def tearDown(self): cleanUp() def _makeOne(self, *args, **kw): from Products.CMFCore.URLTool import URLTool url_tool = URLTool(*args, **kw) return url_tool.__of__(self.site) def test_z2interfaces(self): from Interface.Verify import verifyClass from Products.CMFCore.interfaces.portal_actions \ import ActionProvider as IActionProvider from Products.CMFCore.interfaces.portal_url \ import portal_url as IURLTool from Products.CMFCore.URLTool import URLTool verifyClass(IActionProvider, URLTool) verifyClass(IURLTool, URLTool) def test_z3interfaces(self): from zope.interface.verify import verifyClass from Products.CMFCore.interfaces import IActionProvider from Products.CMFCore.interfaces import IURLTool from Products.CMFCore.URLTool import URLTool verifyClass(IActionProvider, URLTool) verifyClass(IURLTool, URLTool) def test_portal_methods(self): url_tool = self._makeOne() self.assertEqual(url_tool(), 'http://www.foobar.com/bar/foo') self.assertEqual(url_tool.getPortalObject(), self.site) self.assertEqual(url_tool.getPortalPath(), '/bar/foo') def test_content_methods(self): url_tool = self._makeOne() self.site._setObject('folder', DummyFolder(id='buz')) self.site.folder._setObject('item', DummyContent(id='qux.html')) obj = self.site.folder.item self.assertEqual(url_tool.getRelativeContentPath(obj), ('buz', 'qux.html')) self.assertEqual(url_tool.getRelativeContentURL(obj), 'buz/qux.html') self.assertEqual(url_tool.getRelativeUrl(obj), 'buz/qux.html')
class DublinCoreTests(SecurityTest): def setUp(self): SecurityTest.setUp(self) self.site = DummySite('site').__of__(self.root) self.site._setObject( 'portal_membership', MembershipTool() ) def _makeDummyContent(self, id, *args, **kw): return self.site._setObject( id, DummyContent(id, *args, **kw) ) 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_creators_methods(self): acl_users = self.site._setObject( 'acl_users', DummyUserFolder() ) newSecurityManager(None, acl_users.user_foo) item = self._makeDummyContent('item') self.assertEqual( item.listCreators(), () ) item.addCreator() self.assertEqual( item.listCreators(), ('user_foo',) ) newSecurityManager(None, acl_users.user_bar) item.addCreator() self.assertEqual( item.listCreators(), ('user_foo', 'user_bar') ) item.addCreator() self.assertEqual( item.listCreators(), ('user_foo', 'user_bar') ) item.addCreator('user_baz') self.assertEqual( item.listCreators(), ('user_foo', 'user_bar', 'user_baz') ) def test_interface(self): from Products.CMFCore.interfaces.DublinCore \ import DublinCore as IDublinCore from Products.CMFCore.interfaces.DublinCore \ import CatalogableDublinCore as ICatalogableDublinCore from Products.CMFCore.interfaces.DublinCore \ import MutableDublinCore as IMutableDublinCore verifyClass(IDublinCore, DefaultDublinCoreImpl) verifyClass(ICatalogableDublinCore, DefaultDublinCoreImpl) verifyClass(IMutableDublinCore, DefaultDublinCoreImpl)
class FavoriteTests(TestCase): def setUp(self): self.site = DummySite('site') self.site._setObject('portal_membership', DummyTool()) self.site._setObject('portal_url', DummyTool()) def _makeOne(self, id, *args, **kw): return self.site._setObject(id, Favorite(id, *args, **kw)) def test_Empty(self): utool = self.site.portal_url f = self._makeOne('foo') self.assertEqual(f.getId(), 'foo') self.assertEqual(f.Title(), '') self.assertEqual(f.Description(), '') self.assertEqual(f.getRemoteUrl(), utool.root) self.assertEqual(f.getObject(), self.site) self.assertEqual(f.getIcon(), self.site.getIcon()) self.assertEqual(f.getIcon(1), self.site.getIcon(1)) def test_CtorArgs(self): utool = self.site.portal_url self.assertEqual(self._makeOne('foo', title='Title').Title(), 'Title') self.assertEqual( self._makeOne('bar', description='Description').Description(), 'Description') baz = self._makeOne('baz', remote_url='portal_url') self.assertEqual(baz.getObject(), utool) self.assertEqual(baz.getRemoteUrl(), '%s/portal_url' % utool.root) self.assertEqual(baz.getIcon(), utool.getIcon()) def test_edit(self): utool = self.site.portal_url f = self._makeOne('foo') f.edit('portal_url') self.assertEqual(f.getObject(), utool) self.assertEqual(f.getRemoteUrl(), '%s/portal_url' % utool.root) self.assertEqual(f.getIcon(), utool.getIcon()) def test_editEmpty(self): utool = self.site.portal_url f = self._makeOne('gnnn') f.edit('') self.assertEqual(f.getObject(), self.site) self.assertEqual(f.getRemoteUrl(), utool.root) self.assertEqual(f.getIcon(), self.site.getIcon())
def test_refreshCatalog(self): site = DummySite('site') site._setObject('dummy', self._makeContent(catalog=1)) ctool = self._makeOne().__of__(site) ctool.addIndex('meta_type', 'FieldIndex') ctool.catalog_object(site.dummy, '/dummy') query = {'meta_type': 'Dummy'} self.assertEqual(1, len(ctool._catalog.searchResults(query))) ctool.refreshCatalog(clear=1) length = len(ctool._catalog.searchResults(query)) self.assertEqual(1, length, 'CMF Collector issue #379 (\'Update Catalog\' ' 'fails): %s entries after refreshCatalog' % length)
def _makeSite(self): from OFS.owner import Owned from Products.CMFCore.tests.base.dummy import DummySite from Products.CMFCore.tests.base.dummy import DummyUserFolder from Products.CMFCore.tests.base.dummy import DummyObject class _DummyObject(Owned, DummyObject): pass site = DummySite('site').__of__(self.app) site._setObject('acl_users', DummyUserFolder()) site._setObject('foo_dummy', _DummyObject(id='foo_dummy')) site._setObject('bar_dummy', _DummyObject(id='bar_dummy')) return site
def _makeSite(self): from AccessControl.Owned import Owned from Products.CMFCore.tests.base.dummy import DummySite from Products.CMFCore.tests.base.dummy import DummyUserFolder from Products.CMFCore.tests.base.dummy import DummyObject class _DummyObject(Owned, DummyObject): pass site = DummySite('site').__of__(self.root) site._setObject( 'acl_users', DummyUserFolder() ) site._setObject('foo_dummy', _DummyObject(id='foo_dummy')) site._setObject('bar_dummy', _DummyObject(id='bar_dummy')) return site
def _makeSite(self): from AccessControl.Owned import Owned from Products.CMFCore.tests.base.dummy import DummySite from Products.CMFCore.tests.base.dummy import DummyUserFolder from Products.CMFCore.tests.base.dummy import DummyObject class _DummyObject(Owned, DummyObject): pass site = DummySite('site').__of__(self.root) site._setObject( 'acl_users', DummyUserFolder() ) site._setObject('content_dummy', _DummyObject(id='content_dummy')) site._setObject('actions_dummy', _DummyObject(id='actions_dummy')) return site
def test_searchResults_brain(self): site = DummySite('site') site._setObject('dummy', self._makeContent(catalog=1)) ctool = self._makeOne().__of__(site) ctool.addIndex('meta_type', 'FieldIndex') ctool.catalog_object(site.dummy, '/dummy') query = {'meta_type': 'Dummy'} brain = ctool.searchResults(query)[0] setRequest(self.REQUEST) self.assertEqual('/dummy', brain.getPath()) self.assertEqual('http://nohost/dummy', brain.getURL()) self.assertEqual(site.dummy, brain.getObject()) self.assertTrue(hasattr(brain.getObject(), 'REQUEST')) clearRequest()
class TestEvent(TestCase): def setUp(self): self.site = DummySite('site') self.site._setObject( 'portal_membership', DummyTool() ) def test_new(self): event = Event('test') assert event.getId() == 'test' assert not event.Title() def test_edit(self): event = self.site._setObject( 'testimage', Event('editing') ) event.edit( title='title' , description='description' , eventType=( 'eventType', ) , effectiveDay=1 , effectiveMo=1 , effectiveYear=1999 , expirationDay=12 , expirationMo=31 , expirationYear=1999 , start_time="00:00" , startAMPM="AM" , stop_time="11:59" , stopAMPM="PM" ) assert event.Title() == 'title' assert event.Description() == 'description' assert event.Subject() == ( 'eventType', ), event.Subject() assert event.effective_date == None assert event.expiration_date == None assert event.end() == DateTime('1999/12/31 23:59') assert event.start() == DateTime('1999/01/01 00:00') assert not event.contact_name def test_puke(self): event = Event( 'shouldPuke' ) self.assertRaises( DateTime.DateError , event.edit , effectiveDay=31 , effectiveMo=2 , effectiveYear=1999 , start_time="00:00" , startAMPM="AM" )
class DCWorkflowDefinitionTests(TestCase): def setUp(self): self.site = DummySite('site') self.site._setObject('portal_types', DummyTool()) self.site._setObject('portal_workflow', WorkflowTool()) addWorkflowFactory(DCWorkflowDefinition) def test_doActionFor(self): wftool = self.site.portal_workflow wftool.manage_addWorkflow('Workflow (DC Workflow Definition)', 'wf') wftool.setDefaultChain('wf') wf = wftool.wf wf.states.addState('private') sdef = wf.states['private'] sdef.setProperties(transitions=('publish', )) wf.states.addState('published') wf.states.setInitialState('private') wf.transitions.addTransition('publish') tdef = wf.transitions['publish'] tdef.setProperties(title='', new_state_id='published', actbox_name='') wf.variables.addVariable('comments') vdef = wf.variables['comments'] vdef.setProperties( description='', default_expr="python:state_change.kwargs.get('comment', '')", for_status=1, update_always=1) dummy = self.site._setObject('dummy', DummyContent()) wftool.notifyCreated(dummy) self.assertEqual(wf._getStatusOf(dummy), { 'state': 'private', 'comments': '' }) wf.doActionFor(dummy, 'publish', comment='foo') self.assertEqual(wf._getStatusOf(dummy), { 'state': 'published', 'comments': 'foo' }) def test_interface(self): from Products.CMFCore.interfaces.portal_workflow \ import WorkflowDefinition as IWorkflowDefinition verifyClass(IWorkflowDefinition, DCWorkflowDefinition)
class URLToolTests(TestCase): def setUp(self): self.site = DummySite(id="foo") def _makeOne(self, *args, **kw): from Products.CMFCore.URLTool import URLTool url_tool = URLTool(*args, **kw) return url_tool.__of__(self.site) def test_z2interfaces(self): from Interface.Verify import verifyClass from Products.CMFCore.interfaces.portal_actions import ActionProvider as IActionProvider from Products.CMFCore.interfaces.portal_url import portal_url as IURLTool from Products.CMFCore.URLTool import URLTool verifyClass(IActionProvider, URLTool) verifyClass(IURLTool, URLTool) def test_z3interfaces(self): try: from zope.interface.verify import verifyClass from Products.CMFCore.interfaces import IActionProvider from Products.CMFCore.interfaces import IURLTool except ImportError: # BBB: for Zope 2.7 return from Products.CMFCore.URLTool import URLTool verifyClass(IActionProvider, URLTool) verifyClass(IURLTool, URLTool) def test_portal_methods(self): url_tool = self._makeOne() self.assertEqual(url_tool(), "http://www.foobar.com/bar/foo") self.assertEqual(url_tool.getPortalObject(), self.site) self.assertEqual(url_tool.getPortalPath(), "/bar/foo") def test_content_methods(self): url_tool = self._makeOne() self.site._setObject("folder", DummyFolder(id="buz")) self.site.folder._setObject("item", DummyContent(id="qux.html")) obj = self.site.folder.item self.assertEqual(url_tool.getRelativeContentPath(obj), ("buz", "qux.html")) self.assertEqual(url_tool.getRelativeContentURL(obj), "buz/qux.html") self.assertEqual(url_tool.getRelativeUrl(obj), "buz/qux.html")
class FavoriteTests(ConformsToContent, unittest.TestCase): def _getTargetClass(self): from Products.CMFDefault.Favorite import Favorite return Favorite def _makeOne(self, *args, **kw): return self._getTargetClass()(*args, **kw) def setUp(self): self.site = DummySite('site') self.site._setObject('portal_membership', DummyTool()) self.site._setObject('portal_url', DummyTool()) def test_Empty(self): utool = self.site.portal_url f = self.site._setObject('foo', self._makeOne('foo')) self.assertEqual(f.getId(), 'foo') self.assertEqual(f.Title(), '') self.assertEqual(f.Description(), '') self.assertEqual(f.getRemoteUrl(), utool.root) self.assertEqual(f.getObject(), self.site) self.assertEqual(f.getIcon(), self.site.getIcon()) self.assertEqual(f.getIcon(1), self.site.getIcon(1)) def test_CtorArgs(self): utool = self.site.portal_url self.assertEqual(self._makeOne('foo', title='Title').Title(), 'Title') self.assertEqual( self._makeOne('bar', description='Description').Description(), 'Description') baz = self.site._setObject( 'foo', self._makeOne('baz', remote_url='portal_url')) self.assertEqual(baz.getObject(), utool) self.assertEqual(baz.getRemoteUrl(), '%s/portal_url' % utool.root) self.assertEqual(baz.getIcon(), utool.getIcon()) def test_edit(self): utool = self.site.portal_url f = self.site._setObject('foo', self._makeOne('foo')) f.edit('portal_url') self.assertEqual(f.getObject(), utool) self.assertEqual(f.getRemoteUrl(), '%s/portal_url' % utool.root) self.assertEqual(f.getIcon(), utool.getIcon()) def test_editEmpty(self): utool = self.site.portal_url f = self.site._setObject('gnnn', self._makeOne('gnnn')) f.edit('') self.assertEqual(f.getObject(), self.site) self.assertEqual(f.getRemoteUrl(), utool.root) self.assertEqual(f.getIcon(), self.site.getIcon())
class DefaultWorkflowDefinitionTests(unittest.TestCase): 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) def tearDown(self): cleanUp() def test_interfaces(self): from Products.CMFCore.interfaces import IWorkflowDefinition from Products.CMFDefault.DefaultWorkflow \ import DefaultWorkflowDefinition verifyClass(IWorkflowDefinition, DefaultWorkflowDefinition) def _getDummyWorkflow(self): return self.wtool.wf def test_isActionSupported(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ('submit', 'retract', 'publish', 'reject',): self.assert_(wf.isActionSupported(dummy, action)) def test_isActionSupported_with_keywargs(self): wf = self._getDummyWorkflow() dummy = self.site._setObject('dummy', DummyContent()) for action in ('submit', 'retract', 'publish', 'reject',): self.assert_(wf.isActionSupported(dummy, action, arg1=1, arg2=2))
def test_creators_methods(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.addCreator() self.assertEqual( item.listCreators(), ('user_foo',) ) newSecurityManager(None, acl_users.user_bar) item.addCreator() self.assertEqual( item.listCreators(), ('user_foo', 'user_bar') ) item.addCreator() self.assertEqual( item.listCreators(), ('user_foo', 'user_bar') ) item.addCreator('user_baz') self.assertEqual( item.listCreators(), ('user_foo', 'user_bar', 'user_baz') )
def test_creators_methods(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.addCreator() self.assertEqual(item.listCreators(), ('user_foo', )) newSecurityManager(None, acl_users.user_bar) item.addCreator() self.assertEqual(item.listCreators(), ('user_foo', 'user_bar')) item.addCreator() self.assertEqual(item.listCreators(), ('user_foo', 'user_bar')) item.addCreator('user_baz') self.assertEqual(item.listCreators(), ('user_foo', 'user_bar', 'user_baz'))
def test_creators_upgrade(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) item.manage_fixupOwnershipAfterAdd() # fake an old object < CMF 1.5 without creators delattr(item, 'creators') self.assertEqual(item.Creator(), 'user_foo') newSecurityManager(None, acl_users.user_bar) item.addCreator() self.assertEqual(item.Creator(), 'user_foo') self.assertEqual(item.listCreators(), ('user_foo', 'user_bar')) # or if added directly delattr(item, 'creators') item.addCreator() self.assertEqual(item.Creator(), 'user_foo') self.assertEqual(item.listCreators(), ('user_foo', 'user_bar'))
def test_creators_upgrade(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) item.manage_fixupOwnershipAfterAdd() # fake an old object < CMF 1.5 without creators delattr(item, "creators") self.assertEqual(item.Creator(), "user_foo") newSecurityManager(None, acl_users.user_bar) item.addCreator() self.assertEqual(item.Creator(), "user_foo") self.assertEqual(item.listCreators(), ("user_foo", "user_bar")) # or if added directly delattr(item, "creators") item.addCreator() self.assertEqual(item.Creator(), "user_foo") self.assertEqual(item.listCreators(), ("user_foo", "user_bar"))