Re: Creating testusers in doctests
from
Rob Miller
on Feb 12, 2008 01:28 AM
darian schramm wrote:
> Hi Everyone,
hi darian!
> I'm writing some doctests for a custom remember based type, and I'm
> having some trouble with the member creation process.
>
> It seems when I create the custom member using
> portal_memberdata.invokeFactory(<Type>,id,password) I don't have
> getRolesInContext available on the resulting object. I've tried
> calling processForm on the object but no luck.
>
> Plone 3.0.5
> remember/trunk
> membrane/trunk
>
> excerpt from my doctest
>
> >>> from Products.CMFCore.utils import getToolByName
> >>> portal_membership =
> getToolByName(self.portal,'portal_membership')
> >>> portal_memberdata = getToolByName(self.portal,'portal_memberdata')
> >>> memid =
> portal_memberdata.invokeFactory('ZbUser','user1',password='xxxxx')
> >>> mem = getattr(portal_memberdata,memid)
> >>> mem
> <ZbUser at ...>
>
>
> >>> user = mem
> >>> 'Manager' in user.getRolesInContext(client)
> True
>
> >>> 'TeamMember' in user.getRolesInContext(client)
> True
>
> The last 2 fail with AttributeError: getRolesInContext
you're confusing the member object with the user object. it's an unfortunate
fact that, for historical reasons, each authenticated user has two different
types of objects associated with him, a 'member' object which contains general
member data and a 'user' object that interacts with the Zope security stuff.
change your "user = mem" line to "user = mem.getUser()" and you'll probably
have more luck.
-r