Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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' )
Exemplo n.º 3
0
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)' )
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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 )
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
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() ) )
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
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))
Exemplo n.º 10
0
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)' )
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
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 )
Exemplo n.º 13
0
 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
Exemplo n.º 14
0
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)
Exemplo n.º 15
0
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')
Exemplo n.º 16
0
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)
Exemplo n.º 17
0
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')
Exemplo n.º 18
0
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))
Exemplo n.º 19
0
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')
Exemplo n.º 20
0
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) )
Exemplo n.º 21
0
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')
Exemplo n.º 22
0
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'])
Exemplo n.º 23
0
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))
Exemplo n.º 25
0
    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
Exemplo n.º 26
0
    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
Exemplo n.º 27
0
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() )
Exemplo n.º 28
0
    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
Exemplo n.º 29
0
    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
Exemplo n.º 30
0
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))
Exemplo n.º 31
0
    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 )
Exemplo n.º 32
0
    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)
Exemplo n.º 33
0
    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()),))
Exemplo n.º 34
0
    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)
Exemplo n.º 35
0
    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()),))
Exemplo n.º 36
0
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() )
Exemplo n.º 37
0
    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)
Exemplo n.º 38
0
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)
Exemplo n.º 39
0
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')
Exemplo n.º 40
0
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)
Exemplo n.º 41
0
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())
Exemplo n.º 42
0
    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)
Exemplo n.º 43
0
    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
Exemplo n.º 44
0
    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
Exemplo n.º 45
0
    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
Exemplo n.º 46
0
    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()
Exemplo n.º 47
0
    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()
Exemplo n.º 48
0
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"
                         )
Exemplo n.º 49
0
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)
Exemplo n.º 50
0
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")
Exemplo n.º 51
0
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())
Exemplo n.º 52
0
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))
Exemplo n.º 53
0
    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') )
Exemplo n.º 54
0
    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'))
Exemplo n.º 55
0
 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'))
Exemplo n.º 56
0
 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"))