[CalendarServer-changes] [11558]

source_changes at macosforge.org source_changes at macosforge.org
Wed Jul 24 15:54:27 PDT 2013


Revision: 11558
          http://trac.calendarserver.org//changeset/11558
Author:   gaya at apple.com
Date:     2013-07-24 15:54:27 -0700 (Wed, 24 Jul 2013)
Log Message:
-----------
Disable sync report on sharee addressbook and addressbook homes containing shareee addressbooks; Disable CalDAVTests

Modified Paths:
--------------
    CalDAVTester/trunk/scripts/tests/CardDAV/sharing-sync.xml
    CalDAVTester/trunk/scripts/tests/CardDAV/sync-report.xml
    CalendarServer/trunk/twistedcaldav/resource.py

Modified: CalDAVTester/trunk/scripts/tests/CardDAV/sharing-sync.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CardDAV/sharing-sync.xml	2013-07-24 21:48:08 UTC (rev 11557)
+++ CalDAVTester/trunk/scripts/tests/CardDAV/sharing-sync.xml	2013-07-24 22:54:27 UTC (rev 11558)
@@ -42,7 +42,7 @@
 		</request>
 	</start>
 	
-	<test-suite name='Read-write addressbook'>
+	<test-suite name='Read-write addressbook' ignore='yes'>
 		<test name='1' ignore='no'>
 			<description>Initial sync tokens</description>
 			<request print-response='no'>

Modified: CalDAVTester/trunk/scripts/tests/CardDAV/sync-report.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CardDAV/sync-report.xml	2013-07-24 21:48:08 UTC (rev 11557)
+++ CalDAVTester/trunk/scripts/tests/CardDAV/sync-report.xml	2013-07-24 22:54:27 UTC (rev 11558)
@@ -25,17 +25,10 @@
 	</require-feature>
 
 	<start>
-		<description>clean up old data</description>
-		<request user="$useradmin:" pswd="$pswdadmin:">
-			<method>DELETEALL</method>
-			<ruri>$addressbookhome1:/</ruri>
-			<ruri>$addressbookhome2:/</ruri>
-			<ruri>$addressbookhome3:/</ruri>
-			<ruri>$addressbookhome4:/</ruri>
-			<ruri>$notificationpath1:/</ruri>
+		<request print-response='no'>
+			<method>DELETE</method>
+			<ruri>$addressbookpath1:/</ruri>
 		</request>
-
-		<description>add 2 vcards to user1 address book</description>
 		<request>
 			<method>PUT</method>
 			<ruri>$addressbookpath1:/1.vcf</ruri>
@@ -52,63 +45,9 @@
 				<filepath>Resource/CardDAV/vreports/put/2.vcf</filepath>
 			</data>
 		</request>
-		
-		<description>share user2 address book with user1</description>
-		<description>user2 POSTs invitation</description>
-		<request user="$userid2:" pswd="$pswd2:" print-response="no">
-			<method>POST</method>
-			<ruri>$addressbookpath2:/</ruri>
-			<data>
-				<content-type>text/xml; charset=utf-8</content-type>
-				<filepath>Resource/CardDAV/vreports/sharing/1.xml</filepath>
-			</data>
-		</request>
-		<description>Check user1 notification collection and get invite uid</description>
-		<request print-response="no">
-			<method>WAITCOUNT 1</method>
-			<ruri>$notificationpath1:/</ruri>
-		</request>
-		<request print-response="no">
-			<method>GETNEW</method>
-			<ruri>$notificationpath1:/</ruri>
-			<grabelement>
-				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-				<variable>$inviteuid:</variable>
-			</grabelement>
-		</request>
-		<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
-		<request print-response="no">
-			<method>POST</method>
-			<ruri>$addressbookhome1:/</ruri>
-			<data substitutions="yes">
-				<content-type>application/xml; charset=utf-8</content-type>
-				<filepath>Resource/CardDAV/vreports/sharing/2.xml</filepath>
-			</data>
-		</request>
-		<request>
-			<method>DELETE</method>
-			<ruri>$notificationpath1:/$inviteuid:</ruri>
-		</request>
-		<description>add 2 vcards to user2 address book</description>
-		<request user="$userid2:" pswd="$pswd2:">
-			<method>PUT</method>
-			<ruri>$addressbookpath2:/1.vcf</ruri>
-			<data>
-				<content-type>text/vcard; charset=utf-8</content-type>
-				<filepath>Resource/CardDAV/vreports/put/3.vcf</filepath>
-			</data>
-		</request>
-		<request user="$userid2:" pswd="$pswd2:">
-			<method>PUT</method>
-			<ruri>$addressbookpath2:/2.vcf</ruri>
-			<data>
-				<content-type>text/vcard; charset=utf-8</content-type>
-				<filepath>Resource/CardDAV/vreports/put/4.vcf</filepath>
-			</data>
-		</request>
 	</start>
 	
-	<test-suite name='support-report-set/sync-token property' ignore='no'>
+	<test-suite name='support-report-set' ignore='no'>
 		<test name='1' ignore='no'>
 			<description>Not on addressbooks</description>
 			<request>
@@ -234,399 +173,8 @@
 				</verify>
 			</request>
 		</test>
