[CalendarServer-changes] [14816] CalendarServer/trunk/txdav
source_changes at macosforge.org
source_changes at macosforge.org
Thu May 21 22:52:18 PDT 2015
Revision: 14816
http://trac.calendarserver.org//changeset/14816
Author: cdaboo at apple.com
Date: 2015-05-21 22:52:18 -0700 (Thu, 21 May 2015)
Log Message:
-----------
Make sure hidden trash collection is not exposed in sync report results.
Modified Paths:
--------------
CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py
CalendarServer/trunk/txdav/common/datastore/sql.py
Modified: CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py
===================================================================
--- CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py 2015-05-22 00:07:30 UTC (rev 14815)
+++ CalendarServer/trunk/txdav/caldav/datastore/test/test_sql.py 2015-05-22 05:52:18 UTC (rev 14816)
@@ -2348,7 +2348,108 @@
yield self.commit()
+ @inlineCallbacks
+ def test_homeSyncTokenWithTrash_Visible(self):
+ """
+ L{ICalendarHome.resourceNamesSinceToken} will return the names of
+ calendar objects created since L{ICalendarHome.syncToken} last returned
+ a particular value.
+ """
+ self.patch(config, "EnableTrashCollection", True)
+ self.patch(config, "ExposeTrashCollection", True)
+
+ home = yield self.homeUnderTest()
+ cal = yield self.calendarUnderTest()
+ st = yield home.syncToken()
+ yield cal.createCalendarObjectWithName("new.ics", Component.fromString(
+ test_event_text
+ ))
+
+ obj1 = yield cal.calendarObjectWithName("2.ics")
+ yield obj1.remove()
+ yield home.createCalendarWithName("other-calendar")
+ st2 = yield home.syncToken()
+ self.failIfEquals(st, st2)
+
+ home = yield self.homeUnderTest()
+
+ expected = [
+ "calendar_1/",
+ "calendar_1/new.ics",
+ "calendar_1/2.ics",
+ "other-calendar/"
+ ]
+
+ trash = yield home.getTrash()
+ if trash is not None:
+ trashed = yield trash.calendarObjects()
+ expected.extend([
+ "{}/".format(trash.name()),
+ "{}/{}".format(trash.name(), trashed[0].name()),
+ ])
+
+ changed, deleted, invalid = yield home.resourceNamesSinceToken(
+ self.token2revision(st), "infinity")
+
+ self.assertEquals(set(changed), set(expected))
+ self.assertEquals(set(deleted), set(["calendar_1/2.ics"]))
+ self.assertEquals(invalid, [])
+
+ changed, deleted, invalid = yield home.resourceNamesSinceToken(
+ self.token2revision(st2), "infinity")
+ self.assertEquals(changed, [])
+ self.assertEquals(deleted, [])
+ self.assertEquals(invalid, [])
+
+
+ @inlineCallbacks
+ def test_homeSyncTokenWithTrash_Invisible(self):
+ """
+ L{ICalendarHome.resourceNamesSinceToken} will return the names of
+ calendar objects created since L{ICalendarHome.syncToken} last returned
+ a particular value.
+ """
+
+ self.patch(config, "EnableTrashCollection", True)
+
+ home = yield self.homeUnderTest()
+ cal = yield self.calendarUnderTest()
+ st = yield home.syncToken()
+ yield cal.createCalendarObjectWithName("new.ics", Component.fromString(
+ test_event_text
+ ))
+
+ obj1 = yield cal.calendarObjectWithName("2.ics")
+ yield obj1.remove()
+ yield home.createCalendarWithName("other-calendar")
+ st2 = yield home.syncToken()
+ self.failIfEquals(st, st2)
+
+ home = yield self.homeUnderTest()
+
+ expected = [
+ "calendar_1/",
+ "calendar_1/new.ics",
+ "calendar_1/2.ics",
+ "other-calendar/"
+ ]
+
+ changed, deleted, invalid = yield home.resourceNamesSinceToken(
+ self.token2revision(st), "infinity")
+
+ self.assertEquals(set(changed), set(expected))
+ self.assertEquals(set(deleted), set(["calendar_1/2.ics"]))
+ self.assertEquals(invalid, [])
+
+ changed, deleted, invalid = yield home.resourceNamesSinceToken(
+ self.token2revision(st2), "infinity")
+ self.assertEquals(changed, [])
+ self.assertEquals(deleted, [])
+ self.assertEquals(invalid, [])
+
+
+
class SchedulingTests(CommonCommonTests, unittest.TestCase):
"""
CalendarObject splitting tests
Modified: CalendarServer/trunk/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/trunk/txdav/common/datastore/sql.py 2015-05-22 00:07:30 UTC (rev 14815)
+++ CalendarServer/trunk/txdav/common/datastore/sql.py 2015-05-22 05:52:18 UTC (rev 14816)
@@ -2610,11 +2610,22 @@
(yield self.doChangesQuery(revision))
]
+ if not config.ExposeTrashCollection:
+ trash = yield self.getTrash(create=False)
+ trashName = trash.name() if trash else None
+ else:
+ trashName = None
+
changed = set()
deleted = set()
invalid = set()
deleted_collections = set()
for path, name, wasdeleted in results:
+
+ # Don't report the trash if it is hidden
+ if trashName and path == trashName:
+ continue
+
if wasdeleted:
if name:
# Resource deleted - for depth "1" report collection as changed,
@@ -3154,6 +3165,7 @@
yield collection.fromTrash(restoreChildren=True)
+
class CommonHomeChild(FancyEqMixin, Memoizable, _SharedSyncLogic, HomeChildBase, SharingMixIn):
"""
Common ancestor class of AddressBooks and Calendars.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20150521/1cf955a5/attachment.html>
More information about the calendarserver-changes
mailing list