[CalendarServer-changes] [6381] CalDAVTester/trunk

source_changes at macosforge.org source_changes at macosforge.org
Tue Sep 28 13:29:03 PDT 2010


Revision: 6381
          http://trac.macosforge.org/projects/calendarserver/changeset/6381
Author:   cdaboo at apple.com
Date:     2010-09-28 13:29:02 -0700 (Tue, 28 Sep 2010)
Log Message:
-----------
Depth:infinity sync tests (missing notification collection right now).

Modified Paths:
--------------
    CalDAVTester/trunk/Resource/CalDAV/reports/sync/1.xml
    CalDAVTester/trunk/Resource/CardDAV/vreports/sync/1.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sync-report.xml
    CalDAVTester/trunk/scripts/tests/CardDAV/global-addressbook.xml
    CalDAVTester/trunk/scripts/tests/CardDAV/sync-report.xml
    CalDAVTester/trunk/verifiers/xmlElementMatch.py

Modified: CalDAVTester/trunk/Resource/CalDAV/reports/sync/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/reports/sync/1.xml	2010-09-28 17:41:03 UTC (rev 6380)
+++ CalDAVTester/trunk/Resource/CalDAV/reports/sync/1.xml	2010-09-28 20:29:02 UTC (rev 6381)
@@ -2,5 +2,6 @@
 <D:propfind xmlns:D="DAV:">
 <D:prop>
 <D:supported-report-set/>
+<D:sync-token/>
 </D:prop>
 </D:propfind>

Modified: CalDAVTester/trunk/Resource/CardDAV/vreports/sync/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CardDAV/vreports/sync/1.xml	2010-09-28 17:41:03 UTC (rev 6380)
+++ CalDAVTester/trunk/Resource/CardDAV/vreports/sync/1.xml	2010-09-28 20:29:02 UTC (rev 6381)
@@ -2,5 +2,6 @@
 <D:propfind xmlns:D="DAV:">
 <D:prop>
 <D:supported-report-set/>
+<D:sync-token/>
 </D:prop>
 </D:propfind>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml	2010-09-28 17:41:03 UTC (rev 6380)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml	2010-09-28 20:29:02 UTC (rev 6381)
@@ -88,6 +88,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$notificationpath1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/sharing/notification-sync/2.xml</filepath>
@@ -110,6 +114,10 @@
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>REPORT</method>
 				<ruri>$notificationpath2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/sharing/notification-sync/2.xml</filepath>
@@ -153,6 +161,10 @@
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>REPORT</method>
 				<ruri>$notificationpath2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/sharing/notification-sync/4.xml</filepath>
@@ -186,6 +198,10 @@
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>REPORT</method>
 				<ruri>$notificationpath2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/sharing/notification-sync/4.xml</filepath>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sync-report.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sync-report.xml	2010-09-28 17:41:03 UTC (rev 6380)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sync-report.xml	2010-09-28 20:29:02 UTC (rev 6381)
@@ -67,11 +67,44 @@
 		</request>
 	</start>
 	
-	<test-suite name='support-report-set' ignore='no'>
+	<test-suite name='support-report-set/sync-token property' ignore='no'>
 		<test name='1' ignore='no'>
-			<description>Not on calendar-home</description>
-			<request>
+			<description>Not on calendars</description>
+			<request print-response='no'>
 				<method>PROPFIND</method>
+				<ruri>$calendars:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>notexists</name>
+						<value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}supported-report-set</value>
+					</arg>
+					<arg>
+						<name>badprops</name>
+						<value>{DAV:}sync-token</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>On calendar-home</description>
+			<request print-response='no'>
+				<method>PROPFIND</method>
 				<ruri>$pathprefix1:/</ruri>
 				<header>
 					<name>Depth</name>
@@ -82,15 +115,23 @@
 					<filepath>Resource/CalDAV/reports/sync/1.xml</filepath>
 				</data>
 				<verify>
-					<callback>propfindValues</callback>
+					<callback>xmlElementMatch</callback>
 					<arg>
