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])
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() )
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() )
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())
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())
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() )
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())
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())
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)
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
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')
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
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
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')
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 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)
def getUser(self, name): return DummyObject()
def setUp(self): self.tool = DummyURLTool() self.site = DummySite(portal_url=self.tool)
def setUp( self ): self.tool = DummyURLTool() self.site = DummySite( portal_url=self.tool )
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'))