[CalendarServer-changes] [4885] CalDAVTester/trunk

source_changes at macosforge.org source_changes at macosforge.org
Mon Dec 21 12:41:56 PST 2009


Revision: 4885
          http://trac.macosforge.org/projects/calendarserver/changeset/4885
Author:   cdaboo at apple.com
Date:     2009-12-21 12:41:53 -0800 (Mon, 21 Dec 2009)
Log Message:
-----------
Tests for partitioning.

Modified Paths:
--------------
    CalDAVTester/trunk/scripts/server/serverinfo-template.xml
    CalDAVTester/trunk/scripts/server/serverinfo.xml
    CalDAVTester/trunk/scripts/server/sslserverinfo.xml

Added Paths:
-----------
    CalDAVTester/trunk/Resource/partitioning/
    CalDAVTester/trunk/Resource/partitioning/1.xml
    CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/
    CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/1.xml
    CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/2.xml
    CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/3.ics
    CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/4.xml
    CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/5.ics
    CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/6.xml
    CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/7.ics
    CalDAVTester/trunk/Resource/partitioning/scheduleauto/
    CalDAVTester/trunk/Resource/partitioning/scheduleauto/1.ics
    CalDAVTester/trunk/Resource/partitioning/scheduleauto/2.ics
    CalDAVTester/trunk/Resource/partitioning/scheduleauto/3.ics
    CalDAVTester/trunk/Resource/partitioning/scheduleauto/4.ics
    CalDAVTester/trunk/Resource/partitioning/simple/
    CalDAVTester/trunk/Resource/partitioning/simple/1.xml
    CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml
    CalDAVTester/trunk/scripts/tests/partitioning-calendaruserproxy.xml
    CalDAVTester/trunk/scripts/tests/partitioning-scheduleimplicitauto.xml
    CalDAVTester/trunk/scripts/tests/partitioning-simple.xml

Added: CalDAVTester/trunk/Resource/partitioning/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/1.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -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/partitioning/calendaruserproxy/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/1.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -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/partitioning/calendaruserproxy/2.xml
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/2.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/2.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -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>$otherprincipaluri2:</D:href></D:group-member-set>
+</D:prop>
+</D:set>
+</D:propertyupdate>