-		<test name='4' ignore='no'>
-			<description>On shared addressbook</description>
-			<request>
-				<method>PROPFIND</method>
-				<ruri>$addressbookhome1:/$userid2:/</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>
-						<value>$verify-property-prefix:/{DAV:}sync-token[+data:,]</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='5'>
-			<description>Look for options header tag on principal</description>
-			<request print-response="no">
-				<method>OPTIONS</method>
-				<ruri>$principal1:</ruri>
-				<verify>
-					<callback>header</callback>
-					<arg>
-						<name>header</name>
-						<value>*DAV$.*calendarserver-home-sync[^-]*</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
 	</test-suite>
 	
-	<test-suite name='simple reports - sync-level' ignore='no'>
-		<test name='1' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:1, depth:0</description>
-			<request print-response='no'>
-				<method>REPORT</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/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$userid2:/</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='2' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:1, 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/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$userid2:/</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='3' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:1, 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/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$userid2:/</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='4' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:infinity, depth:0</description>
-			<request print-response='no'>
-				<method>REPORT</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/9.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$addressbook:/1.vcf</value>
-						<value>$addressbook:/2.vcf</value>
-						<value>$userid2:/</value>
-						<value>$userid2:/1.vcf</value>
-						<value>$userid2:/2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='5' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:infinity, 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/9.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$addressbook:/1.vcf</value>
-						<value>$addressbook:/2.vcf</value>
-						<value>$userid2:/</value>
-						<value>$userid2:/1.vcf</value>
-						<value>$userid2:/2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='6' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:infinity, 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/9.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$addressbook:/1.vcf</value>
-						<value>$addressbook:/2.vcf</value>
-						<value>$userid2:/</value>
-						<value>$userid2:/1.vcf</value>
-						<value>$userid2:/2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='7' ignore='no'>
-			<description>sync-level:1, depth:0</description>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookpath1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>0</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>1.vcf</value>
-						<value>2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='8' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:1, depth:1</description>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookpath1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>1.vcf</value>
-						<value>2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='9' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:1, depth:infinity</description>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookpath1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>infinity</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>1.vcf</value>
-						<value>2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='10' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:infinity, depth:0</description>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookpath1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>0</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/9.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>1.vcf</value>
-						<value>2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='11' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:infinity, depth:1</description>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookpath1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/9.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>1.vcf</value>
-						<value>2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='12' ignore='no'>
-			<require-feature>
-				<feature>sync-report-home</feature>
-			</require-feature>
-			<description>sync-level:infinity, depth:infinity</description>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookpath1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>infinity</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/9.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>1.vcf</value>
-						<value>2.vcf</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-		<test name='13' ignore='no'>
-			<description>Bad sync-level</description>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookpath1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>0</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/10.xml</filepath>
-				</data>
-				<verify>
-					<callback>statusCode</callback>
-					<arg>
-						<name>status</name>
-						<value>400</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 - addressbook depth:1</description>
@@ -672,7 +220,6 @@
 					<arg>
 						<name>okhrefs</name>
 						<value>$addressbook:/</value>
-						<value>$userid2:/</value>
 					</arg>
 				</verify>
 			</request>
@@ -700,9 +247,6 @@
 						<value>$addressbook:/</value>
 						<value>$addressbook:/1.vcf</value>
 						<value>$addressbook:/2.vcf</value>
-						<value>$userid2:/</value>
-						<value>$userid2:/1.vcf</value>
-						<value>$userid2:/2.vcf</value>
 					</arg>
 				</verify>
 			</request>
@@ -766,7 +310,6 @@
 					<arg>
 						<name>okhrefs</name>
 						<value>$addressbook:/</value>
-						<value>$userid2:/</value>
 					</arg>
 				</verify>
 			</request>
@@ -795,9 +338,6 @@
 						<value>$addressbook:/1.vcf</value>
 						<value>$addressbook:/2.vcf</value>
 						<value>$addressbook:/3.vcf</value>
-						<value>$userid2:/</value>
-						<value>$userid2:/1.vcf</value>
-						<value>$userid2:/2.vcf</value>
 					</arg>
 				</verify>
 			</request>
@@ -856,7 +396,6 @@
 					<arg>
 						<name>okhrefs</name>
 						<value>$addressbook:/</value>
-						<value>$userid2:/</value>
 					</arg>
 				</verify>
 			</request>
@@ -884,9 +423,6 @@
 						<value>$addressbook:/</value>
 						<value>$addressbook:/1.vcf</value>
 						<value>$addressbook:/2.vcf</value>
-						<value>$userid2:/</value>
-						<value>$userid2:/1.vcf</value>
-						<value>$userid2:/2.vcf</value>
 					</arg>
 				</verify>
 			</request>
@@ -949,7 +485,6 @@
 					<arg>
 						<name>okhrefs</name>
 						<value>$addressbook:/</value>
-						<value>$userid2:/</value>
 					</arg>
 				</verify>
 			</request>
@@ -977,16 +512,13 @@
 						<value>$addressbook:/</value>
 						<value>$addressbook:/1.vcf</value>
 						<value>$addressbook:/2.vcf</value>