-						<name>props</name>
-						<value>{DAV:}supported-report-set!.*sync-collection.*</value>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value>
 					</arg>
 				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}supported-report-set</value>
+						<value>{DAV:}sync-token</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='3' ignore='no'>
 			<description>On calendar</description>
 			<request>
 				<method>PROPFIND</method>
@@ -104,15 +145,23 @@
 					<filepath>Resource/CalDAV/reports/sync/1.xml</filepath>
 				</data>
 				<verify>
-					<callback>propfindValues</callback>
+					<callback>xmlElementMatch</callback>
 					<arg>
-						<name>props</name>
-						<value>{DAV:}supported-report-set$.*sync-collection.*</value>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value>
 					</arg>
 				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}supported-report-set</value>
+						<value>{DAV:}sync-token</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='4' ignore='no'>
 			<description>On inbox</description>
 			<request>
 				<method>PROPFIND</method>
@@ -126,22 +175,34 @@
 					<filepath>Resource/CalDAV/reports/sync/1.xml</filepath>
 				</data>
 				<verify>
-					<callback>propfindValues</callback>
+					<callback>xmlElementMatch</callback>
 					<arg>
-						<name>props</name>
-						<value>{DAV:}supported-report-set$.*sync-collection.*</value>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value>
 					</arg>
 				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}supported-report-set</value>
+						<value>{DAV:}sync-token</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
 	</test-suite>
 	
 	<test-suite name='simple reports - empty token - no props' ignore='no'>
 		<test name='1' ignore='no'>
-			<description>initial query</description>
+			<description>initial query - calenar collection depth:1</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
@@ -157,7 +218,61 @@
 			</request>
 		</test>
 		<test name='2' ignore='no'>
-			<description>new resource</description>
+			<description>initial query - home depth:1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar1/</value>
+						<value>synccalendar2/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>initial query - home depth:infinity</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar1/</value>
+						<value>synccalendar1/1.ics</value>
+						<value>synccalendar1/2.ics</value>
+						<value>synccalendar2/</value>
+						<value>synccalendar2/1.ics</value>
+						<value>synccalendar2/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>add new resource</description>
 			<request>
 				<method>PUT</method>
 				<ruri>$pathprefix1:/synccalendar1/3.ics</ruri>
@@ -169,9 +284,16 @@
 					<callback>statusCode</callback>
 				</verify>
 			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>new resource - calendar collection depth:1</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
@@ -187,8 +309,63 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
-			<description>remove resource new resource</description>
+		<test name='6' ignore='no'>
+			<description>new resource - home depth:1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar1/</value>
+						<value>synccalendar2/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='7' ignore='no'>
+			<description>new resource - home depth:infinity</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar1/</value>
+						<value>synccalendar1/1.ics</value>
+						<value>synccalendar1/2.ics</value>
+						<value>synccalendar1/3.ics</value>
+						<value>synccalendar2/</value>
+						<value>synccalendar2/1.ics</value>
+						<value>synccalendar2/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='8' ignore='no'>
+			<description>remove new resource</description>
 			<request>
 				<method>DELETE</method>
 				<ruri>$pathprefix1:/synccalendar1/3.ics</ruri>
@@ -196,9 +373,16 @@
 					<callback>statusCode</callback>
 				</verify>
 			</request>
+		</test>
+		<test name='9' ignore='no'>		
+			<description>remove new resource - calendar collection depth:1</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
@@ -213,7 +397,61 @@
 				</verify>
 			</request>
 		</test>
-		<test name='4' ignore='no'>
+		<test name='10' ignore='no'>
+			<description>remove new resource - home depth:1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar1/</value>
+						<value>synccalendar2/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='11' ignore='no'>
+			<description>remove new resource - home depth:infinity</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar1/</value>
+						<value>synccalendar1/1.ics</value>
+						<value>synccalendar1/2.ics</value>
+						<value>synccalendar2/</value>
+						<value>synccalendar2/1.ics</value>
+						<value>synccalendar2/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='12' ignore='no'>
 			<description>changed resource</description>
 			<request>
 				<method>PUT</method>
