[CalendarServer-changes] [2496] CalendarServer/trunk/twistedcaldav/directory/test/ test_proxyprincipalmembers.py
source_changes at macosforge.org
source_changes at macosforge.org
Sun May 25 11:03:20 PDT 2008
Revision: 2496
http://trac.macosforge.org/projects/calendarserver/changeset/2496
Author: wsanchez at apple.com
Date: 2008-05-25 11:03:14 -0700 (Sun, 25 May 2008)
Log Message:
-----------
Unwind defgens, less copy/paste programming.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipalmembers.py
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipalmembers.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipalmembers.py 2008-05-25 04:23:44 UTC (rev 2495)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipalmembers.py 2008-05-25 18:03:14 UTC (rev 2496)
@@ -16,8 +16,7 @@
import os
-from twisted.internet.defer import deferredGenerator
-from twisted.internet.defer import waitForDeferred
+from twisted.internet.defer import DeferredList
from twisted.web2.dav.fileop import rmdir
from twisted.web2.dav import davxml
@@ -54,151 +53,154 @@
self.principalRootResources[directoryService.__class__.__name__] = provisioningResource
- @deferredGenerator
+ def _getPrincipalByShortName(self, type, name):
+ provisioningResource = self.principalRootResources[directoryService.__class__.__name__]
+ return provisioningResource.principalForShortName(type, name)
+
+ def _groupMembersTest(self, recordType, recordName, subPrincipalName, expectedMembers):
+ def gotMembers(members):
+ memberNames = set([p.displayName() for p in members])
+ self.assertEquals(memberNames, set(expectedMembers))
+
+ principal = self._getPrincipalByShortName(recordType, recordName)
+ if subPrincipalName is not None:
+ principal = principal.getChild(subPrincipalName)
+
+ d = principal.groupMembers()
+ d.addCallback(gotMembers)
+ return d
+
+ def _groupMembershipsTest(self, recordType, recordName, subPrincipalName, expectedMemberships):
+ def gotMemberships(memberships):
+ uids = set([p.principalUID() for p in memberships])
+ self.assertEquals(uids, set(expectedMemberships))
+
+ principal = self._getPrincipalByShortName(recordType, recordName)
+ if subPrincipalName is not None:
+ principal = principal.getChild(subPrincipalName)
+
+ d = principal.groupMemberships()
+ d.addCallback(gotMemberships)
+ return d
+
def test_groupMembersRegular(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_groups, "both_coasts").groupMembers())
- yield d
- members = d.getResult()
- members = set([p.displayName() for p in members])
- self.assertEquals(members, set(('Chris Lecroy', 'David Reid', 'Wilfredo Sanchez', 'West Coast', 'East Coast', 'Cyrus Daboo',)))
+ return self._groupMembersTest(
+ DirectoryService.recordType_groups, "both_coasts", None,
+ ("Chris Lecroy", "David Reid", "Wilfredo Sanchez", "West Coast", "East Coast", "Cyrus Daboo",),
+ )
- @deferredGenerator
def test_groupMembersRecursive(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_groups, "recursive1_coasts").groupMembers())
- yield d
- members = d.getResult()
- members = set([p.displayName() for p in members])
- self.assertEquals(members, set(('Wilfredo Sanchez', 'Recursive2 Coasts', 'Cyrus Daboo',)))
+ return self._groupMembersTest(
+ DirectoryService.recordType_groups, "recursive1_coasts", None,
+ ("Wilfredo Sanchez", "Recursive2 Coasts", "Cyrus Daboo",),
+ )
- @deferredGenerator
def test_groupMembersProxySingleUser(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_locations, "gemini").getChild("calendar-proxy-write").groupMembers())
- yield d
- members = d.getResult()
- members = set([p.displayName() for p in members])
- self.assertEquals(members, set(('Wilfredo Sanchez',)))
+ return self._groupMembersTest(
+ DirectoryService.recordType_locations, "gemini", "calendar-proxy-write",
+ ("Wilfredo Sanchez",),
+ )
- @deferredGenerator
def test_groupMembersProxySingleGroup(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_locations, "mercury").getChild("calendar-proxy-write").groupMembers())
- yield d
- members = d.getResult()
- members = set([p.displayName() for p in members])
- self.assertEquals(members, set(('Chris Lecroy', 'David Reid', 'Wilfredo Sanchez', 'West Coast',)))
+ return self._groupMembersTest(
+ DirectoryService.recordType_locations, "mercury", "calendar-proxy-write",
+ ("Chris Lecroy", "David Reid", "Wilfredo Sanchez", "West Coast",),
+ )
- @deferredGenerator
def test_groupMembersProxySingleGroupWithNestedGroups(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_locations, "apollo").getChild("calendar-proxy-write").groupMembers())
- yield d
- members = d.getResult()
- members = set([p.displayName() for p in members])
- self.assertEquals(members, set(('Chris Lecroy', 'David Reid', 'Wilfredo Sanchez', 'West Coast', 'East Coast', 'Cyrus Daboo', 'Both Coasts',)))
+ return self._groupMembersTest(
+ DirectoryService.recordType_locations, "apollo", "calendar-proxy-write",
+ ("Chris Lecroy", "David Reid", "Wilfredo Sanchez", "West Coast", "East Coast", "Cyrus Daboo", "Both Coasts",),
+ )
- @deferredGenerator
def test_groupMembersProxySingleGroupWithNestedRecursiveGroups(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_locations, "orion").getChild("calendar-proxy-write").groupMembers())
- yield d
- members = d.getResult()
- members = set([p.displayName() for p in members])
- self.assertEquals(members, set(('Wilfredo Sanchez', 'Cyrus Daboo', 'Recursive1 Coasts', 'Recursive2 Coasts',)))
+ return self._groupMembersTest(
+ DirectoryService.recordType_locations, "orion", "calendar-proxy-write",
+ ("Wilfredo Sanchez", "Cyrus Daboo", "Recursive1 Coasts", "Recursive2 Coasts",),
+ )
- @deferredGenerator
def test_groupMembersProxySingleGroupWithNonCalendarGroup(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_resources, "non_calendar_proxy").getChild("calendar-proxy-write").groupMembers())
- yield d
- members = d.getResult()
- members = set([p.displayName() for p in members])
- self.assertEquals(members, set(('Chris Lecroy', 'Cyrus Daboo', 'Non-calendar group')))
+ ds = []
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_groups, "non_calendar_group").groupMemberships())
- yield d
- memberships = d.getResult()
- memberships = set([p.principalUID() for p in memberships])
- self.assertEquals(memberships, set(('non_calendar_proxy#calendar-proxy-write',)))
+ ds.append(self._groupMembersTest(
+ DirectoryService.recordType_resources, "non_calendar_proxy", "calendar-proxy-write",
+ ("Chris Lecroy", "Cyrus Daboo", "Non-calendar group"),
+ ))
- @deferredGenerator
+ ds.append(self._groupMembershipsTest(
+ DirectoryService.recordType_groups, "non_calendar_group", None,
+ ("non_calendar_proxy#calendar-proxy-write",),
+ ))
+
+ return DeferredList(ds)
+
def test_groupMembersProxyMissingUser(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
+ proxy = self._getPrincipalByShortName(DirectoryService.recordType_users, "cdaboo")
+ proxyGroup = proxy.getChild("calendar-proxy-write")
+ def gotMembers(members):
+ members.add("12345")
+ return proxyGroup._index().setGroupMembers("%s#calendar-proxy-write" % (proxy.principalUID(),), members)
+
+ def check(_):
+ return self._groupMembersTest(
+ DirectoryService.recordType_users, "cdaboo", "calendar-proxy-write",
+ (),
+ )
+
# Setup the fake entry in the DB
- proxy = self._getRecordByShortName(DirectoryService.recordType_users, "cdaboo")
- proxy_group = proxy.getChild("calendar-proxy-write")
- d = waitForDeferred(proxy_group._index().getMembers("%s#calendar-proxy-write" % (proxy.principalUID(),)))
- yield d
- members = d.getResult()
- members.add("12345")
- d = waitForDeferred(proxy_group._index().setGroupMembers("%s#calendar-proxy-write" % (proxy.principalUID(),), members))
- yield d
- d.getResult()
+ d = proxyGroup._index().getMembers("%s#calendar-proxy-write" % (proxy.principalUID(),))
+ d.addCallback(gotMembers)
+ d.addCallback(check)
+ return d
- # Do the failing lookup
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_users, "cdaboo").getChild("calendar-proxy-write").groupMembers())
- yield d
- members = d.getResult()
- members = set([p.displayName() for p in members])
- self.assertEquals(members, set())
-
- @deferredGenerator
def test_groupMembershipsMissingUser(self):
"""
DirectoryPrincipalResource.groupMembers()
"""
-
# Setup the fake entry in the DB
fake_uid = "12345"
- proxy = self._getRecordByShortName(DirectoryService.recordType_users, "cdaboo")
- proxy_group = proxy.getChild("calendar-proxy-write")
- d = waitForDeferred(proxy_group._index().getMembers("%s#calendar-proxy-write" % (fake_uid,)))
- yield d
- members = d.getResult()
- members.add("%s#calendar-proxy-write" % (proxy.principalUID(),))
- d = waitForDeferred(proxy_group._index().setGroupMembers("%s#calendar-proxy-write" % (fake_uid,), members))
- yield d
- d.getResult()
+ proxy = self._getPrincipalByShortName(DirectoryService.recordType_users, "cdaboo")
+ proxyGroup = proxy.getChild("calendar-proxy-write")
- # Do the failing lookup
- d = waitForDeferred(self._getRecordByShortName(DirectoryService.recordType_users, "cdaboo").getChild("calendar-proxy-write").groupMemberships())
- yield d
- memberships = d.getResult()
- memberships = set([p.displayName() for p in memberships])
- self.assertEquals(memberships, set())
+ def gotMembers(members):
+ members.add("%s#calendar-proxy-write" % (proxy.principalUID(),))
+ return proxyGroup._index().setGroupMembers("%s#calendar-proxy-write" % (fake_uid,), members)
- def _getRecordByShortName(self, type, name):
- """
- @return: an iterable of tuples
- C{(provisioningResource, recordType, recordResource, record)}, where
- C{provisioningResource} is the root provisioning resource,
- C{recordType} is the record type,
- C{recordResource} is the principal resource and
- C{record} is the directory service record
- for each record in each directory in C{directoryServices}.
- """
- provisioningResource = self.principalRootResources[directoryService.__class__.__name__]
- return provisioningResource.principalForShortName(type, name)
+ def check(_):
+ return self._groupMembershipsTest(
+ DirectoryService.recordType_users, "cdaboo", "calendar-proxy-write",
+ (),
+ )
+ d = proxyGroup._index().getMembers("%s#calendar-proxy-write" % (fake_uid,))
+ d.addCallback(gotMembers)
+ d.addCallback(check)
+ return d
def test_setGroupMemberSet(self):
class StubMemberDB(object):
@@ -209,14 +211,14 @@
self.members = members
- user = self._getRecordByShortName(directoryService.recordType_users,
+ user = self._getPrincipalByShortName(directoryService.recordType_users,
"cdaboo")
- proxy_group = user.getChild("calendar-proxy-write")
+ proxyGroup = user.getChild("calendar-proxy-write")
memberdb = StubMemberDB()
- proxy_group._index = (lambda: memberdb)
+ proxyGroup._index = (lambda: memberdb)
new_members = davxml.GroupMemberSet(
davxml.HRef.fromString(
@@ -224,7 +226,7 @@
davxml.HRef.fromString(
"/XMLDirectoryService/__uids__/5FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1/"))
- proxy_group.setGroupMemberSet(new_members, None)
+ proxyGroup.setGroupMemberSet(new_members, None)
self.assertEquals(
set([str(p) for p in memberdb.members]),
@@ -238,10 +240,10 @@
def changed(self):
self.changedCount += 1
- user = self._getRecordByShortName(directoryService.recordType_users,
+ user = self._getPrincipalByShortName(directoryService.recordType_users,
"cdaboo")
- proxy_group = user.getChild("calendar-proxy-write")
+ proxyGroup = user.getChild("calendar-proxy-write")
notifier = StubCacheNotifier()
@@ -252,7 +254,7 @@
self.assertEquals(notifier.changedCount, 0)
- proxy_group.setGroupMemberSet(
+ proxyGroup.setGroupMemberSet(
davxml.GroupMemberSet(
davxml.HRef.fromString(
"/XMLDirectoryService/__uids__/5FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1/")),
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080525/e2c50fa1/attachment-0001.htm
More information about the calendarserver-changes
mailing list