def test_pick_default_other(self): """ Make calendar """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") # default property present default = yield inbox.readProperty(caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual(str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/calendar") # Create a new default calendar newcalendar = yield request.locateResource("/calendars/users/wsanchez/newcalendar") yield newcalendar.createCalendarCollection() yield inbox.writeProperty(caldavxml.ScheduleDefaultCalendarURL(davxml.HRef("/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/newcalendar")), request) # Delete the normal calendar calendar = yield request.locateResource("/calendars/users/wsanchez/calendar") yield calendar.storeRemove(request) yield self.commit() request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") default = yield inbox.readProperty(caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual(str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/newcalendar") yield self.abort()
def test_set_default_vevent_other(self): """ Test that the default URL can be set to another VEVENT calendar """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") # default property is present default = yield inbox.readProperty(caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual(str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/calendar") # Create a new default calendar newcalendar = yield request.locateResource("/calendars/users/wsanchez/newcalendar") yield newcalendar.createCalendarCollection() yield newcalendar.setSupportedComponents(("VEVENT",)) yield self.commit() request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") yield inbox.writeProperty(caldavxml.ScheduleDefaultCalendarURL(davxml.HRef("/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/newcalendar")), request) default = yield inbox.readProperty(caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual(str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/newcalendar") yield self.commit()
def test_missing_default_vtodo_calendar(self): """ Test that readProperty will not create a missing default calendar. """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") home = yield request.locateResource("/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") # default property present default = yield inbox.readProperty(customxml.ScheduleDefaultTasksURL, request) self.assertEqual( str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/tasks") # Forcibly remove the one we need yield home._newStoreHome.removeChildWithName("tasks") names = [ calendarName for calendarName in (yield home._newStoreHome.listCalendars()) ] self.assertTrue("tasks" not in names) # Property is empty now default = yield inbox.readProperty(customxml.ScheduleDefaultTasksURL, request) self.assertEqual(len(default.children), 0) yield self.abort()
def test_wikiACL(self): """ Ensure shareeAccessControlList( ) honors the access granted by the wiki to the sharee, so that delegates of the sharee get the same level of access. """ sharedName = yield self.wikiSetup() access = WikiAccessLevel.read def stubAccessForRecord(*args): return succeed(access) self.patch(WikiDirectoryRecord, "accessForRecord", stubAccessForRecord) request = SimpleStoreRequest(self, "GET", "/calendars/__uids__/user01/") collection = yield request.locateResource( "/calendars/__uids__/user01/" + sharedName) # Simulate the wiki server granting Read access acl = (yield collection.shareeAccessControlList(request)) self.assertFalse("<write/>" in acl.toxml()) # Simulate the wiki server granting Read-Write access access = WikiAccessLevel.write acl = (yield collection.shareeAccessControlList(request)) self.assertTrue("<write/>" in acl.toxml())
def test_wikiACL(self): """ Ensure shareeAccessControlList( ) honors the access granted by the wiki to the sharee, so that delegates of the sharee get the same level of access. """ sharedName = yield self.wikiSetup() access = WikiAccessLevel.read def stubAccessForRecord(*args): return succeed(access) self.patch(WikiDirectoryRecord, "accessForRecord", stubAccessForRecord) request = SimpleStoreRequest(self, "GET", "/calendars/__uids__/user01/") collection = yield request.locateResource("/calendars/__uids__/user01/" + sharedName) # Simulate the wiki server granting Read access acl = (yield collection.shareeAccessControlList(request)) self.assertFalse("<write/>" in acl.toxml()) # Simulate the wiki server granting Read-Write access access = WikiAccessLevel.write acl = (yield collection.shareeAccessControlList(request)) self.assertTrue("<write/>" in acl.toxml())
def test_pick_default_addressbook(self): """ Get adbk """ request = SimpleStoreRequest(self, "GET", "/addressbooks/users/wsanchez/", authPrincipal=self.authPrincipal) home = yield request.locateResource("/addressbooks/users/wsanchez") # default property initially not present try: home.readDeadProperty(carddavxml.DefaultAddressBookURL) except HTTPError: pass else: self.fail("carddavxml.DefaultAddressBookURL is not empty") yield home.pickNewDefaultAddressBook(request) try: default = home.readDeadProperty(carddavxml.DefaultAddressBookURL) except HTTPError: self.fail("carddavxml.DefaultAddressBookURL is not present") else: self.assertEqual( str(default.children[0]), "/addressbooks/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/addressbook/" )
def test_pick_default_other(self): """ Make calendar """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") # default property present default = yield inbox.readProperty( caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual( str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/calendar" ) # Create a new default calendar newcalendar = yield request.locateResource( "/calendars/users/wsanchez/newcalendar") yield newcalendar.createCalendarCollection() yield inbox.writeProperty( caldavxml.ScheduleDefaultCalendarURL( davxml.HRef( "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/newcalendar" )), request) # Delete the normal calendar calendar = yield request.locateResource( "/calendars/users/wsanchez/calendar") yield calendar.storeRemove(request) yield self.commit() request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") default = yield inbox.readProperty( caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual( str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/newcalendar" ) yield self.abort()
def test_pick_default_vtodo_calendar(self): """ Test that pickNewDefaultCalendar will choose the correct tasks calendar. """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") default = yield inbox.readProperty(customxml.ScheduleDefaultTasksURL, request) self.assertEqual(str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/tasks") yield self.abort()
def test_is_default_calendar(self): """ Test .isDefaultCalendar() returns the proper class or None. """ # Create a new non-default calendar request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") newcalendar = yield request.locateResource("/calendars/users/wsanchez/newcalendar") yield newcalendar.createCalendarCollection() yield newcalendar.setSupportedComponents(("VEVENT",)) inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") yield inbox.defaultCalendar(request, "VEVENT") yield inbox.defaultCalendar(request, "VTODO") yield self.commit() request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") calendar = yield request.locateResource("/calendars/users/wsanchez/calendar") newcalendar = yield request.locateResource("/calendars/users/wsanchez/newcalendar") tasks = yield request.locateResource("/calendars/users/wsanchez/tasks") result = yield calendar.isDefaultCalendar(request) self.assertTrue(result) result = yield newcalendar.isDefaultCalendar(request) self.assertFalse(result) result = yield tasks.isDefaultCalendar(request) self.assertTrue(result) yield self.commit()
def test_is_default_calendar(self): """ Test .isDefaultCalendar() returns the proper class or None. """ # Create a new non-default calendar request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") newcalendar = yield request.locateResource( "/calendars/users/wsanchez/newcalendar") yield newcalendar.createCalendarCollection() yield newcalendar.setSupportedComponents(("VEVENT", )) inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") yield inbox.defaultCalendar(request, "VEVENT") yield inbox.defaultCalendar(request, "VTODO") yield self.commit() request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") calendar = yield request.locateResource( "/calendars/users/wsanchez/calendar") newcalendar = yield request.locateResource( "/calendars/users/wsanchez/newcalendar") tasks = yield request.locateResource("/calendars/users/wsanchez/tasks") result = yield calendar.isDefaultCalendar(request) self.assertTrue(result) result = yield newcalendar.isDefaultCalendar(request) self.assertFalse(result) result = yield tasks.isDefaultCalendar(request) self.assertTrue(result) yield self.commit()
def test_set_default_vevent_other(self): """ Test that the default URL can be set to another VEVENT calendar """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") # default property is present default = yield inbox.readProperty( caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual( str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/calendar" ) # Create a new default calendar newcalendar = yield request.locateResource( "/calendars/users/wsanchez/newcalendar") yield newcalendar.createCalendarCollection() yield newcalendar.setSupportedComponents(("VEVENT", )) yield self.commit() request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") yield inbox.writeProperty( caldavxml.ScheduleDefaultCalendarURL( davxml.HRef( "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/newcalendar" )), request) default = yield inbox.readProperty( caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual( str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/newcalendar" ) yield self.commit()
def test_pick_default_vevent_calendar(self): """ Test that pickNewDefaultCalendar will choose the correct calendar. """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") # default property initially present prop = yield inbox.readProperty(caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual(str(prop.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/calendar") yield self.abort()
def test_missing_default_vtodo_calendar(self): """ Test that readProperty will not create a missing default calendar. """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") home = yield request.locateResource("/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") # default property present default = yield inbox.readProperty(customxml.ScheduleDefaultTasksURL, request) self.assertEqual(str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/tasks") # Forcibly remove the one we need yield home._newStoreHome.removeChildWithName("tasks") names = [calendarName for calendarName in (yield home._newStoreHome.listCalendars())] self.assertTrue("tasks" not in names) # Property is empty now default = yield inbox.readProperty(customxml.ScheduleDefaultTasksURL, request) self.assertEqual(len(default.children), 0) yield self.abort()
def test_pick_default_vtodo_calendar(self): """ Test that pickNewDefaultCalendar will choose the correct tasks calendar. """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") default = yield inbox.readProperty(customxml.ScheduleDefaultTasksURL, request) self.assertEqual( str(default.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/tasks") yield self.abort()
def test_pick_default_vevent_calendar(self): """ Test that pickNewDefaultCalendar will choose the correct calendar. """ request = SimpleStoreRequest(self, "GET", "/calendars/users/wsanchez/") inbox = yield request.locateResource("/calendars/users/wsanchez/inbox") # default property initially present prop = yield inbox.readProperty(caldavxml.ScheduleDefaultCalendarURL, request) self.assertEqual( str(prop.children[0]), "/calendars/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/calendar" ) yield self.abort()
def test_pick_default_addressbook(self): """ Get adbk """ request = SimpleStoreRequest(self, "GET", "/addressbooks/users/wsanchez/", authPrincipal=self.authPrincipal) home = yield request.locateResource("/addressbooks/users/wsanchez") # default property initially not present try: home.readDeadProperty(carddavxml.DefaultAddressBookURL) except HTTPError: pass else: self.fail("carddavxml.DefaultAddressBookURL is not empty") yield home.pickNewDefaultAddressBook(request) try: default = home.readDeadProperty(carddavxml.DefaultAddressBookURL) except HTTPError: self.fail("carddavxml.DefaultAddressBookURL is not present") else: self.assertEqual(str(default.children[0]), "/addressbooks/__uids__/6423F94A-6B76-4A3A-815B-D52CFD77935D/addressbook/")
def test_wikiACL(self): """ Ensure shareeAccessControlList( ) honors the access granted by the wiki to the sharee, so that delegates of the sharee get the same level of access. """ access = "read" def stubWikiAccessMethod(userID, wikiID): return access self.patch(sharing, "getWikiAccess", stubWikiAccessMethod) sharedName = yield self.wikiSetup() request = SimpleStoreRequest(self, "GET", "/calendars/__uids__/user01/") collection = yield request.locateResource("/calendars/__uids__/user01/" + sharedName) # Simulate the wiki server granting Read access acl = (yield collection.shareeAccessControlList(request)) self.assertFalse("<write/>" in acl.toxml()) # Simulate the wiki server granting Read-Write access access = "write" acl = (yield collection.shareeAccessControlList(request)) self.assertTrue("<write/>" in acl.toxml())
def _getResourceSharer(self, name): request = SimpleStoreRequest(self, "GET", "%s" % (name, )) resource = yield request.locateResource("%s" % (name, )) returnValue(resource)
def _getResource(self): request = SimpleStoreRequest(self, "GET", "/calendars/__uids__/user01/calendar/") resource = yield request.locateResource("/calendars/__uids__/user01/calendar/") returnValue(resource)
def _getResourceSharer(self, name): request = SimpleStoreRequest(self, "GET", "%s" % (name,)) resource = yield request.locateResource("%s" % (name,)) returnValue(resource)
def _getResource(self): request = SimpleStoreRequest(self, "GET", "/calendars/__uids__/user01/calendar/") resource = yield request.locateResource( "/calendars/__uids__/user01/calendar/") returnValue(resource)