コード例 #1
0
    def test_CMFCollector_49(self):
        #http://www.zope.org/Collectors/CMF/49

        #If you have two FTIs on the file system, both with the same meta_type
        #but with different id values, the way listDefaultTypeInformation
        #listed them in the dropdown list made it impossible to distinguish
        #the two because the identifier string only contained the CMF package
        #name and the meta_type

        # Extreme nastiness: Fake out a /Control_Panel/Products registry
        # inside the fake site by putting dummy objects with a
        # factory_type_information attribute on them...
        import copy
        fti1 = copy.deepcopy(FTIDATA_DUMMY)
        fti2 = copy.deepcopy(FTIDATA_DUMMY)
        fti2[0]['id'] = 'Other Content'
        product1 = DummyObject('product1')
        product1.factory_type_information = fti1 + fti2
        self.site._setObject('product1', product1)
        def fakeGetProducts(*ign, **igntoo):
            return self.site
        def fakeObjectValues(*ign, **igntoo):
            return (self.site.product1,)
        self.ttool._getProducts = fakeGetProducts
        self.site.objectValues = fakeObjectValues

        types = self.ttool.listDefaultTypeInformation()
        dropdown_representation = [x[0] for x in types]
        self.failIf(dropdown_representation[0]==dropdown_representation[1])
コード例 #2
0
ファイル: test_Favorite.py プロジェクト: bendavis78/zope
class FavoriteTests( TestCase ):

    def setUp( self ):
        self.tool = DummyURLTool()
        self.site = DummySite( portal_url=self.tool )

    def _makeOne( self, *args, **kw ):

        f = Favorite(*args, **kw)
        return f.__of__( self.site )

    def test_Empty( self ):

        f = self._makeOne( 'foo' )

        self.assertEqual( f.getId(), 'foo' )
        self.assertEqual( f.Title(), '' )
        self.assertEqual( f.Description(), '' )
        self.assertEqual( f.getRemoteUrl(), self.tool.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 ):

        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(), self.tool )
        self.assertEqual( baz.getRemoteUrl()
                        , '%s/portal_url' % self.tool.root )
        self.assertEqual( baz.getIcon(), self.tool.getIcon() )

    def test_edit( self ):

        f = self._makeOne( 'foo' )
        f.edit( 'portal_url' )
        self.assertEqual( f.getObject(), self.tool )
        self.assertEqual( f.getRemoteUrl()
                        , '%s/portal_url' % self.tool.root )
        self.assertEqual( f.getIcon(), self.tool.getIcon() )

    def test_editEmpty( self ):

        f = self._makeOne( 'gnnn' )
        f.edit( '' )
        self.assertEqual( f.getObject(), self.site )
        self.assertEqual( f.getRemoteUrl(), self.tool.root )
        self.assertEqual( f.getIcon(), self.site.getIcon() )
コード例 #3
0
ファイル: test_Favorite.py プロジェクト: goschtl/zope
class FavoriteTests( TestCase ):

    def setUp( self ):
        self.tool = DummyURLTool()
        self.site = DummySite( portal_url=self.tool )

    def _makeOne( self, *args, **kw ):

        f = apply( Favorite, args, kw )
        return f.__of__( self.site )

    def test_Empty( self ):

        f = self._makeOne( 'foo' )

        self.assertEqual( f.getId(), 'foo' )
        self.assertEqual( f.Title(), '' )
        self.assertEqual( f.Description(), '' )
        self.assertEqual( f.getRemoteUrl(), self.tool.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 ):

        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(), self.tool )
        self.assertEqual( baz.getRemoteUrl()
                        , '%s/portal_url' % self.tool.root )
        self.assertEqual( baz.getIcon(), self.tool.getIcon() )

    def test_edit( self ):

        f = self._makeOne( 'foo' )
        f.edit( 'portal_url' )
        self.assertEqual( f.getObject(), self.tool )
        self.assertEqual( f.getRemoteUrl()
                        , '%s/portal_url' % self.tool.root )
        self.assertEqual( f.getIcon(), self.tool.getIcon() )

    def test_editEmpty( self ):

        f = self._makeOne( 'gnnn' )
        f.edit( '' )
        self.assertEqual( f.getObject(), self.site )
        self.assertEqual( f.getRemoteUrl(), self.tool.root )
        self.assertEqual( f.getIcon(), self.site.getIcon() )
