[CalendarServer-changes] [11229] CalDAVTester/trunk

source_changes at macosforge.org source_changes at macosforge.org
Tue May 21 10:44:43 PDT 2013


Revision: 11229
          http://trac.calendarserver.org//changeset/11229
Author:   cdaboo at apple.com
Date:     2013-05-21 10:44:43 -0700 (Tue, 21 May 2013)
Log Message:
-----------
Add more detailed sharing+sync tests (including ones for CardDAV).

Modified Paths:
--------------
    CalDAVTester/trunk/Resource/Common/POST/sharingreply2.xml
    CalDAVTester/trunk/Resource/Common/POST/sharingreply23.xml
    CalDAVTester/trunk/Resource/Common/POST/sharingreply24.xml
    CalDAVTester/trunk/Resource/Common/POST/sharingreply3.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/implicitsharing.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments-sharing.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-dropbox.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-freebusy.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-moves.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-peruser-data.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-quota.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-sync.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-webcal.xml

Added Paths:
-----------
    CalDAVTester/trunk/Resource/CardDAV/sharing/sync/
    CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/
    CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/1.xml
    CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/2.vcf
    CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/3.vcf
    CalDAVTester/trunk/Resource/Common/POST/sharingremove2.xml
    CalDAVTester/trunk/Resource/Common/REPORT/
    CalDAVTester/trunk/Resource/Common/REPORT/sync-init-level-1.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-init-level-infinite.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token1-level-1.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token1-level-infinite.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token2-level-1.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token2-level-infinite.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token3-level-1.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token3-level-infinite.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token4-level-1.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token4-level-infinite.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token5-level-1.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token5-level-infinite.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token6-level-1.xml
    CalDAVTester/trunk/Resource/Common/REPORT/sync-token6-level-infinite.xml
    CalDAVTester/trunk/scripts/tests/CardDAV/sharing-sync.xml

Added: CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/1.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,20 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<notification xmlns='http://calendarserver.org/ns/'>
+  <dtstamp></dtstamp>
+  <invite-notification shared-type='addressbook'>
+    <uid></uid>
+    <href xmlns='DAV:'>$cuaddrurn2:</href>
+    <invite-noresponse/>
+    <access>
+      <read-write/>
+    </access>
+    <hosturl>
+      <href xmlns='DAV:'>$addressbookpath1:</href>
+    </hosturl>
+    <organizer>
+      <href xmlns='DAV:'>$principaluri1:</href>
+      <common-name>User 01</common-name>
+    </organizer>
+    <summary>My Shared Calendar</summary>
+  </invite-notification>
+</notification>

Added: CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/2.vcf
===================================================================
--- CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/2.vcf	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/2.vcf	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,11 @@
+BEGIN:VCARD
+VERSION:3.0
+N:Thompson;Default;;;
+FN:Default Thompson
+EMAIL;type=INTERNET;type=WORK;type=pref:lthompson at example.com
+TEL;type=WORK;type=pref:1-555-555-5555
+TEL;type=CELL:1-444-444-4444
+item1.ADR;type=WORK;type=pref:;;1245 Test;Sesame Street;California;11111;USA
+item1.X-ABADR:us
+UID:ED7A5AEC-AB19-4CE0-AD6A-2923A3E5C4E1:ABPerson-1
+END:VCARD

Added: CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/3.vcf
===================================================================
--- CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/3.vcf	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CardDAV/sharing/sync/addressbook/3.vcf	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,11 @@
+BEGIN:VCARD
+VERSION:3.0
+N:Thompson;Default;;;
+FN:Default Thompson
+EMAIL;type=INTERNET;type=WORK;type=pref:lthompson at example.com
+TEL;type=WORK;type=pref:1-555-444-3210
+TEL;type=CELL:1-444-444-4444
+item1.ADR;type=WORK;type=pref:;;1245 Test;Sesame Street;California;11111;USA
+item1.X-ABADR:us
+UID:ED7A5AEC-AB19-4CE0-AD6A-2923A3E5C4E1:ABPerson-1
+END:VCARD

Added: CalDAVTester/trunk/Resource/Common/POST/sharingremove2.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/sharingremove2.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/POST/sharingremove2.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<CS:share xmlns:D="DAV:" xmlns:CS="http://calendarserver.org/ns/">
+    <CS:remove>
+        <D:href>$cuaddr2:</D:href>
+        <CS:read-write/>
+    </CS:remove>
+</CS:share>

