forked from python-caldav/caldav
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompatibility_issues.py
362 lines (283 loc) · 12.6 KB
/
compatibility_issues.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
# fmt: off
## 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 (this is ignored by the tests now, as we're doing client-side expansion)""",
'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 (this is ignored by the tests now, as we're doing client-side expansion)""",
'no_recurring_todo':
"""Recurring events are supported, but not recurring todos""",
'no_recurring_todo_expand':
"""Recurring todos aren't expanded (this is ignored by the tests now, as we're doing client-side expansion)""",
'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?)""",
'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""",
'dav_not_supported':
"""when asked, the server may claim it doesn't support the DAV protocol. Observed by one baikal server, should be investigated more (TODO) and robur""",
'category_search_yields_nothing':
"""When querying for a text match report over fields like the category field, server returns nothing""",
'text_search_is_case_insensitive':
"""Probably not supporting the collation used by the caldav library""",
'text_search_is_exact_match_only':
"""Searching for 'CONF' i.e. in the class field will not yield CONFIDENTIAL. Which generally makes sense, but the RFC specifies substring match""",
'text_search_is_exact_match_sometimes':
"""Some servers are doing an exact match on summary field but substring match on category""",
'combined_search_not_working':
"""When querying for a text match and a date range in the same report, weird things happen""",
'text_search_not_working':
"""Text search is generally broken""",
'radicale_breaks_on_category_search':
"""See https://github.com/Kozea/Radicale/issues/1125""",
'fastmail_buggy_noexpand_date_search':
"""The 'blissful anniversary' recurrent example event is returned when asked for a no-expand date search for some timestamps covering a completely different date""",
'non_existing_raises_other':
"""Robur raises AuthorizationError when trying to access a non-existing resource (while 404 is expected). Probably so one shouldn't probe a public name space?""",
'no_supported_components_support':
"""The supported components prop query does not work""",
'rrule_takes_no_count':
"""Fastmail consistently yields a "502 bad gateway" when presented with a rrule containing COUNT""",
'no-current-user-principal':
"""when querying for the current user principal property, server doesn't report anything useful""",
'read_only':
"""The calendar server does not support PUT, POST, DELETE, PROPSET, MKCALENDAR, etc""",
'no_relships':
"""The calendar server does not support child/parent relationships between calendar components""",
}
xandikos = [
## https://github.com/jelmer/xandikos/issues/8
"no_expand", "no_recurring",
'text_search_is_exact_match_only',
## This one is fixed in master branch
'category_search_yields_nothing', ## https://github.com/jelmer/xandikos/pull/194
## 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",
## TODO: raise an issue on this one
"radicale_breaks_on_category_search",
## Expanding recurrent events is not yet supported
## ref https://github.com/Kozea/Radicale/issues/662
"no_recurring_expandation",
'no_scheduling',
'text_search_is_case_insensitive',
'text_search_is_exact_match_only',
'combined_search_not_working',
## 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',
'no_todo_on_standard_calendar',
'no_sync_token',
'vtodo_datesearch_notime_task_is_skipped',
'category_search_yields_nothing',
'text_search_is_exact_match_only',
'no_relships',
## 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',
'combined_search_not_working',
'text_search_is_exact_match_sometimes',
## 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',
'combined_search_not_working',
'text_search_is_exact_match_sometimes',
]
fastmail = [
'duplicates_not_allowed',
'duplicate_in_other_calendar_with_same_uid_breaks',
'no_todo',
'sticky_events',
'fastmail_buggy_noexpand_date_search',
'combined_search_not_working',
'text_search_is_exact_match_sometimes',
'rrule_takes_no_count'
]
synology = [
"fragile_sync_tokens",
"vtodo_datesearch_notime_task_is_skipped",
"no_recurring_todo",
]
robur = [
'non_existing_raises_other', ## AuthorizationError instead of NotFoundError
'no_scheduling',
'no_sync_token',
'no_supported_components_support',
'no_journal',
'no_freebusy_rfc4791',
'no_todo_datesearch', ## returns nothing
'text_search_not_working',
'no_relships'
]
# fmt: on