Ejemplo n.º 1
0
 def test_getadapter(self):
     adapters = (
         SiteMembers(),
         SiteMembers(self.portal),
     )
     for adapter in adapters:
         assert adapter.context is adapter.portal
         assert aq_base(adapter.context) is aq_base(getSite())
         assert aq_base(adapter.context) is aq_base(self.portal)
Ejemplo n.º 2
0
 def test_groups_property(self):
     members = SiteMembers(self.portal)
     members._groups = None  # force uncached
     groups = members.groups
     assert IGroups.providedBy(groups)
     assert aq_base(groups.context) is aq_base(self.portal)
     assert members.groups is groups  # cached, identical
     members._groups = None  # force uncached again
     assert IGroups.providedBy(members.groups)
     assert members.groups is not groups  # cached, new adapter
Ejemplo n.º 3
0
 def test_roles_groups_for_user(self):
     """test groups_for() and roles_for()"""
     _ID = '*****@*****.**'
     _GROUP = 'testgroup1'
     adapter = SiteMembers(self.portal)
     adapter.register(_ID, send=False)
     self.groups_plugin.addGroup(_GROUP)
     self.groups_plugin.addPrincipalToGroup(_ID, _GROUP)
     self.assertIn(_GROUP, adapter.groups_for(_ID))
     self.assertIn('Member', adapter.roles_for(self.portal, _ID))
Ejemplo n.º 4
0
 def __init__(self, context, request):
     self.context = context
     self.request = request
     self.portal = getSite()
     self.site_members = SiteMembers(self.portal, self.request)
     self.mtool = getToolByName(context, 'portal_membership')
     self.roster = WorkspaceRoster(context)
     self.title = self.context.Title().decode('utf-8')
     self.path = '/'.join(self.context.getPhysicalPath())
     self.status = IStatusMessage(self.request)
     self.isproject = IProjectContext.providedBy(context)
 def setUp(self):
     self.portal = self.layer['portal']
     self.wftool = getToolByName(self.portal, 'portal_workflow')
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     self._users = self.portal.acl_users
     self.groups_plugin = self._users.source_groups
     self.site_members = SiteMembers(self.portal)
     self.user1 = '*****@*****.**'
     self.user2 = '*****@*****.**'
     self.site_members.register(self.user1, send=False)
     self.site_members.register(self.user2, send=False)
     self._fixtures()
Ejemplo n.º 6
0
 def test_unknown_userid(self):
     # note: testing add/remove typically tests known user
     #       ids, the point of this test is to ensure the
     #       right things happen when an unknown user is used.
     unknown = '*****@*****.**'
     members = SiteMembers(self.portal)
     assert unknown not in members
     assert members.get(unknown) is None
     self.assertRaises(KeyError, lambda: members[unknown])
     self.assertRaises(KeyError, lambda: members.__delitem__(unknown))
     self.assertRaises(KeyError,
                       lambda: members.roles_for(self.portal, unknown))
     self.assertRaises(KeyError, lambda: members.groups_for(unknown))
Ejemplo n.º 7
0
def trim_users(site):
    known = all_workspace_users(site)
    members = SiteMembers(site)
    orig = list(members)
    removed = []
    for username in list(members):
        if username not in known:
            del (members[username])
            removed.append(username)
        site.acl_users.portal_role_manager.assignRolesToPrincipal(
            ['Member'],
            members.get(username)._id,
        )
    print 'Removed %s users ununsed of %s' % (len(removed), len(orig))
Ejemplo n.º 8
0
 def test_registration_mixedcase(self, email=None):
     email = email or '*****@*****.**'
     expected_username = email.lower()
     adapter = SiteMembers(self.portal)
     self.assertEqual(
         adapter._uf.applyTransform(email),
         expected_username,
     )
     adapter.register(email, send=False, email=email)
     # case-insensitive, not just case-normalizing:
     self.assertIn(email, adapter)
     self.assertIn(expected_username, adapter)
     self.assertIn(expected_username, adapter.keys())
     user = adapter.get(expected_username)
     self.assertEqual(user.getProperty('email'), email)
Ejemplo n.º 9
0
 def test_add_user(self):
     _ID = '*****@*****.**'
     adapter = SiteMembers(self.portal)
     adapter.register(_ID, send=False)
     orig_len = len(adapter)
     self.assertIn(_ID, adapter)
     self.assertIn(_ID, adapter.keys())
     self.assertIn(_ID, list(iter(adapter)))
     # now do the same with a non-email id and email kwarg
     _ID = 'metoo'
     _EMAIL = '*****@*****.**'
     adapter.register(_ID, email=_EMAIL, send=False)
     self.assertEqual(len(adapter), orig_len + 1)
     self.assertIn(_ID, adapter)
     self.assertIn(_ID, adapter.keys())
     self.assertIn(_ID, list(iter(adapter)))
     self.assertEqual(adapter.get(_ID).getProperty('email'), _EMAIL)
     # check length again, potentially cached:
     self.assertEqual(len(adapter), orig_len + 1)
     # following is only true by convention and the fact that
     # the email is lower-case only:
     self.assertEqual(adapter.get(_ID).getProperty('email'), _EMAIL)
Ejemplo n.º 10
0
 def test_addremove_user(self, clearcache=True):
     _ID = '*****@*****.**'
     adapter = SiteMembers(self.portal)
     if clearcache:
         adapter.refresh()
     orig_len = len(adapter)
     adapter.register(_ID, send=False)
     if clearcache:
         adapter.refresh()
     self.assertEqual(len(adapter), orig_len + 1)
     self.assertIn(_ID, adapter)
     self.assertIn(_ID, adapter.keys())
     self.assertIn(_ID, list(iter(adapter)))
     # check length again, potentially cached:
     self.assertEqual(len(adapter), orig_len + 1)
     del (adapter[_ID])
     if clearcache:
         adapter.refresh()
     self.assertEqual(len(adapter), orig_len)
     self.assertNotIn(_ID, adapter)
     self.assertNotIn(_ID, adapter.keys())
     self.assertNotIn(_ID, list(iter(adapter)))
     # check length again, potentially cached:
     self.assertEqual(len(adapter), orig_len)