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)
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
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))
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()
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))
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))
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)
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)
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)