Added: CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/3.ics	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Cyrusoft International\, Inc.//Mulberry v4.0//EN
+VERSION:2.0
+METHOD:REQUEST
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051222T205953Z
+CREATED:20060101T150000Z
+DTSTART;TZID=US/Eastern:20060101T100000
+DURATION:PT1H
+SUMMARY:event 1
+UID:54E181BC7CCC373042B28842 at ninevah.local
+ORGANIZER;CN=User 01:$cuaddralt1:
+ATTENDEE;CN=User 02;RSVP=TRUE:$cuaddralt2:
+ATTENDEE;CN=User 03;RSVP=TRUE:$cuaddralt3:
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/4.xml
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/4.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/4.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -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/partitioning/calendaruserproxy/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/5.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/5.ics	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,30 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Cyrusoft International\, Inc.//Mulberry v4.0//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:20060101T100000
+DURATION:PT1H
+SUMMARY:event 1
+UID:54E181BC7CCC373042B28842 at ninevah.local
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/6.xml
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/6.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/6.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -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/partitioning/calendaruserproxy/7.ics
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/7.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/calendaruserproxy/7.ics	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Cyrusoft International\, Inc.//Mulberry v4.0//EN
+VERSION:2.0
+METHOD:REQUEST
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051222T205953Z
+CREATED:20060101T150000Z
+DTSTART;TZID=US/Eastern:20060101T100000
+DURATION:PT1H
+SUMMARY:event 1
+UID:54E181BC7CCC373042B28842 at ninevah.local
+ORGANIZER;CN=User 01:$othercuaddralt2:
+ATTENDEE;CN=User 02;RSVP=TRUE:$cuaddralt2:
+ATTENDEE;CN=User 03;RSVP=TRUE:$cuaddralt3:
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/partitioning/scheduleauto/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/scheduleauto/1.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/scheduleauto/1.ics	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:20060208T200000Z
+DTEND:20060208T210000Z
+ATTENDEE;CN=$otherusername1:;PARTSTAT=ACCEPTED:$othercuaddralt1:
+ATTENDEE;CN=$username2:;RSVP=TRUE:$cuaddralt2:
+ATTENDEE;CN=$resourcename1::$rcuaddralt1:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$otherusername1::$othercuaddralt1:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/partitioning/scheduleauto/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/scheduleauto/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/scheduleauto/2.ics	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:20060208T200000Z
+DTEND:20060208T210000Z
+ATTENDEE;CN=$otherusername1:;PARTSTAT=ACCEPTED;EMAIL=$otheremail1::$othercuaddrurn1:
+ATTENDEE;CN=$username2:;RSVP=TRUE;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$resourcename1:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0:$rcuaddrurn1:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$otherusername1:;EMAIL=$otheremail1::$othercuaddrurn1:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/partitioning/scheduleauto/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/scheduleauto/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/scheduleauto/3.ics	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,20 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:20060208T200000Z
+DTEND:20060208T210000Z
+ATTENDEE;CN=$otherusername1:;PARTSTAT=ACCEPTED;EMAIL=$otheremail1::$othercuaddrurn1:
+ATTENDEE;CN=$username2:;RSVP=TRUE;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$resourcename1:;PARTSTAT=ACCEPTED:$rcuaddrurn1:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$otherusername1:;EMAIL=$otheremail1::$othercuaddrurn1:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:TRANSPARENT
+X-APPLE-NEEDS-REPLY:TRUE
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/partitioning/scheduleauto/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/scheduleauto/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/scheduleauto/4.ics	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,19 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:event-1
+DTSTART:20060208T200000Z
+DTEND:20060208T210000Z
+ATTENDEE;CN=$otherusername1:;PARTSTAT=ACCEPTED;EMAIL=$otheremail1::$othercuaddrurn1:
+ATTENDEE;CN=$username2:;RSVP=TRUE;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$resourcename1:;PARTSTAT=ACCEPTED:$rcuaddrurn1:
+CREATED:20060110T231240Z
+DESCRIPTION:Call-in
+DTSTAMP:20060309T185105Z
+ORGANIZER;CN=$otherusername1:;SCHEDULE-STATUS=1.2;EMAIL=$otheremail1::$othercuaddrurn1:
+STATUS:CONFIRMED
+SUMMARY:Example
+TRANSP:OPAQUE
+END:VEVENT
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/partitioning/simple/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/partitioning/simple/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/partitioning/simple/1.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -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/scripts/server/serverinfo-partitioning.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml	                        (rev 0)
+++ CalDAVTester/trunk/scripts/server/serverinfo-partitioning.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,648 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE serverinfo SYSTEM "serverinfo.dtd">
+
+<!--
+ Copyright (c) 2006-2009 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>
+	<port>8008</port>
+	<authtype>basic</authtype>
+
+	<features>
+		<feature>auto-accept</feature>					<!-- Auto-accept for rooms & locations -->
+		<feature>ctag</feature>							<!-- ctag extension -->
+		<feature>current-user-principal</feature>		<!-- current-user-principal extension -->
+		<feature>dropbox</feature>						<!-- dropbox extension -->
+		<feature>extended-principal-search</feature>	<!-- Extended principal-property-search REPORT extension -->
+		<feature>expand-property</feature>				<!-- Expand property REPORT -->
+		<feature>implicit-scheduling</feature>			<!-- CalDAV scheduling - implicit -->
+		<feature>maskuid</feature>						<!-- maskuid 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>quota</feature>						<!-- WebDAV QUOTA -->
+		<feature>timezone-service</feature>				<!-- Timezone service extension -->
+		<feature>vavailability</feature>				<!-- VAVAILABILITY on inbox -->
+		<feature>partitioning</feature>					<!-- Partitioned server -->
+	</features>
+
+	<substitutions>
+		<substitution>
+			<key>$host:</key>
+			<value>http://localhost:8008</value>
+		</substitution>
+
+		<!-- 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>
+
+		<!-- 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>
+
+		<!-- 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>
+
+		<!-- 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>
+
+		<!--  Ten user accounts -->
+		<repeat count="10">
+			<!-- 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>
+			<!-- 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>$pathprefix%d:</key>
+				<value>$calendars_uids:$userguid%d:</value>
+			</substitution>
+			<!-- relative path to user calendar-->
+			<substitution>
+				<key>$calendarpath%d:</key>
+				<value>$calendars_uids:$userguid%d:/$calendar:</value>
+			</substitution>
+			<!-- relative path to user inbox-->
+			<substitution>
+				<key>$inboxpath%d:</key>
+				<value>$calendars_uids:$userguid%d:/$inbox:</value>
+			</substitution>
+			<!-- relative path to user outbox-->
+			<substitution>
+				<key>$outboxpath%d:</key>
+				<value>$calendars_uids:$userguid%d:/$outbox:</value>
+			</substitution>
+			<!-- relative path to user dropbox-->
+			<substitution>
+				<key>$dropboxpath%d:</key>
+				<value>$calendars_uids:$userguid%d:/$dropbox:</value>
+			</substitution>
+			<!-- relative path to user freebusy-->
+			<substitution>
+				<key>$freebusypath%d:</key>
+				<value>$calendars_uids:$userguid%d:/$freebusy:</value>
+			</substitution>
+			<!-- relative path to user alternate calendar home-->
+			<substitution>
+				<key>$pathprefixalt%d:</key>
+				<value>$calendars_users:$userid%d:</value>
+			</substitution>
+			<!-- relative path to user alternate calendar-->
+			<substitution>
+				<key>$calendarpathalt%d:</key>
+				<value>$calendars_users:$userid%d:/$calendar:</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>
+		</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>$publicpathprefix%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>
+
+		<!--  Ten resource accounts -->
+		<repeat count="10">
+			<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>$rpathprefix%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>$lpathprefix%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>
+
+
+		<!--  Four Group accounts -->
+		<repeat count="4">
+			<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>
+
+		<!-- 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>$otherpathprefix%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>

