[CalendarServer-changes] [11782] CalDAVTester/branches/users/gaya/sharedgroupfixestester

source_changes at macosforge.org source_changes at macosforge.org
Thu Oct 3 12:47:20 PDT 2013


Revision: 11782
          http://trac.calendarserver.org//changeset/11782
Author:   gaya at apple.com
Date:     2013-10-03 12:47:20 -0700 (Thu, 03 Oct 2013)
Log Message:
-----------
merge in r11744 through r11780

Revision Links:
--------------
    http://trac.calendarserver.org//changeset/11744
    http://trac.calendarserver.org//changeset/11780

Modified Paths:
--------------
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/README.txt
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo-partitioning.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo-template.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/caldavtest.dtd
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/current-user-principal.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/managed-attachments.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/prefer.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/sharing-sync.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/sync-report.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/caldavtest.dtd
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-groups.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-sync.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/caldavtest.py
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/manager.py
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/request.py
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/xmlDefs.py
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/verifiers/calendarDataMatch.py

Added Paths:
-----------
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/Resource/CalDAV/bad-ical/
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/Resource/CalDAV/bad-json/
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/Resource/CalDAV/reports/sync/21.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/Resource/CalDAV/vtodos/
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/bad-ical.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/bad-json.xml
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/vtodos.xml

Property Changed:
----------------
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/
    CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/


Property changes on: CalDAVTester/branches/users/gaya/sharedgroupfixestester
___________________________________________________________________
Modified: svn:mergeinfo
   - /CalDAVTester/branches/release/CalDAVTester-3.0-dev:7584
/CalDAVTester/branches/release/CalDAVTester-4.3-dev:10193
/CalDAVTester/branches/users/cdaboo/attendee-comments-2887:2888-2910
/CalDAVTester/branches/users/cdaboo/better-proxy-3148:3149-3163
/CalDAVTester/branches/users/cdaboo/component-set-fixes:8221-8346
/CalDAVTester/branches/users/cdaboo/conditional-4466:4467-4469
/CalDAVTester/branches/users/cdaboo/implicitauto-2948:2949-2989
/CalDAVTester/branches/users/cdaboo/location-partial-accept-3574:3575-3581
/CalDAVTester/branches/users/cdaboo/managed-attachments:9986-10145
/CalDAVTester/branches/users/cdaboo/normalize-cuaddr-3533:3534-3558
/CalDAVTester/branches/users/cdaboo/pycalendar:7160-7206
/CalDAVTester/branches/users/cdaboo/pycard:7226-7237
/CalDAVTester/branches/users/cdaboo/sharing-5228:5229-5440
/CalDAVTester/branches/users/gaya/sharedgroupstester-3:11181-11204
   + /CalDAVTester/branches/release/CalDAVTester-3.0-dev:7584
/CalDAVTester/branches/release/CalDAVTester-4.3-dev:10193
/CalDAVTester/branches/users/cdaboo/attendee-comments-2887:2888-2910
/CalDAVTester/branches/users/cdaboo/better-proxy-3148:3149-3163
/CalDAVTester/branches/users/cdaboo/component-set-fixes:8221-8346
/CalDAVTester/branches/users/cdaboo/conditional-4466:4467-4469
/CalDAVTester/branches/users/cdaboo/implicitauto-2948:2949-2989
/CalDAVTester/branches/users/cdaboo/location-partial-accept-3574:3575-3581
/CalDAVTester/branches/users/cdaboo/managed-attachments:9986-10145
/CalDAVTester/branches/users/cdaboo/normalize-cuaddr-3533:3534-3558
/CalDAVTester/branches/users/cdaboo/pycalendar:7160-7206
/CalDAVTester/branches/users/cdaboo/pycard:7226-7237
/CalDAVTester/branches/users/cdaboo/sharing-5228:5229-5440
/CalDAVTester/branches/users/gaya/sharedgroupstester-3:11181-11204
/CalDAVTester/trunk:11744-11780

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/README.txt
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/README.txt	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/README.txt	2013-10-03 19:47:20 UTC (rev 11782)
@@ -12,12 +12,25 @@
 
 COMMAND LINE OPTIONS
 
-testcaldav.py [-s filename] [-p filename] [-d] [--ssl] [--all] [--random] \
+testcaldav.py \
+	[-s filename] \
+	[-x dirpath] \
+	[--ssl] \
+	[--all] \
+	[--random] \
+	[--random-seed SEED] \
+	[--print-details-onfail] \
+	[--always-print-request] \
+	[--always-print-response] \
+	[--exclude filename] \
 	file1 file2 ...
 
 	-s : filename specifies the file to use for server information
 	(default is 'serverinfo.xml').
 
+	-x : directory path for test scripts
+	(default is 'scripts/tests').
+
 	-p : filename specifies the file to use to populate the server with
 	data. Server data population only occurs when this option is
 	present.
@@ -32,6 +45,16 @@
 	caldavtest.dtd are executed.
 
 	--random : randomize the order in which the tests are run.
+	
+	--random-seed SEED : a specific randon seed to use.
+	
+	--print-details-onfail : print HTTP request/response when a test fails.
+	
+	--always-print-request : always print HTTP request.
+	
+	--always-print-response : always print HTTP response.
+	
+	--exclude FILE : when running with --all, exclude the file from the test run. 
 
 	file1 file2 ...: a list of test files to execute tests from.
 

