[CalendarServer-changes] [13777] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Jul 18 11:54:57 PDT 2014


Revision: 13777
          http://trac.calendarserver.org//changeset/13777
Author:   cdaboo at apple.com
Date:     2014-07-18 11:54:57 -0700 (Fri, 18 Jul 2014)
Log Message:
-----------
Fix tests after group sharing changes.

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/resource.py
    CalendarServer/trunk/twistedcaldav/test/util.py
    CalendarServer/trunk/txdav/caldav/datastore/sql.py
    CalendarServer/trunk/txdav/who/directory.py
    CalendarServer/trunk/txdav/who/test/test_delegates.py
    CalendarServer/trunk/txdav/who/test/test_group_attendees.py
    CalendarServer/trunk/txdav/who/test/test_group_sharees.py
    CalendarServer/trunk/txdav/who/test/test_groups.py

Modified: CalendarServer/trunk/twistedcaldav/resource.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/resource.py	2014-07-18 18:23:07 UTC (rev 13776)
+++ CalendarServer/trunk/twistedcaldav/resource.py	2014-07-18 18:54:57 UTC (rev 13777)
@@ -470,10 +470,13 @@
         if config.Sharing.Enabled:
             if config.Sharing.Calendars.Enabled and self.isCalendarCollection():
                 baseProperties += (
-                    customxml.Invite.qname(),
                     customxml.AllowedSharingModes.qname(),
                     customxml.SharedURL.qname(),
                 )