-						<value>$userid2:/</value>
-						<value>$userid2:/1.vcf</value>
-						<value>$userid2:/2.vcf</value>
 					</arg>
 				</verify>
 			</request>
 		</test>
 	</test-suite>
 
-	<test-suite name='simple reports - diff token - no props - addressbook depth:1' ignore='no'>
+	<test-suite name='simple reports - diff token - no props' ignore='no'>
 		<test name='1' ignore='no'>
 			<description>initial query - grab token</description>
 			<request print-response='no'>
@@ -1546,135 +1078,26 @@
 		</require-feature>
 		<test name='1' ignore='no'>
 			<description>Initialize</description>
-			<description>clear user1 address book and unshare user2 address book</description>
-			<request>
+			<request print-response='no'>
 				<method>DELETE</method>
-					<ruri>$addressbookpath1:/</ruri>
-				<verify>
-					<callback>statusCode</callback>
-				</verify>
+				<ruri>$addressbookpath1:/</ruri>
 			</request>
-			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
-				<method>DELETE</method>
-				<ruri>$addressbookpath2:/</ruri>
-				<verify>
-					<callback>statusCode</callback>
-				</verify>
-			</request>
 			<request>
-				<method>DELETEALL</method>
-				<ruri>$notificationpath1:/</ruri>
-				<verify>
-					<callback>statusCode</callback>
-				</verify>
-			</request>
-			<description>share user3 address book with user1</description>
-			<description>user3 POSTs invitation</description>
-			<request user="$userid3:" pswd="$pswd3:" print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookpath3:/</ruri>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/3.xml</filepath>
-				</data>
-			</request>
-			<description>Check user1 notification collection and get invite uid</description>
-			<request print-response="no">
-				<method>WAITCOUNT 1</method>
-				<ruri>$notificationpath1:/</ruri>
-			</request>
-			<request print-response="no">
-				<method>GETNEW</method>
-				<ruri>$notificationpath1:/</ruri>
-				<grabelement>
-					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid:</variable>
-				</grabelement>
-			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
-			<request print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookhome1:/</ruri>
-				<data substitutions="yes">
-					<content-type>application/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/4.xml</filepath>
-				</data>
-			</request>
-			<request>
-				<method>DELETE</method>
-				<ruri>$notificationpath1:/$inviteuid:</ruri>
-			</request>
-			<description>add 2 vcards to user3 address book</description>
-			<request user="$userid3:" pswd="$pswd3:">
 				<method>PUT</method>
-				<ruri>$addressbookpath3:/1.vcf</ruri>
+				<ruri>$addressbookpath1:/1.vcf</ruri>
 				<data>
 					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/5.vcf</filepath>
+					<filepath>Resource/CardDAV/vreports/put/1.vcf</filepath>
 				</data>
 			</request>
-			<request user="$userid3:" pswd="$pswd3:">
-				<method>PUT</method>
-				<ruri>$addressbookpath3:/2.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/6.vcf</filepath>
-				</data>
-			</request>
-	
-			<description>share user4 address book with user1</description>
-			<description>user4 POSTs invitation</description>
-			<request user="$userid4:" pswd="$pswd4:" print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookpath4:/</ruri>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/5.xml</filepath>
-				</data>
-			</request>
-			<description>Check user1 notification collection and get invite uid</description>
-			<request print-response="no">
-				<method>WAITCOUNT 1</method>
-				<ruri>$notificationpath1:/</ruri>
-			</request>
-			<request print-response="no">
-				<method>GETNEW</method>
-				<ruri>$notificationpath1:/</ruri>
-				<grabelement>
-					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid:</variable>
-				</grabelement>
-			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
-			<request print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookhome1:/</ruri>
-				<data substitutions="yes">
-					<content-type>application/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/6.xml</filepath>
-				</data>
-			</request>
 			<request>
-				<method>DELETE</method>
-				<ruri>$notificationpath1:/$inviteuid:</ruri>
-			</request>
-			<description>add 2 vcards to user4 address book</description>
-			<request user="$userid4:" pswd="$pswd4:">
 				<method>PUT</method>
-				<ruri>$addressbookpath4:/1.vcf</ruri>
+				<ruri>$addressbookpath1:/2.vcf</ruri>
 				<data>
 					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/7.vcf</filepath>
+					<filepath>Resource/CardDAV/vreports/put/2.vcf</filepath>
 				</data>
 			</request>
-			<request user="$userid4:" pswd="$pswd4:">
-				<method>PUT</method>
-				<ruri>$addressbookpath4:/2.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/8.vcf</filepath>
-				</data>
-			</request>
 		</test>
 		<test name='2' ignore='no'>
 			<description>initial query - grab token</description>
@@ -1694,12 +1117,8 @@
 					<arg>
 						<name>okhrefs</name>
 						<value>$addressbook:/</value>
-						<value>$userid3:/</value>
-						<value>$userid3:/1.vcf</value>
-						<value>$userid3:/2.vcf</value>
-						<value>$userid4:/</value>
-						<value>$userid4:/1.vcf</value>
-						<value>$userid4:/2.vcf</value>
+						<value>$addressbook:/1.vcf</value>
+						<value>$addressbook:/2.vcf</value>
 					</arg>
 				</verify>
 				<grabelement>
