[CalendarServer-changes] [11894] CalDAVTester/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Wed Mar 12 11:18:44 PDT 2014
Revision: 11894
http://trac.calendarserver.org//changeset/11894
Author: cdaboo at apple.com
Date: 2013-11-06 14:19:12 -0800 (Wed, 06 Nov 2013)
Log Message:
-----------
Support testing of 2-host pod setup.
Modified Paths:
--------------
CalDAVTester/trunk/README.txt
CalDAVTester/trunk/scripts/server/serverinfo-template.xml
CalDAVTester/trunk/scripts/server/serverinfo.dtd
CalDAVTester/trunk/scripts/server/serverinfo.xml
CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd
CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd
CalDAVTester/trunk/src/caldavtest.py
CalDAVTester/trunk/src/manager.py
CalDAVTester/trunk/src/request.py
CalDAVTester/trunk/src/serverinfo.py
CalDAVTester/trunk/src/xmlDefs.py
CalDAVTester/trunk/verifiers/xmlElementMatch.py
Added Paths:
-----------
CalDAVTester/trunk/Resource/CalDAV/podding/
CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/
CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/1.xml
CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/2.xml
CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/3.ics
CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/4.xml
CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/5.ics
CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/6.xml
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/1.xml
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/10.xml
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/11.xml
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/12.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/13.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/14.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/15.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/2.xml
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/3.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/4.xml
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/5.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/6.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/7.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/8.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/9.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/1.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/2.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/3.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/4.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/5.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/6.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/7.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/8.ics
CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/9.ics
CalDAVTester/trunk/scripts/server/serverinfo-pod.xml
CalDAVTester/trunk/scripts/tests-pod/
CalDAVTester/trunk/scripts/tests-pod/CalDAV/
CalDAVTester/trunk/scripts/tests-pod/CalDAV/caldavtest.dtd
CalDAVTester/trunk/scripts/tests-pod/CalDAV/calendaruserproxy.xml
CalDAVTester/trunk/scripts/tests-pod/CalDAV/implicitproxy.xml
CalDAVTester/trunk/scripts/tests-pod/CalDAV/implicitsimple.xml
CalDAVTester/trunk/scripts/tests-pod/CalDAV/simple.xml
Removed Paths:
-------------
CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml
Modified: CalDAVTester/trunk/README.txt
===================================================================
--- CalDAVTester/trunk/README.txt 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/README.txt 2013-11-06 22:19:12 UTC (rev 11894)
@@ -791,6 +791,7 @@
[+text] - node text starts with "text".
[^tag] - node has child element "tag".
[^tag=text] - node has child element "tag" with text "text".
+ [|] - node is empty.
[json] - node contains valid JSON data.
[icalendar] - node contains valid iCalendare data.
Added: CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/1.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/1.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:group-member-set/>
+<D:group-membership/>
+</D:prop>
+</D:propfind>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/2.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/2.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/2.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propertyupdate xmlns:D="DAV:">
+<D:set>
+<D:prop>
+<D:group-member-set><D:href>$pprincipaluri1:</D:href></D:group-member-set>
+</D:prop>
+</D:set>
+</D:propertyupdate>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/3.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/3.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,13 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+VERSION:2.0
+BEGIN:VEVENT
+DTSTAMP:20051222T205953Z
+CREATED:20060101T150000Z
+DTSTART:$now.year.1:0101T100000Z
+DURATION:PT1H
+SUMMARY:event 2
+UID:event2 at ninevah.local
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/4.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/4.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/4.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propertyupdate xmlns:D="DAV:">
+<D:set>
+<D:prop>
+<D:group-member-set/>
+</D:prop>
+</D:set>
+</D:propertyupdate>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/5.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/5.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,30 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//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
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+SUMMARY:event 1
+UID:54E181BC7CCC373042B28842 at ninevah.local
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/6.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/6.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/calendaruserproxy/6.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propertyupdate xmlns:D="DAV:">
+<D:set>
+<D:prop>
+<D:group-member-set><D:href>$principaluri2:</D:href></D:group-member-set>
+</D:prop>
+</D:set>
+</D:propertyupdate>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/1.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/1.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propertyupdate xmlns:D="DAV:">
+<D:set>
+<D:prop>
+<D:group-member-set><D:href>$pprincipaluri1:</D:href></D:group-member-set>
+</D:prop>
+</D:set>
+</D:propertyupdate>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/10.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/10.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/10.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:acl xmlns:D="DAV:">
+ <D:ace>
+ <D:principal>
+ <D:href>$pprincipaluri1:</D:href>
+ </D:principal>
+ <D:grant>
+ <D:privilege><D:read/></D:privilege>
+ <D:privilege><D:write/></D:privilege>
+ </D:grant>
+ </D:ace>
+</D:acl>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/11.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/11.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/11.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:acl xmlns:D="DAV:"/>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/12.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/12.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/12.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,15 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-2
+DTSTART:$now.year.1:0208T120000Z
+DURATION:PT1H
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/13.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/13.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/13.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-3
+DTSTART:$now.year.1:0208T100000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED:$cuaddralt2:
+ATTENDEE;CN=$username3:;RSVP=TRUE:$cuaddralt3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2::$cuaddralt2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/14.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/14.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/14.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:$now.year.1:0208T200000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED:$cuaddralt2:
+ATTENDEE;CN=$username3:;PARTSTAT=DECLINED:$cuaddralt3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2::$cuaddralt2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/15.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/15.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/15.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:$now.year.1:0208T200000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$username3:;PARTSTAT=DECLINED;EMAIL=$email3::$cuaddrurn3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2:;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/2.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/2.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/2.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propertyupdate xmlns:D="DAV:">
+<D:set>
+<D:prop>
+<D:group-member-set></D:group-member-set>
+</D:prop>
+</D:set>
+</D:propertyupdate>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/3.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/3.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:$now.year.1:0208T200000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED:$cuaddralt2:
+ATTENDEE;CN=$username3:;RSVP=TRUE:$cuaddralt3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2::$cuaddralt2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/4.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/4.xml (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/4.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:resourcetype/>
+<D:getetag/>
+</D:prop>
+</D:propfind>
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/5.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/5.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:$now.year.1:0208T200000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$username3:;RSVP=TRUE;SCHEDULE-STATUS=1.2;EMAIL=$email3::$cuaddrurn3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2:;EMAIL=$email2::$cuaddrurn2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/6.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/6.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/6.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:$now.year.1:0208T200000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$username3:;RSVP=TRUE;EMAIL=$email3::$cuaddrurn3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2:;EMAIL=$email2::$cuaddrurn2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/7.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/7.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/7.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:$now.year.1:0208T200000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED:$cuaddralt2:
+ATTENDEE;CN=$username3:;PARTSTAT=ACCEPTED:$cuaddralt3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2::$cuaddralt2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/8.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/8.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/8.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:$now.year.1:0208T200000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$username3:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0;
+ EMAIL=$email3::$cuaddrurn3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2:;EMAIL=$email2::$cuaddrurn2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/9.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/9.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitproxy/9.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,18 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:$now.year.1:0208T200000Z
+DURATION:PT1H
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$username3:;PARTSTAT=ACCEPTED;EMAIL=$email3::$cuaddrurn3:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$username2:;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/1.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/1.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -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:$now.year.1:0101T100000
+DURATION:PT1H
+SUMMARY:event 1
+UID:event1 at ninevah.local
+ORGANIZER;CN=$username1::$cuaddr1:
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr2:
+ATTENDEE;CN=$pusername1:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$pcuaddr1:
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/2.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/2.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$pusername1:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$pemail1::$pcuaddrurn1:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/3.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/3.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,36 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$pusername1:;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;EMAIL=$pemail1::$pcuaddrurn1:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/4.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/4.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED:$cuaddr2:
+ATTENDEE;CN=$pusername1:;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:$pcuaddr1:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1::$cuaddr1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/5.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/5.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$pusername1:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$pemail1::$pcuaddrurn1:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/6.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/6.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/6.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,36 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$pusername1:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;EMAIL=$pemail1::$pcuaddrurn1:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/7.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/7.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/7.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED:$cuaddr2:
+ATTENDEE;CN=$pusername1:;PARTSTAT=DECLINED:$pcuaddr1:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1::$cuaddr1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/8.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/8.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/8.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$pusername1:;PARTSTAT=DECLINED;SCHEDULE-STATUS=2.0;EMAIL=$pemail1::$pcuaddrurn1:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Added: CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/9.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/9.ics (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/podding/implicitschedule/suite1/9.ics 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$pusername1:;PARTSTAT=DECLINED;EMAIL=$pemail1::$pcuaddrurn1:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;SCHEDULE-STATUS=1.2;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -1,896 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE serverinfo SYSTEM "serverinfo.dtd">
-
-<!--
- Copyright (c) 2006-2013 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.
- -->
-
-<serverinfo>
- <host>localhost</host>
- <nonsslport>8008</nonsslport>
- <sslport>8443</sslport>
- <authtype>basic</authtype>
-
- <features>
- <!-- Generic WebDAV extensions -->
- <feature>COPY Method</feature> <!-- COPY method -->
- <feature>MOVE Method</feature> <!-- MOVE method -->
- <feature>Extended MKCOL</feature> <!-- Extended MKCOL -->
-
- <!-- ACL related -->
- <feature>ACL Method</feature> <!-- ACL method -->
- <feature>acl-principal-prop-set REPORT</feature> <!-- ACL acl-principal-prop-set REPORT -->
- <feature>principal-match REPORT</feature> <!-- ACL principal-match REPORT -->
- <feature>principal-property-search REPORT</feature> <!-- ACL principal-property-search REPORT -->
- <feature>principal-search-property-set REPORT</feature> <!-- ACL principal-search-property-set REPORT -->
-
- <feature>add-member</feature> <!-- Add-member used to create resources -->
- <!-- <feature>auth-on-root</feature> --> <!-- Whether the server requires authentication on the root URI -->
- <feature>brief</feature> <!-- Brief header for PROPFIND, REPORT -->
- <feature>bulk-post</feature> <!-- Bulk POST requests -->
- <feature>ctag</feature> <!-- ctag extension -->
- <feature>current-user-principal</feature> <!-- current-user-principal extension -->
- <feature>directory listing</feature> <!-- GET on collection -->
- <feature>extended-principal-search</feature> <!-- Extended principal-property-search REPORT extension -->
- <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 -->
- <feature>sync-report</feature> <!-- WebDAV collection sync REPORT -->
- <!-- <feature>sync-report-limit</feature> --> <!-- WebDAV collection sync REPORT DAV:limit support -->
- <feature>sync-report-home</feature> <!-- WebDAV collection sync REPORT on Homes -->
- <feature>well-known</feature> <!-- well-known feature -->
-
- <!-- <feature>per-object-ACLs</feature> --> <!-- ACL for objects in calendar/address books -->
- <!-- <feature>regular-collection</feature> --> <!-- Regular collections allowed in calendar/address book homes -->
-
- <!-- <feature>json-data</feature> --> <!-- jCal and jCard support -->
-
- <!-- CalDAV specific extension -->
- <feature>caldav</feature> <!-- Basic CalDAV feature enabler -->
- <feature>attachments-collection</feature> <!-- Server uses a collection in same WebDAV tree to store attachments -->
- <feature>auto-accept</feature> <!-- Auto-accept for rooms & locations -->
- <feature>auto-accept-modes</feature> <!-- Auto-accept modes -->
- <!-- <feature>dropbox</feature> --> <!-- dropbox extension -->
- <feature>default-alarms</feature> <!-- default alarms extension -->
- <feature>EMAIL parameter</feature> <!-- Server normalizes cuaddress and adds EMAIL parameter -->
- <feature>extended-freebusy</feature> <!-- Extended freebusy response -->
- <feature>implicit-scheduling</feature> <!-- CalDAV scheduling - implicit -->
- <feature>location-resource-tracking</feature> <!-- Server tracks who makes unscheduled changes to locations and resources -->
- <feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
- <feature>maskuid</feature> <!-- maskuid extension -->
- <feature>no-duplicate-uids</feature> <!-- duplicate UIDs in same home not supported -->
- <feature>partitioning</feature> <!-- Partitioned server -->
- <feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
- <feature>private-comments</feature> <!-- private-comments extension -->
- <feature>private-events</feature> <!-- private-events extension -->
- <feature>proxy</feature> <!-- calendar-user-proxy extension -->
- <!-- <feature>proxy-authz</feature> --> <!-- sudo user extension -->
- <feature>remove-duplicate-alarms</feature> <!-- Server removes any duplicate alarms on PUT -->
- <feature>query-extended</feature> <!-- calendar-query-extended extension -->
- <feature>shared-calendars</feature> <!-- Shared calendars extension -->
- <feature>schedule-changes</feature> <!-- schedule-changes property extension -->
- <feature>split-calendars</feature> <!-- Calendars are split by component type -->
- <feature>supported-component-sets</feature> <!-- CALDAV:supported-calendar-component-sets on calendar homes -->
- <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>timezones-by-reference</feature> <!-- Timezones by reference enabled -->
- <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 -->
-
- <!-- CardDAV specific extension -->
- <feature>carddav</feature> <!-- Basic CardDAV feature enabler -->
- <feature>default-addressbook</feature> <!-- Default address book behavior -->
- <!-- <feature>global-addressbook</feature> --> <!-- Global address book for each user -->
- <feature>shared-addressbooks</feature> <!-- Shared address books extension -->
- <!-- <feature>directory-gateway</feature> --> <!-- Directory gateway extension -->
-
- </features>
-
- <substitutions>
- <!-- Useful xpath shortcuts for verifiers -->
- <substitution>
- <key>$multistatus-response-prefix:</key>
- <value>/{DAV:}multistatus/{DAV:}response</value>
- </substitution>
- <substitution>
- <key>$multistatus-href-prefix:</key>
- <value>/{DAV:}multistatus/{DAV:}response/{DAV:}href</value>
- </substitution>
- <substitution>
- <key>$verify-response-prefix:</key>
- <value>{DAV:}response/{DAV:}propstat/{DAV:}prop</value>
- </substitution>
- <substitution>
- <key>$verify-property-prefix:</key>
- <value>/{DAV:}multistatus/{DAV:}response/{DAV:}propstat/{DAV:}prop</value>
- </substitution>
- <substitution>
- <key>$verify-bad-response:</key>
- <value>/{DAV:}multistatus/{DAV:}response/{DAV:}status</value>
- </substitution>
- <substitution>
- <key>$verify-error-response:</key>
- <value>/{DAV:}multistatus/{DAV:}response/{DAV:}error</value>
- </substitution>
- <substitution>
- <key>$CALDAV:</key>
- <value>urn:ietf:params:xml:ns:caldav</value>
- </substitution>
- <substitution>
- <key>$CARDDAV:</key>
- <value>urn:ietf:params:xml:ns:carddav</value>
- </substitution>
- <substitution>
- <key>$CS:</key>
- <value>http://calendarserver.org/ns/</value>
- </substitution>
-
- <!-- Server configuration settings -->
- <!-- $host: and $hostssl: are implicitly added by CalDAVTester based
- on the host/nonsslport/sslport values and ssl command line switch -->
-
- <!-- relative path to caldav root-->
- <substitution>
- <key>$root:</key>
- <value>/</value>
- </substitution>
-
- <!-- relative path to main principal collection-->
- <substitution>
- <key>$principalcollection:</key>
- <value>$root:principals/</value>
- </substitution>
-
- <!-- the core recored type collections-->
- <substitution>
- <key>$uidstype:</key>
- <value>__uids__</value>
- </substitution>
- <substitution>
- <key>$userstype:</key>
- <value>users</value>
- </substitution>
- <substitution>
- <key>$groupstype:</key>
- <value>groups</value>
- </substitution>
- <substitution>
- <key>$locationstype:</key>
- <value>locations</value>
- </substitution>
- <substitution>
- <key>$resourcestype:</key>
- <value>resources</value>
- </substitution>
-
- <!-- relative path to record type principal collections-->
- <substitution>
- <key>$principals_uids:</key>
- <value>$principalcollection:$uidstype:/</value>
- </substitution>
- <substitution>
- <key>$principals_users:</key>
- <value>$principalcollection:$userstype:/</value>
- </substitution>
- <substitution>
- <key>$principals_groups:</key>
- <value>$principalcollection:$groupstype:/</value>
- </substitution>
- <substitution>
- <key>$principals_resources:</key>
- <value>$principalcollection:$resourcestype:/</value>
- </substitution>
- <substitution>
- <key>$principals_locations:</key>
- <value>$principalcollection:$locationstype:/</value>
- </substitution>
-
- <!-- relative path to calendars collection-->
- <substitution>
- <key>$calendars:</key>
- <value>$root:calendars/</value>
- </substitution>
-
- <!-- relative path to record type calendar collections-->
- <substitution>
- <key>$calendars_uids:</key>
- <value>$calendars:$uidstype:/</value>
- </substitution>
- <substitution>
- <key>$calendars_users:</key>
- <value>$calendars:$userstype:/</value>
- </substitution>
- <substitution>
- <key>$calendars_groups:</key>
- <value>$calendars:$groupstype:/</value>
- </substitution>
- <substitution>
- <key>$calendars_resources:</key>
- <value>$calendars:$resourcestype:/</value>
- </substitution>
- <substitution>
- <key>$calendars_locations:</key>
- <value>$calendars:$locationstype:/</value>
- </substitution>
-
- <!-- primary calendar name-->
- <substitution>
- <key>$calendar:</key>
- <value>calendar</value>
- </substitution>
-
- <!-- primary tasks-only calendar name-->
- <substitution>
- <key>$tasks:</key>
- <value>tasks</value>
- </substitution>
-
- <!-- inbox name-->
- <substitution>
- <key>$inbox:</key>
- <value>inbox</value>
- </substitution>
-
- <!-- outbox name-->
- <substitution>
- <key>$outbox:</key>
- <value>outbox</value>
- </substitution>
-
- <!-- dropbox name-->
- <substitution>
- <key>$dropbox:</key>
- <value>dropbox</value>
- </substitution>
-
- <!-- attachments name-->
- <substitution>
- <key>$attachments:</key>
- <value>dropbox</value>
- </substitution>
-
- <!-- notification name-->
- <substitution>
- <key>$notification:</key>
- <value>notification</value>
- </substitution>
-
- <!-- freebusy name-->
- <substitution>
- <key>$freebusy:</key>
- <value>freebusy</value>
- </substitution>
-
- <!-- server-to-server inbox-->
- <substitution>
- <key>$servertoserver:</key>
- <value>$root:inbox</value>
- </substitution>
-
- <!-- timezone service-->
- <substitution>
- <key>$timezoneservice:</key>
- <value>$root:timezones</value>
- </substitution>
-
- <!-- timezone std service-->
- <substitution>
- <key>$timezonestdservice:</key>
- <value>$root:stdtimezones</value>
- </substitution>
-
- <!-- relative path to addressbooks collection-->
- <substitution>
- <key>$addressbooks:</key>
- <value>$root:addressbooks/</value>
- </substitution>
-
- <!-- relative path to record type addressbook collections-->
- <substitution>
- <key>$addressbooks_uids:</key>
- <value>$addressbooks:$uidstype:/</value>
- </substitution>
- <substitution>
- <key>$addressbooks_users:</key>
- <value>$addressbooks:$userstype:/</value>
- </substitution>
- <substitution>
- <key>$addressbooks_groups:</key>
- <value>$addressbooks:$groupstype:/</value>
- </substitution>
-
- <!-- primary addressbook name -->
- <substitution>
- <key>$addressbook:</key>
- <value>addressbook</value>
- </substitution>
-
- <!-- directory name -->
- <substitution>
- <key>$directory:</key>
- <value>$root:directory/</value>
- </substitution>
-
- <!-- global-addressbook name -->
- <substitution>
- <key>$global_addressbook:</key>
- <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>
- <value>admin</value>
- </substitution>
- <!-- guid for admin user -->
- <substitution>
- <key>$useradminguid:</key>
- <value>admin</value>
- </substitution>
- <!-- password for admin user -->
- <substitution>
- <key>$pswdadmin:</key>
- <value>admin</value>
- </substitution>
-
- <!-- relative path to admin principal resource-->
- <substitution>
- <key>$principal_admin:</key>
- <value>$principals_users:$useradmin:/</value>
- </substitution>
- <substitution>
- <key>$principaluri_admin:</key>
- <value>$principals_uids:$useradminguid:/</value>
- </substitution>
-
- <!-- user id for apprentice user -->
- <substitution>
- <key>$userapprentice:</key>
- <value>apprentice</value>
- </substitution>
- <!-- guid for apprentice user -->
- <substitution>
- <key>$userapprenticeguid:</key>
- <value>apprentice</value>
- </substitution>
- <!-- password for admin user -->
- <substitution>
- <key>$pswdapprentice:</key>
- <value>apprentice</value>
- </substitution>
-
- <!-- relative path to apprentice principal resource-->
- <substitution>
- <key>$principal_apprentice:</key>
- <value>$principals_users:$userapprentice:/</value>
- </substitution>
- <substitution>
- <key>$principaluri_apprentice:</key>
- <value>$principals_uids:$userapprenticeguid:/</value>
- </substitution>
-
- <!-- user id for proxy user -->
- <substitution>
- <key>$userproxy:</key>
- <value>superuser</value>
- </substitution>
- <!-- password for proxy user -->
- <substitution>
- <key>$pswdproxy:</key>
- <value>superuser</value>
- </substitution>
-
- <!-- Forty user accounts -->
- <repeat count="40">
- <!-- user id -->
- <substitution>
- <key>$userid%d:</key>
- <value>user%02d</value>
- </substitution>
- <!-- user guid -->
- <substitution>
- <key>$userguid%d:</key>
- <value>user%02d</value>
- </substitution>
- <!-- user name -->
- <substitution>
- <key>$username%d:</key>
- <value>User %02d</value>
- </substitution>
- <!-- user name URI encoded -->
- <substitution>
- <key>$username-encoded%d:</key>
- <value>User%%20%02d</value>
- </substitution>
- <!-- first name -->
- <substitution>
- <key>$firstname%d:</key>
- <value>User</value>
- </substitution>
- <!-- last name -->
- <substitution>
- <key>$lastname%d:</key>
- <value>%02d</value>
- </substitution>
- <!-- password -->
- <substitution>
- <key>$pswd%d:</key>
- <value>user%02d</value>
- </substitution>
- <!-- relative path to user principal resource-->
- <substitution>
- <key>$principal%d:</key>
- <value>$principals_users:$userid%d:/</value>
- </substitution>
- <substitution>
- <key>$principaluri%d:</key>
- <value>$principals_uids:$userguid%d:/</value>
- </substitution>
- <substitution>
- <key>$principal%dnoslash:</key>
- <value>$principals_users:$userid%d:</value>
- </substitution>
-
- <!-- relative path to user calendar home-->
- <substitution>
- <key>$calendarhome%d:</key>
- <value>$calendars_uids:$userguid%d:</value>
- </substitution>
- <!-- relative path to user alternate calendar home-->
- <substitution>
- <key>$calendarhomealt%d:</key>
- <value>$calendars_users:$userid%d:</value>
- </substitution>
- <!-- relative path to user calendar-->
- <substitution>
- <key>$calendarpath%d:</key>
- <value>$calendarhome%d:/$calendar:</value>
- </substitution>
- <!-- relative path to user alternate calendar-->
- <substitution>
- <key>$calendarpathalt%d:</key>
- <value>$calendarhomealt%d:/$calendar:</value>
- </substitution>
- <!-- relative path to user tasks calendar-->
- <substitution>
- <key>$taskspath%d:</key>
- <value>$calendarhome%d:/$tasks:</value>
- </substitution>
- <!-- relative path to user inbox-->
- <substitution>
- <key>$inboxpath%d:</key>
- <value>$calendarhome%d:/$inbox:</value>
- </substitution>
- <!-- relative path to user outbox-->
- <substitution>
- <key>$outboxpath%d:</key>
- <value>$calendarhome%d:/$outbox:</value>
- </substitution>
- <!-- relative path to user dropbox-->
- <substitution>
- <key>$dropboxpath%d:</key>
- <value>$calendarhome%d:/$dropbox:</value>
- </substitution>
- <!-- relative path to user notification-->
- <substitution>
- <key>$notificationpath%d:</key>
- <value>$calendarhome%d:/$notification:</value>
- </substitution>
- <!-- relative path to user freebusy-->
- <substitution>
- <key>$freebusypath%d:</key>
- <value>$calendarhome%d:/$freebusy:</value>
- </substitution>
- <substitution>
- <key>$email%d:</key>
- <value>$userid%d:@example.com</value>
- </substitution>
- <!-- calendar user address of user-->
- <substitution>
- <key>$cuaddr%d:</key>
- <value>mailto:$email%d:</value>
- </substitution>
- <substitution>
- <key>$cuaddralt%d:</key>
- <value>$principaluri%d:</value>
- </substitution>
- <substitution>
- <key>$cuaddraltnoslash%d:</key>
- <value>$principals_uids:$userguid%d:</value>
- </substitution>
- <substitution>
- <key>$cuaddrurn%d:</key>
- <value>urn:uuid:$userguid%d:</value>
- </substitution>
-
- <!-- relative path to user addressbook home-->
- <substitution>
- <key>$addressbookhome%d:</key>
- <value>$addressbooks_uids:$userguid%d:</value>
- </substitution>
- <!-- relative path to user addressbook-->
- <substitution>
- <key>$addressbookpath%d:</key>
- <value>$addressbooks_uids:$userguid%d:/$addressbook:</value>
- </substitution>
- </repeat>
-
- <!-- Ten public accounts -->
- <repeat count="10">
- <!-- user id -->
- <substitution>
- <key>$publicuserid%d:</key>
- <value>public%02d</value>
- </substitution>
- <!-- user guid -->
- <substitution>
- <key>$publicuserguid%d:</key>
- <value>public%02d</value>
- </substitution>
- <!-- user name -->
- <substitution>
- <key>$publicusername%d:</key>
- <value>Public %02d</value>
- </substitution>
- <!-- password -->
- <substitution>
- <key>$publicpswd%d:</key>
- <value>public%02d</value>
- </substitution>
- <!-- relative path to user principal resource-->
- <substitution>
- <key>$publicprincipal%d:</key>
- <value>$principals_users:$publicuserid%d:/</value>
- </substitution>
- <substitution>
- <key>$publicprincipaluri%d:</key>
- <value>$principals_uids:$publicuserguid%d:/</value>
- </substitution>
- <!-- relative path to user calendar home-->
- <substitution>
- <key>$publiccalendarhome%d:</key>
- <value>$calendars_uids:$publicuserguid%d:</value>
- </substitution>
- <!-- relative path to user calendar-->
- <substitution>
- <key>$publiccalendarpath%d:</key>
- <value>$calendars_uids:$publicuserguid%d:/$calendar:</value>
- </substitution>
- <substitution>
- <key>$publicemail%d:</key>
- <value>$publicuserid%d:@example.com</value>
- </substitution>
- <!-- calendar user address of user-->
- <substitution>
- <key>$publiccuaddr%d:</key>
- <value>mailto:$publicemail%d:</value>
- </substitution>
- <substitution>
- <key>$publiccuaddralt%d:</key>
- <value>$publicprincipaluri%d:</value>
- </substitution>
- <substitution>
- <key>$publiccuaddrurn%d:</key>
- <value>urn:uuid:$publicuserguid%d:</value>
- </substitution>
- </repeat>
-
- <!-- Twenty resource accounts -->
- <repeat count="20">
- <substitution>
- <key>$resourceid%d:</key>
- <value>resource%02d</value>
- </substitution>
- <!-- resource guid-->
- <substitution>
- <key>$resourceguid%d:</key>
- <value>resource%02d</value>
- </substitution>
- <!-- resource name-->
- <substitution>
- <key>$resourcename%d:</key>
- <value>Resource %02d</value>
- </substitution>
- <!-- relative path to first resource calendar home-->
- <substitution>
- <key>$rcalendarhome%d:</key>
- <value>$calendars_uids:$resourceguid%d:</value>
- </substitution>
- <!-- relative path to first resource calendar home-->
- <substitution>
- <key>$rcalendarpath%d:</key>
- <value>$calendars_uids:$resourceguid%d:/$calendar:</value>
- </substitution>
- <!-- relative path to first resource inbox-->
- <substitution>
- <key>$rinboxpath%d:</key>
- <value>$calendars_uids:$resourceguid%d:/$inbox:</value>
- </substitution>
- <!-- relative path to first resource outbox-->
- <substitution>
- <key>$routboxpath%d:</key>
- <value>$calendars_uids:$resourceguid%d:/$outbox:</value>
- </substitution>
- <!-- relative path to first resource principal resource-->
- <substitution>
- <key>$rprincipal%d:</key>
- <value>$principals_resources:$resourceid%d:/</value>
- </substitution>
- <substitution>
- <key>$rprincipaluri%d:</key>
- <value>$principals_uids:$resourceguid%d:/</value>
- </substitution>
- <substitution>
- <key>$rcuaddralt%d:</key>
- <value>$rprincipaluri%d:</value>
- </substitution>
- <substitution>
- <key>$rcuaddrurn%d:</key>
- <value>urn:uuid:$resourceguid%d:</value>
- </substitution>
- </repeat>
-
- <!-- Ten Location accounts -->
- <repeat count="10">
- <substitution>
- <key>$locationid%d:</key>
- <value>location%02d</value>
- </substitution>
- <!-- location guid-->
- <substitution>
- <key>$locationguid%d:</key>
- <value>location%02d</value>
- </substitution>
- <!-- location name-->
- <substitution>
- <key>$locationname%d:</key>
- <value>Location %02d</value>
- </substitution>
- <!-- relative path to first location calendar home-->
- <substitution>
- <key>$lcalendarhome%d:</key>
- <value>$calendars_uids:$locationguid%d:</value>
- </substitution>
- <!-- relative path to first location calendar home-->
- <substitution>
- <key>$lcalendarpath%d:</key>
- <value>$calendars_uids:$locationguid%d:/$calendar:</value>
- </substitution>
- <!-- relative path to first location inbox-->
- <substitution>
- <key>$linboxpath%d:</key>
- <value>$calendars_uids:$locationguid%d:/$inbox:</value>
- </substitution>
- <!-- relative path to first location outbox-->
- <substitution>
- <key>$loutboxpath%d:</key>
- <value>$calendars_uids:$locationguid%d:/$outbox:</value>
- </substitution>
- <!-- relative path to first location principal resource-->
- <substitution>
- <key>$lprincipal%d:</key>
- <value>$principals_resources:$locationid%d:/</value>
- </substitution>
- <substitution>
- <key>$lprincipaluri%d:</key>
- <value>$principals_uids:$locationguid%d:/</value>
- </substitution>
- <substitution>
- <key>$lcuaddralt%d:</key>
- <value>$lprincipaluri%d:</value>
- </substitution>
- <substitution>
- <key>$lcuaddrurn%d:</key>
- <value>urn:uuid:$locationguid%d:</value>
- </substitution>
- </repeat>
-
-
- <!-- Ten Group accounts -->
- <repeat count="10">
- <substitution>
- <key>$groupid%d:</key>
- <value>group%02d</value>
- </substitution>
- <!-- group guid-->
- <substitution>
- <key>$groupguid%d:</key>
- <value>group%02d</value>
- </substitution>
- <!-- group name-->
- <substitution>
- <key>$groupname%d:</key>
- <value>Group %02d</value>
- </substitution>
- <!-- relative path to first group principal resource-->
- <substitution>
- <key>$gprincipal%d:</key>
- <value>$principals_resources:$groupid%d:/</value>
- </substitution>
- <substitution>
- <key>$gprincipaluri%d:</key>
- <value>$principals_uids:$groupguid%d:/</value>
- </substitution>
- <substitution>
- <key>$gcuaddralt%d:</key>
- <value>$gprincipaluri%d:</value>
- </substitution>
- <substitution>
- <key>$gcuaddrurn%d:</key>
- <value>urn:uuid:$groupguid%d:</value>
- </substitution>
- </repeat>
-
- <!-- User with non-ascii name -->
- <substitution>
- <key>$i18nid:</key>
- <value>i18nuser</value>
- </substitution>
- <!-- group guid-->
- <substitution>
- <key>$i18nguid:</key>
- <value>i18nuser</value>
- </substitution>
- <!-- group name-->
- <substitution>
- <key>$i18nname:</key>
- <value>まだ</value>
- </substitution>
- <!-- password -->
- <substitution>
- <key>$i18npswd:</key>
- <value>i18nuser</value>
- </substitution>
- <!-- relative path to user calendar-->
- <substitution>
- <key>$i18ncalendarpath:</key>
- <value>$calendars_uids:$i18nguid:/$calendar:</value>
- </substitution>
- <substitution>
- <key>$i18nemail:</key>
- <value>$i18nid:@example.com</value>
- </substitution>
- <!-- CUAddrs -->
- <substitution>
- <key>$i18ncuaddr:</key>
- <value>mailto:$i18nemail:</value>
- </substitution>
- <substitution>
- <key>$i18ncuaddrurn:</key>
- <value>urn:uuid:$i18nguid:</value>
- </substitution>
-
- <!-- relative path to disabled group principal resource-->
- <substitution>
- <key>$principaldisabled:</key>
- <value>$principals_groups:disabledgroup/</value>
- </substitution>
- <substitution>
- <key>$principaluridisabled:</key>
- <value>$principals_uids:disabledgroup/</value>
- </substitution>
- <!-- calendar user address of disabled group-->
- <substitution>
- <key>$cuaddrdisabled:</key>
- <value>$principals_uids:disabledgroup/</value>
- </substitution>
-
- <!-- Ten other accounts -->
- <repeat count="10">
- <!-- user id -->
- <substitution>
- <key>$otherid%d:</key>
- <value>other%02d</value>
- </substitution>
- <!-- user guid -->
- <substitution>
- <key>$otherguid%d:</key>
- <value>other%02d</value>
- </substitution>
- <!-- user name -->
- <substitution>
- <key>$otherusername%d:</key>
- <value>Other %02d</value>
- </substitution>
- <!-- password -->
- <substitution>
- <key>$otherpswd%d:</key>
- <value>other%02d</value>
- </substitution>
- <!-- relative path to user principal resource-->
- <substitution>
- <key>$otherprincipal%d:</key>
- <value>$principals_users:$otherid%d:/</value>
- </substitution>
- <substitution>
- <key>$otherprincipaluri%d:</key>
- <value>$principals_uids:$otherguid%d:/</value>
- </substitution>
- <!-- relative path to user calendar home-->
- <substitution>
- <key>$othercalendarhome%d:</key>
- <value>$calendars_uids:$otherguid%d:</value>
- </substitution>
- <!-- relative path to user calendar-->
- <substitution>
- <key>$othercalendarpath%d:</key>
- <value>$calendars_uids:$otherguid%d:/$calendar:</value>
- </substitution>
- <!-- relative path to user inbox-->
- <substitution>
- <key>$otherinboxpath%d:</key>
- <value>$calendars_uids:$otherguid%d:/$inbox:</value>
- </substitution>
- <!-- relative path to user outbox-->
- <substitution>
- <key>$otheroutboxpath%d:</key>
- <value>$calendars_uids:$otherguid%d:/$outbox:</value>
- </substitution>
- <!-- relative path to user dropbox-->
- <substitution>
- <key>$otherdropboxpath%d:</key>
- <value>$calendars_uids:$otherguid%d:/$dropbox:</value>
- </substitution>
- <!-- relative path to user freebusy-->
- <substitution>
- <key>$otherfreebusypath%d:</key>
- <value>$calendars_uids:$otherguid%d:/$freebusy:</value>
- </substitution>
- <!-- calendar user address of user-->
- <substitution>
- <key>$otheremail%d:</key>
- <value>$otherid%d:@example.com</value>
- </substitution>
- <substitution>
- <key>$othercuaddr%d:</key>
- <value>mailto:$otheremail%d:</value>
- </substitution>
- <substitution>
- <key>$othercuaddralt%d:</key>
- <value>$otherprincipaluri%d:</value>
- </substitution>
- <substitution>
- <key>$othercuaddrurn%d:</key>
- <value>urn:uuid:$otherguid%d:</value>
- </substitution>
- </repeat>
-
- <!-- Override some of the above definitions for special cases -->
-
- <!-- calendar user address of second user-->
- <substitution>
- <key>$cuaddr2:</key>
- <value>MAILTO:$email2:</value>
- </substitution>
-
- </substitutions>
-</serverinfo>
Copied: CalDAVTester/trunk/scripts/server/serverinfo-pod.xml (from rev 11854, CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml)
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-pod.xml (rev 0)
+++ CalDAVTester/trunk/scripts/server/serverinfo-pod.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,651 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE serverinfo SYSTEM "serverinfo.dtd">
+
+<!--
+ Copyright (c) 2006-2013 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.
+ -->
+
+<serverinfo>
+ <host>localhost</host>
+ <nonsslport>8008</nonsslport>
+ <sslport>8443</sslport>
+
+ <host2>localhost</host2>
+ <nonsslport2>8108</nonsslport2>
+ <sslport2>8543</sslport2>
+
+ <authtype>basic</authtype>
+
+ <features>
+ <!-- Generic WebDAV extensions -->
+ <feature>COPY Method</feature> <!-- COPY method -->
+ <feature>MOVE Method</feature> <!-- MOVE method -->
+ <feature>Extended MKCOL</feature> <!-- Extended MKCOL -->
+
+ <!-- ACL related -->
+ <feature>ACL Method</feature> <!-- ACL method -->
+ <feature>acl-principal-prop-set REPORT</feature> <!-- ACL acl-principal-prop-set REPORT -->
+ <feature>principal-match REPORT</feature> <!-- ACL principal-match REPORT -->
+ <feature>principal-property-search REPORT</feature> <!-- ACL principal-property-search REPORT -->
+ <feature>principal-search-property-set REPORT</feature> <!-- ACL principal-search-property-set REPORT -->
+
+ <feature>add-member</feature> <!-- Add-member used to create resources -->
+ <!-- <feature>auth-on-root</feature> --> <!-- Whether the server requires authentication on the root URI -->
+ <feature>brief</feature> <!-- Brief header for PROPFIND, REPORT -->
+ <feature>bulk-post</feature> <!-- Bulk POST requests -->
+ <feature>ctag</feature> <!-- ctag extension -->
+ <feature>current-user-principal</feature> <!-- current-user-principal extension -->
+ <feature>directory listing</feature> <!-- GET on collection -->
+ <feature>extended-principal-search</feature> <!-- Extended principal-property-search REPORT extension -->
+ <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 -->
+ <feature>sync-report</feature> <!-- WebDAV collection sync REPORT -->
+ <!-- <feature>sync-report-limit</feature> --> <!-- WebDAV collection sync REPORT DAV:limit support -->
+ <feature>sync-report-home</feature> <!-- WebDAV collection sync REPORT on Homes -->
+ <feature>well-known</feature> <!-- well-known feature -->
+
+ <!-- <feature>per-object-ACLs</feature> --> <!-- ACL for objects in calendar/address books -->
+ <!-- <feature>regular-collection</feature> --> <!-- Regular collections allowed in calendar/address book homes -->
+
+ <!-- <feature>json-data</feature> --> <!-- jCal and jCard support -->
+
+ <!-- CalDAV specific extension -->
+ <feature>caldav</feature> <!-- Basic CalDAV feature enabler -->
+ <feature>attachments-collection</feature> <!-- Server uses a collection in same WebDAV tree to store attachments -->
+ <feature>auto-accept</feature> <!-- Auto-accept for rooms & locations -->
+ <feature>auto-accept-modes</feature> <!-- Auto-accept modes -->
+ <!-- <feature>dropbox</feature> --> <!-- dropbox extension -->
+ <feature>default-alarms</feature> <!-- default alarms extension -->
+ <feature>EMAIL parameter</feature> <!-- Server normalizes cuaddress and adds EMAIL parameter -->
+ <feature>extended-freebusy</feature> <!-- Extended freebusy response -->
+ <feature>implicit-scheduling</feature> <!-- CalDAV scheduling - implicit -->
+ <feature>location-resource-tracking</feature> <!-- Server tracks who makes unscheduled changes to locations and resources -->
+ <feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
+ <feature>maskuid</feature> <!-- maskuid extension -->
+ <feature>no-duplicate-uids</feature> <!-- duplicate UIDs in same home not supported -->
+ <feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
+ <feature>podding</feature> <!-- Podded server -->
+ <feature>private-comments</feature> <!-- private-comments extension -->
+ <feature>private-events</feature> <!-- private-events extension -->
+ <feature>proxy</feature> <!-- calendar-user-proxy extension -->
+ <!-- <feature>proxy-authz</feature> --> <!-- sudo user extension -->
+ <feature>remove-duplicate-alarms</feature> <!-- Server removes any duplicate alarms on PUT -->
+ <feature>query-extended</feature> <!-- calendar-query-extended extension -->
+ <feature>shared-calendars</feature> <!-- Shared calendars extension -->
+ <feature>schedule-changes</feature> <!-- schedule-changes property extension -->
+ <feature>split-calendars</feature> <!-- Calendars are split by component type -->
+ <feature>supported-component-sets</feature> <!-- CALDAV:supported-calendar-component-sets on calendar homes -->
+ <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>timezones-by-reference</feature> <!-- Timezones by reference enabled -->
+ <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 -->
+
+ <!-- CardDAV specific extension -->
+ <feature>carddav</feature> <!-- Basic CardDAV feature enabler -->
+ <feature>default-addressbook</feature> <!-- Default address book behavior -->
+ <!-- <feature>global-addressbook</feature> --> <!-- Global address book for each user -->
+ <feature>shared-addressbooks</feature> <!-- Shared address books extension -->
+ <!-- <feature>directory-gateway</feature> --> <!-- Directory gateway extension -->
+
+ </features>
+
+ <substitutions>
+ <!-- Useful xpath shortcuts for verifiers -->
+ <substitution>
+ <key>$multistatus-response-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response</value>
+ </substitution>
+ <substitution>
+ <key>$multistatus-href-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}href</value>
+ </substitution>
+ <substitution>
+ <key>$verify-response-prefix:</key>
+ <value>{DAV:}response/{DAV:}propstat/{DAV:}prop</value>
+ </substitution>
+ <substitution>
+ <key>$verify-property-prefix:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}propstat/{DAV:}prop</value>
+ </substitution>
+ <substitution>
+ <key>$verify-bad-response:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}status</value>
+ </substitution>
+ <substitution>
+ <key>$verify-error-response:</key>
+ <value>/{DAV:}multistatus/{DAV:}response/{DAV:}error</value>
+ </substitution>
+ <substitution>
+ <key>$CALDAV:</key>
+ <value>urn:ietf:params:xml:ns:caldav</value>
+ </substitution>
+ <substitution>
+ <key>$CARDDAV:</key>
+ <value>urn:ietf:params:xml:ns:carddav</value>
+ </substitution>
+ <substitution>
+ <key>$CS:</key>
+ <value>http://calendarserver.org/ns/</value>
+ </substitution>
+
+ <!-- Server configuration settings -->
+ <!-- $host: and $hostssl: are implicitly added by CalDAVTester based
+ on the host/nonsslport/sslport values and ssl command line switch -->
+
+ <!-- relative path to caldav root-->
+ <substitution>
+ <key>$root:</key>
+ <value>/</value>
+ </substitution>
+
+ <!-- relative path to main principal collection-->
+ <substitution>
+ <key>$principalcollection:</key>
+ <value>$root:principals/</value>
+ </substitution>
+
+ <!-- the core recored type collections-->
+ <substitution>
+ <key>$uidstype:</key>
+ <value>__uids__</value>
+ </substitution>
+ <substitution>
+ <key>$userstype:</key>
+ <value>users</value>
+ </substitution>
+ <substitution>
+ <key>$groupstype:</key>
+ <value>groups</value>
+ </substitution>
+ <substitution>
+ <key>$locationstype:</key>
+ <value>locations</value>
+ </substitution>
+ <substitution>
+ <key>$resourcestype:</key>
+ <value>resources</value>
+ </substitution>
+
+ <!-- relative path to record type principal collections-->
+ <substitution>
+ <key>$principals_uids:</key>
+ <value>$principalcollection:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_users:</key>
+ <value>$principalcollection:$userstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_groups:</key>
+ <value>$principalcollection:$groupstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_resources:</key>
+ <value>$principalcollection:$resourcestype:/</value>
+ </substitution>
+ <substitution>
+ <key>$principals_locations:</key>
+ <value>$principalcollection:$locationstype:/</value>
+ </substitution>
+
+ <!-- relative path to calendars collection-->
+ <substitution>
+ <key>$calendars:</key>
+ <value>$root:calendars/</value>
+ </substitution>
+
+ <!-- relative path to record type calendar collections-->
+ <substitution>
+ <key>$calendars_uids:</key>
+ <value>$calendars:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_users:</key>
+ <value>$calendars:$userstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_groups:</key>
+ <value>$calendars:$groupstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_resources:</key>
+ <value>$calendars:$resourcestype:/</value>
+ </substitution>
+ <substitution>
+ <key>$calendars_locations:</key>
+ <value>$calendars:$locationstype:/</value>
+ </substitution>
+
+ <!-- primary calendar name-->
+ <substitution>
+ <key>$calendar:</key>
+ <value>calendar</value>
+ </substitution>
+
+ <!-- primary tasks-only calendar name-->
+ <substitution>
+ <key>$tasks:</key>
+ <value>tasks</value>
+ </substitution>
+
+ <!-- inbox name-->
+ <substitution>
+ <key>$inbox:</key>
+ <value>inbox</value>
+ </substitution>
+
+ <!-- outbox name-->
+ <substitution>
+ <key>$outbox:</key>
+ <value>outbox</value>
+ </substitution>
+
+ <!-- dropbox name-->
+ <substitution>
+ <key>$dropbox:</key>
+ <value>dropbox</value>
+ </substitution>
+
+ <!-- attachments name-->
+ <substitution>
+ <key>$attachments:</key>
+ <value>dropbox</value>
+ </substitution>
+
+ <!-- notification name-->
+ <substitution>
+ <key>$notification:</key>
+ <value>notification</value>
+ </substitution>
+
+ <!-- freebusy name-->
+ <substitution>
+ <key>$freebusy:</key>
+ <value>freebusy</value>
+ </substitution>
+
+ <!-- server-to-server inbox-->
+ <substitution>
+ <key>$servertoserver:</key>
+ <value>$root:inbox</value>
+ </substitution>
+
+ <!-- timezone service-->
+ <substitution>
+ <key>$timezoneservice:</key>
+ <value>$root:timezones</value>
+ </substitution>
+
+ <!-- timezone std service-->
+ <substitution>
+ <key>$timezonestdservice:</key>
+ <value>$root:stdtimezones</value>
+ </substitution>
+
+ <!-- relative path to addressbooks collection-->
+ <substitution>
+ <key>$addressbooks:</key>
+ <value>$root:addressbooks/</value>
+ </substitution>
+
+ <!-- relative path to record type addressbook collections-->
+ <substitution>
+ <key>$addressbooks_uids:</key>
+ <value>$addressbooks:$uidstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$addressbooks_users:</key>
+ <value>$addressbooks:$userstype:/</value>
+ </substitution>
+ <substitution>
+ <key>$addressbooks_groups:</key>
+ <value>$addressbooks:$groupstype:/</value>
+ </substitution>
+
+ <!-- primary addressbook name -->
+ <substitution>
+ <key>$addressbook:</key>
+ <value>addressbook</value>
+ </substitution>
+
+ <!-- directory name -->
+ <substitution>
+ <key>$directory:</key>
+ <value>$root:directory/</value>
+ </substitution>
+
+ <!-- global-addressbook name -->
+ <substitution>
+ <key>$global_addressbook:</key>
+ <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>
+ <value>admin</value>
+ </substitution>
+ <!-- guid for admin user -->
+ <substitution>
+ <key>$useradminguid:</key>
+ <value>admin</value>
+ </substitution>
+ <!-- password for admin user -->
+ <substitution>
+ <key>$pswdadmin:</key>
+ <value>admin</value>
+ </substitution>
+
+ <!-- relative path to admin principal resource-->
+ <substitution>
+ <key>$principal_admin:</key>
+ <value>$principals_users:$useradmin:/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluri_admin:</key>
+ <value>$principals_uids:$useradminguid:/</value>
+ </substitution>
+
+ <!-- Forty podA user accounts -->
+ <repeat count="40">
+ <!-- user id -->
+ <substitution>
+ <key>$userid%d:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- user guid -->
+ <substitution>
+ <key>$userguid%d:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- user name -->
+ <substitution>
+ <key>$username%d:</key>
+ <value>User %02d</value>
+ </substitution>
+ <!-- user name URI encoded -->
+ <substitution>
+ <key>$username-encoded%d:</key>
+ <value>User%%20%02d</value>
+ </substitution>
+ <!-- first name -->
+ <substitution>
+ <key>$firstname%d:</key>
+ <value>User</value>
+ </substitution>
+ <!-- last name -->
+ <substitution>
+ <key>$lastname%d:</key>
+ <value>%02d</value>
+ </substitution>
+ <!-- password -->
+ <substitution>
+ <key>$pswd%d:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- relative path to user principal resource-->
+ <substitution>
+ <key>$principal%d:</key>
+ <value>$principals_users:$userid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$principaluri%d:</key>
+ <value>$principals_uids:$userguid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$principal%dnoslash:</key>
+ <value>$principals_users:$userid%d:</value>
+ </substitution>
+
+ <!-- relative path to user calendar home-->
+ <substitution>
+ <key>$calendarhome%d:</key>
+ <value>$calendars_uids:$userguid%d:</value>
+ </substitution>
+ <!-- relative path to user alternate calendar home-->
+ <substitution>
+ <key>$calendarhomealt%d:</key>
+ <value>$calendars_users:$userid%d:</value>
+ </substitution>
+ <!-- relative path to user calendar-->
+ <substitution>
+ <key>$calendarpath%d:</key>
+ <value>$calendarhome%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to user alternate calendar-->
+ <substitution>
+ <key>$calendarpathalt%d:</key>
+ <value>$calendarhomealt%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to user tasks calendar-->
+ <substitution>
+ <key>$taskspath%d:</key>
+ <value>$calendarhome%d:/$tasks:</value>
+ </substitution>
+ <!-- relative path to user inbox-->
+ <substitution>
+ <key>$inboxpath%d:</key>
+ <value>$calendarhome%d:/$inbox:</value>
+ </substitution>
+ <!-- relative path to user outbox-->
+ <substitution>
+ <key>$outboxpath%d:</key>
+ <value>$calendarhome%d:/$outbox:</value>
+ </substitution>
+ <!-- relative path to user dropbox-->
+ <substitution>
+ <key>$dropboxpath%d:</key>
+ <value>$calendarhome%d:/$dropbox:</value>
+ </substitution>
+ <!-- relative path to user notification-->
+ <substitution>
+ <key>$notificationpath%d:</key>
+ <value>$calendarhome%d:/$notification:</value>
+ </substitution>
+ <!-- relative path to user freebusy-->
+ <substitution>
+ <key>$freebusypath%d:</key>
+ <value>$calendarhome%d:/$freebusy:</value>
+ </substitution>
+ <substitution>
+ <key>$email%d:</key>
+ <value>$userid%d:@example.com</value>
+ </substitution>
+ <!-- calendar user address of user-->
+ <substitution>
+ <key>$cuaddr%d:</key>
+ <value>mailto:$email%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddralt%d:</key>
+ <value>$principaluri%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddraltnoslash%d:</key>
+ <value>$principals_uids:$userguid%d:</value>
+ </substitution>
+ <substitution>
+ <key>$cuaddrurn%d:</key>
+ <value>urn:uuid:$userguid%d:</value>
+ </substitution>
+
+ <!-- relative path to user addressbook home-->
+ <substitution>
+ <key>$addressbookhome%d:</key>
+ <value>$addressbooks_uids:$userguid%d:</value>
+ </substitution>
+ <!-- relative path to user addressbook-->
+ <substitution>
+ <key>$addressbookpath%d:</key>
+ <value>$addressbooks_uids:$userguid%d:/$addressbook:</value>
+ </substitution>
+ </repeat>
+
+ <!-- Forty podB user accounts -->
+ <repeat count="40">
+ <!-- user id -->
+ <substitution>
+ <key>$puserid%d:</key>
+ <value>puser%02d</value>
+ </substitution>
+ <!-- user guid -->
+ <substitution>
+ <key>$puserguid%d:</key>
+ <value>puser%02d</value>
+ </substitution>
+ <!-- user name -->
+ <substitution>
+ <key>$pusername%d:</key>
+ <value>Puser %02d</value>
+ </substitution>
+ <!-- user name URI encoded -->
+ <substitution>
+ <key>$pusername-encoded%d:</key>
+ <value>Puser%%20%02d</value>
+ </substitution>
+ <!-- first name -->
+ <substitution>
+ <key>$pfirstname%d:</key>
+ <value>Puser</value>
+ </substitution>
+ <!-- last name -->
+ <substitution>
+ <key>$plastname%d:</key>
+ <value>%02d</value>
+ </substitution>
+ <!-- password -->
+ <substitution>
+ <key>$ppswd%d:</key>
+ <value>puser%02d</value>
+ </substitution>
+ <!-- relative path to user principal resource-->
+ <substitution>
+ <key>$pprincipal%d:</key>
+ <value>$principals_users:$puserid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$pprincipaluri%d:</key>
+ <value>$principals_uids:$puserguid%d:/</value>
+ </substitution>
+ <substitution>
+ <key>$pprincipal%dnoslash:</key>
+ <value>$principals_users:$puserid%d:</value>
+ </substitution>
+
+ <!-- relative path to user calendar home-->
+ <substitution>
+ <key>$pcalendarhome%d:</key>
+ <value>$calendars_uids:$puserguid%d:</value>
+ </substitution>
+ <!-- relative path to user alternate calendar home-->
+ <substitution>
+ <key>$pcalendarhomealt%d:</key>
+ <value>$calendars_users:$puserid%d:</value>
+ </substitution>
+ <!-- relative path to user calendar-->
+ <substitution>
+ <key>$pcalendarpath%d:</key>
+ <value>$pcalendarhome%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to user alternate calendar-->
+ <substitution>
+ <key>$pcalendarpathalt%d:</key>
+ <value>$pcalendarhomealt%d:/$calendar:</value>
+ </substitution>
+ <!-- relative path to user tasks calendar-->
+ <substitution>
+ <key>$ptaskspath%d:</key>
+ <value>$pcalendarhome%d:/$tasks:</value>
+ </substitution>
+ <!-- relative path to user inbox-->
+ <substitution>
+ <key>$pinboxpath%d:</key>
+ <value>$pcalendarhome%d:/$inbox:</value>
+ </substitution>
+ <!-- relative path to user outbox-->
+ <substitution>
+ <key>$poutboxpath%d:</key>
+ <value>$pcalendarhome%d:/$outbox:</value>
+ </substitution>
+ <!-- relative path to user dropbox-->
+ <substitution>
+ <key>$pdropboxpath%d:</key>
+ <value>$pcalendarhome%d:/$dropbox:</value>
+ </substitution>
+ <!-- relative path to user notification-->
+ <substitution>
+ <key>$pnotificationpath%d:</key>
+ <value>$pcalendarhome%d:/$notification:</value>
+ </substitution>
+ <!-- relative path to user freebusy-->
+ <substitution>
+ <key>$pfreebusypath%d:</key>
+ <value>$pcalendarhome%d:/$freebusy:</value>
+ </substitution>
+ <substitution>
+ <key>$pemail%d:</key>
+ <value>$puserid%d:@example.com</value>
+ </substitution>
+ <!-- calendar user address of user-->
+ <substitution>
+ <key>$pcuaddr%d:</key>
+ <value>mailto:$pemail%d:</value>
+ </substitution>
+ <substitution>
+ <key>$pcuaddralt%d:</key>
+ <value>$pprincipaluri%d:</value>
+ </substitution>
+ <substitution>
+ <key>$pcuaddraltnoslash%d:</key>
+ <value>$principals_uids:$puserguid%d:</value>
+ </substitution>
+ <substitution>
+ <key>$pcuaddrurn%d:</key>
+ <value>urn:uuid:$puserguid%d:</value>
+ </substitution>
+
+ <!-- relative path to user addressbook home-->
+ <substitution>
+ <key>$paddressbookhome%d:</key>
+ <value>$addressbooks_uids:$puserguid%d:</value>
+ </substitution>
+ <!-- relative path to user addressbook-->
+ <substitution>
+ <key>$paddressbookpath%d:</key>
+ <value>$paddressbookhome%d:/$addressbook:</value>
+ </substitution>
+ </repeat>
+
+ </substitutions>
+</serverinfo>
Modified: CalDAVTester/trunk/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-template.xml 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/scripts/server/serverinfo-template.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -79,8 +79,8 @@
<feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
<feature>maskuid</feature> <!-- maskuid extension -->
<feature>no-duplicate-uids</feature> <!-- duplicate UIDs in same home not supported -->
- <!-- <feature>partitioning</feature> --> <!-- Partitioned server -->
<feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
+ <!-- <feature>podding</feature> --> <!-- Podded server -->
<feature>private-comments</feature> <!-- private-comments extension -->
<feature>private-events</feature> <!-- private-events extension -->
<feature>proxy</feature> <!-- calendar-user-proxy extension -->
@@ -104,7 +104,7 @@
<feature>carddav</feature> <!-- Basic CardDAV feature enabler -->
<feature>default-addressbook</feature> <!-- Default address book behavior -->
<!-- <feature>global-addressbook</feature> --> <!-- Global address book for each user -->
- <!-- <feature>shared-addressbooks</feature> --> <!-- Shared address books extension -->
+ <!-- <feature>shared-addressbooks</feature> --> <!-- Shared address books extension -->
<!-- <feature>directory-gateway</feature> --> <!-- Directory gateway extension -->
</features>
@@ -539,7 +539,7 @@
<!-- relative path to user addressbook-->
<substitution>
<key>$addressbookpath%%d:</key>
- <value>$addressbooks_uids:$userguid%%d:/$addressbook:</value>
+ <value>$addressbookhome%%d:/$addressbook:</value>
</substitution>
</repeat>
Modified: CalDAVTester/trunk/scripts/server/serverinfo.dtd
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo.dtd 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/scripts/server/serverinfo.dtd 2013-11-06 22:19:12 UTC (rev 11894)
@@ -14,11 +14,14 @@
limitations under the License.
-->
-<!ELEMENT serverinfo (host, nonsslport, sslport, authtype?, waitime?, features?, substitutions)? >
+<!ELEMENT serverinfo (host, nonsslport, sslport, host2?, nonsslport2?, sslport2?, authtype?, waitime?, features?, substitutions)? >
<!ELEMENT host (#PCDATA)>
<!ELEMENT nonsslport (#PCDATA)>
<!ELEMENT sslport (#PCDATA)>
+ <!ELEMENT host2 (#PCDATA)>
+ <!ELEMENT nonsslport2 (#PCDATA)>
+ <!ELEMENT sslport2 (#PCDATA)>
<!ELEMENT authtype (#PCDATA)>
<!ELEMENT waittime (#PCDATA)>
<!ELEMENT features (feature*)>
Modified: CalDAVTester/trunk/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo.xml 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/scripts/server/serverinfo.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -78,9 +78,9 @@
<feature>location-resource-tracking</feature> <!-- Server tracks who makes unscheduled changes to locations and resources -->
<feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
<feature>maskuid</feature> <!-- maskuid extension -->
- <!-- <feature>partitioning</feature> --> <!-- Partitioned server -->
<feature>no-duplicate-uids</feature> <!-- duplicate UIDs in same home not supported -->
<feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
+ <!-- <feature>podding</feature> --> <!-- Podded server -->
<feature>private-comments</feature> <!-- private-comments extension -->
<feature>private-events</feature> <!-- private-events extension -->
<feature>proxy</feature> <!-- calendar-user-proxy extension -->
@@ -302,13 +302,13 @@
<value>$root:stdtimezones</value>
</substitution>
- <!-- relative path to calendars collection-->
+ <!-- relative path to addressbooks collection-->
<substitution>
<key>$addressbooks:</key>
<value>$root:addressbooks/</value>
</substitution>
- <!-- relative path to record type calendar collections-->
+ <!-- relative path to record type addressbook collections-->
<substitution>
<key>$addressbooks_uids:</key>
<value>$addressbooks:$uidstype:/</value>
@@ -540,7 +540,7 @@
<!-- relative path to user addressbook-->
<substitution>
<key>$addressbookpath%d:</key>
- <value>$addressbooks_uids:$userguid%d:/$addressbook:</value>
+ <value>$addressbookhome%d:/$addressbook:</value>
</substitution>
</repeat>
Modified: CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/caldavtest.dtd 2013-11-06 22:19:12 UTC (rev 11894)
@@ -31,7 +31,8 @@
<!ELEMENT request (require-feature?, exclude-feature?, method, ruri*, header*, data?, verify*,
graburi?, grabcount?, grabheader*, grabproperty*, grabelement*, grabcalproperty*, grabcalparameter*)>
- <!ATTLIST request auth (yes|no) "yes"
+ <!ATTLIST request host2 (yes|no) "no"
+ auth (yes|no) "yes"
user CDATA ""
pswd CDATA ""
end-delete (yes|no) "no"
Modified: CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/scripts/tests/CardDAV/caldavtest.dtd 2013-11-06 22:19:12 UTC (rev 11894)
@@ -31,7 +31,8 @@
<!ELEMENT request (require-feature?, exclude-feature?, method, ruri*, header*, data?, verify*,
graburi?, grabcount?, grabheader*, grabproperty*, grabelement*, grabcalproperty*, grabcalparameter*)>
- <!ATTLIST request auth (yes|no) "yes"
+ <!ATTLIST request host2 (yes|no) "no"
+ auth (yes|no) "yes"
user CDATA ""
pswd CDATA ""
end-delete (yes|no) "no"
Added: CalDAVTester/trunk/scripts/tests-pod/CalDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/scripts/tests-pod/CalDAV/caldavtest.dtd (rev 0)
+++ CalDAVTester/trunk/scripts/tests-pod/CalDAV/caldavtest.dtd 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,84 @@
+<!--
+ Copyright (c) 2006-2013 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.
+ -->
+
+<!ELEMENT caldavtest (description?, require-feature?, start, test-suite*, end) >
+ <!ATTLIST caldavtest ignore-all (yes|no) "no">
+
+ <!ELEMENT description (#PCDATA)>
+
+ <!ELEMENT require-feature (feature*)>
+ <!ELEMENT feature (#PCDATA)>
+ <!ELEMENT exclude-feature (feature*)>
+ <!ELEMENT feature (#PCDATA)>
+
+ <!ELEMENT start (request*)>
+ <!ELEMENT end (request*)>
+
+ <!ELEMENT pause EMPTY>
+
+ <!ELEMENT request (require-feature?, exclude-feature?, method, ruri*, header*, data?, verify*,
+ graburi?, grabcount?, grabheader*, grabproperty*, grabelement*, grabcalproperty*, grabcalparameter*)>
+ <!ATTLIST request host2 (yes|no) "no"
+ auth (yes|no) "yes"
+ user CDATA ""
+ pswd CDATA ""
+ end-delete (yes|no) "no"
+ print-response (yes|no) "no"
+ iterate-data (yes|no) "no"
+ wait-for-success (yes|no) "no">
+
+ <!ELEMENT method (#PCDATA)>
+ <!ELEMENT ruri (#PCDATA)>
+ <!ELEMENT header (name, value)>
+ <!ELEMENT name (#PCDATA)>
+ <!ELEMENT value (#PCDATA)>
+ <!ELEMENT data (content-type, filepath)>
+ <!ATTLIST data substitutions (yes|no) "yes"
+ generate (yes|no) "no">
+ <!ELEMENT content-type (#PCDATA)>
+ <!ELEMENT filepath (#PCDATA)>
+
+ <!ELEMENT verify (require-feature?, exclude-feature?, callback, arg*)>
+
+ <!ELEMENT callback (#PCDATA)>
+ <!ELEMENT arg (name, value*)>
+
+ <!ELEMENT graburi (#PCDATA)>
+
+ <!ELEMENT grabcount (#PCDATA)>
+
+ <!ELEMENT grabheader (name, variable)>
+
+ <!ELEMENT grabproperty (property, variable)>
+ <!ELEMENT property (#PCDATA)>
+ <!ELEMENT variable (#PCDATA)>
+
+ <!ELEMENT grabelement (name, parent*, variable+)>
+
+ <!ELEMENT grabcalproperty (name, variable)>
+ <!ELEMENT grabcalparameter (name, variable)>
+
+ <!ELEMENT test-suite (require-feature?, exclude-feature?, test*)>
+ <!ATTLIST test-suite name CDATA #REQUIRED
+ ignore (yes|no) "no"
+ only (yes|no) "no">
+
+ <!ELEMENT test (require-feature?, exclude-feature?, description?, (request|pause)+)>
+ <!ATTLIST test name CDATA #REQUIRED
+ count CDATA "1"
+ stats (yes|no) "no"
+ ignore (yes|no) "no"
+ only (yes|no) "no">
Added: CalDAVTester/trunk/scripts/tests-pod/CalDAV/calendaruserproxy.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests-pod/CalDAV/calendaruserproxy.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests-pod/CalDAV/calendaruserproxy.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,2057 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2013 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.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test proxy user features</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>proxy</feature>
+ <feature>podding</feature>
+ </require-feature>
+
+ <start>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/delete/1.txt</filepath>
+ </data>
+ </request>
+ <request user="$puserid1:" pswd="$ppswd1:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/delete/1.txt</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='Proxy on podB' ignore="no">
+ <test name='1'>
+ <description>Verify no group memberships right now</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Verify no group memberships right now</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Verify no access to resource</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Add podB user as read proxy for podA user01</description>
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>$principal1:calendar-proxy-read/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:calendar-proxy-read/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value><![CDATA[{DAV:}group-member-set$<href xmlns="DAV:">$pprincipaluri1:</href>]]></value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Verify no group memberships right now</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Verify single group membership</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-member-set[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-membership/{DAV:}href[=$principaluri1:calendar-proxy-read/]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>Verify access to resource</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>200</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Verify no access for write</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PUT</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Clear podB user as read-only proxy for podA user01</description>
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>$principal1:calendar-proxy-read/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:calendar-proxy-read/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Verify no group memberships right now</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>Verify no group memberships right now</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>Verify no access to resource</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>Add podB user as read-write proxy for podA user01</description>
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>$principal1:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:calendar-proxy-write/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-membership[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-member-set/{DAV:}href[=$pprincipaluri1:]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='14'>
+ <description>Verify no group memberships right now</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='15'>
+ <description>Verify single group membership</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-member-set[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-membership/{DAV:}href[=$principaluri1:calendar-proxy-write/]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>Verify access to resource</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>200</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17'>
+ <description>Verify access to resource</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='18'>
+ <description>Verify access for writing</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PUT</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='19'>
+ <description>Clear podB user as read-write proxy for podA user01</description>
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>$principal1:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:calendar-proxy-write/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='20'>
+ <description>Verify no group memberships right now</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='21'>
+ <description>Verify no group memberships right now</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='22'>
+ <description>Verify no access to resource</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Proxy on podB - requests from podB' ignore="no">
+ <test name='1'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Verify no access to resource</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Add podB user as read proxy for podA user01</description>
+ <request host2='yes'>
+ <method>PROPPATCH</method>
+ <ruri>$principal1:calendar-proxy-read/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:calendar-proxy-read/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value><![CDATA[{DAV:}group-member-set$<href xmlns="DAV:">$pprincipaluri1:</href>]]></value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Verify single group membership</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-member-set[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-membership/{DAV:}href[=$principaluri1:calendar-proxy-read/]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>Verify access to resource</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>200</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Verify no access for write</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PUT</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Clear podB user as read-only proxy for podA user01</description>
+ <request host2='yes'>
+ <method>PROPPATCH</method>
+ <ruri>$principal1:calendar-proxy-read/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:calendar-proxy-read/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>Verify no access to resource</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>Add podB user as read-write proxy for podA user01</description>
+ <request host2='yes'>
+ <method>PROPPATCH</method>
+ <ruri>$principal1:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:calendar-proxy-write/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-membership[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-member-set/{DAV:}href[=$pprincipaluri1:]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='14'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='15'>
+ <description>Verify single group membership</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-member-set[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-membership/{DAV:}href[=$principaluri1:calendar-proxy-write/]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>Verify access to resource</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>200</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17'>
+ <description>Verify access to resource</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='18'>
+ <description>Verify access for writing</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PUT</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='19'>
+ <description>Clear podB user as read-write proxy for podA user01</description>
+ <request host2='yes'>
+ <method>PROPPATCH</method>
+ <ruri>$principal1:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:calendar-proxy-write/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='20'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='21'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='22'>
+ <description>Verify no access to resource</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Proxy on podA' ignore="no">
+ <test name='1'>
+ <description>Verify no group memberships right now</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Verify no group memberships right now</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Verify no access to resource</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Add podA user02 as read proxy for podB user</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPPATCH</method>
+ <ruri>$pprincipal1:calendar-proxy-read/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:calendar-proxy-read/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-membership[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-member-set/{DAV:}href[=$principaluri2:]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Verify no group memberships right now</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Verify single group membership</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-member-set[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-membership/{DAV:}href[=$pprincipaluri1:calendar-proxy-read/]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>Verify access to resource</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>200</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Verify no access for writing</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pcalendarpath1:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Clear podA user02 as read-only proxy for podB user</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPPATCH</method>
+ <ruri>$pprincipal1:calendar-proxy-read/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:calendar-proxy-read/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Verify no group memberships right now</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>Verify no group memberships right now</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>Verify no access to resource</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>Add podA user02 as read-write proxy for podB user</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPPATCH</method>
+ <ruri>$pprincipal1:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:calendar-proxy-write/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-membership[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-member-set/{DAV:}href[=$principaluri2:]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='14'>
+ <description>Verify no group memberships right now</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='15'>
+ <description>Verify single group membership</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-member-set[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-membership/{DAV:}href[=$pprincipaluri1:calendar-proxy-write/]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>Verify access to resource</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>200</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17'>
+ <description>Verify write access to resource</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='18'>
+ <description>Verify access for new resource</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pcalendarpath1:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='19'>
+ <description>Clear podA user02 as read-write proxy for podB user</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPPATCH</method>
+ <ruri>$pprincipal1:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:calendar-proxy-write/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='20'>
+ <description>Verify no group memberships right now</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='21'>
+ <description>Verify no group memberships right now</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='22'>
+ <description>Verify no access to resource</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Proxy on podA - requests from podB' ignore="no">
+ <test name='1'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Verify no access to resource</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Add podA user02 as read proxy for podB user</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPPATCH</method>
+ <ruri>$pprincipal1:calendar-proxy-read/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:calendar-proxy-read/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-membership[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-member-set/{DAV:}href[=$principaluri2:]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Verify single group membership</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-member-set[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-membership/{DAV:}href[=$pprincipaluri1:calendar-proxy-read/]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>Verify access to resource</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>200</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Verify no access for writing</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pcalendarpath1:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Clear podA user02 as read-only proxy for podB user</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPPATCH</method>
+ <ruri>$pprincipal1:calendar-proxy-read/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:calendar-proxy-read/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>Verify no access to resource</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>Add podA user02 as read-write proxy for podB user</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPPATCH</method>
+ <ruri>$pprincipal1:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:calendar-proxy-write/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-membership[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-member-set/{DAV:}href[=$principaluri2:]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='14'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='15'>
+ <description>Verify single group membership</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>xmlElementMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>$verify-property-prefix:/{DAV:}group-member-set[|]</value>
+ <value>$verify-property-prefix:/{DAV:}group-membership/{DAV:}href[=$pprincipaluri1:calendar-proxy-write/]</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>Verify access to resource</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>200</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17'>
+ <description>Verify write access to resource</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='18'>
+ <description>Verify access for new resource</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pcalendarpath1:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='19'>
+ <description>Clear podA user02 as read-write proxy for podB user</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPPATCH</method>
+ <ruri>$pprincipal1:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:calendar-proxy-write/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='20'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='21'>
+ <description>Verify no group memberships right now</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$principal2:</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/calendaruserproxy/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}group-member-set$</value>
+ <value>{DAV:}group-membership$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='22'>
+ <description>Verify no access to resource</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests-pod/CalDAV/implicitproxy.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests-pod/CalDAV/implicitproxy.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests-pod/CalDAV/implicitproxy.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,320 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2013 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 implicit scheduling done by proxies across pods</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>proxy</feature>
+ <feature>implicit-scheduling</feature>
+ </require-feature>
+
+ <start>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GET</method>
+ <ruri>$pcalendarpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$calendarpath2:/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$calendarpath3:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PROPPATCH</method>
+ <ruri>$principal2:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/1.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>PROPPATCH</method>
+ <ruri>$principal3:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/1.xml</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='Proxy as Organizer'>
+ <test name='1'>
+ <description>Proxy creates new event</description>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:'>
+ <method>PUT</method>
+ <ruri>$calendarpath2:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>No items in user02 Inbox</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PROPFIND</method>
+ <ruri>$inboxpath2:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>One item in user02 Calendar</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$calendarpath2:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitproxy/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>One item in user03 Inbox</description>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>WAITDELETEALL 1</method>
+ <ruri>$inboxpath3:/</ruri>
+ </request>
+ </test>
+ <test name='5'>
+ <description>One item in user03 calendar</description>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GETNEW</method>
+ <ruri>$calendarpath3:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitproxy/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Proxy as Attendee'>
+ <test name='2'>
+ <description>Proxy updates event</description>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:' print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath3:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:' print-response='no'>
+ <method>PUT</method>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>One item in user02 Inbox</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>WAITDELETEALL 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </test>
+ <test name='4'>
+ <description>One item in user02 Calendar</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$calendarpath2:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitproxy/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>No item in user03 Inbox</description>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>PROPFIND</method>
+ <ruri>$inboxpath3:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>One item in user03 calendar</description>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GETNEW</method>
+ <ruri>$calendarpath3:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitproxy/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="Undo proxy">
+ <test name='1'>
+ <description>Remove proxy</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PROPPATCH</method>
+ <ruri>$principal2:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>PROPPATCH</method>
+ <ruri>$principal3:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Writer cannot read existing event</description>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:'>
+ <method>GET</method>
+ <ruri>$calendarpath2:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:'>
+ <method>GET</method>
+ <ruri>$calendarpath3:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:'>
+ <method>DELETEALL</method>
+ <ruri>$pinboxpath1:/</ruri>
+ <ruri>$pcalendarpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$inboxpath2:/</ruri>
+ <ruri>$calendarpath2:/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$inboxpath3:/</ruri>
+ <ruri>$calendarpath3:/</ruri>
+ </request>
+
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PROPPATCH</method>
+ <ruri>$principal2:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/2.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>PROPPATCH</method>
+ <ruri>$principal3:calendar-proxy-write/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/2.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$calendarpath2:/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/11.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>ACL</method>
+ <ruri>$calendarpath3:/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitproxy/11.xml</filepath>
+ </data>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests-pod/CalDAV/implicitsimple.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests-pod/CalDAV/implicitsimple.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests-pod/CalDAV/implicitsimple.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,521 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2013 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>Podding cross-pod scheduling</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>implicit-scheduling</feature>
+ <feature>podding</feature>
+ </require-feature>
+
+ <start>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>$inboxpath1:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ <ruri>$pinboxpath1:/</ruri>
+ </request>
+ </start>
+
+ <test-suite name='#1 scheduling across nodes' ignore='no'>
+ <test name='1'>
+ <description>Organizer invites Attendees</description>
+ <request>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitschedule/suite1/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Organizer checks data</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Attendee Inbox Items</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>WAITDELETEALL 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>WAITDELETEALL 1</method>
+ <ruri>$pinboxpath1:/</ruri>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Attendees have data</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GETNEW</method>
+ <ruri>$pcalendarpath1:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>PodA -> Accepted</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitschedule/suite1/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>Organizer Inbox Item</description>
+ <request>
+ <method>WAITDELETEALL 1</method>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Organizer data changed</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>PodB no Inbox Item</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pinboxpath1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>PodB data changed</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GETNEW</method>
+ <ruri>$pcalendarpath1:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>PodB -> Decline</description>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>GETNEW</method>
+ <ruri>$pcalendarpath1:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$puserid1:" pswd="$ppswd1:">
+ <method>PUT</method>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitschedule/suite1/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>Organizer Inbox Item</description>
+ <request>
+ <method>WAITDELETEALL 1</method>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ </test>
+ <test name='14'>
+ <description>Organizer data changed</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>PodA no Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PROPFIND</method>
+ <ruri>$inboxpath2:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17'>
+ <description>PodA data changed</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='18'>
+ <description>Clean-up</description>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ <ruri>$pcalendarpath1:/</ruri>
+ <ruri>$pinboxpath1:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='#2 scheduling across nodes - from podB' ignore='no'>
+ <test name='1'>
+ <description>Organizer invites Attendees</description>
+ <request host2='yes'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitschedule/suite1/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Organizer checks data</description>
+ <request host2='yes'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Attendee Inbox Items</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>WAITDELETEALL 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>WAITDELETEALL 1</method>
+ <ruri>$pinboxpath1:/</ruri>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Attendees have data</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>GETNEW</method>
+ <ruri>$pcalendarpath1:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>PodA -> Accepted</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitschedule/suite1/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>Organizer Inbox Item</description>
+ <request host2='yes'>
+ <method>WAITDELETEALL 1</method>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Organizer data changed</description>
+ <request host2='yes'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>PodB no Inbox Item</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PROPFIND</method>
+ <ruri>$pinboxpath1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>PodB data changed</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>GETNEW</method>
+ <ruri>$pcalendarpath1:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>PodB -> Decline</description>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>GETNEW</method>
+ <ruri>$pcalendarpath1:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request host2='yes' user="$puserid1:" pswd="$ppswd1:">
+ <method>PUT</method>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/podding/implicitschedule/suite1/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>Organizer Inbox Item</description>
+ <request host2='yes'>
+ <method>WAITDELETEALL 1</method>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ </test>
+ <test name='14'>
+ <description>Organizer data changed</description>
+ <request host2='yes'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>PodA no Inbox Item</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>PROPFIND</method>
+ <ruri>$inboxpath2:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17'>
+ <description>PodA data changed</description>
+ <request host2='yes' user="$userid2:" pswd="$pswd2:">
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/podding/implicitschedule/suite1/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='18'>
+ <description>Clean-up</description>
+ <request host2='yes' user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ <ruri>$pcalendarpath1:/</ruri>
+ <ruri>$pinboxpath1:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ <ruri>$pcalendarpath1:/</ruri>
+ <ruri>$pinboxpath1:/</ruri>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests-pod/CalDAV/simple.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests-pod/CalDAV/simple.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests-pod/CalDAV/simple.xml 2013-11-06 22:19:12 UTC (rev 11894)
@@ -0,0 +1,349 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2013 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>Simple podding test</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>podding</feature>
+ </require-feature>
+
+ <start/>
+
+ <test-suite name='Access principals via podA'>
+ <test name='1'>
+ <description>PROPFIND of user on podA as user on podA</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$principal1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND of user on podB as user on podA</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPFIND of user on podA as user on podB</description>
+ <request user='$puserid1:' pswd='$ppswd1:'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>PROPFIND of user on podB as user on podB</description>
+ <request user='$puserid1:' pswd='$ppswd1:'>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Access principals via podB'>
+ <test name='1'>
+ <description>PROPFIND of user on podA as user on podA</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND of user on podB as user on podA</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPFIND of user on podA as user on podB</description>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:'>
+ <method>PROPFIND</method>
+ <ruri>$principal1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>PROPFIND of user on podB as user on podB</description>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:'>
+ <method>PROPFIND</method>
+ <ruri>$pprincipal1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Access calendar homes via podA'>
+ <test name='1'>
+ <description>PROPFIND of user on podA as user on podA</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND of user on podB as user on podA</description>
+ <request>
+ <method>PROPFIND</method>
+ <ruri>$pcalendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPFIND of user on podA as user on podB</description>
+ <request user='$puserid1:' pswd='$ppswd1:'>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>PROPFIND of user on podB as user on podB</description>
+ <request user='$puserid1:' pswd='$ppswd1:'>
+ <method>PROPFIND</method>
+ <ruri>$pcalendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Access calendar homes via podB' only='yes'>
+ <test name='1'>
+ <description>PROPFIND of user on podA as user on podA</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND of user on podB as user on podA</description>
+ <request host2='yes'>
+ <method>PROPFIND</method>
+ <ruri>$pcalendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPFIND of user on podA as user on podB</description>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:'>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>PROPFIND of user on podB as user on podB</description>
+ <request host2='yes' user='$puserid1:' pswd='$ppswd1:'>
+ <method>PROPFIND</method>
+ <ruri>$pcalendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/count.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Modified: CalDAVTester/trunk/src/caldavtest.py
===================================================================
--- CalDAVTester/trunk/src/caldavtest.py 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/src/caldavtest.py 2013-11-06 22:19:12 UTC (rev 11894)
@@ -583,7 +583,7 @@
stats.startTimer()
# Do the http request
- http = SmartHTTPConnection(self.manager.server_info.host, self.manager.server_info.port, self.manager.server_info.ssl)
+ http = SmartHTTPConnection(req.host, req.port, self.manager.server_info.ssl)
if not 'User-Agent' in headers and label is not None:
headers['User-Agent'] = label.encode("utf-8")
Modified: CalDAVTester/trunk/src/manager.py
===================================================================
--- CalDAVTester/trunk/src/manager.py 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/src/manager.py 2013-11-06 22:19:12 UTC (rev 11894)
@@ -100,12 +100,22 @@
# Setup ssl stuff
self.server_info.ssl = ssl
self.server_info.port = self.server_info.sslport if ssl else self.server_info.nonsslport
+ self.server_info.port2 = self.server_info.sslport2 if ssl else self.server_info.nonsslport2
+
moresubs["$host:"] = "%s://%s:%d" % (
"https" if ssl else "http",
self.server_info.host,
self.server_info.port,
)
moresubs["$hostssl:"] = "https://%s:%d" % (self.server_info.host, self.server_info.sslport,)
+
+ moresubs["$host2:"] = "%s://%s:%d" % (
+ "https" if ssl else "http",
+ self.server_info.host2,
+ self.server_info.port2,
+ )
+ moresubs["$hostssl2:"] = "https://%s:%d" % (self.server_info.host2, self.server_info.sslport2,)
+
self.server_info.addsubs(moresubs)
for testfile in testfiles:
Modified: CalDAVTester/trunk/src/request.py
===================================================================
--- CalDAVTester/trunk/src/request.py 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/src/request.py 2013-11-06 22:19:12 UTC (rev 11894)
@@ -142,6 +142,8 @@
def __init__(self, manager):
self.manager = manager
+ self.host = self.manager.server_info.host
+ self.port = self.manager.server_info.port
self.auth = True
self.user = ""
self.pswd = ""
@@ -345,6 +347,10 @@
self.iterate_data = getYesNoAttributeValue(node, src.xmlDefs.ATTR_ITERATE_DATA)
self.wait_for_success = getYesNoAttributeValue(node, src.xmlDefs.ATTR_WAIT_FOR_SUCCESS)
+ if node.get(src.xmlDefs.ATTR_HOST2, src.xmlDefs.ATTR_VALUE_NO) == src.xmlDefs.ATTR_VALUE_YES:
+ self.host = self.manager.server_info.host2
+ self.port = self.manager.server_info.port2
+
for child in node.getchildren():
if child.tag == src.xmlDefs.ELEMENT_REQUIRE_FEATURE:
self.parseFeatures(child, require=True)
Modified: CalDAVTester/trunk/src/serverinfo.py
===================================================================
--- CalDAVTester/trunk/src/serverinfo.py 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/src/serverinfo.py 2013-11-06 22:19:12 UTC (rev 11894)
@@ -30,6 +30,9 @@
self.host = ""
self.nonsslport = 80
self.sslport = 443
+ self.host2 = ""
+ self.nonsslport2 = 80
+ self.sslport2 = 443
self.authtype = "basic"
self.features = set()
self.user = ""
@@ -131,6 +134,15 @@
self.nonsslport = int(child.text)
elif child.tag == src.xmlDefs.ELEMENT_SSLPORT:
self.sslport = int(child.text)
+ elif child.tag == src.xmlDefs.ELEMENT_HOST2:
+ try:
+ self.host2 = child.text.encode("utf-8")
+ except:
+ self.host2 = "localhost"
+ elif child.tag == src.xmlDefs.ELEMENT_NONSSLPORT2:
+ self.nonsslport2 = int(child.text)
+ elif child.tag == src.xmlDefs.ELEMENT_SSLPORT2:
+ self.sslport2 = int(child.text)
elif child.tag == src.xmlDefs.ELEMENT_AUTHTYPE:
self.authtype = child.text.encode("utf-8")
elif child.tag == src.xmlDefs.ELEMENT_WAITTIME:
Modified: CalDAVTester/trunk/src/xmlDefs.py
===================================================================
--- CalDAVTester/trunk/src/xmlDefs.py 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/src/xmlDefs.py 2013-11-06 22:19:12 UTC (rev 11894)
@@ -39,6 +39,7 @@
ELEMENT_GRABURI = "graburi"
ELEMENT_HEADER = "header"
ELEMENT_HOST = "host"
+ELEMENT_HOST2 = "host2"
ELEMENT_KEY = "key"
ELEMENT_LOGGING = "logging"
ELEMENT_MAILFROM = "mailfrom"
@@ -46,6 +47,7 @@
ELEMENT_METHOD = "method"
ELEMENT_NAME = "name"
ELEMENT_NONSSLPORT = "nonsslport"
+ELEMENT_NONSSLPORT2 = "nonsslport2"
ELEMENT_NOTIFY = "notify"
ELEMENT_PARENT = "parent"
ELEMENT_PAUSE = "pause"
@@ -59,6 +61,7 @@
ELEMENT_SERVERINFO = "serverinfo"
ELEMENT_SPREAD = "spread"
ELEMENT_SSLPORT = "sslport"
+ELEMENT_SSLPORT2 = "sslport2"
ELEMENT_START = "start"
ELEMENT_SUBJECT = "subject"
ELEMENT_SUBSTITUTIONS = "substitutions"
@@ -75,6 +78,7 @@
ELEMENT_WAITTIME = "waittime"
ELEMENT_WARNINGTIME = "warningtime"
+ATTR_HOST2 = "host2"
ATTR_AUTH = "auth"
ATTR_COUNT = "count"
ATTR_DETAILS = "details"
Modified: CalDAVTester/trunk/verifiers/xmlElementMatch.py
===================================================================
--- CalDAVTester/trunk/verifiers/xmlElementMatch.py 2013-11-06 22:17:27 UTC (rev 11893)
+++ CalDAVTester/trunk/verifiers/xmlElementMatch.py 2013-11-06 22:19:12 UTC (rev 11894)
@@ -141,6 +141,9 @@
for child in node.getchildren():
if child.tag == element and (value is None or child.text == value):
results.append(node)
+ elif test[0] == '|':
+ if node.text is None and len(node.getchildren()) == 0:
+ results.append(node)
else:
results = nodes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/0d09764f/attachment.html>
More information about the calendarserver-changes
mailing list