Skip to content

Commit c112d27

Browse files
committed
wip
1 parent c496623 commit c112d27

2 files changed

Lines changed: 62 additions & 29 deletions

File tree

check_server_compatibility.py

Lines changed: 59 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,22 @@ def _try_make_calendar(self, cal_id, **kwargs):
7171
calmade = True
7272
self.set_flag("no_mkcalendar", False)
7373
self.set_flag("read_only", False)
74+
self.principal.calendar(cal_id=cal_id).events()
75+
import pdb; pdb.set_trace()
76+
if kwargs.get('name'):
77+
try:
78+
name = 'A calendar with this name should not exist'
79+
self.principal.calendar(name=name).events()
80+
except:
81+
## This is not the exception, this is the normal
82+
try:
83+
cal2 = self.principal.calendar(name=kwargs['name'])
84+
cal2.events()
85+
assert(cal2.id == cal.id)
86+
self.set_flag("no_displayname", False)
87+
except:
88+
self.set_flag("no_displayname", True)
89+
7490
except Exception as e:
7591
## calendar creation created an exception - return exception
7692
cal = self.principal.calendar(cal_id=cal_id)
@@ -150,6 +166,7 @@ def check_principal(self):
150166
self.set_flag("no-current-user-principal", True)
151167

152168
def check_mkcalendar(self):
169+
self.set_flag("unique_calendar_ids", False)
153170
try:
154171
cal = self.principal.calendar(cal_id="this_should_not_exist")
155172
cal.events()
@@ -162,53 +179,55 @@ def check_mkcalendar(self):
162179
## Check on "no_default_calendar" flag
163180
try:
164181
cals = self.principal.calendars()
165-
cals[0].events()
182+
events = cals[0].events()
183+
## We will not do any testing on a calendar that already contains events
166184
self.set_flag("no_default_calendar", False)
167-
self._default_calendar = cals[0]
168185
except:
169186
self.set_flag("no_default_calendar", True)
170187

188+
import pdb; pdb.set_trace()
171189
makeret = self._try_make_calendar(name="Yep", cal_id="pythoncaldav-test")
172190
if makeret[0]:
173-
try:
174-
self._default_calendar = self.principal.make_calendar(
175-
name="Yep", cal_id="pythoncaldav-test"
176-
)
177-
except:
178-
self._default_calendar = self.principal.calendar(
179-
cal_id="pythoncaldav-test"
180-
)
181-
self._default_calendar.events()
191+
## calendar created
182192
return
183193
makeret = self._try_make_calendar(cal_id="pythoncaldav-test")
184194
if makeret[0]:
185195
self.set_flag("no_displayname", True)
186196
return
187197
unique_id1 = "testcalendar-" + str(uuid.uuid4())
188-
makeret = self._try_make_calendar(cal_id=unique_id1)
198+
makeret = self._try_make_calendar(cal_id=unique_id1, name="Yep")
189199
if makeret[0]:
190200
self.set_flag("unique_calendar_ids", True)
201+
return
191202
unique_id = "testcalendar-" + str(uuid.uuid4())
192-
makeret = self._try_make_calendar(cal_id=unique_id, name="Yep")
193-
if not makeret[0] and not self.flags_checked.get("no_mkcalendar", True):
203+
makeret = self._try_make_calendar(cal_id=unique_id)
204+
if makeret[0]:
194205
self.flags_checked["no_displayname"] = True
206+
return
195207
if not "no_mkcalendar" in self.flags_checked:
196208
self.set_flag("no_mkcalendar", True)
197-
self._fix_cal()
198209

199-
def _fix_cal():
210+
def _fix_cal_if_needed(self, todo=False):
211+
if self.flags_checked['no_delete_event']:
212+
return self._fix_cal(todo=todo)
213+
else:
214+
return self._default_calendar
215+
216+
def _fix_cal(self, todo=False):
217+
kwargs = {}
200218
if self._default_calendar:
201219
self._default_calendar.delete()
220+
if todo:
221+
kwargs['supported_calendar_component_set'] = ["VTODO"]
202222
if self.flags_checked['unique_calendar_ids']:
203-
cal_id = "testcalendar-" + str(uuid.uuid4())
223+
kwargs['cal_id'] = "testcalendar-" + str(uuid.uuid4())
204224
else:
205-
cal_id = "pythoncaldav-test"
225+
kwargs['cal_id'] = "pythoncaldav-test"
206226
if self.flags_checked['no_displayname']:
207-
name = None
227+
kwargs['name'] = None
208228
else:
209-
name = "CalDAV Server Testing"
210-
#cal = self.principal.make_calendar(cal_id=cal_id, name=name)
211-
cal = self.principal.make_calendar(cal_id=cal_id, name=None)
229+
kwargs['name'] = "CalDAV Server Testing"
230+
cal = self.principal.make_calendar(**kwargs)
212231
self._default_calendar = cal
213232
return cal
214233

@@ -530,23 +549,33 @@ def _do_date_search(self, assert_found=True, has_duration=True, **kwargs):
530549

531550
def check_todo(self):
532551
cal = self._default_calendar
552+
simple = {
553+
'summary': "This is a summary",
554+
'uid': "check_todo_1",
555+
}
533556
try:
534557
## Add a simplest possible todo
535-
todo_simple = cal.add_todo(
536-
summary="This is a summary",
537-
uid="check_todo_1",
538-
)
558+
todo_simple = cal.add_todo(**simple)
539559
if not self.flags_checked["object_by_uid_is_broken"]:
540560
assert str(cal.todo_by_uid("check_todo_1").icalendar_component['UID']) == 'check_todo_1'
541561
self.set_flag("no_todo", False)
542562
except Exception as e:
543-
import pdb; pdb.set_trace()
544-
self.set_flag("no_todo")
545-
return
563+
cal = self._fix_cal(todo=True)
564+
try:
565+
## Add a simplest possible todo
566+
todo_simple = cal.add_todo(**simple)
567+
if not self.flags_checked["object_by_uid_is_broken"]:
568+
assert str(cal.todo_by_uid("check_todo_1").icalendar_component['UID']) == 'check_todo_1'
569+
self.set_flag("no_todo", False)
570+
self.set_flag("no_todo_on_standard_calendar")
571+
except:
572+
self.set_flag("no_todo")
573+
return
546574
try:
547575
self._check_simple_todo(todo_simple)
548576
finally:
549577
todo_simple.delete()
578+
self._fix_cal_if_needed()
550579

551580
## There are more corner cases to consider
552581
## See RFC 4791, section 9.9
@@ -661,6 +690,7 @@ def check_all(self):
661690
self.check_support()
662691
self.check_propfind()
663692
self.check_mkcalendar()
693+
self._fix_cal()
664694
self.check_event()
665695
self.check_todo()
666696
finally:

tests/compatibility_issues.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@
127127
'no_todo':
128128
"""Support for VTODO (tasks) apparently missing""",
129129

130+
'no_todo_on_standard_calendar':
131+
"""Tasklists can be created, but a normal calendar does not support tasks""",
132+
130133
'no_todo_datesearch':
131134
"""Date search on todo items fails""",
132135

0 commit comments

Comments
 (0)