[CalendarServer-changes] [10134] CalDAVTester/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri Dec 7 09:50:39 PST 2012
Revision: 10134
http://trac.calendarserver.org//changeset/10134
Author: cdaboo at apple.com
Date: 2012-12-07 09:50:39 -0800 (Fri, 07 Dec 2012)
Log Message:
-----------
Tests for standard timezone service protocol.
Modified Paths:
--------------
CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml
CalDAVTester/trunk/scripts/server/serverinfo-template.xml
CalDAVTester/trunk/scripts/server/serverinfo.xml
Added Paths:
-----------
CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/
CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/GB.ics
CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/London.ics
CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/New_York.ics
CalDAVTester/trunk/scripts/tests/CalDAV/timezonestdservice.xml
Added: CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/GB.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/GB.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/GB.ics 2012-12-07 17:50:39 UTC (rev 10134)
@@ -0,0 +1,291 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+TZID:GB
+X-LIC-LOCATION:GB
+BEGIN:STANDARD
+DTSTART:18471201T000000
+RDATE:18471201T000000
+TZNAME:S
+TZOFFSETFROM:-000115
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160521T020000
+RDATE:19160521T020000
+RDATE:19170408T020000
+RDATE:19180324T020000
+RDATE:19190330T020000
+RDATE:19200328T020000
+RDATE:19210403T020000
+RDATE:19220326T020000
+RDATE:19230422T020000
+RDATE:19240413T020000
+RDATE:19270410T020000
+RDATE:19300413T020000
+RDATE:19330409T020000
+RDATE:19340422T020000
+RDATE:19350414T020000
+RDATE:19380410T020000
+RDATE:19390416T020000
+RDATE:19400225T020000
+RDATE:19460414T020000
+RDATE:19470316T020000
+RDATE:19480314T020000
+RDATE:19490403T020000
+RDATE:19530419T020000
+RDATE:19540411T020000
+RDATE:19570414T020000
+RDATE:19600410T020000
+RDATE:19680218T020000
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T030000
+RDATE:19161001T030000
+RDATE:19170917T030000
+RDATE:19180930T030000
+RDATE:19190929T030000
+RDATE:19201025T030000
+RDATE:19211003T030000
+RDATE:19221008T030000
+RDATE:19391119T030000
+RDATE:19471102T030000
+RDATE:19481031T030000
+RDATE:19491030T030000
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19230916T030000
+RRULE:FREQ=YEARLY;UNTIL=19240921T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=9
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19250419T020000
+RRULE:FREQ=YEARLY;UNTIL=19260418T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19251004T030000
+RRULE:FREQ=YEARLY;UNTIL=19381002T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19280422T020000
+RRULE:FREQ=YEARLY;UNTIL=19290421T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19310419T020000
+RRULE:FREQ=YEARLY;UNTIL=19320417T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19360419T020000
+RRULE:FREQ=YEARLY;UNTIL=19370418T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19410504T020000
+RDATE:19410504T020000
+RDATE:19450402T020000
+RDATE:19470413T020000
+TZNAME:BDST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19410810T030000
+RRULE:FREQ=YEARLY;UNTIL=19430815T010000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=8
+TZNAME:BST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19420405T020000
+RRULE:FREQ=YEARLY;UNTIL=19440402T010000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=4
+TZNAME:BDST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19440917T030000
+RDATE:19440917T030000
+RDATE:19450715T030000
+RDATE:19470810T030000
+TZNAME:BST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19451007T030000
+RRULE:FREQ=YEARLY;UNTIL=19461006T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19500416T020000
+RRULE:FREQ=YEARLY;UNTIL=19520420T020000Z;BYDAY=SU;BYMONTHDAY=14,15,16,17,1
+ 8,19,20;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19501022T030000
+RRULE:FREQ=YEARLY;UNTIL=19521026T020000Z;BYDAY=SU;BYMONTHDAY=21,22,23,24,2
+ 5,26,27;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19531004T030000
+RRULE:FREQ=YEARLY;UNTIL=19601002T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19550417T020000
+RRULE:FREQ=YEARLY;UNTIL=19560422T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19580420T020000
+RRULE:FREQ=YEARLY;UNTIL=19590419T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19610326T020000
+RRULE:FREQ=YEARLY;UNTIL=19630331T020000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19611029T030000
+RRULE:FREQ=YEARLY;UNTIL=19671029T020000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19640322T020000
+RRULE:FREQ=YEARLY;UNTIL=19670319T020000Z;BYDAY=SU;BYMONTHDAY=19,20,21,22,2
+ 3,24,25;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19681027T000000
+RDATE:19681027T000000
+TZNAME:BST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19711031T030000
+RDATE:19711031T030000
+TZNAME:S
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19720319T020000
+RRULE:FREQ=YEARLY;UNTIL=19800316T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19721029T030000
+RRULE:FREQ=YEARLY;UNTIL=19801026T020000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T010000
+RRULE:FREQ=YEARLY;UNTIL=19950326T010000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811025T020000
+RRULE:FREQ=YEARLY;UNTIL=19891029T010000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19901028T020000
+RRULE:FREQ=YEARLY;UNTIL=19951022T010000Z;BYDAY=4SU;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19960101T000000
+RDATE:19960101T000000
+TZNAME:GMT/BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19960331T010000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:GMT/BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:GMT/BST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/London.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/London.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/London.ics 2012-12-07 17:50:39 UTC (rev 10134)
@@ -0,0 +1,291 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+TZID:Europe/London
+X-LIC-LOCATION:Europe/London
+BEGIN:STANDARD
+DTSTART:18471201T000000
+RDATE:18471201T000000
+TZNAME:S
+TZOFFSETFROM:-000115
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19160521T020000
+RDATE:19160521T020000
+RDATE:19170408T020000
+RDATE:19180324T020000
+RDATE:19190330T020000
+RDATE:19200328T020000
+RDATE:19210403T020000
+RDATE:19220326T020000
+RDATE:19230422T020000
+RDATE:19240413T020000
+RDATE:19270410T020000
+RDATE:19300413T020000
+RDATE:19330409T020000
+RDATE:19340422T020000
+RDATE:19350414T020000
+RDATE:19380410T020000
+RDATE:19390416T020000
+RDATE:19400225T020000
+RDATE:19460414T020000
+RDATE:19470316T020000
+RDATE:19480314T020000
+RDATE:19490403T020000
+RDATE:19530419T020000
+RDATE:19540411T020000
+RDATE:19570414T020000
+RDATE:19600410T020000
+RDATE:19680218T020000
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19161001T030000
+RDATE:19161001T030000
+RDATE:19170917T030000
+RDATE:19180930T030000
+RDATE:19190929T030000
+RDATE:19201025T030000
+RDATE:19211003T030000
+RDATE:19221008T030000
+RDATE:19391119T030000
+RDATE:19471102T030000
+RDATE:19481031T030000
+RDATE:19491030T030000
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19230916T030000
+RRULE:FREQ=YEARLY;UNTIL=19240921T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=9
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19250419T020000
+RRULE:FREQ=YEARLY;UNTIL=19260418T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19251004T030000
+RRULE:FREQ=YEARLY;UNTIL=19381002T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19280422T020000
+RRULE:FREQ=YEARLY;UNTIL=19290421T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19310419T020000
+RRULE:FREQ=YEARLY;UNTIL=19320417T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19360419T020000
+RRULE:FREQ=YEARLY;UNTIL=19370418T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19410504T020000
+RDATE:19410504T020000
+RDATE:19450402T020000
+RDATE:19470413T020000
+TZNAME:BDST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19410810T030000
+RRULE:FREQ=YEARLY;UNTIL=19430815T010000Z;BYDAY=SU;BYMONTHDAY=9,10,11,12,13
+ ,14,15;BYMONTH=8
+TZNAME:BST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19420405T020000
+RRULE:FREQ=YEARLY;UNTIL=19440402T010000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=4
+TZNAME:BDST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0200
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19440917T030000
+RDATE:19440917T030000
+RDATE:19450715T030000
+RDATE:19470810T030000
+TZNAME:BST
+TZOFFSETFROM:+0200
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19451007T030000
+RRULE:FREQ=YEARLY;UNTIL=19461006T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19500416T020000
+RRULE:FREQ=YEARLY;UNTIL=19520420T020000Z;BYDAY=SU;BYMONTHDAY=14,15,16,17,1
+ 8,19,20;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19501022T030000
+RRULE:FREQ=YEARLY;UNTIL=19521026T020000Z;BYDAY=SU;BYMONTHDAY=21,22,23,24,2
+ 5,26,27;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19531004T030000
+RRULE:FREQ=YEARLY;UNTIL=19601002T020000Z;BYDAY=SU;BYMONTHDAY=2,3,4,5,6,7,8
+ ;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19550417T020000
+RRULE:FREQ=YEARLY;UNTIL=19560422T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19580420T020000
+RRULE:FREQ=YEARLY;UNTIL=19590419T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=4
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19610326T020000
+RRULE:FREQ=YEARLY;UNTIL=19630331T020000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19611029T030000
+RRULE:FREQ=YEARLY;UNTIL=19671029T020000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19640322T020000
+RRULE:FREQ=YEARLY;UNTIL=19670319T020000Z;BYDAY=SU;BYMONTHDAY=19,20,21,22,2
+ 3,24,25;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19681027T000000
+RDATE:19681027T000000
+TZNAME:BST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0100
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19711031T030000
+RDATE:19711031T030000
+TZNAME:S
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19720319T020000
+RRULE:FREQ=YEARLY;UNTIL=19800316T020000Z;BYDAY=SU;BYMONTHDAY=16,17,18,19,2
+ 0,21,22;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19721029T030000
+RRULE:FREQ=YEARLY;UNTIL=19801026T020000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19810329T010000
+RRULE:FREQ=YEARLY;UNTIL=19950326T010000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19811025T020000
+RRULE:FREQ=YEARLY;UNTIL=19891029T010000Z;BYDAY=SU;BYMONTHDAY=23,24,25,26,2
+ 7,28,29;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19901028T020000
+RRULE:FREQ=YEARLY;UNTIL=19951022T010000Z;BYDAY=4SU;BYMONTH=10
+TZNAME:GMT
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19960101T000000
+RDATE:19960101T000000
+TZNAME:GMT/BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19960331T010000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
+TZNAME:GMT/BST
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0100
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19961027T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:GMT/BST
+TZOFFSETFROM:+0100
+TZOFFSETTO:+0000
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/New_York.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/New_York.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/timezonestdservice/New_York.ics 2012-12-07 17:50:39 UTC (rev 10134)
@@ -0,0 +1,148 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//calendarserver.org//Zonal//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+TZID:America/New_York
+X-LIC-LOCATION:America/New_York
+BEGIN:STANDARD
+DTSTART:18831118T120358
+RDATE:18831118T120358
+TZNAME:EST
+TZOFFSETFROM:-045602
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19180331T020000
+RRULE:FREQ=YEARLY;UNTIL=19190330T070000Z;BYDAY=-1SU;BYMONTH=3
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19181027T020000
+RRULE:FREQ=YEARLY;UNTIL=19191026T060000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19200101T000000
+RDATE:19200101T000000
+RDATE:19420101T000000
+RDATE:19460101T000000
+RDATE:19670101T000000
+TZNAME:EST
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19200328T020000
+RDATE:19200328T020000
+RDATE:19740106T020000
+RDATE:19750223T020000
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19201031T020000
+RDATE:19201031T020000
+RDATE:19450930T020000
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19210424T020000
+RRULE:FREQ=YEARLY;UNTIL=19410427T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19210925T020000
+RRULE:FREQ=YEARLY;UNTIL=19410928T060000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19420209T020000
+RDATE:19420209T020000
+TZNAME:EWT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19450814T190000
+RDATE:19450814T190000
+TZNAME:EPT
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19460428T020000
+RRULE:FREQ=YEARLY;UNTIL=19660424T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19460929T020000
+RRULE:FREQ=YEARLY;UNTIL=19540926T060000Z;BYDAY=-1SU;BYMONTH=9
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:STANDARD
+DTSTART:19551030T020000
+RRULE:FREQ=YEARLY;UNTIL=19661030T060000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19670430T020000
+RRULE:FREQ=YEARLY;UNTIL=19730429T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:19671029T020000
+RRULE:FREQ=YEARLY;UNTIL=20061029T060000Z;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:19760425T020000
+RRULE:FREQ=YEARLY;UNTIL=19860427T070000Z;BYDAY=-1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:19870405T020000
+RRULE:FREQ=YEARLY;UNTIL=20060402T070000Z;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:DAYLIGHT
+DTSTART:20070311T020000
+RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20071104T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+END:VCALENDAR
Modified: CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml 2012-12-07 17:50:06 UTC (rev 10133)
+++ CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml 2012-12-07 17:50:39 UTC (rev 10134)
@@ -85,7 +85,8 @@
<feature>supported-component-sets-one</feature> <!-- Only single component calendars allowed to be created -->
<feature>timerange-low-limit</feature> <!-- Time-range only valid one year back -->
<feature>timerange-high-limit</feature> <!-- Time-range only valid 5 years ahead -->
- <feature>timezone-service</feature> <!-- Timezone service extension -->
+ <feature>timezone-service</feature> <!-- Timezone service extension for Wiki-->
+ <feature>timezone-std-service</feature> <!-- Timezone standard service extension -->
<feature>vavailability</feature> <!-- VAVAILABILITY on inbox -->
<feature>webcal</feature> <!-- Internet calendar subscription via GET on calendar collection -->
@@ -279,6 +280,12 @@
<value>$root:timezones</value>
</substitution>
+ <!-- timezone std service-->
+ <substitution>
+ <key>$timezonestdservice:</key>
+ <value>$root:stdtimezones</value>
+ </substitution>
+
<!-- relative path to calendars collection-->
<substitution>
<key>$addressbooks:</key>
Modified: CalDAVTester/trunk/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-template.xml 2012-12-07 17:50:06 UTC (rev 10133)
+++ CalDAVTester/trunk/scripts/server/serverinfo-template.xml 2012-12-07 17:50:39 UTC (rev 10134)
@@ -85,7 +85,8 @@
<feature>supported-component-sets-one</feature> <!-- Only single component calendars allowed to be created -->
<feature>timerange-low-limit</feature> <!-- Time-range only valid one year back -->
<feature>timerange-high-limit</feature> <!-- Time-range only valid 5 years ahead -->
- <feature>timezone-service</feature> <!-- Timezone service extension -->
+ <feature>timezone-service</feature> <!-- Timezone service extension for Wiki-->
+ <feature>timezone-std-service</feature> <!-- Timezone standard service extension -->
<feature>vavailability</feature> <!-- VAVAILABILITY on inbox -->
<feature>webcal</feature> <!-- Internet calendar subscription via GET on calendar collection -->
@@ -279,6 +280,12 @@
<value>$root:timezones</value>
</substitution>
+ <!-- timezone std service-->
+ <substitution>
+ <key>$timezonestdservice:</key>
+ <value>$root:stdtimezones</value>
+ </substitution>
+
<!-- relative path to calendars collection-->
<substitution>
<key>$addressbooks:</key>
Modified: CalDAVTester/trunk/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo.xml 2012-12-07 17:50:06 UTC (rev 10133)
+++ CalDAVTester/trunk/scripts/server/serverinfo.xml 2012-12-07 17:50:39 UTC (rev 10134)
@@ -85,7 +85,8 @@
<feature>supported-component-sets-one</feature> <!-- Only single component calendars allowed to be created -->
<feature>timerange-low-limit</feature> <!-- Time-range only valid one year back -->
<feature>timerange-high-limit</feature> <!-- Time-range only valid 5 years ahead -->
- <feature>timezone-service</feature> <!-- Timezone service extension -->
+ <feature>timezone-service</feature> <!-- Timezone service extension for Wiki-->
+ <feature>timezone-std-service</feature> <!-- Timezone standard service extension -->
<feature>vavailability</feature> <!-- VAVAILABILITY on inbox -->
<feature>webcal</feature> <!-- Internet calendar subscription via GET on calendar collection -->
@@ -279,6 +280,12 @@
<value>$root:timezones</value>
</substitution>
+ <!-- timezone std service-->
+ <substitution>
+ <key>$timezonestdservice:</key>
+ <value>$root:stdtimezones</value>
+ </substitution>
+
<!-- relative path to calendars collection-->
<substitution>
<key>$addressbooks:</key>
Added: CalDAVTester/trunk/scripts/tests/CalDAV/timezonestdservice.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/timezonestdservice.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/timezonestdservice.xml 2012-12-07 17:50:39 UTC (rev 10134)
@@ -0,0 +1,975 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2012 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+ <description>Test standard timezone service</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>timezone-std-service</feature>
+ </require-feature>
+
+ <start/>
+
+ <test-suite name='Non-query GET/POST'>
+ <test name='1'>
+ <description>GET on well-known resource</description>
+ <request>
+ <method>GET</method>
+ <ruri>/.well-known/timezone</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>301</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Non-query GET/POST'>
+ <test name='1'>
+ <description>GET on resource</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND on resource</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$timezonestdservice:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/propfinds/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>POST on resource</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>PUT on resource - fails</description>
+ <request>
+ <method>PUT</method>
+ <ruri>$timezonestdservice:</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/recurrenceput/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>DELETE on resource - fails</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$timezonestdservice:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Query bogus parameters'>
+ <test name='1'>
+ <description>GET on resource - invalid parameter</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?query=true</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-action</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>POST on resource - invalid parameter</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?query=true</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-action</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>GET on resource - invalid action</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=true</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-action</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>POST on resource - invalid action</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=true</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-action</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>GET on resource - multiple actions</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=list&action=list</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-action</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>POST on resource - multiple methods</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=list&action=list</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-action</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Query method=list'>
+ <test name='1'>
+ <description>GET on resource</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=list</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>/dtstamp</value>
+ <value>/timezones/./tzid~$America/New_York</value>
+ <value>/timezones/./tzid~$America/Phoenix</value>
+ <value>/timezones/./aliases/.~$GB</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>POST on resource</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=list</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>/dtstamp</value>
+ <value>/timezones/./tzid~$America/New_York</value>
+ <value>/timezones/./tzid~$America/Phoenix</value>
+ <value>/timezones/./aliases/.~$GB</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Invalid query action=get'>
+ <test name='1'>
+ <description>GET on resource - no tzid</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=get</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>POST on resource - no tzid</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=get</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>GET on resource - multiple tzid</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=get&tzid=America/New_York&tzid=America/Los_Angeles</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>POST on resource - multiple tzid</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=get&tzid=America/New_York&tzid=America/Los_Angeles</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>GET on resource - invalid tzid</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=get&tzid=America/Pittsburgh</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$missing-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>POST on resource - invalid tzid</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=get&tzid=America/Pittsburgh</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$missing-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Query action=get'>
+ <test name='1'>
+ <description>GET on resource</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=get&tzid=America/New_York</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/timezonestdservice/New_York.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>POST on resource</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=get&tzid=America/New_York</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/timezonestdservice/New_York.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>GET on resource</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=get&tzid=Europe/London</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/timezonestdservice/London.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>POST on resource</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=get&tzid=Europe/London</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/timezonestdservice/London.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>GET on resource</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=get&tzid=GB</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/timezonestdservice/GB.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>POST on resource</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=get&tzid=GB</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/timezonestdservice/GB.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Invalid query action=expand'>
+ <test name='1'>
+ <description>GET on resource - no tzid</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>POST on resource - no tzid</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>GET on resource - multiple tzid</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&tzid=America/Los_Angeles</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>POST on resource - multiple tzid</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&tzid=America/Los_Angeles</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>GET on resource - invalid tzid</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/Pittsburgh</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$missing-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>POST on resource - invalid tzid</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/Pittsburgh</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$missing-tzid</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>GET on resource - too many start</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&start=20090101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-start</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>POST on resource - too many start</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&start=20090101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-start</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>GET on resource - invalid start</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=2007</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-start</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>POST on resource - invalid start</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=2007</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-start</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>GET on resource - too many end</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&end=20090101&end=20090101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-end</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>POST on resource - too many end</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&end=20090101&end=20090101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-end</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>GET on resource - invalid end</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&end=2009</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-end</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='14'>
+ <description>POST on resource - invalid end</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&end=2009</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-end</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='15'>
+ <description>GET on resource - start > end</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20090101&end=20080101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-end</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>POST on resource - start > end</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20090101&end=20080101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-end</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17'>
+ <description>GET on resource - start == end</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&end=20080101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-end</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='18'>
+ <description>POST on resource - start == end</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&end=20080101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/error~$invalid-end</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="Expand">
+ <test name='1'>
+ <description>GET on resource - simple range</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&end=20090101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>/dtstamp</value>
+ <value>/observances/./onset~$2008-01-01T00:00:00</value>
+ <value>/observances/./onset~$2008-03-09T02:00:00</value>
+ <value>/observances/./onset~$2008-11-02T02:00:00</value>
+ <value>/observances/./utc-offset-from~$-18000</value>
+ <value>/observances/./utc-offset-to~$-18000</value>
+ <value>/observances/./utc-offset-from~$-14400</value>
+ <value>/observances/./utc-offset-to~$-14400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>POST on resource - simple range</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20080101&end=20090101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>/dtstamp</value>
+ <value>/observances/./onset~$2008-01-01T00:00:00</value>
+ <value>/observances/./onset~$2008-03-09T02:00:00</value>
+ <value>/observances/./onset~$2008-11-02T02:00:00</value>
+ <value>/observances/./utc-offset-from~$-18000</value>
+ <value>/observances/./utc-offset-to~$-18000</value>
+ <value>/observances/./utc-offset-from~$-14400</value>
+ <value>/observances/./utc-offset-to~$-14400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>GET on resource - complex range</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20060101&end=20080101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>/dtstamp</value>
+ <value>/observances/./onset~$2006-01-01T00:00:00</value>
+ <value>/observances/./onset~$2006-04-02T02:00:00</value>
+ <value>/observances/./onset~$2006-10-29T02:00:00</value>
+ <value>/observances/./onset~$2007-03-11T02:00:00</value>
+ <value>/observances/./onset~$2007-11-04T02:00:00</value>
+ <value>/observances/./utc-offset-from~$-18000</value>
+ <value>/observances/./utc-offset-to~$-18000</value>
+ <value>/observances/./utc-offset-from~$-14400</value>
+ <value>/observances/./utc-offset-to~$-14400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>POST on resource - complex range</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/New_York&start=20060101&end=20080101</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>/dtstamp</value>
+ <value>/observances/./onset~$2006-01-01T00:00:00</value>
+ <value>/observances/./onset~$2006-04-02T02:00:00</value>
+ <value>/observances/./onset~$2006-10-29T02:00:00</value>
+ <value>/observances/./onset~$2007-03-11T02:00:00</value>
+ <value>/observances/./onset~$2007-11-04T02:00:00</value>
+ <value>/observances/./utc-offset-from~$-18000</value>
+ <value>/observances/./utc-offset-to~$-18000</value>
+ <value>/observances/./utc-offset-from~$-14400</value>
+ <value>/observances/./utc-offset-to~$-14400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>GET on resource - no DST</description>
+ <request>
+ <method>GET</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/Phoenix&start=20060101&end=20090101</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>2006-01-01T00:00:00</value>
+ <value>-25200</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>2007</value>
+ <value>2008</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>POST on resource - start == end</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:?action=expand&tzid=America/Phoenix&start=20060101&end=20090101</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>2006-01-01T00:00:00</value>
+ <value>-25200</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>2007</value>
+ <value>2008</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>POST on resource trailing slash - simple range</description>
+ <request>
+ <method>POST</method>
+ <ruri>$timezonestdservice:/?action=expand&tzid=America/New_York&start=20080101&end=20090101</ruri>
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>/dtstamp</value>
+ <value>/observances/./onset~$2008-01-01T00:00:00</value>
+ <value>/observances/./onset~$2008-03-09T02:00:00</value>
+ <value>/observances/./onset~$2008-11-02T02:00:00</value>
+ <value>/observances/./utc-offset-from~$-18000</value>
+ <value>/observances/./utc-offset-to~$-18000</value>
+ <value>/observances/./utc-offset-from~$-14400</value>
+ <value>/observances/./utc-offset-to~$-14400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20121207/b75da47a/attachment-0001.html>
More information about the calendarserver-changes
mailing list