@@ -1712,10 +1131,10 @@
 			<description>new resource</description>
 			<request>
 				<method>PUT</method>
-				<ruri>$addressbookhome1:/$userid3:/3.vcf</ruri>
+				<ruri>$addressbookpath1:/3.vcf</ruri>
 				<data>
 					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/9.vcf</filepath>
+					<filepath>Resource/CardDAV/vreports/put/3.vcf</filepath>
 				</data>
 				<verify>
 					<callback>statusCode</callback>
@@ -1736,8 +1155,8 @@
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid3:/</value>
-						<value>$userid3:/3.vcf</value>
+						<value>$addressbook:/</value>
+						<value>$addressbook:/3.vcf</value>
 					</arg>
 				</verify>
 				<grabelement>
@@ -1750,7 +1169,7 @@
 			<description>remove resource (treated as new)</description>
 			<request>
 				<method>DELETE</method>
-				<ruri>$addressbookhome1:/$userid3:/3.vcf</ruri>
+				<ruri>$addressbookpath1:/3.vcf</ruri>
 				<verify>
 					<callback>statusCode</callback>
 				</verify>
@@ -1770,11 +1189,11 @@
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid3:/</value>
+						<value>$addressbook:/</value>
 					</arg>
 					<arg>
 						<name>badhrefs</name>
-						<value>$userid3:/3.vcf</value>
+						<value>$addressbook:/3.vcf</value>
 					</arg>
 				</verify>
 			</request>
@@ -1796,11 +1215,11 @@
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid3:/</value>
+						<value>$addressbook:/</value>
 					</arg>
 					<arg>
 						<name>badhrefs</name>
-						<value>$userid3:/3.vcf</value>
+						<value>$addressbook:/3.vcf</value>
 					</arg>
 				</verify>
 				<grabelement>
@@ -1813,10 +1232,10 @@
 			<description>changed resource</description>
 			<request>
 				<method>PUT</method>
-				<ruri>$addressbookhome1:/$userid3:/1.vcf</ruri>
+				<ruri>$addressbookpath1:/1.vcf</ruri>
 				<data>
 					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/5.vcf</filepath>
+					<filepath>Resource/CardDAV/vreports/put/1.vcf</filepath>
 				</data>
 				<verify>
 					<callback>statusCode</callback>
@@ -1837,8 +1256,8 @@
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid3:/</value>
-						<value>$userid3:/1.vcf</value>
+						<value>$addressbook:/</value>
+						<value>$addressbook:/1.vcf</value>
 					</arg>
 				</verify>
 				<grabelement>
@@ -1893,12 +1312,8 @@
 					<arg>
 						<name>okhrefs</name>
 						<value>$addressbook:/</value>
-						<value>$userid3:/</value>
-						<value>$userid3:/1.vcf</value>
-						<value>$userid3:/2.vcf</value>
-						<value>$userid4:/</value>
-						<value>$userid4:/1.vcf</value>
-						<value>$userid4:/2.vcf</value>
+						<value>$addressbook:/1.vcf</value>
+						<value>$addressbook:/2.vcf</value>
 					</arg>
 				</verify>
 				<verify>
@@ -1919,10 +1334,10 @@
 			<description>new resource</description>
 			<request>
 				<method>PUT</method>
-				<ruri>$addressbookhome1:/$userid4:/3.vcf</ruri>
+				<ruri>$addressbookpath1:/3.vcf</ruri>
 				<data>
 					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/12.vcf</filepath>
+					<filepath>Resource/CardDAV/vreports/put/3.vcf</filepath>
 				</data>
 				<verify>
 					<callback>statusCode</callback>
@@ -1943,8 +1358,8 @@
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid4:/</value>
-						<value>$userid4:/3.vcf</value>
+						<value>$addressbook:/</value>
+						<value>$addressbook:/3.vcf</value>
 					</arg>
 				</verify>
 				<verify>
@@ -1965,7 +1380,7 @@
 			<description>remove resource (treated as new)</description>
 			<request>
 				<method>DELETE</method>
-				<ruri>$addressbookhome1:/$userid4:/3.vcf</ruri>
+				<ruri>$addressbookpath1:/3.vcf</ruri>
 				<verify>
 					<callback>statusCode</callback>
 				</verify>
@@ -1985,266 +1400,36 @@
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid4:/</value>
+						<value>$addressbook:/</value>
 					</arg>
 					<arg>
 						<name>badhrefs</name>
-						<value>$userid4:/3.vcf</value>
+						<value>$addressbook:/3.vcf</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>$userid4:/</value>
-					</arg>
-					<arg>
-						<name>badhrefs</name>
-						<value>$userid4:/3.vcf</value>
-					</arg>
-				</verify>
-				<verify>
 					<callback>propfindItems</callback>
 					<arg>
-						<name>count</name>
-						<value>2</value>
+						<name>ignore</name>
+						<value>$addressbookpath1:/</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:/$userid4:/1.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/7.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>$userid4:/</value>
-						<value>$userid4:/1.vcf</value>
-					</arg>
-				</verify>
-				<verify>
 					<callback>propfindItems</callback>
 					<arg>