Modified: CalDAVTester/trunk/Resource/Common/POST/sharingreply2.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/sharingreply2.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/Resource/Common/POST/sharingreply2.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -3,7 +3,7 @@
   <href xmlns='DAV:'>mailto:$email2:</href>
   <invite-accepted/>
   <hosturl>
-    <href xmlns='DAV:'>$calendarhome1:/shared</href>
+    <href xmlns='DAV:'>$hosturl2:</href>
   </hosturl>
   <in-reply-to>$inviteuid2:</in-reply-to>
   <summary>The Shared Calendar</summary>

Modified: CalDAVTester/trunk/Resource/Common/POST/sharingreply23.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/sharingreply23.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/Resource/Common/POST/sharingreply23.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -3,9 +3,9 @@
   <href xmlns='DAV:'>mailto:$email3:</href>
   <invite-accepted/>
   <hosturl>
-    <href xmlns='DAV:'>$calendarhome2:/shared</href>
+    <href xmlns='DAV:'>$hosturl23:</href>
   </hosturl>
-  <in-reply-to>$inviteuid3:</in-reply-to>
+  <in-reply-to>$inviteuid23:</in-reply-to>
   <summary>The Shared Calendar</summary>
   <common-name>$username3:</common-name>
   <first-name>$firstname3:</first-name>

Modified: CalDAVTester/trunk/Resource/Common/POST/sharingreply24.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/sharingreply24.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/Resource/Common/POST/sharingreply24.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -3,9 +3,9 @@
   <href xmlns='DAV:'>mailto:$email4:</href>
   <invite-accepted/>
   <hosturl>
-    <href xmlns='DAV:'>$calendarhome2:/shared</href>
+    <href xmlns='DAV:'>$hosturl24:</href>
   </hosturl>
-  <in-reply-to>$inviteuid4:</in-reply-to>
+  <in-reply-to>$inviteuid24:</in-reply-to>
   <summary>The Shared Calendar</summary>
   <common-name>$username4:</common-name>
   <first-name>$firstname4:</first-name>

Modified: CalDAVTester/trunk/Resource/Common/POST/sharingreply3.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/POST/sharingreply3.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/Resource/Common/POST/sharingreply3.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -3,7 +3,7 @@
   <href xmlns='DAV:'>mailto:$email3:</href>
   <invite-accepted/>
   <hosturl>
-    <href xmlns='DAV:'>$calendarhome1:/shared</href>
+    <href xmlns='DAV:'>$hosturl3:</href>
   </hosturl>
   <in-reply-to>$inviteuid3:</in-reply-to>
   <summary>The Shared Calendar</summary>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-init-level-1.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-init-level-1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-init-level-1.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token/>
+<D:sync-level>1</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-init-level-infinite.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-init-level-infinite.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-init-level-infinite.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token/>
+<D:sync-level>infinite</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token1-level-1.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token1-level-1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token1-level-1.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken1:</D:sync-token>
+<D:sync-level>1</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token1-level-infinite.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token1-level-infinite.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token1-level-infinite.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken1:</D:sync-token>
+<D:sync-level>infinite</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token2-level-1.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token2-level-1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token2-level-1.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken2:</D:sync-token>
+<D:sync-level>1</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token2-level-infinite.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token2-level-infinite.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token2-level-infinite.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken2:</D:sync-token>
+<D:sync-level>infinite</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token3-level-1.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token3-level-1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token3-level-1.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken3:</D:sync-token>
+<D:sync-level>1</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token3-level-infinite.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token3-level-infinite.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token3-level-infinite.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken3:</D:sync-token>
+<D:sync-level>infinite</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token4-level-1.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token4-level-1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token4-level-1.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken4:</D:sync-token>
+<D:sync-level>1</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token4-level-infinite.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token4-level-infinite.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token4-level-infinite.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken4:</D:sync-token>
+<D:sync-level>infinite</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token5-level-1.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token5-level-1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token5-level-1.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken5:</D:sync-token>
+<D:sync-level>1</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token5-level-infinite.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token5-level-infinite.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token5-level-infinite.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken5:</D:sync-token>
+<D:sync-level>infinite</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token6-level-1.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token6-level-1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token6-level-1.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken6:</D:sync-token>
+<D:sync-level>1</D:sync-level>
+</D:sync-collection>

