problems logging into plone
from
Daniel Sarosi
on Feb 27, 2007 08:25 PM
I tried to setup membrane users following the borg example.
The following tests run without any errors:
"""Integration tests for users.
"""
import unittest
from Testing.ZopeTestCase import ZopeDocTestSuite
from base import UNInterfaceTestCase
from utils import optionflags
def test_creation():
"""Test that users can be created and initiated.
>>> self.setRoles(('Manager',))
>>> id = self.portal.invokeFactory('User', 'user')
>>> user = self.portal.user
Set a password and verify it can not be read back
>>> user.setPassword('secret')
>>> user.getPassword()
Traceback (most recent call last):
...
AttributeError: getPassword
Set roles.
>>> user.setRoles(('Donor',))
>>> user.getRoles()
('Donor',)
"""
def test_iuser():
"""Test that user can adapt the iuser interface.
>>> from Products.uninterface.interfaces import IUser
>>> self.setRoles(('Manager',))
>>> id = self.portal.invokeFactory('User', 'user')
>>> user = self.portal.user
>>> iuser = IUser(user)
>>> iuser.id
'user'
Attributes are verified
>>> iuser.setFullname('Ben Tillman')
>>> iuser.getFullname()
'Ben Tillman'
>>> iuser.setEmail('user@...')
>>> iuser.getEmail()
'user@...'
"""
def test_user_is_user():
"""Verify that that user acts as a plone user.
>>> self.setRoles(('Manager',))
>>> id = self.portal.invokeFactory('User', 'user')
>>> self.portal.portal_membership.getMemberById('user')
<MemberData at .../user used for ...>
"""
def test_iuserrelated():
"""Test the functionality of the IUserRelated adapter.
>>> from Products.membrane.interfaces import IUserRelated
>>> self.setRoles(('Manager',))
>>> id = self.portal.invokeFactory('User', 'user')
>>> user = self.portal.user
Adapt to IUserRelated
>>> u = IUserRelated(user)
The user id is obtained from the content object's id (global
uniqueness is
enforced).
>>> u.getUserId()
'user'
"""
def test_iuserauthprovider():
"""Test the functionality of the IUserAuthentication adapter.
>>> from Products.membrane.interfaces import IUserAuthentication
>>> self.setRoles(('Manager',))
>>> id = self.portal.invokeFactory('User', 'user')
>>> user = self.portal.user
Adapt to IUserAuthentication
>>> u = IUserAuthentication(user)
The user name is the same as the user id, and is obtained from the
content
object's id (global uniqueness is enforced).
>>> u.getUserName()
'user'
Credentials are verified against the user name and the password.
>>> user.setPassword('secret')
>>> u.verifyCredentials({})
False
>>> u.verifyCredentials({'login' : '', 'password' : ''})
False
>>> u.verifyCredentials({'login' : 'user', 'password' : ''})
False
>>> u.verifyCredentials({'login' : '', 'password' : 'secret'})
False
>>> u.verifyCredentials({'login' : 'wrong', 'password' :
'incorrect'})
False
>>> u.verifyCredentials({'login' : 'user', 'password' :
'incorrect'})
False
>>> u.verifyCredentials({'login' : 'wrong', 'password' : 'secret'})
False
>>> u.verifyCredentials({'login' : 'user', 'password' : 'secret'})
True
"""
def test_getMemberById():
"""Verify that getMemberById works.
>>> self.setRoles(('Manager',))
>>> id = self.portal.invokeFactory('User', 'user')
>>> user = self.portal.user
>>> from Products.CMFCore.utils import getToolByName
>>> membership = getToolByName(self.portal, 'portal_membership')
>>> membership.getMemberById('user')
<MemberData at .../portal_memberdata/user used for .../acl_users>
"""
def test_ownership():
"""Verify that users are given ownership over their own objects when
created.
>>> self.setRoles(('Manager',))
>>> id = self.portal.invokeFactory('User', 'user')
>>> user = self.portal.user
Simulate Archetypes' setting of fields, re-indexing and calling the
post-create script.
>>> user.setTitle('User One')
>>> user.reindexObject()
>>> user.at_post_create_script()
>>> user.getOwnerTuple()[1]
'user'
"""
def test_login():
"""Test the user can log in
>>> self.setRoles(('Manager',))
>>> id = self.portal.invokeFactory('User', 'user')
>>> user = self.portal.user
>>> self.logout()
>>> self.login('user')
>>> from Products.CMFCore.utils import getToolByName
>>> membership = getToolByName(self.portal, 'portal_membership')
>>> membership.getAuthenticatedMember()
<MemberData at .../portal_memberdata/user used for .../acl_users>
"""
After that I created a User by adding a it inside the Plone interface.
However, when I try to login using the Plone web interface,
authentication does not succeed and I'm being returned to the login
screen.
The following adapter test was unsuccessful and I wonder if that had
anything to do with it.
>>> from Products.uninterface.interfaces import IUser
Create a content object to work from
>>> self.setRoles(('Manager'),)
>>> self.portal.invokeFactory('User', 'user')
'user'
>>> user = self.portal.user
IUser contains semantic information about a user
>>> IUser(user)
<Products.uninterface.content.user.User object at ...>
The output is:
Failed example:
IUser(user)
Expected:
<Products.uninterface.content.user.User object at ...>
Got:
<User at /plone/user>
Hope anyone can help.
Daniel