Revision: 9263 http://trac.macosforge.org/projects/calendarserver/changeset/9263 Author: cdaboo@apple.com Date: 2012-05-22 12:19:49 -0700 (Tue, 22 May 2012) Log Message: ----------- Tests for Prefer header support. Modified Paths: -------------- CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml CalDAVTester/trunk/scripts/server/serverinfo-template.xml CalDAVTester/trunk/scripts/server/serverinfo.xml CalDAVTester/trunk/scripts/server/sslserverinfo.xml CalDAVTester/trunk/scripts/tests/CalDAV/add-member.xml CalDAVTester/trunk/scripts/tests/CardDAV/add-member.xml CalDAVTester/trunk/verifiers/addressDataMatch.py CalDAVTester/trunk/verifiers/calendarDataMatch.py CalDAVTester/trunk/verifiers/dataString.py Added Paths: ----------- CalDAVTester/trunk/Resource/CalDAV/prefer/ CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/ CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/1.xml CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/2.xml CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/3.xml CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/4.xml CalDAVTester/trunk/Resource/CalDAV/prefer/return/ CalDAVTester/trunk/Resource/CalDAV/prefer/return/1.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/10.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/11.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/12.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/13.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/14.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/2.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/3.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/4.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/5.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/6.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/7.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/8.ics CalDAVTester/trunk/Resource/CalDAV/prefer/return/9.ics CalDAVTester/trunk/scripts/tests/CalDAV/prefer.xml Added: CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/1.xml =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/1.xml (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/1.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" ?> +<D:propfind xmlns:D="DAV:"> +<D:prop> +<D:resourcetype/> +<D:bogus/> +</D:prop> +</D:propfind> Added: CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/2.xml =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/2.xml (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/2.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" ?> +<C:calendar-multiget xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"> +<D:prop> +<D:resourcetype/> +<D:bogus/> +</D:prop> +<D:href>$calendarpath1:/1.ics</D:href> +</C:calendar-multiget> Added: CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/3.xml =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/3.xml (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/3.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> +<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"> +<D:prop> +<D:resourcetype/> +<D:bogus/> +</D:prop> +<C:filter> +<C:comp-filter name="VCALENDAR"> +<C:comp-filter name="VEVENT"> +<C:time-range start="20060101T000000Z" end="20060102T000000Z"/> +</C:comp-filter> +</C:comp-filter> +</C:filter> +</C:calendar-query> Added: CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/4.xml =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/4.xml (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/minimal/4.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" ?> +<D:propertyupdate xmlns:D="DAV:"> +<D:set> +<D:prop> +<D:details>My Name</D:details> +<D:details2>My Name 2</D:details2> +</D:prop> +</D:set> +</D:propertyupdate> Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/1.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/1.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/1.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,32 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060101T100000 +DURATION:PT1H +SUMMARY:event 1 +UID:54E181BC7CCC373042B28842@ninevah.local +CATEGORIES:cool +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/10.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/10.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/10.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060108T120000 +DURATION:PT1H +SUMMARY:event 8 +UID:8@ninevah.local +CATEGORIES:cool +ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1: +ATTENDEE;CN=$username1:;PARTSTAT=DECLINED;EMAIL=$email1::$cuaddrurn1: +ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2::$cuaddrurn2: +TRANSP:TRANSPARENT +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/11.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/11.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/11.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,37 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060108T120000 +DURATION:PT1H +SUMMARY:event 8 +UID:8@ninevah.local +CATEGORIES:cool +ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1: +ATTENDEE;CN=$username1:;PARTSTAT=DECLINED;EMAIL=$email1::$cuaddrurn1: +ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2: +TRANSP:TRANSPARENT +SEQUENCE:1 +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/12.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/12.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/12.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,32 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060112T100000 +DURATION:PT1H +SUMMARY:event 12 +UID:12@ninevah.local +CATEGORIES:cool +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/13.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/13.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/13.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,32 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060113T100000 +DURATION:PT1H +SUMMARY:event 13 +UID:13@ninevah.local +CATEGORIES:cool +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/14.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/14.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/14.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,32 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060114T100000 +DURATION:PT1H +SUMMARY:event 14 +UID:14@ninevah.local +CATEGORIES:cool +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/2.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/2.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/2.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,32 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060102T100000 +DURATION:PT1H +SUMMARY:event 2 +UID:2@ninevah.local +CATEGORIES:cool +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/3.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/3.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/3.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,32 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060103T100000 +DURATION:PT1H +SUMMARY:event 3 +UID:3@ninevah.local +CATEGORIES:cool +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/4.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/4.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/4.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,32 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060104T100000 +DURATION:PT1H +SUMMARY:event 4 +UID:4@ninevah.local +CATEGORIES:cool +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/5.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/5.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/5.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,32 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060105T100000 +DURATION:PT1H +SUMMARY:event 4.1 +UID:4@ninevah.local +CATEGORIES:cool +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/6.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/6.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/6.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,35 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060106T100000 +DURATION:PT1H +SUMMARY:event 6 +UID:6@ninevah.local +CATEGORIES:cool +ORGANIZER;CN=$username1::$cuaddr1: +ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1: +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:$cuaddr2: +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/7.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/7.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/7.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,35 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060107T100000 +DURATION:PT1H +SUMMARY:event 7 +UID:7@ninevah.local +CATEGORIES:cool +ORGANIZER;CN=$username1::$cuaddr1: +ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1: +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:$cuaddr2: +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/8.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/8.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/8.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,35 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060108T100000 +DURATION:PT1H +SUMMARY:event 8 +UID:8@ninevah.local +CATEGORIES:cool +ORGANIZER;CN=$username1::$cuaddr1: +ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1: +ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:$cuaddr2: +END:VEVENT +END:VCALENDAR Added: CalDAVTester/trunk/Resource/CalDAV/prefer/return/9.ics =================================================================== --- CalDAVTester/trunk/Resource/CalDAV/prefer/return/9.ics (rev 0) +++ CalDAVTester/trunk/Resource/CalDAV/prefer/return/9.ics 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,35 @@ +BEGIN:VCALENDAR +CALSCALE:GREGORIAN +PRODID:-//Example Inc.//Example Calendar//EN +VERSION:2.0 +BEGIN:VTIMEZONE +LAST-MODIFIED:20040110T032845Z +TZID:US/Eastern +BEGIN:DAYLIGHT +DTSTART:20000404T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZNAME:EDT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +END:DAYLIGHT +BEGIN:STANDARD +DTSTART:20001026T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZNAME:EST +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:20051222T205953Z +CREATED:20060101T150000Z +DTSTART;TZID=US/Eastern:20060108T100000 +DURATION:PT1H +SUMMARY:event 8 +UID:8@ninevah.local +CATEGORIES:cool +ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1: +ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1: +ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2: +END:VEVENT +END:VCALENDAR Modified: CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml =================================================================== --- CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -3,7 +3,7 @@ <!DOCTYPE serverinfo SYSTEM "serverinfo.dtd"> <!-- - Copyright (c) 2006-2011 Apple Inc. All rights reserved. + 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. @@ -46,6 +46,10 @@ <feature>expand-property</feature> <!-- Expand property REPORT --> <feature>only-proxy-groups</feature> <!-- Group-membership only includes delegated-to groups --> <feature>limits</feature> <!-- max-collections and max-resources limits --> + <feature>prefer</feature> <!-- Prefer header overall support --> + <feature>prefer-minimal</feature> <!-- Prefer header return-minimal --> + <feature>prefer-representation</feature> <!-- Prefer header return-representation --> + <feature>prefer-noroot</feature> <!-- Prefer header depth-noroot --> <feature>quota</feature> <!-- WebDAV QUOTA --> <!-- <feature>quota-on-resources</feature> --> <!-- WebDAV QUOTA on calendar and address book object resources --> <feature>resource-id</feature> <!-- WebDAV BIND DAV:resource-id property --> @@ -306,6 +310,12 @@ <value>global-addressbook</value> </substitution> + <!-- POST add-member URI suffix --> + <substitution> + <key>$add-member:</key> + <value>;add-member</value> + </substitution> + <!-- user id for admin user --> <substitution> <key>$useradmin:</key> @@ -423,42 +433,42 @@ <!-- relative path to user calendar--> <substitution> <key>$calendarpath%d:</key> - <value>$calendars_uids:$userguid%d:/$calendar:</value> + <value>$calendarhome%d:/$calendar:</value> </substitution> <!-- relative path to user alternate calendar--> <substitution> <key>$calendarpathalt%d:</key> - <value>$calendars_users:$userid%d:/$calendar:</value> + <value>$calendarhomealt%d:/$calendar:</value> </substitution> <!-- relative path to user tasks calendar--> <substitution> <key>$taskspath%d:</key> - <value>$calendars_uids:$userguid%d:/$tasks:</value> + <value>$calendarhome%d:/$tasks:</value> </substitution> <!-- relative path to user inbox--> <substitution> <key>$inboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$inbox:</value> + <value>$calendarhome%d:/$inbox:</value> </substitution> <!-- relative path to user outbox--> <substitution> <key>$outboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$outbox:</value> + <value>$calendarhome%d:/$outbox:</value> </substitution> <!-- relative path to user dropbox--> <substitution> <key>$dropboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$dropbox:</value> + <value>$calendarhome%d:/$dropbox:</value> </substitution> <!-- relative path to user notification--> <substitution> <key>$notificationpath%d:</key> - <value>$calendars_uids:$userguid%d:/$notification:</value> + <value>$calendarhome%d:/$notification:</value> </substitution> <!-- relative path to user freebusy--> <substitution> <key>$freebusypath%d:</key> - <value>$calendars_uids:$userguid%d:/$freebusy:</value> + <value>$calendarhome%d:/$freebusy:</value> </substitution> <substitution> <key>$email%d:</key> Modified: CalDAVTester/trunk/scripts/server/serverinfo-template.xml =================================================================== --- CalDAVTester/trunk/scripts/server/serverinfo-template.xml 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/scripts/server/serverinfo-template.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -3,7 +3,7 @@ <!DOCTYPE serverinfo SYSTEM "serverinfo.dtd"> <!-- - Copyright (c) 2006-2011 Apple Inc. All rights reserved. + 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. @@ -46,6 +46,10 @@ <feature>expand-property</feature> <!-- Expand property REPORT --> <feature>only-proxy-groups</feature> <!-- Group-membership only includes delegated-to groups --> <feature>limits</feature> <!-- max-collections and max-resources limits --> + <feature>prefer</feature> <!-- Prefer header overall support --> + <feature>prefer-minimal</feature> <!-- Prefer header return-minimal --> + <feature>prefer-representation</feature> <!-- Prefer header return-representation --> + <feature>prefer-noroot</feature> <!-- Prefer header depth-noroot --> <feature>quota</feature> <!-- WebDAV QUOTA --> <!-- <feature>quota-on-resources</feature> --> <!-- WebDAV QUOTA on calendar and address book object resources --> <feature>resource-id</feature> <!-- WebDAV BIND DAV:resource-id property --> @@ -306,6 +310,12 @@ <value>global-addressbook</value> </substitution> + <!-- POST add-member URI suffix --> + <substitution> + <key>$add-member:</key> + <value>;add-member</value> + </substitution> + <!-- user id for admin user --> <substitution> <key>$useradmin:</key> @@ -432,42 +442,42 @@ <!-- relative path to user calendar--> <substitution> <key>$calendarpath%%d:</key> - <value>$calendars_uids:$userguid%%d:/$calendar:</value> + <value>$calendarhome%%d:/$calendar:</value> </substitution> <!-- relative path to user alternate calendar home--> <substitution> <key>$calendarpathalt%%d:</key> - <value>$calendars_users:$userid%%d:/$calendar:</value> + <value>$calendarhomealt%%d:/$calendar:</value> </substitution> <!-- relative path to user tasks calendar--> <substitution> <key>$taskspath%%d:</key> - <value>$calendars_uids:$userguid%%d:/$tasks:</value> + <value>$calendarhome%%d:/$tasks:</value> </substitution> <!-- relative path to user inbox--> <substitution> <key>$inboxpath%%d:</key> - <value>$calendars_uids:$userguid%%d:/$inbox:</value> + <value>$calendarhome%%d:/$inbox:</value> </substitution> <!-- relative path to user outbox--> <substitution> <key>$outboxpath%%d:</key> - <value>$calendars_uids:$userguid%%d:/$outbox:</value> + <value>$calendarhome%%d:/$outbox:</value> </substitution> <!-- relative path to user dropbox--> <substitution> <key>$dropboxpath%%d:</key> - <value>$calendars_uids:$userguid%%d:/$dropbox:</value> + <value>$calendarhome%%d:/$dropbox:</value> </substitution> <!-- relative path to user notification--> <substitution> <key>$notificationpath%%d:</key> - <value>$calendars_uids:$userguid%%d:/$notification:</value> + <value>$calendarhome%%d:/$notification:</value> </substitution> <!-- relative path to user freebusy--> <substitution> <key>$freebusypath%%d:</key> - <value>$calendars_uids:$userguid%%d:/$freebusy:</value> + <value>$calendarhome%%d:/$freebusy:</value> </substitution> <substitution> <key>$email%%d:</key> Modified: CalDAVTester/trunk/scripts/server/serverinfo.xml =================================================================== --- CalDAVTester/trunk/scripts/server/serverinfo.xml 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/scripts/server/serverinfo.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -3,7 +3,7 @@ <!DOCTYPE serverinfo SYSTEM "serverinfo.dtd"> <!-- - Copyright (c) 2006-2011 Apple Inc. All rights reserved. + 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. @@ -46,6 +46,10 @@ <feature>expand-property</feature> <!-- Expand property REPORT --> <feature>only-proxy-groups</feature> <!-- Group-membership only includes delegated-to groups --> <feature>limits</feature> <!-- max-collections and max-resources limits --> + <feature>prefer</feature> <!-- Prefer header overall support --> + <feature>prefer-minimal</feature> <!-- Prefer header return-minimal --> + <feature>prefer-representation</feature> <!-- Prefer header return-representation --> + <feature>prefer-noroot</feature> <!-- Prefer header depth-noroot --> <feature>quota</feature> <!-- WebDAV QUOTA --> <!-- <feature>quota-on-resources</feature> --> <!-- WebDAV QUOTA on calendar and address book object resources --> <feature>resource-id</feature> <!-- WebDAV BIND DAV:resource-id property --> @@ -306,6 +310,12 @@ <value>global-addressbook</value> </substitution> + <!-- POST add-member URI suffix --> + <substitution> + <key>$add-member:</key> + <value>;add-member</value> + </substitution> + <!-- user id for admin user --> <substitution> <key>$useradmin:</key> @@ -433,42 +443,42 @@ <!-- relative path to user calendar--> <substitution> <key>$calendarpath%d:</key> - <value>$calendars_uids:$userguid%d:/$calendar:</value> + <value>$calendarhome%d:/$calendar:</value> </substitution> <!-- relative path to user alternate calendar--> <substitution> <key>$calendarpathalt%d:</key> - <value>$calendars_users:$userid%d:/$calendar:</value> + <value>$calendarhomealt%d:/$calendar:</value> </substitution> <!-- relative path to user tasks calendar--> <substitution> <key>$taskspath%d:</key> - <value>$calendars_uids:$userguid%d:/$tasks:</value> + <value>$calendarhome%d:/$tasks:</value> </substitution> <!-- relative path to user inbox--> <substitution> <key>$inboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$inbox:</value> + <value>$calendarhome%d:/$inbox:</value> </substitution> <!-- relative path to user outbox--> <substitution> <key>$outboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$outbox:</value> + <value>$calendarhome%d:/$outbox:</value> </substitution> <!-- relative path to user dropbox--> <substitution> <key>$dropboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$dropbox:</value> + <value>$calendarhome%d:/$dropbox:</value> </substitution> <!-- relative path to user notification--> <substitution> <key>$notificationpath%d:</key> - <value>$calendars_uids:$userguid%d:/$notification:</value> + <value>$calendarhome%d:/$notification:</value> </substitution> <!-- relative path to user freebusy--> <substitution> <key>$freebusypath%d:</key> - <value>$calendars_uids:$userguid%d:/$freebusy:</value> + <value>$calendarhome%d:/$freebusy:</value> </substitution> <substitution> <key>$email%d:</key> Modified: CalDAVTester/trunk/scripts/server/sslserverinfo.xml =================================================================== --- CalDAVTester/trunk/scripts/server/sslserverinfo.xml 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/scripts/server/sslserverinfo.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -3,7 +3,7 @@ <!DOCTYPE serverinfo SYSTEM "serverinfo.dtd"> <!-- - Copyright (c) 2006-2011 Apple Inc. All rights reserved. + 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. @@ -47,6 +47,10 @@ <feature>expand-property</feature> <!-- Expand property REPORT --> <feature>only-proxy-groups</feature> <!-- Group-membership only includes delegated-to groups --> <feature>limits</feature> <!-- max-collections and max-resources limits --> + <feature>prefer</feature> <!-- Prefer header overall support --> + <feature>prefer-minimal</feature> <!-- Prefer header return-minimal --> + <feature>prefer-representation</feature> <!-- Prefer header return-representation --> + <feature>prefer-noroot</feature> <!-- Prefer header depth-noroot --> <feature>quota</feature> <!-- WebDAV QUOTA --> <!-- <feature>quota-on-resources</feature> --> <!-- WebDAV QUOTA on calendar and address book object resources --> <feature>resource-id</feature> <!-- WebDAV BIND DAV:resource-id property --> @@ -307,6 +311,12 @@ <value>global-addressbook</value> </substitution> + <!-- POST add-member URI suffix --> + <substitution> + <key>$add-member:</key> + <value>;add-member</value> + </substitution> + <!-- user id for admin user --> <substitution> <key>$useradmin:</key> @@ -414,7 +424,7 @@ <!-- relative path to user calendar home--> <substitution> <key>$calendarhome%d:</key> - <value>$calendars_uids:$userguid%d:</value> + <value>$calendarhome%d:</value> </substitution> <!-- relative path to user alternate calendar home--> <substitution> @@ -424,42 +434,42 @@ <!-- relative path to user calendar--> <substitution> <key>$calendarpath%d:</key> - <value>$calendars_uids:$userguid%d:/$calendar:</value> + <value>$calendarhome%d:/$calendar:</value> </substitution> <!-- relative path to user alternate calendar--> <substitution> <key>$calendarpathalt%d:</key> - <value>$calendars_users:$userid%d:/$calendar:</value> + <value>$calendarhomealt%d:/$calendar:</value> </substitution> <!-- relative path to user tasks calendar--> <substitution> <key>$taskspath%d:</key> - <value>$calendars_uids:$userguid%d:/$tasks:</value> + <value>$calendarhome%d:/$tasks:</value> </substitution> <!-- relative path to user inbox--> <substitution> <key>$inboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$inbox:</value> + <value>$calendarhome%d:/$inbox:</value> </substitution> <!-- relative path to user outbox--> <substitution> <key>$outboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$outbox:</value> + <value>$calendarhome%d:/$outbox:</value> </substitution> <!-- relative path to user dropbox--> <substitution> <key>$dropboxpath%d:</key> - <value>$calendars_uids:$userguid%d:/$dropbox:</value> + <value>$calendarhome%d:/$dropbox:</value> </substitution> <!-- relative path to user notification--> <substitution> <key>$notificationpath%d:</key> - <value>$calendars_uids:$userguid%d:/$notification:</value> + <value>$calendarhome%d:/$notification:</value> </substitution> <!-- relative path to user freebusy--> <substitution> <key>$freebusypath%d:</key> - <value>$calendars_uids:$userguid%d:/$freebusy:</value> + <value>$calendarhome%d:/$freebusy:</value> </substitution> <substitution> <key>$email%d:</key> Modified: CalDAVTester/trunk/scripts/tests/CalDAV/add-member.xml =================================================================== --- CalDAVTester/trunk/scripts/tests/CalDAV/add-member.xml 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/scripts/tests/CalDAV/add-member.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -3,7 +3,7 @@ <!DOCTYPE caldavtest SYSTEM "caldavtest.dtd"> <!-- - Copyright (c) 2006-2010 Apple Inc. All rights reserved. + 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. @@ -46,7 +46,7 @@ <callback>propfindItems</callback> <arg> <name>okprops</name> - <value><![CDATA[{DAV:}add-member$<href xmlns="DAV:">$calendarpath1:/;add-member</href>]]></value> + <value><![CDATA[{DAV:}add-member$<href xmlns="DAV:">$calendarpath1:/$add-member:</href>]]></value> </arg> </verify> </request> @@ -80,7 +80,7 @@ <description>POST non-recurring timed event</description> <request print-response='no'> <method>POST</method> - <ruri>$calendarpath1:/;add-member</ruri> + <ruri>$calendarpath1:/$add-member:</ruri> <data> <content-type>text/calendar; charset=utf-8</content-type> <filepath>Resource/CalDAV/recurrenceput/1.txt</filepath> Added: CalDAVTester/trunk/scripts/tests/CalDAV/prefer.xml =================================================================== --- CalDAVTester/trunk/scripts/tests/CalDAV/prefer.xml (rev 0) +++ CalDAVTester/trunk/scripts/tests/CalDAV/prefer.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -0,0 +1,882 @@ +<?xml version="1.0" standalone="no"?> + +<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd"> + +<!-- + Copyright (c) 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> + <require-feature> + <feature>caldav</feature> + <feature>prefer</feature> + </require-feature> + + <start> + <request user="$userid1:" pswd="$pswd1:"> + <method>DELETEALL</method> + <ruri>$calendarpath1:/</ruri> + <ruri>$inboxpath1:/</ruri> + </request> + <request user="$userid2:" pswd="$pswd2:"> + <method>DELETEALL</method> + <ruri>$calendarpath2:/</ruri> + <ruri>$inboxpath2:/</ruri> + </request> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/1.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/reports/put/1.txt</filepath> + </data> + </request> + </start> + + <test-suite name='minimal: propfind'> + <require-feature> + <feature>prefer-minimal</feature> + </require-feature> + <test name='1'> + <description>PROPFIND depth=0 no Prefer</description> + <request> + <method>PROPFIND</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/1.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + <arg> + <name>badprops</name> + <value>{DAV:}bogus</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>PROPFIND depth=0 with Prefer=x-foo</description> + <request> + <method>PROPFIND</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <header> + <name>Prefer</name> + <value>x-foo</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/1.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + <arg> + <name>badprops</name> + <value>{DAV:}bogus</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>PROPFIND depth=0 with Prefer:return-minimal</description> + <request> + <method>PROPFIND</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <header> + <name>Prefer</name> + <value>return-minimal</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/1.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='minimal: multiget'> + <require-feature> + <feature>prefer-minimal</feature> + </require-feature> + <test name='1'> + <description>REPORT no prefer</description> + <request> + <method>REPORT</method> + <ruri>$calendarpath1:/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/2.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + <arg> + <name>badprops</name> + <value>{DAV:}bogus</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>REPORT with Prefer=x-foo</description> + <request> + <method>REPORT</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Prefer</name> + <value>x-foo</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/2.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + <arg> + <name>badprops</name> + <value>{DAV:}bogus</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>REPORT with Prefer=return-minimal</description> + <request> + <method>REPORT</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Prefer</name> + <value>return-minimal</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/2.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='minimal: query'> + <require-feature> + <feature>prefer-minimal</feature> + </require-feature> + <test name='1'> + <description>REPORT no prefer</description> + <request> + <method>REPORT</method> + <ruri>$calendarpath1:/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/3.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + <arg> + <name>badprops</name> + <value>{DAV:}bogus</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>REPORT with Prefer=x-foo</description> + <request> + <method>REPORT</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Prefer</name> + <value>x-foo</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/3.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + <arg> + <name>badprops</name> + <value>{DAV:}bogus</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>REPORT with Prefer=return-minimal</description> + <request> + <method>REPORT</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Prefer</name> + <value>return-minimal</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/3.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}resourcetype</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='minimal: proppatch'> + <require-feature> + <feature>prefer-minimal</feature> + </require-feature> + <test name='1'> + <description>PROPPATCH no prefer</description> + <request print-response='no'> + <method>PROPPATCH</method> + <ruri>$calendarpath1:/</ruri> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/4.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}details</value> + <value>{DAV:}details2</value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>PROPPATCH with Prefer=x-foo</description> + <request print-response='no'> + <method>PROPPATCH</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Prefer</name> + <value>x-foo</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/4.xml</filepath> + </data> + <verify> + <callback>propfindItems</callback> + <arg> + <name>okprops</name> + <value>{DAV:}details</value> + <value>{DAV:}details2</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>PROPPATCH with Prefer:return-minimal</description> + <request print-response='no'> + <method>PROPPATCH</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Prefer</name> + <value>return-minimal</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/4.xml</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>200</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='noroot: propfind'> + <require-feature> + <feature>prefer-noroot</feature> + </require-feature> + <test name='1'> + <description>PROPFIND depth=0 with Prefer</description> + <request> + <method>PROPFIND</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Depth</name> + <value>0</value> + </header> + <header> + <name>Prefer</name> + <value>depth-noroot</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/1.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value></value> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>PROPFIND depth=1 with Prefer=x-foo</description> + <request> + <method>PROPFIND</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <header> + <name>Prefer</name> + <value>x-foo</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/1.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value></value> + <value>1.ics</value> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>PROPFIND depth=1 with Prefer:depth-noroot</description> + <request> + <method>PROPFIND</method> + <ruri>$calendarpath1:/</ruri> + <header> + <name>Depth</name> + <value>1</value> + </header> + <header> + <name>Prefer</name> + <value>depth-noroot</value> + </header> + <data> + <content-type>text/xml; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/minimal/1.xml</filepath> + </data> + <verify> + <callback>multistatusItems</callback> + <arg> + <name>okhrefs</name> + <value>1.ics</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='representation no schedule PUT'> + <require-feature> + <feature>prefer-representation</feature> + </require-feature> + <test name='1'> + <description>PUT without Prefer</description> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/2.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/2.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>empty</name> + <value/> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>PUT with Prefer=x-foo</description> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/3.ics</ruri> + <header> + <name>Prefer</name> + <value>x-foo</value> + </header> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/3.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>empty</name> + <value/> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>PUT with Prefer=return-representation</description> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/4.ics</ruri> + <header> + <name>Prefer</name> + <value>return-representation</value> + </header> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/4.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>calendarDataMatch</callback> + <arg> + <name>filepath</name> + <value>Resource/CalDAV/prefer/return/4.ics</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>content-location</name> + <value>$calendarpath1:/4.ics</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>PUT with Prefer=return-representation</description> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/4.ics</ruri> + <header> + <name>Prefer</name> + <value>return-representation</value> + </header> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/5.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>200</value> + </arg> + </verify> + <verify> + <callback>calendarDataMatch</callback> + <arg> + <name>filepath</name> + <value>Resource/CalDAV/prefer/return/5.ics</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>content-location</name> + <value>$calendarpath1:/4.ics</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='representation schedule PUT'> + <require-feature> + <feature>prefer-representation</feature> + </require-feature> + <test name='1'> + <description>PUT without Prefer</description> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/5.ics</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/6.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>empty</name> + <value/> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>PUT with Prefer=x-foo</description> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/6.ics</ruri> + <header> + <name>Prefer</name> + <value>x-foo</value> + </header> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/7.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>empty</name> + <value/> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>PUT with Prefer=return-representation</description> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/7.ics</ruri> + <header> + <name>Prefer</name> + <value>return-representation</value> + </header> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/8.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>calendarDataMatch</callback> + <arg> + <name>filepath</name> + <value>Resource/CalDAV/prefer/return/9.ics</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>content-location</name> + <value>$calendarpath1:/4.ics</value> + </arg> + </verify> + </request> + </test> + <test name='4'> + <description>PUT with Prefer=return-representation</description> + <request> + <method>PUT</method> + <ruri>$calendarpath1:/7.ics</ruri> + <header> + <name>Prefer</name> + <value>return-representation</value> + </header> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/10.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>200</value> + </arg> + </verify> + <verify> + <callback>calendarDataMatch</callback> + <arg> + <name>filepath</name> + <value>Resource/CalDAV/prefer/return/11.ics</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>content-location</name> + <value>$calendarpath1:/4.ics</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <test-suite name='representation POST add-member'> + <require-feature> + <feature>prefer-representation</feature> + <feature>add-member</feature> + </require-feature> + <test name='1'> + <description>POST without Prefer</description> + <request> + <method>POST</method> + <ruri>$calendarpath1:/$add-member:</ruri> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/12.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>header</name> + <value>Location</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>header</name> + <value>!Content-Location</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>empty</name> + <value/> + </arg> + </verify> + </request> + </test> + <test name='2'> + <description>POST with Prefer=x-foo</description> + <request> + <method>POST</method> + <ruri>$calendarpath1:/$add-member:</ruri> + <header> + <name>Prefer</name> + <value>x-foo</value> + </header> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/13.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>header</name> + <value>Location</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>header</name> + <value>!Content-Location</value> + </arg> + </verify> + <verify> + <callback>dataString</callback> + <arg> + <name>empty</name> + <value/> + </arg> + </verify> + </request> + </test> + <test name='3'> + <description>POST with Prefer=return-representation</description> + <request> + <method>POST</method> + <ruri>$calendarpath1:/$add-member:</ruri> + <header> + <name>Prefer</name> + <value>return-representation</value> + </header> + <data> + <content-type>text/calendar; charset=utf-8</content-type> + <filepath>Resource/CalDAV/prefer/return/14.ics</filepath> + </data> + <verify> + <callback>statusCode</callback> + <arg> + <name>status</name> + <value>201</value> + </arg> + </verify> + <verify> + <callback>calendarDataMatch</callback> + <arg> + <name>filepath</name> + <value>Resource/CalDAV/prefer/return/14.ics</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>content-location</name> + <value>$calendarpath1:/4.ics</value> + </arg> + </verify> + <verify> + <callback>header</callback> + <arg> + <name>header</name> + <value>Location</value> + </arg> + </verify> + <grabheader> + <name>Content-Location</name> + <variable>$content-posted:</variable> + </grabheader> + <grabheader> + <name>Location</name> + <variable>$posted:</variable> + </grabheader> + </request> + <request> + <method>GET</method> + <ruri>$content-posted:</ruri> + <verify> + <callback>calendarDataMatch</callback> + <arg> + <name>filepath</name> + <value>Resource/CalDAV/prefer/return/14.ics</value> + </arg> + </verify> + </request> + <request> + <method>GET</method> + <ruri>$posted:</ruri> + <verify> + <callback>calendarDataMatch</callback> + <arg> + <name>filepath</name> + <value>Resource/CalDAV/prefer/return/14.ics</value> + </arg> + </verify> + </request> + </test> + </test-suite> + + <end> + <request user="$userid1:" pswd="$pswd1:"> + <method>DELETEALL</method> + <ruri>$calendarpath1:/</ruri> + <ruri>$inboxpath1:/</ruri> + </request> + <request user="$userid2:" pswd="$pswd2:"> + <method>DELETEALL</method> + <ruri>$calendarpath2:/</ruri> + <ruri>$inboxpath2:/</ruri> + </request> + </end> + +</caldavtest> Modified: CalDAVTester/trunk/scripts/tests/CardDAV/add-member.xml =================================================================== --- CalDAVTester/trunk/scripts/tests/CardDAV/add-member.xml 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/scripts/tests/CardDAV/add-member.xml 2012-05-22 19:19:49 UTC (rev 9263) @@ -3,7 +3,7 @@ <!DOCTYPE caldavtest SYSTEM "caldavtest.dtd"> <!-- - Copyright (c) 2006-2010 Apple Inc. All rights reserved. + 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. @@ -46,7 +46,7 @@ <callback>propfindItems</callback> <arg> <name>okprops</name> - <value><![CDATA[{DAV:}add-member$<D:href xmlns:D="DAV:">$addressbookpath1:/;add-member</D:href>]]></value> + <value><![CDATA[{DAV:}add-member$<D:href xmlns:D="DAV:">$addressbookpath1:/$add-member:</D:href>]]></value> </arg> </verify> </request> @@ -80,7 +80,7 @@ <description>POST simple vCard</description> <request print-response='no'> <method>POST</method> - <ruri>$addressbookpath1:/;add-member</ruri> + <ruri>$addressbookpath1:/$add-member:</ruri> <data> <content-type>text/vcard; charset=utf-8</content-type> <filepath>Resource/CardDAV/vcardput/1.vcf</filepath> @@ -122,7 +122,7 @@ <description>re-POST simple vCard - UID conflict failure</description> <request print-response='no'> <method>POST</method> - <ruri>$addressbookpath1:/;add-member</ruri> + <ruri>$addressbookpath1:/$add-member:</ruri> <data> <content-type>text/vcard; charset=utf-8</content-type> <filepath>Resource/CardDAV/vcardput/1.vcf</filepath> Modified: CalDAVTester/trunk/verifiers/addressDataMatch.py =================================================================== --- CalDAVTester/trunk/verifiers/addressDataMatch.py 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/verifiers/addressDataMatch.py 2012-05-22 19:19:49 UTC (rev 9263) @@ -1,5 +1,5 @@ ## -# Copyright (c) 2006-2009 Apple Inc. All rights reserved. +# 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. @@ -33,8 +33,8 @@ filters.append("PRODID") filters.append("REV") - # status code must be 200, 207 - if response.status not in (200,207): + # status code must be 200, 201, 207 + if response.status not in (200, 201,207): return False, " HTTP Status Code Wrong: %d" % (response.status,) # look for response data Modified: CalDAVTester/trunk/verifiers/calendarDataMatch.py =================================================================== --- CalDAVTester/trunk/verifiers/calendarDataMatch.py 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/verifiers/calendarDataMatch.py 2012-05-22 19:19:49 UTC (rev 9263) @@ -1,5 +1,5 @@ ## -# Copyright (c) 2006-2009 Apple Inc. All rights reserved. +# 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. @@ -39,8 +39,8 @@ filters.append("CREATED") filters.append("LAST-MODIFIED") - # status code must be 200, 207 - if response.status not in (200,207): + # status code must be 200, 201, 207 + if response.status not in (200,201,207): return False, " HTTP Status Code Wrong: %d" % (response.status,) # look for response data Modified: CalDAVTester/trunk/verifiers/dataString.py =================================================================== --- CalDAVTester/trunk/verifiers/dataString.py 2012-05-21 22:29:06 UTC (rev 9262) +++ CalDAVTester/trunk/verifiers/dataString.py 2012-05-22 19:19:49 UTC (rev 9263) @@ -1,5 +1,5 @@ ## -# Copyright (c) 2006-2008 Apple Inc. All rights reserved. +# 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. @@ -25,7 +25,15 @@ contains = args.get("contains", []) notcontains = args.get("notcontains", []) unwrap = args.get("unwrap") + empty = args.get("empty") + # Test empty + if empty: + if respdata: + return False, " Response data has a body" + else: + return True, "" + # look for response data if not respdata: return False, " No response body"