Modified: CalDAVTester/trunk/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-template.xml	2009-12-21 17:25:39 UTC (rev 4884)
+++ CalDAVTester/trunk/scripts/server/serverinfo-template.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -39,6 +39,7 @@
 		<feature>quota</feature>						<!-- WebDAV QUOTA -->
 		<feature>timezone-service</feature>				<!-- Timezone service extension -->
 		<feature>vavailability</feature>				<!-- VAVAILABILITY on inbox -->
+		<!-- <feature>partitioning</feature>  -->		<!-- Partitioned server -->
 	</features>
 
 	<substitutions>

Modified: CalDAVTester/trunk/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo.xml	2009-12-21 17:25:39 UTC (rev 4884)
+++ CalDAVTester/trunk/scripts/server/serverinfo.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -39,6 +39,7 @@
 		<feature>quota</feature>						<!-- WebDAV QUOTA -->
 		<feature>timezone-service</feature>				<!-- Timezone service extension -->
 		<feature>vavailability</feature>				<!-- VAVAILABILITY on inbox -->
+		<!-- <feature>partitioning</feature>  -->		<!-- Partitioned server -->
 	</features>
 
 	<substitutions>

Modified: CalDAVTester/trunk/scripts/server/sslserverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/sslserverinfo.xml	2009-12-21 17:25:39 UTC (rev 4884)
+++ CalDAVTester/trunk/scripts/server/sslserverinfo.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -40,6 +40,7 @@
 		<feature>quota</feature>						<!-- WebDAV QUOTA -->
 		<feature>timezone-service</feature>				<!-- Timezone service extension -->
 		<feature>vavailability</feature>				<!-- VAVAILABILITY on inbox -->
+		<!-- <feature>partitioning</feature>  -->		<!-- Partitioned server -->
 	</features>
 
 	<substitutions>