@@ -226,9 +464,16 @@
 					<callback>statusCode</callback>
 				</verify>
 			</request>
+		</test>
+		<test name='13' ignore='no'>
+			<description>changed resource - calendar collection depth:1</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
@@ -243,14 +488,72 @@
 				</verify>
 			</request>
 		</test>
+		<test name='14' ignore='no'>
+			<description>changed resource - home depth:1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar1/</value>
+						<value>synccalendar2/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='15' ignore='no'>
+			<description>changed resource - home depth:infinity</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar1/</value>
+						<value>synccalendar1/1.ics</value>
+						<value>synccalendar1/2.ics</value>
+						<value>synccalendar2/</value>
+						<value>synccalendar2/1.ics</value>
+						<value>synccalendar2/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
 	</test-suite>
 
-	<test-suite name='simple reports - diff token - no props' ignore='no'>
+	<test-suite name='simple reports - diff token - no props - calendar depth:1' ignore='no'>
 		<test name='1' ignore='no'>
 			<description>initial query - grab token</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
@@ -285,6 +588,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
@@ -314,6 +621,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
@@ -332,6 +643,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/4.xml</filepath>
@@ -365,6 +680,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
@@ -387,6 +706,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
@@ -408,6 +731,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/5.xml</filepath>
@@ -446,6 +773,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/5.xml</filepath>
@@ -481,6 +812,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/5.xml</filepath>
@@ -519,6 +854,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/5.xml</filepath>
@@ -549,6 +888,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/5.xml</filepath>
@@ -591,6 +934,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/6.xml</filepath>
@@ -628,6 +975,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/6.xml</filepath>
@@ -646,6 +997,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/7.xml</filepath>
@@ -682,6 +1037,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/6.xml</filepath>
@@ -712,6 +1071,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$pathprefix1:/synccalendar2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/6.xml</filepath>
@@ -735,12 +1098,639 @@
 		</test>
 	</test-suite>
 