Added: CalDAVTester/trunk/Resource/Common/REPORT/sync-token6-level-infinite.xml
===================================================================
--- CalDAVTester/trunk/Resource/Common/REPORT/sync-token6-level-infinite.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/Common/REPORT/sync-token6-level-infinite.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token>$synctoken6:</D:sync-token>
+<D:sync-level>infinite</D:sync-level>
+</D:sync-collection>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/implicitsharing.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/implicitsharing.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/implicitsharing.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -72,6 +72,10 @@
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 				<variable>$inviteuid3:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl3:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid3:" pswd="$pswd3:" print-response='no'>
 			<method>DELETE</method>
@@ -113,8 +117,12 @@
 			<ruri>$notificationpath3:/</ruri>
 			<grabelement>
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-				<variable>$inviteuid3:</variable>
+				<variable>$inviteuid23:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl23:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid3:" pswd="$pswd3:" print-response='no'>
 			<method>DELETE</method>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments-sharing.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments-sharing.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments-sharing.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -55,6 +55,10 @@
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 				<variable>$inviteuid2:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl2:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 			<method>POST</method>
@@ -79,6 +83,10 @@
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 				<variable>$inviteuid3:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl3:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid3:" pswd="$pswd3:" print-response='no'>
 			<method>POST</method>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-dropbox.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-dropbox.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-dropbox.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -78,8 +78,12 @@
 				</verify>
 				<grabelement>
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid3:</variable>
+					<variable>$inviteuid23:</variable>
 				</grabelement>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+					<variable>$hosturl23:</variable>
+				</grabelement>
 			</request>
 		</test>
 		<test name='3'>
@@ -114,8 +118,12 @@
 				</verify>
 				<grabelement>
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid4:</variable>
+					<variable>$inviteuid24:</variable>
 				</grabelement>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+					<variable>$hosturl24:</variable>
+				</grabelement>
 			</request>
 		</test>
 		<test name='5'>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-freebusy.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-freebusy.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-freebusy.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -53,6 +53,10 @@
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 				<variable>$inviteuid2:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl2:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 			<method>POST</method>
@@ -77,6 +81,10 @@
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 				<variable>$inviteuid3:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl3:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid3:" pswd="$pswd3:" print-response='no'>
 			<method>POST</method>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-moves.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-moves.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-moves.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -53,6 +53,10 @@
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 				<variable>$inviteuid2:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl2:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 			<method>POST</method>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -383,6 +383,7 @@
 						<value>{http://calendarserver.org/ns/}uid</value>
 					</arg>
 				</verify>
+				<graburi>basename($notification2:)</graburi>
 				<grabelement>
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 					<variable>$inviteuid:</variable>
@@ -403,17 +404,13 @@
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>totalcount</name>
-						<value>1</value>
+						<value>2</value>
 					</arg>
 				</verify>
 				<grabelement>
 					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
 					<variable>$synctoken2:</variable>
 				</grabelement>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}response/{DAV:}href</name>
-					<variable>$href2:</variable>
-				</grabelement>
 			</request>
 		</test>
 		<test name='3'>
@@ -439,12 +436,12 @@
 				<verify>
 					<callback>multistatusItems</callback>
 					<arg>
-						<name>prefix</name>
-						<value/>
+						<name>okhrefs</name>
+						<value>$notification:/</value>
 					</arg>
 					<arg>
 						<name>badhrefs</name>
-						<value>$href2:</value>
+						<value>$notification:/$notification2:</value>
 					</arg>
 				</verify>
 				<grabelement>