Added: CalDAVTester/trunk/scripts/tests/partitioning-calendaruserproxy.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/partitioning-calendaruserproxy.xml	                        (rev 0)
+++ CalDAVTester/trunk/scripts/tests/partitioning-calendaruserproxy.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,1058 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2007 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>proxy</feature>
+		<feature>partitioning</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/delete/1.txt</filepath>
+			</data>
+		</request>
+		<request user="$otherid2:" pswd="$otherpswd2:" end-delete="yes">
+			<method>PUT</method>
+			<ruri>$othercalendarpath2:/1.ics</ruri>
+			<data>
+				<content-type>text/calendar; charset=utf-8</content-type>
+				<filepath>Resource/delete/1.txt</filepath>
+			</data>
+		</request>
+	</start>
+	
+	<test-suite name='Proxy on node #2' ignore="no">
+		<test name='1'>
+			<description>Verify no group memberships right now</description>
+			<request print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal1:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<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 other02 as read proxy for user01</description>
+			<request print-response="no">
+				<method>PROPPATCH</method>
+				<ruri>$principal1:calendar-proxy-read/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set</value>
+					</arg>
+				</verify>
+			</request>
+			<request print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal1:calendar-proxy-read/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set$&lt;href&gt;$otherprincipaluri2:&lt;/href&gt;</value>
+						<value>DAV:group-membership$</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Verify no group memberships right now</description>
+			<request print-response="no">
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$principal1:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 print-response="no">
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set$</value>
+						<value>DAV:group-membership$&lt;href&gt;$principaluri1:calendar-proxy-read/&lt;/href&gt;</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='7'>
+			<description>Verify access to resource</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<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 scheduling</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>POST</method>
+				<header>
+					<name>Originator</name>
+					<value>$otherprincipal2:</value>
+				</header>
+				<header>
+					<name>Recipient</name>
+					<value>$otherprincipal2:, $principal3:</value>
+				</header>
+				<ruri>$outboxpath1:/</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 other02 as read-only proxy for user01</description>
+			<request print-response="no">
+				<method>PROPPATCH</method>
+				<ruri>$principal1:calendar-proxy-read/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/4.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set</value>
+					</arg>
+				</verify>
+			</request>
+			<request print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal1:calendar-proxy-read/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal1:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<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 other02 as read-write proxy for user01</description>
+			<request print-response="no">
+				<method>PROPPATCH</method>
+				<ruri>$principal1:calendar-proxy-write/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set</value>
+					</arg>
+				</verify>
+			</request>
+			<request print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal1:calendar-proxy-write/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set$&lt;href&gt;$otherprincipaluri2:&lt;/href&gt;</value>
+						<value>DAV:group-membership$</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='14'>
+			<description>Verify no group memberships right now</description>
+			<request print-response="no">
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$principal1:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 print-response="no">
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set$</value>
+						<value>DAV:group-membership$&lt;href&gt;$principaluri1:calendar-proxy-write/&lt;/href&gt;</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='16'>
+			<description>Verify access to resource</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PUT</method>
+				<ruri>$calendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/5.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='18'>
+			<description>Verify access for scheduling</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>POST</method>
+				<header>
+					<name>Originator</name>
+					<value>$othercuaddralt2:</value>
+				</header>
+				<header>
+					<name>Recipient</name>
+					<value>$othercuaddralt2:, $cuaddralt3:</value>
+				</header>
+				<ruri>$outboxpath1:/</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='19'>
+			<description>Verify no access for scheduling</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>POST</method>
+				<header>
+					<name>Originator</name>
+					<value>$principal1:</value>
+				</header>
+				<header>
+					<name>Recipient</name>
+					<value>$otherprincipal2:, $principal3:</value>
+				</header>
+				<ruri>$outboxpath1:/</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>403</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='20'>
+			<description>Clear other02 as read-write proxy for user01</description>
+			<request print-response="no">
+				<method>PROPPATCH</method>
+				<ruri>$principal1:calendar-proxy-write/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/4.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set</value>
+					</arg>
+				</verify>
+			</request>
+			<request print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal1:calendar-proxy-write/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal1:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 group memberships right now</description>
+			<request print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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='23'>
+			<description>Verify no access to resource</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<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 node #1' ignore="no">
+		<test name='1'>
+			<description>Verify no group memberships right now</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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:" print-response="no">
+				<method>GET</method>
+				<ruri>$othercalendarpath2:/1.ics</ruri>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>403</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>Add user02 as read proxy for other02</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPPATCH</method>
+				<ruri>$otherprincipal2:calendar-proxy-read/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set</value>
+					</arg>
+				</verify>
+			</request>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:calendar-proxy-read/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set$&lt;href&gt;$principaluri2:&lt;/href&gt;</value>
+						<value>DAV:group-membership$</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5'>
+			<description>Verify no group memberships right now</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$principal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set$</value>
+						<value>DAV:group-membership$&lt;href&gt;$otherprincipaluri2:calendar-proxy-read/&lt;/href&gt;</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='7'>
+			<description>Verify access to resource</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response="no">
+				<method>GET</method>
+				<ruri>$othercalendarpath2:/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 scheduling</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response="no">
+				<method>POST</method>
+				<header>
+					<name>Originator</name>
+					<value>$principal2:</value>
+				</header>
+				<header>
+					<name>Recipient</name>
+					<value>$principal2:, $principal3:</value>
+				</header>
+				<ruri>$otheroutboxpath1:/</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/7.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>403</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='9'>
+			<description>Clear user02 as read-only proxy for other02</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPPATCH</method>
+				<ruri>$otherprincipal2:calendar-proxy-read/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/4.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set</value>
+					</arg>
+				</verify>
+			</request>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:calendar-proxy-read/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal1:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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:" print-response="no">
+				<method>GET</method>
+				<ruri>$othercalendarpath2:/1.ics</ruri>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>403</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='13'>
+			<description>Add user02 as read-write proxy for other02</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPPATCH</method>
+				<ruri>$otherprincipal2:calendar-proxy-write/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set</value>
+					</arg>
+				</verify>
+			</request>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:calendar-proxy-write/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set$&lt;href&gt;$principaluri2:&lt;/href&gt;</value>
+						<value>DAV:group-membership$</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='14'>
+			<description>Verify no group memberships right now</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$principal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set$</value>
+						<value>DAV:group-membership$&lt;href&gt;$otherprincipaluri2:calendar-proxy-write/&lt;/href&gt;</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='16'>
+			<description>Verify access to resource</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response="no">
+				<method>GET</method>
+				<ruri>$othercalendarpath2:/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="$userid2:" pswd="$pswd2:" print-response="no">
+				<method>PUT</method>
+				<ruri>$othercalendarpath2:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/5.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='18'>
+			<description>Verify access for scheduling</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response="no">
+				<method>POST</method>
+				<header>
+					<name>Originator</name>
+					<value>$cuaddralt2:</value>
+				</header>
+				<header>
+					<name>Recipient</name>
+					<value>$cuaddralt2:, $cuaddralt3:</value>
+				</header>
+				<ruri>$otheroutboxpath1:/</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/7.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='19'>
+			<description>Verify no access for scheduling</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response="no">
+				<method>POST</method>
+				<header>
+					<name>Originator</name>
+					<value>$otherprincipal2:</value>
+				</header>
+				<header>
+					<name>Recipient</name>
+					<value>$principal2:, $principal3:</value>
+				</header>
+				<ruri>$otheroutboxpath1:/</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>403</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='20'>
+			<description>Clear user02 as read-write proxy for other02</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPPATCH</method>
+				<ruri>$otherprincipal2:calendar-proxy-write/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/calendaruserproxy/4.xml</filepath>
+				</data>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>DAV:group-member-set</value>
+					</arg>
+				</verify>
+			</request>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:calendar-proxy-write/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherprincipal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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 group memberships right now</description>
+			<request user="$otherid2:" pswd="$otherpswd2:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$principal2:</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/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='23'>
+			<description>Verify no access to resource</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response="no">
+				<method>GET</method>
+				<ruri>$othercalendarpath2:/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/partitioning-scheduleimplicitauto.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/partitioning-scheduleimplicitauto.xml	                        (rev 0)
+++ CalDAVTester/trunk/scripts/tests/partitioning-scheduleimplicitauto.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,211 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2008 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>Partitioning with auto-accept test</description>
+
+	<require-feature>
+		<feature>auto-accept</feature>
+		<feature>implicit-scheduling</feature>
+		<feature>partitioning</feature>
+	</require-feature>
+
+	<start>
+		<request>
+			<method>DELETEALL</method>
+			<ruri>$pathprefix:/$outbox:/</ruri>
+		</request>
+		<request>
+			<method>DELETEALL</method>
+			<ruri>$pathprefix:/$inbox:/</ruri>
+		</request>
+		<request user="$otherid1:" pswd="$otherpswd1:">
+			<method>DELETEALL</method>
+			<ruri>$otherpathprefix:/$outbox:/</ruri>
+		</request>
+		<request user="$otherid1:" pswd="$otherpswd1:">
+			<method>DELETEALL</method>
+			<ruri>$otherpathprefix:/$inbox:/</ruri>
+		</request>
+		<request user="$userid2:" pswd="$pswd2:">
+			<method>DELETEALL</method>
+			<ruri>$pathprefix2:/$outbox:/</ruri>
+		</request>
+		<request user="$userid2:" pswd="$pswd2:">
+			<method>DELETEALL</method>
+			<ruri>$pathprefix2:/$inbox:/</ruri>
+		</request>
+		<request user="$useradmin:" pswd="$pswdadmin:">
+			<method>DELETEALL</method>
+			<ruri>$rpathprefix1:/$outbox:/</ruri>
+		</request>
+		<request user="$useradmin:" pswd="$pswdadmin:">
+			<method>DELETEALL</method>
+			<ruri>$rpathprefix1:/$inbox:/</ruri>
+		</request>
+		<request user="$useradmin:" pswd="$pswdadmin:">
+			<method>DELETEALL</method>
+			<ruri>$rpathprefix1:/calendar/</ruri>
+		</request>
+	</start>
+	
+	<test-suite name='#1 node 2 user auto-schedules with node #1 resource' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>Create new event</description>
+			<request user="$otherid1:" pswd="$otherpswd1:">
+				<method>PUT</method>
+				<ruri>$othercalendarpath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/scheduleauto/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>DELAY</method>
+				<ruri>4</ruri>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>One item in other01 Inbox</description>
+			<request user="$otherid1:" pswd="$otherpswd1:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$otherinboxpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>count</name>
+						<value>1</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>One item in other01 Calendar</description>
+			<request user="$otherid1:" pswd="$otherpswd1:" print-response="no">
+				<method>GET</method>
+				<ruri>$othercalendarpath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/partitioning/scheduleauto/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>One item in user02 Inbox</description>
+			<request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+				<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/partitioning/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>count</name>
+						<value>1</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>One item in user02 calendar</description>
+			<request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+				<method>GETNEW</method>
+				<ruri>$calendarpath2:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/partitioning/scheduleauto/3.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='6' ignore='no'>
+			<description>No items in resource01 Inbox</description>
+			<request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+				<method>PROPFIND</method>
+				<ruri>$rinboxpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>count</name>
+						<value>0</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='7' ignore='no'>
+			<description>One item in resource01 Calendar</description>
+			<request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+				<method>GETNEW</method>
+				<ruri>$rcalendarpath1:/</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/partitioning/scheduleauto/4.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='8' ignore='no'>
+			<description>Clean-up inboxes</description>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>DELETEALL</method>
+				<ruri>$inboxpath1:/</ruri>
+				<ruri>$inboxpath2:/</ruri>
+				<ruri>$rinboxpath1:/</ruri>
+			</request>
+		</test>
+	</test-suite>
+	
+	<end>
+		<request user="$useradmin:" pswd="$pswdadmin:">
+			<method>DELETEALL</method>
+			<ruri>$otherinboxpath1:/</ruri>
+			<ruri>$othercalendarpath1:/</ruri>
+			<ruri>$inboxpath2:/</ruri>
+			<ruri>$calendarpath2:/</ruri>
+			<ruri>$rinboxpath1:/</ruri>
+			<ruri>$rcalendarpath1:/</ruri>
+		</request>
+	</end>
+	
+</caldavtest>