-						<name>okprops</name>
-						<value>{DAV:}getcontenttype</value>
-						<value>{DAV:}getetag</value>
+						<name>ignore</name>
+						<value>$addressbookpath1:/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>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'>
-		<require-feature>
-			<feature>sync-report-home</feature>
-		</require-feature>
-		<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>$userid3:/</value>
-						<value>$userid3:/1.vcf</value>
-						<value>$userid3:/2.vcf</value>
-						<value>$userid4:/</value>
-						<value>$userid4:/1.vcf</value>
-						<value>$userid4:/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 user="$userid3:" pswd="$pswd3:" print-response='no'>
-				<method>DELETE</method>
-				<ruri>$addressbookpath3:/</ruri>
-				<verify>
-					<callback>statusCode</callback>
-				</verify>
-			</request>
-			<request>
-				<method>DELETEALL</method>
-				<ruri>$notificationpath1:/</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>$userid3:/</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>
-			<description>share user3 address book with user1</description>
-			<description>user3 POSTs invitation</description>
-			<request user="$userid3:" pswd="$pswd3:" print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookpath3:/</ruri>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/3.xml</filepath>
-				</data>
-			</request>
-			<description>Check user1 notification collection and get invite uid</description>
-			<request print-response="no">
-				<method>WAITCOUNT 1</method>
-				<ruri>$notificationpath1:/</ruri>
-			</request>
-			<request print-response="no">
-				<method>GETNEW</method>
-				<ruri>$notificationpath1:/</ruri>
-				<grabelement>
-					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid:</variable>
-				</grabelement>
-			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
-			<request print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookhome1:/</ruri>
-				<data substitutions="yes">
-					<content-type>application/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/4.xml</filepath>
-				</data>
-			</request>
-			<request>
-				<method>DELETE</method>
-				<ruri>$notificationpath1:/$inviteuid:</ruri>
-			</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>$userid3:/</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
 		<test name='4' ignore='no'>
-			<description>add addressbook - test previous sync</description>
+			<description>remove resource (treated as old)</description>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/</ruri>
@@ -2252,467 +1437,26 @@
 					<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>$userid3:/</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 - no props - home depth:1' ignore='no'>
-		<require-feature>
-			<feature>sync-report-home</feature>
-		</require-feature>
-		<test name='1' ignore='no'>
-			<description>Initialize</description>
-			<request user="$useradmin:" pswd="$pswdadmin:">
-				<method>DELETEALL</method>
-				<ruri>$addressbookhome1:/</ruri>
-				<ruri>$addressbookhome2:/</ruri>
-				<ruri>$addressbookhome3:/</ruri>
-				<ruri>$addressbookhome4:/</ruri>
-				<ruri>$notificationpath1:/</ruri>
-			</request>
-			<description>share user3 address book with user1</description>
-			<description>user3 POSTs invitation</description>
-			<request user="$userid3:" pswd="$pswd3:" print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookpath3:/</ruri>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/3.xml</filepath>
-				</data>
-			</request>
-			<description>Check user1 notification collection and get invite uid</description>
-			<request print-response="no">
-				<method>WAITCOUNT 1</method>
-				<ruri>$notificationpath1:/</ruri>
-			</request>
-			<request print-response="no">
-				<method>GETNEW</method>
-				<ruri>$notificationpath1:/</ruri>
-				<grabelement>
-					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid:</variable>
-				</grabelement>
-			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
-			<request print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookhome1:/</ruri>
-				<data substitutions="yes">
-					<content-type>application/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/4.xml</filepath>
-				</data>
-			</request>
-			<request>
-				<method>DELETE</method>
-				<ruri>$notificationpath1:/$inviteuid:</ruri>
-			</request>
-			<description>add 2 vcards to user3 address book</description>
-			<request user="$userid3:" pswd="$pswd3:">
-				<method>PUT</method>
-				<ruri>$addressbookpath3:/1.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/5.vcf</filepath>
-				</data>
-			</request>
-			<request user="$userid3:" pswd="$pswd3:">
-				<method>PUT</method>
-				<ruri>$addressbookpath3:/2.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/6.vcf</filepath>
-				</data>
-			</request>
-	
-			<description>share user4 address book with user1</description>
-			<description>user4 POSTs invitation</description>
-			<request user="$userid4:" pswd="$pswd4:" print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookpath4:/</ruri>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/5.xml</filepath>
-				</data>
-			</request>
-			<description>Check user1 notification collection and get invite uid</description>
-			<request print-response="no">
-				<method>WAITCOUNT 1</method>
-				<ruri>$notificationpath1:/</ruri>
-			</request>
-			<request print-response="no">
-				<method>GETNEW</method>
-				<ruri>$notificationpath1:/</ruri>
-				<grabelement>
-					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid:</variable>
-				</grabelement>
-			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
-			<request print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookhome1:/</ruri>
-				<data substitutions="yes">
-					<content-type>application/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/6.xml</filepath>
-				</data>
-			</request>
-			<request>
-				<method>DELETE</method>
-				<ruri>$notificationpath1:/$inviteuid:</ruri>
-			</request>
-			<description>add 2 vcards to user4 address book</description>
-			<request user="$userid4:" pswd="$pswd4:">
-				<method>PUT</method>
-				<ruri>$addressbookpath4:/1.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/7.vcf</filepath>
-				</data>
-			</request>
-			<request user="$userid4:" pswd="$pswd4:">
-				<method>PUT</method>
-				<ruri>$addressbookpath4:/2.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/8.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>1</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$userid3:/</value>
-						<value>$userid4:/</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:/$userid3:/3.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/9.vcf</filepath>
-				</data>
-				<verify>
-					<callback>statusCode</callback>
-				</verify>
-			</request>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookhome1:/</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/12.xml</filepath>
+					<filepath>Resource/CardDAV/vreports/sync/7.xml</filepath>
 				</data>
 				<verify>
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid3:/</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:/$userid3:/3.vcf</ruri>
-				<verify>
-					<callback>statusCode</callback>
-				</verify>
-			</request>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookhome1:/</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/12.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid3:/</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>1</value>
-				</header>
-				<data substitutions='yes'>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/13.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid3:/</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:/$userid3:/1.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/5.vcf</filepath>
-				</data>
-				<verify>
-					<callback>statusCode</callback>
-				</verify>
-			</request>
-			<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/12.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid3:/</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>1</value>
-				</header>
-				<data substitutions='yes'>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/12.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:1' ignore='no'>
-		<require-feature>
-			<feature>sync-report-home</feature>
-		</require-feature>
-		<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>1</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/14.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
 						<value>$addressbook:/</value>