+	<test-suite name='simple reports - diff token - no props - home depth:infinity' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>Initialize</description>
+			<request print-response='no'>
+				<method>DELETE</method>
+				<ruri>$pathprefix1:/synccalendar1/</ruri>
+			</request>
+			<request print-response='no'>
+				<method>DELETE</method>
+				<ruri>$pathprefix1:/synccalendar2/</ruri>
+			</request>
+			<request end-delete="yes">
+				<method>MKCALENDAR</method>
+				<ruri>$pathprefix1:/synccalendar3/</ruri>
+			</request>
+			<request>
+				<method>PUT</method>
+				<ruri>$pathprefix1:/synccalendar3/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/put/1.txt</filepath>
+				</data>
+			</request>
+			<request>
+				<method>PUT</method>
+				<ruri>$pathprefix1:/synccalendar3/2.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/put/2.txt</filepath>
+				</data>
+			</request>
+			<request end-delete="yes">
+				<method>MKCALENDAR</method>
+				<ruri>$pathprefix1:/synccalendar4/</ruri>
+			</request>
+			<request>
+				<method>PUT</method>
+				<ruri>$pathprefix1:/synccalendar4/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/put/1.txt</filepath>
+				</data>
+			</request>
+			<request>
+				<method>PUT</method>
+				<ruri>$pathprefix1:/synccalendar4/2.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/put/2.txt</filepath>
+				</data>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>initial query - grab token</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar3/</value>
+						<value>synccalendar3/1.ics</value>
+						<value>synccalendar3/2.ics</value>
+						<value>synccalendar4/</value>
+						<value>synccalendar4/1.ics</value>
+						<value>synccalendar4/2.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>new resource</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$pathprefix1:/synccalendar3/3.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/put/3.txt</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar3/</value>
+						<value>synccalendar3/3.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>remove resource (treated as new)</description>
+			<request>
+				<method>DELETE</method>
+				<ruri>$pathprefix1:/synccalendar3/3.ics</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar3/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>synccalendar3/3.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>remove resource (treated as old)</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/4.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar3/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>synccalendar3/3.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='6' ignore='no'>
+			<description>changed resource</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$pathprefix1:/synccalendar3/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/put/1.txt</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar3/</value>
+						<value>synccalendar3/1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='7' ignore='no'>
+			<description>no change</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='simple reports - diff token - props - home depth:infinity' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>initial query - grab token</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/5.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar3/</value>
+						<value>synccalendar3/1.ics</value>
+						<value>synccalendar3/2.ics</value>
+						<value>synccalendar4/</value>
+						<value>synccalendar4/1.ics</value>
+						<value>synccalendar4/2.ics</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>new resource</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$pathprefix1:/synccalendar4/3.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/put/3.txt</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar4/</value>
+						<value>synccalendar4/3.ics</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>remove resource (treated as new)</description>
+			<request>
+				<method>DELETE</method>
+				<ruri>$pathprefix1:/synccalendar4/3.ics</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar4/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>synccalendar4/3.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>remove resource (treated as old)</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/7.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar4/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>synccalendar4/3.ics</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>ignore</name>
+						<value>$pathprefix1:/synccalendar4/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>ignore</name>
+						<value>$pathprefix1:/synccalendar4/3.ics</value>
+					</arg>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>changed resource</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$pathprefix1:/synccalendar4/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/put/1.txt</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar4/</value>
+						<value>synccalendar4/1.ics</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='6' ignore='no'>
+			<description>no change</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='simple reports - diff token - delete/create calendar - home depth:infinity' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>initial query - grab token</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$inbox:/</value>
+						<value>synccalendar3/</value>
+						<value>synccalendar3/1.ics</value>
+						<value>synccalendar3/2.ics</value>
+						<value>synccalendar4/</value>
+						<value>synccalendar4/1.ics</value>
+						<value>synccalendar4/2.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>remove resource then calendar</description>
+			<request>
+				<method>DELETE</method>
+				<ruri>$pathprefix1:/synccalendar3/1.ics</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>DELETE</method>
+				<ruri>$pathprefix1:/synccalendar3/</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>badhrefs</name>
+						<value>synccalendar3/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>add calendar - test last sync</description>
+			<request>
+				<method>MKCALENDAR</method>
+				<ruri>$pathprefix1:/synccalendar3/</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/4.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar3/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>add calendar - test previous sync</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$pathprefix1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>synccalendar3/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
 	<test-suite name='simple reports - empty inbox' ignore='no'>
 		<test name='1' ignore='no'>
 			<description>initial query</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$inboxpath1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/reports/sync/2.xml</filepath>

Modified: CalDAVTester/trunk/scripts/tests/CardDAV/global-addressbook.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CardDAV/global-addressbook.xml	2010-09-28 17:41:03 UTC (rev 6380)
+++ CalDAVTester/trunk/scripts/tests/CardDAV/global-addressbook.xml	2010-09-28 20:29:02 UTC (rev 6381)
@@ -59,6 +59,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/$global_addressbook:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/global-addressbook/1.xml</filepath>
@@ -80,6 +84,10 @@
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome2:/$global_addressbook:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/global-addressbook/1.xml</filepath>
@@ -115,6 +123,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/$global_addressbook:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/global-addressbook/3.xml</filepath>
@@ -137,6 +149,10 @@
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome2:/$global_addressbook:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/global-addressbook/4.xml</filepath>
@@ -173,6 +189,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/$global_addressbook:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/global-addressbook/6.xml</filepath>
@@ -195,6 +215,10 @@
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome2:/$global_addressbook:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/global-addressbook/7.xml</filepath>

Modified: CalDAVTester/trunk/scripts/tests/CardDAV/sync-report.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CardDAV/sync-report.xml	2010-09-28 17:41:03 UTC (rev 6380)
+++ CalDAVTester/trunk/scripts/tests/CardDAV/sync-report.xml	2010-09-28 20:29:02 UTC (rev 6381)
@@ -77,10 +77,10 @@
 	
 	<test-suite name='support-report-set' ignore='no'>
 		<test name='1' ignore='no'>
