• Remember Mailing List

  • Creating testusers in doctests

    from dvschramm on 2008-02-08 17:20
    Hi Everyone,
    
    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
    
    Thread Outline:
  • Re: Creating testusers in doctests

    from ra on 2008-02-12 01:28
    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
    
    • Re: Creating testusers in doctests

      from dvschramm on 2008-02-12 12:24
      Hiya Rob!
      
      That did it, thanks a ton.
      
      On Tue, Feb 12, 2008 at 1:28 AM, Rob Miller <robm@...> wrote:
      > 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
      >
      >
      >  --
      >  Archive: http://www.openplans.org/projects/remember/lists/remember/archive/2008/02/1202797696753
      >  To unsubscribe send an email with subject unsubscribe to remember@....  Please contact remember-manager@... for questions.
      >
      >
      
      
      
      -- 
      Darian V Schramm