-						<value>$userid3:/</value>
-						<value>$userid4:/</value>
 					</arg>
-				</verify>
-				<verify>
-					<callback>propfindItems</callback>
 					<arg>
-						<name>okprops</name>
-						<value>{DAV:}getcontenttype</value>
-						<value>{DAV:}getetag</value>
+						<name>badhrefs</name>
+						<value>$addressbook:/3.vcf</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:/$userid4:/3.vcf</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/10.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/15.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid4:/</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:/$userid4:/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/15.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid4:/</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/16.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid4:/</value>
-					</arg>
-				</verify>
-				<verify>
-					<callback>propfindItems</callback>
-					<arg>
 						<name>count</name>
-						<value>1</value>
+						<value>2</value>
 					</arg>
 				</verify>
 				<grabelement>
@@ -2725,10 +1469,10 @@
 			<description>changed resource</description>
 			<request>
 				<method>PUT</method>
-				<ruri>$addressbookhome1:/$userid4:/1.vcf</ruri>
+				<ruri>$addressbookpath1:/1.vcf</ruri>
 				<data>
 					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/put/7.vcf</filepath>
+					<filepath>Resource/CardDAV/vreports/put/1.vcf</filepath>
 				</data>
 				<verify>
 					<callback>statusCode</callback>
@@ -2743,13 +1487,14 @@
 				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/15.xml</filepath>
+					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
 				</data>
 				<verify>
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid4:/</value>
+						<value>$addressbook:/</value>
+						<value>$addressbook:/1.vcf</value>
 					</arg>
 				</verify>
 				<verify>
@@ -2777,7 +1522,7 @@
 				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/15.xml</filepath>
+					<filepath>Resource/CardDAV/vreports/sync/6.xml</filepath>
 				</data>
 				<verify>
 					<callback>multistatusItems</callback>
@@ -2798,7 +1543,7 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='simple reports - diff token - delete/create addressbook - home depth:1' ignore='no'>
+	<test-suite name='simple reports - diff token - delete/create addressbook - home depth:infinity' ignore='yes'>
 		<require-feature>
 			<feature>sync-report-home</feature>
 		</require-feature>
@@ -2809,19 +1554,23 @@
 				<ruri>$addressbookhome1:/</ruri>
 				<header>
 					<name>Depth</name>
-					<value>1</value>
+					<value>infinity</value>
 				</header>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/8.xml</filepath>
+					<filepath>Resource/CardDAV/vreports/sync/2.xml</filepath>
 				</data>
 				<verify>
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
 						<value>$addressbook:/</value>
-						<value>$userid3:/</value>
-						<value>$userid4:/</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>
@@ -2834,41 +1583,34 @@
 			<description>remove resource then addressbook</description>
 			<request>
 				<method>DELETE</method>
-				<ruri>$addressbookhome1:/$userid3:/1.vcf</ruri>
+				<ruri>$addressbookhome1:/syncaddressbook3/1.vcf</ruri>
 				<verify>
 					<callback>statusCode</callback>
 				</verify>
 			</request>
 			<request>
 				<method>DELETE</method>
-				<ruri>$addressbookhome1:/$userid3:/2.vcf</ruri>
+				<ruri>$addressbookhome1:/syncaddressbook3/</ruri>
 				<verify>
 					<callback>statusCode</callback>
 				</verify>
 			</request>
-			<request>
-				<method>DELETE</method>
-				<ruri>$addressbookhome1:/$userid3:/</ruri>
-				<verify>
-					<callback>statusCode</callback>
-				</verify>
-			</request>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/</ruri>
 				<header>
 					<name>Depth</name>
-					<value>1</value>
+					<value>infinity</value>
 				</header>
 				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/12.xml</filepath>