コード例 #4
0
    def test_CMFCollector_49(self):
        #http://www.zope.org/Collectors/CMF/49

        #If you have two FTIs on the file system, both with the same meta_type
        #but with different id values, the way listDefaultTypeInformation
        #listed them in the dropdown list made it impossible to distinguish
        #the two because the identifier string only contained the CMF package
        #name and the meta_type

        # Extreme nastiness: Fake out a /Control_Panel/Products registry
        # inside the fake site by putting dummy objects with a
        # factory_type_information attribute on them...
        import copy
        fti1 = copy.deepcopy(FTIDATA_DUMMY)
        fti2 = copy.deepcopy(FTIDATA_DUMMY)
        fti2[0]['id'] = 'Other Content'
        product1 = DummyObject('product1')
        product1.factory_type_information = fti1 + fti2
        self.site._setObject('product1', product1)

        def fakeGetProducts(*ign, **igntoo):
            return self.site

        def fakeObjectValues(*ign, **igntoo):
            return (self.site.product1, )

        self.ttool._getProducts = fakeGetProducts
        self.site.objectValues = fakeObjectValues

        types = self.ttool.listDefaultTypeInformation()
        dropdown_representation = [x[0] for x in types]
        self.failIf(dropdown_representation[0] == dropdown_representation[1])

        # Backwards-compatibility tests
        # Make sure the old representation still works, for now
        ti_factory = self.ttool.manage_addTypeInformation
        ti_type = 'Factory-based Type Information'
        new_repr = 'product1: Dummy Content (Dummy)'
        old_repr = 'product1: Dummy'

        # This one uses the new representation. We do not expect an Exception
        ti_factory(ti_type, id='NewType1', typeinfo_name=new_repr)
        self.failUnless('NewType1' in self.ttool.objectIds())

        # Now try with the old representation, which will throw a BadRequest
        # unless the workaround in the code is used
        self._trap_warning_output()
        ti_factory(ti_type, id='NewType2', typeinfo_name=old_repr)
        self.failUnless('NewType2' in self.ttool.objectIds())
        self.failUnless(
            'DeprecationWarning' in self._our_stderr_stream.getvalue())
コード例 #5
0
    def test_CMFCollector_49(self):
        #http://www.zope.org/Collectors/CMF/49

        #If you have two FTIs on the file system, both with the same meta_type
        #but with different id values, the way listDefaultTypeInformation
        #listed them in the dropdown list made it impossible to distinguish
        #the two because the identifier string only contained the CMF package
        #name and the meta_type

        # Extreme nastiness: Fake out a /Control_Panel/Products registry
        # inside the fake site by putting dummy objects with a
        # factory_type_information attribute on them...
        import copy
        fti1 = copy.deepcopy(FTIDATA_DUMMY)
        fti2 = copy.deepcopy(FTIDATA_DUMMY)
        fti2[0]['id'] = 'Other Content'
        product1 = DummyObject('product1')
        product1.factory_type_information = fti1 + fti2
        self.site._setObject('product1', product1)
        def fakeGetProducts(*ign, **igntoo):
            return self.site
        def fakeObjectValues(*ign, **igntoo):
            return (self.site.product1,)
        self.ttool._getProducts = fakeGetProducts
        self.site.objectValues = fakeObjectValues

        types = self.ttool.listDefaultTypeInformation()
        dropdown_representation = [x[0] for x in types]
        self.failIf(dropdown_representation[0]==dropdown_representation[1])

        # Backwards-compatibility tests
        # Make sure the old representation still works, for now
        ti_factory = self.ttool.manage_addTypeInformation
        ti_type = 'Factory-based Type Information'
        new_repr = 'product1: Dummy Content (Dummy)'
        old_repr = 'product1: Dummy'

        # This one uses the new representation. We do not expect an Exception
        ti_factory(ti_type, id='NewType1', typeinfo_name=new_repr)
        self.failUnless('NewType1' in self.ttool.objectIds())

        # Now try with the old representation, which will throw a BadRequest
        # unless the workaround in the code is used
        self._trap_warning_output()
        ti_factory(ti_type, id='NewType2', typeinfo_name=old_repr)
        self.failUnless('NewType2' in self.ttool.objectIds())
        self.failUnless('DeprecationWarning' in
                            self._our_stderr_stream.getvalue())
コード例 #6
0
ファイル: test_DynamicType.py プロジェクト: bendavis78/zope
 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() )
     dummy_view = self.site._setObject( 'dummy_view', DummyObject() )
コード例 #7
0
ファイル: test_DynamicType.py プロジェクト: bendavis78/zope
 def setUp(self):
     self.site = DummySite('site')
     ttool = TypesTool()
     getSiteManager().registerUtility(ttool, ITypesTool)
     fti = FTIDATA_CMF[0].copy()
     ttool._setObject('Dummy Content 15', FTI(**fti))
     self.site._setObject('foo', DummyContent())
     dummy_view = self.site._setObject('dummy_view', DummyObject())
コード例 #8
0
 def setUp(self):
     sm = getSiteManager()
     self.site = DummySite('site')
     self.site._setObject('portal_types', TypesTool())
     sm.registerUtility(self.site.portal_types, ITypesTool)
     fti = FTIDATA_CMF15[0].copy()
     self.site.portal_types._setObject('Dummy Content 15', FTI(**fti))
     self.site._setObject('foo', DummyContent())
     dummy_view = self.site._setObject('dummy_view', DummyObject())
