[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