+					<filepath>Resource/CardDAV/vreports/sync/3.xml</filepath>
 				</data>
 				<verify>
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>badhrefs</name>
-						<value>$userid3:/</value>
+						<value>syncaddressbook3/</value>
 					</arg>
 				</verify>
 				<grabelement>
@@ -2879,58 +1621,30 @@
 		</test>
 		<test name='3' ignore='no'>
 			<description>add addressbook - test last sync</description>
-			<description>share user3 address book with user1</description>
-			<description>user3 POSTs invitation</description>
-			<request user="$userid3:" pswd="$pswd3:" print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookpath3:/</ruri>
+			<request end-delete="yes">
+				<method>MKCOL</method>
+				<ruri>$addressbookhome1:/syncaddressbook3/</ruri>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/3.xml</filepath>
+					<filepath>Resource/Common/MKCOL/addressbook.xml</filepath>
 				</data>
 			</request>
-			<description>Check user1 notification collection and get invite uid</description>
-			<request print-response="no">
-				<method>WAITCOUNT 1</method>
-				<ruri>$notificationpath1:/</ruri>
-			</request>
-			<request print-response="no">
-				<method>GETNEW</method>
-				<ruri>$notificationpath1:/</ruri>
-				<grabelement>
-					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid:</variable>
-				</grabelement>
-			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
-			<request print-response="no">
-				<method>POST</method>
-				<ruri>$addressbookhome1:/</ruri>
-				<data substitutions="yes">
-					<content-type>application/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sharing/4.xml</filepath>
-				</data>
-			</request>
-			<request>
-				<method>DELETE</method>
-				<ruri>$notificationpath1:/$inviteuid:</ruri>
-			</request>
 			<request print-response='no'>
 				<method>REPORT</method>
 				<ruri>$addressbookhome1:/</ruri>
 				<header>
 					<name>Depth</name>
-					<value>1</value>
+					<value>infinity</value>
 				</header>
-				<data substitutions='yes'>
+				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/13.xml</filepath>
+					<filepath>Resource/CardDAV/vreports/sync/4.xml</filepath>
 				</data>
 				<verify>
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>okhrefs</name>
-						<value>$userid3:/</value>
+						<value>syncaddressbook3/</value>
 					</arg>
 				</verify>
 			</request>
@@ -2942,451 +1656,27 @@
 				<ruri>$addressbookhome1:/</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/12.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid3:/</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-	</test-suite>
-
-	<test-suite name='simple reports - empty inbox' ignore='yes'>
-		<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/CardDAV/vreports/sync/2.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-					</arg>
-				</verify>
-			</request>
-		</test>
-	</test-suite>
-
-	<test-suite name='simple reports - valid token' ignore='no'>
-		<test name='1' ignore='no'>
-			<description>initial query</description>
-			<request print-response='no'>
-				<method>REPORT</method>
-				<ruri>$addressbookpath1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/11.xml</filepath>
-				</data>
-				<verify>
-					<callback>prepostcondition</callback>
-					<arg>
-						<name>error</name>
-						<value>{DAV:}valid-sync-token</value>
-					</arg>
-				</verify>
-			</request>
-		</test>
-	</test-suite>
-
-	<test-suite name='addressbook webdav property change - home depth:infinity' ignore='no'>
-		<require-feature>
-			<feature>sync-report-home</feature>
-		</require-feature>
-		<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>$userid3:/</value>
-						<value>$userid4:/</value>
-						<value>$userid4:/1.vcf</value>
-						<value>$userid4:/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>Change a property</description>
-			<request>
-				<method>PROPPATCH</method>
-				<ruri>$addressbookhome1:/$userid3:/</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/17.xml</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>$userid3:/</value>
+						<value>syncaddressbook3/</value>
 					</arg>
 				</verify>
-				<verify>
-					<callback>xmlElementMatch</callback>
-					<arg>
-						<name>exists</name>
-						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value>
-					</arg>
-				</verify>
 				<grabelement>
 					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
 					<variable>$synctoken1:</variable>
 				</grabelement>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
-			<description>Remove a property</description>
-			<request>
-				<method>PROPPATCH</method>
-				<ruri>$addressbookhome1:/$userid3:/</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/18.xml</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>$userid3:/</value>
-					</arg>
-				</verify>
-				<verify>
-					<callback>xmlElementMatch</callback>
-					<arg>
-						<name>exists</name>
-						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value>
-					</arg>
-				</verify>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
-					<variable>$synctoken1:</variable>
-				</grabelement>
-			</request>
-		</test>
 	</test-suite>
 