-			<description>Not on calendar-home</description>
+			<description>Not on addressbooks</description>
 			<request>
 				<method>PROPFIND</method>
-				<ruri>$addressbookhome1:/</ruri>
+				<ruri>$addressbooks:/</ruri>
 				<header>
 					<name>Depth</name>
 					<value>0</value>
@@ -90,18 +90,59 @@
 					<filepath>Resource/CardDAV/vreports/sync/1.xml</filepath>
 				</data>
 				<verify>
-					<callback>propfindValues</callback>
+					<callback>xmlElementMatch</callback>
 					<arg>
-						<name>props</name>
-						<value>{DAV:}supported-report-set!.*sync-collection.*</value>
+						<name>notexists</name>
+						<value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value>
 					</arg>
 				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}supported-report-set</value>
+					</arg>
+					<arg>
+						<name>badprops</name>
+						<value>{DAV:}sync-token</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
 		<test name='2' ignore='no'>
-			<description>On calendar</description>
+			<description>On addressbook-home</description>
 			<request>
 				<method>PROPFIND</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/1.xml</filepath>
+				</data>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}supported-report-set</value>
+						<value>{DAV:}sync-token</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>On addressbook</description>
+			<request>
+				<method>PROPFIND</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
 				<header>
 					<name>Depth</name>
@@ -112,22 +153,34 @@
 					<filepath>Resource/CardDAV/vreports/sync/1.xml</filepath>
 				</data>
 				<verify>
-					<callback>propfindValues</callback>
+					<callback>xmlElementMatch</callback>
 					<arg>
-						<name>props</name>
-						<value>{DAV:}supported-report-set$.*sync-collection.*</value>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{DAV:}supported-report-set/{DAV:}supported-report/{DAV:}report/{DAV:}sync-collection</value>
 					</arg>
 				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}supported-report-set</value>
+						<value>{DAV:}sync-token</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
 	</test-suite>
 	
 	<test-suite name='simple reports - empty token - no props' ignore='no'>
 		<test name='1' ignore='no'>
-			<description>initial query</description>
+			<description>initial query - addressbook depth:1</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
@@ -143,7 +196,59 @@
 			</request>
 		</test>
 		<test name='2' ignore='no'>
-			<description>new resource</description>
+			<description>initial query - home depth:1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook1/</value>
+						<value>syncaddressbook2/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>initial query - home depth:infinity</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook1/</value>
+						<value>syncaddressbook1/1.vcf</value>
+						<value>syncaddressbook1/2.vcf</value>
+						<value>syncaddressbook2/</value>
+						<value>syncaddressbook2/1.vcf</value>
+						<value>syncaddressbook2/2.vcf</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>add new resource</description>
 			<request>
 				<method>PUT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/3.vcf</ruri>
@@ -155,9 +260,16 @@
 					<callback>statusCode</callback>
 				</verify>
 			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>new resource - addressbook depth:1</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
@@ -173,8 +285,61 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
-			<description>remove resource new resource</description>
+		<test name='6' ignore='no'>
+			<description>new resource - home depth:1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook1/</value>
+						<value>syncaddressbook2/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='7' ignore='no'>
+			<description>new resource - home depth:infinity</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook1/</value>
+						<value>syncaddressbook1/1.vcf</value>
+						<value>syncaddressbook1/2.vcf</value>
+						<value>syncaddressbook1/3.vcf</value>
+						<value>syncaddressbook2/</value>
+						<value>syncaddressbook2/1.vcf</value>
+						<value>syncaddressbook2/2.vcf</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='8' ignore='no'>
+			<description>remove new resource</description>
 			<request>
 				<method>DELETE</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/3.vcf</ruri>
@@ -182,9 +347,16 @@
 					<callback>statusCode</callback>
 				</verify>
 			</request>
