[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