-	<test-suite name='addressbook webdav property change - home depth:1' ignore='no'>
-		<require-feature>
-			<feature>sync-report-home</feature>
-		</require-feature>
-		<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/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$userid3:/</value>
-						<value>$userid4:/</value>
-					</arg>
-				</verify>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
-					<variable>$synctoken1:</variable>
-				</grabelement>
-			</request>
-		</test>
-		<test name='2' ignore='no'>
-			<description>Change a property</description>
-			<request>
-				<method>PROPPATCH</method>
-				<ruri>$addressbookhome1:/$userid3:/</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/17.xml</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/12.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid3:/</value>
-					</arg>
-				</verify>
-				<verify>
-					<callback>xmlElementMatch</callback>
-					<arg>
-						<name>exists</name>
-						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value>
-					</arg>
-				</verify>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
-					<variable>$synctoken1:</variable>
-				</grabelement>
-			</request>
-		</test>
-		<test name='3' ignore='no'>
-			<description>Remove a property</description>
-			<request>
-				<method>PROPPATCH</method>
-				<ruri>$addressbookhome1:/$userid3:/</ruri>
-				<data>
-					<content-type>text/vcard; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/18.xml</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/12.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$userid3:/</value>
-					</arg>
-				</verify>
-				<verify>
-					<callback>xmlElementMatch</callback>
-					<arg>
-						<name>exists</name>
-						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value>
-					</arg>
-				</verify>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
-					<variable>$synctoken1:</variable>
-				</grabelement>
-			</request>
-		</test>
-	</test-suite>
-
-
-	<test-suite name='default addressbook property change - home depth:1' ignore='yes'>
-		<require-feature>
-			<feature>sync-report-home</feature>
-		</require-feature>
-		<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/8.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$addressbook:/</value>
-						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
-						<value>$userid3:/</value>
-						<value>$userid4:/</value>
-					</arg>
-				</verify>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
-					<variable>$synctoken1:</variable>
-				</grabelement>
-			</request>
-		</test>
-		<test name='2' ignore='no'>
-			<description>Change property on Inbox</description>
-			<request print-response='no'>
-				<method>PROPPATCH</method>
-				<ruri>$inboxpath1:/</ruri>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/19.xml</filepath>
-				</data>
-				<verify>
-					<callback>propfindItems</callback>
-					<arg>
-						<name>okprops</name>
-						<value>{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL</value>
-					</arg>
-				</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/12.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$inbox:/</value>
-					</arg>
-				</verify>
-				<verify>
-					<callback>xmlElementMatch</callback>
-					<arg>
-						<name>exists</name>
-						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value>
-					</arg>
-				</verify>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
-					<variable>$synctoken1:</variable>
-				</grabelement>
-			</request>
-		</test>
-		<test name='3' ignore='no'>
-			<description>Reset the property</description>
-			<request print-response='no'>
-				<method>PROPPATCH</method>
-				<ruri>$inboxpath1:/</ruri>
-				<data>
-					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CardDAV/vreports/sync/20.xml</filepath>
-				</data>
-				<verify>
-					<callback>propfindItems</callback>
-					<arg>
-						<name>okprops</name>
-						<value>{urn:ietf:params:xml:ns:caldav}schedule-default-calendar-URL</value>
-					</arg>
-				</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/12.xml</filepath>
-				</data>
-				<verify>
-					<callback>multistatusItems</callback>
-					<arg>
-						<name>okhrefs</name>
-						<value>$inbox:/</value>
-					</arg>
-				</verify>
-				<verify>
-					<callback>xmlElementMatch</callback>
-					<arg>
-						<name>exists</name>
-						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken1:]</value>
-					</arg>
-				</verify>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
-					<variable>$synctoken1:</variable>
-				</grabelement>
-			</request>
-		</test>
-	</test-suite>
 	<end>
 		<request user="$useradmin:" pswd="$pswdadmin:">
 			<method>DELETEALL</method>
@@ -3400,6 +1690,5 @@
 			<ruri>$notificationpath4:/</ruri>
 		</request>
 	</end>
-
 	
 </caldavtest>

Modified: CalendarServer/trunk/twistedcaldav/resource.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/resource.py	2013-07-24 21:48:08 UTC (rev 11557)
+++ CalendarServer/trunk/twistedcaldav/resource.py	2013-07-24 22:54:27 UTC (rev 11558)
@@ -1125,7 +1125,9 @@
             result.append(element.Report(carddavxml.AddressBookMultiGet(),))
         if (
             self.isPseudoCalendarCollection() or
-            self.isAddressBookCollection() or
+            (self.isAddressBookCollection()
+                and not self.isShareeResource()) # TEMP:  Disable sync report in shared address books
+                or
             self.isNotificationCollection()
         ) and config.EnableSyncReport:
             # Only allowed on calendar/inbox/addressbook/notification collections
@@ -2690,6 +2692,22 @@
         self.http_MKCALENDAR = None
 
 
+    @inlineCallbacks
+    def report_DAV__sync_collection(self, request, sync_collection):
+        """
+        Generate a sync-collection REPORT.
+        """
+        # not supported on shared addressbooks
+        if len((yield self._newStoreHome.listChildren())) > 1:
+            self.log.error("sync-collection report is not allowed on address book homes containing shared address books: %s" % (self,))
+            raise HTTPError(ErrorResponse(
+                responsecode.FORBIDDEN,
+                element.SupportedReport(),
+                "Report not supported on this resource",
+            ))
+
+        returnValue((yield super(AddressBookHomeResource, self).report_DAV__sync_collection(request, sync_collection)))
+
     @classmethod
     @inlineCallbacks
     def homeFromTransaction(cls, transaction, uid):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130724/b34a7427/attachment-0001.html>


More information about the calendarserver-changes mailing list