+		</test>
+		<test name='9' ignore='no'>
+			<description>remove new resource - addressbook depth:1</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
@@ -199,7 +371,59 @@
 				</verify>
 			</request>
 		</test>
-		<test name='4' ignore='no'>
+		<test name='10' ignore='no'>
+			<description>remove new resource - home depth:1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook1/</value>
+						<value>syncaddressbook2/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='11' ignore='no'>
+			<description>remove new resource - home depth:infinity</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook1/</value>
+						<value>syncaddressbook1/1.vcf</value>
+						<value>syncaddressbook1/2.vcf</value>
+						<value>syncaddressbook2/</value>
+						<value>syncaddressbook2/1.vcf</value>
+						<value>syncaddressbook2/2.vcf</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='12' ignore='no'>
 			<description>changed resource</description>
 			<request>
 				<method>PUT</method>
@@ -212,9 +436,16 @@
 					<callback>statusCode</callback>
 				</verify>
 			</request>
+		</test>
+		<test name='13' ignore='no'>
+			<description>changed resource - addressbook depth:1</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
@@ -229,6 +460,58 @@
 				</verify>
 			</request>
 		</test>
+		<test name='14' ignore='no'>
+			<description>changed resource - home depth:1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook1/</value>
+						<value>syncaddressbook2/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='15' ignore='no'>
+			<description>changed resource - home depth:infinity</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook1/</value>
+						<value>syncaddressbook1/1.vcf</value>
+						<value>syncaddressbook1/2.vcf</value>
+						<value>syncaddressbook2/</value>
+						<value>syncaddressbook2/1.vcf</value>
+						<value>syncaddressbook2/2.vcf</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
 	</test-suite>
 
 	<test-suite name='simple reports - diff token - no props' ignore='no'>
@@ -237,6 +520,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
@@ -271,6 +558,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
@@ -300,6 +591,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
@@ -318,6 +613,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/4.xml</filepath>
@@ -351,6 +650,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
@@ -373,6 +676,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
@@ -394,6 +701,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/5.xml</filepath>
@@ -432,6 +743,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/5.xml</filepath>
@@ -467,6 +782,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/5.xml</filepath>
@@ -505,6 +824,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/5.xml</filepath>
@@ -535,6 +858,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/5.xml</filepath>
@@ -577,6 +904,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
@@ -614,6 +945,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
@@ -632,6 +967,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/7.xml</filepath>
@@ -668,6 +1007,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
@@ -698,6 +1041,10 @@
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>1</value>
+				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
 					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
@@ -721,6 +1068,658 @@
 		</test>
 	</test-suite>
 