コード例 #9
0
ファイル: test_DynamicType.py プロジェクト: bendavis78/zope
    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() )
        dummy_view = self.site._setObject( 'dummy_view', DummyObject() )

        zope.component.provideAdapter(FiveTraversable, (None,), ITraversable)
        zope.component.provideAdapter(Traverser, (None,), ITraverser)
コード例 #10
0
ファイル: test_PortalContent.py プロジェクト: bendavis78/zope
    def _setupCallTests(self, aliases):
        # root
        root = Folder('root')

        # set up dummy type info with problematic double-default alias
        root._setObject('portal_types', DummyTool())
        root.portal_types._type_actions = aliases

        # dummy content and skin
        root._setObject('dummycontent', DummyContent())
        root._setObject('dummy_view', DummyObject())
        return root.dummycontent
コード例 #11
0
ファイル: test_TypesTool.py プロジェクト: bendavis78/zope
    def test_processActions(self):
        """
        Are the correct, permitted methods returned for actions?
        """
        self.root._setObject('portal', PortalFolder('portal', ''))
        portal = self.root.portal
        portal.invokeFactory('Dummy Content', 'actions_dummy')
        dummy = portal._getOb('actions_dummy')

        # so we can traverse to it:
        dummy.view = DummyObject("view")
        dummy.view2 = DummyObject("view2")
        dummy.edit = DummyObject("edit")

        default_view = dummy()
        custom_view = _getViewFor(dummy, view='view2')()
        unpermitted_view = _getViewFor(dummy, view='edit')()

        self.failUnlessEqual(default_view, 'view')
        self.failUnlessEqual(custom_view, 'view2')
        self.failIf(unpermitted_view == 'edit')
        self.failUnlessEqual(unpermitted_view, 'view')
コード例 #12
0
    def _setupCallTests(self, aliases):
        # root
        root = Folder('root')

        # set up dummy type info with problematic double-default alias
        ttool = DummyTool()
        ttool._type_actions = aliases
        getSiteManager().registerUtility(ttool, ITypesTool)

        # dummy content and skin
        root._setObject('dummycontent', DummyContent())
        root._setObject('dummy_view', DummyObject())
        return root.dummycontent
コード例 #13
0
ファイル: test_PortalContent.py プロジェクト: bendavis78/zope
    def _setupCallTests(self, aliases):
        sm = getSiteManager()

        # root
        root = Folder('root')

        # set up dummy type info with problematic double-default alias
        root._setObject('portal_types', DummyTool())
        sm.registerUtility(root.portal_types, ITypesTool)
        root.portal_types._type_actions = aliases

        # dummy content and skin
        root._setObject('dummycontent', DummyContent())
        root._setObject('dummy_view', DummyObject())
        return root.dummycontent
コード例 #14
0
    def test_processActions(self):
        """
        Are the correct, permitted methods returned for actions?
        """
        site = self.site
        portal = site._setObject('portal', PortalFolder(id='portal'))
        portal.manage_addProduct = {'FooProduct': DummyFactory(portal)}
        portal.invokeFactory('Dummy Content', 'actions_dummy')
        dummy = portal._getOb('actions_dummy')

        # so we can traverse to it:
        dummy.view = DummyObject("view")
        dummy.view2 = DummyObject("view2")
        dummy.edit = DummyObject("edit")

        default_view = dummy()
        self._trap_warning_output()
        custom_view = _getViewFor(dummy, view='view2')()
        unpermitted_view = _getViewFor(dummy, view='edit')()

        self.failUnlessEqual(default_view, 'view')
        self.failUnlessEqual(custom_view, 'view2')
        self.failIf(unpermitted_view == 'edit')
        self.failUnlessEqual(unpermitted_view, 'view')
コード例 #15
0
    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',) )
コード例 #16
0
ファイル: test_DynamicType.py プロジェクト: bendavis78/zope
    def setUp(self):
        super(DynamicTypeDefaultTraversalTests, self).setUp()

        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())
        dummy_view = self.site._setObject('dummy_view', DummyObject())

        try:
            from zope.component import provideAdapter
            provideAdapter(FiveTraversable, (None, ), ITraversable)
            provideAdapter(Traverser, (None, ), ITraverser)
        except ImportError:
            # BBB for Zope 2.8
            from zope.app.tests import ztapi
            ztapi.provideAdapter(None, ITraversable, FiveTraversable)
            ztapi.provideAdapter(None, ITraverser, Traverser)
コード例 #17
0
 def getUser(self, name):
     return DummyObject()
コード例 #18
0
ファイル: test_Favorite.py プロジェクト: bendavis78/zope
 def setUp(self):
     self.tool = DummyURLTool()
     self.site = DummySite(portal_url=self.tool)
コード例 #19
0
ファイル: test_Favorite.py プロジェクト: goschtl/zope
 def setUp( self ):
     self.tool = DummyURLTool()
     self.site = DummySite( portal_url=self.tool )
コード例 #20
0
 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'))