David Glick <[email protected]> writes:

> On 11/19/10 6:47 AM, Andreas Jung wrote:
>> I have the following code for testing EasyNewsletter:
>>
>> http://svn.plone.org/svn/collective/Products.EasyNewsletter/trunk/Products/EasyNewsletter/tests/test_enl.py>
>>
>> The invokeFactory('EasyNewsletter') call works on Plone 3
>
>> but fails on Plone 4 with Unauthorized (although I am Manager):
>>
>>     self.portal.invokeFactory('EasyNewsletter', id='newsletter')
>>   File
>> "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/PortalFolder.py",
>> line 295, in invokeFactory
>>     return pt.constructContent(type_name, self, id, RESPONSE, *args, **kw)
>>   File
>> "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py",
>> line 836, in constructContent
>>     ob = info.constructInstance(container, id, *args, **kw)
>>   File
>> "/home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py",
>> line 312, in constructInstance
>>     raise AccessControl_Unauthorized('Cannot create %s' % self.getId())
>> Unauthorized: Cannot create EasyNewsletter
>>
>>
>> Digging deeper using pdb:
>>
>>
>> /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(472)_queryFactoryMethod()
>> -> def _queryFactoryMethod(self, container, default=None):
>> (Pdb) n
>>
>> /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(474)_queryFactoryMethod()
>> -> if not self.product or not self.factory or container is None:
>> (Pdb)
>>
>> /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(478)_queryFactoryMethod()
>> -> dispatcher = getattr(container, 'manage_addProduct', None)
>> (Pdb)
>>
>> /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(480)_queryFactoryMethod()
>> -> if dispatcher is None:
>> (Pdb)
>>
>> /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(483)_queryFactoryMethod()
>> -> try:
>> (Pdb)
>>
>> /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(484)_queryFactoryMethod()
>> -> p = dispatcher[self.product]
>> (Pdb)
>>
>> /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(489)_queryFactoryMethod()
>> -> m = getattr(p, self.factory, None)
>> (Pdb) print dispatcher
>> <App.FactoryDispatcher.ProductDispatcher object at 0x196f190>
>> (Pdb) print self.factory
>> addEasyNewsletter
>> (Pdb) n
>>
>> /home/ajung/.buildout/eggs/Products.CMFCore-2.2.2-py2.6.egg/Products/CMFCore/TypesTool.py(491)_queryFactoryMethod()
>> -> if m:
>> (Pdb) print m
>> None
>>
>> Why does this fail on Plone 4?
> Not sure why, but I would guess EasyNewsletter's initialize method isn't
> getting called in your test setup for some reason.

Just to mention the obvious in case that's it, bit the instance's
site.zcml isn't loaded for tests under Plone 4.  Is your ZCML being
loaded?

Ross

_______________________________________________
Product-Developers mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/product-developers

Reply via email to