@@ -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 :
0 commit comments