Copied: CalDAVTester/branches/users/gaya/sharedgroupfixestester/Resource/CalDAV/reports/sync/21.xml (from rev 11780, CalDAVTester/trunk/Resource/CalDAV/reports/sync/21.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/Resource/CalDAV/reports/sync/21.xml	                        (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/Resource/CalDAV/reports/sync/21.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:sync-collection xmlns:D="DAV:">
+<D:sync-token/>
+<D:sync-level>0</D:sync-level>
+<D:limit><D:nresults>10</D:nresults></D:limit>
+</D:sync-collection>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo-partitioning.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo-partitioning.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo-partitioning.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -38,6 +38,7 @@
 		<feature>principal-search-property-set REPORT</feature>	<!-- ACL principal-search-property-set REPORT -->
 
 		<feature>add-member</feature>					<!-- Add-member used to create resources -->
+		<!-- <feature>auth-on-root</feature> -->		<!-- Whether the server requires authentication on the root URI -->
 		<feature>brief</feature>					    <!-- Brief header for PROPFIND, REPORT -->
 		<feature>bulk-post</feature>					<!-- Bulk POST requests -->
 		<feature>ctag</feature>							<!-- ctag extension -->
@@ -55,6 +56,7 @@
 		<!-- <feature>quota-on-resources</feature> -->	<!-- WebDAV QUOTA on calendar and address book object resources -->
 		<feature>resource-id</feature>					<!-- WebDAV BIND DAV:resource-id property -->
 		<feature>sync-report</feature>					<!-- WebDAV collection sync REPORT -->
+		<!-- <feature>sync-report-limit</feature> -->	<!-- WebDAV collection sync REPORT DAV:limit support -->
 		<feature>sync-report-home</feature>				<!-- WebDAV collection sync REPORT on Homes -->
 		<feature>well-known</feature>					<!-- well-known feature -->
 
@@ -65,6 +67,7 @@
 
 		<!-- CalDAV specific extension -->
 		<feature>caldav</feature>					    <!-- Basic CalDAV feature enabler -->
+		<feature>attachments-collection</feature>		<!-- Server uses a collection in same WebDAV tree to store attachments -->
 		<feature>auto-accept</feature>					<!-- Auto-accept for rooms & locations -->
 		<feature>auto-accept-modes</feature>			<!-- Auto-accept modes -->
 		<!-- <feature>dropbox</feature> -->				<!-- dropbox extension -->

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo-template.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo-template.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -38,6 +38,7 @@
 		<feature>principal-search-property-set REPORT</feature>	<!-- ACL principal-search-property-set REPORT -->
 
 		<feature>add-member</feature>					<!-- Add-member used to create resources -->
+		<!-- <feature>auth-on-root</feature> -->		<!-- Whether the server requires authentication on the root URI -->
 		<feature>brief</feature>					    <!-- Brief header for PROPFIND, REPORT -->
 		<feature>bulk-post</feature>					<!-- Bulk POST requests -->
 		<feature>ctag</feature>							<!-- ctag extension -->
@@ -55,6 +56,7 @@
 		<!-- <feature>quota-on-resources</feature> -->	<!-- WebDAV QUOTA on calendar and address book object resources -->
 		<feature>resource-id</feature>					<!-- WebDAV BIND DAV:resource-id property -->
 		<feature>sync-report</feature>					<!-- WebDAV collection sync REPORT -->
+		<!-- <feature>sync-report-limit</feature> -->	<!-- WebDAV collection sync REPORT DAV:limit support -->
 		<feature>sync-report-home</feature>				<!-- WebDAV collection sync REPORT on Homes -->
 		<feature>well-known</feature>					<!-- well-known feature -->
 
@@ -65,6 +67,7 @@
 
 		<!-- CalDAV specific extension -->
 		<feature>caldav</feature>					    <!-- Basic CalDAV feature enabler -->
+		<feature>attachments-collection</feature>		<!-- Server uses a collection in same WebDAV tree to store attachments -->
 		<feature>auto-accept</feature>					<!-- Auto-accept for rooms & locations -->
 		<feature>auto-accept-modes</feature>			<!-- Auto-accept modes -->
 		<!-- <feature>dropbox</feature> -->				<!-- dropbox extension -->

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/server/serverinfo.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -38,6 +38,7 @@
 		<feature>principal-search-property-set REPORT</feature>	<!-- ACL principal-search-property-set REPORT -->
 
 		<feature>add-member</feature>					<!-- Add-member used to create resources -->
+		<!-- <feature>auth-on-root</feature> -->		<!-- Whether the server requires authentication on the root URI -->
 		<feature>brief</feature>					    <!-- Brief header for PROPFIND, REPORT -->
 		<feature>bulk-post</feature>					<!-- Bulk POST requests -->
 		<feature>ctag</feature>							<!-- ctag extension -->
@@ -55,6 +56,7 @@
 		<!-- <feature>quota-on-resources</feature> -->	<!-- WebDAV QUOTA on calendar and address book object resources -->
 		<feature>resource-id</feature>					<!-- WebDAV BIND DAV:resource-id property -->
 		<feature>sync-report</feature>					<!-- WebDAV collection sync REPORT -->
+		<!-- <feature>sync-report-limit</feature> -->	<!-- WebDAV collection sync REPORT DAV:limit support -->
 		<feature>sync-report-home</feature>				<!-- WebDAV collection sync REPORT on Homes -->
 		<feature>well-known</feature>					<!-- well-known feature -->
 
@@ -65,6 +67,7 @@
 
 		<!-- CalDAV specific extension -->
 		<feature>caldav</feature>					    <!-- Basic CalDAV feature enabler -->
+		<feature>attachments-collection</feature>		<!-- Server uses a collection in same WebDAV tree to store attachments -->
 		<feature>auto-accept</feature>					<!-- Auto-accept for rooms & locations -->
 		<feature>auto-accept-modes</feature>			<!-- Auto-accept modes -->
 		<!--<feature>dropbox</feature> -->				<!-- dropbox extension -->

Copied: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/bad-ical.xml (from rev 11780, CalDAVTester/trunk/scripts/tests/CalDAV/bad-ical.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/bad-ical.xml	                        (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/bad-ical.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -0,0 +1,52 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 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>Tests a bunch of bad data</description>
+
+	<require-feature>
+		<feature>caldav</feature>
+	</require-feature>
+
+	<start/>
+	
+	<test-suite name='PUT'>
+		<test name='1'>
+			<description>PUT bad calendar data</description>
+			<request iterate-data="yes">
+				<method>PUT</method>
+				<ruri>$calendarpath1:/**</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/bad-ical</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>4xx</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+	<end/>
+	
+</caldavtest>

Copied: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/bad-json.xml (from rev 11780, CalDAVTester/trunk/scripts/tests/CalDAV/bad-json.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/bad-json.xml	                        (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/bad-json.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -0,0 +1,53 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 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>Tests a bunch of bad data</description>
+
+	<require-feature>
+		<feature>caldav</feature>
+		<feature>json-data</feature>
+	</require-feature>
+
+	<start/>
+	
+	<test-suite name='PUT'>
+		<test name='1'>
+			<description>PUT bad calendar data</description>
+			<request iterate-data="yes">
+				<method>PUT</method>
+				<ruri>$calendarpath1:/**</ruri>
+				<data>
+					<content-type>application/calendar+json; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/bad-json</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>4xx</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+	<end/>
+	
+</caldavtest>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/caldavtest.dtd	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/caldavtest.dtd	2013-10-03 19:47:20 UTC (rev 11782)
@@ -35,7 +35,8 @@
 						 user CDATA ""
 						 pswd CDATA ""
 						 end-delete (yes|no) "no"
-						 print-response (yes|no) "no">
+						 print-response (yes|no) "no"
+						 iterate-data (yes|no) "no">
 		
 		<!ELEMENT method (#PCDATA)>
 		<!ELEMENT ruri (#PCDATA)>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/current-user-principal.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/current-user-principal.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/current-user-principal.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -65,12 +65,25 @@
 					<filepath>Resource/CalDAV/current-user-principal/1.xml</filepath>
 				</data>
 				<verify>
+					<exclude-feature>
+						<feature>auth-on-root</feature>
+					</exclude-feature>
 					<callback>propfindItems</callback>
 					<arg>
 						<name>okprops</name>
 						<value><![CDATA[{DAV:}current-user-principal$<unauthenticated xmlns="DAV:"/>]]></value>
 					</arg>
 				</verify>
+				<verify>
+					<require-feature>
+						<feature>auth-on-root</feature>
+					</require-feature>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>401</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
 		<test name='3' ignore='no'>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/managed-attachments.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/managed-attachments.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/managed-attachments.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -61,6 +61,9 @@
 	</test-suite>
 
 	<test-suite name="Privileges on Attachments Collection">
+		<require-feature>
+			<feature>attachments-collection</feature>
+		</require-feature>
 		<test name='1' ignore='no'>
 			<description>Check for schedule privilege on iTIP Inbox</description>
 			<request print-response='no'>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/prefer.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/prefer.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/prefer.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -637,6 +637,43 @@
 				</verify>
 			</request>
 		</test>
+		<test name='5'>
+			<description>PUT with Prefer=return=representation pre-condition fail</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/4.ics</ruri>
+				<header>
+					<name>Prefer</name>
+					<value>return=representation</value>
+				</header>
+				<header>
+					<name>If-Match</name>
+					<value>1234</value>
+				</header>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/prefer/return/5.ics</filepath>
+				</data>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/prefer/return/5.ics</value>
+					</arg>
+					<arg>
+						<name>status</name>
+						<value>412</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>header</callback>
+					<arg>
+						<name>content-location</name>
+						<value>$calendarpath1:/4.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
 	</test-suite>
 
 	<test-suite name='representation schedule PUT'>
@@ -769,6 +806,43 @@
 				</verify>
 			</request>
 		</test>
+		<test name='5'>
+			<description>PUT with Prefer=return=representation If-Schedule-Tag-Match failure</description>
+			<request>
+				<method>PUT</method>
+				<ruri>$calendarpath1:/7.ics</ruri>
+				<header>
+					<name>Prefer</name>
+					<value>return=representation</value>
+				</header>
+				<header>
+					<name>If-Schedule-Tag-Match</name>
+					<value>1234</value>
+				</header>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/prefer/return/10.ics</filepath>
+				</data>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/prefer/return/11.ics</value>
+					</arg>
+					<arg>
+						<name>status</name>
+						<value>412</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>header</callback>
+					<arg>
+						<name>content-location</name>
+						<value>$calendarpath1:/4.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
 	</test-suite>
 
 	<test-suite name='representation POST add-member'>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/sharing-sync.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/sharing-sync.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/sharing-sync.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -862,6 +862,941 @@
 		</test>
 	</test-suite>
 	
+
+	<test-suite name='calendar webdav property change - home depth:infinity' ignore='no'>
+		<require-feature>
+			<feature>sync-report-home</feature>
+		</require-feature>
+		<test name='1' ignore='no'>
+			<description>POST invitation and accept</description>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>DELETEALL</method>
+				<ruri>$notificationpath1:/</ruri>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome1:/shared/</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>
+			<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/CalDAV/sharing/sync/depth1-cache/2.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>
+			<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/Common/POST/sharingreply2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>{DAV:}href</name>
+					<variable>basename($sharedcalendar:)</variable>
+				</grabelement>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>DELETEALL</method>
+				<ruri>$notificationpath1:/</ruri>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>initial query - grab token</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>shared/</value>
+					</arg>
+					<arg>
+						<name>ignoremissing</name>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>initial query - grab token for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$sharedcalendar:/</value>
+					</arg>
+					<arg>
+						<name>ignoremissing</name>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>Change a property by user 1</description>
+			<request>
+				<method>PROPPATCH</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/17.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>Sync for user 1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>shared/</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='6' ignore='no'>
+			<description>Sync for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<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>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken2:]</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='7' ignore='no'>
+			<description>Remove a property by user 1</description>
+			<request>
+				<method>PROPPATCH</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/18.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='8' ignore='no'>
+			<description>Sync for user 1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>shared/</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='9' ignore='no'>
+			<description>Sync for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<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>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken2:]</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='10' ignore='no'>
+			<description>Change a property by user 2</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>PROPPATCH</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/17.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='11' ignore='no'>
+			<description>Sync for user 1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>shared/</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='12' ignore='no'>
+			<description>Sync for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<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>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken2:]</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='13' ignore='no'>
+			<description>Remove a property by user 1</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>PROPPATCH</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/18.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='14' ignore='no'>
+			<description>Sync for user 1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token1-level-infinite.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>shared/</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='15' ignore='no'>
+			<description>Sync for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<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>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken2:]</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='16'>
+			<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/POST/sharingremove2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='calendar webdav property change - home depth:1' ignore='no'>
+		<require-feature>
+			<feature>sync-report-home</feature>
+		</require-feature>
+		<test name='1' ignore='no'>
+			<description>POST invitation and accept</description>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>DELETEALL</method>
+				<ruri>$notificationpath1:/</ruri>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+			<request print-response='no'>
+				<method>POST</method>
+				<ruri>$calendarhome1:/shared/</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>
+			<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/CalDAV/sharing/sync/depth1-cache/2.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>
+			<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/Common/POST/sharingreply2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+				<grabelement>
+					<name>{DAV:}href</name>
+					<variable>basename($sharedcalendar:)</variable>
+				</grabelement>
+			</request>
+			<request user="$useradmin:" pswd="$pswdadmin:">
+				<method>DELETEALL</method>
+				<ruri>$notificationpath1:/</ruri>
+				<ruri>$notificationpath2:/</ruri>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>initial query - grab token</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>shared/</value>
+					</arg>
+					<arg>
+						<name>ignoremissing</name>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken1:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='3' ignore='no'>
+			<description>initial query - grab token for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-init-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$calendar:/</value>
+						<value>$sharedcalendar:/</value>
+					</arg>
+					<arg>
+						<name>ignoremissing</name>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='4' ignore='no'>
+			<description>Change a property by user 1</description>
+			<request>
+				<method>PROPPATCH</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/17.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='5' ignore='no'>
+			<description>Sync for user 1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<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>
+				<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='6' ignore='no'>
+			<description>Sync for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken2:]</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='7' ignore='no'>
+			<description>Remove a property by user 1</description>
+			<request>
+				<method>PROPPATCH</method>
+				<ruri>$calendarhome1:/shared/</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/18.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='8' ignore='no'>
+			<description>Sync for user 1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<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>
+				<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='9' ignore='no'>
+			<description>Sync for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken2:]</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='10' ignore='no'>
+			<description>Change a property by user 2</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>PROPPATCH</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/17.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='11' ignore='no'>
+			<description>Sync for user 1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<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>
+				<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='12' ignore='no'>
+			<description>Sync for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken2:]</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='13' ignore='no'>
+			<description>Remove a property by user 1</description>
+			<request user="$userid2:" pswd="$pswd2:">
+				<method>PROPPATCH</method>
+				<ruri>$calendarhome2:/$sharedcalendar:/</ruri>
+				<data>
+					<content-type>text/vcard; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/18.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+		<test name='14' ignore='no'>
+			<description>Sync for user 1</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<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>
+				<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='15' ignore='no'>
+			<description>Sync for user 2</description>
+			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome2:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data substitutions='yes'>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/Common/REPORT/sync-token2-level-1.xml</filepath>
+				</data>
+				<verify>
+					<callback>multistatusItems</callback>
+					<arg>
+						<name>okhrefs</name>
+						<value>$sharedcalendar:/</value>
+					</arg>
+				</verify>
+				<verify>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>/{DAV:}multistatus/{DAV:}sync-token[!$synctoken2:]</value>
+					</arg>
+				</verify>
+				<grabelement>
+					<name>/{DAV:}multistatus/{DAV:}sync-token</name>
+					<variable>$synctoken2:</variable>
+				</grabelement>
+			</request>
+		</test>
+		<test name='16'>
+			<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/POST/sharingremove2.xml</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
 	<end>
 		<request user="$useradmin:" pswd="$pswdadmin:">
 			<method>DELETEALL</method>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/sync-report.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/sync-report.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/sync-report.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -3933,6 +3933,34 @@
 		</test>
 	</test-suite>
 
+	<test-suite name='limited reports' ignore='no'>
+		<test name='1' ignore='no'>
+			<exclude-feature>
+				<feature>sync-report-limit</feature>
+			</exclude-feature>
+			<description>Limit not allowed</description>
+			<request print-response='no'>
+				<method>REPORT</method>
+				<ruri>$calendarhome1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/reports/sync/21.xml</filepath>
+				</data>
+				<verify>
+					<callback>prepostcondition</callback>
+					<arg>
+						<name>error</name>
+						<value>{DAV:}number-of-matches-within-limits</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
 	<end/>
 	
 </caldavtest>

Copied: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/vtodos.xml (from rev 11780, CalDAVTester/trunk/scripts/tests/CalDAV/vtodos.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/vtodos.xml	                        (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CalDAV/vtodos.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -0,0 +1,53 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 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>Tests a bunch of VTODO data</description>
+
+	<require-feature>
+		<feature>caldav</feature>
+	</require-feature>
+
+	<start/>
+	
+	<test-suite name='PUT'>
+		<test name='1'>
+			<description>PUT calendar data</description>
+			<request iterate-data="yes" end-delete="yes">
+				<method>PUT</method>
+				<ruri>$taskspath1:/**</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/vtodos</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+					<arg>
+						<name>status</name>
+						<value>2xx</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<end/>
+	
+</caldavtest>


Property changes on: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV
___________________________________________________________________
Modified: svn:mergeinfo
   - /CalDAVTester/branches/release/CalDAVTester-3.0-dev/scripts/tests/CardDAV:7584
/CalDAVTester/branches/release/CalDAVTester-4.3-dev/scripts/tests/CardDAV:10193
/CalDAVTester/branches/users/cdaboo/attendee-comments-2887/scripts/tests/CardDAV:2888-2910
/CalDAVTester/branches/users/cdaboo/better-proxy-3148/scripts/tests/CardDAV:3149-3163
/CalDAVTester/branches/users/cdaboo/component-set-fixes/scripts/tests/CardDAV:8221-8346
/CalDAVTester/branches/users/cdaboo/conditional-4466/scripts/tests/CardDAV:4467-4469
/CalDAVTester/branches/users/cdaboo/implicitauto-2948/scripts/tests/CardDAV:2949-2989
/CalDAVTester/branches/users/cdaboo/location-partial-accept-3574/scripts/tests/CardDAV:3575-3581
/CalDAVTester/branches/users/cdaboo/managed-attachments/scripts/tests/CardDAV:9986-10145
/CalDAVTester/branches/users/cdaboo/normalize-cuaddr-3533/scripts/tests/CardDAV:3534-3558
/CalDAVTester/branches/users/cdaboo/pycalendar/scripts/tests/CardDAV:7160-7206
/CalDAVTester/branches/users/cdaboo/pycard/scripts/tests/CardDAV:7226-7237
/CalDAVTester/branches/users/cdaboo/sharing-5228/scripts/tests/CardDAV:5229-5440
/CalDAVTester/branches/users/gaya/sharedgroupstester-2/scripts/tests/CardDAV:11078-11181
/CalDAVTester/branches/users/gaya/sharedgroupstester-3/scripts/tests/CardDAV:11181-11204
   + /CalDAVTester/branches/release/CalDAVTester-3.0-dev/scripts/tests/CardDAV:7584
/CalDAVTester/branches/release/CalDAVTester-4.3-dev/scripts/tests/CardDAV:10193
/CalDAVTester/branches/users/cdaboo/attendee-comments-2887/scripts/tests/CardDAV:2888-2910
/CalDAVTester/branches/users/cdaboo/better-proxy-3148/scripts/tests/CardDAV:3149-3163
/CalDAVTester/branches/users/cdaboo/component-set-fixes/scripts/tests/CardDAV:8221-8346
/CalDAVTester/branches/users/cdaboo/conditional-4466/scripts/tests/CardDAV:4467-4469
/CalDAVTester/branches/users/cdaboo/implicitauto-2948/scripts/tests/CardDAV:2949-2989
/CalDAVTester/branches/users/cdaboo/location-partial-accept-3574/scripts/tests/CardDAV:3575-3581
/CalDAVTester/branches/users/cdaboo/managed-attachments/scripts/tests/CardDAV:9986-10145
/CalDAVTester/branches/users/cdaboo/normalize-cuaddr-3533/scripts/tests/CardDAV:3534-3558
/CalDAVTester/branches/users/cdaboo/pycalendar/scripts/tests/CardDAV:7160-7206
/CalDAVTester/branches/users/cdaboo/pycard/scripts/tests/CardDAV:7226-7237
/CalDAVTester/branches/users/cdaboo/sharing-5228/scripts/tests/CardDAV:5229-5440
/CalDAVTester/branches/users/gaya/sharedgroupstester-2/scripts/tests/CardDAV:11078-11181
/CalDAVTester/branches/users/gaya/sharedgroupstester-3/scripts/tests/CardDAV:11181-11204
/CalDAVTester/trunk/scripts/tests/CardDAV:11744-11780

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/caldavtest.dtd
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/caldavtest.dtd	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/caldavtest.dtd	2013-10-03 19:47:20 UTC (rev 11782)
@@ -35,7 +35,8 @@
 						 user CDATA ""
 						 pswd CDATA ""
 						 end-delete (yes|no) "no"
-						 print-response (yes|no) "no">
+						 print-response (yes|no) "no"
+						 iterate-data (yes|no) "no">
 		
 		<!ELEMENT method (#PCDATA)>
 		<!ELEMENT ruri (#PCDATA)>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-groups.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-groups.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-groups.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -34,7 +34,8 @@
 			<ruri>$notificationpath1:/</ruri>
 			<ruri>$notificationpath2:/</ruri>
 		</request>
-		<description>Sharer creates 2 persons and a group</description>
+
+		<!-- Sharer creates 2 persons and a group -->
 		<request print-response='no'>
 			<method>PUT</method>
 			<ruri>$addressbookpath1:/1.vcf</ruri>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-sync.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-sync.xml	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/scripts/tests/CardDAV/sharing-sync.xml	2013-10-03 19:47:20 UTC (rev 11782)
@@ -2161,7 +2161,7 @@
 	
 	<test-suite name='support-report-set/sync-token property' ignore='no'>
 		<test name='0' ignore='no'>
-			<description>clean up old data</description>
+			<!-- clean up old data -->
 			<request user="$useradmin:" pswd="$pswdadmin:">
 				<method>DELETEALL</method>
 				<ruri>$addressbookhome1:/</ruri>
@@ -2171,7 +2171,7 @@
 				<ruri>$notificationpath1:/</ruri>
 			</request>
 	
-			<description>add 2 vcards to user1 address book</description>
+			<!-- add 2 vcards to user1 address book -->
 			<request>
 				<method>PUT</method>
 				<ruri>$addressbookpath1:/1.vcf</ruri>
@@ -2189,8 +2189,8 @@
 				</data>
 			</request>
 			
-			<description>share user2 address book with user1</description>
-			<description>user2 POSTs invitation</description>
+			<!-- share user2 address book with user1 -->
+			<!-- user2 POSTs invitation -->
 			<request user="$userid2:" pswd="$pswd2:" print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookpath2:/</ruri>
@@ -2199,7 +2199,8 @@
 					<filepath>Resource/CardDAV/sharing/sync/addressbook/11.xml</filepath>
 				</data>
 			</request>
-			<description>Check user1 notification collection and get invite uid</description>
+
+			<!-- Check user1 notification collection and get invite uid -->
 			<request print-response="no">
 				<method>WAITCOUNT 1</method>
 				<ruri>$notificationpath1:/</ruri>
@@ -2212,7 +2213,8 @@
 					<variable>$inviteuid:</variable>
 				</grabelement>
 			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
+
+			<!-- user1 replies ACCEPTED and deletes inviteUID from notification collection -->
 			<request print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookhome1:/</ruri>
@@ -2225,7 +2227,8 @@
 				<method>DELETE</method>
 				<ruri>$notificationpath1:/$inviteuid:</ruri>
 			</request>
-			<description>add 2 vcards to user2 address book</description>
+
+			<!-- add 2 vcards to user2 address book -->
 			<request user="$userid2:" pswd="$pswd2:">
 				<method>PUT</method>
 				<ruri>$addressbookpath2:/1.vcf</ruri>
@@ -3679,8 +3682,8 @@
 			<feature>sync-report-home</feature>
 		</require-feature>
 		<test name='1' ignore='no'>
-			<description>Initialize</description>
-			<description>clear user1 address book and unshare user2 address book</description>
+			<!-- Initialize -->
+			<!-- clear user1 address book and unshare user2 address book -->
 			<request>
 				<method>DELETE</method>
 					<ruri>$addressbookpath1:/</ruri>
@@ -3702,8 +3705,9 @@
 					<callback>statusCode</callback>
 				</verify>
 			</request>
-			<description>share user3 address book with user1</description>
-			<description>user3 POSTs invitation</description>
+
+			<!-- share user3 address book with user1 -->
+			<!-- user3 POSTs invitation -->
 			<request user="$userid3:" pswd="$pswd3:" print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookpath3:/</ruri>
@@ -3712,7 +3716,8 @@
 					<filepath>Resource/CardDAV/sharing/sync/addressbook/13.xml</filepath>
 				</data>
 			</request>
-			<description>Check user1 notification collection and get invite uid</description>
+
+			<!-- Check user1 notification collection and get invite uid -->
 			<request print-response="no">
 				<method>WAITCOUNT 1</method>
 				<ruri>$notificationpath1:/</ruri>
@@ -3725,7 +3730,8 @@
 					<variable>$inviteuid:</variable>
 				</grabelement>
 			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
+
+			<!-- user1 replies ACCEPTED and deletes inviteUID from notification collection -->
 			<request print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookhome1:/</ruri>
@@ -3738,7 +3744,8 @@
 				<method>DELETE</method>
 				<ruri>$notificationpath1:/$inviteuid:</ruri>
 			</request>
-			<description>add 2 vcards to user3 address book</description>
+
+			<!-- add 2 vcards to user3 address book -->
 			<request user="$userid3:" pswd="$pswd3:">
 				<method>PUT</method>
 				<ruri>$addressbookpath3:/1.vcf</ruri>
@@ -3756,8 +3763,8 @@
 				</data>
 			</request>
 	
-			<description>share user4 address book with user1</description>
-			<description>user4 POSTs invitation</description>
+			<!-- share user4 address book with user1 -->
+			<!-- user4 POSTs invitation -->
 			<request user="$userid4:" pswd="$pswd4:" print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookpath4:/</ruri>
@@ -3766,7 +3773,8 @@
 					<filepath>Resource/CardDAV/sharing/sync/addressbook/15.xml</filepath>
 				</data>
 			</request>
-			<description>Check user1 notification collection and get invite uid</description>
+
+			<!-- Check user1 notification collection and get invite uid -->
 			<request print-response="no">
 				<method>WAITCOUNT 1</method>
 				<ruri>$notificationpath1:/</ruri>
@@ -3779,7 +3787,8 @@
 					<variable>$inviteuid:</variable>
 				</grabelement>
 			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
+
+			<!-- user1 replies ACCEPTED and deletes inviteUID from notification collection -->
 			<request print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookhome1:/</ruri>
@@ -3792,7 +3801,8 @@
 				<method>DELETE</method>
 				<ruri>$notificationpath1:/$inviteuid:</ruri>
 			</request>
-			<description>add 2 vcards to user4 address book</description>
+
+			<!-- add 2 vcards to user4 address book -->
 			<request user="$userid4:" pswd="$pswd4:">
 				<method>PUT</method>
 				<ruri>$addressbookpath4:/1.vcf</ruri>
@@ -4335,8 +4345,8 @@
 		</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>
+			<!-- share user3 address book with user1 -->
+			<!-- user3 POSTs invitation -->
 			<request user="$userid3:" pswd="$pswd3:" print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookpath3:/</ruri>
@@ -4345,7 +4355,8 @@
 					<filepath>Resource/CardDAV/sharing/sync/addressbook/13.xml</filepath>
 				</data>
 			</request>
-			<description>Check user1 notification collection and get invite uid</description>
+
+			<!-- Check user1 notification collection and get invite uid -->
 			<request print-response="no">
 				<method>WAITCOUNT 1</method>
 				<ruri>$notificationpath1:/</ruri>
@@ -4358,7 +4369,8 @@
 					<variable>$inviteuid:</variable>
 				</grabelement>
 			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
+
+			<!-- user1 replies ACCEPTED and deletes inviteUID from notification collection -->
 			<request print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookhome1:/</ruri>
@@ -4433,8 +4445,9 @@
 				<ruri>$addressbookhome4:/</ruri>
 				<ruri>$notificationpath1:/</ruri>
 			</request>
-			<description>share user3 address book with user1</description>
-			<description>user3 POSTs invitation</description>
+
+			<!-- share user3 address book with user1 -->
+			<!-- user3 POSTs invitation -->
 			<request user="$userid3:" pswd="$pswd3:" print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookpath3:/</ruri>
@@ -4443,7 +4456,8 @@
 					<filepath>Resource/CardDAV/sharing/sync/addressbook/13.xml</filepath>
 				</data>
 			</request>
-			<description>Check user1 notification collection and get invite uid</description>
+
+			<!-- Check user1 notification collection and get invite uid -->
 			<request print-response="no">
 				<method>WAITCOUNT 1</method>
 				<ruri>$notificationpath1:/</ruri>
@@ -4456,7 +4470,8 @@
 					<variable>$inviteuid:</variable>
 				</grabelement>
 			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
+
+			<!-- user1 replies ACCEPTED and deletes inviteUID from notification collection -->
 			<request print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookhome1:/</ruri>
@@ -4469,7 +4484,8 @@
 				<method>DELETE</method>
 				<ruri>$notificationpath1:/$inviteuid:</ruri>
 			</request>
-			<description>add 2 vcards to user3 address book</description>
+
+			<!-- add 2 vcards to user3 address book -->
 			<request user="$userid3:" pswd="$pswd3:">
 				<method>PUT</method>
 				<ruri>$addressbookpath3:/1.vcf</ruri>
@@ -4487,8 +4503,8 @@
 				</data>
 			</request>
 	
-			<description>share user4 address book with user1</description>
-			<description>user4 POSTs invitation</description>
+			<!-- share user4 address book with user1 -->
+			<!-- user4 POSTs invitation -->
 			<request user="$userid4:" pswd="$pswd4:" print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookpath4:/</ruri>
@@ -4497,7 +4513,8 @@
 					<filepath>Resource/CardDAV/sharing/sync/addressbook/15.xml</filepath>
 				</data>
 			</request>
-			<description>Check user1 notification collection and get invite uid</description>
+
+			<!-- Check user1 notification collection and get invite uid -->
 			<request print-response="no">
 				<method>WAITCOUNT 1</method>
 				<ruri>$notificationpath1:/</ruri>
@@ -4510,7 +4527,8 @@
 					<variable>$inviteuid:</variable>
 				</grabelement>
 			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
+
+			<!-- user1 replies ACCEPTED and deletes inviteUID from notification collection -->
 			<request print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookhome1:/</ruri>
@@ -4523,7 +4541,8 @@
 				<method>DELETE</method>
 				<ruri>$notificationpath1:/$inviteuid:</ruri>
 			</request>
-			<description>add 2 vcards to user4 address book</description>
+
+			<!-- add 2 vcards to user4 address book -->
 			<request user="$userid4:" pswd="$pswd4:">
 				<method>PUT</method>
 				<ruri>$addressbookpath4:/1.vcf</ruri>
@@ -5027,8 +5046,8 @@
 		</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>
+			<!-- share user3 address book with user1 -->
+			<!-- user3 POSTs invitation -->
 			<request user="$userid3:" pswd="$pswd3:" print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookpath3:/</ruri>
@@ -5037,7 +5056,8 @@
 					<filepath>Resource/CardDAV/sharing/sync/addressbook/13.xml</filepath>
 				</data>
 			</request>
-			<description>Check user1 notification collection and get invite uid</description>
+
+			<!-- Check user1 notification collection and get invite uid -->
 			<request print-response="no">
 				<method>WAITCOUNT 1</method>
 				<ruri>$notificationpath1:/</ruri>
@@ -5050,7 +5070,8 @@
 					<variable>$inviteuid:</variable>
 				</grabelement>
 			</request>
-			<description>user1 replies ACCEPTED and deletes inviteUID from notification collection</description>
+
+			<!-- user1 replies ACCEPTED and deletes inviteUID from notification collection -->
 			<request print-response="no">
 				<method>POST</method>
 				<ruri>$addressbookhome1:/</ruri>

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/caldavtest.py
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/caldavtest.py	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/caldavtest.py	2013-10-03 19:47:20 UTC (rev 11782)
@@ -197,18 +197,24 @@
             self.manager.log(manager.LOG_HIGH, "      Excluded features: %s" % (", ".join(sorted(test.excludedFeatures())),))
             return "i"
         else:
-            result = False
+            result = True
             resulttxt = ""
             postgresCount = self.postgresInit()
             if test.stats:
                 reqstats = stats()
             else:
                 reqstats = None
-            for ctr in range(test.count): #@UnusedVariable
+            for ctr in range(test.count):
                 for req_count, req in enumerate(test.requests):
-                    result, resulttxt, _ignore_response, _ignore_respdata = self.dorequest(req, test.details, True, False, reqstats, etags=etags, label="%s | #%s" % (label, req_count + 1,), count=ctr + 1)
-                    if not result:
-                        break
+                    if getattr(req, "iterate_data", False):
+                        while req.getNextData():
+                            result, resulttxt, _ignore_response, _ignore_respdata = self.dorequest(req, test.details, True, False, reqstats, etags=etags, label="%s | #%s" % (label, req_count + 1,), count=ctr + 1)
+                            if not result:
+                                break
+                    else:
+                        result, resulttxt, _ignore_response, _ignore_respdata = self.dorequest(req, test.details, True, False, reqstats, etags=etags, label="%s | #%s" % (label, req_count + 1,), count=ctr + 1)
+                        if not result:
+                            break
             loglevel = [manager.LOG_ERROR, manager.LOG_HIGH][result]
             self.manager.log(loglevel, ["[FAILED]", "[OK]"][result])
             if len(resulttxt) > 0:

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/manager.py
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/manager.py	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/manager.py	2013-10-03 19:47:20 UTC (rev 11782)
@@ -198,7 +198,7 @@
 
         if all:
             files = []
-            os.path.walk(dname, lambda arg, dir, names: files.extend([os.path.join(dir, name) for name in names]), None)
+            os.path.walk(dname, lambda arg, dir, names: files.extend([os.path.join(dir, name) for name in names]) if not dir.startswith("test") else None, None)
             for file in files:
                 if file.endswith(".xml") and file[len(dname) + 1:] not in excludes:
                     if subdir is None or file[len(dname) + 1:].startswith(subdir):

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/request.py
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/request.py	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/request.py	2013-10-03 19:47:20 UTC (rev 11782)
@@ -23,6 +23,7 @@
 from src.xmlUtils import getYesNoAttributeValue
 import base64
 import datetime
+import os
 import re
 import src.xmlDefs
 import time
@@ -154,6 +155,7 @@
         self.ruris = []
         self.ruri = ""
         self.data = None
+        self.iterate_data = False
         self.count = 1
         self.verifiers = []
         self.graburi = None
@@ -287,7 +289,7 @@
                 data = self.data.value
             else:
                 # read in the file data
-                fd = open(self.data.filepath, "r")
+                fd = open(self.data.nextpath if hasattr(self.data, "nextpath") else self.data.filepath, "r")
                 try:
                     data = fd.read()
                 finally:
@@ -300,6 +302,20 @@
         return data
 
 
+    def getNextData(self):
+        if not hasattr(self, "dataList"):
+            self.dataList = sorted([path for path in os.listdir(self.data.filepath) if not path.startswith(".")])
+        if len(self.dataList):
+            self.data.nextpath = os.path.join(self.data.filepath, self.dataList.pop(0))
+            return True
+        else:
+            if hasattr(self.data, "nextpath"):
+                delattr(self.data, "nextpath")
+            if hasattr(self, "dataList"):
+                delattr(self, "dataList")
+            return False
+
+
     def generateCalendarData(self, data):
         """
         FIXME: does not work for events with recurrence overrides.
@@ -325,6 +341,7 @@
         self.end_delete = getYesNoAttributeValue(node, src.xmlDefs.ATTR_END_DELETE)
         self.print_request = self.manager.print_request or getYesNoAttributeValue(node, src.xmlDefs.ATTR_PRINT_REQUEST)
         self.print_response = self.manager.print_response or getYesNoAttributeValue(node, src.xmlDefs.ATTR_PRINT_RESPONSE)
+        self.iterate_data = getYesNoAttributeValue(node, src.xmlDefs.ATTR_ITERATE_DATA)
 
         for child in node.getchildren():
             if child.tag == src.xmlDefs.ELEMENT_REQUIRE_FEATURE:

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/xmlDefs.py
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/xmlDefs.py	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/src/xmlDefs.py	2013-10-03 19:47:20 UTC (rev 11782)
@@ -83,6 +83,7 @@
 ATTR_IGNORE = "ignore"
 ATTR_IGNORE_ALL = "ignore-all"
 ATTR_INTERVAL = "interval"
+ATTR_ITERATE_DATA = "iterate-data"
 ATTR_NAME = "name"
 ATTR_ONLY = "only"
 ATTR_PRINT_REQUEST = "print-request"

Modified: CalDAVTester/branches/users/gaya/sharedgroupfixestester/verifiers/calendarDataMatch.py
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupfixestester/verifiers/calendarDataMatch.py	2013-10-03 19:38:31 UTC (rev 11781)
+++ CalDAVTester/branches/users/gaya/sharedgroupfixestester/verifiers/calendarDataMatch.py	2013-10-03 19:47:20 UTC (rev 11782)
@@ -29,6 +29,7 @@
         files = args.get("filepath", [])
         caldata = args.get("data", [])
         filters = args.get("filter", [])
+        statusCode = args.get("status", ["200", "201", "207"])
 
         if "EMAIL parameter" not in manager.server_info.features:
             filters.append("ATTENDEE:EMAIL")
@@ -46,8 +47,8 @@
                 filters.remove(afilter[1:])
         filters = filter(lambda x: x[0] != "!", filters)
 
-        # status code must be 200, 201, 207
-        if response.status not in (200, 201, 207):
+        # status code must be 200, 201, 207 or explicitly specified code
+        if str(response.status) not in statusCode:
             return False, "        HTTP Status Code Wrong: %d" % (response.status,)
 
         # look for response data
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20131003/a78c8f82/attachment-0001.html>


More information about the calendarserver-changes mailing list