@@ -582,6 +579,7 @@
 						<value>{http://calendarserver.org/ns/}uid</value>
 					</arg>
 				</verify>
+				<graburi>basename($notification2:)</graburi>
 				<grabelement>
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 					<variable>$inviteuid:</variable>
@@ -602,17 +600,13 @@
 					<callback>multistatusItems</callback>
 					<arg>
 						<name>totalcount</name>
-						<value>1</value>
+						<value>2</value>
 					</arg>
 				</verify>
 				<grabelement>
 					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
 					<variable>$synctoken2:</variable>
 				</grabelement>
-				<grabelement>
-					<name>/{DAV:}multistatus/{DAV:}response/{DAV:}href</name>
-					<variable>$href2:</variable>
-				</grabelement>
 			</request>
 		</test>
 		<test name='3'>
@@ -638,12 +632,12 @@
 				<verify>
 					<callback>multistatusItems</callback>
 					<arg>
-						<name>prefix</name>
-						<value/>
+						<name>okhrefs</name>
+						<value>$notification:/</value>
 					</arg>
 					<arg>
 						<name>badhrefs</name>
-						<value>$href2:</value>
+						<value>$notification:/$notification2:</value>
 					</arg>
 				</verify>
 				<grabelement>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-peruser-data.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-peruser-data.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-peruser-data.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -53,6 +53,10 @@
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 				<variable>$inviteuid2:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl2:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 			<method>POST</method>
@@ -77,6 +81,10 @@
 				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 				<variable>$inviteuid3:</variable>
 			</grabelement>
+			<grabelement>
+				<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+				<variable>$hosturl3:</variable>
+			</grabelement>
 		</request>
 		<request user="$userid3:" pswd="$pswd3:" print-response='no'>
 			<method>POST</method>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-quota.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-quota.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-quota.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -79,8 +79,12 @@
 				</verify>
 				<grabelement>
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid3:</variable>
+					<variable>$inviteuid23:</variable>
 				</grabelement>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+					<variable>$hosturl23:</variable>
+				</grabelement>
 			</request>
 		</test>
 		<test name='3'>
@@ -115,8 +119,12 @@
 				</verify>
 				<grabelement>
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid4:</variable>
+					<variable>$inviteuid24:</variable>
 				</grabelement>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+					<variable>$hosturl24:</variable>
+				</grabelement>
 			</request>
 		</test>
 		<test name='5'>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-sync.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-sync.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-sync.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -55,20 +55,98 @@
 	
 	<test-suite name='Read-write calendar'>
 		<test name='1' ignore='no'>
+			<description>Initial sync tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
 			<description>POST invitation</description>
 			<request print-response='no'>
 				<method>POST</method>
 				<ruri>$calendarhome1:/shared/</ruri>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/CalDAV/sharing/sync/depth1-cache/1.xml</filepath>
+					<filepath>Resource/Common/POST/sharinginvite2.xml</filepath>
 				</data>
 				<verify>
 					<callback>statusCode</callback>
 				</verify>
 			</request>
 		</test>
-		<test name='2'>
+		<test name='3'>
 			<description>Check Sharee notification collection</description>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>WAITCOUNT 1</method>
@@ -91,71 +169,158 @@
 				</verify>
 				<grabelement>
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
-					<variable>$inviteuid:</variable>
+					<variable>$inviteuid2:</variable>
 				</grabelement>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+					<variable>$hosturl2:</variable>
+				</grabelement>
 			</request>
 		</test>
-		<test name='3'>
+		<test name='4'>
 			<description>Sharee replies ACCEPTED</description>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>POST</method>
 				<ruri>$calendarhome2:/</ruri>
 				<data substitutions='yes'>
 					<content-type>application/xml; charset=utf-8</content-type>
-					<filepath>Resource/CalDAV/sharing/sync/depth1-cache/3.xml</filepath>
+					<filepath>Resource/Common/POST/sharingreply2.xml</filepath>
 				</data>
 				<verify>
 					<callback>statusCode</callback>
 				</verify>
 				<grabelement>
 					<name>{DAV:}href</name>
-					<variable>$sharedcalendar:</variable>
+					<variable>basename($sharedcalendar:)</variable>
 				</grabelement>
 			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>DELETEALL</method>
+				<ruri>$notificationpath1:/</ruri>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
 		</test>
-		<test name='4'>
-			<description>Sharer Depth:1 PROPFIND</description>
+		<test name='5' ignore='no'>
+			<description>Updated tokens</description>
 			<request print-response='no'>
-				<method>PROPFIND</method>
+				<method>REPORT</method>
 				<ruri>$calendarhome1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
-				<data>
+				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/Common/PROPFIND/sync-token.xml</filepath>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
 				</data>
 				<verify>
-					<callback>statusCode</callback>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>shared/</value>
+						<value>$notification:/</value>
+					</arg>
 				</verify>
 				<grabelement>
-					<name>$verify-response-prefix:/{DAV:}sync-token</name>
-					<parent>$multistatus-response-prefix:[^{DAV:}href=$calendarhome1:/shared/]</parent>
-					<variable>$synctoken1_1:</variable>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
 				</grabelement>
 			</request>
-		</test>
-		<test name='5'>
-			<description>Sharee Depth:1 PROPFIND</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>ignoremissing</name>
+						<value>1</value>
+					</arg>
+					<arg>
+						<name>okhrefs</name>
+						<value>shared/</value>
+						<value>$notification:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
-				<method>PROPFIND</method>
+				<method>REPORT</method>
 				<ruri>$calendarhome2:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
-				<data>
+				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/Common/PROPFIND/sync-token.xml</filepath>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
 				</data>
 				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+						<value>$notification:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>ignoremissing</name>
+						<value>1</value>
+					</arg>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+						<value>$notification:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
 					<callback>statusCode</callback>
 				</verify>
 				<grabelement>
-					<name>$verify-response-prefix:/{DAV:}sync-token</name>
-					<parent>$multistatus-response-prefix:[^{DAV:}href=$sharedcalendar:/]</parent>
-					<variable>$synctoken2_1:</variable>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken6:</variable>
 				</grabelement>
 			</request>
 		</test>
@@ -163,7 +328,7 @@
 			<description>Sharee creates event</description>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>PUT</method>
-				<ruri>$sharedcalendar:/1.ics</ruri>
+				<ruri>$calendarhome2:/$sharedcalendar:/1.ics</ruri>
 				<data>
 					<content-type>text/calendar; charset=utf-8</content-type>
 					<filepath>Resource/CalDAV/sharing/sync/depth1-cache/4.ics</filepath>
@@ -173,69 +338,126 @@
 				</verify>
 			</request>
 		</test>
-		<test name='7'>
-			<description>Sharer Depth:1 PROPFIND</description>
+		<test name='7' ignore='no'>
+			<description>Updated tokens</description>
 			<request print-response='no'>
-				<method>PROPFIND</method>
+				<method>REPORT</method>
 				<ruri>$calendarhome1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
-				<data>
+				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/Common/PROPFIND/sync-token.xml</filepath>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
 				</data>
 				<verify>
-					<callback>xmlElementMatch</callback>
+					<callback>multistatusItems</callback>
 					<arg>
-						<name>parent</name>
-						<value>$multistatus-response-prefix:[^{DAV:}href=$calendarhome1:/shared/]</value>
+						<name>okhrefs</name>
+						<value>shared/</value>
 					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
 					<arg>
-						<name>exists</name>
-						<value>$verify-response-prefix:/{DAV:}sync-token[!$synctoken1_1:]</value>
+						<name>okhrefs</name>
+						<value>shared/</value>
+						<value>shared/1.ics</value>
 					</arg>
 				</verify>
 				<grabelement>
-					<name>$verify-response-prefix:/{DAV:}sync-token</name>
-					<parent>$multistatus-response-prefix:[^{DAV:}href=$calendarhome1:/shared/]</parent>
-					<variable>$synctoken1_2:</variable>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
 				</grabelement>
 			</request>
-		</test>
-		<test name='8'>
-			<description>Sharee Depth:1 PROPFIND</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
-				<method>PROPFIND</method>
+				<method>REPORT</method>
 				<ruri>$calendarhome2:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
-				<data>
+				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/Common/PROPFIND/sync-token.xml</filepath>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
 				</data>
 				<verify>
-					<callback>xmlElementMatch</callback>
+					<callback>multistatusItems</callback>
 					<arg>
-						<name>parent</name>
-						<value>$multistatus-response-prefix:[^{DAV:}href=$sharedcalendar:/]</value>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
 					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
 					<arg>
-						<name>exists</name>
-						<value>$verify-response-prefix:/{DAV:}sync-token[!$synctoken2_1:]</value>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+						<value>$sharedcalendar:/1.ics</value>
 					</arg>
 				</verify>
 				<grabelement>
-					<name>$verify-response-prefix:/{DAV:}sync-token</name>
-					<parent>$multistatus-response-prefix:[^{DAV:}href=$sharedcalendar:/]</parent>
-					<variable>$synctoken2_2:</variable>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
 				</grabelement>
 			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken6:</variable>
+				</grabelement>
+			</request>
 		</test>
-		<test name='9'>
+		<test name='8'>
 			<description>Sharer changes event</description>
 			<request print-response='no'>
 				<method>PUT</method>
@@ -249,67 +471,394 @@
 				</verify>
 			</request>
 		</test>
-		<test name='10'>
-			<description>Sharer Depth:1 PROPFIND</description>
+		<test name='9' ignore='no'>
+			<description>Updated tokens</description>
 			<request print-response='no'>
-				<method>PROPFIND</method>
+				<method>REPORT</method>
 				<ruri>$calendarhome1:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
-				<data>
+				<data substitutions='yes'>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/Common/PROPFIND/sync-token.xml</filepath>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
 				</data>
 				<verify>
-					<callback>xmlElementMatch</callback>
+					<callback>multistatusItems</callback>
 					<arg>
-						<name>parent</name>
-						<value>$multistatus-response-prefix:[^{DAV:}href=$calendarhome1:/shared/]</value>
+						<name>okhrefs</name>
+						<value>shared/</value>
 					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
 					<arg>
-						<name>exists</name>
-						<value>$verify-response-prefix:/{DAV:}sync-token[!$synctoken1_2:]</value>
+						<name>okhrefs</name>
+						<value>shared/</value>
+						<value>shared/1.ics</value>
 					</arg>
 				</verify>
 				<grabelement>
-					<name>$verify-response-prefix:/{DAV:}sync-token</name>
-					<parent>$multistatus-response-prefix:[^{DAV:}href=$calendarhome1:/shared/]</parent>
-					<variable>$synctoken1_3:</variable>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
 				</grabelement>
 			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+						<value>$sharedcalendar:/1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken6:</variable>
+				</grabelement>
+			</request>
 		</test>
-		<test name='11'>
-			<description>Sharee Depth:1 PROPFIND</description>
+		<test name='10'>
+			<description>Sharee deletes event</description>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
-				<method>PROPFIND</method>
+				<method>DELETE</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/1.ics</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='11' ignore='no'>
+			<description>Updated tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>shared/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>shared/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>shared/1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>badhrefs</name>
+						<value>1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
 				<ruri>$calendarhome2:/</ruri>
-				<header>
-					<name>Depth</name>
-					<value>1</value>
-				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>$sharedcalendar:/1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>badhrefs</name>
+						<value>1.ics</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken6:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='12'>
+			<description>Sharer unshares</description>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome1:/shared/</ruri>
 				<data>
 					<content-type>text/xml; charset=utf-8</content-type>
-					<filepath>Resource/Common/PROPFIND/sync-token.xml</filepath>
+					<filepath>Resource/Common/POST/sharingremove2.xml</filepath>
 				</data>
 				<verify>
-					<callback>xmlElementMatch</callback>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='13' ignore='no'>
+			<description>Updated tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
 					<arg>
-						<name>parent</name>
-						<value>$multistatus-response-prefix:[^{DAV:}href=$sharedcalendar:/]</value>
+						<name>okhrefs</name>
+						<value>shared/</value>
 					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
 					<arg>
-						<name>exists</name>
-						<value>$verify-response-prefix:/{DAV:}sync-token[!$synctoken2_2:]</value>
+						<name>okhrefs</name>
+						<value>shared/</value>
 					</arg>
 				</verify>
 				<grabelement>
-					<name>$verify-response-prefix:/{DAV:}sync-token</name>
-					<parent>$multistatus-response-prefix:[^{DAV:}href=$sharedcalendar:/]</parent>
-					<variable>$synctoken2_3:</variable>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
 				</grabelement>
 			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$notification:/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>ignoremissing</name>
+						<value>1</value>
+					</arg>
+					<arg>
+						<name>okhrefs</name>
+						<value>$notification:/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>404</value>
+					</arg>
+				</verify>
+			</request>
 		</test>
 	</test-suite>
 	

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-webcal.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-webcal.xml	2013-05-21 17:43:34 UTC (rev 11228)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-webcal.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -76,6 +76,10 @@
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 					<variable>$inviteuid2:</variable>
 				</grabelement>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+					<variable>$hosturl2:</variable>
+				</grabelement>
 			</request>
 		</test>
 		<test name='3'>
@@ -112,6 +116,10 @@
 					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
 					<variable>$inviteuid3:</variable>
 				</grabelement>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+					<variable>$hosturl3:</variable>
+				</grabelement>
 			</request>
 		</test>
 		<test name='5'>

Added: CalDAVTester/trunk/scripts/tests/CardDAV/sharing-sync.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CardDAV/sharing-sync.xml	                        (rev 0)
+++ CalDAVTester/trunk/scripts/tests/CardDAV/sharing-sync.xml	2013-05-21 17:44:43 UTC (rev 11229)
@@ -0,0 +1,840 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2013 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+	<description>Test address book/group sharing and cached home sync tokens</description>
+
+	<require-feature>
+		<feature>carddav</feature>
+		<feature>shared-addressbooks</feature>
+		<feature>sync-report</feature>
+	</require-feature>
+
+	<start>
+		<request user="$userid1:" pswd="$pswd1:">
+			<method>DELETE</method>
+			<ruri>$addressbookpath1:/</ruri>
+		</request>
+		<request user="$userid1:" pswd="$pswd1:">
+			<method>DELETEALL</method>
+			<ruri>$notificationpath1:/</ruri>
+		</request>
+		<request user="$userid2:" pswd="$pswd2:">
+			<method>DELETEALL</method>
+			<ruri>$notificationpath2:/</ruri>
+		</request>
+	</start>
+	
+	<test-suite name='Read-write addressbook'>
+		<test name='1' ignore='no'>
+			<description>Initial sync tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>POST invitation</description>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$addressbookpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/sharinginvite2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='3'>
+			<description>Check Sharee notification collection</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>WAITCOUNT 1</method>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>GETNEW</method>
+				<ruri>$notificationpath2:/</ruri>
+				<verify>
+					<callback>xmlDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CardDAV/sharing/sync/addressbook/1.xml</value>
+					</arg>
+					<arg>
+						<name>filter</name>
+						<value>{http://calendarserver.org/ns/}dtstamp</value>
+						<value>{http://calendarserver.org/ns/}uid</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
+					<variable>$inviteuid2:</variable>
+				</grabelement>
+				<grabelement>
+					<name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}hosturl/{DAV:}href</name>
+					<variable>$hosturl2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='4'>
+			<description>Sharee replies ACCEPTED</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>POST</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>application/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/sharingreply2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>{DAV:}href</name>
+					<variable>basename($sharedaddressbook:)</variable>
+				</grabelement>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>DELETEALL</method>
+				<ruri>$notificationpath1:/</ruri>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>Updated tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookpath1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedaddressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedaddressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/$sharedaddressbook:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken6:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='6'>
+			<description>Sharee creates vcard</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>PUT</method>
+				<ruri>$addressbookhome2:/$sharedaddressbook:/1.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/sharing/sync/addressbook/2.vcf</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='7' ignore='no'>
+			<description>Updated tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>$addressbook:/1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookpath1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedaddressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedaddressbook:/</value>
+						<value>$sharedaddressbook:/1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/$sharedaddressbook:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken6:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='8'>
+			<description>Sharer changes event</description>
+			<request print-response='no'>
+				<method>PUT</method>
+				<ruri>$addressbookpath1:/1.vcf</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CardDAV/sharing/sync/addressbook/3.vcf</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='9' ignore='no'>
+			<description>Updated tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+						<value>$addressbook:/1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookpath1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedaddressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedaddressbook:/</value>
+						<value>$sharedaddressbook:/1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/$sharedaddressbook:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken6:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='10'>
+			<description>Sharee deletes event</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>DELETE</method>
+				<ruri>$addressbookhome2:/$sharedaddressbook:/1.vcf</ruri>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='11' ignore='no'>
+			<description>Updated tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>$addressbook:/1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookpath1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>badhrefs</name>
+						<value>1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedaddressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedaddressbook:/</value>
+					</arg>
+					<arg>
+						<name>badhrefs</name>
+						<value>$sharedaddressbook:/1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/$sharedaddressbook:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>badhrefs</name>
+						<value>1.vcf</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken6:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='12'>
+			<description>Sharer unshares</description>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$addressbookpath1:/</ruri>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/POST/sharingremove2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='13' ignore='no'>
+			<description>Updated tokens</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$addressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookpath1:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token3-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken3:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token4-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>badhrefs</name>
+						<value>$sharedaddressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken4:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token5-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>badhrefs</name>
+						<value>$sharedaddressbook:/</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken5:</variable>
+				</grabelement>
+			</request>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$addressbookhome2:/$sharedaddressbook:/</ruri>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token6-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>404</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+	
+	<end>
+		<request user="$useradmin:" pswd="$pswdadmin:">
+			<method>DELETEALL</method>
+			<ruri>$notificationpath1:/</ruri>
+			<ruri>$notificationpath2:/</ruri>
+			<ruri>$notificationpath3:/</ruri>
+			<ruri>$notificationpath4:/</ruri>
+		</request>
+	</end>
+	
+</caldavtest>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130521/19062150/attachment-0001.html>


More information about the calendarserver-changes mailing list