[CalendarServer-changes] [264] CalDAVTester/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Tue Oct 10 10:08:45 PDT 2006
Revision: 264
http://trac.macosforge.org/projects/calendarserver/changeset/264
Author: cdaboo at apple.com
Date: 2006-10-10 10:08:43 -0700 (Tue, 10 Oct 2006)
Log Message:
-----------
Major file re-org. Initial commit of performance testing tool.
Modified Paths:
--------------
CalDAVTester/trunk/src/account.py
CalDAVTester/trunk/src/populate.py
CalDAVTester/trunk/src/test.py
CalDAVTester/trunk/src/testsuite.py
CalDAVTester/trunk/testcaldav.py
Added Paths:
-----------
CalDAVTester/trunk/performer.py
CalDAVTester/trunk/scripts/
CalDAVTester/trunk/scripts/performance/
CalDAVTester/trunk/scripts/performance/perfinfo.dtd
CalDAVTester/trunk/scripts/performance/perfinfo.xml
CalDAVTester/trunk/scripts/server1/
CalDAVTester/trunk/scripts/server1/serverinfo.dtd
CalDAVTester/trunk/scripts/server1/serverinfo.xml
CalDAVTester/trunk/scripts/server1/sslserverinfo.xml
CalDAVTester/trunk/scripts/tests1/
CalDAVTester/trunk/scripts/tests1/acl.xml
CalDAVTester/trunk/scripts/tests1/acldisabled.xml
CalDAVTester/trunk/scripts/tests1/aclreports.xml
CalDAVTester/trunk/scripts/tests1/attachments.xml
CalDAVTester/trunk/scripts/tests1/caldavIOP.xml
CalDAVTester/trunk/scripts/tests1/copymove.xml
CalDAVTester/trunk/scripts/tests1/delete.xml
CalDAVTester/trunk/scripts/tests1/depthreports.xml
CalDAVTester/trunk/scripts/tests1/depthreportsacl.xml
CalDAVTester/trunk/scripts/tests1/encodedURIs.xml
CalDAVTester/trunk/scripts/tests1/errors.xml
CalDAVTester/trunk/scripts/tests1/floating.xml
CalDAVTester/trunk/scripts/tests1/mkcalendar.xml
CalDAVTester/trunk/scripts/tests1/populate.xml
CalDAVTester/trunk/scripts/tests1/propfind.xml
CalDAVTester/trunk/scripts/tests1/proppatch.xml
CalDAVTester/trunk/scripts/tests1/put.xml
CalDAVTester/trunk/scripts/tests1/quota.xml
CalDAVTester/trunk/scripts/tests1/recurrenceput.xml
CalDAVTester/trunk/scripts/tests1/reports.xml
CalDAVTester/trunk/scripts/tests1/schedule.xml
CalDAVTester/trunk/scripts/tests1/scheduleacl.xml
CalDAVTester/trunk/scripts/tests1/scheduleauto.xml
CalDAVTester/trunk/scripts/tests1/schedulenormal.xml
CalDAVTester/trunk/scripts/tests1/schedulepost.xml
CalDAVTester/trunk/scripts/tests1/schedulepostacl.xml
CalDAVTester/trunk/scripts/tests1/schedulepostauto.xml
CalDAVTester/trunk/scripts/tests1/schedulepostnormal.xml
CalDAVTester/trunk/scripts/tests1/scheduleprops.xml
CalDAVTester/trunk/src/
CalDAVTester/trunk/src/caldavtest.py
CalDAVTester/trunk/src/manager.py
CalDAVTester/trunk/src/multithread.py
CalDAVTester/trunk/src/perfinfo.py
CalDAVTester/trunk/src/request.py
CalDAVTester/trunk/src/serverinfo.py
CalDAVTester/trunk/src/xmlDefs.py
Removed Paths:
-------------
CalDAVTester/trunk/acl.xml
CalDAVTester/trunk/acldisabled.xml
CalDAVTester/trunk/aclreports.xml
CalDAVTester/trunk/attachments.xml
CalDAVTester/trunk/caldavIOP.xml
CalDAVTester/trunk/caldavtest.dtd
CalDAVTester/trunk/copymove.xml
CalDAVTester/trunk/delete.xml
CalDAVTester/trunk/depthreports.xml
CalDAVTester/trunk/depthreportsacl.xml
CalDAVTester/trunk/encodedURIs.xml
CalDAVTester/trunk/errors.xml
CalDAVTester/trunk/floating.xml
CalDAVTester/trunk/mkcalendar.xml
CalDAVTester/trunk/populate.xml
CalDAVTester/trunk/propfind.xml
CalDAVTester/trunk/proppatch.xml
CalDAVTester/trunk/put.xml
CalDAVTester/trunk/quota.xml
CalDAVTester/trunk/recurrenceput.xml
CalDAVTester/trunk/reports.xml
CalDAVTester/trunk/schedule.xml
CalDAVTester/trunk/scheduleacl.xml
CalDAVTester/trunk/scheduleauto.xml
CalDAVTester/trunk/schedulenormal.xml
CalDAVTester/trunk/schedulepost.xml
CalDAVTester/trunk/schedulepostacl.xml
CalDAVTester/trunk/schedulepostauto.xml
CalDAVTester/trunk/schedulepostnormal.xml
CalDAVTester/trunk/scheduleprops.xml
CalDAVTester/trunk/serverinfo.dtd
CalDAVTester/trunk/serverinfo.xml
CalDAVTester/trunk/src/caldavtest.py
CalDAVTester/trunk/src/manager.py
CalDAVTester/trunk/src/request.py
CalDAVTester/trunk/src/serverinfo.py
CalDAVTester/trunk/src/xmlDefs.py
CalDAVTester/trunk/sslserverinfo.xml
Deleted: CalDAVTester/trunk/acl.xml
===================================================================
--- CalDAVTester/trunk/acl.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/acl.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,1009 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test ACLs on the server</description>
-
- <start>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/delete/1.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/delete/2.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>1todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/1.txt</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>MKCALENDAR</method>
- <ruri>$pathprefix2:/visibletouser01/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>ACL</method>
- <ruri>$pathprefix2:/visibletouser01/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/3.xml</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>PUT</method>
- <ruri>$pathprefix2:/visibletouser01/hidden1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/acls/16.ics</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>ACL</method>
- <ruri>$pathprefix2:/visibletouser01/hidden1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/20.xml</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>PUT</method>
- <ruri>$pathprefix2:/visibletouser01/visible2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/acls/17.ics</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>MKCALENDAR</method>
- <ruri>$pathprefix2:/notvisibletouser01/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>ACL</method>
- <ruri>$pathprefix2:/notvisibletouser01/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/4.xml</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>PUT</method>
- <ruri>$pathprefix2:/notvisibletouser01/hidden1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/acls/16.ics</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>MKCALENDAR</method>
- <ruri>$pathprefix2:/writeabletouser01/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>ACL</method>
- <ruri>$pathprefix2:/writeabletouser01/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/13.xml</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>MKCALENDAR</method>
- <ruri>$pathprefix2:/calreadtoauth/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>ACL</method>
- <ruri>$pathprefix2:/calreadtoauth/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/18.xml</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>PUT</method>
- <ruri>$pathprefix2:/calreadtoauth/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/acls/16.ics</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>MKCOL</method>
- <ruri>$pathprefix2:/colreadtoauth/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>ACL</method>
- <ruri>$pathprefix2:/colreadtoauth/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/18.xml</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>PUT</method>
- <ruri>$pathprefix2:/colreadtoauth/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/acls/16.ics</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='Read ACLs' ignore='no'>
- <test name='1' ignore='no'>
- <description>PROPFIND existing VEVENT</description>
- <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>/calendars/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:getcontentlength</value>
- <value>DAV:getcontenttype</value>
- <value>DAV:resourcetype</value>
- <value>DAV:getetag</value>
- <value>DAV:displayname</value>
- <value>DAV:supported-privilege-set</value>
- <value>DAV:current-user-privilege-set</value>
- <value>DAV:acl</value>
- <value>DAV:acl-restrictions</value>
- <value>DAV:inherited-acl-set</value>
- <value>DAV:principal-collection-set</value>
- </arg>
- <arg>
- <name>badprops</name>
- <value>DAV:owner</value>
- <value>DAV:group</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PROPFIND without DAV:read-acl or DAV:read-current-user-privilege-set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>/calendars/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:getcontentlength</value>
- <value>DAV:getcontenttype</value>
- <value>DAV:resourcetype</value>
- <value>DAV:getetag</value>
- <value>DAV:displayname</value>
- <value>DAV:supported-privilege-set</value>
- <value>DAV:acl-restrictions</value>
- <value>DAV:inherited-acl-set</value>
- <value>DAV:principal-collection-set</value>
- </arg>
- <arg>
- <name>badprops</name>
- <value>DAV:current-user-privilege-set</value>
- <value>DAV:acl</value>
- <value>DAV:owner</value>
- <value>DAV:group</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>Check for schedule privilege on iTIP Inbox</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>aclItems</callback>
- <arg>
- <name>granted</name>
- <value>DAV:read</value>
- <value>DAV:write</value>
- <value>DAV:write-acl</value>
- <value>DAV:read-current-user-privilege-set</value>
- <value>urn:ietf:params:xml:ns:caldavschedule</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Check for schedule privilege on iTIP Outbox</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>aclItems</callback>
- <arg>
- <name>granted</name>
- <value>DAV:read</value>
- <value>DAV:write</value>
- <value>DAV:write-acl</value>
- <value>DAV:read-current-user-privilege-set</value>
- <value>urn:ietf:params:xml:ns:caldavschedule</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Check for lack of schedule privilege on regular calendar</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>aclItems</callback>
- <arg>
- <name>granted</name>
- <value>DAV:read</value>
- <value>DAV:write</value>
- <value>DAV:write-acl</value>
- <value>DAV:read-current-user-privilege-set</value>
- </arg>
- <arg>
- <name>denied</name>
- <value>urn:ietf:params:xml:ns:caldavschedule</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PROPFIND interaction with ACL' ignore='no'>
- <test name='1' ignore='no'>
- <description>PROPFIND all calendars</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix2:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/2.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix2:/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value/>
- <value>visibletouser01/</value>
- <value>writeabletouser01/</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PROPFIND: prinicpal-collection-set test</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/14.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:principal-collection-set$<href>/principals/users/</href></value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='ACL method preconditions' ignore='no'>
- <test name='1' ignore='no'>
- <description>Failure when DAV:write-acl not granted</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>$pathprefix2:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/4.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>DAV:no-ace-conflict precondition failure - attempt to set protected ACE</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/5.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:no-ace-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>DAV:no-ace-conflict precondition failure - attempt to set inherited ACE</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/6.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:no-ace-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>DAV:no-protected-ace-conflict precondition failure - attempt to change protected ACE</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/7.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:no-protected-ace-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <!-- This error is no longer generated by the server.
- <test name='5' ignore='no'>
- <description>DAV:no-inherited-ace-conflict precondition failure - attempt to change inherited ACE</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/8.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:no-inherited-ace-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- -->
- <test name='6' ignore='no'>
- <description>DAV:deny-before-grant precondition failure - attempt to deny before grant a set of ACEs</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/9.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:deny-before-grant</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>DAV:not-supported-privilege precondition failure - attempt to use unsupported privilege</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/10.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:not-supported-privilege</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>DAV:recognized-principal precondition failure - attempt to use unknown principal</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/11.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:recognized-principal</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>Valid command</description>
- <request print-response='no'>
- <method>ACL</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/12.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:recognized-principal</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='COPY/MOVE interaction with ACL' ignore='no'>
- <test name='1' ignore='no'>
- <description>COPY to non-writeable shared calendar</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/visibletouser01/copy1.ics</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>COPY to non-visible shared calendar</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/notvisibletouser01/copy1.ics</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>COPY to non-visible shared calendar with overwrite</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/notvisibletouser01/hidden1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>T</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>COPY to visible with no overwrite shared calendar</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/writeabletouser01/1.ics</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>201</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>COPY to writeable shared calendar</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/writeabletouser01/copy1.ics</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>MOVE to non-writeable shared calendar</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/visibletouser01/move2.ics</value>
- </header>
- <ruri>2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>MOVE to non-visible shared calendar</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/notvisibletouser01/move2.ics</value>
- </header>
- <ruri>2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>MOVE to non-visible shared calendar with overwrite</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/notvisibletouser01/hidden1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>T</value>
- </header>
- <ruri>2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>MOVE to writeable shared calendar</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix2:/writeabletouser01/move2.ics</value>
- </header>
- <ruri>2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>201</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Principal Properties' ignore='no'>
- <test name='1' ignore='no'>
- <description>PROPFIND principal VEVENT</description>
- <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$principal:</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/15.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:alternate-URI-set</value>
- <value>DAV:principal-URL$<href>$principal:</href></value>
- <value>DAV:group-member-set</value>
- <value>DAV:group-membership</value>
- <value>DAV:displayname$User 01</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Directory list access' ignore='no'>
- <test name='1' ignore='no'>
- <description>Get calendar home collection</description>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix2:/</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>inbox</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Get calendar collection</description>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix2:/visibletouser01/</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>VTODO</value>
- </arg>
- <arg>
- <name>notcontains</name>
- <value>VEVENT</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='ACL calendar collection inheritance' ignore='no'>
- <test name='1' ignore='no'>
- <description>Check that read is not set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix2:/calreadtoauth/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Check that read is not inherited</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix2:/calreadtoauth/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>Set read on collection only</description>
- <request user="$userid2:" pswd="$pswd2:">
- <method>ACL</method>
- <ruri>$pathprefix2:/calreadtoauth/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/19.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Check that read is set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix2:/calreadtoauth/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>aclItems</callback>
- <arg>
- <name>granted</name>
- <value>urn:ietf:params:xml:ns:caldavread-free-busy</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Check that read is inherited</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix2:/calreadtoauth/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>aclItems</callback>
- <arg>
- <name>granted</name>
- <value>urn:ietf:params:xml:ns:caldavread-free-busy</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='ACL regular collection no inheritance' ignore='no'>
- <test name='1' ignore='no'>
- <description>Check that read is not set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix2:/colreadtoauth/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Check that read is not inherited</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix2:/colreadtoauth/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>Set read on collection only</description>
- <request user="$userid2:" pswd="$pswd2:">
- <method>ACL</method>
- <ruri>$pathprefix2:/colreadtoauth/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/19.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Check that read is set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix2:/colreadtoauth/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>aclItems</callback>
- <arg>
- <name>granted</name>
- <value>urn:ietf:params:xml:ns:caldavread-free-busy</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Check that read is inherited</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix2:/colreadtoauth/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acls/1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETE</method>
- <ruri>$pathprefix2:/visibletouser01/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETE</method>
- <ruri>$pathprefix2:/notvisibletouser01/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETE</method>
- <ruri>$pathprefix2:/writeabletouser01/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETE</method>
- <ruri>$pathprefix2:/calreadtoauth/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETE</method>
- <ruri>$pathprefix2:/colreadtoauth/</ruri>
- </request>
- </end>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/acldisabled.xml
===================================================================
--- CalDAVTester/trunk/acldisabled.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/acldisabled.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,335 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test ACLs on the server</description>
-
- <start>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/</ruri>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/collection/disabled/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/delete/1.txt</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acldisabled/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/collection/enabled/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/enabled/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/delete/1.txt</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/collection/enabled/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acldisabled/1.xml</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='Read Resource OK' ignore='yes'>
- <test name='1' ignore='no'>
- <description>GET on disabled ics, user01</description>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>GET on disabled ics, user02</description>
- <request print-response='no' user='$userid2:' pswd="$pswd2:">
- <method>GET</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>GET on disabled ics, admin</description>
- <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>GET on enabled ics, user01</description>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/enabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PROPFIND OK' ignore='yes'>
- <test name='1' ignore='no'>
- <description>PROPFIND on collection, depth infinity</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acldisabled/2.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/collection/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value/>
- <value>enabled/</value>
- <value>enabled/1.ics</value>
- <value>disabled/</value>
- <value>disabled/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PROPFIND on disabled, depth infinity</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/disabled/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acldisabled/2.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/collection/disabled/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value/>
- <value>1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Disable Access' ignore='no'>
- <test name='1' ignore='no'>
- <description>Disable access</description>
- <request>
- <method>ACCESS-DISABLE</method>
- <ruri>$pathprefix:/collection/disabled</ruri>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Read Resource Forbidden' ignore='no'>
- <test name='1' ignore='no'>
- <description>GET on ics, user01</description>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>GET on ics, user02</description>
- <request print-response='no' user='$userid2:' pswd="$pswd2:">
- <method>GET</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>GET on ics, admin</description>
- <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>GET on enabled ics, user01</description>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/enabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PROPFIND FORBIDDEN' ignore='no'>
- <test name='1' ignore='no'>
- <description>PROPFIND on collection, depth infinity</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acldisabled/2.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/collection/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value/>
- <value>enabled/</value>
- <value>enabled/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PROPFIND on disabled, depth infinity</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/disabled/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/acldisabled/2.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Delete Resource Forbidden, then allowed' ignore='no'>
- <test name='1' ignore='no'>
- <description>DELETE on ics, user01</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Enable access</description>
- <request>
- <method>ACCESS-ENABLE</method>
- <ruri>$pathprefix:/collection/disabled</ruri>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>DELETE on ics, user01</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <request>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/</ruri>
- </request>
- </end>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/aclreports.xml
===================================================================
--- CalDAVTester/trunk/aclreports.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/aclreports.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,635 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test ACLs on the server</description>
-
- <start>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/delete/1.txt</filepath>
- </data>
- </request>
- <request>
- <method>PROPPATCH</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/aclreports/10.xml</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/delete/2.txt</filepath>
- </data>
- </request>
- <request>
- <method>PROPPATCH</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/aclreports/9.xml</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>1todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/1.txt</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='acl-principal-prop-set REPORT' ignore='no'>
- <test name='1' ignore='no'>
- <description>Wrong Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Wrong Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>No DAV:prop</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/2.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Too many DAV:prop</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/3.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>No DAV:read-acl privilege</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix2:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/1.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>Valid report</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/1.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>/principals/users/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>$userid1:</value>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>$useradmin:</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='principal-match REPORT' ignore='no'>
- <test name='1' ignore='no'>
- <description>Wrong Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/4.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Wrong Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/4.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>Too many DAV:prop</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/6.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>500</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Valid self report with DAV:prop</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/4.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$userid1:</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Valid self report without DAV:prop</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/5.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>$userid1:</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>Valid principal-search report with DAV:prop</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/7.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>2.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>Valid principal-search report without DAV:prop</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/8.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>2.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>principal-search with inaccessible property</description>
- <request print-response='no' user='$userid2:' pswd='$pswd2:'>
- <method>REPORT</method>
- <ruri>$pathprefix:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/11.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='principal-property-search REPORT' ignore='no'>
- <test name='1' ignore='no'>
- <description>Wrong Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/12.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Wrong Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/12.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>Valid non-apply-to report with DAV:prop</description>
- <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
- <method>REPORT</method>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/12.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>public01</value>
- <value>resource01</value>
- <value>$userid1:</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Valid non-apply-to report without DAV:prop</description>
- <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
- <method>REPORT</method>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/13.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>public02</value>
- <value>resource02</value>
- <value>user02</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Valid apply-to report with DAV:prop</description>
- <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
- <method>REPORT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/14.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>/principals/users/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>public01</value>
- <value>resource01</value>
- <value>$userid1:</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>Valid non-apply-to report without DAV:prop</description>
- <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
- <method>REPORT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/15.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>/principals/users/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>public02</value>
- <value>resource02</value>
- <value>user02</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='principal-search-property-set REPORT' ignore='no'>
- <test name='1' ignore='no'>
- <description>Wrong Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/16.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Wrong Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/16.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>Report on non-principal collection</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/16.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:supported-report</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Valid report</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/16.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/aclreports/18.xml</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='supported-report-set property' ignore='no'>
- <test name='1' ignore='no'>
- <description>Regular resource</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/17.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>207</value>
- </arg>
- </verify>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/aclreports/19.xml</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Regular resource</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>/principals/users/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/aclreports/17.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>207</value>
- </arg>
- </verify>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/aclreports/20.xml</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/attachments.xml
===================================================================
--- CalDAVTester/trunk/attachments.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/attachments.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,144 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test attachments with CalDAV</description>
-
- <start/>
-
- <test-suite name='Inline'>
- <test name='1' ignore='no'>
- <description>VEVENT with image/jpeg</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/attachments/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>1.ics</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>ATTACH;FMTTYPE=image/jpeg;ENCODING=BASE64;VALUE=BINARY:</value>
- </arg>
- <arg>
- <name>contains</name>
- <value>RQAUUUUAFFFFAH//2Q==</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>VTODO with image/jpeg</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/attachments/2.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>2.ics</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>ATTACH;FMTTYPE=image/jpeg;ENCODING=BASE64;VALUE=BINARY:</value>
- </arg>
- <arg>
- <name>contains</name>
- <value>RQAUUUUAFFFFAH//2Q==</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='External'>
- <test name='1' ignore='no'>
- <description>VEVENT with http://</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/attachments/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>3.ics</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>ATTACHMENT:http://www.example.com/test.jpg</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>VTODO with image/jpeg</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/attachments/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>4.ics</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>ATTACHMENT:http://www.example.com/test.jpg</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/caldavIOP.xml
===================================================================
--- CalDAVTester/trunk/caldavIOP.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/caldavIOP.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,275 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start/>
-
- <test-suite name='1. Event Creation'>
- <test name='1.1'>
- <description>Create new single-instance meeting titled "Meeting 1.1" with the location "Durham".</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1-1_1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/1/1_1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='1.2'>
- <description>Create new meeting titled "Meeting 1.2" recurring every Monday from 10:00 AM to 11:00 AM for 4 weeks.</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1-1_2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/1/1_2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='1.3'>
- <description>Create new single-instance meeting titled "Meeting 1.3" with 2 other attendees.</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1-1_3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/1/1_3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='1.4'>
- <description>Create new single-instance meeting titled "Meeting 1.4" with an alarm set to trigger 15 minutes prior to the schedule time of the meeting.</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1-1_4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/1/1_4.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='2. Event Modification'>
- <test name='2.1'>
- <description>Modify the title of meeting "Meeting 1.1" to "Meeting 1.1bis".</description>
- <request>
- <method>PUT</method>
- <ruri>1-1_1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_1.txt</filepath>
- </data>
- </request>
- </test>
- <test name='2.2'>
- <description>Modify the location of the meeting "Meeting 1.1bis" to "Seattle bis".</description>
- <request>
- <method>PUT</method>
- <ruri>1-1_1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_2.txt</filepath>
- </data>
- </request>
- </test>
- <test name='2.3'>
- <description>Reschedule meeting "Meeting 1.1bis" to the next day.</description>
- <request>
- <method>PUT</method>
- <ruri>1-1_1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_3.txt</filepath>
- </data>
- </request>
- </test>
- <test name='2.4'>
- <description>Add an attendee to "Meeting 1.1bis".</description>
- <request>
- <method>PUT</method>
- <ruri>1-1_1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_4.txt</filepath>
- </data>
- </request>
- </test>
- <test name='2.5'>
- <description>Add an alarm to "Meeting 1.1bis".</description>
- <request>
- <method>PUT</method>
- <ruri>1-1_1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_5.txt</filepath>
- </data>
- </request>
- </test>
- <test name='2.6'>
- <description>Modify the title of the 1st instance of the recurring meeting created in 1.2.</description>
- <request>
- <method>PUT</method>
- <ruri>1-1_2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_6.txt</filepath>
- </data>
- </request>
- </test>
- <test name='2.7'>
- <description>Modify the participation status of 1st instance to DECLINED.</description>
- <request>
- <method>PUT</method>
- <ruri>1-1_3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_7.txt</filepath>
- </data>
- </request>
- </test>
- <test name='2.8'>
- <description>Cancel the 4th instance of the recurring meeting created in 1.2.</description>
- <request>
- <method>PUT</method>
- <ruri>1-1_2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_8.txt</filepath>
- </data>
- </request>
- </test>
- <test name='2.9'>
- <description>One client changes "Meeting 1.1bis" to a different time, second client 'refreshes' its display to see the modification.</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>2-2_9.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/2/2_9.txt</filepath>
- </data>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='4. Event Deletion'>
- <test name='4.1'>
- <description>Delete a single non-recurring meeting.</description>
- <request>
- <method>PUT</method>
- <ruri>4-4_1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/4/4_1.txt</filepath>
- </data>
- </request>
- <request>
- <method>DELETE</method>
- <ruri>4-4_1.ics</ruri>
- </request>
- </test>
- <test name='4.2'>
- <description>Delete a single recurring meeting with no overridden instances.</description>
- <request>
- <method>PUT</method>
- <ruri>4-4_2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/4/4_2.txt</filepath>
- </data>
- </request>
- <request>
- <method>DELETE</method>
- <ruri>4-4_2.ics</ruri>
- </request>
- </test>
- <test name='4.3'>
- <description>Delete a single recurring meeting with overridden instances.</description>
- <request>
- <method>PUT</method>
- <ruri>4-4_3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/4/4_3.txt</filepath>
- </data>
- </request>
- <request>
- <method>DELETE</method>
- <ruri>4-4_3.ics</ruri>
- </request>
- </test>
- <test name='4.4'>
- <description>Delete a non-overridden instance of a recurring meeting.</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>4-4_4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/4/4_4a.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>4-4_4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/4/4_4b.txt</filepath>
- </data>
- </request>
- </test>
- <test name='4.5'>
- <description>Delete an overridden instance of a recurring meeting.</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>4-4_5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/4/4_5a.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>4-4_5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/caldaviop/4/4_5b.txt</filepath>
- </data>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/caldavtest.dtd 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/caldavtest.dtd 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,59 +0,0 @@
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<!ELEMENT caldavtest (description?, start, test-suite*, end) >
- <!ATTLIST caldavtest ignore-all (yes|no) "no">
-
- <!ELEMENT description (#PCDATA)>
-
- <!ELEMENT start (request*)>
- <!ELEMENT end (request*)>
-
- <!ELEMENT request (method, header*, ruri?, data?, verify*, grablocation?)>
- <!ATTLIST request auth (yes|no) "yes"
- user CDATA ""
- pswd CDATA ""
- end-delete (yes|no) "no"
- print-response (yes|no) "no">
-
- <!ELEMENT method (#PCDATA)>
- <!ELEMENT header (name, value)>
- <!ELEMENT name (#PCDATA)>
- <!ELEMENT value (#PCDATA)>
- <!ELEMENT ruri (#PCDATA)>
- <!ELEMENT data (content-type, filepath)>
- <!ATTLIST data substitutions (yes|no) "no">
- <!ELEMENT content-type (#PCDATA)>
- <!ELEMENT filepath (#PCDATA)>
-
- <!ELEMENT verify (callback, arg*)>
-
- <!ELEMENT callback (#PCDATA)>
- <!ELEMENT arg (name, value+)>
-
- <!ELEMENT grablocation EMPTY>
-
- <!ELEMENT test-suite (test*)>
- <!ATTLIST test-suite name CDATA #REQUIRED
- ignore (yes|no) "no">
-
- <!ELEMENT test (description?, request+)>
- <!ATTLIST test name CDATA #REQUIRED
- count CDATA "1"
- stats (yes|no) "no"
- ignore (yes|no) "no">
Deleted: CalDAVTester/trunk/copymove.xml
===================================================================
--- CalDAVTester/trunk/copymove.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/copymove.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,439 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test COPY/MOVE methods in CalDAV to ensure proper behaviour
- of calendar resources wrt UIDs, server indexing etc</description>
-
- <start>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/1.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/2.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/calendar2/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/calendar2/2_2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/2.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/3.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/calendar2/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/3.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/4.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/calendar2/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/4.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/5.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/copymove/6.txt</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='COPY'>
- <test name='1' ignore='no'>
- <description>COPY within same calendar to new resource</description>
- <request print-response="no">
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- <value>409</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>COPY within same calendar to existing resource with overwrite</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>T</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- <value>409</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>COPY within same calendar to existing resource without overwrite</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>F</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- <value>409</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>COPY to different calendar, new resource</description>
- <request print-response="no">
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>201</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>COPY to different calendar, new resource, duplicate UID</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/copy2_2.ics</value>
- </header>
- <ruri>2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- <value>409</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6'>
- <description>COPY to different calendar, existing resource with overwrite</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>T</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>204</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7'>
- <description>COPY to different calendar, existing resource with overwrite, duplicate UID</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>T</value>
- </header>
- <ruri>2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- <value>409</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8'>
- <description>COPY to different calendar, existing resource without overwrite</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>F</value>
- </header>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>412</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9'>
- <description>COPY to different calendar, existing resource without overwrite, duplicate UID</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>F</value>
- </header>
- <ruri>2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>412</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='MOVE' ignore='no'>
- <test name='1'>
- <description>MOVE within same calendar to new resource</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <ruri>5.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>2xx</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>MOVE within same calendar to existing resource with overwrite</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>T</value>
- </header>
- <ruri>6.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- <value>409</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>MOVE within same calendar to existing resource without overwrite</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>F</value>
- </header>
- <ruri>3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>412</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>MOVE to different calendar, new resource</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/move2_1.ics</value>
- </header>
- <ruri>move1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>2xx</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>MOVE to different calendar, existing resource with overwrite</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/3.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>T</value>
- </header>
- <ruri>3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>2xx</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6'>
- <description>MOVE to different calendar, existing resource without overwrite</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar2/4.ics</value>
- </header>
- <header>
- <name>Overwrite</name>
- <value>F</value>
- </header>
- <ruri>4.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>412</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <request>
- <method>DELETE</method>
- <ruri>copy1.ics</ruri>
- </request>
- <request>
- <method>DELETE</method>
- <ruri>move1.ics</ruri>
- </request>
- </end>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/delete.xml
===================================================================
--- CalDAVTester/trunk/delete.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/delete.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,85 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test DELETE method in CalDAV to ensure proper behaviour
- of server indexing</description>
-
- <start>
- <request end-delete="yes" print-response="yes">
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/delete/1.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>1todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/1.txt</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='DELETE'>
- <test name='1'>
- <description>DELETE existing VEVENT</description>
- <request>
- <method>DELETE</method>
- <ruri>1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>DELETE existing VTODO</description>
- <request>
- <method>DELETE</method>
- <ruri>1todo.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>DELETE non-existing resource</description>
- <request>
- <method>DELETE</method>
- <ruri>2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/depthreports.xml
===================================================================
--- CalDAVTester/trunk/depthreports.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/depthreports.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,827 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start>
- <request end-delete="yes">
- <method>MKCOL</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/1.txt</filepath>
- </data>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/1.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/2.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/3.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/4.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/5.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/6.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/7.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/7.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/8.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/8.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/9.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/9.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/10.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/10.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/11.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/11.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/12.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/12.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/13.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/13.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/14.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/14.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar/15.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/15.txt</filepath>
- </data>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar2/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/1.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/2.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/16.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/16.txt</filepath>
- </data>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/top-collection/collection/</ruri>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/collection/calendar3/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/collection/calendar3/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/2.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/collection/calendar3/10.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/10.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/collection/calendar3/17.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/17.txt</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='multiget reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>multiget on calendar</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/depth1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>multiget on collection</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/depth2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>calendar/1.ics</value>
- <value>calendar/2.ics</value>
- <value>calendar/3.ics</value>
- <value>calendar/4.ics</value>
- <value>calendar2/1.ics</value>
- <value>calendar2/16.ics</value>
- <value>collection/calendar3/2.ics</value>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>multiget on calendar resource</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/calendar/1.ics</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/depth3.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/top-collection/calendar/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>2.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>multiget on non calendar resource</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/1.ics</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/depth4.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='basic query reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>query on calendar with no Depth</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>query on calendar with Depth 0</description>
- <request>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>query on calendar with Depth 1</description>
- <request>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>query on calendar with Depth infinity</description>
- <request>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>query on collection with no Depth</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>query on collection with Depth 0</description>
- <request>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>query on collection with Depth 1</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>calendar/1.ics</value>
- <value>calendar/10.ics</value>
- <value>calendar/11.ics</value>
- <value>calendar/12.ics</value>
- <value>calendar/13.ics</value>
- <value>calendar/14.ics</value>
- <value>calendar2/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>query on collection with Depth infinity</description>
- <request>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>calendar/1.ics</value>
- <value>calendar/10.ics</value>
- <value>calendar/11.ics</value>
- <value>calendar/12.ics</value>
- <value>calendar/13.ics</value>
- <value>calendar/14.ics</value>
- <value>calendar2/1.ics</value>
- <value>collection/calendar3/10.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>query on matching calendar resource with no Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/calendar/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/top-collection/calendar/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>query on non-matching calendar resource with no Depth</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/calendar/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- </verify>
- </request>
- </test>
- <test name='11' ignore='no'>
- <description>query on non calendar resource with no Depth</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>4xx</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='free-busy reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>query for free busy on calendar with no Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060107T010000Z/20060107T020000Z</value>
- <value>20060107T150000Z/20060107T163000Z</value>
- <value>20060108T150000Z/20060108T180000Z</value>
- <value>20060108T190000Z/20060108T193000Z</value>
- </arg>
- <arg>
- <name>unavailable</name>
- <value>20060108T130000Z/20060108T150000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060108T160000Z/20060108T170000Z</value>
- <value>20060108T210000Z/20060108T213000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>query for free busy on calendar with Depth 0</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060107T010000Z/20060107T020000Z</value>
- <value>20060107T150000Z/20060107T163000Z</value>
- <value>20060108T150000Z/20060108T180000Z</value>
- <value>20060108T190000Z/20060108T193000Z</value>
- </arg>
- <arg>
- <name>unavailable</name>
- <value>20060108T130000Z/20060108T150000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060108T160000Z/20060108T170000Z</value>
- <value>20060108T210000Z/20060108T213000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>query for free busy on calendar with Depth 1</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060107T010000Z/20060107T020000Z</value>
- <value>20060107T150000Z/20060107T163000Z</value>
- <value>20060108T150000Z/20060108T180000Z</value>
- <value>20060108T190000Z/20060108T193000Z</value>
- </arg>
- <arg>
- <name>unavailable</name>
- <value>20060108T130000Z/20060108T150000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060108T160000Z/20060108T170000Z</value>
- <value>20060108T210000Z/20060108T213000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>query for free busy on calendar with Depth infinity</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/top-collection/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060107T010000Z/20060107T020000Z</value>
- <value>20060107T150000Z/20060107T163000Z</value>
- <value>20060108T150000Z/20060108T180000Z</value>
- <value>20060108T190000Z/20060108T193000Z</value>
- </arg>
- <arg>
- <name>unavailable</name>
- <value>20060108T130000Z/20060108T150000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060108T160000Z/20060108T170000Z</value>
- <value>20060108T210000Z/20060108T213000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>query for free busy on collection with no Depth</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>query for free busy on collection with Depth 0</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>query for free busy on collection with Depth 1</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060107T010000Z/20060107T020000Z</value>
- <value>20060107T150000Z/20060107T163000Z</value>
- <value>20060108T150000Z/20060108T180000Z</value>
- <value>20060108T190000Z/20060108T193000Z</value>
- <value>20060108T200000Z/20060108T203000Z</value>
- </arg>
- <arg>
- <name>unavailable</name>
- <value>20060108T130000Z/20060108T170000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060108T160000Z/20060108T173000Z</value>
- <value>20060108T210000Z/20060108T213000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>query for free busy on collection with Depth infinity</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060107T010000Z/20060107T020000Z</value>
- <value>20060107T150000Z/20060107T163000Z</value>
- <value>20060108T150000Z/20060108T180000Z</value>
- <value>20060108T190000Z/20060108T193000Z</value>
- <value>20060108T200000Z/20060108T210000Z</value>
- </arg>
- <arg>
- <name>unavailable</name>
- <value>20060108T130000Z/20060108T170000Z</value>
- <value>20060108T173000Z/20060108T180000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060108T160000Z/20060108T173000Z</value>
- <value>20060108T210000Z/20060108T220000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>query for free busy on resource</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/top-collection/calendar/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>4xx</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/depthreportsacl.xml
===================================================================
--- CalDAVTester/trunk/depthreportsacl.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/depthreportsacl.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,307 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start>
- <request end-delete="yes">
- <method>MKCOL</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <!-- Calendar with DAV:read only -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar1/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal1.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal2.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal3.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Calendar with no privileges -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar2/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal4.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal5.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal6.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Calendar with CALDAV:read-free-busy only -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar3/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal7.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal8.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal9.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='Reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>multiget on top collection</description>
- <request user='$userid2:' pswd='$pswd2:' print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/4.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>calendar1/1.ics</value>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>calendar1/2.ics</value>
- <value>calendar1/3.ics</value>
- <value>calendar2/1.ics</value>
- <value>calendar2/2.ics</value>
- <value>calendar2/3.ics</value>
- <value>calendar3/1.ics</value>
- <value>calendar3/2.ics</value>
- <value>calendar3/3.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>query on top collection</description>
- <request user='$userid2:' pswd='$pswd2:' print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/5.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>calendar1/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>query for free busy on collection with Depth infinity</description>
- <request user='$userid2:' pswd='$pswd2:' print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/6.xml</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060101T060000Z/20060101T070000Z</value>
- <value>20060101T100000Z/20060101T110000Z</value>
- <value>20060101T180000Z/20060101T190000Z</value>
- <value>20060101T220000Z/20060101T230000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/encodedURIs.xml
===================================================================
--- CalDAVTester/trunk/encodedURIs.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/encodedURIs.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,278 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start>
- <request end-delete='yes'>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection%201/</ruri>
- </request>
- <request end-delete='yes'>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/calendar%202/</ruri>
- </request>
- <request end-delete='yes'>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/calendar%203/</ruri>
- </request>
- </start>
-
- <test-suite name='regular resource'>
- <test name='1'>
- <description>PUT</description>
- <request print-response='no' end-delete='yes'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection%201/2%20a.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>!Location</value>
- </arg>
- </verify>
- </request>
- </test>
-
- <test name='2'>
- <description>COPY</description>
- <request print-response='no' end-delete='yes'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/collection%201/2_2%20a.ics</value>
- </header>
- <ruri>$pathprefix:/collection%201/2%20a.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$$host:$pathprefix:/collection%201/2_2%20a.ics</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection%201/2_2%20a.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value/>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>$pathprefix:/collection%201/2_2%20a.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>MOVE</description>
- <request print-response='no' end-delete='yes'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/collection%201/2_3%20a.ics</value>
- </header>
- <ruri>$pathprefix:/collection%201/2%20a.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$$host:$pathprefix:/collection%201/2_3%20a.ics</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection%201/2_2%20a.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value/>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>$pathprefix:/collection%201/2_2%20a.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='calendar resource'>
- <test name='1'>
- <description>PUT</description>
- <request print-response='no' end-delete='yes'>
- <method>PUT</method>
- <ruri>2%20a.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>!Location</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>COPY</description>
- <request print-response='no' end-delete='yes'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar%202/2_2%20a.ics</value>
- </header>
- <ruri>2%20a.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$$host:$pathprefix:/calendar%202/2_2%20a.ics</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/calendar%202/2_2%20a.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value/>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>$pathprefix:/calendar%202/2_2%20a.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>MOVE</description>
- <request print-response='no' end-delete='yes'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar%203/2_3%20a.ics</value>
- </header>
- <ruri>2%20a.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$$host:$pathprefix:/calendar%203/2_3%20a.ics</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/calendar%203/2_3%20a.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value/>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>$pathprefix:/calendar%203/2_3%20a.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/errors.xml
===================================================================
--- CalDAVTester/trunk/errors.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/errors.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,1105 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Tests of various pre-/post-conditions</description>
-
- <start>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/6.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/calendar2/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/calendar2/6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/6.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/calendar2/7.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/7.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/1.xml</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/1.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/2.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/3.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/4.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/5.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/6.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/7.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/7.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/8.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/8.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix:/9.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/9.txt</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='PUT' ignore='no'>
- <test name='1'>
- <description>PUT non-calendar data</description>
- <request>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/1.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>PUT invalid calendar data</description>
- <request>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/2.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>PUT with multiple component types</description>
- <request>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>PUT with METHOD property</description>
- <request>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/4.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>PUT with different uids in same resource</description>
- <request>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/5.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6'>
- <description>PUT with duplicate uids</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/6.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7'>
- <description>PUT with different uid onto existing resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/7.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8'>
- <description>PUT with too many recurrence instances to new resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/8.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9'>
- <description>PUT with too many recurrence instances to existing resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/9.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10'>
- <description>PUT without timezone</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/errors/28.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='COPY' ignore='no'>
- <test name='1'>
- <description>COPY non-calendar data</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <ruri>$pathprefix:/1.xml</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>COPY invalid calendar data</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <ruri>$pathprefix:/2.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>COPY with multiple component types</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <ruri>$pathprefix:/3.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>COPY with METHOD property</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <ruri>$pathprefix:/4.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>COPY with different uids in same resource</description>
- <request>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <ruri>$pathprefix:/5.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6'>
- <description>COPY with duplicate uids</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <ruri>$pathprefix:/6.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7'>
- <description>COPY from calendar with duplicate uids</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/copy1.ics</value>
- </header>
- <ruri>$pathprefix:/calendar2/6.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8'>
- <description>COPY with different uid onto existing resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/1.ics</value>
- </header>
- <ruri>$pathprefix:/7.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9'>
- <description>COPY from calendar with different uid onto existing resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/1.ics</value>
- </header>
- <ruri>$pathprefix:/calendar2/7.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10'>
- <description>COPY with too many recurrence instances to new resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/2.ics</value>
- </header>
- <ruri>$pathprefix:/8.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='11'>
- <description>COPY with too many recurrence instances to existing resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/1.ics</value>
- </header>
- <ruri>$pathprefix:/9.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='MOVE' ignore='no'>
- <test name='1'>
- <description>MOVE non-calendar data</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <ruri>$pathprefix:/1.xml</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>MOVE invalid calendar data</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <ruri>$pathprefix:/2.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>MOVE with multiple component types</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <ruri>$pathprefix:/3.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>MOVE with METHOD property</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <ruri>$pathprefix:/4.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>MOVE with different uids in same resource</description>
- <request>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <ruri>$pathprefix:/5.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6'>
- <description>MOVE with duplicate uids</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <ruri>$pathprefix:/6.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7'>
- <description>MOVE from calendar with duplicate uids</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/move1.ics</value>
- </header>
- <ruri>$pathprefix:/calendar2/6.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8'>
- <description>MOVE with different uid onto existing resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/1.ics</value>
- </header>
- <ruri>$pathprefix:/7.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9'>
- <description>MOVE from calendar with different uid onto existing resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/1.ics</value>
- </header>
- <ruri>$pathprefix:/calendar2/7.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10'>
- <description>MOVE with too many recurrence instances to new resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/2.ics</value>
- </header>
- <ruri>$pathprefix:/8.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='11'>
- <description>MOVE with too many recurrence instances to existing resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$host:$pathprefix:/calendar/1.ics</value>
- </header>
- <ruri>$pathprefix:/9.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='REPORT/calendar-data' ignore='no'>
- <test name='1'>
- <description>query with invalid calendar-data content-type</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/10.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>query with invalid calendar-data version</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/11.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>multiget with invalid calendar-data content-type</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/12.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>multiget with invalid calendar-data version</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/13.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='REPORT/filter' ignore='no'>
- <test name='1'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/14.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/15.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/16.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/17.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/18.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/19.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/20.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/21.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9'>
- <description>query with invalid filter</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/22.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10'>
- <description>query with invalid time-range (dates)</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/29.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='11'>
- <description>query with invalid time-range (floating)</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/30.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='12'>
- <description>free-busy with invalid time-range (dates)</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/31.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='13'>
- <description>free-busy with invalid time-range (floating)</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/32.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>400</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='REPORT/too big' ignore='no'>
- <test name='1'>
- <description>query with too many results</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/calendar.1000/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/23.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:number-of-matches-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>multiget with too many results</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/calendar.1000/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/24.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:number-of-matches-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>free-busy with too many results</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/calendar.1000/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/25.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:number-of-matches-within-limits</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Invalid CalDAV:timezone' ignore='no'>
- <test name='1'>
- <description>query with invalid timezone</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/26.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>proppatch with invalid timezone</description>
- <request print-response='no'>
- <method>PROPPATCH</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/errors/27.txt</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>badprops</name>
- <value>urn:ietf:params:xml:ns:caldavcalendar-timezone</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/floating.xml
===================================================================
--- CalDAVTester/trunk/floating.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/floating.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,497 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test all-day/floating tests for timezone proeprty</description>
-
- <start>
- <request end-delete="yes">
- <method>MKCOL</method>
- <ruri>$pathprefix:/floating/</ruri>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/floating/calendar-none/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-none/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/1.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-none/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/2.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-none/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/3.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-none/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/4.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-none/5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/5.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-none/6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/6.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-none/7.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/7.txt</filepath>
- </data>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/floating/calendar-us/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/8.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-us/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/1.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-us/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/2.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-us/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/3.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-us/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/4.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-us/5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/5.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-us/6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/6.txt</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/floating/calendar-us/7.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/floating/put/7.txt</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='REPORT floating behaviour - calendar without timezone'>
- <test name='1' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: US/Eastern</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/floating/calendar-none/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/calendar-none/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>3.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: US/Pacific</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/floating/calendar-none/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/calendar-none/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>3.ics</value>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: US/Pacific</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/floating/calendar-none/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/3.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/calendar-none/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>3.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='REPORT floating behaviour - calendar with timezone'>
- <test name='1' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: no timezone</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/floating/calendar-us/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/calendar-us/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>3.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: US/Eastern</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/floating/calendar-us/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/calendar-us/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>3.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: US/Pacific</description>
- <request>
- <method>REPORT</method>
- <ruri>$pathprefix:/floating/calendar-us/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/calendar-us/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>3.ics</value>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='REPORT floating behaviour - collection'>
- <test name='1' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: no timezone</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/floating/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>calendar-none/1.ics</value>
- <value>calendar-none/3.ics</value>
- <value>calendar-none/5.ics</value>
- <value>calendar-none/6.ics</value>
- <value>calendar-us/1.ics</value>
- <value>calendar-us/3.ics</value>
- <value>calendar-us/5.ics</value>
- <value>calendar-us/6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: US/Eastern</description>
- <request>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/floating/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>calendar-none/1.ics</value>
- <value>calendar-none/3.ics</value>
- <value>calendar-none/5.ics</value>
- <value>calendar-none/6.ics</value>
- <value>calendar-us/1.ics</value>
- <value>calendar-us/3.ics</value>
- <value>calendar-us/5.ics</value>
- <value>calendar-us/6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>REPORT on non-recurring timed/floating events: US/Pacific</description>
- <request>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/floating/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value>$pathprefix:/floating/</value>
- </arg>
- <arg>
- <name>okhrefs</name>
- <value>calendar-none/1.ics</value>
- <value>calendar-none/3.ics</value>
- <value>calendar-none/6.ics</value>
- <value>calendar-us/1.ics</value>
- <value>calendar-us/3.ics</value>
- <value>calendar-us/6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='REPORT free-busy floating behaviour'>
- <test name='1' ignore='no'>
- <description>free-busy on collection without timezone</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/floating/calendar-none/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/5.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060101T000000Z/20060101T020000Z</value>
- <value>20060101T050000Z/20060101T060000Z</value>
- <value>20060101T080000Z/20060101T090000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060101T000000Z/20060102T000000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>free-busy on collection with timezone</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/floating/calendar-us/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/5.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060101T000000Z/20060101T010000Z</value>
- <value>20060101T050000Z/20060101T070000Z</value>
- <value>20060101T080000Z/20060101T090000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060101T050000Z/20060102T000000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>free-busy on multiple collections with/without timezone</description>
- <request print-response='no'>
- <method>REPORT</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix:/floating/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/floating/5.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060101T000000Z/20060101T020000Z</value>
- <value>20060101T050000Z/20060101T070000Z</value>
- <value>20060101T080000Z/20060101T090000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060101T000000Z/20060102T000000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/mkcalendar.xml
===================================================================
--- CalDAVTester/trunk/mkcalendar.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/mkcalendar.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,175 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start/>
-
- <test-suite name='MKCALENDAR without body'>
- <test name='1'>
- <description>Simple MKCALENDAR</description>
- <request end-delete='yes'>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/caltest1/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>201</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>MKCALENDAR on existing resource</description>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/caltest1/</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:resource-must-be-null</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>MKCALENDAR inside another calendar</description>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/caltest1/caltest2/</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavcalendar-collection-location-ok</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>MKCOL inside a calendar</description>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/caltest1/collection/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>403</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='MKCALENDAR with body'>
- <test name='1'>
- <description>MKCALENDAR with correct request body</description>
- <request end-delete='yes'>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/caltest2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/mkcalendar/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>201</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>MKCALENDAR with correct request body on existing resource</description>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/caltest2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/mkcalendar/1.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:resource-must-be-null</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>MKCALENDAR with incorrect request body</description>
- <request end-delete='yes' print-response='no'>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/caltest3/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/mkcalendar/2.txt</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>badprops</name>
- <value>DAV:getetag</value>
- <value>DAV:displayname</value>
- <value>urn:ietf:params:xml:ns:caldavcalendar-description</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/caltest3/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>MKCALENDAR with incorrect request body on existing resource</description>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/caltest2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/mkcalendar/2.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:resource-must-be-null</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Added: CalDAVTester/trunk/performer.py
===================================================================
--- CalDAVTester/trunk/performer.py (rev 0)
+++ CalDAVTester/trunk/performer.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,156 @@
+#!/usr/bin/env python
+#
+##
+# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Cyrus Daboo, cdaboo at apple.com
+##
+#
+# Runs a series of test suites inb parallel using a thread pool
+#
+import sys
+
+from random import randrange
+from threading import Timer
+import math
+import time
+import xml.dom.minidom
+import src.xmlDefs
+
+from src.manager import manager
+from src.perfinfo import perfinfo
+
+EX_INVALID_CONFIG_FILE = "Invalid Config File"
+
+if __name__ == "__main__":
+
+ def readXML():
+
+ perfinfoname = "scripts/performance/perfinfo.xml"
+ if len(sys.argv) > 1:
+ perfinfoname = sys.argv[1]
+
+ # Open and parse the server config file
+ fd = open(perfinfoname, "r")
+ doc = xml.dom.minidom.parse( fd )
+ fd.close()
+
+ # Verify that top-level element is correct
+ perfinfo_node = doc._get_documentElement()
+ if perfinfo_node._get_localName() != src.xmlDefs.ELEMENT_PERFINFO:
+ raise EX_INVALID_CONFIG_FILE
+ if not perfinfo_node.hasChildNodes():
+ raise EX_INVALID_CONFIG_FILE
+ pinfo = perfinfo()
+ pinfo.parseXML(perfinfo_node)
+ return pinfo
+
+ def subs(str, i):
+ if "%" in str:
+ return str % i
+ else:
+ return str
+
+ pinfo = readXML()
+
+ # Cummulative results
+ allresults = []
+
+ for test in pinfo.tests:
+ result = [0.0, 0.0, 0.0]
+ print "|",
+ for loop in range(test[1]):
+ print ".",
+ results = []
+
+ def runner(*args):
+ """
+ Test runner method.
+ @param *args:
+ """
+
+ if pinfo.logging:
+ print "Start: %s" % (args[0]["moresubs"]["$userid1:"],)
+ try:
+ mgr = manager(level=manager.LOG_NONE)
+ result, timing = mgr.runWithOptions(*args[1:], **args[0])
+ results.append(timing)
+ if pinfo.logging:
+ print "Done: %s" % (args[0]["moresubs"]["$userid1:"],)
+ except Exception, e:
+ print "Thread run exception: %s" % (str(e),)
+
+ # Create argument list that varies for each threaded client. Basically use a separate
+ # server account for each client.
+ args = []
+ for i in range(1, pinfo.clients + 1):
+ moresubs = {}
+ for key, value in pinfo.subsdict.iteritems():
+ moresubs[key] = subs(value, i)
+ args.append(({"moresubs": moresubs}, subs(pinfo.serverinfo, i), "", [subs(pinfo.testinfo, i)]))
+
+ if pinfo.threads:
+ # Run threads by queuing up a set of timers set to start 5 seconds + random time
+ # after thread is actually started. The random time is spread over the interval
+ # we are testing over. Wait for all threads to finish.
+ timers = []
+ for arg in args:
+ sleeper = 5.0 + randrange(0, 100)/100.0 * test[0]
+ timers.append(Timer(sleeper, runner, arg))
+
+ startTime = time.time() + 5.0
+ for thread in timers:
+ thread.start( )
+
+ for thread in timers:
+ thread.join(None)
+ else:
+ # Just execute each client request one after the other.
+ startTime = time.time()
+ for arg in args:
+ runner(*arg)
+
+ # Determine timing stats for this run
+ diffTime = time.time() - startTime
+
+ average = 0.0
+ for i in results:
+ average += i
+ if pinfo.logging:
+ print i
+ average /= len(results)
+
+ stddev = 0.0
+ for i in results:
+ stddev += (i - average) ** 2
+ stddev /= len(results)
+ stddev = math.sqrt(stddev)
+
+ result[0] += average
+ result[1] += stddev
+ result[2] += diffTime
+
+ # Average results from runs.
+ result[0] /= test[1]
+ result[1] /= test[1]
+ result[2] /= test[1]
+
+ allresults.append(result)
+
+ # Print out averaged results.
+ print "\n\nSpread\tReqs/sec\tAverage\t\tStd. Dev.\tTotal"
+ print "==============================================================="
+ for i in range(len(pinfo.tests)):
+ print "%.0f\t%.3f\t\t%.3f\t\t%.3f\t\t%.3f" % (pinfo.tests[i][0], pinfo.clients/pinfo.tests[i][0], allresults[i][0], allresults[i][1], allresults[i][2],)
Deleted: CalDAVTester/trunk/populate.xml
===================================================================
--- CalDAVTester/trunk/populate.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/populate.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,48 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<populate>
- <description>Populate a TwistedCalDAV server with user accounts.</description>
- <path>/Users/</path>
-
- <account count='1'>
- <name>User-1.10</name>
- <calendars>
- <name>calendar</name>
- <datasource count='1' mode='all'>Resource/Populate/</datasource>
- </calendars>
- </account>
- <account count='1'>
- <name>User-1.100</name>
- <calendars>
- <name>calendar</name>
- <datasource count='10' mode='all'>Resource/Populate/</datasource>
- </calendars>
- </account>
- <account count='1'>
- <name>User-1.1000</name>
- <calendars>
- <name>calendar</name>
- <datasource count='100' mode='all'>Resource/Populate/</datasource>
- </calendars>
- </account>
-</populate>
Deleted: CalDAVTester/trunk/propfind.xml
===================================================================
--- CalDAVTester/trunk/propfind.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/propfind.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,273 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start/>
-
- <test-suite name='regular prop finds'>
- <test name='1'>
- <description>PROPFIND of basic properties depth=0</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>PROPFIND of basic properties depth=1</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>PROPFIND of basic properties depth=infinity</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>PROPFIND getcontentlength=0</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/7.txt</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:getcontentlength$</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='prop names'>
- <test name='1'>
- <description>PROPFIND of property names depth=0</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>PROPFIND of property names depth=1</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>PROPFIND of property names depth=infinity</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='prop all'>
- <test name='1'>
- <description>PROPFIND of all properties depth=0</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>PROPFIND of all properties depth=1</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>PROPFIND of all properties depth=infinity</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='prop errors'>
- <test name='1'>
- <description>PROPFIND with invalid elements</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/4.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>4xx</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>PROPFIND of unknown element</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/5.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>4xx</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>PROPFIND with one unknown property</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/propfinds/6.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/proppatch.xml
===================================================================
--- CalDAVTester/trunk/proppatch.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/proppatch.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,165 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start/>
-
- <test-suite name='prop patches'>
- <test name='1' ignore="no">
- <description>PROPPATCH of details: good</description>
- <request print-response='no'>
- <method>PROPPATCH</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/proppatches/1.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:details</value>
- <value>DAV:details2</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/proppatches/2.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:details$My Name</value>
- <value>DAV:details2$My Name 2</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore="no">
- <description>PROPPATCH of details: remove it</description>
- <request print-response='no'>
- <method>PROPPATCH</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/proppatches/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:details</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/proppatches/2.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:details2$My Name 2</value>
- </arg>
- <arg>
- <name>badprops</name>
- <value>DAV:details</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>PROPPATCH remove non-existant</description>
- <request print-response='no'>
- <method>PROPPATCH</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/proppatches/4.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:missing</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>PROPPATCH of resourcetype: fails</description>
- <request print-response='no'>
- <method>PROPPATCH</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/proppatches/5.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>badprops</name>
- <value>DAV:details</value>
- <value>DAV:details2</value>
- <value>DAV:resourcetype</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/proppatches/2.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:details2$My Name 2</value>
- </arg>
- <arg>
- <name>badprops</name>
- <value>DAV:details</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/put.xml
===================================================================
--- CalDAVTester/trunk/put.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/put.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,500 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test PUT method in CalDAV</description>
-
- <start/>
-
- <test-suite name='PUT VEVENT'>
- <test name='1' ignore='no'>
- <description>PUT non-recurring timed event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>1.ics</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/recurrenceput/1.txt</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PUT not in calendar collection</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>$pathprefix:/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>$pathprefix:/1.ics</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/recurrenceput/1.txt</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Put VTODO' ignore='no'>
- <test name='1' ignore='no'>
- <description>Plain VTODO with no date</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>1todo.ics</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/todo/1.txt</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Plain VTODO with DUE only</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>2todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>2todo.ics</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/todo/2.txt</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>Plain VTODO with DTSTART/DUARTION only</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>3todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>3todo.ics</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/todo/3.txt</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Plain VTODO with DTSTART only</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>4todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/4.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>GET</method>
- <ruri>4todo.ics</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/todo/4.txt</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Problem VEVENTs - EXDATE & various combinations of date-time/date values'>
- <test name='1' ignore='no'>
- <description>PUT problem event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>DTSTART/DATE-TIME/UTC, DTEND/DATE</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/2.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>DTSTART/DATE-TIME/TZID, DTEND/DATE</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>18.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/16.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>DTSTART/DATE-TIME/Float, DTEND/DATE</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>19.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/17.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>DTSTART/DATE-TIME/UTC, DTEND/DATE-TIME/TZID</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>DTSTART/DATE-TIME/UTC, DTEND/DATE-TIME/Float</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>DTSTART/DATE-TIME/TZID, DTEND/DATE-TIME/UTC</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>7.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/5.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>DTSTART/DATE-TIME/TZID, DTEND/DATE-TIME/Float</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>8.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/6.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>DTSTART/DATE-TIME/Float, DTEND/DATE-TIME/UTC</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>9.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/7.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>DTSTART/DATE-TIME/Float, DTEND/DATE-TIME/TZID</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>10.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/8.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Problem VTODOs - various combinations of date-time/date values'>
- <test name='1' ignore='no'>
- <description>DTSTART/DATE-TIME/UTC, DUE/DATE</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>11.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/9.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>DTSTART/DATE-TIME/TZID, DUE/DATE</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>20.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/18.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>DTSTART/DATE-TIME/Float, DUE/DATE</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>21.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/19.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>DTSTART/DATE, DUE/DATE-TIME/UTC</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>22.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/20.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>DTSTART/DATE, DUE/DATE-TIME/TZID</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>23.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/21.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>DTSTART/DATE, DUE/DATE-TIME/Float</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>24.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/22.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>DTSTART/DATE-TIME/UTC, DUE/DATE-TIME/TZID</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>12.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/10.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>DTSTART/DATE-TIME/UTC, DUE/DATE-TIME/Float</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>13.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/11.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>DTSTART/DATE-TIME/TZID, DUE/DATE-TIME/UTC</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>14.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/12.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>DTSTART/DATE-TIME/TZID, DUE/DATE-TIME/Float</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>15.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/13.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='11' ignore='no'>
- <description>DTSTART/DATE-TIME/Float, DUE/DATE-TIME/UTC</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>16.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/14.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='12' ignore='no'>
- <description>DTSTART/DATE-TIME/Float, DUE/DATE-TIME/TZID</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>17.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/problemics/15.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/quota.xml
===================================================================
--- CalDAVTester/trunk/quota.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/quota.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,2974 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest ignore-all="yes">
- <description>Test Quota support on the server</description>
-
- <start>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/</ruri>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/temp/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/2.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/3.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/4.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/5.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/6.ics</filepath>
- </data>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/noquotacol/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/noquotacol/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/quotacol/</ruri>
- </request>
- <request>
- <method>QUOTA-ENABLE-2048</method>
- <ruri>$pathprefix:/collection/quotacol/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/quotacol/temp/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacol/temp/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacol/temp/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/2.ics</filepath>
- </data>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- </request>
- <request>
- <method>QUOTA-ENABLE-1048576</method><!-- 1Mb -->
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/parentquotacol/</ruri>
- </request>
- <request>
- <method>QUOTA-ENABLE-4096</method><!-- 4Kb -->
- <ruri>$pathprefix:/collection/parentquotacol/</ruri>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
- </request>
- <request>
- <method>QUOTA-ENABLE-2048</method><!-- 2Kb -->
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
- </request>
- <request>
- <method>MKCOL</method>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
- </request>
- <request>
- <method>QUOTA-ENABLE-1048576</method><!-- 1Mb -->
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/collection/noquotacal/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/noquotacal/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/collection/quotacal/</ruri>
- </request>
- <request>
- <method>QUOTA-ENABLE-2048</method>
- <ruri>$pathprefix:/collection/quotacal/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- </request>
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- </request>
- <request>
- <method>QUOTA-ENABLE-1048576</method><!-- 1Mb -->
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/calendar/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/2.ics</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='Properties on collections' ignore='no'>
- <test name='1' ignore='no'>
- <description>allprop on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/1.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>allprop on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/1.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>propname on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/2.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>propname on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/2.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>props on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- </arg>
- <arg>
- <name>badprops</name>
- <value>DAV:quota-available-bytes</value>
- <value>DAV:quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>props on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$118</value>
- <value>DAV:quota-used-bytes$1930</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Properties on resources' ignore='no'>
- <test name='1' ignore='no'>
- <description>allprop on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacol/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/1.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>allprop on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/1.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>propname on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacol/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/2.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>propname on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/2.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>props on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacol/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- </arg>
- <arg>
- <name>badprops</name>
- <value>DAV:quota-available-bytes</value>
- <value>DAV:quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>props on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$118</value>
- <value>DAV:quota-used-bytes$1930</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Properties on calendars' ignore='no'>
- <test name='1' ignore='no'>
- <description>allprop on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/1.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>allprop on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/1.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>propname on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/2.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>propname on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/2.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>props on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- </arg>
- <arg>
- <name>badprops</name>
- <value>DAV:quota-available-bytes</value>
- <value>DAV:quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>props on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1413</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Properties on calendar resources' ignore='no'>
- <test name='1' ignore='no'>
- <description>allprop on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacal/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/1.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>allprop on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/1.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>propname on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacal/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/2.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>notcontains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>propname on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/2.xml</filepath>
- </data>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>quota-available-bytes</value>
- <value>quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>props on non-quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/noquotacal/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- </arg>
- <arg>
- <name>badprops</name>
- <value>DAV:quota-available-bytes</value>
- <value>DAV:quota-used-bytes</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>props on quota collection</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1413</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PUT Over quota on collection' ignore='no'>
- <test name='1' ignore='no'>
- <description>over quota on quota collection with new resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacol/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/2.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>over quota on quota collection with existing resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>event_1</value>
- </arg>
- <arg>
- <name>notcontains</name>
- <value>more</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>over quota on quota sub-collection with new resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacol/temp/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/temp/3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>over quota on quota sub-collection with existing resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacol/temp/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/temp/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>event_1</value>
- </arg>
- <arg>
- <name>notcontains</name>
- <value>more</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PUT Over quota on calendar' ignore='no'>
- <test name='1' ignore='no'>
- <description>over quota on quota calendar with new resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacal/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacal/4.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>over quota on quota calendar with existing resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/6.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>event_1</value>
- </arg>
- <arg>
- <name>notcontains</name>
- <value>more</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='COPY resource over quota' ignore='no'>
- <test name='1' ignore='no'>
- <description>over quota on quota collection with new resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacol/2.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/temp/2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>over quota on quota collection with existing resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacol/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>event_1</value>
- </arg>
- <arg>
- <name>notcontains</name>
- <value>more</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/temp/2.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>over quota on quota collection copying collection</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacol/test/</value>
- </header>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/test/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='COPY calendar resource over quota' ignore='no'>
- <test name='1' ignore='no'>
- <description>over quota on quota calendar with new resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacal/4.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/4.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/4.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/temp/4.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1413</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>over quota on quota calendar with existing resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacal/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/6.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>event_1</value>
- </arg>
- <arg>
- <name>notcontains</name>
- <value>more</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/temp/6.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1413</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>not allowed on quota calendar copying collection</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacal/test/</value>
- </header>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>405</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacal/test/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/quotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1413</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='COPY collection over quota' ignore='no'>
- <test name='1' ignore='no'>
- <description>over quota on quota collection with new collection</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacol/test/</value>
- </header>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/test/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>over quota on quota collection with existing collection</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacol/temp/</value>
- </header>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/temp/3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>over quota on quota collection copying collection</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/quotacol/temp/test/</value>
- </header>
- <header>
- <name>Depth</name>
- <value>infinity</value>
- </header>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/quotacol/temp/test/</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PUT/DELETE/COPY/MOVE of resource with quota update' ignore='no'>
- <test name='1' ignore='no'>
- <description>Initial quota values</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PUT new resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047941</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>PUT existing resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047490</value>
- <value>DAV:quota-used-bytes$1086</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>DELETE existing resource</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>COPY new resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacol/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047941</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>COPY existing resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacol/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047490</value>
- <value>DAV:quota-used-bytes$1086</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>DELETE existing resource</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>MOVE new resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacol/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047941</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>MOVE existing resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacol/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047490</value>
- <value>DAV:quota-used-bytes$1086</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>DELETE existing resource</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PUT/DELETE/COPY/MOVE of calendar resource with quota update' ignore='no'>
- <test name='1' ignore='no'>
- <description>Initial quota values</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- <!-- Make sure we have the source collection files in place -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/2.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/3.ics</filepath>
- </data>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PUT new resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047941</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>PUT existing resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047490</value>
- <value>DAV:quota-used-bytes$1086</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>DELETE existing resource</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>COPY new resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacal/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047941</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>COPY existing resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacal/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047490</value>
- <value>DAV:quota-used-bytes$1086</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>DELETE existing resource</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>MOVE new resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacal/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047941</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>MOVE existing resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacal/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/temp/3.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1047490</value>
- <value>DAV:quota-used-bytes$1086</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>DELETE existing resource</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacal/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='COPY/MOVE/DELETE of collection with quota update' ignore='no'>
- <test name='1' ignore='no'>
- <description>Initial quota values</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- <!-- Make sure we have the source collection files in place -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/2.ics</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/temp/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/3.ics</filepath>
- </data>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>COPY new collection</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacol/test/</value>
- </header>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1033552</value>
- <value>DAV:quota-used-bytes$15024</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>DELETE existing collection</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/largequotacol/test/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>MOVE new collection</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/collection/largequotacol/test/</value>
- </header>
- <ruri>$pathprefix:/collection/temp/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1033552</value>
- <value>DAV:quota-used-bytes$15024</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>DELETE existing resource</description>
- <request print-response='no'>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/largequotacol/test/</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/largequotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PUT with nested over quota' ignore='no'>
- <test name='1' ignore='no'>
- <description>Initial quota values</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$4096</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$2048</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PUT small resource below nested and below parent quota</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$3461</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1413</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>PUT smallish resource above nested but below parent quota</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>507</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/4.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$3461</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1413</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1048576</value>
- <value>DAV:quota-used-bytes$0</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>PUT smallish resource below nested (2) and below parent quota</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$426</value>
- <value>DAV:quota-used-bytes$3670</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1413</value>
- <value>DAV:quota-used-bytes$635</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1045541</value>
- <value>DAV:quota-used-bytes$3035</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>PUT small resource below nested but above parent quota</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/2.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$0</value>
- <value>DAV:quota-used-bytes$4330</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$753</value>
- <value>DAV:quota-used-bytes$1295</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1045541</value>
- <value>DAV:quota-used-bytes$3035</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>PUT large resource below nested (2) but above parent quota</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/5.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$0</value>
- <value>DAV:quota-used-bytes$11200</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$753</value>
- <value>DAV:quota-used-bytes$1295</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/quota/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>DAV:resourcetype</value>
- <value>DAV:quota-available-bytes$1038671</value>
- <value>DAV:quota-used-bytes$9905</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='PUT with oversize attachment' ignore='no'>
- <test name='1' ignore='no'>
- <description>PUT new oversized resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/calendar/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/7.ics</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/calendar/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PUT existing oversized resource</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/calendar/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/7.ics</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/calendar/2.ics</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>event 2</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>PUT new oversized resource to regular collection</description>
- <request print-response='no'>
- <method>PUT</method>
- <ruri>$pathprefix:/collection/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/quota/7.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>COPY new oversized resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/calendar/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/1.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/calendar/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>COPY existing oversized resource</description>
- <request print-response='no'>
- <method>COPY</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/calendar/2.ics</value>
- </header>
- <ruri>$pathprefix:/collection/1.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/calendar/2.ics</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>event 2</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>MOVE new oversized resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/calendar/1.ics</value>
- </header>
- <ruri>$pathprefix:/collection/1.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/calendar/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>404</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>MOVE existing oversized resource</description>
- <request print-response='no'>
- <method>MOVE</method>
- <header>
- <name>Destination</name>
- <value>$pathprefix:/calendar/2.ics</value>
- </header>
- <ruri>$pathprefix:/collection/1.ics</ruri>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/calendar/2.ics</ruri>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>event 2</value>
- </arg>
- </verify>
- </request>
- <request print-response='no'>
- <method>GET</method>
- <ruri>$pathprefix:/collection/1.ics</ruri>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <request>
- <method>DELETE</method>
- <ruri>$pathprefix:/collection/</ruri>
- </request>
- </end>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/recurrenceput.xml
===================================================================
--- CalDAVTester/trunk/recurrenceput.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/recurrenceput.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,247 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test PUT method in CalDAV with various recurrences to ensure
- proper behaviour of server indexing</description>
-
- <start/>
-
- <test-suite name='VEVENTs'>
- <test name='1' ignore='no'>
- <description>PUT non-recurring timed event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/1.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>PUT non-recurring all day event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/2.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>PUT recurring (no exceptions) timed event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>PUT recurring (no exceptions) all day event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/4.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>PUT recurring (with exceptions) timed event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/5.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>PUT recurring (with exceptions) all day event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/6.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>PUT recurring (with future exceptions) timed event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>7.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/7.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>PUT recurring (with future exceptions) all day event</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>8.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/recurrenceput/8.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='VTODOs' ignore='no'>
- <test name='1' ignore='no'>
- <description>Plain VTODO with no date - recurring</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>1todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/5.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>Plain VTODO with all-day DUE only - recurring</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>2todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/6.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>Plain VTODO with all-day DTSTART/DURATION only - recurring</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>3todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/7.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>Plain VTODO with all-day DTSTART only - recurring</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>3todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/8.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Plain VTODO with timed DUE only - recurring</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>4todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/9.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>Plain VTODO with timed DTSTART/DURATION only - recurring</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>5todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/10.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>Plain VTODO with timed DTSTART/DURATION only - recurring</description>
- <request end-delete='yes'>
- <method>PUT</method>
- <ruri>5todo.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/todo/11.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/reports.xml
===================================================================
--- CalDAVTester/trunk/reports.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/reports.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,1201 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/1.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/2.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/3.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>4.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/4.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>5.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/5.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>6.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/6.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>7.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/7.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>8.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/8.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>9.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/9.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>10.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/10.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>11.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/11.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>12.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/12.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>13.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/13.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>14.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/14.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>15.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/15.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>101.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/101.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>102.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/102.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>103.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/103.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>104.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/104.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>105.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/105.txt</filepath>
- </data>
- </request>
- <request end-delete="yes">
- <method>PUT</method>
- <ruri>106.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/reports/put/106.txt</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='multiget reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>basic multiget of 4 resources returning etag and entire ics data</description>
- <request>
- <method>REPORT</method>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- <value>101.ics</value>
- <value>102.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>basic multiget of 4 resources returning etag and only VCALENDAR property data (no embedded components)</description>
- <request>
- <method>REPORT</method>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>basic multiget of 4 resources returning etag and only VTIMEZONE components</description>
- <request>
- <method>REPORT</method>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/3.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>basic multiget of 4 resources returning etag and only SUMMARY/UID properties inside VEVENT components and VALARMs</description>
- <request>
- <method>REPORT</method>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/4.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- <value>101.ics</value>
- <value>102.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>as 4.txt except that the SUMMARY property value is not returned</description>
- <request>
- <method>REPORT</method>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/5.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- <value>101.ics</value>
- <value>102.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>Does allprop</description>
- <request>
- <method>REPORT</method>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/6.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>Does propname</description>
- <request>
- <method>REPORT</method>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/multiget/7.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='basic query reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>query for resources with VCALENDAR & VEVENT defined</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- <value>8.ics</value>
- <value>9.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>query for resources with VCALENDAR & VEVENT not defined</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/8.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>15.ics</value>
- <value>101.ics</value>
- <value>102.ics</value>
- <value>103.ics</value>
- <value>104.ics</value>
- <value>105.ics</value>
- <value>106.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>query for resources where the SUMMARY in a VEVENT contains the character '1'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>query for resources where the SUMMARY in a VEVENT does not contain the character '1'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/7.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- <value>8.ics</value>
- <value>9.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>query for resources where the DESCRIPTION property exists in a VEVENT</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/3.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>2.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>query for resources where the DESCRIPTION property does not exist in a VEVENT</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/9.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- <value>8.ics</value>
- <value>9.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>query for resources that have a DTSTART in a VEVENT that contains a TZID parameter containing the text 'Paci'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/4.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>3.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>query for resources that have a DTSTART in a VEVENT that contains a TZID parameter not containing the text 'Paci'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/10.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>4.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- <value>8.ics</value>
- <value>9.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>query for resources that have a DTSTART in a VEVENT that contains a TZID parameter containing the text 'Paci' or 'Moun'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/5.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>2.ics</value>
- <value>3.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>query for resources where the SUMMARY in a VEVENT contains the character '4' or has a DTSTART in a VEVENT that contains a TZID parameter containing the text 'East'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/6.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>4.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- <value>8.ics</value>
- <value>9.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='11' ignore='no'>
- <description>query for resources where the RECURRENCE-ID in a VEVENT does not contain a RANGE parameter</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/11.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='12' ignore='no'>
- <description>query for resources with VCALENDAR & VTODO defined</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/101.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>101.ics</value>
- <value>102.ics</value>
- <value>103.ics</value>
- <value>104.ics</value>
- <value>105.ics</value>
- <value>106.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='13' ignore='no'>
- <description>query for resources where the SUMMARY in a VTODO contains the character '1'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/102.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>101.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='14' ignore='no'>
- <description>query for resources that have a DUE in a VTODO that contains a TZID parameter containing the text 'East'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/103.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>102.ics</value>
- <value>104.ics</value>
- <value>106.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='15' ignore='no'>
- <description>query for resources with VCALENDAR & VEVENT or VTODO defined</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/201.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- <value>8.ics</value>
- <value>9.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- <value>101.ics</value>
- <value>102.ics</value>
- <value>103.ics</value>
- <value>104.ics</value>
- <value>105.ics</value>
- <value>106.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='16' ignore='no'>
- <description>query for resources where the SUMMARY in a VEVENT or VTODO contains the character '1'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/202.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- <value>101.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='17' ignore='no'>
- <description>query for resources that have a DTSTART in a VEVENT with TZID containg 'Paci' or a DUE in a VTODO with TZID containing 'East'</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/203.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>3.ics</value>
- <value>102.ics</value>
- <value>104.ics</value>
- <value>106.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='18' ignore='no'>
- <description>query for VEVENTs that do not contain VALARMs</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/basicquery/12.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- <value>8.ics</value>
- <value>9.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='time-range query reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>query for VEVENTs within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>query for VEVENT/VFREEBUSYs that have a CREATED/DTSTAMP within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- <value>2.ics</value>
- <value>3.ics</value>
- <value>4.ics</value>
- <value>8.ics</value>
- <value>9.ics</value>
- <value>10.ics</value>
- <value>11.ics</value>
- <value>12.ics</value>
- <value>13.ics</value>
- <value>14.ics</value>
- <value>15.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>query for VEVENTs within time range with specific SUMMARY text</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/3.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>query for VEVENT recurrence instance within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/4.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>query for overridden VEVENT instance within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/5.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>query for overridden VEVENT not within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/6.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>query for overridden this-and-future VEVENT within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/7.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>query for VTODOs within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/101.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>102.ics</value>
- <value>103.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>query for VTODOs within time range with specific SUMMARY text</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/102.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>102.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>query for VTODO recurrence instance within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/timerangequery/103.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>105.ics</value>
- <value>106.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='alarm time-range query reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>query for VALARMS within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/alarmtimerangequery/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>query for repeating VALARMS within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/alarmtimerangequery/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>query for recurring VALARMS within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/alarmtimerangequery/3.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>5.ics</value>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>query for recurring/overridden VALARMS within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/alarmtimerangequery/4.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>5.ics</value>
- <value>6.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>query for VALARMS on VTODO within time range</description>
- <request>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/alarmtimerangequery/5.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>102.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='free-busy reports' ignore='no'>
- <test name='1' ignore='no'>
- <description>query for free busy with time range</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/1.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060101T150000Z/20060101T160000Z</value>
- <value>20060101T180000Z/20060101T190000Z</value>
- <value>20060101T210000Z/20060101T220000Z</value>
- <value>20060101T230000Z/20060102T000000Z</value>
- <value>20060102T150000Z/20060102T160000Z</value>
- <value>20060103T150000Z/20060103T160000Z</value>
- <value>20060104T150000Z/20060104T160000Z</value>
- <value>20060102T190000Z/20060102T200000Z</value>
- <value>20060103T190000Z/20060103T200000Z</value>
- <value>20060104T210000Z/20060104T220000Z</value>
- <value>20060102T230000Z/20060103T000000Z</value>
- <value>20060103T230000Z/20060104T000000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>query for free busy with overlapping and consecutive events</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/freebusy/2.txt</filepath>
- </data>
- <verify>
- <callback>freeBusy</callback>
- <arg>
- <name>busy</name>
- <value>20060107T010000Z/20060107T020000Z</value>
- <value>20060107T150000Z/20060107T163000Z</value>
- <value>20060108T150000Z/20060108T180000Z</value>
- <value>20060108T190000Z/20060108T193000Z</value>
- </arg>
- <arg>
- <name>unavailable</name>
- <value>20060108T130000Z/20060108T150000Z</value>
- </arg>
- <arg>
- <name>tentative</name>
- <value>20060108T160000Z/20060108T170000Z</value>
- <value>20060108T210000Z/20060108T213000Z</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='limit/expand recurrence in reports' ignore='no'>
- <test name='1' ignore='yes'>
- <description>time-range query with limit over same range</description>
- <request print-response='yes'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/limitexpand/1.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='yes'>
- <description>time-range query with limit over different range</description>
- <request print-response='yes'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/limitexpand/2.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>time-range query with expand over same range</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/limitexpand/3.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>time-range query with expand over different range</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/limitexpand/4.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>5.ics</value>
- <value>6.ics</value>
- <value>7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>query with limit-freebusy-set</description>
- <request print-response='no'>
- <method>REPORT</method>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/reports/limitexpand/5.txt</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>okhrefs</name>
- <value>15.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/schedule.xml
===================================================================
--- CalDAVTester/trunk/schedule.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/schedule.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,727 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test SCHEDULE method in CalDAV</description>
-
- <start>
- <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix2:/calendar/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/7.ics</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix2:/calendar/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/8.ics</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix2:/calendar/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/10.ics</filepath>
- </data>
- </request>
- <request user="$userid3:" pswd="$pswd3:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix3:/calendar/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/9.ics</filepath>
- </data>
- </request>
- <request user="$userid3:" pswd="$pswd3:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix3:/calendar/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/10.ics</filepath>
- </data>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/outbox/</ruri>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/inbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/outbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- </request>
- <request user="$userid3:" pswd="$pswd3:">
- <method>DELETEALL</method>
- <ruri>$pathprefix3:/outbox/</ruri>
- </request>
- <request user="$userid3:" pswd="$pswd3:">
- <method>DELETEALL</method>
- <ruri>$pathprefix3:/inbox/</ruri>
- </request>
- </start>
-
- <test-suite name='SCHEDULE Errors' ignore='no'>
- <test name='1' ignore='no'>
- <description>SCHEDULE on invalid outbox</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Organizer</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-collection</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>SCHEDULE with invalid content</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Organizer</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>SCHEDULE with invalid calendar data</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/1.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>SCHEDULE without METHOD property</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/2.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>SCHEDULE with invalid iTIP object</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/5.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>SCHEDULE without Originator:</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator-specified</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>SCHEDULE with non-authorized Originator:</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01-bogus at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator-allowed</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>SCHEDULE without Recipient:</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavrecipient-specified</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>SCHEDULE with non-authorized Organizer:</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/4.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavorganizer-allowed</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>SCHEDULE reply with too many Attendees:</description>
- <request user="$userid2:" pswd="$pswd2:">
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user02 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <ruri>$pathprefix2:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/17.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavattendee-allowed</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='11' ignore='no'>
- <description>SCHEDULE reply with non-authorized Attendee:</description>
- <request user="$userid2:" pswd="$pswd2:">
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user02 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <ruri>$pathprefix2:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/18.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavattendee-allowed</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name="SCHEDULEs" ignore='no'>
- <test name='1'>
- <description>SCHEDULE which should work</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- <test name='2'>
- <description>Make sure resource exists and properties are set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/11.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user02 at example.com</href><href xmlns="DAV:">mailto:user03 at example.com</href></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>Make sure resource exists and properties are set</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/12.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>ignore</name>
- <value>$pathprefix2:/inbox/</value>
- </arg>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user02 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>Make sure resource exists and properties are set</description>
- <request user="$userid3:" pswd="$pswd3:" print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix3:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/12.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>ignore</name>
- <value>$pathprefix3:/inbox/</value>
- </arg>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user03 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>SCHEDULE which should work (using relative principal addressing)</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, $principal3:</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- <test name='6'>
- <description>SCHEDULE which should work (using absolute principal addressing)</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>$host:/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>$host:/principals/users/user02, $host:$principal3:</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- </test-suite>
-
- <test-suite name="Reports on Inbox/Outbox" ignore='no'>
- <test name='1'>
- <description>Simple calendar-query for VEVENTs</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/13.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>207</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>Simple calendar-query for VEVENTs</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/13.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>207</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>Simple calendar-multiget for VEVENTs</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/14.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>badhrefs</name>
- <value>1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>Simple calendar-multiget for VEVENTs</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/15.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value/>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>$pathprefix:/inbox/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>free-busy-query failure</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/16.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:supported-report</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6'>
- <description>free-busy-query failure</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/16.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:supported-report</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name="SCHEDULEs free busy" ignore='no'>
- <test name='1'>
- <description>SCHEDULE free busy</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/6.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>FREEBUSY;FBTYPE=BUSY:20060101T170000Z/PT1H,20060101T190000Z/PT1H,20060101T2
- 20000Z/PT1H</value>
- <value>FREEBUSY;FBTYPE=BUSY:20060101T190000Z/PT2H,20060101T220000Z/PT1H</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>SCHEDULE free busy - recipients with failure</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:broken at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/6.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value><![CDATA[<recipient-exists xmlns='urn:ietf:params:xml:ns:caldav'/>]]></value>
- <value>FREEBUSY;FBTYPE=BUSY:20060101T190000Z/PT2H,20060101T220000Z/PT1H</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/scheduleacl.xml
===================================================================
--- CalDAVTester/trunk/scheduleacl.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/scheduleacl.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,285 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start>
- <request end-delete="yes">
- <method>MKCOL</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <!-- Calendar with DAV:read only -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar1/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <!-- Event with DAV:read only -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal1.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <!-- Event with no privileges -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal2.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <!-- Event with DAV:read-free-busy only -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal3.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Calendar with no privileges -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar2/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <!-- Event with DAV:read only -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal4.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <!-- Event with no privileges -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal5.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <!-- Event with DAV:read-free-busy only -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal6.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Calendar with CALDAV:read-free-busy only -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar3/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Event with DAV:read only -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal7.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <!-- Event with no privileges -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal8.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <!-- Event with DAV:read-free-busy only -->
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal9.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Set calendar-free-busy-set to the calendars only -->
- <request>
- <method>PROPPATCH</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleacl/1.xml</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='Schedule free-busy' ignore='no'>
- <test name='1'>
- <description>SCHEDULE free busy</description>
- <request user='$userid2:' pswd='$pswd2:' print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>mailto:user02 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <ruri>$pathprefix2:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleacl/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>FREEBUSY;FBTYPE=BUSY:20060101T060000Z/PT1H,20060101T100000Z/PT1H,20060101T1
- 80000Z/PT1H,20060101T220000Z/PT1H</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <!-- Set calendar-free-busy-set back to default -->
- <request>
- <method>PROPPATCH</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleacl/2.xml</filepath>
- </data>
- </request>
- </end>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/scheduleauto.xml
===================================================================
--- CalDAVTester/trunk/scheduleauto.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/scheduleauto.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,1177 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test SCHEDULE method in CalDAV</description>
-
- <start>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/outbox/</ruri>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/inbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/outbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- </request>
- </start>
-
- <test-suite name='SCHEDULE non-recurring without conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/2.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/3.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/3.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Update to previous request - no auto-reply' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/5.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>One item in resource01 Inbox (old one deleted)</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Repeat request - no auto-reply' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/5.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>One item in resource01 Inbox (old one deleted)</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='SCHEDULE non-recurring with conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/7.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/8.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/8.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='SCHEDULE recurring with conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/9.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/9.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/9.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/9.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/10.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/10.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='SCHEDULE recurring without conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/11.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/11.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/11.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/11.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/12.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/13.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/13.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='SCHEDULE non-recurring with recurring conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/14.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Two items in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>2</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/15.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/15.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='SCHEDULE recurring with recurring conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/16.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/16.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/16.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/16.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Two items in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>2</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/17.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/17.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='SCHEDULE cancel non-recurring' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do SCHEDULE</description>
- <request>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/18.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/18.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/18.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/18.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Two items in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>6</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>6</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/outbox/</ruri>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/inbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/outbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- </request>
- </end>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/schedulenormal.xml
===================================================================
--- CalDAVTester/trunk/schedulenormal.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/schedulenormal.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,197 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test normal SCHEDULE operations in CalDAV</description>
-
- <start>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/outbox/</ruri>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/inbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/outbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- </request>
- <request user="$userid3:" pswd="$pswd3:">
- <method>DELETEALL</method>
- <ruri>$pathprefix3:/outbox/</ruri>
- </request>
- <request user="$userid3:" pswd="$pswd3:">
- <method>DELETEALL</method>
- <ruri>$pathprefix3:/inbox/</ruri>
- </request>
- </start>
-
- <test-suite name="SCHEDULEs" ignore='no'>
- <test name='1'>
- <description>Initial REQUEST</description>
- <request print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, $principal3:</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- <test name='2'>
- <description>Make sure resource exists and properties are set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/2.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal2:</href><href xmlns="DAV:">$principal3:</href></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>Make sure resource exists and properties are set</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>ignore</name>
- <value>$pathprefix2:/inbox/</value>
- </arg>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal2:</href></value>
- <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>Make sure resource exists and properties are set</description>
- <request user="$userid3:" pswd="$pswd3:" print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix3:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>ignore</name>
- <value>$pathprefix3:/inbox/</value>
- </arg>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal3:</href></value>
- <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>REPLY from one</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>SCHEDULE</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user02</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user01</value>
- </header>
- <ruri>$pathprefix2:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix2:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/schedulepost.xml
===================================================================
--- CalDAVTester/trunk/schedulepost.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/schedulepost.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,727 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test POST method in CalDAV</description>
-
- <start>
- <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix2:/calendar/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/7.ics</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix2:/calendar/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/8.ics</filepath>
- </data>
- </request>
- <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix2:/calendar/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/10.ics</filepath>
- </data>
- </request>
- <request user="$userid3:" pswd="$pswd3:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix3:/calendar/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/9.ics</filepath>
- </data>
- </request>
- <request user="$userid3:" pswd="$pswd3:" end-delete="yes">
- <method>PUT</method>
- <ruri>$pathprefix3:/calendar/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/10.ics</filepath>
- </data>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/outbox/</ruri>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/inbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/outbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- </request>
- <request user="$userid3:" pswd="$pswd3:">
- <method>DELETEALL</method>
- <ruri>$pathprefix3:/outbox/</ruri>
- </request>
- <request user="$userid3:" pswd="$pswd3:">
- <method>DELETEALL</method>
- <ruri>$pathprefix3:/inbox/</ruri>
- </request>
- </start>
-
- <test-suite name='POST Errors' ignore='no'>
- <test name='1' ignore='no'>
- <description>POST on invalid outbox</description>
- <request>
- <method>POST</method>
- <header>
- <name>Organizer</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-collection</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>POST with invalid content</description>
- <request>
- <method>POST</method>
- <header>
- <name>Organizer</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>POST with invalid calendar data</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/1.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>POST without METHOD property</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/2.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>POST with invalid iTIP object</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/5.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>POST without Originator:</description>
- <request>
- <method>POST</method>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator-specified</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>POST with non-authorized Originator:</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01-bogus at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator-allowed</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>POST without Recipient:</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavrecipient-specified</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='9' ignore='no'>
- <description>POST with non-authorized Organizer:</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/4.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavorganizer-allowed</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='10' ignore='no'>
- <description>POST reply with too many Attendees:</description>
- <request user="$userid2:" pswd="$pswd2:">
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user02 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <ruri>$pathprefix2:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/17.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavattendee-allowed</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='11' ignore='no'>
- <description>POST reply with non-authorized Attendee:</description>
- <request user="$userid2:" pswd="$pswd2:">
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user02 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <ruri>$pathprefix2:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/18.txt</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>urn:ietf:params:xml:ns:caldavattendee-allowed</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name="POSTs" ignore='no'>
- <test name='1'>
- <description>POST which should work</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- <test name='2'>
- <description>Make sure resource exists and properties are set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/11.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user02 at example.com</href><href xmlns="DAV:">mailto:user03 at example.com</href></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>Make sure resource exists and properties are set</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/12.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>ignore</name>
- <value>$pathprefix2:/inbox/</value>
- </arg>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user02 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>Make sure resource exists and properties are set</description>
- <request user="$userid3:" pswd="$pswd3:" print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix3:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/12.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>ignore</name>
- <value>$pathprefix3:/inbox/</value>
- </arg>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user03 at example.com</href></value>
- <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>POST which should work (using relative principal addressing)</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, $principal3:</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- <test name='6'>
- <description>POST which should work (using absolute principal addressing)</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>$host:/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>$host:/principals/users/user02, $host:$principal3:</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/3.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- </test-suite>
-
- <test-suite name="Reports on Inbox/Outbox" ignore='no'>
- <test name='1'>
- <description>Simple calendar-query for VEVENTs</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/13.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>207</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>Simple calendar-query for VEVENTs</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/13.xml</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- <arg>
- <name>status</name>
- <value>207</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>Simple calendar-multiget for VEVENTs</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/14.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>badhrefs</name>
- <value>1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>Simple calendar-multiget for VEVENTs</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/15.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>prefix</name>
- <value/>
- </arg>
- <arg>
- <name>badhrefs</name>
- <value>$pathprefix:/inbox/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>free-busy-query failure</description>
- <request print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/16.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:supported-report</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6'>
- <description>free-busy-query failure</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>REPORT</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedule/16.xml</filepath>
- </data>
- <verify>
- <callback>prepostcondition</callback>
- <arg>
- <name>error</name>
- <value>DAV:supported-report</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name="POSTs free busy" ignore='no'>
- <test name='1'>
- <description>POST free busy</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/6.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>FREEBUSY;FBTYPE=BUSY:20060101T170000Z/PT1H,20060101T190000Z/PT1H,20060101T2
- 20000Z/PT1H</value>
- <value>FREEBUSY;FBTYPE=BUSY:20060101T190000Z/PT2H,20060101T220000Z/PT1H</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='2'>
- <description>POST free busy - recipients with failure</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:broken at example.com, mailto:user03 at example.com</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedule/6.txt</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value><![CDATA[<recipient-exists xmlns='urn:ietf:params:xml:ns:caldav'/>]]></value>
- <value>FREEBUSY;FBTYPE=BUSY:20060101T190000Z/PT2H,20060101T220000Z/PT1H</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/schedulepostacl.xml
===================================================================
--- CalDAVTester/trunk/schedulepostacl.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/schedulepostacl.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,276 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <start>
- <request end-delete="yes">
- <method>MKCOL</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <!-- Calendar with DAV:read only -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar1/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal1.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal2.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal3.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Calendar with no privileges -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar2/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal4.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal5.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal6.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Calendar with CALDAV:read-free-busy only -->
- <request>
- <method>MKCALENDAR</method>
- <ruri>$pathprefix:/top-collection/calendar3/</ruri>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal7.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/1.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal8.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/2.xml</filepath>
- </data>
- </request>
- <request>
- <method>PUT</method>
- <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/cal9.ics</filepath>
- </data>
- </request>
- <request>
- <method>ACL</method>
- <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/depthreportsacl/3.xml</filepath>
- </data>
- </request>
- <!-- Set calendar-free-busy-set to the calendars only -->
- <request>
- <method>PROPPATCH</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleacl/1.xml</filepath>
- </data>
- </request>
- </start>
-
- <test-suite name='Schedule free-busy' ignore='no'>
- <test name='1'>
- <description>POST free busy</description>
- <request user="$userid2:" pswd='$pswd2:' print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>mailto:user02 at example.com</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>mailto:user01 at example.com</value>
- </header>
- <ruri>$pathprefix2:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleacl/3.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>dataString</callback>
- <arg>
- <name>contains</name>
- <value>FREEBUSY;FBTYPE=BUSY:20060101T060000Z/PT1H,20060101T100000Z/PT1H,20060101T1
- 80000Z/PT1H,20060101T220000Z/PT1H</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <!-- Set calendar-free-busy-set back to default -->
- <request>
- <method>PROPPATCH</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <data substitutions='yes'>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleacl/2.xml</filepath>
- </data>
- </request>
- </end>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/schedulepostauto.xml
===================================================================
--- CalDAVTester/trunk/schedulepostauto.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/schedulepostauto.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,1177 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test POST method in CalDAV</description>
-
- <start>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/outbox/</ruri>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/inbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/outbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- </request>
- </start>
-
- <test-suite name='POST non-recurring without conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/1.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/2.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/3.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/3.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Update to previous request - no auto-reply' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/5.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>One item in resource01 Inbox (old one deleted)</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='Repeat request - no auto-reply' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/4.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/5.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='8' ignore='no'>
- <description>One item in resource01 Inbox (old one deleted)</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='POST non-recurring with conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/7.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/7.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/8.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/8.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='POST recurring with conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/9.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/9.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/9.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/9.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/10.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/10.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='POST recurring without conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/11.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/11.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/11.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/11.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>One item in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/12.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/13.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/13.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='POST non-recurring with recurring conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/14.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/14.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Two items in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>2</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/15.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/15.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='POST recurring with recurring conflict' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/16.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/16.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/16.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/16.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Two items in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>2</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/17.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/17.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <test-suite name='POST cancel non-recurring' ignore='no'>
- <test name='1' ignore='no'>
- <description>Do POST</description>
- <request>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, /principals/users/resource01</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/18.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- </request>
- <request>
- <method>DELAY</method>
- <ruri>6</ruri>
- </request>
- </test>
- <test name='2' ignore='no'>
- <description>One item in user01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix:/outbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/18.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3' ignore='no'>
- <description>One item in user02 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/18.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4' ignore='no'>
- <description>One item in resource01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>GETNEW</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- <verify>
- <callback>dataMatch</callback>
- <arg>
- <name>filepath</name>
- <value>Resource/scheduleauto/18.ics</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5' ignore='no'>
- <description>Two items in resource01 Calendar</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleauto/6.xml</filepath>
- </data>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>1</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='6' ignore='no'>
- <description>One item in resource01 Outbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>6</value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='7' ignore='no'>
- <description>One item in user01 Inbox</description>
- <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
- <method>PROPFIND</method>
- <ruri>$pathprefix:/inbox/</ruri>
- <verify>
- <callback>multistatusItems</callback>
- <arg>
- <name>count</name>
- <value>6</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/outbox/</ruri>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/inbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/outbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/outbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/inbox/</ruri>
- </request>
- <request user="$useradmin:" pswd="$pswdadmin:">
- <method>DELETEALL</method>
- <ruri>/calendars/users/resource01/calendar/</ruri>
- </request>
- </end>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/schedulepostnormal.xml
===================================================================
--- CalDAVTester/trunk/schedulepostnormal.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/schedulepostnormal.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,197 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test normal POST operations in CalDAV</description>
-
- <start>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/outbox/</ruri>
- </request>
- <request>
- <method>DELETEALL</method>
- <ruri>$pathprefix:/inbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/outbox/</ruri>
- </request>
- <request user="$userid2:" pswd="$pswd2:">
- <method>DELETEALL</method>
- <ruri>$pathprefix2:/inbox/</ruri>
- </request>
- <request user="$userid3:" pswd="$pswd3:">
- <method>DELETEALL</method>
- <ruri>$pathprefix3:/outbox/</ruri>
- </request>
- <request user="$userid3:" pswd="$pswd3:">
- <method>DELETEALL</method>
- <ruri>$pathprefix3:/inbox/</ruri>
- </request>
- </start>
-
- <test-suite name="POSTs" ignore='no'>
- <test name='1'>
- <description>Initial REQUEST</description>
- <request print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user01</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user02, $principal3:</value>
- </header>
- <ruri>$pathprefix:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/1.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- <test name='2'>
- <description>Make sure resource exists and properties are set</description>
- <request print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/2.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal2:</href><href xmlns="DAV:">$principal3:</href></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='3'>
- <description>Make sure resource exists and properties are set</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix2:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>ignore</name>
- <value>$pathprefix2:/inbox/</value>
- </arg>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal2:</href></value>
- <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='4'>
- <description>Make sure resource exists and properties are set</description>
- <request user="$userid3:" pswd="$pswd3:" print-response='no'>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>1</value>
- </header>
- <ruri>$pathprefix3:/inbox/</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/3.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>ignore</name>
- <value>$pathprefix3:/inbox/</value>
- </arg>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
- <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal3:</href></value>
- <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
- </arg>
- </verify>
- </request>
- </test>
- <test name='5'>
- <description>REPLY from one</description>
- <request user="$userid2:" pswd="$pswd2:" print-response='no'>
- <method>POST</method>
- <header>
- <name>Originator</name>
- <value>/principals/users/user02</value>
- </header>
- <header>
- <name>Recipient</name>
- <value>/principals/users/user01</value>
- </header>
- <ruri>$pathprefix2:/outbox/</ruri>
- <data>
- <content-type>text/calendar; charset=utf-8</content-type>
- <filepath>Resource/schedulenormal/4.ics</filepath>
- </data>
- <verify>
- <callback>statusCode</callback>
- </verify>
- <verify>
- <callback>header</callback>
- <arg>
- <name>header</name>
- <value>Location$^$pathprefix2:/outbox/[^/]+\.ics$</value>
- </arg>
- </verify>
- <grablocation/>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Deleted: CalDAVTester/trunk/scheduleprops.xml
===================================================================
--- CalDAVTester/trunk/scheduleprops.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/scheduleprops.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,57 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<caldavtest>
- <description>Test properties defined by caldav-schedule</description>
-
- <start/>
-
- <test-suite name='Inbox/Outbox' ignore='no'>
- <test name='1' ignore='no'>
- <description>PROPFIND inbox/outbox URLs</description>
- <request>
- <method>PROPFIND</method>
- <header>
- <name>Depth</name>
- <value>0</value>
- </header>
- <ruri>$principal:</ruri>
- <data>
- <content-type>text/xml; charset=utf-8</content-type>
- <filepath>Resource/scheduleprops/1.xml</filepath>
- </data>
- <verify>
- <callback>propfindItems</callback>
- <arg>
- <name>okprops</name>
- <value>urn:ietf:params:xml:ns:caldavschedule-inbox-URL</value>
- <value>urn:ietf:params:xml:ns:caldavschedule-outbox-URL</value>
- <value>urn:ietf:params:xml:ns:caldavcalendar-user-address-set</value>
- </arg>
- </verify>
- </request>
- </test>
- </test-suite>
-
- <end/>
-
-</caldavtest>
Added: CalDAVTester/trunk/scripts/performance/perfinfo.dtd
===================================================================
--- CalDAVTester/trunk/scripts/performance/perfinfo.dtd (rev 0)
+++ CalDAVTester/trunk/scripts/performance/perfinfo.dtd 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,42 @@
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<!ELEMENT perfinfo (clients, threads, logging, tests, serverinfo, testinfo, substitutions)? >
+
+ <!ELEMENT clients (#PCDATA)>
+
+ <!ELEMENT threads EMPTY>
+ <!ATTLIST threads enable (yes|no) "no">
+
+ <!ELEMENT logging EMPTY>
+ <!ATTLIST logging enable (yes|no) "no">
+
+ <!ELEMENT tests (test*)>
+ <!ELEMENT test (spread, runs)>
+ <!ELEMENT spread (#PCDATA)>
+ <!ELEMENT runs (#PCDATA)>
+
+ <!ELEMENT serverinfo (#PCDATA)>
+
+ <!ELEMENT testinfo (#PCDATA)>
+
+ <!ELEMENT substitutions (substitution*)>
+ <!ELEMENT substitution (key, value)>
+ <!ELEMENT key (#PCDATA)>
+ <!ELEMENT value (#PCDATA)>
+
Added: CalDAVTester/trunk/scripts/performance/perfinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/performance/perfinfo.xml (rev 0)
+++ CalDAVTester/trunk/scripts/performance/perfinfo.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,90 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE perfinfo SYSTEM "perfinfo.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<perfinfo>
+ <clients>20</clients>
+ <threads enable="yes"/>
+ <logging enable="no"/>
+ <tests>
+ <test>
+ <spread>1.0</spread>
+ <runs>5</runs>
+ </test>
+ <test>
+ <spread>2.0</spread>
+ <runs>5</runs>
+ </test>
+ <test>
+ <spread>5.0</spread>
+ <runs>5</runs>
+ </test>
+ <test>
+ <spread>10.0</spread>
+ <runs>2</runs>
+ </test>
+ <test>
+ <spread>20.0</spread>
+ <runs>2</runs>
+ </test>
+ <test>
+ <spread>30.0</spread>
+ <runs>2</runs>
+ </test>
+ <test>
+ <spread>45.0</spread>
+ <runs>2</runs>
+ </test>
+ <test>
+ <spread>60.0</spread>
+ <runs>2</runs>
+ </test>
+ </tests>
+ <serverinfo>scripts/server/serverinfo.xml</serverinfo>
+ <testinfo>performance/put-small.xml</testinfo>
+ <substitutions>
+ <!-- first user id -->
+ <substitution>
+ <key>$userid1:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- password for first user -->
+ <substitution>
+ <key>$pswd1:</key>
+ <value>user%02d</value>
+ </substitution>
+ <!-- relative path to first user principal resource-->
+ <substitution>
+ <key>$principal:</key>
+ <value>/principals/users/user%02d</value>
+ </substitution>
+ <!-- relative path to first user calendar home-->
+ <substitution>
+ <key>$pathprefix:</key>
+ <value>/calendars/users/user%02d</value>
+ </substitution>
+ <!-- relative path to first user calendar home-->
+ <substitution>
+ <key>$calendarpath1:</key>
+ <value>/calendars/users/user%02d/calendar</value>
+ </substitution>
+ </substitutions>
+</perfinfo>
Added: CalDAVTester/trunk/scripts/server1/serverinfo.dtd
===================================================================
--- CalDAVTester/trunk/scripts/server1/serverinfo.dtd (rev 0)
+++ CalDAVTester/trunk/scripts/server1/serverinfo.dtd 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,29 @@
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<!ELEMENT serverinfo (host, port, ssl?, substitutions, serverfilepath)? >
+
+ <!ELEMENT host (#PCDATA)>
+ <!ELEMENT port (#PCDATA)>
+ <!ELEMENT ssl EMPTY>
+ <!ELEMENT substitutions (substitution*)>
+ <!ELEMENT substitution (key, value)>
+ <!ELEMENT key (#PCDATA)>
+ <!ELEMENT value (#PCDATA)>
+ <!ELEMENT serverfilepath (#PCDATA)>
+
Added: CalDAVTester/trunk/scripts/server1/serverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server1/serverinfo.xml (rev 0)
+++ CalDAVTester/trunk/scripts/server1/serverinfo.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,117 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE serverinfo SYSTEM "serverinfo.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<serverinfo>
+ <host>localhost</host>
+ <port>8008</port>
+ <substitutions>
+ <substitution>
+ <key>$host:</key>
+ <value>http://localhost:8008</value>
+ </substitution>
+
+ <!-- user id for admin user -->
+ <substitution>
+ <key>$useradmin:</key>
+ <value>admin</value>
+ </substitution>
+ <!-- password for admin user -->
+ <substitution>
+ <key>$pswdadmin:</key>
+ <value>admin</value>
+ </substitution>
+ <!-- relative path to admin principal resource-->
+ <substitution>
+ <key>$principaladmin:</key>
+ <value>/principals/users/admin</value>
+ </substitution>
+
+ <!-- relative path to first user principal resource-->
+ <substitution>
+ <key>$userid1:</key>
+ <value>user01</value>
+ </substitution>
+ <!-- password for first user -->
+ <substitution>
+ <key>$pswd1:</key>
+ <value>user01</value>
+ </substitution>
+ <!-- relative path to first user principal resource-->
+ <substitution>
+ <key>$principal:</key>
+ <value>/principals/users/user01</value>
+ </substitution>
+ <!-- relative path to first user calendar home-->
+ <substitution>
+ <key>$pathprefix:</key>
+ <value>/calendars/users/user01</value>
+ </substitution>
+ <!-- relative path to first user calendar home-->
+ <substitution>
+ <key>$calendarpath1:</key>
+ <value>/calendars/users/user01/calendar</value>
+ </substitution>
+
+ <!-- user id for second user -->
+ <substitution>
+ <key>$userid2:</key>
+ <value>user02</value>
+ </substitution>
+ <!-- password for second user -->
+ <substitution>
+ <key>$pswd2:</key>
+ <value>user02</value>
+ </substitution>
+ <!-- relative path to second user principal resource-->
+ <substitution>
+ <key>$principal2:</key>
+ <value>/principals/users/user02</value>
+ </substitution>
+ <!-- relative path to second user calendar home-->
+ <substitution>
+ <key>$pathprefix2:</key>
+ <value>/calendars/users/user02</value>
+ </substitution>
+
+ <!-- user id for third user -->
+ <substitution>
+ <key>$userid3:</key>
+ <value>user03</value>
+ </substitution>
+ <!-- password for third user -->
+ <substitution>
+ <key>$pswd3:</key>
+ <value>user03</value>
+ </substitution>
+ <!-- relative path to third user principal resource-->
+ <substitution>
+ <key>$principal3:</key>
+ <value>/principals/users/user03</value>
+ </substitution>
+ <!-- relative path to third user calendar home-->
+ <substitution>
+ <key>$pathprefix3:</key>
+ <value>/calendars/users/user03</value>
+ </substitution>
+ </substitutions>
+ <serverfilepath>/Users/cyrusdaboo/Documents/Development/Apple/eclipse/CalendarServer/twistedcaldav/test/data/</serverfilepath>
+</serverinfo>
Added: CalDAVTester/trunk/scripts/server1/sslserverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server1/sslserverinfo.xml (rev 0)
+++ CalDAVTester/trunk/scripts/server1/sslserverinfo.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,111 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE serverinfo SYSTEM "serverinfo.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<serverinfo>
+ <host>localhost</host>
+ <port>8443</port>
+ <ssl/>
+ <calendarpath>/calendars/users/user01/calendar</calendarpath>
+ <user>user01</user>
+ <pswd>user01</pswd>
+ <substitutions>
+ <substitution>
+ <key>$host:</key>
+ <value>https://localhost:8443</value>
+ </substitution>
+
+ <!-- user id for admin user -->
+ <substitution>
+ <key>$useradmin:</key>
+ <value>admin</value>
+ </substitution>
+ <!-- password for admin user -->
+ <substitution>
+ <key>$pswdadmin:</key>
+ <value>admin</value>
+ </substitution>
+ <!-- relative path to admin principal resource-->
+ <substitution>
+ <key>$principaladmin:</key>
+ <value>/principals/users/admin</value>
+ </substitution>
+
+ <!-- relative path to first user principal resource-->
+ <substitution>
+ <key>$userid1:</key>
+ <value>user01</value>
+ </substitution>
+ <!-- relative path to first user principal resource-->
+ <substitution>
+ <key>$principal:</key>
+ <value>/principals/users/user01</value>
+ </substitution>
+ <!-- relative path to first user calendar home-->
+ <substitution>
+ <key>$pathprefix:</key>
+ <value>/calendars/users/user01</value>
+ </substitution>
+
+ <!-- user id for second user -->
+ <substitution>
+ <key>$userid2:</key>
+ <value>user02</value>
+ </substitution>
+ <!-- password for second user -->
+ <substitution>
+ <key>$pswd2:</key>
+ <value>user02</value>
+ </substitution>
+ <!-- relative path to second user principal resource-->
+ <substitution>
+ <key>$principal2:</key>
+ <value>/principals/users/user02</value>
+ </substitution>
+ <!-- relative path to second user calendar home-->
+ <substitution>
+ <key>$pathprefix2:</key>
+ <value>/calendars/users/user02</value>
+ </substitution>
+
+ <!-- user id for third user -->
+ <substitution>
+ <key>$userid3:</key>
+ <value>user03</value>
+ </substitution>
+ <!-- password for third user -->
+ <substitution>
+ <key>$pswd3:</key>
+ <value>user03</value>
+ </substitution>
+ <!-- relative path to third user principal resource-->
+ <substitution>
+ <key>$principal3:</key>
+ <value>/principals/users/user03</value>
+ </substitution>
+ <!-- relative path to third user calendar home-->
+ <substitution>
+ <key>$pathprefix3:</key>
+ <value>/calendars/users/user03</value>
+ </substitution>
+ </substitutions>
+ <serverfilepath>/Users/cyrusdaboo/Documents/Development/Apple/eclipse/CalendarServer/twistedcaldav/test/data/</serverfilepath>
+</serverinfo>
Added: CalDAVTester/trunk/scripts/tests1/acl.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/acl.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/acl.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,1009 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test ACLs on the server</description>
+
+ <start>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/delete/1.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/delete/2.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>1todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/1.txt</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix2:/visibletouser01/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$pathprefix2:/visibletouser01/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/3.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/visibletouser01/hidden1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/acls/16.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$pathprefix2:/visibletouser01/hidden1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/20.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/visibletouser01/visible2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/acls/17.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix2:/notvisibletouser01/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$pathprefix2:/notvisibletouser01/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/4.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/notvisibletouser01/hidden1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/acls/16.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix2:/writeabletouser01/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$pathprefix2:/writeabletouser01/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/13.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix2:/calreadtoauth/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$pathprefix2:/calreadtoauth/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/18.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/calreadtoauth/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/acls/16.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>MKCOL</method>
+ <ruri>$pathprefix2:/colreadtoauth/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$pathprefix2:/colreadtoauth/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/18.xml</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/colreadtoauth/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/acls/16.ics</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='Read ACLs' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>PROPFIND existing VEVENT</description>
+ <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>/calendars/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:getcontentlength</value>
+ <value>DAV:getcontenttype</value>
+ <value>DAV:resourcetype</value>
+ <value>DAV:getetag</value>
+ <value>DAV:displayname</value>
+ <value>DAV:supported-privilege-set</value>
+ <value>DAV:current-user-privilege-set</value>
+ <value>DAV:acl</value>
+ <value>DAV:acl-restrictions</value>
+ <value>DAV:inherited-acl-set</value>
+ <value>DAV:principal-collection-set</value>
+ </arg>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:owner</value>
+ <value>DAV:group</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PROPFIND without DAV:read-acl or DAV:read-current-user-privilege-set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>/calendars/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:getcontentlength</value>
+ <value>DAV:getcontenttype</value>
+ <value>DAV:resourcetype</value>
+ <value>DAV:getetag</value>
+ <value>DAV:displayname</value>
+ <value>DAV:supported-privilege-set</value>
+ <value>DAV:acl-restrictions</value>
+ <value>DAV:inherited-acl-set</value>
+ <value>DAV:principal-collection-set</value>
+ </arg>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:current-user-privilege-set</value>
+ <value>DAV:acl</value>
+ <value>DAV:owner</value>
+ <value>DAV:group</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for schedule privilege on iTIP Inbox</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>aclItems</callback>
+ <arg>
+ <name>granted</name>
+ <value>DAV:read</value>
+ <value>DAV:write</value>
+ <value>DAV:write-acl</value>
+ <value>DAV:read-current-user-privilege-set</value>
+ <value>urn:ietf:params:xml:ns:caldavschedule</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check for schedule privilege on iTIP Outbox</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>aclItems</callback>
+ <arg>
+ <name>granted</name>
+ <value>DAV:read</value>
+ <value>DAV:write</value>
+ <value>DAV:write-acl</value>
+ <value>DAV:read-current-user-privilege-set</value>
+ <value>urn:ietf:params:xml:ns:caldavschedule</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for lack of schedule privilege on regular calendar</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>aclItems</callback>
+ <arg>
+ <name>granted</name>
+ <value>DAV:read</value>
+ <value>DAV:write</value>
+ <value>DAV:write-acl</value>
+ <value>DAV:read-current-user-privilege-set</value>
+ </arg>
+ <arg>
+ <name>denied</name>
+ <value>urn:ietf:params:xml:ns:caldavschedule</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PROPFIND interaction with ACL' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>PROPFIND all calendars</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix2:/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix2:/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value/>
+ <value>visibletouser01/</value>
+ <value>writeabletouser01/</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PROPFIND: prinicpal-collection-set test</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/14.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:principal-collection-set$<href>/principals/users/</href></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='ACL method preconditions' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Failure when DAV:write-acl not granted</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>$pathprefix2:/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>DAV:no-ace-conflict precondition failure - attempt to set protected ACE</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/5.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:no-ace-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>DAV:no-ace-conflict precondition failure - attempt to set inherited ACE</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:no-ace-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>DAV:no-protected-ace-conflict precondition failure - attempt to change protected ACE</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/7.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:no-protected-ace-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <!-- This error is no longer generated by the server.
+ <test name='5' ignore='no'>
+ <description>DAV:no-inherited-ace-conflict precondition failure - attempt to change inherited ACE</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/8.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:no-inherited-ace-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ -->
+ <test name='6' ignore='no'>
+ <description>DAV:deny-before-grant precondition failure - attempt to deny before grant a set of ACEs</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/9.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:deny-before-grant</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>DAV:not-supported-privilege precondition failure - attempt to use unsupported privilege</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/10.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:not-supported-privilege</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>DAV:recognized-principal precondition failure - attempt to use unknown principal</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/11.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:recognized-principal</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Valid command</description>
+ <request print-response='no'>
+ <method>ACL</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/12.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:recognized-principal</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='COPY/MOVE interaction with ACL' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>COPY to non-writeable shared calendar</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/visibletouser01/copy1.ics</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>COPY to non-visible shared calendar</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/notvisibletouser01/copy1.ics</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>COPY to non-visible shared calendar with overwrite</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/notvisibletouser01/hidden1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>T</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>COPY to visible with no overwrite shared calendar</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/writeabletouser01/1.ics</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>201</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>COPY to writeable shared calendar</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/writeabletouser01/copy1.ics</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>MOVE to non-writeable shared calendar</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/visibletouser01/move2.ics</value>
+ </header>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>MOVE to non-visible shared calendar</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/notvisibletouser01/move2.ics</value>
+ </header>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>MOVE to non-visible shared calendar with overwrite</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/notvisibletouser01/hidden1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>T</value>
+ </header>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>MOVE to writeable shared calendar</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix2:/writeabletouser01/move2.ics</value>
+ </header>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>201</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Principal Properties' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>PROPFIND principal VEVENT</description>
+ <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$principal:</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/15.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:alternate-URI-set</value>
+ <value>DAV:principal-URL$<href>$principal:</href></value>
+ <value>DAV:group-member-set</value>
+ <value>DAV:group-membership</value>
+ <value>DAV:displayname$User 01</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Directory list access' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Get calendar home collection</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix2:/</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>inbox</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Get calendar collection</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix2:/visibletouser01/</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>VTODO</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>VEVENT</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='ACL calendar collection inheritance' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Check that read is not set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix2:/calreadtoauth/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Check that read is not inherited</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix2:/calreadtoauth/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Set read on collection only</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$pathprefix2:/calreadtoauth/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/19.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check that read is set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix2:/calreadtoauth/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>aclItems</callback>
+ <arg>
+ <name>granted</name>
+ <value>urn:ietf:params:xml:ns:caldavread-free-busy</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check that read is inherited</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix2:/calreadtoauth/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>aclItems</callback>
+ <arg>
+ <name>granted</name>
+ <value>urn:ietf:params:xml:ns:caldavread-free-busy</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='ACL regular collection no inheritance' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Check that read is not set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix2:/colreadtoauth/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Check that read is not inherited</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix2:/colreadtoauth/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Set read on collection only</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>ACL</method>
+ <ruri>$pathprefix2:/colreadtoauth/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/19.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check that read is set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix2:/colreadtoauth/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>aclItems</callback>
+ <arg>
+ <name>granted</name>
+ <value>urn:ietf:params:xml:ns:caldavread-free-busy</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check that read is inherited</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix2:/colreadtoauth/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acls/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETE</method>
+ <ruri>$pathprefix2:/visibletouser01/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETE</method>
+ <ruri>$pathprefix2:/notvisibletouser01/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETE</method>
+ <ruri>$pathprefix2:/writeabletouser01/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETE</method>
+ <ruri>$pathprefix2:/calreadtoauth/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETE</method>
+ <ruri>$pathprefix2:/colreadtoauth/</ruri>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/acldisabled.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/acldisabled.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/acldisabled.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,335 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test ACLs on the server</description>
+
+ <start>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/</ruri>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/collection/disabled/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/delete/1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acldisabled/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/collection/enabled/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/enabled/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/delete/1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/collection/enabled/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acldisabled/1.xml</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='Read Resource OK' ignore='yes'>
+ <test name='1' ignore='no'>
+ <description>GET on disabled ics, user01</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>GET on disabled ics, user02</description>
+ <request print-response='no' user='$userid2:' pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>GET on disabled ics, admin</description>
+ <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>GET on enabled ics, user01</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/enabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PROPFIND OK' ignore='yes'>
+ <test name='1' ignore='no'>
+ <description>PROPFIND on collection, depth infinity</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acldisabled/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/collection/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value/>
+ <value>enabled/</value>
+ <value>enabled/1.ics</value>
+ <value>disabled/</value>
+ <value>disabled/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PROPFIND on disabled, depth infinity</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/disabled/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acldisabled/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/collection/disabled/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value/>
+ <value>1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Disable Access' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Disable access</description>
+ <request>
+ <method>ACCESS-DISABLE</method>
+ <ruri>$pathprefix:/collection/disabled</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Read Resource Forbidden' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>GET on ics, user01</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>GET on ics, user02</description>
+ <request print-response='no' user='$userid2:' pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>GET on ics, admin</description>
+ <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>GET on enabled ics, user01</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/enabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PROPFIND FORBIDDEN' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>PROPFIND on collection, depth infinity</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acldisabled/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/collection/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value/>
+ <value>enabled/</value>
+ <value>enabled/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PROPFIND on disabled, depth infinity</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/disabled/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/acldisabled/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Delete Resource Forbidden, then allowed' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>DELETE on ics, user01</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Enable access</description>
+ <request>
+ <method>ACCESS-ENABLE</method>
+ <ruri>$pathprefix:/collection/disabled</ruri>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>DELETE on ics, user01</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/disabled/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/</ruri>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/aclreports.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/aclreports.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/aclreports.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,635 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test ACLs on the server</description>
+
+ <start>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/delete/1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/10.xml</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/delete/2.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/9.xml</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>1todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/1.txt</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='acl-principal-prop-set REPORT' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Wrong Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Wrong Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>No DAV:prop</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Too many DAV:prop</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>No DAV:read-acl privilege</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix2:/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Valid report</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>/principals/users/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>$userid1:</value>
+ </arg>
+ <arg>
+ <name>badhrefs</name>
+ <value>$useradmin:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='principal-match REPORT' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Wrong Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Wrong Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Too many DAV:prop</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>500</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Valid self report with DAV:prop</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>$userid1:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Valid self report without DAV:prop</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/5.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>$userid1:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Valid principal-search report with DAV:prop</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/7.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Valid principal-search report without DAV:prop</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/8.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>principal-search with inaccessible property</description>
+ <request print-response='no' user='$userid2:' pswd='$pswd2:'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/11.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='principal-property-search REPORT' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Wrong Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/12.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Wrong Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/12.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Valid non-apply-to report with DAV:prop</description>
+ <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
+ <method>REPORT</method>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/12.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>public01</value>
+ <value>resource01</value>
+ <value>$userid1:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Valid non-apply-to report without DAV:prop</description>
+ <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
+ <method>REPORT</method>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/13.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>public02</value>
+ <value>resource02</value>
+ <value>user02</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Valid apply-to report with DAV:prop</description>
+ <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
+ <method>REPORT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/14.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>/principals/users/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>public01</value>
+ <value>resource01</value>
+ <value>$userid1:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Valid non-apply-to report without DAV:prop</description>
+ <request print-response='no' user='$useradmin:' pswd='$pswdadmin:'>
+ <method>REPORT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/15.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>/principals/users/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>public02</value>
+ <value>resource02</value>
+ <value>user02</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='principal-search-property-set REPORT' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Wrong Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/16.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Wrong Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/16.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Report on non-principal collection</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/16.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:supported-report</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Valid report</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/16.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/aclreports/18.xml</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='supported-report-set property' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Regular resource</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/17.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>207</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/aclreports/19.xml</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Regular resource</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>/principals/users/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/aclreports/17.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>207</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/aclreports/20.xml</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/attachments.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/attachments.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/attachments.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,144 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test attachments with CalDAV</description>
+
+ <start/>
+
+ <test-suite name='Inline'>
+ <test name='1' ignore='no'>
+ <description>VEVENT with image/jpeg</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/attachments/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH;FMTTYPE=image/jpeg;ENCODING=BASE64;VALUE=BINARY:</value>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>RQAUUUUAFFFFAH//2Q==</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>VTODO with image/jpeg</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/attachments/2.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH;FMTTYPE=image/jpeg;ENCODING=BASE64;VALUE=BINARY:</value>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>RQAUUUUAFFFFAH//2Q==</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='External'>
+ <test name='1' ignore='no'>
+ <description>VEVENT with http://</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/attachments/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>3.ics</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>ATTACHMENT:http://www.example.com/test.jpg</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>VTODO with image/jpeg</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/attachments/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>4.ics</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>ATTACHMENT:http://www.example.com/test.jpg</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/caldavIOP.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/caldavIOP.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/caldavIOP.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,275 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start/>
+
+ <test-suite name='1. Event Creation'>
+ <test name='1.1'>
+ <description>Create new single-instance meeting titled "Meeting 1.1" with the location "Durham".</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1-1_1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/1/1_1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='1.2'>
+ <description>Create new meeting titled "Meeting 1.2" recurring every Monday from 10:00 AM to 11:00 AM for 4 weeks.</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1-1_2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/1/1_2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='1.3'>
+ <description>Create new single-instance meeting titled "Meeting 1.3" with 2 other attendees.</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1-1_3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/1/1_3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='1.4'>
+ <description>Create new single-instance meeting titled "Meeting 1.4" with an alarm set to trigger 15 minutes prior to the schedule time of the meeting.</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1-1_4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/1/1_4.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='2. Event Modification'>
+ <test name='2.1'>
+ <description>Modify the title of meeting "Meeting 1.1" to "Meeting 1.1bis".</description>
+ <request>
+ <method>PUT</method>
+ <ruri>1-1_1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_1.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2.2'>
+ <description>Modify the location of the meeting "Meeting 1.1bis" to "Seattle bis".</description>
+ <request>
+ <method>PUT</method>
+ <ruri>1-1_1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_2.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2.3'>
+ <description>Reschedule meeting "Meeting 1.1bis" to the next day.</description>
+ <request>
+ <method>PUT</method>
+ <ruri>1-1_1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_3.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2.4'>
+ <description>Add an attendee to "Meeting 1.1bis".</description>
+ <request>
+ <method>PUT</method>
+ <ruri>1-1_1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_4.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2.5'>
+ <description>Add an alarm to "Meeting 1.1bis".</description>
+ <request>
+ <method>PUT</method>
+ <ruri>1-1_1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_5.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2.6'>
+ <description>Modify the title of the 1st instance of the recurring meeting created in 1.2.</description>
+ <request>
+ <method>PUT</method>
+ <ruri>1-1_2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_6.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2.7'>
+ <description>Modify the participation status of 1st instance to DECLINED.</description>
+ <request>
+ <method>PUT</method>
+ <ruri>1-1_3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_7.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2.8'>
+ <description>Cancel the 4th instance of the recurring meeting created in 1.2.</description>
+ <request>
+ <method>PUT</method>
+ <ruri>1-1_2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_8.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2.9'>
+ <description>One client changes "Meeting 1.1bis" to a different time, second client 'refreshes' its display to see the modification.</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>2-2_9.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/2/2_9.txt</filepath>
+ </data>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='4. Event Deletion'>
+ <test name='4.1'>
+ <description>Delete a single non-recurring meeting.</description>
+ <request>
+ <method>PUT</method>
+ <ruri>4-4_1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/4/4_1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>DELETE</method>
+ <ruri>4-4_1.ics</ruri>
+ </request>
+ </test>
+ <test name='4.2'>
+ <description>Delete a single recurring meeting with no overridden instances.</description>
+ <request>
+ <method>PUT</method>
+ <ruri>4-4_2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/4/4_2.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>DELETE</method>
+ <ruri>4-4_2.ics</ruri>
+ </request>
+ </test>
+ <test name='4.3'>
+ <description>Delete a single recurring meeting with overridden instances.</description>
+ <request>
+ <method>PUT</method>
+ <ruri>4-4_3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/4/4_3.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>DELETE</method>
+ <ruri>4-4_3.ics</ruri>
+ </request>
+ </test>
+ <test name='4.4'>
+ <description>Delete a non-overridden instance of a recurring meeting.</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>4-4_4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/4/4_4a.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>4-4_4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/4/4_4b.txt</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='4.5'>
+ <description>Delete an overridden instance of a recurring meeting.</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>4-4_5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/4/4_5a.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>4-4_5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/caldaviop/4/4_5b.txt</filepath>
+ </data>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/copymove.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/copymove.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/copymove.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,439 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test COPY/MOVE methods in CalDAV to ensure proper behaviour
+ of calendar resources wrt UIDs, server indexing etc</description>
+
+ <start>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/1.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/2.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/calendar2/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/calendar2/2_2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/2.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/3.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/calendar2/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/3.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/4.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/calendar2/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/4.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/5.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/copymove/6.txt</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='COPY'>
+ <test name='1' ignore='no'>
+ <description>COPY within same calendar to new resource</description>
+ <request print-response="no">
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ <value>409</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>COPY within same calendar to existing resource with overwrite</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>T</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ <value>409</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>COPY within same calendar to existing resource without overwrite</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>F</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ <value>409</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>COPY to different calendar, new resource</description>
+ <request print-response="no">
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>201</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>COPY to different calendar, new resource, duplicate UID</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/copy2_2.ics</value>
+ </header>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ <value>409</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>COPY to different calendar, existing resource with overwrite</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>T</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>COPY to different calendar, existing resource with overwrite, duplicate UID</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>T</value>
+ </header>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ <value>409</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>COPY to different calendar, existing resource without overwrite</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>F</value>
+ </header>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>412</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>COPY to different calendar, existing resource without overwrite, duplicate UID</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/copy2_1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>F</value>
+ </header>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>412</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='MOVE' ignore='no'>
+ <test name='1'>
+ <description>MOVE within same calendar to new resource</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <ruri>5.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>2xx</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>MOVE within same calendar to existing resource with overwrite</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>T</value>
+ </header>
+ <ruri>6.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ <value>409</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>MOVE within same calendar to existing resource without overwrite</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>F</value>
+ </header>
+ <ruri>3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>412</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>MOVE to different calendar, new resource</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/move2_1.ics</value>
+ </header>
+ <ruri>move1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>2xx</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>MOVE to different calendar, existing resource with overwrite</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/3.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>T</value>
+ </header>
+ <ruri>3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>2xx</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>MOVE to different calendar, existing resource without overwrite</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar2/4.ics</value>
+ </header>
+ <header>
+ <name>Overwrite</name>
+ <value>F</value>
+ </header>
+ <ruri>4.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>412</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request>
+ <method>DELETE</method>
+ <ruri>copy1.ics</ruri>
+ </request>
+ <request>
+ <method>DELETE</method>
+ <ruri>move1.ics</ruri>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/delete.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/delete.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/delete.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,85 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test DELETE method in CalDAV to ensure proper behaviour
+ of server indexing</description>
+
+ <start>
+ <request end-delete="yes" print-response="yes">
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/delete/1.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>1todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/1.txt</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='DELETE'>
+ <test name='1'>
+ <description>DELETE existing VEVENT</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>DELETE existing VTODO</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>1todo.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>DELETE non-existing resource</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/depthreports.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/depthreports.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/depthreports.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,827 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start>
+ <request end-delete="yes">
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/2.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/3.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/4.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/5.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/6.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/7.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/7.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/8.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/8.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/9.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/9.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/10.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/10.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/11.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/11.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/12.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/12.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/13.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/13.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/14.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/14.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar/15.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/15.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar2/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/2.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/16.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/16.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/top-collection/collection/</ruri>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/collection/calendar3/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/collection/calendar3/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/2.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/collection/calendar3/10.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/10.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/collection/calendar3/17.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/17.txt</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='multiget reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>multiget on calendar</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/depth1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>multiget on collection</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/depth2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>calendar/1.ics</value>
+ <value>calendar/2.ics</value>
+ <value>calendar/3.ics</value>
+ <value>calendar/4.ics</value>
+ <value>calendar2/1.ics</value>
+ <value>calendar2/16.ics</value>
+ <value>collection/calendar3/2.ics</value>
+ </arg>
+ <arg>
+ <name>badhrefs</name>
+ <value>1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>multiget on calendar resource</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/calendar/1.ics</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/depth3.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/top-collection/calendar/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ </arg>
+ <arg>
+ <name>badhrefs</name>
+ <value>2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>multiget on non calendar resource</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/1.ics</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/depth4.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='basic query reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>query on calendar with no Depth</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>query on calendar with Depth 0</description>
+ <request>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>query on calendar with Depth 1</description>
+ <request>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>query on calendar with Depth infinity</description>
+ <request>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>query on collection with no Depth</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>query on collection with Depth 0</description>
+ <request>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>query on collection with Depth 1</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>calendar/1.ics</value>
+ <value>calendar/10.ics</value>
+ <value>calendar/11.ics</value>
+ <value>calendar/12.ics</value>
+ <value>calendar/13.ics</value>
+ <value>calendar/14.ics</value>
+ <value>calendar2/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>query on collection with Depth infinity</description>
+ <request>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>calendar/1.ics</value>
+ <value>calendar/10.ics</value>
+ <value>calendar/11.ics</value>
+ <value>calendar/12.ics</value>
+ <value>calendar/13.ics</value>
+ <value>calendar/14.ics</value>
+ <value>calendar2/1.ics</value>
+ <value>collection/calendar3/10.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>query on matching calendar resource with no Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/calendar/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/top-collection/calendar/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>query on non-matching calendar resource with no Depth</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/calendar/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>query on non calendar resource with no Depth</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>4xx</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='free-busy reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>query for free busy on calendar with no Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060107T010000Z/20060107T020000Z</value>
+ <value>20060107T150000Z/20060107T163000Z</value>
+ <value>20060108T150000Z/20060108T180000Z</value>
+ <value>20060108T190000Z/20060108T193000Z</value>
+ </arg>
+ <arg>
+ <name>unavailable</name>
+ <value>20060108T130000Z/20060108T150000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060108T160000Z/20060108T170000Z</value>
+ <value>20060108T210000Z/20060108T213000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>query for free busy on calendar with Depth 0</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060107T010000Z/20060107T020000Z</value>
+ <value>20060107T150000Z/20060107T163000Z</value>
+ <value>20060108T150000Z/20060108T180000Z</value>
+ <value>20060108T190000Z/20060108T193000Z</value>
+ </arg>
+ <arg>
+ <name>unavailable</name>
+ <value>20060108T130000Z/20060108T150000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060108T160000Z/20060108T170000Z</value>
+ <value>20060108T210000Z/20060108T213000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>query for free busy on calendar with Depth 1</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060107T010000Z/20060107T020000Z</value>
+ <value>20060107T150000Z/20060107T163000Z</value>
+ <value>20060108T150000Z/20060108T180000Z</value>
+ <value>20060108T190000Z/20060108T193000Z</value>
+ </arg>
+ <arg>
+ <name>unavailable</name>
+ <value>20060108T130000Z/20060108T150000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060108T160000Z/20060108T170000Z</value>
+ <value>20060108T210000Z/20060108T213000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>query for free busy on calendar with Depth infinity</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060107T010000Z/20060107T020000Z</value>
+ <value>20060107T150000Z/20060107T163000Z</value>
+ <value>20060108T150000Z/20060108T180000Z</value>
+ <value>20060108T190000Z/20060108T193000Z</value>
+ </arg>
+ <arg>
+ <name>unavailable</name>
+ <value>20060108T130000Z/20060108T150000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060108T160000Z/20060108T170000Z</value>
+ <value>20060108T210000Z/20060108T213000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>query for free busy on collection with no Depth</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>query for free busy on collection with Depth 0</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>query for free busy on collection with Depth 1</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060107T010000Z/20060107T020000Z</value>
+ <value>20060107T150000Z/20060107T163000Z</value>
+ <value>20060108T150000Z/20060108T180000Z</value>
+ <value>20060108T190000Z/20060108T193000Z</value>
+ <value>20060108T200000Z/20060108T203000Z</value>
+ </arg>
+ <arg>
+ <name>unavailable</name>
+ <value>20060108T130000Z/20060108T170000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060108T160000Z/20060108T173000Z</value>
+ <value>20060108T210000Z/20060108T213000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>query for free busy on collection with Depth infinity</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060107T010000Z/20060107T020000Z</value>
+ <value>20060107T150000Z/20060107T163000Z</value>
+ <value>20060108T150000Z/20060108T180000Z</value>
+ <value>20060108T190000Z/20060108T193000Z</value>
+ <value>20060108T200000Z/20060108T210000Z</value>
+ </arg>
+ <arg>
+ <name>unavailable</name>
+ <value>20060108T130000Z/20060108T170000Z</value>
+ <value>20060108T173000Z/20060108T180000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060108T160000Z/20060108T173000Z</value>
+ <value>20060108T210000Z/20060108T220000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>query for free busy on resource</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/top-collection/calendar/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>4xx</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/depthreportsacl.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/depthreportsacl.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/depthreportsacl.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,307 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start>
+ <request end-delete="yes">
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with DAV:read only -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar1/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal2.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal3.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with no privileges -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar2/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal4.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal5.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal6.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with CALDAV:read-free-busy only -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar3/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal7.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal8.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal9.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='Reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>multiget on top collection</description>
+ <request user='$userid2:' pswd='$pswd2:' print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>calendar1/1.ics</value>
+ </arg>
+ <arg>
+ <name>badhrefs</name>
+ <value>calendar1/2.ics</value>
+ <value>calendar1/3.ics</value>
+ <value>calendar2/1.ics</value>
+ <value>calendar2/2.ics</value>
+ <value>calendar2/3.ics</value>
+ <value>calendar3/1.ics</value>
+ <value>calendar3/2.ics</value>
+ <value>calendar3/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>query on top collection</description>
+ <request user='$userid2:' pswd='$pswd2:' print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/5.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>calendar1/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>query for free busy on collection with Depth infinity</description>
+ <request user='$userid2:' pswd='$pswd2:' print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060101T060000Z/20060101T070000Z</value>
+ <value>20060101T100000Z/20060101T110000Z</value>
+ <value>20060101T180000Z/20060101T190000Z</value>
+ <value>20060101T220000Z/20060101T230000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/encodedURIs.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/encodedURIs.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/encodedURIs.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,278 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start>
+ <request end-delete='yes'>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection%201/</ruri>
+ </request>
+ <request end-delete='yes'>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/calendar%202/</ruri>
+ </request>
+ <request end-delete='yes'>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/calendar%203/</ruri>
+ </request>
+ </start>
+
+ <test-suite name='regular resource'>
+ <test name='1'>
+ <description>PUT</description>
+ <request print-response='no' end-delete='yes'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection%201/2%20a.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>!Location</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+
+ <test name='2'>
+ <description>COPY</description>
+ <request print-response='no' end-delete='yes'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/collection%201/2_2%20a.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection%201/2%20a.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$$host:$pathprefix:/collection%201/2_2%20a.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection%201/2_2%20a.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>$pathprefix:/collection%201/2_2%20a.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>MOVE</description>
+ <request print-response='no' end-delete='yes'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/collection%201/2_3%20a.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection%201/2%20a.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$$host:$pathprefix:/collection%201/2_3%20a.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection%201/2_2%20a.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>$pathprefix:/collection%201/2_2%20a.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='calendar resource'>
+ <test name='1'>
+ <description>PUT</description>
+ <request print-response='no' end-delete='yes'>
+ <method>PUT</method>
+ <ruri>2%20a.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>!Location</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>COPY</description>
+ <request print-response='no' end-delete='yes'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar%202/2_2%20a.ics</value>
+ </header>
+ <ruri>2%20a.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$$host:$pathprefix:/calendar%202/2_2%20a.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/calendar%202/2_2%20a.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>$pathprefix:/calendar%202/2_2%20a.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>MOVE</description>
+ <request print-response='no' end-delete='yes'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar%203/2_3%20a.ics</value>
+ </header>
+ <ruri>2%20a.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$$host:$pathprefix:/calendar%203/2_3%20a.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/calendar%203/2_3%20a.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>$pathprefix:/calendar%203/2_3%20a.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/errors.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/errors.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/errors.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,1105 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Tests of various pre-/post-conditions</description>
+
+ <start>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/6.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/calendar2/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/calendar2/6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/6.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/calendar2/7.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/7.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/1.xml</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/1.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/2.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/3.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/4.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/5.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/6.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/7.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/7.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/8.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/8.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix:/9.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/9.txt</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='PUT' ignore='no'>
+ <test name='1'>
+ <description>PUT non-calendar data</description>
+ <request>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PUT invalid calendar data</description>
+ <request>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PUT with multiple component types</description>
+ <request>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>PUT with METHOD property</description>
+ <request>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>PUT with different uids in same resource</description>
+ <request>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>PUT with duplicate uids</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>PUT with different uid onto existing resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/7.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>PUT with too many recurrence instances to new resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/8.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>PUT with too many recurrence instances to existing resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/9.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>PUT without timezone</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/errors/28.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='COPY' ignore='no'>
+ <test name='1'>
+ <description>COPY non-calendar data</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <ruri>$pathprefix:/1.xml</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>COPY invalid calendar data</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <ruri>$pathprefix:/2.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>COPY with multiple component types</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <ruri>$pathprefix:/3.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>COPY with METHOD property</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <ruri>$pathprefix:/4.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>COPY with different uids in same resource</description>
+ <request>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <ruri>$pathprefix:/5.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>COPY with duplicate uids</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <ruri>$pathprefix:/6.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>COPY from calendar with duplicate uids</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/copy1.ics</value>
+ </header>
+ <ruri>$pathprefix:/calendar2/6.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>COPY with different uid onto existing resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/7.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>COPY from calendar with different uid onto existing resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/calendar2/7.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>COPY with too many recurrence instances to new resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/2.ics</value>
+ </header>
+ <ruri>$pathprefix:/8.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>COPY with too many recurrence instances to existing resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/9.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='MOVE' ignore='no'>
+ <test name='1'>
+ <description>MOVE non-calendar data</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <ruri>$pathprefix:/1.xml</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>MOVE invalid calendar data</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <ruri>$pathprefix:/2.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>MOVE with multiple component types</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <ruri>$pathprefix:/3.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>MOVE with METHOD property</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <ruri>$pathprefix:/4.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>MOVE with different uids in same resource</description>
+ <request>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <ruri>$pathprefix:/5.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-object-resource</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>MOVE with duplicate uids</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <ruri>$pathprefix:/6.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>MOVE from calendar with duplicate uids</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/move1.ics</value>
+ </header>
+ <ruri>$pathprefix:/calendar2/6.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>MOVE with different uid onto existing resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/7.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>MOVE from calendar with different uid onto existing resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/calendar2/7.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavno-uid-conflict</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>MOVE with too many recurrence instances to new resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/2.ics</value>
+ </header>
+ <ruri>$pathprefix:/8.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>MOVE with too many recurrence instances to existing resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$host:$pathprefix:/calendar/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/9.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavnumber-of-recurrences-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='REPORT/calendar-data' ignore='no'>
+ <test name='1'>
+ <description>query with invalid calendar-data content-type</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/10.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>query with invalid calendar-data version</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/11.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>multiget with invalid calendar-data content-type</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/12.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>multiget with invalid calendar-data version</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/13.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='REPORT/filter' ignore='no'>
+ <test name='1'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/14.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/15.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/16.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/17.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/18.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/19.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/20.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/21.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>query with invalid filter</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/22.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>query with invalid time-range (dates)</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/29.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>query with invalid time-range (floating)</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/30.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-filter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>free-busy with invalid time-range (dates)</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/31.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>free-busy with invalid time-range (floating)</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/32.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>400</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='REPORT/too big' ignore='no'>
+ <test name='1'>
+ <description>query with too many results</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/calendar.1000/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/23.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:number-of-matches-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>multiget with too many results</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/calendar.1000/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/24.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:number-of-matches-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>free-busy with too many results</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/calendar.1000/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/25.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:number-of-matches-within-limits</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Invalid CalDAV:timezone' ignore='no'>
+ <test name='1'>
+ <description>query with invalid timezone</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/26.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>proppatch with invalid timezone</description>
+ <request print-response='no'>
+ <method>PROPPATCH</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/errors/27.txt</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>badprops</name>
+ <value>urn:ietf:params:xml:ns:caldavcalendar-timezone</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/floating.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/floating.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/floating.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,497 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test all-day/floating tests for timezone proeprty</description>
+
+ <start>
+ <request end-delete="yes">
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/floating/</ruri>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/floating/calendar-none/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-none/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-none/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/2.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-none/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/3.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-none/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/4.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-none/5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/5.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-none/6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/6.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-none/7.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/7.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/floating/calendar-us/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/8.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-us/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/1.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-us/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/2.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-us/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/3.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-us/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/4.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-us/5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/5.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-us/6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/6.txt</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/floating/calendar-us/7.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/floating/put/7.txt</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='REPORT floating behaviour - calendar without timezone'>
+ <test name='1' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: US/Eastern</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/floating/calendar-none/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/calendar-none/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>3.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: US/Pacific</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/floating/calendar-none/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/calendar-none/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>3.ics</value>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: US/Pacific</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/floating/calendar-none/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/calendar-none/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>3.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='REPORT floating behaviour - calendar with timezone'>
+ <test name='1' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: no timezone</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/floating/calendar-us/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/calendar-us/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>3.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: US/Eastern</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/floating/calendar-us/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/calendar-us/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>3.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: US/Pacific</description>
+ <request>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/floating/calendar-us/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/calendar-us/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>3.ics</value>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='REPORT floating behaviour - collection'>
+ <test name='1' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: no timezone</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/floating/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>calendar-none/1.ics</value>
+ <value>calendar-none/3.ics</value>
+ <value>calendar-none/5.ics</value>
+ <value>calendar-none/6.ics</value>
+ <value>calendar-us/1.ics</value>
+ <value>calendar-us/3.ics</value>
+ <value>calendar-us/5.ics</value>
+ <value>calendar-us/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: US/Eastern</description>
+ <request>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/floating/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>calendar-none/1.ics</value>
+ <value>calendar-none/3.ics</value>
+ <value>calendar-none/5.ics</value>
+ <value>calendar-none/6.ics</value>
+ <value>calendar-us/1.ics</value>
+ <value>calendar-us/3.ics</value>
+ <value>calendar-us/5.ics</value>
+ <value>calendar-us/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>REPORT on non-recurring timed/floating events: US/Pacific</description>
+ <request>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/floating/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value>$pathprefix:/floating/</value>
+ </arg>
+ <arg>
+ <name>okhrefs</name>
+ <value>calendar-none/1.ics</value>
+ <value>calendar-none/3.ics</value>
+ <value>calendar-none/6.ics</value>
+ <value>calendar-us/1.ics</value>
+ <value>calendar-us/3.ics</value>
+ <value>calendar-us/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='REPORT free-busy floating behaviour'>
+ <test name='1' ignore='no'>
+ <description>free-busy on collection without timezone</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/floating/calendar-none/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060101T000000Z/20060101T020000Z</value>
+ <value>20060101T050000Z/20060101T060000Z</value>
+ <value>20060101T080000Z/20060101T090000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060101T000000Z/20060102T000000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>free-busy on collection with timezone</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/floating/calendar-us/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060101T000000Z/20060101T010000Z</value>
+ <value>20060101T050000Z/20060101T070000Z</value>
+ <value>20060101T080000Z/20060101T090000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060101T050000Z/20060102T000000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>free-busy on multiple collections with/without timezone</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix:/floating/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/floating/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060101T000000Z/20060101T020000Z</value>
+ <value>20060101T050000Z/20060101T070000Z</value>
+ <value>20060101T080000Z/20060101T090000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060101T000000Z/20060102T000000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/mkcalendar.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/mkcalendar.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/mkcalendar.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,175 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start/>
+
+ <test-suite name='MKCALENDAR without body'>
+ <test name='1'>
+ <description>Simple MKCALENDAR</description>
+ <request end-delete='yes'>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/caltest1/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>201</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>MKCALENDAR on existing resource</description>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/caltest1/</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:resource-must-be-null</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>MKCALENDAR inside another calendar</description>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/caltest1/caltest2/</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavcalendar-collection-location-ok</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>MKCOL inside a calendar</description>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/caltest1/collection/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='MKCALENDAR with body'>
+ <test name='1'>
+ <description>MKCALENDAR with correct request body</description>
+ <request end-delete='yes'>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/caltest2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/mkcalendar/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>201</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>MKCALENDAR with correct request body on existing resource</description>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/caltest2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/mkcalendar/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:resource-must-be-null</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>MKCALENDAR with incorrect request body</description>
+ <request end-delete='yes' print-response='no'>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/caltest3/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/mkcalendar/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:getetag</value>
+ <value>DAV:displayname</value>
+ <value>urn:ietf:params:xml:ns:caldavcalendar-description</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/caltest3/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>MKCALENDAR with incorrect request body on existing resource</description>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/caltest2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/mkcalendar/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:resource-must-be-null</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/populate.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/populate.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/populate.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,48 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<populate>
+ <description>Populate a TwistedCalDAV server with user accounts.</description>
+ <path>/Users/</path>
+
+ <account count='1'>
+ <name>User-1.10</name>
+ <calendars>
+ <name>calendar</name>
+ <datasource count='1' mode='all'>Resource/Populate/</datasource>
+ </calendars>
+ </account>
+ <account count='1'>
+ <name>User-1.100</name>
+ <calendars>
+ <name>calendar</name>
+ <datasource count='10' mode='all'>Resource/Populate/</datasource>
+ </calendars>
+ </account>
+ <account count='1'>
+ <name>User-1.1000</name>
+ <calendars>
+ <name>calendar</name>
+ <datasource count='100' mode='all'>Resource/Populate/</datasource>
+ </calendars>
+ </account>
+</populate>
Added: CalDAVTester/trunk/scripts/tests1/propfind.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/propfind.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/propfind.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,273 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start/>
+
+ <test-suite name='regular prop finds'>
+ <test name='1'>
+ <description>PROPFIND of basic properties depth=0</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND of basic properties depth=1</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPFIND of basic properties depth=infinity</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>PROPFIND getcontentlength=0</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/7.txt</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:getcontentlength$</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='prop names'>
+ <test name='1'>
+ <description>PROPFIND of property names depth=0</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND of property names depth=1</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPFIND of property names depth=infinity</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='prop all'>
+ <test name='1'>
+ <description>PROPFIND of all properties depth=0</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND of all properties depth=1</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPFIND of all properties depth=infinity</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='prop errors'>
+ <test name='1'>
+ <description>PROPFIND with invalid elements</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>4xx</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>PROPFIND of unknown element</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>4xx</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPFIND with one unknown property</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/propfinds/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/proppatch.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/proppatch.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/proppatch.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,165 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start/>
+
+ <test-suite name='prop patches'>
+ <test name='1' ignore="no">
+ <description>PROPPATCH of details: good</description>
+ <request print-response='no'>
+ <method>PROPPATCH</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/proppatches/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:details</value>
+ <value>DAV:details2</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/proppatches/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:details$My Name</value>
+ <value>DAV:details2$My Name 2</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore="no">
+ <description>PROPPATCH of details: remove it</description>
+ <request print-response='no'>
+ <method>PROPPATCH</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/proppatches/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:details</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/proppatches/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:details2$My Name 2</value>
+ </arg>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:details</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>PROPPATCH remove non-existant</description>
+ <request print-response='no'>
+ <method>PROPPATCH</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/proppatches/4.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:missing</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>PROPPATCH of resourcetype: fails</description>
+ <request print-response='no'>
+ <method>PROPPATCH</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/proppatches/5.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:details</value>
+ <value>DAV:details2</value>
+ <value>DAV:resourcetype</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/proppatches/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:details2$My Name 2</value>
+ </arg>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:details</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/put.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/put.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/put.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,500 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test PUT method in CalDAV</description>
+
+ <start/>
+
+ <test-suite name='PUT VEVENT'>
+ <test name='1' ignore='no'>
+ <description>PUT non-recurring timed event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>1.ics</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/recurrenceput/1.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PUT not in calendar collection</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$pathprefix:/1.ics</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/recurrenceput/1.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Put VTODO' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Plain VTODO with no date</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>1todo.ics</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/todo/1.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Plain VTODO with DUE only</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>2todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>2todo.ics</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/todo/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Plain VTODO with DTSTART/DUARTION only</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>3todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>3todo.ics</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/todo/3.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Plain VTODO with DTSTART only</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>4todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>4todo.ics</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/todo/4.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Problem VEVENTs - EXDATE & various combinations of date-time/date values'>
+ <test name='1' ignore='no'>
+ <description>PUT problem event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>DTSTART/DATE-TIME/UTC, DTEND/DATE</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/2.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>DTSTART/DATE-TIME/TZID, DTEND/DATE</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>18.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/16.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>DTSTART/DATE-TIME/Float, DTEND/DATE</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>19.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/17.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>DTSTART/DATE-TIME/UTC, DTEND/DATE-TIME/TZID</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>DTSTART/DATE-TIME/UTC, DTEND/DATE-TIME/Float</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>DTSTART/DATE-TIME/TZID, DTEND/DATE-TIME/UTC</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>7.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>DTSTART/DATE-TIME/TZID, DTEND/DATE-TIME/Float</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>8.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/6.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>DTSTART/DATE-TIME/Float, DTEND/DATE-TIME/UTC</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>9.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>DTSTART/DATE-TIME/Float, DTEND/DATE-TIME/TZID</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>10.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/8.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Problem VTODOs - various combinations of date-time/date values'>
+ <test name='1' ignore='no'>
+ <description>DTSTART/DATE-TIME/UTC, DUE/DATE</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>11.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/9.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>DTSTART/DATE-TIME/TZID, DUE/DATE</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>20.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/18.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>DTSTART/DATE-TIME/Float, DUE/DATE</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>21.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/19.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>DTSTART/DATE, DUE/DATE-TIME/UTC</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>22.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/20.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>DTSTART/DATE, DUE/DATE-TIME/TZID</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>23.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/21.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>DTSTART/DATE, DUE/DATE-TIME/Float</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>24.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/22.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>DTSTART/DATE-TIME/UTC, DUE/DATE-TIME/TZID</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>12.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/10.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>DTSTART/DATE-TIME/UTC, DUE/DATE-TIME/Float</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>13.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/11.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>DTSTART/DATE-TIME/TZID, DUE/DATE-TIME/UTC</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>14.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/12.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>DTSTART/DATE-TIME/TZID, DUE/DATE-TIME/Float</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>15.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/13.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>DTSTART/DATE-TIME/Float, DUE/DATE-TIME/UTC</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>16.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/14.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='12' ignore='no'>
+ <description>DTSTART/DATE-TIME/Float, DUE/DATE-TIME/TZID</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>17.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/problemics/15.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/quota.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/quota.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/quota.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,2974 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest ignore-all="yes">
+ <description>Test Quota support on the server</description>
+
+ <start>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/</ruri>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/4.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/5.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/6.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/noquotacol/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/noquotacol/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/quotacol/</ruri>
+ </request>
+ <request>
+ <method>QUOTA-ENABLE-2048</method>
+ <ruri>$pathprefix:/collection/quotacol/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ </request>
+ <request>
+ <method>QUOTA-ENABLE-1048576</method><!-- 1Mb -->
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/parentquotacol/</ruri>
+ </request>
+ <request>
+ <method>QUOTA-ENABLE-4096</method><!-- 4Kb -->
+ <ruri>$pathprefix:/collection/parentquotacol/</ruri>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
+ </request>
+ <request>
+ <method>QUOTA-ENABLE-2048</method><!-- 2Kb -->
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
+ </request>
+ <request>
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
+ </request>
+ <request>
+ <method>QUOTA-ENABLE-1048576</method><!-- 1Mb -->
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/collection/noquotacal/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/noquotacal/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/collection/quotacal/</ruri>
+ </request>
+ <request>
+ <method>QUOTA-ENABLE-2048</method>
+ <ruri>$pathprefix:/collection/quotacal/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ </request>
+ <request>
+ <method>QUOTA-ENABLE-1048576</method><!-- 1Mb -->
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/calendar/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.ics</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='Properties on collections' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>allprop on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>allprop on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>propname on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>propname on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>props on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ </arg>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:quota-available-bytes</value>
+ <value>DAV:quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>props on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$118</value>
+ <value>DAV:quota-used-bytes$1930</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Properties on resources' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>allprop on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacol/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>allprop on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>propname on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacol/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>propname on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>props on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacol/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ </arg>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:quota-available-bytes</value>
+ <value>DAV:quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>props on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$118</value>
+ <value>DAV:quota-used-bytes$1930</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Properties on calendars' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>allprop on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>allprop on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>propname on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>propname on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>props on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ </arg>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:quota-available-bytes</value>
+ <value>DAV:quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>props on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1413</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Properties on calendar resources' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>allprop on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacal/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>allprop on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>propname on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacal/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>propname on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>quota-available-bytes</value>
+ <value>quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>props on non-quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/noquotacal/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ </arg>
+ <arg>
+ <name>badprops</name>
+ <value>DAV:quota-available-bytes</value>
+ <value>DAV:quota-used-bytes</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>props on quota collection</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1413</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PUT Over quota on collection' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>over quota on quota collection with new resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacol/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>over quota on quota collection with existing resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>event_1</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>more</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>over quota on quota sub-collection with new resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>over quota on quota sub-collection with existing resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>event_1</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>more</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PUT Over quota on calendar' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>over quota on quota calendar with new resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacal/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacal/4.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>over quota on quota calendar with existing resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/6.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>event_1</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>more</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='COPY resource over quota' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>over quota on quota collection with new resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacol/2.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/temp/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>over quota on quota collection with existing resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacol/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>event_1</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>more</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/temp/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>over quota on quota collection copying collection</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacol/test/</value>
+ </header>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/test/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='COPY calendar resource over quota' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>over quota on quota calendar with new resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacal/4.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/4.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/4.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/temp/4.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1413</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>over quota on quota calendar with existing resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacal/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/6.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacal/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>event_1</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>more</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/temp/6.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1413</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>not allowed on quota calendar copying collection</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacal/test/</value>
+ </header>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>405</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacal/test/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/quotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1413</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='COPY collection over quota' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>over quota on quota collection with new collection</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacol/test/</value>
+ </header>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/test/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>over quota on quota collection with existing collection</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacol/temp/</value>
+ </header>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>over quota on quota collection copying collection</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/quotacol/temp/test/</value>
+ </header>
+ <header>
+ <name>Depth</name>
+ <value>infinity</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/quotacol/temp/test/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PUT/DELETE/COPY/MOVE of resource with quota update' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Initial quota values</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PUT new resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047941</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>PUT existing resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047490</value>
+ <value>DAV:quota-used-bytes$1086</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>DELETE existing resource</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>COPY new resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacol/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047941</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>COPY existing resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacol/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047490</value>
+ <value>DAV:quota-used-bytes$1086</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>DELETE existing resource</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>MOVE new resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacol/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047941</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>MOVE existing resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacol/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047490</value>
+ <value>DAV:quota-used-bytes$1086</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>DELETE existing resource</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/largequotacol/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PUT/DELETE/COPY/MOVE of calendar resource with quota update' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Initial quota values</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ <!-- Make sure we have the source collection files in place -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.ics</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PUT new resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047941</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>PUT existing resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047490</value>
+ <value>DAV:quota-used-bytes$1086</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>DELETE existing resource</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>COPY new resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacal/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047941</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>COPY existing resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacal/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047490</value>
+ <value>DAV:quota-used-bytes$1086</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>DELETE existing resource</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>MOVE new resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacal/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047941</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>MOVE existing resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacal/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/3.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1047490</value>
+ <value>DAV:quota-used-bytes$1086</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>DELETE existing resource</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/largequotacal/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacal/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='COPY/MOVE/DELETE of collection with quota update' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Initial quota values</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ <!-- Make sure we have the source collection files in place -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/temp/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.ics</filepath>
+ </data>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>COPY new collection</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacol/test/</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1033552</value>
+ <value>DAV:quota-used-bytes$15024</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>DELETE existing collection</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/largequotacol/test/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>MOVE new collection</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/collection/largequotacol/test/</value>
+ </header>
+ <ruri>$pathprefix:/collection/temp/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1033552</value>
+ <value>DAV:quota-used-bytes$15024</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>DELETE existing resource</description>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/largequotacol/test/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/largequotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PUT with nested over quota' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Initial quota values</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$4096</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$2048</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PUT small resource below nested and below parent quota</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$3461</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1413</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>PUT smallish resource above nested but below parent quota</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>507</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/4.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$3461</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1413</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1048576</value>
+ <value>DAV:quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>PUT smallish resource below nested (2) and below parent quota</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$426</value>
+ <value>DAV:quota-used-bytes$3670</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1413</value>
+ <value>DAV:quota-used-bytes$635</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1045541</value>
+ <value>DAV:quota-used-bytes$3035</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>PUT small resource below nested but above parent quota</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/2.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$0</value>
+ <value>DAV:quota-used-bytes$4330</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$753</value>
+ <value>DAV:quota-used-bytes$1295</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1045541</value>
+ <value>DAV:quota-used-bytes$3035</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>PUT large resource below nested (2) but above parent quota</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$0</value>
+ <value>DAV:quota-used-bytes$11200</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$753</value>
+ <value>DAV:quota-used-bytes$1295</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$pathprefix:/collection/parentquotacol/nestedquotacol2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/quota/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>DAV:resourcetype</value>
+ <value>DAV:quota-available-bytes$1038671</value>
+ <value>DAV:quota-used-bytes$9905</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='PUT with oversize attachment' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>PUT new oversized resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/calendar/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/calendar/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PUT existing oversized resource</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/calendar/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/calendar/2.ics</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>event 2</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>PUT new oversized resource to regular collection</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$pathprefix:/collection/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/quota/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>COPY new oversized resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/calendar/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/1.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/calendar/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>COPY existing oversized resource</description>
+ <request print-response='no'>
+ <method>COPY</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/calendar/2.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/1.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/calendar/2.ics</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>event 2</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>MOVE new oversized resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/calendar/1.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/1.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/calendar/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>MOVE existing oversized resource</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <header>
+ <name>Destination</name>
+ <value>$pathprefix:/calendar/2.ics</value>
+ </header>
+ <ruri>$pathprefix:/collection/1.ics</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavmax-resource-size</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/calendar/2.ics</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>event 2</value>
+ </arg>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$pathprefix:/collection/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request>
+ <method>DELETE</method>
+ <ruri>$pathprefix:/collection/</ruri>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/recurrenceput.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/recurrenceput.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/recurrenceput.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,247 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test PUT method in CalDAV with various recurrences to ensure
+ proper behaviour of server indexing</description>
+
+ <start/>
+
+ <test-suite name='VEVENTs'>
+ <test name='1' ignore='no'>
+ <description>PUT non-recurring timed event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PUT non-recurring all day event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>PUT recurring (no exceptions) timed event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>PUT recurring (no exceptions) all day event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>PUT recurring (with exceptions) timed event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>PUT recurring (with exceptions) all day event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>PUT recurring (with future exceptions) timed event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>7.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/7.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>PUT recurring (with future exceptions) all day event</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>8.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/recurrenceput/8.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='VTODOs' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Plain VTODO with no date - recurring</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>1todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Plain VTODO with all-day DUE only - recurring</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>2todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Plain VTODO with all-day DTSTART/DURATION only - recurring</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>3todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/7.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Plain VTODO with all-day DTSTART only - recurring</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>3todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/8.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Plain VTODO with timed DUE only - recurring</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>4todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/9.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Plain VTODO with timed DTSTART/DURATION only - recurring</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>5todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/10.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Plain VTODO with timed DTSTART/DURATION only - recurring</description>
+ <request end-delete='yes'>
+ <method>PUT</method>
+ <ruri>5todo.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/todo/11.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/reports.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/reports.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/reports.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,1201 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/1.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/2.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/3.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>4.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/4.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>5.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/5.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>6.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/6.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>7.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/7.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>8.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/8.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>9.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/9.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>10.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/10.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>11.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/11.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>12.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/12.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>13.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/13.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>14.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/14.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>15.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/15.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>101.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/101.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>102.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/102.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>103.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/103.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>104.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/104.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>105.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/105.txt</filepath>
+ </data>
+ </request>
+ <request end-delete="yes">
+ <method>PUT</method>
+ <ruri>106.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/reports/put/106.txt</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='multiget reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>basic multiget of 4 resources returning etag and entire ics data</description>
+ <request>
+ <method>REPORT</method>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ <value>101.ics</value>
+ <value>102.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>basic multiget of 4 resources returning etag and only VCALENDAR property data (no embedded components)</description>
+ <request>
+ <method>REPORT</method>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>basic multiget of 4 resources returning etag and only VTIMEZONE components</description>
+ <request>
+ <method>REPORT</method>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>basic multiget of 4 resources returning etag and only SUMMARY/UID properties inside VEVENT components and VALARMs</description>
+ <request>
+ <method>REPORT</method>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ <value>101.ics</value>
+ <value>102.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>as 4.txt except that the SUMMARY property value is not returned</description>
+ <request>
+ <method>REPORT</method>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ <value>101.ics</value>
+ <value>102.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Does allprop</description>
+ <request>
+ <method>REPORT</method>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Does propname</description>
+ <request>
+ <method>REPORT</method>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/multiget/7.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='basic query reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>query for resources with VCALENDAR & VEVENT defined</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ <value>8.ics</value>
+ <value>9.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>query for resources with VCALENDAR & VEVENT not defined</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/8.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>15.ics</value>
+ <value>101.ics</value>
+ <value>102.ics</value>
+ <value>103.ics</value>
+ <value>104.ics</value>
+ <value>105.ics</value>
+ <value>106.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>query for resources where the SUMMARY in a VEVENT contains the character '1'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>query for resources where the SUMMARY in a VEVENT does not contain the character '1'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/7.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ <value>8.ics</value>
+ <value>9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>query for resources where the DESCRIPTION property exists in a VEVENT</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>2.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>query for resources where the DESCRIPTION property does not exist in a VEVENT</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/9.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ <value>8.ics</value>
+ <value>9.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>query for resources that have a DTSTART in a VEVENT that contains a TZID parameter containing the text 'Paci'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>query for resources that have a DTSTART in a VEVENT that contains a TZID parameter not containing the text 'Paci'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/10.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>4.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ <value>8.ics</value>
+ <value>9.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>query for resources that have a DTSTART in a VEVENT that contains a TZID parameter containing the text 'Paci' or 'Moun'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>query for resources where the SUMMARY in a VEVENT contains the character '4' or has a DTSTART in a VEVENT that contains a TZID parameter containing the text 'East'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>4.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ <value>8.ics</value>
+ <value>9.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>query for resources where the RECURRENCE-ID in a VEVENT does not contain a RANGE parameter</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/11.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12' ignore='no'>
+ <description>query for resources with VCALENDAR & VTODO defined</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/101.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>101.ics</value>
+ <value>102.ics</value>
+ <value>103.ics</value>
+ <value>104.ics</value>
+ <value>105.ics</value>
+ <value>106.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13' ignore='no'>
+ <description>query for resources where the SUMMARY in a VTODO contains the character '1'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/102.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>101.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='14' ignore='no'>
+ <description>query for resources that have a DUE in a VTODO that contains a TZID parameter containing the text 'East'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/103.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>102.ics</value>
+ <value>104.ics</value>
+ <value>106.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='15' ignore='no'>
+ <description>query for resources with VCALENDAR & VEVENT or VTODO defined</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/201.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ <value>8.ics</value>
+ <value>9.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ <value>101.ics</value>
+ <value>102.ics</value>
+ <value>103.ics</value>
+ <value>104.ics</value>
+ <value>105.ics</value>
+ <value>106.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16' ignore='no'>
+ <description>query for resources where the SUMMARY in a VEVENT or VTODO contains the character '1'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/202.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ <value>101.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17' ignore='no'>
+ <description>query for resources that have a DTSTART in a VEVENT with TZID containg 'Paci' or a DUE in a VTODO with TZID containing 'East'</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/203.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>3.ics</value>
+ <value>102.ics</value>
+ <value>104.ics</value>
+ <value>106.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='18' ignore='no'>
+ <description>query for VEVENTs that do not contain VALARMs</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/basicquery/12.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ <value>8.ics</value>
+ <value>9.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='time-range query reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>query for VEVENTs within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>query for VEVENT/VFREEBUSYs that have a CREATED/DTSTAMP within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ <value>2.ics</value>
+ <value>3.ics</value>
+ <value>4.ics</value>
+ <value>8.ics</value>
+ <value>9.ics</value>
+ <value>10.ics</value>
+ <value>11.ics</value>
+ <value>12.ics</value>
+ <value>13.ics</value>
+ <value>14.ics</value>
+ <value>15.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>query for VEVENTs within time range with specific SUMMARY text</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>query for VEVENT recurrence instance within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>query for overridden VEVENT instance within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>query for overridden VEVENT not within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>query for overridden this-and-future VEVENT within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/7.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>query for VTODOs within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/101.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>102.ics</value>
+ <value>103.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>query for VTODOs within time range with specific SUMMARY text</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/102.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>102.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>query for VTODO recurrence instance within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/timerangequery/103.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>105.ics</value>
+ <value>106.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='alarm time-range query reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>query for VALARMS within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/alarmtimerangequery/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>query for repeating VALARMS within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/alarmtimerangequery/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>query for recurring VALARMS within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/alarmtimerangequery/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>5.ics</value>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>query for recurring/overridden VALARMS within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/alarmtimerangequery/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>query for VALARMS on VTODO within time range</description>
+ <request>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/alarmtimerangequery/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>102.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='free-busy reports' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>query for free busy with time range</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060101T150000Z/20060101T160000Z</value>
+ <value>20060101T180000Z/20060101T190000Z</value>
+ <value>20060101T210000Z/20060101T220000Z</value>
+ <value>20060101T230000Z/20060102T000000Z</value>
+ <value>20060102T150000Z/20060102T160000Z</value>
+ <value>20060103T150000Z/20060103T160000Z</value>
+ <value>20060104T150000Z/20060104T160000Z</value>
+ <value>20060102T190000Z/20060102T200000Z</value>
+ <value>20060103T190000Z/20060103T200000Z</value>
+ <value>20060104T210000Z/20060104T220000Z</value>
+ <value>20060102T230000Z/20060103T000000Z</value>
+ <value>20060103T230000Z/20060104T000000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>query for free busy with overlapping and consecutive events</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/freebusy/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>freeBusy</callback>
+ <arg>
+ <name>busy</name>
+ <value>20060107T010000Z/20060107T020000Z</value>
+ <value>20060107T150000Z/20060107T163000Z</value>
+ <value>20060108T150000Z/20060108T180000Z</value>
+ <value>20060108T190000Z/20060108T193000Z</value>
+ </arg>
+ <arg>
+ <name>unavailable</name>
+ <value>20060108T130000Z/20060108T150000Z</value>
+ </arg>
+ <arg>
+ <name>tentative</name>
+ <value>20060108T160000Z/20060108T170000Z</value>
+ <value>20060108T210000Z/20060108T213000Z</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='limit/expand recurrence in reports' ignore='no'>
+ <test name='1' ignore='yes'>
+ <description>time-range query with limit over same range</description>
+ <request print-response='yes'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/limitexpand/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='yes'>
+ <description>time-range query with limit over different range</description>
+ <request print-response='yes'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/limitexpand/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>time-range query with expand over same range</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/limitexpand/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>time-range query with expand over different range</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/limitexpand/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>5.ics</value>
+ <value>6.ics</value>
+ <value>7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>query with limit-freebusy-set</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/reports/limitexpand/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>okhrefs</name>
+ <value>15.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/schedule.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/schedule.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/schedule.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,727 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test SCHEDULE method in CalDAV</description>
+
+ <start>
+ <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/calendar/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/7.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/calendar/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/8.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/calendar/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/10.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix3:/calendar/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/9.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix3:/calendar/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/10.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix3:/outbox/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix3:/inbox/</ruri>
+ </request>
+ </start>
+
+ <test-suite name='SCHEDULE Errors' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>SCHEDULE on invalid outbox</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Organizer</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-collection</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>SCHEDULE with invalid content</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Organizer</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>SCHEDULE with invalid calendar data</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>SCHEDULE without METHOD property</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>SCHEDULE with invalid iTIP object</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>SCHEDULE without Originator:</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator-specified</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>SCHEDULE with non-authorized Originator:</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01-bogus at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator-allowed</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>SCHEDULE without Recipient:</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavrecipient-specified</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>SCHEDULE with non-authorized Organizer:</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavorganizer-allowed</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>SCHEDULE reply with too many Attendees:</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user02 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/17.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavattendee-allowed</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>SCHEDULE reply with non-authorized Attendee:</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user02 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/18.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavattendee-allowed</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="SCHEDULEs" ignore='no'>
+ <test name='1'>
+ <description>SCHEDULE which should work</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Make sure resource exists and properties are set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/11.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user02 at example.com</href><href xmlns="DAV:">mailto:user03 at example.com</href></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Make sure resource exists and properties are set</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/12.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>ignore</name>
+ <value>$pathprefix2:/inbox/</value>
+ </arg>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user02 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Make sure resource exists and properties are set</description>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix3:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/12.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>ignore</name>
+ <value>$pathprefix3:/inbox/</value>
+ </arg>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user03 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>SCHEDULE which should work (using relative principal addressing)</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, $principal3:</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ <test name='6'>
+ <description>SCHEDULE which should work (using absolute principal addressing)</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>$host:/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>$host:/principals/users/user02, $host:$principal3:</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="Reports on Inbox/Outbox" ignore='no'>
+ <test name='1'>
+ <description>Simple calendar-query for VEVENTs</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/13.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>207</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Simple calendar-query for VEVENTs</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/13.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>207</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Simple calendar-multiget for VEVENTs</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/14.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>badhrefs</name>
+ <value>1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Simple calendar-multiget for VEVENTs</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/15.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>badhrefs</name>
+ <value>$pathprefix:/inbox/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>free-busy-query failure</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/16.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:supported-report</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>free-busy-query failure</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/16.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:supported-report</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="SCHEDULEs free busy" ignore='no'>
+ <test name='1'>
+ <description>SCHEDULE free busy</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>FREEBUSY;FBTYPE=BUSY:20060101T170000Z/PT1H,20060101T190000Z/PT1H,20060101T2
+ 20000Z/PT1H</value>
+ <value>FREEBUSY;FBTYPE=BUSY:20060101T190000Z/PT2H,20060101T220000Z/PT1H</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>SCHEDULE free busy - recipients with failure</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:broken at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value><![CDATA[<recipient-exists xmlns='urn:ietf:params:xml:ns:caldav'/>]]></value>
+ <value>FREEBUSY;FBTYPE=BUSY:20060101T190000Z/PT2H,20060101T220000Z/PT1H</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/scheduleacl.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/scheduleacl.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/scheduleacl.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,285 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start>
+ <request end-delete="yes">
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with DAV:read only -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar1/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with DAV:read only -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with no privileges -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal2.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with DAV:read-free-busy only -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal3.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with no privileges -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar2/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with DAV:read only -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal4.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with no privileges -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal5.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with DAV:read-free-busy only -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal6.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with CALDAV:read-free-busy only -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar3/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with DAV:read only -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal7.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with no privileges -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal8.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <!-- Event with DAV:read-free-busy only -->
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal9.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Set calendar-free-busy-set to the calendars only -->
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleacl/1.xml</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='Schedule free-busy' ignore='no'>
+ <test name='1'>
+ <description>SCHEDULE free busy</description>
+ <request user='$userid2:' pswd='$pswd2:' print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user02 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleacl/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>FREEBUSY;FBTYPE=BUSY:20060101T060000Z/PT1H,20060101T100000Z/PT1H,20060101T1
+ 80000Z/PT1H,20060101T220000Z/PT1H</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <!-- Set calendar-free-busy-set back to default -->
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleacl/2.xml</filepath>
+ </data>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/scheduleauto.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/scheduleauto.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/scheduleauto.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,1177 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test SCHEDULE method in CalDAV</description>
+
+ <start>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ </request>
+ </start>
+
+ <test-suite name='SCHEDULE non-recurring without conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Update to previous request - no auto-reply' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>One item in resource01 Inbox (old one deleted)</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Repeat request - no auto-reply' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>One item in resource01 Inbox (old one deleted)</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='SCHEDULE non-recurring with conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='SCHEDULE recurring with conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/9.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/10.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/10.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='SCHEDULE recurring without conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/11.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/11.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/11.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/11.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/12.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/13.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/13.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='SCHEDULE non-recurring with recurring conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/14.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Two items in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>2</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/15.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/15.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='SCHEDULE recurring with recurring conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/16.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/16.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/16.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/16.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Two items in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>2</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/17.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/17.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='SCHEDULE cancel non-recurring' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do SCHEDULE</description>
+ <request>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/18.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/18.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/18.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/18.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Two items in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>6</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>6</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/schedulenormal.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/schedulenormal.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/schedulenormal.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,197 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test normal SCHEDULE operations in CalDAV</description>
+
+ <start>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix3:/outbox/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix3:/inbox/</ruri>
+ </request>
+ </start>
+
+ <test-suite name="SCHEDULEs" ignore='no'>
+ <test name='1'>
+ <description>Initial REQUEST</description>
+ <request print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, $principal3:</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Make sure resource exists and properties are set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal2:</href><href xmlns="DAV:">$principal3:</href></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Make sure resource exists and properties are set</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>ignore</name>
+ <value>$pathprefix2:/inbox/</value>
+ </arg>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal2:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Make sure resource exists and properties are set</description>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix3:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>ignore</name>
+ <value>$pathprefix3:/inbox/</value>
+ </arg>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal3:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>REPLY from one</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>SCHEDULE</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user02</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix2:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/schedulepost.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/schedulepost.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/schedulepost.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,727 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test POST method in CalDAV</description>
+
+ <start>
+ <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/calendar/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/7.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/calendar/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/8.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix2:/calendar/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/10.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix3:/calendar/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/9.ics</filepath>
+ </data>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:" end-delete="yes">
+ <method>PUT</method>
+ <ruri>$pathprefix3:/calendar/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/10.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix3:/outbox/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix3:/inbox/</ruri>
+ </request>
+ </start>
+
+ <test-suite name='POST Errors' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>POST on invalid outbox</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Organizer</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-collection</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>POST with invalid content</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Organizer</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavsupported-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>POST with invalid calendar data</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/1.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>POST without METHOD property</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>POST with invalid iTIP object</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavvalid-calendar-data</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>POST without Originator:</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator-specified</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>POST with non-authorized Originator:</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01-bogus at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator-allowed</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>POST without Recipient:</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavrecipient-specified</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>POST with non-authorized Organizer:</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavorganizer-allowed</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>POST reply with too many Attendees:</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user02 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/17.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavattendee-allowed</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>POST reply with non-authorized Attendee:</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user02 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/18.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>urn:ietf:params:xml:ns:caldavattendee-allowed</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="POSTs" ignore='no'>
+ <test name='1'>
+ <description>POST which should work</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Make sure resource exists and properties are set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/11.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user02 at example.com</href><href xmlns="DAV:">mailto:user03 at example.com</href></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Make sure resource exists and properties are set</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/12.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>ignore</name>
+ <value>$pathprefix2:/inbox/</value>
+ </arg>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user02 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Make sure resource exists and properties are set</description>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix3:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/12.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>ignore</name>
+ <value>$pathprefix3:/inbox/</value>
+ </arg>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">mailto:user01 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">mailto:user03 at example.com</href></value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>POST which should work (using relative principal addressing)</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, $principal3:</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ <test name='6'>
+ <description>POST which should work (using absolute principal addressing)</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>$host:/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>$host:/principals/users/user02, $host:$principal3:</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="Reports on Inbox/Outbox" ignore='no'>
+ <test name='1'>
+ <description>Simple calendar-query for VEVENTs</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/13.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>207</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Simple calendar-query for VEVENTs</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/13.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>207</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Simple calendar-multiget for VEVENTs</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/14.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>badhrefs</name>
+ <value>1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Simple calendar-multiget for VEVENTs</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/15.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>prefix</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>badhrefs</name>
+ <value>$pathprefix:/inbox/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>free-busy-query failure</description>
+ <request print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/16.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:supported-report</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>free-busy-query failure</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>REPORT</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedule/16.xml</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>DAV:supported-report</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="POSTs free busy" ignore='no'>
+ <test name='1'>
+ <description>POST free busy</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user02 at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>FREEBUSY;FBTYPE=BUSY:20060101T170000Z/PT1H,20060101T190000Z/PT1H,20060101T2
+ 20000Z/PT1H</value>
+ <value>FREEBUSY;FBTYPE=BUSY:20060101T190000Z/PT2H,20060101T220000Z/PT1H</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>POST free busy - recipients with failure</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:broken at example.com, mailto:user03 at example.com</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedule/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value><![CDATA[<recipient-exists xmlns='urn:ietf:params:xml:ns:caldav'/>]]></value>
+ <value>FREEBUSY;FBTYPE=BUSY:20060101T190000Z/PT2H,20060101T220000Z/PT1H</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/schedulepostacl.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/schedulepostacl.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/schedulepostacl.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,276 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <start>
+ <request end-delete="yes">
+ <method>MKCOL</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with DAV:read only -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar1/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal1.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal2.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal3.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar1/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with no privileges -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar2/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal4.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal5.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal6.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar2/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Calendar with CALDAV:read-free-busy only -->
+ <request>
+ <method>MKCALENDAR</method>
+ <ruri>$pathprefix:/top-collection/calendar3/</ruri>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal7.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/1.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/1.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal8.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/2.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/2.xml</filepath>
+ </data>
+ </request>
+ <request>
+ <method>PUT</method>
+ <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/cal9.ics</filepath>
+ </data>
+ </request>
+ <request>
+ <method>ACL</method>
+ <ruri>$pathprefix:/top-collection/calendar3/3.ics</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/depthreportsacl/3.xml</filepath>
+ </data>
+ </request>
+ <!-- Set calendar-free-busy-set to the calendars only -->
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleacl/1.xml</filepath>
+ </data>
+ </request>
+ </start>
+
+ <test-suite name='Schedule free-busy' ignore='no'>
+ <test name='1'>
+ <description>POST free busy</description>
+ <request user="$userid2:" pswd='$pswd2:' print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>mailto:user02 at example.com</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>mailto:user01 at example.com</value>
+ </header>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleacl/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>contains</name>
+ <value>FREEBUSY;FBTYPE=BUSY:20060101T060000Z/PT1H,20060101T100000Z/PT1H,20060101T1
+ 80000Z/PT1H,20060101T220000Z/PT1H</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <!-- Set calendar-free-busy-set back to default -->
+ <request>
+ <method>PROPPATCH</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data substitutions='yes'>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleacl/2.xml</filepath>
+ </data>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/schedulepostauto.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/schedulepostauto.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/schedulepostauto.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,1177 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test POST method in CalDAV</description>
+
+ <start>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ </request>
+ </start>
+
+ <test-suite name='POST non-recurring without conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Update to previous request - no auto-reply' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>One item in resource01 Inbox (old one deleted)</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Repeat request - no auto-reply' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>One item in resource01 Inbox (old one deleted)</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='POST non-recurring with conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/7.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='POST recurring with conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/9.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/10.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/10.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='POST recurring without conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/11.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/11.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/11.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/11.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>One item in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/12.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/13.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/13.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='POST non-recurring with recurring conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/14.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/14.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Two items in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>2</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/15.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/15.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='POST recurring with recurring conflict' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/16.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/16.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/16.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/16.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Two items in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>2</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/17.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/17.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='POST cancel non-recurring' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>Do POST</description>
+ <request>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, /principals/users/resource01</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/18.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>6</ruri>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>One item in user01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/18.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>One item in user02 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/18.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>One item in resource01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>GETNEW</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/scheduleauto/18.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Two items in resource01 Calendar</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleauto/6.xml</filepath>
+ </data>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>1</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>One item in resource01 Outbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>6</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>One item in user01 Inbox</description>
+ <request user="$useradmin:" pswd="$pswdadmin:" print-response="no">
+ <method>PROPFIND</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ <verify>
+ <callback>multistatusItems</callback>
+ <arg>
+ <name>count</name>
+ <value>6</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/outbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/inbox/</ruri>
+ </request>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>/calendars/users/resource01/calendar/</ruri>
+ </request>
+ </end>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/schedulepostnormal.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/schedulepostnormal.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/schedulepostnormal.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,197 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test normal POST operations in CalDAV</description>
+
+ <start>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/outbox/</ruri>
+ </request>
+ <request>
+ <method>DELETEALL</method>
+ <ruri>$pathprefix:/inbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix3:/outbox/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>DELETEALL</method>
+ <ruri>$pathprefix3:/inbox/</ruri>
+ </request>
+ </start>
+
+ <test-suite name="POSTs" ignore='no'>
+ <test name='1'>
+ <description>Initial REQUEST</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user02, $principal3:</value>
+ </header>
+ <ruri>$pathprefix:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Make sure resource exists and properties are set</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/2.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal2:</href><href xmlns="DAV:">$principal3:</href></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Make sure resource exists and properties are set</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix2:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>ignore</name>
+ <value>$pathprefix2:/inbox/</value>
+ </arg>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal2:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Make sure resource exists and properties are set</description>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>1</value>
+ </header>
+ <ruri>$pathprefix3:/inbox/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/3.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>ignore</name>
+ <value>$pathprefix3:/inbox/</value>
+ </arg>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavoriginator$<href xmlns="DAV:">$principal:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavrecipient$<href xmlns="DAV:">$principal3:</href></value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-state$<not-processed/></value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>REPLY from one</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>POST</method>
+ <header>
+ <name>Originator</name>
+ <value>/principals/users/user02</value>
+ </header>
+ <header>
+ <name>Recipient</name>
+ <value>/principals/users/user01</value>
+ </header>
+ <ruri>$pathprefix2:/outbox/</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/schedulenormal/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Location$^$pathprefix2:/outbox/[^/]+\.ics$</value>
+ </arg>
+ </verify>
+ <grablocation/>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Added: CalDAVTester/trunk/scripts/tests1/scheduleprops.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests1/scheduleprops.xml (rev 0)
+++ CalDAVTester/trunk/scripts/tests1/scheduleprops.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,57 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ DRI: Cyrus Daboo, cdaboo at apple.com
+ -->
+
+<caldavtest>
+ <description>Test properties defined by caldav-schedule</description>
+
+ <start/>
+
+ <test-suite name='Inbox/Outbox' ignore='no'>
+ <test name='1' ignore='no'>
+ <description>PROPFIND inbox/outbox URLs</description>
+ <request>
+ <method>PROPFIND</method>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <ruri>$principal:</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/scheduleprops/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>urn:ietf:params:xml:ns:caldavschedule-inbox-URL</value>
+ <value>urn:ietf:params:xml:ns:caldavschedule-outbox-URL</value>
+ <value>urn:ietf:params:xml:ns:caldavcalendar-user-address-set</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Deleted: CalDAVTester/trunk/serverinfo.dtd
===================================================================
--- CalDAVTester/trunk/serverinfo.dtd 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/serverinfo.dtd 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,32 +0,0 @@
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<!ELEMENT serverinfo (host, port, ssl?, calendarpath, user, pswd, substitutions, serverfilepath)? >
-
- <!ELEMENT host (#PCDATA)>
- <!ELEMENT port (#PCDATA)>
- <!ELEMENT ssl EMPTY>
- <!ELEMENT calendarpath (#PCDATA)>
- <!ELEMENT user (#PCDATA)>
- <!ELEMENT pswd (#PCDATA)>
- <!ELEMENT substitutions (substitution*)>
- <!ELEMENT substitution (key, value)>
- <!ELEMENT key (#PCDATA)>
- <!ELEMENT value (#PCDATA)>
- <!ELEMENT serverfilepath (#PCDATA)>
-
Deleted: CalDAVTester/trunk/serverinfo.xml
===================================================================
--- CalDAVTester/trunk/serverinfo.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/serverinfo.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,110 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE serverinfo SYSTEM "serverinfo.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<serverinfo>
- <host>localhost</host>
- <port>8008</port>
- <calendarpath>/calendars/users/user01/calendar</calendarpath>
- <user>user01</user>
- <pswd>user01</pswd>
- <substitutions>
- <substitution>
- <key>$host:</key>
- <value>http://localhost:8008</value>
- </substitution>
-
- <!-- user id for admin user -->
- <substitution>
- <key>$useradmin:</key>
- <value>admin</value>
- </substitution>
- <!-- password for admin user -->
- <substitution>
- <key>$pswdadmin:</key>
- <value>admin</value>
- </substitution>
- <!-- relative path to admin principal resource-->
- <substitution>
- <key>$principaladmin:</key>
- <value>/principals/users/admin</value>
- </substitution>
-
- <!-- relative path to first user principal resource-->
- <substitution>
- <key>$userid1:</key>
- <value>user01</value>
- </substitution>
- <!-- relative path to first user principal resource-->
- <substitution>
- <key>$principal:</key>
- <value>/principals/users/user01</value>
- </substitution>
- <!-- relative path to first user calendar home-->
- <substitution>
- <key>$pathprefix:</key>
- <value>/calendars/users/user01</value>
- </substitution>
-
- <!-- user id for second user -->
- <substitution>
- <key>$userid2:</key>
- <value>user02</value>
- </substitution>
- <!-- password for second user -->
- <substitution>
- <key>$pswd2:</key>
- <value>user02</value>
- </substitution>
- <!-- relative path to second user principal resource-->
- <substitution>
- <key>$principal2:</key>
- <value>/principals/users/user02</value>
- </substitution>
- <!-- relative path to second user calendar home-->
- <substitution>
- <key>$pathprefix2:</key>
- <value>/calendars/users/user02</value>
- </substitution>
-
- <!-- user id for third user -->
- <substitution>
- <key>$userid3:</key>
- <value>user03</value>
- </substitution>
- <!-- password for third user -->
- <substitution>
- <key>$pswd3:</key>
- <value>user03</value>
- </substitution>
- <!-- relative path to third user principal resource-->
- <substitution>
- <key>$principal3:</key>
- <value>/principals/users/user03</value>
- </substitution>
- <!-- relative path to third user calendar home-->
- <substitution>
- <key>$pathprefix3:</key>
- <value>/calendars/users/user03</value>
- </substitution>
- </substitutions>
- <serverfilepath>/Users/cyrusdaboo/Documents/Development/Apple/eclipse/CalendarServer/twistedcaldav/test/data/</serverfilepath>
-</serverinfo>
Copied: CalDAVTester/trunk/src (from rev 201, CalDAVTester/trunk/tests)
Modified: CalDAVTester/trunk/src/account.py
===================================================================
--- CalDAVTester/trunk/tests/account.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/account.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -20,13 +20,13 @@
Class that encapsulates the account information for populating a CalDAV server.
"""
+
+from utils import webdav
+import copy
import md5
import os
-from utils import webdav
-import copy
+import src.xmlDefs
-import tests.xmlDefs
-
class account( object ):
"""
Maintains information about an account on the server.
@@ -86,19 +86,19 @@
webdav.Delete(server_info, path).run()
def parseXML( self, node ):
- self.count = node.getAttribute( tests.xmlDefs.ATTR_COUNT )
+ self.count = node.getAttribute( src.xmlDefs.ATTR_COUNT )
if self.count == '':
- self.count = tests.xmlDefs.ATTR_DEFAULT_COUNT
+ self.count = src.xmlDefs.ATTR_DEFAULT_COUNT
else:
self.count = int(self.count)
- self.countarg = node.getAttribute( tests.xmlDefs.ATTR_COUNTARG )
+ self.countarg = node.getAttribute( src.xmlDefs.ATTR_COUNTARG )
if self.countarg == '':
- self.countarg = tests.xmlDefs.ATTR_DEFAULT_COUNTARG
+ self.countarg = src.xmlDefs.ATTR_DEFAULT_COUNTARG
for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_NAME:
+ if child._get_localName() == src.xmlDefs.ELEMENT_NAME:
self.name = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_CALENDARS:
+ elif child._get_localName() == src.xmlDefs.ELEMENT_CALENDARS:
cal = calendar(self)
cal.parseXML(child)
self.calendars.extend(cal.expand())
@@ -181,28 +181,28 @@
webdav.Put(server_info, rpath, "text/calendar; charset=utf-8", data).run()
def parseXML( self, node ):
- self.count = node.getAttribute( tests.xmlDefs.ATTR_COUNT )
+ self.count = node.getAttribute( src.xmlDefs.ATTR_COUNT )
if self.count == '':
- self.count = tests.xmlDefs.ATTR_DEFAULT_COUNT
+ self.count = src.xmlDefs.ATTR_DEFAULT_COUNT
else:
self.count = int(self.count)
- self.countarg = node.getAttribute( tests.xmlDefs.ATTR_COUNTARG )
+ self.countarg = node.getAttribute( src.xmlDefs.ATTR_COUNTARG )
if self.countarg == '':
- self.countarg = tests.xmlDefs.ATTR_DEFAULT_COUNTARG
- self.dataall = tests.xmlDefs.ATTR_MODE == tests.xmlDefs.ATTR_VALUE_ALL
- self.datasubstitute = tests.xmlDefs.ATTR_SUBSTITUTIONS == tests.xmlDefs.ATTR_VALUE_YES
+ self.countarg = src.xmlDefs.ATTR_DEFAULT_COUNTARG
+ self.dataall = src.xmlDefs.ATTR_MODE == src.xmlDefs.ATTR_VALUE_ALL
+ self.datasubstitute = src.xmlDefs.ATTR_SUBSTITUTIONS == src.xmlDefs.ATTR_VALUE_YES
for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_NAME:
+ if child._get_localName() == src.xmlDefs.ELEMENT_NAME:
self.name = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_DATASOURCE:
- self.datacount = child.getAttribute( tests.xmlDefs.ATTR_COUNT )
+ elif child._get_localName() == src.xmlDefs.ELEMENT_DATASOURCE:
+ self.datacount = child.getAttribute( src.xmlDefs.ATTR_COUNT )
if self.datacount == '':
- self.datacount = tests.xmlDefs.ATTR_DEFAULT_COUNT
+ self.datacount = src.xmlDefs.ATTR_DEFAULT_COUNT
else:
self.datacount = int(self.datacount)
- self.datacountarg = child.getAttribute( tests.xmlDefs.ATTR_COUNTARG )
+ self.datacountarg = child.getAttribute( src.xmlDefs.ATTR_COUNTARG )
if self.datacountarg == '':
- self.datacountarg = tests.xmlDefs.ATTR_DEFAULT_COUNTARG
+ self.datacountarg = src.xmlDefs.ATTR_DEFAULT_COUNTARG
self.datasource = child.firstChild.data
Deleted: CalDAVTester/trunk/src/caldavtest.py
===================================================================
--- CalDAVTester/trunk/tests/caldavtest.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/caldavtest.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,454 +0,0 @@
-##
-# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# DRI: Cyrus Daboo, cdaboo at apple.com
-##
-
-"""
-Class to encapsulate a single caldav test run.
-"""
-
-from tests.request import data
-from tests.request import request
-from tests.request import stats
-from tests.testsuite import testsuite
-from xml.dom.minicompat import NodeList
-from xml.dom.minidom import Node
-import httplib
-import os
-import rfc822
-import socket
-import tests.xmlDefs
-import time
-import xattr
-import xml.dom.minidom
-
-STATUSTXT_WIDTH = 60
-
-class caldavtest(object):
- __slots__ = ['manager', 'name', 'description', 'ignore_all', 'start_requests', 'end_requests', 'end_deletes', 'suites', 'grabbedlocation']
-
- def __init__( self, manager, name ):
- self.manager = manager
- self.name = name
- self.description = ""
- self.ignore_all = False
- self.start_requests = []
- self.end_requests = []
- self.end_deletes = []
- self.suites = []
- self.grabbedlocation = None
-
- def run( self ):
- try:
- self.manager.log("----- Running CalDAV Tests from \"%s\"... -----" % self.name, before=1)
- self.dorequests( "Executing Start Requests...", self.start_requests, False, True )
- ok, failed, ignored = self.run_tests()
- self.doenddelete( "Deleting Requests..." )
- self.dorequests( "Executing End Requests...", self.end_requests, False )
- return ok, failed, ignored
- except socket.error, msg:
- self.manager.log("FATAL ERROR: " + msg.args[1], before=2)
- return 0, 1, 0
-
- def run_tests( self ):
- ok = 0
- failed = 0
- ignored = 0
- for suite in self.suites:
- o, f, i = self.run_test_suite( suite )
- ok += o
- failed += f
- ignored += i
- return (ok, failed, ignored)
-
- def run_test_suite( self, suite ):
- descriptor = " Test Suite: %s" % suite.name
- descriptor += " " * max(1, STATUSTXT_WIDTH - len(descriptor))
- self.manager.log("%s" % (descriptor,), before=1, after=0)
- ok = 0
- failed = 0
- ignored = 0
- if suite.ignore:
- self.manager.log("[IGNORED]")
- ignored = len(suite.tests)
- else:
- self.manager.log("")
- for test in suite.tests:
- result = self.run_test( test )
- if result == "t":
- ok += 1
- elif result == "f":
- failed += 1
- else:
- ignored += 1
- self.manager.log("Suite Results: %d PASSED, %d FAILED, %d IGNORED" % (ok, failed, ignored), before=1, indent=4)
- return (ok, failed, ignored)
-
- def run_test( self, test ):
- descriptor = " Test: %s" % test.name
- descriptor += " " * max(1, STATUSTXT_WIDTH - len(descriptor))
- self.manager.log("%s" % (descriptor,), before=1, after=0)
- if test.ignore:
- self.manager.log("[IGNORED]")
- return "i"
- else:
- result = False
- if test.stats:
- reqstats = stats()
- else:
- reqstats = None
- for ctr in range(test.count): #@UnusedVariable
- for req in test.requests:
- result, resulttxt, response, respdata = self.dorequest( req, test.details, True, False, reqstats )
- if not result:
- break
- self.manager.log(["[FAILED]", "[OK]"][result])
- if len(resulttxt) > 0:
- self.manager.log(resulttxt)
- if result and test.stats:
- self.manager.log("Total Time: %.3f secs" % (reqstats.totaltime,), indent=8)
- self.manager.log("Average Time: %.3f secs" % (reqstats.totaltime/reqstats.count,), indent=8)
- return ["f", "t"][result]
-
- def dorequests( self, description, list, doverify = True, forceverify = False ):
- if len(list) == 0:
- return True
- description += " " * max(1, STATUSTXT_WIDTH - len(description))
- self.manager.log(description, before=1, after=0)
- for req in list:
- result, resulttxt, response, respdata = self.dorequest( req, False, doverify, forceverify )
- if not result:
- break
- self.manager.log(["[FAILED]", "[OK]"][result])
- if len(resulttxt) > 0:
- self.manager.log(resulttxt)
- return result
-
- def dofindall( self, collection):
- hrefs = []
- req = request()
- req.method = "PROPFIND"
- req.ruri = collection[0]
- req.headers["Depth"] = "1"
- if len(collection[1]):
- req.user = collection[1]
- if len(collection[2]):
- req.pswd = collection[2]
- req.data = data()
- req.data.value = """<?xml version="1.0" encoding="utf-8" ?>
-<D:propfind xmlns:D="DAV:">
-<D:prop>
-<D:getetag/>
-</D:prop>
-</D:propfind>
-"""
- req.data.content_type = "text/xml"
- result, resulttxt, response, respdata = self.dorequest( req, False, False )
- if result and (response is not None) and (response.status == 207) and (respdata is not None):
- doc = xml.dom.minidom.parseString( respdata )
-
- def ElementsByName(parent, nsURI, localName):
- rc = NodeList()
- for node in parent.childNodes:
- if node.nodeType == Node.ELEMENT_NODE:
- if ((localName == "*" or node.localName == localName) and
- (nsURI == "*" or node.namespaceURI == nsURI)):
- rc.append(node)
- return rc
-
- for response in doc.getElementsByTagNameNS( "DAV:", "response" ):
-
- # Get href for this response
- href = ElementsByName(response, "DAV:", "href")
- if len(href) != 1:
- return False, " Wrong number of DAV:href elements\n"
- if href[0].firstChild is not None:
- href = href[0].firstChild.data
- if href != req.ruri:
- hrefs.append((href, collection[1], collection[2]) )
- return hrefs
-
- def dodeleteall( self, deletes ):
- if len(deletes) == 0:
- return True
- for deleter in deletes:
- req = request()
- req.method = "DELETE"
- req.ruri = deleter[0]
- if len(deleter[1]):
- req.user = deleter[1]
- if len(deleter[2]):
- req.pswd = deleter[2]
- self.dorequest( req, False, False )
-
- def dofindnew( self, collection):
- hresult = ""
- req = request()
- req.method = "PROPFIND"
- req.ruri = collection[0]
- req.headers["Depth"] = "1"
- if len(collection[1]):
- req.user = collection[1]
- if len(collection[2]):
- req.pswd = collection[2]
- req.data = data()
- req.data.value = """<?xml version="1.0" encoding="utf-8" ?>
-<D:propfind xmlns:D="DAV:">
-<D:prop>
-<D:getetag/>
-<D:getlastmodified/>
-</D:prop>
-</D:propfind>
-"""
- req.data.content_type = "text/xml"
- result, resulttxt, response, respdata = self.dorequest( req, False, False )
- if result and (response is not None) and (response.status == 207) and (respdata is not None):
- doc = xml.dom.minidom.parseString( respdata )
-
- def ElementsByName(parent, nsURI, localName):
- rc = NodeList()
- for node in parent.childNodes:
- if node.nodeType == Node.ELEMENT_NODE:
- if ((localName == "*" or node.localName == localName) and
- (nsURI == "*" or node.namespaceURI == nsURI)):
- rc.append(node)
- return rc
-
- latest = 0
- for response in doc.getElementsByTagNameNS( "DAV:", "response" ):
-
- # Get href for this response
- href = ElementsByName(response, "DAV:", "href")
- if len(href) != 1:
- return False, " Wrong number of DAV:href elements\n"
- if href[0].firstChild is not None:
- href = href[0].firstChild.data
- if href != req.ruri:
-
- # Get all property status
- propstatus = ElementsByName(response, "DAV:", "propstat")
- for props in propstatus:
- # Determine status for this propstat
- status = ElementsByName(props, "DAV:", "status")
- if len(status) == 1:
- statustxt = status[0].firstChild.data
- status = False
- if statustxt.startswith("HTTP/1.1 ") and (len(statustxt) >= 10):
- status = (statustxt[9] == "2")
- else:
- status = False
-
- # Get properties for this propstat
- prop = ElementsByName(props, "DAV:", "prop")
- for el in prop:
-
- # Get properties for this propstat
- glm = ElementsByName(el, "DAV:", "getlastmodified")
- if len(glm) != 1:
- continue
- if glm[0].firstChild is not None:
- value = glm[0].firstChild.data
- value = rfc822.parsedate(value)
- value = time.mktime(value)
- if value > latest:
- hresult = href
- latest = value
-
- return hresult
-
- def doenddelete( self, description ):
- if len(self.end_deletes) == 0:
- return True
- description += " " * max(1, STATUSTXT_WIDTH - len(description))
- self.manager.log(description, before=1, after=0)
- for deleter in self.end_deletes:
- req = request()
- req.method = "DELETE"
- req.ruri = deleter[0]
- if len(deleter[1]):
- req.user = deleter[1]
- if len(deleter[2]):
- req.pswd = deleter[2]
- self.dorequest( req, False, False )
- self.manager.log("[DONE]")
-
- def doaccess(self, ruri, enable):
- """
- We have to set the xattr WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}access-disabled
- on the resource pointed to by the ruri. Strictly speaking only the server know how to map from a uri to a file
- path, so we have to cheat!
- """
- if self.manager.server_info.serverfilepath:
- filename = os.path.join(self.manager.server_info.serverfilepath, ruri[1:])
- if os.path.exists(filename):
- attrs = xattr.xattr(filename)
- if enable:
- del attrs["WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}access-disabled"]
- else:
- attrs["WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}access-disabled"] = "yes"
- return True
- return False
-
- def dorequest( self, req, details=False, doverify = True, forceverify = False, stats = None ):
-
- # Special check for DELETEALL
- if req.method == "DELETEALL":
- collection = (req.ruri, req.user, req.pswd)
- hrefs = self.dofindall(collection)
- self.dodeleteall(hrefs)
- return True, "", None, None
-
- # Special check for ACCESS-DISABLE
- if req.method == "ACCESS-DISABLE":
- if self.doaccess(req.ruri, False):
- return True, "", None, None
- else:
- return False, "Could not set access-disabled xattr on file", None, None
- elif req.method == "ACCESS-ENABLE":
- if self.doaccess(req.ruri, True):
- return True, "", None, None
- else:
- return False, "Could not remove access-disabled xattr on file", None, None
-
- # Special for delay
- if req.method == "DELAY":
- # self.ruri contains a numeric delay in seconds
- delay = int(req.ruri)
- starttime = time.time()
- while (time.time() < starttime + delay):
- pass
- return True, "", None, None
-
- # Special for LISTNEW
- if req.method == "LISTNEW":
- collection = (req.ruri, req.user, req.pswd)
- self.grabbedlocation = self.dofindnew(collection)
- return True, "", None, None
-
- # Special for GETNEW
- if req.method == "GETNEW":
- collection = (req.ruri, req.user, req.pswd)
- self.grabbedlocation = self.dofindnew(collection)
- req.method = "GET"
- req.ruri = "$"
-
- result = True;
- resulttxt = ""
- response = None
- respdata = None
-
- # Cache delayed delete
- if req.end_delete:
- self.end_deletes.append( (req.ruri, req.user, req.pswd) )
-
- method = req.method
- uri = req.getURI( self.manager.server_info )
- if (uri == "$"):
- uri = self.grabbedlocation
- headers = req.getHeaders( self.manager.server_info )
- data = req.getData()
-
- if details:
- resulttxt += " %s: %s\n" % ( method, uri )
-
- # Start request timer if required
- if stats:
- stats.startTimer()
-
- # Do the http request
- if self.manager.server_info.ssl:
- http = httplib.HTTPSConnection( self.manager.server_info.host, self.manager.server_info.port )
- else:
- http = httplib.HTTPConnection( self.manager.server_info.host, self.manager.server_info.port )
- try:
- http.request( method, uri, data, headers )
-
- response = http.getresponse()
-
- respdata = None
- respdata = response.read()
-
- finally:
- http.close()
-
- # Stop request timer before verification
- if stats:
- stats.endTimer()
-
- if doverify and (respdata != None):
- result, txt = self.verifyrequest( req, uri, response, respdata )
- resulttxt += txt
- elif forceverify:
- result = (response.status / 100 == 2)
- if not result:
- resulttxt += "Status Code Error: %d" % response.status
-
- if req.print_response:
- resulttxt += "\n-------BEGIN:RESPONSE-------\n"
- resulttxt += "Status = %d\n" % response.status
- resulttxt += str(response.msg) + "\n" + respdata
- resulttxt += "\n--------END:RESPONSE--------\n"
-
- if req.grablocation:
- hdrs = response.msg.getheaders("Location")
- if hdrs:
- self.grabbedlocation = hdrs[0]
-
- return result, resulttxt, response, respdata
-
- def verifyrequest( self, req, uri, response, respdata ):
-
- result = True;
- resulttxt = ""
-
- # check for response
- if len(req.verifiers) == 0:
- return result, resulttxt
- else:
- result = True
- resulttxt = ""
- for verifier in req.verifiers:
- iresult, iresulttxt = verifier.doVerify(uri, response, respdata)
- if not iresult:
- result = False
- if len(resulttxt):
- resulttxt += "\n"
- resulttxt += "Failed Verifier: %s\n" % verifier.callback
- resulttxt += iresulttxt
- else:
- if len(resulttxt):
- resulttxt += "\n"
- resulttxt += "Passed Verifier: %s\n" % verifier.callback
-
- if result:
- resulttxt = ""
- return result, resulttxt
-
- def parseXML( self, node ):
- self.ignore_all = node.getAttribute( tests.xmlDefs.ATTR_IGNORE_ALL ) == tests.xmlDefs.ATTR_VALUE_YES
-
- for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_DESCRIPTION:
- self.description = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_START:
- self.start_requests = request.parseList( child )
- elif child._get_localName() == tests.xmlDefs.ELEMENT_TESTSUITE:
- suite = testsuite()
- suite.parseXML( child )
- self.suites.append( suite )
- elif child._get_localName() == tests.xmlDefs.ELEMENT_END:
- self.end_requests = request.parseList( child )
-
Copied: CalDAVTester/trunk/src/caldavtest.py (from rev 239, CalDAVTester/trunk/tests/caldavtest.py)
===================================================================
--- CalDAVTester/trunk/src/caldavtest.py (rev 0)
+++ CalDAVTester/trunk/src/caldavtest.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,494 @@
+##
+# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Cyrus Daboo, cdaboo at apple.com
+##
+
+"""
+Class to encapsulate a single caldav test run.
+"""
+
+from src.manager import manager
+from src.request import data
+from src.request import request
+from src.request import stats
+from src.testsuite import testsuite
+from xml.dom.minicompat import NodeList
+from xml.dom.minidom import Node
+import httplib
+import os
+import rfc822
+import socket
+import src.xmlDefs
+import time
+import xattr
+import xml.dom.minidom
+
+STATUSTXT_WIDTH = 60
+
+class caldavtest(object):
+ __slots__ = ['manager', 'name', 'description', 'ignore_all', 'start_requests', 'end_requests', 'end_deletes', 'suites', 'grabbedlocation']
+
+ def __init__( self, manager, name ):
+ self.manager = manager
+ self.name = name
+ self.description = ""
+ self.ignore_all = False
+ self.start_requests = []
+ self.end_requests = []
+ self.end_deletes = []
+ self.suites = []
+ self.grabbedlocation = None
+
+ def run( self ):
+ try:
+ self.manager.log(manager.LOG_HIGH, "----- Running CalDAV Tests from \"%s\"... -----" % self.name, before=1)
+ self.dorequests( "Executing Start Requests...", self.start_requests, False, True )
+ ok, failed, ignored = self.run_tests()
+ self.doenddelete( "Deleting Requests..." )
+ self.dorequests( "Executing End Requests...", self.end_requests, False )
+ return ok, failed, ignored
+ except socket.error, msg:
+ self.manager.log(manager.LOG_HIGH, "FATAL ERROR: " + msg.args[1], before=2)
+ return 0, 1, 0
+
+ def run_tests( self ):
+ ok = 0
+ failed = 0
+ ignored = 0
+ for suite in self.suites:
+ o, f, i = self.run_test_suite( suite )
+ ok += o
+ failed += f
+ ignored += i
+ return (ok, failed, ignored)
+
+ def run_test_suite( self, suite ):
+ descriptor = " Test Suite: %s" % suite.name
+ descriptor += " " * max(1, STATUSTXT_WIDTH - len(descriptor))
+ self.manager.log(manager.LOG_HIGH, "%s" % (descriptor,), before=1, after=0)
+ ok = 0
+ failed = 0
+ ignored = 0
+ if suite.ignore:
+ self.manager.log(manager.LOG_HIGH, "[IGNORED]")
+ ignored = len(suite.tests)
+ else:
+ self.manager.log(manager.LOG_HIGH, "")
+ for test in suite.tests:
+ result = self.run_test( test )
+ if result == "t":
+ ok += 1
+ elif result == "f":
+ failed += 1
+ else:
+ ignored += 1
+ self.manager.log(manager.LOG_HIGH, "Suite Results: %d PASSED, %d FAILED, %d IGNORED" % (ok, failed, ignored), before=1, indent=4)
+ return (ok, failed, ignored)
+
+ def run_test( self, test ):
+ descriptor = " Test: %s" % test.name
+ descriptor += " " * max(1, STATUSTXT_WIDTH - len(descriptor))
+ self.manager.log(manager.LOG_HIGH, "%s" % (descriptor,), before=1, after=0)
+ if test.ignore:
+ self.manager.log(manager.LOG_HIGH, "[IGNORED]")
+ return "i"
+ else:
+ result = False
+ if test.stats:
+ reqstats = stats()
+ else:
+ reqstats = None
+ for ctr in range(test.count): #@UnusedVariable
+ for req in test.requests:
+ result, resulttxt, response, respdata = self.dorequest( req, test.details, True, False, reqstats )
+ if not result:
+ break
+ self.manager.log(manager.LOG_HIGH, ["[FAILED]", "[OK]"][result])
+ if len(resulttxt) > 0:
+ self.manager.log(manager.LOG_HIGH, resulttxt)
+ if result and test.stats:
+ self.manager.log(manager.LOG_MEDIUM, "Total Time: %.3f secs" % (reqstats.totaltime,), indent=8)
+ self.manager.log(manager.LOG_MEDIUM, "Average Time: %.3f secs" % (reqstats.totaltime/reqstats.count,), indent=8)
+ return ["f", "t"][result]
+
+ def dorequests( self, description, list, doverify = True, forceverify = False ):
+ if len(list) == 0:
+ return True
+ description += " " * max(1, STATUSTXT_WIDTH - len(description))
+ self.manager.log(manager.LOG_HIGH, description, before=1, after=0)
+ ctr = 1
+ for req in list:
+ result, resulttxt, response, respdata = self.dorequest( req, False, doverify, forceverify )
+ if not result:
+ resulttxt += "\nFailure during multiple requests #%d out of %d, request=%s" % (ctr, len(list), str(req))
+ break
+ ctr += 1
+ self.manager.log(manager.LOG_HIGH, ["[FAILED]", "[OK]"][result])
+ if len(resulttxt) > 0:
+ self.manager.log(manager.LOG_HIGH, resulttxt)
+ return result
+
+ def dofindall( self, collection):
+ hrefs = []
+ req = request()
+ req.method = "PROPFIND"
+ req.ruri = collection[0]
+ req.headers["Depth"] = "1"
+ if len(collection[1]):
+ req.user = collection[1]
+ if len(collection[2]):
+ req.pswd = collection[2]
+ req.data = data()
+ req.data.value = """<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getetag/>
+</D:prop>
+</D:propfind>
+"""
+ req.data.content_type = "text/xml"
+ result, resulttxt, response, respdata = self.dorequest( req, False, False )
+ if result and (response is not None) and (response.status == 207) and (respdata is not None):
+ doc = xml.dom.minidom.parseString( respdata )
+
+ def ElementsByName(parent, nsURI, localName):
+ rc = NodeList()
+ for node in parent.childNodes:
+ if node.nodeType == Node.ELEMENT_NODE:
+ if ((localName == "*" or node.localName == localName) and
+ (nsURI == "*" or node.namespaceURI == nsURI)):
+ rc.append(node)
+ return rc
+
+ for response in doc.getElementsByTagNameNS( "DAV:", "response" ):
+
+ # Get href for this response
+ href = ElementsByName(response, "DAV:", "href")
+ if len(href) != 1:
+ return False, " Wrong number of DAV:href elements\n"
+ if href[0].firstChild is not None:
+ href = href[0].firstChild.data
+ if href != req.ruri:
+ hrefs.append((href, collection[1], collection[2]) )
+ return hrefs
+
+ def dodeleteall( self, deletes ):
+ if len(deletes) == 0:
+ return True
+ for deleter in deletes:
+ req = request()
+ req.method = "DELETE"
+ req.ruri = deleter[0]
+ if len(deleter[1]):
+ req.user = deleter[1]
+ if len(deleter[2]):
+ req.pswd = deleter[2]
+ self.dorequest( req, False, False )
+
+ def dofindnew( self, collection):
+ hresult = ""
+ req = request()
+ req.method = "PROPFIND"
+ req.ruri = collection[0]
+ req.headers["Depth"] = "1"
+ if len(collection[1]):
+ req.user = collection[1]
+ if len(collection[2]):
+ req.pswd = collection[2]
+ req.data = data()
+ req.data.value = """<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:getetag/>
+<D:getlastmodified/>
+</D:prop>
+</D:propfind>
+"""
+ req.data.content_type = "text/xml"
+ result, resulttxt, response, respdata = self.dorequest( req, False, False )
+ if result and (response is not None) and (response.status == 207) and (respdata is not None):
+ doc = xml.dom.minidom.parseString( respdata )
+
+ def ElementsByName(parent, nsURI, localName):
+ rc = NodeList()
+ for node in parent.childNodes:
+ if node.nodeType == Node.ELEMENT_NODE:
+ if ((localName == "*" or node.localName == localName) and
+ (nsURI == "*" or node.namespaceURI == nsURI)):
+ rc.append(node)
+ return rc
+
+ latest = 0
+ for response in doc.getElementsByTagNameNS( "DAV:", "response" ):
+
+ # Get href for this response
+ href = ElementsByName(response, "DAV:", "href")
+ if len(href) != 1:
+ return False, " Wrong number of DAV:href elements\n"
+ if href[0].firstChild is not None:
+ href = href[0].firstChild.data
+ if href != req.ruri:
+
+ # Get all property status
+ propstatus = ElementsByName(response, "DAV:", "propstat")
+ for props in propstatus:
+ # Determine status for this propstat
+ status = ElementsByName(props, "DAV:", "status")
+ if len(status) == 1:
+ statustxt = status[0].firstChild.data
+ status = False
+ if statustxt.startswith("HTTP/1.1 ") and (len(statustxt) >= 10):
+ status = (statustxt[9] == "2")
+ else:
+ status = False
+
+ # Get properties for this propstat
+ prop = ElementsByName(props, "DAV:", "prop")
+ for el in prop:
+
+ # Get properties for this propstat
+ glm = ElementsByName(el, "DAV:", "getlastmodified")
+ if len(glm) != 1:
+ continue
+ if glm[0].firstChild is not None:
+ value = glm[0].firstChild.data
+ value = rfc822.parsedate(value)
+ value = time.mktime(value)
+ if value > latest:
+ hresult = href
+ latest = value
+
+ return hresult
+
+ def doenddelete( self, description ):
+ if len(self.end_deletes) == 0:
+ return True
+ description += " " * max(1, STATUSTXT_WIDTH - len(description))
+ self.manager.log(manager.LOG_HIGH, description, before=1, after=0)
+ for deleter in self.end_deletes:
+ req = request()
+ req.method = "DELETE"
+ req.ruri = deleter[0]
+ if len(deleter[1]):
+ req.user = deleter[1]
+ if len(deleter[2]):
+ req.pswd = deleter[2]
+ self.dorequest( req, False, False )
+ self.manager.log(manager.LOG_HIGH, "[DONE]")
+
+ def doaccess(self, ruri, enable):
+ """
+ We have to set the xattr WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}access-disabled
+ on the resource pointed to by the ruri. Strictly speaking only the server know how to map from a uri to a file
+ path, so we have to cheat!
+ """
+ if self.manager.server_info.serverfilepath:
+ filename = os.path.join(self.manager.server_info.serverfilepath, ruri[1:])
+ if os.path.exists(filename):
+ attrs = xattr.xattr(filename)
+ if enable:
+ del attrs["WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}caldav-access-disabled"]
+ else:
+ attrs["WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}caldav-access-disabled"] = "yes"
+ return True
+ return False
+
+ def doquota(self, ruri, size):
+ """
+ We have to set the xattr WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}access-disabled
+ on the resource pointed to by the ruri. Strictly speaking only the server know how to map from a uri to a file
+ path, so we have to cheat!
+ """
+ if self.manager.server_info.serverfilepath:
+ filename = os.path.join(self.manager.server_info.serverfilepath, ruri[1:])
+ if os.path.exists(filename):
+ attrs = xattr.xattr(filename)
+ if size is None:
+ del attrs["WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}quota-root"]
+ else:
+ attrs["WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}quota-root"] = \
+ "<?xml version='1.0' encoding='UTF-8'?>\n" + \
+ "<quota-root xmlns='http://twistedmatrix.com/xml_namespace/dav/private/'>" + \
+ str(size) + \
+ "</quota-root>"
+ return True
+ return False
+
+ def dorequest( self, req, details=False, doverify = True, forceverify = False, stats = None ):
+
+ # Special check for DELETEALL
+ if req.method == "DELETEALL":
+ collection = (req.ruri, req.user, req.pswd)
+ hrefs = self.dofindall(collection)
+ self.dodeleteall(hrefs)
+ return True, "", None, None
+
+ # Special check for ACCESS-DISABLE
+ if req.method == "ACCESS-DISABLE":
+ if self.doaccess(req.ruri, False):
+ return True, "", None, None
+ else:
+ return False, "Could not set caldav-access-disabled xattr on file", None, None
+ elif req.method == "ACCESS-ENABLE":
+ if self.doaccess(req.ruri, True):
+ return True, "", None, None
+ else:
+ return False, "Could not remove caldav-access-disabled xattr on file", None, None
+
+ # Special check for QUOTA
+ if req.method == "QUOTA-DISABLE":
+ if self.doquota(req.ruri, None):
+ return True, "", None, None
+ else:
+ return False, "Could remove quota-root xattr on file", None, None
+ elif req.method.startswith("QUOTA-ENABLE-"):
+ if self.doquota(req.ruri, req.method[len("QUOTA-ENABLE-"):]):
+ return True, "", None, None
+ else:
+ return False, "Could not set quota-root xattr on file", None, None
+
+ # Special for delay
+ if req.method == "DELAY":
+ # self.ruri contains a numeric delay in seconds
+ delay = int(req.ruri)
+ starttime = time.time()
+ while (time.time() < starttime + delay):
+ pass
+ return True, "", None, None
+
+ # Special for LISTNEW
+ if req.method == "LISTNEW":
+ collection = (req.ruri, req.user, req.pswd)
+ self.grabbedlocation = self.dofindnew(collection)
+ return True, "", None, None
+
+ # Special for GETNEW
+ if req.method == "GETNEW":
+ collection = (req.ruri, req.user, req.pswd)
+ self.grabbedlocation = self.dofindnew(collection)
+ req.method = "GET"
+ req.ruri = "$"
+
+ result = True;
+ resulttxt = ""
+ response = None
+ respdata = None
+
+ # Cache delayed delete
+ if req.end_delete:
+ self.end_deletes.append( (req.ruri, req.user, req.pswd) )
+
+ method = req.method
+ uri = req.getURI( self.manager.server_info )
+ if (uri == "$"):
+ uri = self.grabbedlocation
+ headers = req.getHeaders( self.manager.server_info )
+ data = req.getData()
+
+ if details:
+ resulttxt += " %s: %s\n" % ( method, uri )
+
+ # Start request timer if required
+ if stats:
+ stats.startTimer()
+
+ # Do the http request
+ if self.manager.server_info.ssl:
+ http = httplib.HTTPSConnection( self.manager.server_info.host, self.manager.server_info.port )
+ else:
+ http = httplib.HTTPConnection( self.manager.server_info.host, self.manager.server_info.port )
+ try:
+ #self.manager.log(manager.LOG_LOW, "Sending request")
+ http.request( method, uri, data, headers )
+ #self.manager.log(manager.LOG_LOW, "Sent request")
+
+ response = http.getresponse()
+
+ respdata = None
+ respdata = response.read()
+ #self.manager.log(manager.LOG_LOW, "Read response")
+
+ finally:
+ http.close()
+
+ # Stop request timer before verification
+ if stats:
+ stats.endTimer()
+
+ if doverify and (respdata != None):
+ result, txt = self.verifyrequest( req, uri, response, respdata )
+ resulttxt += txt
+ elif forceverify:
+ result = (response.status / 100 == 2)
+ if not result:
+ resulttxt += "Status Code Error: %d" % response.status
+
+ if req.print_response:
+ resulttxt += "\n-------BEGIN:RESPONSE-------\n"
+ resulttxt += "Status = %d\n" % response.status
+ resulttxt += str(response.msg) + "\n" + respdata
+ resulttxt += "\n--------END:RESPONSE--------\n"
+
+ if req.grablocation:
+ hdrs = response.msg.getheaders("Location")
+ if hdrs:
+ self.grabbedlocation = hdrs[0]
+
+ return result, resulttxt, response, respdata
+
+ def verifyrequest( self, req, uri, response, respdata ):
+
+ result = True;
+ resulttxt = ""
+
+ # check for response
+ if len(req.verifiers) == 0:
+ return result, resulttxt
+ else:
+ result = True
+ resulttxt = ""
+ for verifier in req.verifiers:
+ iresult, iresulttxt = verifier.doVerify(uri, response, respdata)
+ if not iresult:
+ result = False
+ if len(resulttxt):
+ resulttxt += "\n"
+ resulttxt += "Failed Verifier: %s\n" % verifier.callback
+ resulttxt += iresulttxt
+ else:
+ if len(resulttxt):
+ resulttxt += "\n"
+ resulttxt += "Passed Verifier: %s\n" % verifier.callback
+
+ if result:
+ resulttxt = ""
+ return result, resulttxt
+
+ def parseXML( self, node ):
+ self.ignore_all = node.getAttribute( src.xmlDefs.ATTR_IGNORE_ALL ) == src.xmlDefs.ATTR_VALUE_YES
+
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_DESCRIPTION:
+ self.description = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_START:
+ self.start_requests = request.parseList( self.manager, child )
+ elif child._get_localName() == src.xmlDefs.ELEMENT_TESTSUITE:
+ suite = testsuite(self.manager)
+ suite.parseXML( child )
+ self.suites.append( suite )
+ elif child._get_localName() == src.xmlDefs.ELEMENT_END:
+ self.end_requests = request.parseList( self.manager, child )
+
Deleted: CalDAVTester/trunk/src/manager.py
===================================================================
--- CalDAVTester/trunk/tests/manager.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/manager.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,203 +0,0 @@
-##
-# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# DRI: Cyrus Daboo, cdaboo at apple.com
-##
-
-"""
-Class to manage the testing process.
-"""
-
-import time
-import httplib
-from tests.populate import populate
-import os
-
-from tests.caldavtest import caldavtest
-from tests.serverinfo import serverinfo
-import getopt
-import sys
-import tests.xmlDefs
-import xml.dom.minidom
-
-# Exceptions
-
-EX_INVALID_CONFIG_FILE = "Invalid Config File"
-EX_FAILED_REQUEST = "HTTP Request Failed"
-
-class manager(object):
-
- """
- Main class that runs test suites defined in an XML config file.
- """
- __slots__ = ['server_info', 'populator', 'depopulate', 'tests', 'textMode']
-
- def __init__( self, text=True ):
- self.server_info = serverinfo()
- self.populator = None
- self.depopulate = False
- self.tests = []
- self.textMode = text
-
- def log(self, str, indent = 0, indentStr = " ", after = 1, before = 0):
- if self.textMode:
- if before:
- print "\n" * before,
- if indent:
- print indentStr * indent,
- print str,
- if after:
- print "\n" * after,
-
- def readXML( self, serverfile, populatorfile, testfiles, all ):
-
- self.log("Reading Server Info from \"%s\"" % serverfile, after=2)
-
- # Open and parse the server config file
- fd = open(serverfile, "r")
- doc = xml.dom.minidom.parse( fd )
- fd.close()
-
- # Verify that top-level element is correct
- serverinfo_node = doc._get_documentElement()
- if serverinfo_node._get_localName() != tests.xmlDefs.ELEMENT_SERVERINFO:
- raise EX_INVALID_CONFIG_FILE
- if not serverinfo_node.hasChildNodes():
- raise EX_INVALID_CONFIG_FILE
- self.server_info.parseXML(serverinfo_node)
-
- # Open and parse the populator config file
- if populatorfile:
- self.log("Reading Populator Info from \"%s\"" % populatorfile, after=2)
-
- fd = open(populatorfile, "r")
- doc = xml.dom.minidom.parse( fd )
- fd.close()
-
- # Verify that top-level element is correct
- populate_node = doc._get_documentElement()
- if populate_node._get_localName() != tests.xmlDefs.ELEMENT_POPULATE:
- raise EX_INVALID_CONFIG_FILE
- if not populate_node.hasChildNodes():
- raise EX_INVALID_CONFIG_FILE
- self.populator = populate(self)
- self.populator.parseXML(populate_node)
-
- for testfile in testfiles:
- # Open and parse the config file
- fd = open( testfile, "r" )
- doc = xml.dom.minidom.parse( fd )
- fd.close()
-
- # Verify that top-level element is correct
- caldavtest_node = doc._get_documentElement()
- if caldavtest_node._get_localName() != tests.xmlDefs.ELEMENT_CALDAVTEST:
- self.log("Ignoring file \"%s\" because it is not a test file" % (testfile,), after=2)
- continue
- if not caldavtest_node.hasChildNodes():
- raise EX_INVALID_CONFIG_FILE
- self.log("Reading Test Details from \"%s\"" % testfile, after=2)
-
- # parse all the config data
- test = caldavtest(self, testfile)
- test.parseXML(caldavtest_node)
-
- # ignore if all mode and ignore-all is set
- if not all or not test.ignore_all:
- self.tests.append(test)
-
- def readCommandLine(self):
- sname = "serverinfo.xml"
- pname = None
- fnames = []
- all = False
- options, args = getopt.getopt(sys.argv[1:], "s:p:d", ["all"])
-
- # Process single options
- for option, value in options:
- if option == "-s":
- sname = value
- elif option == "-p":
- pname = value
- elif option == "-d":
- self.depopulate = True
- elif option == "--all":
- all = True
- files = os.listdir(os.getcwd())
- for file in files:
- if file.endswith(".xml"):
- fnames.append(file)
-
- # Remove any server info file from files enuerated by --all
- fnames[:] = [x for x in fnames if (x != sname) and (not pname or (x != pname))]
-
- # Process any files argumentsd as test configs
- for f in args:
- fnames.append(f)
-
- self.readXML(sname, pname, fnames, all)
-
- def runAll(self):
-
- if self.populator:
- self.runPopulate();
-
- startTime = time.time()
- ok = 0
- failed = 0
- ignored = 0
- try:
- for test in self.tests:
- o, f, i = test.run()
- ok += o
- failed += f
- ignored += i
- except:
- failed += 1
- import traceback
- traceback.print_exc()
-
- endTime = time.time()
-
- if self.populator and self.depopulate:
- self.runDepopulate()
-
- self.log("Overall Results: %d PASSED, %d FAILED, %d IGNORED" % (ok, failed, ignored), before=2, indent=4)
- self.log("Total time: %d secs" % (endTime- startTime,))
-
- sys.exit(failed)
-
- def runPopulate(self):
- self.populator.generateAccounts()
-
- def runDepopulate(self):
- self.populator.removeAccounts()
-
- def httpRequest(self, method, uri, headers, data):
-
- # Do the http request
- http = httplib.HTTPConnection( self.server_info.host, self.server_info.port )
- try:
- http.request( method, uri, data, headers )
-
- response = http.getresponse()
-
- respdata = response.read()
-
- finally:
- http.close()
-
- return response.status, respdata
-
Copied: CalDAVTester/trunk/src/manager.py (from rev 239, CalDAVTester/trunk/tests/manager.py)
===================================================================
--- CalDAVTester/trunk/src/manager.py (rev 0)
+++ CalDAVTester/trunk/src/manager.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,219 @@
+##
+# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Cyrus Daboo, cdaboo at apple.com
+##
+
+"""
+Class to manage the testing process.
+"""
+
+from src.populate import populate
+from src.serverinfo import serverinfo
+import getopt
+import httplib
+import os
+import src.xmlDefs
+import sys
+import time
+import xml.dom.minidom
+
+# Exceptions
+
+EX_INVALID_CONFIG_FILE = "Invalid Config File"
+EX_FAILED_REQUEST = "HTTP Request Failed"
+
+class manager(object):
+
+ """
+ Main class that runs test suites defined in an XML config file.
+ """
+ __slots__ = ['server_info', 'populator', 'depopulate', 'tests', 'textMode', 'logLevel']
+
+ LOG_NONE = 0
+ LOG_LOW = 1
+ LOG_MEDIUM = 2
+ LOG_HIGH = 3
+
+ def __init__( self, text=True, level=LOG_HIGH ):
+ self.server_info = serverinfo()
+ self.populator = None
+ self.depopulate = False
+ self.tests = []
+ self.textMode = text
+ self.logLevel = level
+
+ def log(self, level, str, indent = 0, indentStr = " ", after = 1, before = 0):
+ if self.textMode and level <= self.logLevel:
+ if before:
+ print "\n" * before,
+ if indent:
+ print indentStr * indent,
+ print str,
+ if after:
+ print "\n" * after,
+
+ def readXML( self, serverfile, populatorfile, testfiles, all, moresubs = {} ):
+
+ self.log(manager.LOG_HIGH, "Reading Server Info from \"%s\"" % serverfile, after=2)
+
+ # Open and parse the server config file
+ fd = open(serverfile, "r")
+ doc = xml.dom.minidom.parse( fd )
+ fd.close()
+
+ # Verify that top-level element is correct
+ serverinfo_node = doc._get_documentElement()
+ if serverinfo_node._get_localName() != src.xmlDefs.ELEMENT_SERVERINFO:
+ raise EX_INVALID_CONFIG_FILE
+ if not serverinfo_node.hasChildNodes():
+ raise EX_INVALID_CONFIG_FILE
+ self.server_info.parseXML(serverinfo_node)
+ self.server_info.addsubs(moresubs)
+
+ # Open and parse the populator config file
+ if populatorfile:
+ self.log(manager.LOG_HIGH, "Reading Populator Info from \"%s\"" % populatorfile, after=2)
+
+ fd = open(populatorfile, "r")
+ doc = xml.dom.minidom.parse( fd )
+ fd.close()
+
+ # Verify that top-level element is correct
+ populate_node = doc._get_documentElement()
+ if populate_node._get_localName() != src.xmlDefs.ELEMENT_POPULATE:
+ raise EX_INVALID_CONFIG_FILE
+ if not populate_node.hasChildNodes():
+ raise EX_INVALID_CONFIG_FILE
+ self.populator = populate(self)
+ self.populator.parseXML(populate_node)
+
+ for testfile in testfiles:
+ # Open and parse the config file
+ fd = open( testfile, "r" )
+ doc = xml.dom.minidom.parse( fd )
+ fd.close()
+
+ # Verify that top-level element is correct
+ from src.caldavtest import caldavtest
+ caldavtest_node = doc._get_documentElement()
+ if caldavtest_node._get_localName() != src.xmlDefs.ELEMENT_CALDAVTEST:
+ self.log(manager.LOG_HIGH, "Ignoring file \"%s\" because it is not a test file" % (testfile,), after=2)
+ continue
+ if not caldavtest_node.hasChildNodes():
+ raise EX_INVALID_CONFIG_FILE
+ self.log(manager.LOG_HIGH, "Reading Test Details from \"%s\"" % testfile, after=2)
+
+ # parse all the config data
+ test = caldavtest(self, testfile)
+ test.parseXML(caldavtest_node)
+
+ # ignore if all mode and ignore-all is set
+ if not all or not test.ignore_all:
+ self.tests.append(test)
+
+ def readCommandLine(self):
+ sname = "scripts/server/serverinfo.xml"
+ pname = None
+ dname = "scripts/tests"
+ fnames = []
+ all = False
+ options, args = getopt.getopt(sys.argv[1:], "s:p:dx:", ["all"])
+
+ # Process single options
+ for option, value in options:
+ if option == "-s":
+ sname = value
+ elif option == "-p":
+ pname = value
+ elif option == "-d":
+ self.depopulate = True
+ elif option == "-x":
+ self.dname = value
+ elif option == "--all":
+ all = True
+
+ if all:
+ files = os.listdir(dname)
+ for file in files:
+ if file.endswith(".xml"):
+ fnames.append(dname + "/" + file)
+
+ # Remove any server info file from files enuerated by --all
+ fnames[:] = [x for x in fnames if (x != sname) and (not pname or (x != pname))]
+
+ # Process any filesarguments as test configs
+ for f in args:
+ fnames.append(dname + "/" + f)
+
+ self.readXML(sname, pname, fnames, all)
+
+ def runWithOptions(self, sname, pname, fnames, moresubs, all = False, depopulate = False):
+ self.depopulate = depopulate
+ self.readXML(sname, pname, fnames, all, moresubs)
+ return self.runAll()
+
+ def runAll(self):
+
+ if self.populator:
+ self.runPopulate();
+
+ startTime = time.time()
+ ok = 0
+ failed = 0
+ ignored = 0
+ try:
+ for test in self.tests:
+ o, f, i = test.run()
+ ok += o
+ failed += f
+ ignored += i
+ except:
+ failed += 1
+ import traceback
+ traceback.print_exc()
+
+ endTime = time.time()
+
+ if self.populator and self.depopulate:
+ self.runDepopulate()
+
+ self.log(manager.LOG_LOW, "Overall Results: %d PASSED, %d FAILED, %d IGNORED" % (ok, failed, ignored), before=2, indent=4)
+ self.log(manager.LOG_LOW, "Total time: %.3f secs" % (endTime- startTime,))
+
+ return failed, endTime - startTime
+
+ def runPopulate(self):
+ self.populator.generateAccounts()
+
+ def runDepopulate(self):
+ self.populator.removeAccounts()
+
+ def httpRequest(self, method, uri, headers, data):
+
+ # Do the http request
+ http = httplib.HTTPConnection( self.server_info.host, self.server_info.port )
+ try:
+ http.request( method, uri, data, headers )
+
+ response = http.getresponse()
+
+ respdata = response.read()
+
+ finally:
+ http.close()
+
+ return response.status, respdata
+
Copied: CalDAVTester/trunk/src/multithread.py (from rev 239, CalDAVTester/trunk/tests/multithread.py)
===================================================================
--- CalDAVTester/trunk/src/multithread.py (rev 0)
+++ CalDAVTester/trunk/src/multithread.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+#
+##
+# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Cyrus Daboo, cdaboo at apple.com
+##
+#
+# A thread pool based function executor. This class takes a function as an argument
+# and multiple sets of arguments to the function, and it executes the function with
+# each argument set in a thread in parallel. The total number of threads is limited by
+# the thread pool and a queue is used to hold pending function executions.
+#
+# Code is copied from O'Reilly Python Cookbook Recipe 9.3.
+#
+from random import randrange
+
+import time
+import Queue
+import threading
+
+class MultiThread(object):
+
+ def __init__(self, function, argsVector, maxThreads=5, queue_results=False, sleep=0.0):
+ self._function = function
+ self._lock = threading.Lock( )
+ self._nextArgs = iter(argsVector).next
+ self._threadPool = [ threading.Thread(target=self._doSome, args=(i,))
+ for i in range(maxThreads) ]
+ if queue_results:
+ self._queue = Queue.Queue( )
+ else:
+ self._queue = None
+
+ self.sleep = sleep
+
+ def _doSome(self, ctr):
+ while True:
+
+ self._lock.acquire( )
+ try:
+ try:
+ args = self._nextArgs( )
+ except StopIteration:
+ break
+ finally:
+ self._lock.release( )
+ # Insert user provided delay in here
+ if self.sleep != 0.0:
+ sleeper = randrange(0, 100)/100.0 * self.sleep
+ #print sleeper
+ c = time.clock()
+ #print c
+ while time.clock() - c < sleeper:
+ time.sleep(0) # necessary to give other threads a chance to run
+ j = 0
+ for i in range(100):
+ j += i
+ #time.sleep(sleeper)
+ else:
+ sleeper = 0.0
+
+ try:
+ #print "Thread: %d, %f" % (ctr, sleeper)
+ result = self._function(args)
+ if self._queue is not None:
+ self._queue.put((args, result))
+ except Exception, e:
+ print "Exception: %s" % e
+
+ def get(self, *a, **kw):
+ if self._queue is not None:
+ return self._queue.get(*a, **kw)
+ else:
+ raise ValueError, 'Not queueing results'
+
+ def start(self):
+ for thread in self._threadPool:
+ time.sleep(0) # necessary to give other threads a chance to run
+ thread.start( )
+
+ def join(self, timeout=None):
+ for thread in self._threadPool:
+ thread.join(timeout)
+
Added: CalDAVTester/trunk/src/perfinfo.py
===================================================================
--- CalDAVTester/trunk/src/perfinfo.py (rev 0)
+++ CalDAVTester/trunk/src/perfinfo.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,81 @@
+##
+# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Cyrus Daboo, cdaboo at apple.com
+##
+
+"""
+Class that encapsulates the server information for a CalDAV test run.
+"""
+
+import src.xmlDefs
+
+class perfinfo( object ):
+ """
+ Maintains information about the performance test scenario.
+ """
+ __slots__ = ['clients', 'threads', 'logging', 'tests', 'serverinfo', 'testinfo', 'subsdict']
+
+ def __init__( self ):
+ self.clients = 20
+ self.threads = True
+ self.logging = False
+ self.tests = []
+ self.serverinfo = ""
+ self.testinfo = ""
+ self.subsdict = {}
+
+ def parseXML( self, node ):
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_CLIENTS:
+ self.clients = int(child.firstChild.data)
+ elif child._get_localName() == src.xmlDefs.ELEMENT_THREADS:
+ self.threads = child.getAttribute( src.xmlDefs.ATTR_ENABLE ) != src.xmlDefs.ATTR_VALUE_NO
+ elif child._get_localName() == src.xmlDefs.ELEMENT_LOGGING:
+ self.logging = child.getAttribute( src.xmlDefs.ATTR_ENABLE ) != src.xmlDefs.ATTR_VALUE_NO
+ elif child._get_localName() == src.xmlDefs.ELEMENT_TESTS:
+ self.parseTestsXML(child)
+ elif child._get_localName() == src.xmlDefs.ELEMENT_SERVERINFO:
+ self.serverinfo = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_TESTINFO:
+ self.testinfo = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_SUBSTITUTIONS:
+ self.parseSubstitutionsXML(child)
+
+ def parseTestsXML(self, node):
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_TEST:
+ spread = None
+ runs = None
+ for schild in child._get_childNodes():
+ if schild._get_localName() == src.xmlDefs.ELEMENT_SPREAD:
+ spread = float(schild.firstChild.data)
+ elif schild._get_localName() == src.xmlDefs.ELEMENT_RUNS:
+ runs = int(schild.firstChild.data)
+ if spread and runs:
+ self.tests.append((spread, runs,))
+
+ def parseSubstitutionsXML(self, node):
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_SUBSTITUTION:
+ key = None
+ value = None
+ for schild in child._get_childNodes():
+ if schild._get_localName() == src.xmlDefs.ELEMENT_KEY:
+ key = schild.firstChild.data
+ elif schild._get_localName() == src.xmlDefs.ELEMENT_VALUE:
+ value = schild.firstChild.data
+ if key and value:
+ self.subsdict[key] = value
Modified: CalDAVTester/trunk/src/populate.py
===================================================================
--- CalDAVTester/trunk/tests/populate.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/populate.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -20,11 +20,10 @@
Class that encapsulates the information for populating a CalDAV server.
"""
+from src.account import account
from utils import webdav
-from tests.account import account
+import src.xmlDefs
-import tests.xmlDefs
-
class populate( object ):
"""
Maintains information about accounts to be created on the server.
@@ -39,11 +38,11 @@
def parseXML( self, node ):
for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_DESCRIPTION:
+ if child._get_localName() == src.xmlDefs.ELEMENT_DESCRIPTION:
self.description = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_PATH:
+ elif child._get_localName() == src.xmlDefs.ELEMENT_PATH:
self.path = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_ACCOUNT:
+ elif child._get_localName() == src.xmlDefs.ELEMENT_ACCOUNT:
acct = account()
acct.parseXML(child)
self.accounts.extend(acct.expand())
Deleted: CalDAVTester/trunk/src/request.py
===================================================================
--- CalDAVTester/trunk/tests/request.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/request.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,235 +0,0 @@
-##
-# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# DRI: Cyrus Daboo, cdaboo at apple.com
-##
-
-"""
-Defines the 'request' class which encapsulates an HTTP request and verification.
-"""
-from tests.serverinfo import serverinfo
-
-import base64
-import tests.xmlDefs
-import time
-
-class request( object ):
- """
- Represents the HTTP request to be executed, and verifcation information to
- be used to determine a satisfactory output or not.
- """
- __slots__ = ['auth', 'user', 'pswd', 'end_delete', 'print_response', 'method', 'headers', 'ruri', 'data', 'datasubs', 'verifiers', 'grablocation']
-
- def __init__( self ):
- self.auth = True
- self.user = ""
- self.pswd = ""
- self.end_delete = False
- self.print_response = False
- self.method = ""
- self.headers = {}
- self.ruri = ""
- self.data = None
- self.datasubs = False
- self.verifiers = []
- self.grablocation = False
-
- def getURI( self, si ):
- if self.ruri == "$":
- return self.ruri
- if len(self.ruri) > 0 and self.ruri[0] == '/':
- uri = ""
- else:
- uri = "%s/" % ( si.calendarpath )
- uri += self.ruri
- return uri
-
- def getHeaders( self, si ):
- hdrs = self.headers
-
- # Content type
- if self.data != None:
- hdrs["Content-Type"] = self.data.content_type
-
- # Auth
- if self.auth:
- hdrs["Authorization"] = self.gethttpauth( si )
-
- return hdrs
-
- def gethttpauth( self, si ):
- basicauth = [self.user, si.user][self.user == ""]
- basicauth += ":"
- basicauth += [self.pswd, si.pswd][self.pswd == ""]
- basicauth = "Basic " + base64.encodestring( basicauth )
- basicauth = basicauth.replace( "\n", "" )
- return basicauth
-
- def getFilePath( self ):
- if self.data != None:
- return self.data.filepath
- else:
- return ""
-
- def getData( self ):
- data = ""
- if self.data != None:
- if len(self.data.value) != 0:
- data = self.data.value
- else:
- # read in the file data
- fd = open( self.data.filepath, "r" )
- try:
- data = fd.read()
- finally:
- fd.close()
- if self.datasubs:
- data = serverinfo.subs(data)
- return data
-
- def parseXML( self, node ):
- self.auth = node.getAttribute( tests.xmlDefs.ATTR_AUTH ) != tests.xmlDefs.ATTR_VALUE_NO
- self.user = node.getAttribute( tests.xmlDefs.ATTR_USER )
- self.pswd = node.getAttribute( tests.xmlDefs.ATTR_PSWD )
- self.end_delete = node.getAttribute( tests.xmlDefs.ATTR_END_DELETE ) == tests.xmlDefs.ATTR_VALUE_YES
- self.print_response = node.getAttribute( tests.xmlDefs.ATTR_PRINT_RESPONSE ) == tests.xmlDefs.ATTR_VALUE_YES
-
- for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_METHOD:
- self.method = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_HEADER:
- self.parseHeader(child)
- elif child._get_localName() == tests.xmlDefs.ELEMENT_RURI:
- self.ruri = serverinfo.subs(child.firstChild.data)
- elif child._get_localName() == tests.xmlDefs.ELEMENT_DATA:
- self.data = data()
- self.datasubs = self.data.parseXML( child )
- elif child._get_localName() == tests.xmlDefs.ELEMENT_VERIFY:
- self.verifiers.append(verify())
- self.verifiers[-1].parseXML( child )
- elif child._get_localName() == tests.xmlDefs.ELEMENT_GRABLOCATION:
- self.grablocation = True
-
- def parseHeader(self, node):
-
- name = None
- value = None
- for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_NAME:
- name = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_VALUE:
- value = serverinfo.subs(child.firstChild.data)
-
- if (name is not None) and (value is not None):
- self.headers[name] = value
-
- def parseList( node ):
- requests = []
- for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_REQUEST:
- req = request()
- req.parseXML( child )
- requests.append( req )
- return requests
-
- parseList = staticmethod( parseList )
-
-class data( object ):
- """
- Represents the data/body portion of an HTTP request.
- """
- __slots__ = ['content_type', 'filepath', 'value']
-
- def __init__( self ):
- self.content_type = ""
- self.filepath = ""
- self.value = ""
-
- def parseXML( self, node ):
-
- subs = node.getAttribute( tests.xmlDefs.ATTR_SUBSTITUTIONS ) == tests.xmlDefs.ATTR_VALUE_YES
-
- for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_CONTENTTYPE:
- self.content_type = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_FILEPATH:
- self.filepath = child.firstChild.data
-
- return subs
-
-class verify( object ):
- """
- Defines how the result of a request should be verified. This is done
- by passing the response and response data to a callback with a set of arguments
- specified in the test XML config file. The callback name is in the XML config
- file also and is dynamically loaded to do the verification.
- """
- __slots__ = ['callback', 'args']
-
- def __init__( self ):
- self.callback = None
- self.args = {}
-
- def doVerify(self, uri, response, respdata):
- verifierClass = self._importName("verifiers." + self.callback, "Verifier")
- verifier = verifierClass()
- return verifier.verify(uri, response, respdata, self.args)
-
- def _importName(self, modulename, name):
- """
- Import a named object from a module in the context of this function.
- """
- module = __import__(modulename, globals( ), locals( ), [name])
- return getattr(module, name)
-
- def parseXML( self, node ):
-
- for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_CALLBACK:
- self.callback = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_ARG:
- self.parseArgXML(child)
-
- def parseArgXML(self, node):
- name = None
- values = []
- for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_NAME:
- name = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_VALUE:
- if child.firstChild is not None:
- values.append(serverinfo.subs(child.firstChild.data))
- else:
- values.append("")
- if name and len(values):
- self.args[name] = values
-
-class stats( object ):
- """
- Maintains stats about the current test.
- """
- __slots__ = ['count', 'totaltime', 'currenttime']
-
- def __init__(self):
- self.count = 0
- self.totaltime = 0.0
- self.currenttime = 0.0
-
- def startTimer(self):
- self.currenttime = time.time()
-
- def endTimer(self):
- self.count += 1
- self.totaltime += time.time() - self.currenttime
Copied: CalDAVTester/trunk/src/request.py (from rev 239, CalDAVTester/trunk/tests/request.py)
===================================================================
--- CalDAVTester/trunk/src/request.py (rev 0)
+++ CalDAVTester/trunk/src/request.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,240 @@
+##
+# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Cyrus Daboo, cdaboo at apple.com
+##
+
+"""
+Defines the 'request' class which encapsulates an HTTP request and verification.
+"""
+
+import base64
+import src.xmlDefs
+import time
+
+class request( object ):
+ """
+ Represents the HTTP request to be executed, and verifcation information to
+ be used to determine a satisfactory output or not.
+ """
+ __slots__ = ['manager', 'auth', 'user', 'pswd', 'end_delete', 'print_response',
+ 'method', 'headers', 'ruri', 'data', 'datasubs', 'verifiers', 'grablocation']
+
+ def __init__( self, manager ):
+ self.manager = manager
+ self.auth = True
+ self.user = ""
+ self.pswd = ""
+ self.end_delete = False
+ self.print_response = False
+ self.method = ""
+ self.headers = {}
+ self.ruri = ""
+ self.data = None
+ self.datasubs = True
+ self.verifiers = []
+ self.grablocation = False
+
+ def __str__(self):
+ return "Method: %s; uri: %s" % (self.method, self.ruri)
+
+ def getURI( self, si ):
+ if self.ruri == "$":
+ return self.ruri
+ if len(self.ruri) > 0 and self.ruri[0] == '/':
+ uri = ""
+ else:
+ uri = "%s/" % ( si.calendarpath )
+ uri += self.ruri
+ return uri
+
+ def getHeaders( self, si ):
+ hdrs = self.headers
+
+ # Content type
+ if self.data != None:
+ hdrs["Content-Type"] = self.data.content_type
+
+ # Auth
+ if self.auth:
+ hdrs["Authorization"] = self.gethttpauth( si )
+
+ return hdrs
+
+ def gethttpauth( self, si ):
+ basicauth = [self.user, si.user][self.user == ""]
+ basicauth += ":"
+ basicauth += [self.pswd, si.pswd][self.pswd == ""]
+ basicauth = "Basic " + base64.encodestring( basicauth )
+ basicauth = basicauth.replace( "\n", "" )
+ return basicauth
+
+ def getFilePath( self ):
+ if self.data != None:
+ return self.data.filepath
+ else:
+ return ""
+
+ def getData( self ):
+ data = ""
+ if self.data != None:
+ if len(self.data.value) != 0:
+ data = self.data.value
+ else:
+ # read in the file data
+ fd = open( self.data.filepath, "r" )
+ try:
+ data = fd.read()
+ finally:
+ fd.close()
+ if self.datasubs:
+ data = str(self.manager.server_info.subs(data))
+ return data
+
+ def parseXML( self, node ):
+ self.auth = node.getAttribute( src.xmlDefs.ATTR_AUTH ) != src.xmlDefs.ATTR_VALUE_NO
+ self.user = self.manager.server_info.subs(node.getAttribute( src.xmlDefs.ATTR_USER ))
+ self.pswd = self.manager.server_info.subs(node.getAttribute( src.xmlDefs.ATTR_PSWD ))
+ self.end_delete = node.getAttribute( src.xmlDefs.ATTR_END_DELETE ) == src.xmlDefs.ATTR_VALUE_YES
+ self.print_response = node.getAttribute( src.xmlDefs.ATTR_PRINT_RESPONSE ) == src.xmlDefs.ATTR_VALUE_YES
+
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_METHOD:
+ self.method = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_HEADER:
+ self.parseHeader(child)
+ elif child._get_localName() == src.xmlDefs.ELEMENT_RURI:
+ self.ruri = self.manager.server_info.subs(child.firstChild.data)
+ elif child._get_localName() == src.xmlDefs.ELEMENT_DATA:
+ self.data = data()
+ self.datasubs = self.data.parseXML( child )
+ elif child._get_localName() == src.xmlDefs.ELEMENT_VERIFY:
+ self.verifiers.append(verify(self.manager))
+ self.verifiers[-1].parseXML( child )
+ elif child._get_localName() == src.xmlDefs.ELEMENT_GRABLOCATION:
+ self.grablocation = True
+
+ def parseHeader(self, node):
+
+ name = None
+ value = None
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_NAME:
+ name = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_VALUE:
+ value = self.manager.server_info.subs(child.firstChild.data)
+
+ if (name is not None) and (value is not None):
+ self.headers[name] = value
+
+ def parseList( manager, node ):
+ requests = []
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_REQUEST:
+ req = request(manager)
+ req.parseXML( child )
+ requests.append( req )
+ return requests
+
+ parseList = staticmethod( parseList )
+
+class data( object ):
+ """
+ Represents the data/body portion of an HTTP request.
+ """
+ __slots__ = ['content_type', 'filepath', 'value']
+
+ def __init__( self ):
+ self.content_type = ""
+ self.filepath = ""
+ self.value = ""
+
+ def parseXML( self, node ):
+
+ subs = node.getAttribute( src.xmlDefs.ATTR_SUBSTITUTIONS ) != src.xmlDefs.ATTR_VALUE_NO
+
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_CONTENTTYPE:
+ self.content_type = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_FILEPATH:
+ self.filepath = child.firstChild.data
+
+ return subs
+
+class verify( object ):
+ """
+ Defines how the result of a request should be verified. This is done
+ by passing the response and response data to a callback with a set of arguments
+ specified in the test XML config file. The callback name is in the XML config
+ file also and is dynamically loaded to do the verification.
+ """
+ __slots__ = ['manager', 'callback', 'args']
+
+ def __init__( self, manager ):
+ self.manager = manager
+ self.callback = None
+ self.args = {}
+
+ def doVerify(self, uri, response, respdata):
+ verifierClass = self._importName("verifiers." + self.callback, "Verifier")
+ verifier = verifierClass()
+ return verifier.verify(self.manager, uri, response, respdata, self.args)
+
+ def _importName(self, modulename, name):
+ """
+ Import a named object from a module in the context of this function.
+ """
+ module = __import__(modulename, globals( ), locals( ), [name])
+ return getattr(module, name)
+
+ def parseXML( self, node ):
+
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_CALLBACK:
+ self.callback = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_ARG:
+ self.parseArgXML(child)
+
+ def parseArgXML(self, node):
+ name = None
+ values = []
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_NAME:
+ name = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_VALUE:
+ if child.firstChild is not None:
+ values.append(self.manager.server_info.subs(child.firstChild.data))
+ else:
+ values.append("")
+ if name and len(values):
+ self.args[name] = values
+
+class stats( object ):
+ """
+ Maintains stats about the current test.
+ """
+ __slots__ = ['count', 'totaltime', 'currenttime']
+
+ def __init__(self):
+ self.count = 0
+ self.totaltime = 0.0
+ self.currenttime = 0.0
+
+ def startTimer(self):
+ self.currenttime = time.time()
+
+ def endTimer(self):
+ self.count += 1
+ self.totaltime += time.time() - self.currenttime
Deleted: CalDAVTester/trunk/src/serverinfo.py
===================================================================
--- CalDAVTester/trunk/tests/serverinfo.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/serverinfo.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,69 +0,0 @@
-##
-# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# DRI: Cyrus Daboo, cdaboo at apple.com
-##
-
-"""
-Class that encapsulates the server information for a CalDAV test run.
-"""
-
-import tests.xmlDefs
-
-class serverinfo( object ):
- """
- Maintains information about the server beiung targetted.
- """
- __slots__ = ['host', 'port', 'ssl', 'calendarpath', 'user', 'pswd', 'hostsubs', 'pathsubs', 'serverfilepath']
-
- hostsubs = ""
- pathsubs = ""
-
- @classmethod
- def subs(cls, str):
- return str.replace("$host:", serverinfo.hostsubs).replace("$pathprefix:", serverinfo.pathsubs)
-
- def __init__( self ):
- self.host = ""
- self.port = 80
- self.ssl = False
- self.calendarpath = ""
- self.user = ""
- self.pswd = ""
- self.serverfilepath = ""
-
- def parseXML( self, node ):
- for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_HOST:
- self.host = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_PORT:
- self.port = int( child.firstChild.data )
- elif child._get_localName() == tests.xmlDefs.ELEMENT_SSL:
- self.ssl = True
- elif child._get_localName() == tests.xmlDefs.ELEMENT_CALENDARPATH:
- self.calendarpath = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_USER:
- self.user = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_PSWD:
- self.pswd = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_HOSTSUBS:
- if child.firstChild is not None:
- serverinfo.hostsubs = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_PATHSUBS:
- if child.firstChild is not None:
- serverinfo.pathsubs = child.firstChild.data
- elif child._get_localName() == tests.xmlDefs.ELEMENT_SERVERFILEPATH:
- if child.firstChild is not None:
- self.serverfilepath = child.firstChild.data
Copied: CalDAVTester/trunk/src/serverinfo.py (from rev 239, CalDAVTester/trunk/tests/serverinfo.py)
===================================================================
--- CalDAVTester/trunk/src/serverinfo.py (rev 0)
+++ CalDAVTester/trunk/src/serverinfo.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,92 @@
+##
+# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Cyrus Daboo, cdaboo at apple.com
+##
+
+"""
+Class that encapsulates the server information for a CalDAV test run.
+"""
+
+import src.xmlDefs
+
+class serverinfo( object ):
+ """
+ Maintains information about the server beiung targetted.
+ """
+ __slots__ = ['host', 'port', 'ssl', 'calendarpath', 'user', 'pswd', 'serverfilepath', 'subsdict']
+
+
+ def __init__( self ):
+ self.host = ""
+ self.port = 80
+ self.ssl = False
+ self.calendarpath = ""
+ self.user = ""
+ self.pswd = ""
+ self.serverfilepath = ""
+ self.subsdict = {}
+
+ def subs(self, str):
+ for key, value in self.subsdict.iteritems():
+ str = str.replace(key, value)
+ return str
+
+ def addsubs(self, items):
+ for key, value in items.iteritems():
+ self.subsdict[key] = value
+
+ self.updateParams()
+
+ def parseXML( self, node ):
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_HOST:
+ self.host = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_PORT:
+ self.port = int( child.firstChild.data )
+ elif child._get_localName() == src.xmlDefs.ELEMENT_SSL:
+ self.ssl = True
+ elif child._get_localName() == src.xmlDefs.ELEMENT_SERVERFILEPATH:
+ if child.firstChild is not None:
+ self.serverfilepath = child.firstChild.data
+ elif child._get_localName() == src.xmlDefs.ELEMENT_SUBSTITUTIONS:
+ self.parseSubstitutionsXML(child)
+
+ self.updateParams()
+
+ def updateParams(self):
+ # Now cache some useful substitutions
+ if "$calendarpath1:" not in self.subsdict:
+ raise ValueError, "Must have $calendarpath1: substitution"
+ self.calendarpath = self.subsdict["$calendarpath1:"]
+ if "$userid1:" not in self.subsdict:
+ raise ValueError, "Must have $userid1: substitution"
+ self.user = self.subsdict["$userid1:"]
+ if "$pswd1:" not in self.subsdict:
+ raise ValueError, "Must have $pswd1: substitution"
+ self.pswd = self.subsdict["$pswd1:"]
+
+ def parseSubstitutionsXML(self, node):
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_SUBSTITUTION:
+ key = None
+ value = None
+ for schild in child._get_childNodes():
+ if schild._get_localName() == src.xmlDefs.ELEMENT_KEY:
+ key = schild.firstChild.data
+ elif schild._get_localName() == src.xmlDefs.ELEMENT_VALUE:
+ value = schild.firstChild.data
+ if key and value:
+ self.subsdict[key] = value
Modified: CalDAVTester/trunk/src/test.py
===================================================================
--- CalDAVTester/trunk/tests/test.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/test.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -20,8 +20,8 @@
Class that encapsulates a single CalDAV test.
"""
-from tests.request import request
-import tests.xmlDefs
+from src.request import request
+import src.xmlDefs
class test( object ):
"""
@@ -29,9 +29,10 @@
be run more than once, and timing information gathered and averaged across
all runs.
"""
- __slots__ = ['name', 'details', 'count', 'stats', 'ignore', 'description', 'requests']
+ __slots__ = ['manager', 'name', 'details', 'count', 'stats', 'ignore', 'description', 'requests']
- def __init__( self ):
+ def __init__( self, manager ):
+ self.manager = manager
self.name = ""
self.details = False
self.count = 1
@@ -41,22 +42,22 @@
self.requests = []
def parseXML( self, node ):
- self.name = node.getAttribute( tests.xmlDefs.ATTR_NAME )
- self.details = node.getAttribute( tests.xmlDefs.ATTR_DETAILS ) == tests.xmlDefs.ATTR_VALUE_YES
- self.count = node.getAttribute( tests.xmlDefs.ATTR_COUNT )
+ self.name = node.getAttribute( src.xmlDefs.ATTR_NAME )
+ self.details = node.getAttribute( src.xmlDefs.ATTR_DETAILS ) == src.xmlDefs.ATTR_VALUE_YES
+ self.count = node.getAttribute( src.xmlDefs.ATTR_COUNT )
if self.count == '':
self.count = 1
else:
self.count = int(self.count)
- self.stats = node.getAttribute( tests.xmlDefs.ATTR_STATS ) == tests.xmlDefs.ATTR_VALUE_YES
- self.ignore = node.getAttribute( tests.xmlDefs.ATTR_IGNORE ) == tests.xmlDefs.ATTR_VALUE_YES
+ self.stats = node.getAttribute( src.xmlDefs.ATTR_STATS ) == src.xmlDefs.ATTR_VALUE_YES
+ self.ignore = node.getAttribute( src.xmlDefs.ATTR_IGNORE ) == src.xmlDefs.ATTR_VALUE_YES
for child in node._get_childNodes():
- if child._get_localName() == tests.xmlDefs.ELEMENT_DESCRIPTION:
+ if child._get_localName() == src.xmlDefs.ELEMENT_DESCRIPTION:
self.description = child.firstChild.data
# get request
- self.requests = request.parseList( node )
+ self.requests = request.parseList( self.manager, node )
def dump( self ):
print "\nTEST: %s" % self.name
Modified: CalDAVTester/trunk/src/testsuite.py
===================================================================
--- CalDAVTester/trunk/tests/testsuite.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/testsuite.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -20,27 +20,28 @@
Class that encapsulates a series of tests.
"""
-from tests.test import test
-import tests.xmlDefs
+from src.test import test
+import src.xmlDefs
class testsuite( object ):
"""
Maintains a list of tests to run as part of a 'suite'.
"""
- __slots__ = ['name', 'ignore', 'tests']
+ __slots__ = ['manager', 'name', 'ignore', 'tests']
- def __init__( self ):
+ def __init__( self, manager ):
+ self.manager = manager
self.name = ""
self.ignore = False
self.tests = []
def parseXML( self, node ):
- self.name = node.getAttribute( tests.xmlDefs.ATTR_NAME )
- self.ignore = node.getAttribute( tests.xmlDefs.ATTR_IGNORE ) == tests.xmlDefs.ATTR_VALUE_YES
+ self.name = node.getAttribute( src.xmlDefs.ATTR_NAME )
+ self.ignore = node.getAttribute( src.xmlDefs.ATTR_IGNORE ) == src.xmlDefs.ATTR_VALUE_YES
- test_nodes = node.getElementsByTagName( tests.xmlDefs.ELEMENT_TEST )
+ test_nodes = node.getElementsByTagName( src.xmlDefs.ELEMENT_TEST )
for child in test_nodes:
- t = test()
+ t = test(self.manager)
t.parseXML( child )
self.tests.append( t )
Deleted: CalDAVTester/trunk/src/xmlDefs.py
===================================================================
--- CalDAVTester/trunk/tests/xmlDefs.py 2006-09-26 20:11:16 UTC (rev 201)
+++ CalDAVTester/trunk/src/xmlDefs.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,77 +0,0 @@
-##
-# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# DRI: Cyrus Daboo, cdaboo at apple.com
-##
-
-# XML Elements/Attributes
-
-ELEMENT_ACCOUNT = "account"
-ELEMENT_ARG = "arg"
-ELEMENT_CALDAVTEST = "caldavtest"
-ELEMENT_CALENDARPATH = "calendarpath"
-ELEMENT_CALENDARS = "calendars"
-ELEMENT_CALLBACK = "callback"
-ELEMENT_CONTENTTYPE = "content-type"
-ELEMENT_DATA = "data"
-ELEMENT_DATASOURCE = "datasource"
-ELEMENT_DESCRIPTION = "description"
-ELEMENT_END = "end"
-ELEMENT_FILEPATH = "filepath"
-ELEMENT_GRABLOCATION = "grablocation"
-ELEMENT_HEADER = "header"
-ELEMENT_HOST = "host"
-ELEMENT_HOSTSUBS = "hostsubs"
-ELEMENT_METHOD = "method"
-ELEMENT_NAME = "name"
-ELEMENT_PATH = "path"
-ELEMENT_PATHSUBS = "pathsubs"
-ELEMENT_POPULATE = "populate"
-ELEMENT_PORT = "port"
-ELEMENT_PSWD = "pswd"
-ELEMENT_REQUEST = "request"
-ELEMENT_RURI = "ruri"
-ELEMENT_SERVERFILEPATH = "serverfilepath"
-ELEMENT_SERVERINFO = "serverinfo"
-ELEMENT_SSL = "ssl"
-ELEMENT_START = "start"
-ELEMENT_TEST = "test"
-ELEMENT_TESTSUITE = "test-suite"
-ELEMENT_USER = "user"
-ELEMENT_VALUE = "value"
-ELEMENT_VERIFY = "verify"
-
-ATTR_AUTH = "auth"
-ATTR_COUNT = "count"
-ATTR_COUNTARG = "countarg"
-ATTR_DETAILS = "details"
-ATTR_END_DELETE = "end-delete"
-ATTR_IGNORE = "ignore"
-ATTR_IGNORE_ALL = "ignore-all"
-ATTR_MODE = "mode"
-ATTR_NAME = "name"
-ATTR_PRINT_RESPONSE = "print-response"
-ATTR_PSWD = "pswd"
-ATTR_STATS = "stats"
-ATTR_SUBSTITUTIONS = "substitutions"
-ATTR_USER = "user"
-
-ATTR_DEFAULT_COUNT = 1
-ATTR_DEFAULT_COUNTARG = "%ctr"
-
-ATTR_VALUE_ALL = "all"
-ATTR_VALUE_NO = "no"
-ATTR_VALUE_RANDOM = "random"
-ATTR_VALUE_YES = "yes"
Copied: CalDAVTester/trunk/src/xmlDefs.py (from rev 239, CalDAVTester/trunk/tests/xmlDefs.py)
===================================================================
--- CalDAVTester/trunk/src/xmlDefs.py (rev 0)
+++ CalDAVTester/trunk/src/xmlDefs.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -0,0 +1,84 @@
+##
+# Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Cyrus Daboo, cdaboo at apple.com
+##
+
+# XML Elements/Attributes
+
+ELEMENT_ACCOUNT = "account"
+ELEMENT_ARG = "arg"
+ELEMENT_CALDAVTEST = "caldavtest"
+ELEMENT_CALENDARS = "calendars"
+ELEMENT_CALLBACK = "callback"
+ELEMENT_CLIENTS = "clients"
+ELEMENT_CONTENTTYPE = "content-type"
+ELEMENT_DATA = "data"
+ELEMENT_DATASOURCE = "datasource"
+ELEMENT_DESCRIPTION = "description"
+ELEMENT_END = "end"
+ELEMENT_FILEPATH = "filepath"
+ELEMENT_GRABLOCATION = "grablocation"
+ELEMENT_HEADER = "header"
+ELEMENT_HOST = "host"
+ELEMENT_KEY = "key"
+ELEMENT_LOGGING = "logging"
+ELEMENT_METHOD = "method"
+ELEMENT_NAME = "name"
+ELEMENT_PATH = "path"
+ELEMENT_PERFINFO = "perfinfo"
+ELEMENT_POPULATE = "populate"
+ELEMENT_PORT = "port"
+ELEMENT_REQUEST = "request"
+ELEMENT_RUNS = "runs"
+ELEMENT_RURI = "ruri"
+ELEMENT_SERVERFILEPATH = "serverfilepath"
+ELEMENT_SERVERINFO = "serverinfo"
+ELEMENT_SPREAD = "spread"
+ELEMENT_SSL = "ssl"
+ELEMENT_START = "start"
+ELEMENT_SUBSTITUTIONS = "substitutions"
+ELEMENT_SUBSTITUTION = "substitution"
+ELEMENT_TEST = "test"
+ELEMENT_TESTINFO = "testinfo"
+ELEMENT_TESTS = "tests"
+ELEMENT_TESTSUITE = "test-suite"
+ELEMENT_THREADS = "threads"
+ELEMENT_VALUE = "value"
+ELEMENT_VERIFY = "verify"
+
+ATTR_AUTH = "auth"
+ATTR_COUNT = "count"
+ATTR_COUNTARG = "countarg"
+ATTR_DETAILS = "details"
+ATTR_ENABLE = "enable"
+ATTR_END_DELETE = "end-delete"
+ATTR_IGNORE = "ignore"
+ATTR_IGNORE_ALL = "ignore-all"
+ATTR_MODE = "mode"
+ATTR_NAME = "name"
+ATTR_PRINT_RESPONSE = "print-response"
+ATTR_PSWD = "pswd"
+ATTR_STATS = "stats"
+ATTR_SUBSTITUTIONS = "substitutions"
+ATTR_USER = "user"
+
+ATTR_DEFAULT_COUNT = 1
+ATTR_DEFAULT_COUNTARG = "%ctr"
+
+ATTR_VALUE_ALL = "all"
+ATTR_VALUE_NO = "no"
+ATTR_VALUE_RANDOM = "random"
+ATTR_VALUE_YES = "yes"
Deleted: CalDAVTester/trunk/sslserverinfo.xml
===================================================================
--- CalDAVTester/trunk/sslserverinfo.xml 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/sslserverinfo.xml 2006-10-10 17:08:43 UTC (rev 264)
@@ -1,111 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-
-<!DOCTYPE serverinfo SYSTEM "serverinfo.dtd">
-
-<!--
- Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- DRI: Cyrus Daboo, cdaboo at apple.com
- -->
-
-<serverinfo>
- <host>localhost</host>
- <port>8443</port>
- <ssl/>
- <calendarpath>/calendars/users/user01/calendar</calendarpath>
- <user>user01</user>
- <pswd>user01</pswd>
- <substitutions>
- <substitution>
- <key>$host:</key>
- <value>https://localhost:8443</value>
- </substitution>
-
- <!-- user id for admin user -->
- <substitution>
- <key>$useradmin:</key>
- <value>admin</value>
- </substitution>
- <!-- password for admin user -->
- <substitution>
- <key>$pswdadmin:</key>
- <value>admin</value>
- </substitution>
- <!-- relative path to admin principal resource-->
- <substitution>
- <key>$principaladmin:</key>
- <value>/principals/users/admin</value>
- </substitution>
-
- <!-- relative path to first user principal resource-->
- <substitution>
- <key>$userid1:</key>
- <value>user01</value>
- </substitution>
- <!-- relative path to first user principal resource-->
- <substitution>
- <key>$principal:</key>
- <value>/principals/users/user01</value>
- </substitution>
- <!-- relative path to first user calendar home-->
- <substitution>
- <key>$pathprefix:</key>
- <value>/calendars/users/user01</value>
- </substitution>
-
- <!-- user id for second user -->
- <substitution>
- <key>$userid2:</key>
- <value>user02</value>
- </substitution>
- <!-- password for second user -->
- <substitution>
- <key>$pswd2:</key>
- <value>user02</value>
- </substitution>
- <!-- relative path to second user principal resource-->
- <substitution>
- <key>$principal2:</key>
- <value>/principals/users/user02</value>
- </substitution>
- <!-- relative path to second user calendar home-->
- <substitution>
- <key>$pathprefix2:</key>
- <value>/calendars/users/user02</value>
- </substitution>
-
- <!-- user id for third user -->
- <substitution>
- <key>$userid3:</key>
- <value>user03</value>
- </substitution>
- <!-- password for third user -->
- <substitution>
- <key>$pswd3:</key>
- <value>user03</value>
- </substitution>
- <!-- relative path to third user principal resource-->
- <substitution>
- <key>$principal3:</key>
- <value>/principals/users/user03</value>
- </substitution>
- <!-- relative path to third user calendar home-->
- <substitution>
- <key>$pathprefix3:</key>
- <value>/calendars/users/user03</value>
- </substitution>
- </substitutions>
- <serverfilepath>/Users/cyrusdaboo/Documents/Development/Apple/eclipse/CalendarServer/twistedcaldav/test/data/</serverfilepath>
-</serverinfo>
Modified: CalDAVTester/trunk/testcaldav.py
===================================================================
--- CalDAVTester/trunk/testcaldav.py 2006-10-07 01:05:56 UTC (rev 263)
+++ CalDAVTester/trunk/testcaldav.py 2006-10-10 17:08:43 UTC (rev 264)
@@ -21,7 +21,7 @@
# Runs a suite of tests defined in a config file against a caldav server
#
-from tests.manager import manager
+from src.manager import manager
import sys
if __name__ == "__main__":
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061010/c60a25d3/attachment.html
More information about the calendarserver-changes
mailing list