+                if self.isShared() or self.isShareeResource():
+                    baseProperties += (
+                        customxml.Invite.qname(),
+                    )
 
             elif (
                 config.Sharing.AddressBooks.Enabled and self.isAddressBookCollection() or

Modified: CalendarServer/trunk/twistedcaldav/test/util.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/test/util.py	2014-07-18 18:23:07 UTC (rev 13776)
+++ CalendarServer/trunk/twistedcaldav/test/util.py	2014-07-18 18:54:57 UTC (rev 13777)
@@ -29,19 +29,17 @@
 from twistedcaldav import memcacher
 from twistedcaldav.bind import doBind
 from twistedcaldav.directory.addressbook import DirectoryAddressBookHomeProvisioningResource
-from twistedcaldav.directory.calendar import (
-    DirectoryCalendarHomeProvisioningResource
-)
+from twistedcaldav.directory.calendar import DirectoryCalendarHomeProvisioningResource
 from twistedcaldav.directory.util import transactionFromRequest
 from twistedcaldav.memcacheclient import ClientFactory
 from twistedcaldav.stdconfig import config
 from txdav.common.datastore.file import CommonDataStore
 from txdav.common.datastore.test.util import deriveQuota, CommonCommonTests
 from txweb2.dav.test.util import SimpleRequest
-import txweb2.dav.test.util
 from txweb2.http import HTTPError, StatusResponse
-import xattr
 from txweb2.server import Site
+import txweb2.dav.test.util
+import xattr
 
 
 log = Logger()

Modified: CalendarServer/trunk/txdav/caldav/datastore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/caldav/datastore/sql.py	2014-07-18 18:23:07 UTC (rev 13776)
+++ CalendarServer/trunk/txdav/caldav/datastore/sql.py	2014-07-18 18:54:57 UTC (rev 13777)
@@ -45,7 +45,7 @@
 from twisted.python.failure import Failure
 
 from twistedcaldav import customxml, ical
-from twistedcaldav.config import config
+from twistedcaldav.stdconfig import config
 from twistedcaldav.datafilters.peruserdata import PerUserDataFilter
 from twistedcaldav.dateops import normalizeForIndex, datetimeMktime, \
     pyCalendarTodatetime, parseSQLDateToPyCalendar

Modified: CalendarServer/trunk/txdav/who/directory.py
===================================================================
--- CalendarServer/trunk/txdav/who/directory.py	2014-07-18 18:23:07 UTC (rev 13776)
+++ CalendarServer/trunk/txdav/who/directory.py	2014-07-18 18:54:57 UTC (rev 13777)
@@ -548,16 +548,27 @@
 
 
     @inlineCallbacks
-    def expandedMembers(self, members=None):
+    def expandedMembers(self, members=None, seen=None):
+        """
+        Return a L{set} containing the fully expanded membership list for this group.
+        Note: handle recursive groups.
 
+        @param members: membership to add to
+        @type members: L{set}
+        """
+
         if members is None:
             members = set()
+        if seen is None:
+            seen = set()
 
-        for member in (yield self.members()):
-            if member.recordType == BaseRecordType.user:
-                if member not in members:
+        if self not in seen:
+            seen.add(self)
+            for member in (yield self.members()):
+                if member.recordType == BaseRecordType.group:
+                    yield member.expandedMembers(members, seen)
+                else:
                     members.add(member)
-            yield member.expandedMembers(members)
 
         returnValue(members)
 

Modified: CalendarServer/trunk/txdav/who/test/test_delegates.py
===================================================================
--- CalendarServer/trunk/txdav/who/test/test_delegates.py	2014-07-18 18:23:07 UTC (rev 13776)
+++ CalendarServer/trunk/txdav/who/test/test_delegates.py	2014-07-18 18:54:57 UTC (rev 13777)
@@ -160,8 +160,7 @@
         group1 = yield self.directory.recordWithUID(u"__top_group_1__")
         group2 = yield self.directory.recordWithUID(u"__sub_group_1__")
 
-        # Add group delegate, but before the group membership has been
-        # pulled in
+        # Add group delegate
         yield addDelegate(txn, delegator, group1, True)
         # Passing expanded=False will return the group
         delegates = (yield delegatesOf(txn, delegator, True, expanded=False))
@@ -170,14 +169,6 @@
         # Passing expanded=True will return not the group -- it only returns
         # non-groups
         delegates = (yield delegatesOf(txn, delegator, True, expanded=True))
-        self.assertEquals(0, len(delegates))
-
-        # Now refresh the group and there will be 3 delegates (contained
-        # within 2 nested groups)
-        # guid = "49b350c69611477b94d95516b13856ab"
-        yield self.groupCacher.refreshGroup(txn, group1.uid)
-        yield self.groupCacher.refreshGroup(txn, group2.uid)
-        delegates = (yield delegatesOf(txn, delegator, True, expanded=True))
         self.assertEquals(
             set([u"__sagen1__", u"__cdaboo1__", u"__glyph1__"]),
             set([d.uid for d in delegates])

Modified: CalendarServer/trunk/txdav/who/test/test_group_attendees.py
===================================================================
--- CalendarServer/trunk/txdav/who/test/test_group_attendees.py	2014-07-18 18:23:07 UTC (rev 13776)
+++ CalendarServer/trunk/txdav/who/test/test_group_attendees.py	2014-07-18 18:54:57 UTC (rev 13777)
@@ -545,7 +545,7 @@
 """
 
         @inlineCallbacks
-        def expandedMembers(self, records=None):
+        def expandedMembers(self, records=None, seen=None):
             yield None
             returnValue(set())
 
@@ -684,7 +684,7 @@
 """
 
         @inlineCallbacks
-        def expandedMembers(self, records=None):
+        def expandedMembers(self, records=None, seen=None):
             yield None
             returnValue(set())
 
@@ -828,7 +828,7 @@
 """
 
         @inlineCallbacks
-        def expandedMembers(self, records=None):
+        def expandedMembers(self, records=None, seen=None):
             yield None
             returnValue(set())
 
@@ -990,7 +990,7 @@
 """
 
         @inlineCallbacks
-        def expandedMembers(self, records=None):
+        def expandedMembers(self, records=None, seen=None):
             yield None
             returnValue(set())
 
@@ -1135,7 +1135,7 @@
 """
 
         @inlineCallbacks
-        def expandedMembers(self, records=None):
+        def expandedMembers(self, records=None, seen=None):
             yield None
             returnValue(set())
 
@@ -1281,7 +1281,7 @@
 """
 
         @inlineCallbacks
-        def expandedMembers(self, records=None):
+        def expandedMembers(self, records=None, seen=None):
             yield None
             returnValue(set())
 

Modified: CalendarServer/trunk/txdav/who/test/test_group_sharees.py
===================================================================
--- CalendarServer/trunk/txdav/who/test/test_group_sharees.py	2014-07-18 18:23:07 UTC (rev 13776)
+++ CalendarServer/trunk/txdav/who/test/test_group_sharees.py	2014-07-18 18:54:57 UTC (rev 13777)
@@ -109,12 +109,12 @@
         """
 
         @inlineCallbacks
-        def expandedMembers(self, records=None):
+        def expandedMembers(self, records=None, seen=None):
 
             if self.uid == "group02" or self.uid == "group03":
                 returnValue(frozenset())
             else:
-                returnValue((yield unpatchedExpandedMembers(self, records)))
+                returnValue((yield unpatchedExpandedMembers(self, records, seen)))
 
         unpatchedExpandedMembers = CalendarDirectoryRecordMixin.expandedMembers
 
@@ -190,12 +190,12 @@
         """
 
         @inlineCallbacks
-        def expandedMembers(self, records=None):
+        def expandedMembers(self, records=None, seen=None):
 
             if self.uid == "group02" or self.uid == "group03":
                 returnValue(frozenset())
             else:
-                returnValue((yield unpatchedExpandedMembers(self, records)))
+                returnValue((yield unpatchedExpandedMembers(self, records, seen)))
 
         unpatchedExpandedMembers = CalendarDirectoryRecordMixin.expandedMembers
 

Modified: CalendarServer/trunk/txdav/who/test/test_groups.py
===================================================================
--- CalendarServer/trunk/txdav/who/test/test_groups.py	2014-07-18 18:23:07 UTC (rev 13776)
+++ CalendarServer/trunk/txdav/who/test/test_groups.py	2014-07-18 18:54:57 UTC (rev 13777)
@@ -167,7 +167,7 @@
         yield self.groupCacher.refreshGroup(txn, uid)
         (
             groupID, _ignore_name, _ignore_membershipHash, _ignore_modified,
-            extant
+            _ignore_extant
         ) = yield txn.groupByUID(uid)
         results = yield txn.groupByID(groupID)
         self.assertEquals((uid, u"Top Group 1", hash, True), results)
@@ -428,6 +428,27 @@
         )
 
 
+    @inlineCallbacks
+    def test_recursiveGroup(self):
+        """
+        Verify refreshGroup() adds a group to the Groups table with the
+        expected membership hash value and members
+        """
+
+        store = self.storeUnderTest()
+        txn = store.newTransaction()
+
+        record = yield self.directory.recordWithUID(u"recursive1_coasts")
+        members = yield record.expandedMembers()
+        self.assertEquals(
+            set([r.uid for r in members]),
+            set([u'6423F94A-6B76-4A3A-815B-D52CFD77935D', u'5A985493-EE2C-4665-94CF-4DFEA3A89500'])
+        )
+
+        yield txn.commit()
+
+
+
 class DynamicGroupTest(StoreTestCase):
 
 
@@ -487,7 +508,7 @@
         txn = store.newTransaction()
         yield self.groupCacher.refreshGroup(txn, u"testgroup")
         (
-            groupID, _ignore_name, membershipHash, _ignore_modified,
+            _ignore_groupID, _ignore_name, _ignore_membershipHash, _ignore_modified,
             extant
         ) = (yield txn.groupByUID(u"testgroup"))
         yield txn.commit()
@@ -500,7 +521,7 @@
         txn = store.newTransaction()
         yield self.groupCacher.refreshGroup(txn, u"testgroup")
         (
-            groupID, _ignore_name, membershipHash, _ignore_modified,
+            groupID, _ignore_name, _ignore_membershipHash, _ignore_modified,
             extant
         ) = (yield txn.groupByUID(u"testgroup"))
         yield txn.commit()
@@ -535,7 +556,7 @@
         txn = store.newTransaction()
         yield self.groupCacher.refreshGroup(txn, u"testgroup")
         (
-            groupID, _ignore_name, membershipHash, _ignore_modified,
+            groupID, _ignore_name, _ignore_membershipHash, _ignore_modified,
             extant
         ) = (yield txn.groupByUID(u"testgroup"))
         yield txn.commit()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140718/6b72ac7d/attachment-0001.html>


More information about the calendarserver-changes mailing list