## The lists below are specifying what tests should be skipped or ## modified to accept non-conforming resultsets from the different ## calendar servers. In addition there are some hacks in the library ## code itself to work around some known compatibility issues, like ## the caldav.lib.vcal.fix function. ## Here is a list of all observed (in)compatibility issues the test framework needs to know about ## TODO: ## * references to the relevant parts of the RFC would be nice. ## * Research should be done to triple-check that the issue is on the server side, and not on the client side ## * Some of the things below should be possible to probe the server for. ## * Perhaps some more readable format should be considered (yaml?). ## * Consider how to get this into the documentation incompatibility_description = { 'no_expand': """Server may throw errors when asked to do a expanded date search""", 'no_recurring': """Server is having issues with recurring events and/or todos. """ """date searches covering recurrances may yield no results, """ """and events/todos may not be expanded with recurrances""", 'no_recurring_expandation': """Server will not expand recurring events""", 'no_recurring_todo': """Recurring events are supported, but not recurring todos""", 'no_recurring_todo_expand': """Recurring todos aren't expanded""", 'no_scheduling': """RFC6833 is not supported""", 'no_default_calendar': """The given user starts without an assigned default calendar """ """(or without pre-defined calendars at all)""", 'non_existing_calendar_found': """Server will not yield a 404 when accessing a random calendar URL """ """(perhaps the calendar will be automatically created on access)""", 'no_freebusy_rfc4791': """Server does not support a freebusy-request as per RFC4791""", 'no_freebusy_rfc6638': """Server does not support a freebusy-request as per RFC6638""", 'calendar_order': """Server supports (nonstandard) calendar ordering property""", 'calendar_color': """Server supports (nonstandard) calendar color property""", 'no_journal': """Server does not support journal entries""", 'no_displayname': """The display name of a calendar cannot be set/changed """ """(in zimbra, display name is given from the URL)""", 'duplicates_not_allowed': """Duplication of an event in the same calendar not allowed """ """(even with different uid)""", 'duplicate_in_other_calendar_with_same_uid_is_lost': """Fetch an event from one calendar, save it to another ... """ """and the duplicate will be ignored""", 'duplicate_in_other_calendar_with_same_uid_breaks': """Fetch an event from one calendar, save it to another ... """ """and get some error from the server""", 'event_by_url_is_broken': """A GET towards a valid calendar object resource URL will yield 404 (wtf?)""", 'uid_required': """Server will not accept calendar object resources without an UID""", 'no_sync_token': """RFC6578 is not supported, things will break if we try to do a sync-token report""", 'time_based_sync_tokens': """The sync token is typically a time stamp, and we need to sleep a """ """second in the test code to get things right""", 'fragile_sync_tokens': """Every now and then (or perhaps always), more content than expected """ """will be returned on a simple sync request. Possibly a race condition """ """if the token is timstamp-based?""", 'sync_breaks_on_delete': """I have observed a calendar server (sabre-based) that returned """ """418 I'm a teapot """ """when requesting updates on a calendar after some calendar resource """ """object was deleted""", 'propfind_allprop_failure': """The propfind test fails ... """ """it asserts DAV:allprop response contains the text 'resourcetype', """ """possibly this assert is wrong""", 'no_todo': """Support for VTODO (tasks) apparently missing""", 'no_todo_datesearch': """Date search on todo items fails""", 'vtodo_datesearch_nodtstart_task_is_skipped': """date searches for todo-items will not find tasks without a dtstart""", 'vtodo_datesearch_nodtstart_task_is_skipped_in_closed_date_range': """only open-ended date searches for todo-items will find tasks without a dtstart""", 'vtodo_datesearch_notime_task_is_skipped': """date searches for todo-items will (only) find tasks that has either """ """a dtstart or due set""", 'vtodo_no_due_infinite_duration': """date search will find todo-items without due if dtstart is """ """before the date search interval. I didn't find anything explicit """ """in The RFC on this (), but an event should be considered to have 0 """ """duration if no dtend is set, and most server implementations seems to """ """treat VTODOs the same""", 'no_todo_on_standard_calendar': """Tasklists can be created, but a normal calendar does not support tasks""", 'unique_calendar_ids': """For every test, generate a new and unique calendar id""", 'sticky_events': """Events should be deleted before the calendar is deleted, """ """and/or deleting a calendar may not have immediate effect""", 'object_by_uid_is_broken': """calendar.object_by_uid(uid) does not work""", 'no_mkcalendar': """mkcalendar is not supported""", 'no_overwrite': """events cannot be edited""", } xandikos = [ ## TEMP TEMP TEMP - TODO - should be investigated ## (perhaps my xandikos version is too old?) "no_expand", "no_recurring", ## scheduling is not supported "no_scheduling", ] radicale = [ ## calendar listings and calendar creation works a bit ## "weird" on radicale "no_default_calendar", "non_existing_calendar_found", ## freebusy is not supported yet, but on the long-term road map "no_freebusy_rfc4791", ## Expanding recurrent events is not yet supported ## ref https://github.com/Kozea/Radicale/issues/662 "no_recurring_expandation", 'no_scheduling', ## extra features not specified in RFC5545 "calendar_order", "calendar_color" ] ## ZIMBRA IS THE MOST SILLY, AND THERE ARE REGRESSIONS FOR EVERY RELEASE! ## AAARGH! zimbra = [ ## no idea why this breaks "non_existing_calendar_found", ## apparently, zimbra has no journal support 'no_journal', ## setting display name in zimbra does not work (display name, ## calendar-ID and URL is the same, the display name cannot be ## changed, it can only be given if no calendar-ID is given. In ## earlier versions of Zimbra display-name could be changed, but ## then the calendar would not be available on the old URL ## anymore) 'no_displayname', 'duplicate_in_other_calendar_with_same_uid_is_lost', 'event_by_url_is_broken', 'uid_required', 'no_todo_on_standard_calendar', 'no_sync_token', #'no_recurring_todo', 'vtodo_datesearch_notime_task_is_skipped', ## extra features not specified in RFC5545 "calendar_order", "calendar_color" ## TODO: there is more, it should be organized and moved here. ## Search for 'zimbra' in the code repository! ] bedework = [ ## quite a lot of things were missing in Bedework last I checked - ## but that's quite a while ago! 'no_journal', 'no_todo', 'propfind_allprop_failure', 'no_recurring', ## taking an event, changing the uid, and saving in the same calendar gives a 403. ## editing the content slightly and it works. Weird ... 'duplicates_not_allowed', 'duplicate_in_other_calendar_with_same_uid_is_lost' ] baikal = [ ## date search on todos does not seem to work ## (TODO: do some research on this) 'sync_breaks_on_delete', 'no_recurring_todo', 'no_recurring_todo_expand', 'non_existing_calendar_found', ## extra features not specified in RFC5545 "calendar_order", "calendar_color" ] ## See comments on https://github.com/python-caldav/caldav/issues/3 icloud = [ 'unique_calendar_ids', 'duplicate_in_other_calendar_with_same_uid_breaks', 'sticky_events', 'no_journal', ## it threw a 500 internal server error! 'no_todo', "no_freebusy_rfc4791", 'no_recurring', 'propfind_allprop_failure', 'object_by_uid_is_broken' ] davical = [ #'nofreebusy', ## for old versions 'fragile_sync_tokens', 'no_journal', ## it threw a 500 internal server error! 'vtodo_datesearch_nodtstart_task_is_skipped_in_closed_date_range', ] google = [ 'no_mkcalendar', 'no_overwrite', 'no_todo', 'no_recurring_expandation' ] sogo = [ 'no_journal', 'no_freebusy_rfc4791', ## https://www.sogo.nu/bugs/view.php?id=5282 "time_based_sync_tokens", ## Left a note on https://www.sogo.nu/bugs/view.php?id=5163 "no_expand", ## https://www.sogo.nu/bugs/view.php?id=3065 ] nextcloud = [ 'sync_breaks_on_delete', 'no_recurring_todo', 'no_recurring_todo_expand', ] fastmail = [ 'duplicates_not_allowed', 'duplicate_in_other_calendar_with_same_uid_breaks', 'no_todo', 'sticky_events' ]