+	<test-suite name='simple reports - diff token - no props - home depth:infinity' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>Initialize</description>
+			<request print-response='no'>
+				<method>DELETE</method>
+				<ruri>$addressbookhome1:/syncaddressbook1/</ruri>
+			</request>
+			<request print-response='no'>
+				<method>DELETE</method>
+				<ruri>$addressbookhome1:/syncaddressbook2/</ruri>
+			</request>
+			<request end-delete="yes">
+				<method>MKCOL</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/MKCOL/addressbook.xml</filepath>
+				</data>
+			</request>
+			<request>
+				<method>PUT</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/1.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/put/1.vcf</filepath>
+				</data>
+			</request>
+			<request>
+				<method>PUT</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/2.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/put/2.vcf</filepath>
+				</data>
+			</request>
+			<request end-delete="yes">
+				<method>MKCOL</method>
+				<ruri>$addressbookhome1:/syncaddressbook4/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/MKCOL/addressbook.xml</filepath>
+				</data>
+			</request>
+			<request>
+				<method>PUT</method>
+				<ruri>$addressbookhome1:/syncaddressbook4/1.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/put/1.vcf</filepath>
+				</data>
+			</request>
+			<request>
+				<method>PUT</method>
+				<ruri>$addressbookhome1:/syncaddressbook4/2.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/put/2.vcf</filepath>
+				</data>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>initial query - grab token</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook3/</value>
+						<value>syncaddressbook3/1.vcf</value>
+						<value>syncaddressbook3/2.vcf</value>
+						<value>syncaddressbook4/</value>
+						<value>syncaddressbook4/1.vcf</value>
+						<value>syncaddressbook4/2.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>new resource</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/3.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/put/3.vcf</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook3/</value>
+						<value>syncaddressbook3/3.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>remove resource (treated as new)</description>
+			<request>
+				<method>DELETE</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/3.vcf</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook3/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>syncaddressbook3/3.vcf</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>remove resource (treated as old)</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/4.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook3/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>syncaddressbook3/3.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='6' ignore='no'>
+			<description>changed resource</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/1.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/put/1.vcf</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook3/</value>
+						<value>syncaddressbook3/1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='7' ignore='no'>
+			<description>no change</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='simple reports - diff token - props - home depth:infinity' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>initial query - grab token</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/5.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook3/</value>
+						<value>syncaddressbook3/1.vcf</value>
+						<value>syncaddressbook3/2.vcf</value>
+						<value>syncaddressbook4/</value>
+						<value>syncaddressbook4/1.vcf</value>
+						<value>syncaddressbook4/2.vcf</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>new resource</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$addressbookhome1:/syncaddressbook4/3.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/put/3.vcf</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook4/</value>
+						<value>syncaddressbook4/3.vcf</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>remove resource (treated as new)</description>
+			<request>
+				<method>DELETE</method>
+				<ruri>$addressbookhome1:/syncaddressbook4/3.vcf</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook4/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>syncaddressbook4/3.vcf</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>ignore</name>
+						<value>$addressbookhome1:/syncaddressbook4/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>ignore</name>
+						<value>$addressbookhome1:/syncaddressbook4/3.vcf</value>
+					</arg>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>remove resource (treated as old)</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/7.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook4/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>syncaddressbook4/3.vcf</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>ignore</name>
+						<value>$addressbookhome1:/syncaddressbook4/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>ignore</name>
+						<value>$addressbookhome1:/syncaddressbook4/3.vcf</value>
+					</arg>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>changed resource</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/1.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/put/1.vcf</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook3/</value>
+						<value>syncaddressbook3/1.vcf</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='6' ignore='no'>
+			<description>no change</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+				</verify>
+				<verify>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{DAV:}getcontenttype</value>
+						<value>{DAV:}getetag</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='simple reports - diff token - delete/create addressbook - home depth:infinity' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>initial query - grab token</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>syncaddressbook3/</value>
+						<value>syncaddressbook3/1.vcf</value>
+						<value>syncaddressbook3/2.vcf</value>
+						<value>syncaddressbook4/</value>
+						<value>syncaddressbook4/1.vcf</value>
+						<value>syncaddressbook4/2.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>remove resource then addressbook</description>
+			<request>
+				<method>DELETE</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/1.vcf</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>DELETE</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>badhrefs</name>
+						<value>syncaddressbook3/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>add addressbook - test last sync</description>
+			<request end-delete="yes">
+				<method>MKCOL</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/MKCOL/addressbook.xml</filepath>
+				</data>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/4.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook3/</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>add addressbook - test previous sync</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>infinity</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>syncaddressbook3/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+	</test-suite>
+
 	<end/>
 	
 </caldavtest>

Modified: CalDAVTester/trunk/verifiers/xmlElementMatch.py
===================================================================
--- CalDAVTester/trunk/verifiers/xmlElementMatch.py	2010-09-28 17:41:03 UTC (rev 6380)
+++ CalDAVTester/trunk/verifiers/xmlElementMatch.py	2010-09-28 20:29:02 UTC (rev 6381)
@@ -109,8 +109,8 @@
                          
                             
         for path in notexists:
-            if tree.find(path) is not None:
-                resulttxt += "        Items returned in XML for %s: %s\n" % (path,)
+            if tree.findall(path):
+                resulttxt += "        Items returned in XML for %s\n" % (path,)
                 result = False
             
                 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100928/4dd8da62/attachment-0001.html>


More information about the calendarserver-changes mailing list