Added: CalDAVTester/trunk/scripts/tests/partitioning-simple.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/partitioning-simple.xml	                        (rev 0)
+++ CalDAVTester/trunk/scripts/tests/partitioning-simple.xml	2009-12-21 20:41:53 UTC (rev 4885)
@@ -0,0 +1,190 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2008 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 partitioning test</description>
+
+	<require-feature>
+		<feature>partitioning</feature>
+	</require-feature>
+
+	<start/>
+	
+	<test-suite name='Access principals' ignore='no'>
+		<test name='1'>
+			<description>PROPFIND of user on node #1 as user on node #1</description>
+			<request>
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$principal1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/simple/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>PROPFIND of user on node #2 as user on node #1</description>
+			<request>
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$otherprincipal1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/simple/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>PROPFIND of user on node #1 as user on node #2</description>
+			<request user='$otherid1:' pswd='$otherpswd1:'>
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$principal1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/simple/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='4'>
+			<description>PROPFIND of user on node #2 as user on node #2</description>
+			<request user='$otherid1:' pswd='$otherpswd1:'>
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$otherprincipal1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/simple/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='Access calendar homes' ignore='no'>
+		<test name='1'>
+			<description>PROPFIND of user on node #1 as user on node #1</description>
+			<request>
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$pathprefix1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/simple/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>PROPFIND of user on node #2 as user on node #1</description>
+			<request>
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$otherpathprefix1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/simple/1.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 node #1 as user on node #2</description>
+			<request user='$otherid1:' pswd='$otherpswd1:'>
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$pathprefix1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/simple/1.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 node #2 as user on node #2</description>
+			<request user='$otherid1:' pswd='$otherpswd1:'>
+				<method>PROPFIND</method>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<ruri>$otherpathprefix1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/partitioning/simple/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<end/>
+	
+</caldavtest>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20091221/f86a9851/attachment-0001.html>


More information about the calendarserver-changes mailing list