[CalendarServer-changes] [10181] CalDAVTester/branches/users/gaya/sharedgroupstester
source_changes at macosforge.org
source_changes at macosforge.org
Mon Dec 17 14:26:01 PST 2012
Revision: 10181
http://trac.calendarserver.org//changeset/10181
Author: gaya at apple.com
Date: 2012-12-17 14:26:01 -0800 (Mon, 17 Dec 2012)
Log Message:
-----------
merge from trunk
Modified Paths:
--------------
CalDAVTester/branches/users/gaya/sharedgroupstester/README.txt
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/organizer-client-server/4.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/11.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/12.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/2.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/7.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/8.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo-partitioning.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo-template.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/implicitscheduleagent.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/verifiers/calendarDataMatch.py
Added Paths:
-----------
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/1.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/10.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/11.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/2.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/3.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/4.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/5.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/6.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/7.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/8.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/9.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/Common/POST/sharingremove23.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/Common/PROPFIND/current-user-privilege-set.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/implicitpartstattimestamp.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-implicit.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-quota.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-recurrence.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-sharing.xml
CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments.xml
Removed Paths:
-------------
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/1.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/10.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/11.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/2.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/3.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/4.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/5.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/6.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/7.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/8.ics
CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/9.ics
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/README.txt
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/README.txt 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/README.txt 2012-12-17 22:26:01 UTC (rev 10181)
@@ -327,8 +327,21 @@
if present, this stores the text representation of an XML
element extracted from the response body in a named variable
which can be used in subsequent requests.
+
+ ELEMENT <grabcalproperty>
+ if present, this stores a calendar property value in a named
+ variable which can be used in subsequent request. The syntax for
+ <name> element is component/propname (e.g. "VEVENT/SUMMARY").
+ ELEMENT <grabcalparameter>
+ if present, this stores a calendar parameter value in a named
+ variable which can be used in subsequent request. The syntax for
+ <name> element is component/propname/paramname$propvalue where
+ the option $propvalue allows a specific property to be selected
+ (e.g. "VEVENT/DTSTART/TZID", or
+ "VEVENT/ATTENDEE/PARTSTAT$mailto:user01 at example.com").
+
VERIFICATION Methods
acltems:
@@ -481,6 +494,41 @@
</arg>
</verify>
+jsonPointerMatch:
+ Compares the response with a JSON pointer and returns TRUE if there
+ is a match, otherwise False.
+ The pointer is the absolute pointer from the root down. A JSON object's
+ string value can be checked by append "~$" and the string value to test
+ to the JSON pointer value. A single "." can be used as a reference-token
+ in the JSON pointer to match against any member or array item at that
+ poisition in the document.
+
+ Argument: 'exists'
+ JSON pointer for a JSON item to check the presence of
+ in the response.
+
+ Argument: 'notexists'
+ JSON pointer for a JSON item to check the absence of
+ in the response.
+
+ Example:
+
+ <verify>
+ <callback>jsonPointerMatch</callback>
+ <arg>
+ <name>exists</name>
+ <value>/responses/response</value>
+ </arg>
+ <arg>
+ <name>notexists</name>
+ <value>/responses/response/name~$ABC</value>
+ </arg>
+ <arg>
+ <name>exists</name>
+ <value>/responses/./name~$XYZ</value>
+ </arg>
+ </verify>
+
multistatusItems:
Performs a check of multi-status response body and checks to see
what hrefs were returned and whether those had a good (2xx) or bad
@@ -691,7 +739,7 @@
</verify>
xmlElementMatch:
- Compares the response with an XML data file and returns TRUE if there
+ Compares the response with an XML path and returns TRUE if there
is a match, otherwise False.
The path is the absolute xpath from the root element down. Attribute, attribute-value
and text contents tests of the matched element can be done using:
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/1.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/1.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,34 +0,0 @@
-BEGIN:VCALENDAR
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-VERSION:2.0
-BEGIN:VTIMEZONE
-LAST-MODIFIED:20040110T032845Z
-TZID:US/Eastern
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-END:VTIMEZONE
-BEGIN:VEVENT
-DTSTAMP:20051222T205953Z
-CREATED:20060101T150000Z
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-SUMMARY:event 1
-UID:event1 at ninevah.local
-ORGANIZER;CN=$username1::$cuaddr1:
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
-ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr2:
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/1.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/1.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/1.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/1.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+VERSION:2.0
+BEGIN:VTIMEZONE
+LAST-MODIFIED:20040110T032845Z
+TZID:US/Eastern
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTAMP:20051222T205953Z
+CREATED:20060101T150000Z
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+SUMMARY:event 1
+UID:event1 at ninevah.local
+ORGANIZER;CN=$username1::$cuaddr1:
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr2:
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/10.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/10.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/10.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,35 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;PARTSTAT=DECLINED;EMAIL=$email2:;X-CALENDARSERVER-DTSTAMP=20080101T000000Z:$cuaddrurn2:
-CREATED:20060101T150000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
-SEQUENCE:1
-SUMMARY:event 1 - changed
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/10.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/10.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/10.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/10.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=DECLINED;EMAIL=$email2:;X-CALENDARSERVER-DTSTAMP=20080101T000000Z:$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+SUMMARY:event 1 - changed
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/11.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/11.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/11.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,35 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;PARTSTAT=DECLINED;EMAIL=$email2:;X-CALENDARSERVER-DTSTAMP=20080101T000000Z:$cuaddrurn2:
-CREATED:20060101T150000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;SCHEDULE-STATUS=1.2;EMAIL=$email1::$cuaddrurn1:
-SEQUENCE:1
-SUMMARY:event 1 - changed
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/11.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/11.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/11.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/11.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=DECLINED;EMAIL=$email2:;X-CALENDARSERVER-DTSTAMP=20080101T000000Z:$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;SCHEDULE-STATUS=1.2;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+SUMMARY:event 1 - changed
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/2.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/2.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,34 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
-CREATED:20060101T150000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
-SUMMARY:event 1
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/2.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/2.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/2.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/2.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/3.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/3.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,35 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;EMAIL=$email2::$cuaddrurn2:
-CREATED:20060101T150000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
-SUMMARY:event 1
-TRANSP:TRANSPARENT
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/3.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/3.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/3.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/3.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;EMAIL=$email2::$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/4.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/4.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,34 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
-CREATED:20060101T151000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
-SUMMARY:event 1
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/4.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/4.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/4.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/4.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2::$cuaddrurn2:
+CREATED:20060101T151000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/5.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/5.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/5.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,34 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2:;X-CALENDARSERVER-DTSTAMP=20080101T000000Z:$cuaddrurn2:
-CREATED:20060101T151000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;EMAIL=$email1:;SCHEDULE-STATUS=1.2:$cuaddrurn1:
-SUMMARY:event 1
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/5.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/5.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/5.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/5.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2:;X-CALENDARSERVER-DTSTAMP=20080101T000000Z:$cuaddrurn2:
+CREATED:20060101T151000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1:;SCHEDULE-STATUS=1.2:$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/6.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/6.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/6.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,34 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0;EMAIL=$email2::$cuaddrurn2:
-CREATED:20060101T150000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
-SUMMARY:event 1
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/6.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/6.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/6.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/6.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,34 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0;EMAIL=$email2::$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:event 1
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/7.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/7.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/7.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,35 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
-ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0:$cuaddr2:
-CREATED:20060101T150000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1::$cuaddr1:
-SEQUENCE:1
-SUMMARY:event 1 - changed
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/7.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/7.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/7.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/7.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0:$cuaddr2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1::$cuaddr1:
+SEQUENCE:1
+SUMMARY:event 1 - changed
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/8.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/8.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/8.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,35 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//Example Inc.//Example Calendar//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
-CREATED:20060101T150000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
-SEQUENCE:1
-SUMMARY:event 1 - changed
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/8.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/8.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/8.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/8.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//Example Inc.//Example Calendar//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+SUMMARY:event 1 - changed
+END:VEVENT
+END:VCALENDAR
Deleted: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/9.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/9.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/9.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -1,35 +0,0 @@
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
-BEGIN:VTIMEZONE
-TZID:US/Eastern
-LAST-MODIFIED:20040110T032845Z
-BEGIN:STANDARD
-DTSTART:20001026T020000
-RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
-TZNAME:EST
-TZOFFSETFROM:-0400
-TZOFFSETTO:-0500
-END:STANDARD
-BEGIN:DAYLIGHT
-DTSTART:20000404T020000
-RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
-TZNAME:EDT
-TZOFFSETFROM:-0500
-TZOFFSETTO:-0400
-END:DAYLIGHT
-END:VTIMEZONE
-BEGIN:VEVENT
-UID:event1 at ninevah.local
-DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
-DURATION:PT1H
-ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2:;X-CALENDARSERVER-DTSTAMP=20080101T000000Z:$cuaddrurn2:
-CREATED:20060101T150000Z
-DTSTAMP:20051222T205953Z
-ORGANIZER;CN=$username1:;SCHEDULE-STATUS=1.2;EMAIL=$email1::$cuaddrurn1:
-SEQUENCE:1
-SUMMARY:event 1 - changed
-END:VEVENT
-END:VCALENDAR
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/9.ics (from rev 10180, CalDAVTester/trunk/Resource/CalDAV/implicit/partstattimestamp/9.ics)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/9.ics (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/partstattimestamp/9.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,35 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
+BEGIN:VTIMEZONE
+TZID:US/Eastern
+LAST-MODIFIED:20040110T032845Z
+BEGIN:STANDARD
+DTSTART:20001026T020000
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
+TZNAME:EST
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:20000404T020000
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
+TZNAME:EDT
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+UID:event1 at ninevah.local
+DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
+DURATION:PT1H
+ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
+ATTENDEE;CN=$username2:;PARTSTAT=ACCEPTED;EMAIL=$email2:;X-CALENDARSERVER-DTSTAMP=20080101T000000Z:$cuaddrurn2:
+CREATED:20060101T150000Z
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;SCHEDULE-STATUS=1.2;EMAIL=$email1::$cuaddrurn1:
+SEQUENCE:1
+SUMMARY:event 1 - changed
+END:VEVENT
+END:VCALENDAR
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/organizer-client-server/4.ics
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/organizer-client-server/4.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/organizer-client-server/4.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -26,7 +26,7 @@
DURATION:PT1H
ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
ATTENDEE;CN=$username2:;RSVP=TRUE;SCHEDULE-AGENT=SERVER;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
-ATTENDEE;CN=$username3:;RSVP=TRUE;SCHEDULE-AGENT=CLIENT;PARTSTAT=NEEDS-ACTION;EMAIL=$email3::$cuaddrurn3:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email3::$cuaddrurn3:
ATTENDEE;CN=$username4:;RSVP=TRUE;SCHEDULE-AGENT=NONE;PARTSTAT=NEEDS-ACTION;EMAIL=$email4::$cuaddrurn4:
CREATED:20060101T150000Z
DTSTAMP:20051222T205953Z
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/11.ics
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/11.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/11.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -30,7 +30,7 @@
UID:event1 at ninevah.local
ORGANIZER;CN=$username1::$cuaddr1:
ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
-ATTENDEE;CN=$username2:;SCHEDULE-AGENT=CLIENT;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr2:
+ATTENDEE;CN=$username2:;SCHEDULE-AGENT=NONE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr2:
ATTENDEE;CN=$username3:;SCHEDULE-AGENT=SERVER;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr3:
END:VEVENT
END:VCALENDAR
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/12.ics
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/12.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/12.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -25,7 +25,7 @@
DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
DURATION:PT1H
ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;RSVP=TRUE;SCHEDULE-AGENT=CLIENT;PARTSTAT=NEEDS-ACTION;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$username2:;RSVP=TRUE;SCHEDULE-AGENT=NONE;PARTSTAT=NEEDS-ACTION;EMAIL=$email2::$cuaddrurn2:
ATTENDEE;CN=$username3:;RSVP=TRUE;SCHEDULE-AGENT=SERVER;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email3::$cuaddrurn3:
CREATED:20060101T150000Z
DTSTAMP:20051222T205953Z
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/2.ics
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/2.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/2.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -26,7 +26,7 @@
DURATION:PT1H
ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
ATTENDEE;CN=$username2:;RSVP=TRUE;SCHEDULE-AGENT=SERVER;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
-ATTENDEE;CN=$username3:;RSVP=TRUE;SCHEDULE-AGENT=CLIENT;PARTSTAT=NEEDS-ACTION;EMAIL=$email3::$cuaddrurn3:
+ATTENDEE;CN=$username3:;RSVP=TRUE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email3::$cuaddrurn3:
ATTENDEE;CN=$username4:;RSVP=TRUE;SCHEDULE-AGENT=NONE;PARTSTAT=NEEDS-ACTION;EMAIL=$email4::$cuaddrurn4:
CREATED:20060101T150000Z
DTSTAMP:20051222T205953Z
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/7.ics
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/7.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/7.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -30,7 +30,7 @@
UID:event1 at ninevah.local
ORGANIZER;CN=$username1::$cuaddr1:
ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED:$cuaddr1:
-ATTENDEE;CN=$username2:;SCHEDULE-AGENT=CLIENT;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr2:
+ATTENDEE;CN=$username2:;SCHEDULE-AGENT=NONE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr2:
ATTENDEE;CN=$username3:;SCHEDULE-AGENT=SERVER;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr3:
ATTENDEE;CN=$username4:;SCHEDULE-AGENT=NONE;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:$cuaddr4:
END:VEVENT
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/8.ics
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/8.ics 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/CalDAV/implicit/scheduleagent/simple/8.ics 2012-12-17 22:26:01 UTC (rev 10181)
@@ -25,7 +25,7 @@
DTSTART;TZID=US/Eastern:$now.year.1:0101T100000
DURATION:PT1H
ATTENDEE;CN=$username1:;PARTSTAT=ACCEPTED;EMAIL=$email1::$cuaddrurn1:
-ATTENDEE;CN=$username2:;RSVP=TRUE;SCHEDULE-AGENT=CLIENT;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
+ATTENDEE;CN=$username2:;RSVP=TRUE;SCHEDULE-AGENT=NONE;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email2::$cuaddrurn2:
ATTENDEE;CN=$username3:;RSVP=TRUE;SCHEDULE-AGENT=SERVER;PARTSTAT=NEEDS-ACTION;SCHEDULE-STATUS=1.2;EMAIL=$email3::$cuaddrurn3:
ATTENDEE;CN=$username4:;RSVP=TRUE;SCHEDULE-AGENT=NONE;PARTSTAT=NEEDS-ACTION;EMAIL=$email4::$cuaddrurn4:
CREATED:20060101T150000Z
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/Common/POST/sharingremove23.xml (from rev 10180, CalDAVTester/trunk/Resource/Common/POST/sharingremove23.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/Common/POST/sharingremove23.xml (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/Common/POST/sharingremove23.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<CS:share xmlns:D="DAV:" xmlns:CS="http://calendarserver.org/ns/">
+ <CS:remove>
+ <D:href>$cuaddr2:</D:href>
+ <CS:read-write/>
+ </CS:remove>
+ <CS:remove>
+ <D:href>$cuaddr3:</D:href>
+ <CS:read/>
+ </CS:remove>
+</CS:share>
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/Common/PROPFIND/current-user-privilege-set.xml (from rev 10180, CalDAVTester/trunk/Resource/Common/PROPFIND/current-user-privilege-set.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/Common/PROPFIND/current-user-privilege-set.xml (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/Resource/Common/PROPFIND/current-user-privilege-set.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:">
+<D:prop>
+<D:current-user-privilege-set/>
+</D:prop>
+</D:propfind>
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo-partitioning.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo-partitioning.xml 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo-partitioning.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -73,6 +73,7 @@
<feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
<feature>maskuid</feature> <!-- maskuid extension -->
<feature>partitioning</feature> <!-- Partitioned server -->
+ <feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
<feature>private-comments</feature> <!-- private-comments extension -->
<feature>private-events</feature> <!-- private-events extension -->
<feature>proxy</feature> <!-- calendar-user-proxy extension -->
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo-template.xml 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo-template.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -73,6 +73,7 @@
<feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
<feature>maskuid</feature> <!-- maskuid extension -->
<!-- <feature>partitioning</feature> --> <!-- Partitioned server -->
+ <feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
<feature>private-comments</feature> <!-- private-comments extension -->
<feature>private-events</feature> <!-- private-events extension -->
<feature>proxy</feature> <!-- calendar-user-proxy extension -->
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo.xml 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/server/serverinfo.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -73,6 +73,7 @@
<feature>managed-attachments</feature> <!-- CalDAV Managed Attachments -->
<feature>maskuid</feature> <!-- maskuid extension -->
<!-- <feature>partitioning</feature> --> <!-- Partitioned server -->
+ <feature>partstat-timestamp</feature> <!-- Time stamps when PARTSTAT changes extension -->
<feature>private-comments</feature> <!-- private-comments extension -->
<feature>private-events</feature> <!-- private-events extension -->
<feature>proxy</feature> <!-- calendar-user-proxy extension -->
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/implicitpartstattimestamp.xml (from rev 10180, CalDAVTester/trunk/scripts/tests/CalDAV/implicitpartstattimestamp.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/implicitpartstattimestamp.xml (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/implicitpartstattimestamp.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,410 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2010 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+ <description>Test implicit scheduling with partstat timestamps added</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>implicit-scheduling</feature>
+ <feature>partstat-timestamp</feature>
+ </require-feature>
+
+ <start>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>GET</method>
+ <ruri>$calendarpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$calendarpath2:/</ruri>
+ </request>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </start>
+
+ <test-suite name='OPTIONS header' ignore='no'>
+ <test name='1'>
+ <description>Look for options header tag on principal</description>
+ <request print-response="no">
+ <method>OPTIONS</method>
+ <ruri>$principal1:</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>*DAV$.*calendarserver-partstat-changes.*</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Look for options header tag on calendar</description>
+ <request print-response="no">
+ <method>OPTIONS</method>
+ <ruri>$calendarpath1:/</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>*DAV$.*calendarserver-partstat-changes.*</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple Changes' ignore='no'>
+ <test name='1'>
+ <description>Organizer invites Attendee</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/implicit/partstattimestamp/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Organizer checks data</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/implicit/partstattimestamp/2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='4'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/implicit/partstattimestamp/3.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Attendee deletes Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Attendee -> Accepted</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>PUT</method>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/implicit/partstattimestamp/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7'>
+ <description>Attendee has data with timestamp</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/implicit/partstattimestamp/5.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>!ATTENDEE:X-CALENDARSERVER-DTSTAMP</value>
+ </arg>
+ </verify>
+ <grabcalparameter>
+ <name>VEVENT/ATTENDEE/X-CALENDARSERVER-DTSTAMP$$cuaddrurn2:</name>
+ <variable>$dtstamp1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Organizer Inbox Item has no timestamp</description>
+ <request print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath1:/</ruri>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>notcontains</name>
+ <value>X-CALENDARSERVER-DTSTAMP</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Organizer deletes Inbox Item</description>
+ <request print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath1:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Organizer data changed</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/implicit/partstattimestamp/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11'>
+ <description>Organizer changes Summary</description>
+ <request print-response='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/implicit/partstattimestamp/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>Organizer checks data</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/implicit/partstattimestamp/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='14'>
+ <description>Attendee has data timestamp unchanged</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/implicit/partstattimestamp/9.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>!ATTENDEE:X-CALENDARSERVER-DTSTAMP</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>X-CALENDARSERVER-DTSTAMP=$dtstamp1:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='15'>
+ <description>Attendee deletes Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>Attendee -> Declined</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>PUT</method>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/implicit/partstattimestamp/10.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='17'>
+ <description>Attendee has data timestamp changed</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/implicit/partstattimestamp/11.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='-1'>
+ <description>Clean-up</description>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath2:/</ruri>
+ </request>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELAY</method>
+ <ruri>2</ruri>
+ </request>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/implicitscheduleagent.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/implicitscheduleagent.xml 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/implicitscheduleagent.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -132,7 +132,7 @@
</request>
</test>
<test name='6'>
- <description>Attendee 3 no Inbox Item</description>
+ <description>Attendee 3 has Inbox Item</description>
<request user="$userid3:" pswd="$pswd3:" print-response='no'>
<method>PROPFIND</method>
<ruri>$inboxpath3:/</ruri>
@@ -148,13 +148,31 @@
<callback>multistatusItems</callback>
<arg>
<name>count</name>
- <value>0</value>
+ <value>1</value>
</arg>
</verify>
</request>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath3:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
</test>
<test name='7'>
- <description>Attendee 3 no data</description>
+ <description>Attendee 3 has data</description>
<request user="$userid3:" pswd="$pswd3:" print-response='no'>
<method>PROPFIND</method>
<ruri>$calendarpath3:/</ruri>
@@ -170,7 +188,7 @@
<callback>multistatusItems</callback>
<arg>
<name>count</name>
- <value>0</value>
+ <value>1</value>
</arg>
</verify>
</request>
@@ -1088,7 +1106,7 @@
</request>
</test>
<test name='9'>
- <description>Attendee 3 no Inbox Item</description>
+ <description>Attendee 3 Inbox Item</description>
<request user="$userid3:" pswd="$pswd3:" print-response='no'>
<method>PROPFIND</method>
<ruri>$inboxpath3:/</ruri>
@@ -1104,13 +1122,13 @@
<callback>multistatusItems</callback>
<arg>
<name>count</name>
- <value>0</value>
+ <value>1</value>
</arg>
</verify>
</request>
</test>
<test name='10'>
- <description>Attendee 3 no data</description>
+ <description>Attendee 3 data</description>
<request user="$userid3:" pswd="$pswd3:" print-response='no'>
<method>PROPFIND</method>
<ruri>$calendarpath3:/</ruri>
@@ -1126,7 +1144,7 @@
<callback>multistatusItems</callback>
<arg>
<name>count</name>
- <value>0</value>
+ <value>1</value>
</arg>
</verify>
</request>
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-implicit.xml (from rev 10180, CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments-implicit.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-implicit.xml (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-implicit.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,1927 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2012 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+ <description>Test managed attachments</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>managed-attachments</feature>
+ <feature>prefer-representation</feature>
+ </require-feature>
+
+ <start/>
+
+ <test-suite name='Add attachment then invite'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-1/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment (with prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-1/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Invite attendee</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-1/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Attendee -> Accepted</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>PUT</method>
+ <ruri>$</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-1/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Organizer Inbox Item</description>
+ <request print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath1:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Organizer data changed</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Uninvite attendee</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-1/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='14' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='-1' ignore='no'>
+ <description>Clean-up</description>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Add attachment then invite - attendee deletes'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-2/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment (with prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-2/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-2/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-2/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Invite attendee</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-2/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-2/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-2/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-2/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Attendee deletes</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Organizer Inbox Item</description>
+ <request print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath1:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Organizer data changed</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-2/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-2/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-2/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='-1' ignore='no'>
+ <description>Clean-up</description>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Invite then add, update, remove attachment'>
+ <test name='1' ignore='no'>
+ <description>Invite attendee</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-3/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Add attachment (with prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-3/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/4.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/5.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/3.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/3.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Update attachment (with prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-update&managed-id=$managed_id1:</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-3/6.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/7.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach2:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size2:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/6.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/6.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Remove attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-remove&managed-id=$managed_id2:</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-3/10.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='-1' ignore='no'>
+ <description>Clean-up</description>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Attendee cannot add attachment via post'>
+ <test name='1' ignore='no'>
+ <description>Invite attendee</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-4/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-4/2.ics</value>
+ </arg>
+ </verify>
+ <graburi>$attendee2_data:</graburi>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Add attachment (with prefer) - fails</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>POST</method>
+ <ruri>$attendee2_data:?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-4/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{urn:ietf:params:xml:ns:caldav}valid-attachment-add</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Attendee data unchanged</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-4/2.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Organizer data unchanged</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-4/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='-1' ignore='no'>
+ <description>Clean-up</description>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Attendee cannot update or remove attachment via post'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-5/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment (with prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-5/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Invite attendee</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-5/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/4.ics</value>
+ </arg>
+ </verify>
+ <graburi>$attendee2_data:</graburi>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-1/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Update attachment (with prefer) - fails</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>POST</method>
+ <ruri>$attendee2_data:?action=attachment-update&managed-id=$managed_id1</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-5/5.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{urn:ietf:params:xml:ns:caldav}valid-attachment-update</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Data unchanged</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GET</method>
+ <ruri>$attendee2_data:</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Remove attachment (with prefer) - fails</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>POST</method>
+ <ruri>$attendee2_data:?action=attachment-remove&managed-id=$managed_id1</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{urn:ietf:params:xml:ns:caldav}valid-attachment-remove</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>Data unchanged</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GET</method>
+ <ruri>$attendee2_data:</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/4.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-5/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='-1' ignore='no'>
+ <description>Clean-up</description>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+
+ <test-suite name='Attendee cannot add, update, remove attachment via edit'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-6/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment (with prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-6/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>PUT attendee event</description>
+ <request user="$userid2:" pswd="$pswd2:" end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath2:/2.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-6/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Add attendee event attachment (with prefer)</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>POST</method>
+ <ruri>$calendarpath2:/2.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-6/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/3.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach2:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size2:</variable>
+ </grabcalparameter>
+ </request>
+ <request>
+ <method>DELAY</method>
+ <ruri>1</ruri>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/4.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Invite attendee</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-6/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='8'>
+ <description>Attendee Inbox Item</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$inboxpath2:/</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>DELETE</method>
+ <ruri>$</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>204</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9'>
+ <description>Attendee has data</description>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$calendarpath2:/</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/6.ics</value>
+ </arg>
+ </verify>
+ <graburi>$attendee2_data:</graburi>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Add attachment - fails silently</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$attendee2_data:</ruri>
+ <data>
+ <content-type>text/calendar</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-6/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='12'>
+ <description>Data unchanged</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GET</method>
+ <ruri>$attendee2_data:</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='13' ignore='no'>
+ <description>Update attachment - fails silently</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$attendee2_data:</ruri>
+ <data>
+ <content-type>text/calendar</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-6/9.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='14'>
+ <description>Data unchanged</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GET</method>
+ <ruri>$attendee2_data:</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='15' ignore='no'>
+ <description>Remove attachment - fails silently</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>PUT</method>
+ <ruri>$attendee2_data:</ruri>
+ <data>
+ <content-type>text/calendar</content-type>
+ <filepath>Resource/CalDAV/managedattachments/implicit-6/10.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='16'>
+ <description>Data unchanged</description>
+ <request print-response='no'>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GET</method>
+ <ruri>$attendee2_data:</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/6.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='17' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='18' ignore='no'>
+ <description>Check access to attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/implicit-6/4.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='-1' ignore='no'>
+ <description>Clean-up</description>
+ <request user="$userid1:" pswd="$pswd1:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath1:/</ruri>
+ <ruri>$inboxpath1:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETEALL</method>
+ <ruri>$calendarpath2:/</ruri>
+ <ruri>$inboxpath2:/</ruri>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-quota.xml (from rev 10180, CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments-quota.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-quota.xml (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-quota.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,278 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2012 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+ <description>Test managed attachments and quota</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>managed-attachments</feature>
+ <feature>prefer-representation</feature>
+ <feature>quota</feature>
+ </require-feature>
+
+ <start/>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment no prefer'>
+ <test name='1' ignore='no'>
+ <description>Quota check</description>
+ <request print-response='no'>
+ <exclude-feature>
+ <feature>quota-on-resources</feature>
+ </exclude-feature>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}resourcetype</value>
+ <value>{DAV:}quota-available-bytes</value>
+ <value>{DAV:}quota-used-bytes$0</value>
+ </arg>
+ </verify>
+ <grabelement>
+ <name>$verify-property-prefix:/{DAV:}quota-used-bytes</name>
+ <variable>$quota1:</variable>
+ </grabelement>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/quota/2.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Quota check</description>
+ <request print-response='no'>
+ <exclude-feature>
+ <feature>quota-on-resources</feature>
+ </exclude-feature>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}resourcetype</value>
+ <value>{DAV:}quota-available-bytes</value>
+ <value>{DAV:}quota-used-bytes$$quota1:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/quota/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Quota check</description>
+ <request print-response='no'>
+ <exclude-feature>
+ <feature>quota-on-resources</feature>
+ </exclude-feature>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}resourcetype</value>
+ <value>{DAV:}quota-available-bytes</value>
+ <value>{DAV:}quota-used-bytes!$quota1:</value>
+ </arg>
+ </verify>
+ <grabelement>
+ <name>$verify-property-prefix:/{DAV:}quota-used-bytes</name>
+ <variable>$quota2:</variable>
+ </grabelement>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Update attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-update&managed-id=$managed-id:</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test2.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/quota/4.txt</filepath>
+ </data>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test2.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=$managed-id:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Quota check</description>
+ <request print-response='no'>
+ <exclude-feature>
+ <feature>quota-on-resources</feature>
+ </exclude-feature>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}resourcetype</value>
+ <value>{DAV:}quota-available-bytes</value>
+ <value>{DAV:}quota-used-bytes!$quota2:</value>
+ </arg>
+ </verify>
+ <grabelement>
+ <name>$verify-property-prefix:/{DAV:}quota-used-bytes</name>
+ <variable>$quota3:</variable>
+ </grabelement>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Quota check</description>
+ <request print-response='no'>
+ <exclude-feature>
+ <feature>quota-on-resources</feature>
+ </exclude-feature>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/quota/1.xml</filepath>
+ </data>
+ <verify>
+ <callback>propfindItems</callback>
+ <arg>
+ <name>okprops</name>
+ <value>{DAV:}resourcetype</value>
+ <value>{DAV:}quota-available-bytes</value>
+ <value>{DAV:}quota-used-bytes!$quota3:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-recurrence.xml (from rev 10180, CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments-recurrence.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-recurrence.xml (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-recurrence.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,322 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2012 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+ <description>Test managed attachments with recurrences - instance attachments disabled right now</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>managed-attachments</feature>
+ <feature>prefer-representation</feature>
+ </require-feature>
+
+ <start/>
+
+ <test-suite name='Cannot add attachment to instance'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/recurrence/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/recurrence/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment (no prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add&rid=$now.year.1:0102T120000Z</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/recurrence/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>!Cal-Managed-ID</value>
+ <value>!Location</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for no ATTACH property</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/recurrence/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Recurring with override, update attachment'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/recurrence/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/recurrence/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/recurrence/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/recurrence/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/recurrence/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Update attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-update&managed-id=$managed-id:</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test2.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/recurrence/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/recurrence/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test2.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=$managed-id:</value>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>;FILENAME=test.txt</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID$$managed-id:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/recurrence/3.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-sharing.xml (from rev 10180, CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments-sharing.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-sharing.xml (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments-sharing.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,1343 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2012 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+ <description>Test managed attachments with shared calendars</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>managed-attachments</feature>
+ <feature>prefer-representation</feature>
+ <feature>shared-calendars</feature>
+ </require-feature>
+
+ <start>
+ <request end-delete="yes">
+ <method>MKCALENDAR</method>
+ <ruri>$calendarhome1:/shared/</ruri>
+ </request>
+ <request print-response='no'>
+ <method>POST</method>
+ <ruri>$calendarhome1:/shared/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/POST/sharinginvite23.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$notificationpath2:/</ruri>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$notificationpath2:/</ruri>
+ <grabelement>
+ <name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
+ <variable>$inviteuid2:</variable>
+ </grabelement>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:" print-response='no'>
+ <method>POST</method>
+ <ruri>$calendarhome2:/</ruri>
+ <data substitutions='yes'>
+ <content-type>application/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/POST/sharingreply2.xml</filepath>
+ </data>
+ <grabelement>
+ <name>{DAV:}href</name>
+ <variable>$sharedcalendar2:</variable>
+ </grabelement>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>WAITCOUNT 1</method>
+ <ruri>$notificationpath3:/</ruri>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>GETNEW</method>
+ <ruri>$notificationpath3:/</ruri>
+ <grabelement>
+ <name>{http://calendarserver.org/ns/}invite-notification/{http://calendarserver.org/ns/}uid</name>
+ <variable>$inviteuid3:</variable>
+ </grabelement>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:" print-response='no'>
+ <method>POST</method>
+ <ruri>$calendarhome3:/</ruri>
+ <data substitutions='yes'>
+ <content-type>application/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/POST/sharingreply3.xml</filepath>
+ </data>
+ <grabelement>
+ <name>{DAV:}href</name>
+ <variable>$sharedcalendar3:</variable>
+ </grabelement>
+ </request>
+ </start>
+
+ <test-suite name='Sharer add attachment'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Sharer add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarhome1:/shared/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Remove attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarhome1:/shared/1.ics?action=attachment-remove&managed-id=$managed-id:</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Sharee add attachment'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Read-only sharee cannot add attachment</description>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>POST</method>
+ <ruri>$sharedcalendar3:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Sharee can add attachment</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>POST</method>
+ <ruri>$sharedcalendar2:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Read-only sharee cannot remove attachment</description>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>POST</method>
+ <ruri>$sharedcalendar3:/1.ics?action=attachment-remove&managed-id=$managed-id:</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Sharee remove attachment</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>POST</method>
+ <ruri>$sharedcalendar2:/1.ics?action=attachment-remove&managed-id=$managed-id:</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Sharee add attachment existing managed-id'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Sharer add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarhome1:/shared/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location1:</variable>
+ </grabheader>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>PUT another event</description>
+ <request user="$userid2:" pswd="$pswd2:" end-delete='no'>
+ <method>PUT</method>
+ <ruri>$sharedcalendar2:/2.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/3.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/3.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>;MANAGED-ID=$managed_id1:</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag2:</variable>
+ </grabheader>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach2:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size2:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarhome1:/shared/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='No access after move'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Sharer add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarhome1:/shared/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Move</description>
+ <request print-response='no'>
+ <method>MOVE</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <header>
+ <name>Destination</name>
+ <value>$host:$calendarpath1:/move1.ics</value>
+ </header>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/move1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='No access after unshare'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Sharer add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarhome1:/shared/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/sharing/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/sharing/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Unshare</description>
+ <request print-response='no'>
+ <method>POST</method>
+ <ruri>$calendarhome1:/shared/</ruri>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/POST/sharingremove23.xml</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment - sharer</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for attachment - sharees</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid3:" pswd="$pswd3:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Check for attachment - non sharee</description>
+ <request user="$userid4:" pswd="$pswd4:">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarhome1:/shared/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end>
+ <request user="$useradmin:" pswd="$pswdadmin:">
+ <method>DELETEALL</method>
+ <ruri>$notificationpath1:/</ruri>
+ <ruri>$notificationpath2:/</ruri>
+ <ruri>$notificationpath3:/</ruri>
+ </request>
+ </end>
+
+</caldavtest>
Copied: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments.xml (from rev 10180, CalDAVTester/trunk/scripts/tests/CalDAV/managed-attachments.xml)
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments.xml (rev 0)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CalDAV/managed-attachments.xml 2012-12-17 22:26:01 UTC (rev 10181)
@@ -0,0 +1,2575 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2012 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+ <description>Test managed attachments</description>
+
+ <require-feature>
+ <feature>caldav</feature>
+ <feature>managed-attachments</feature>
+ <feature>prefer-representation</feature>
+ </require-feature>
+
+ <start/>
+
+ <test-suite name='OPTIONS header'>
+ <test name='1'>
+ <description>Look for options header tag on principal</description>
+ <request print-response="no">
+ <method>OPTIONS</method>
+ <ruri>$principal1:</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>*DAV$.*calendar-managed-attachments*</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='2'>
+ <description>Look for options header tag on calendar</description>
+ <request print-response="no">
+ <method>OPTIONS</method>
+ <ruri>$calendarpath1:/</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>*DAV$.*calendar-managed-attachments*</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name="Privileges on Attachments Collection">
+ <test name='1' ignore='no'>
+ <description>Check for schedule privilege on iTIP Inbox</description>
+ <request print-response='no'>
+ <method>PROPFIND</method>
+ <ruri>$calendarhome1:/$attachments:/</ruri>
+ <header>
+ <name>Depth</name>
+ <value>0</value>
+ </header>
+ <data>
+ <content-type>text/xml; charset=utf-8</content-type>
+ <filepath>Resource/Common/PROPFIND/current-user-privilege-set.xml</filepath>
+ </data>
+ <verify>
+ <callback>aclItems</callback>
+ <arg>
+ <name>granted</name>
+ <value>{DAV:}read</value>
+ <value>{DAV:}read-current-user-privilege-set</value>
+ </arg>
+ <arg>
+ <name>denied</name>
+ <value>{DAV:}write</value>
+ <value>{DAV:}write-acl</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment no prefer'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment (no prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for ATTACH property</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>ETag!$etag:</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=</value>
+ <value>;FMTTYPE=</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=$managed-id:</value>
+ <value>:$location:</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>No access for anyone else</description>
+ <request user="user02" pswd="user02">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>403</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>No access for anyone else</description>
+ <request auth="no">
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>401</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Remove attachment (no prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-remove&managed-id=$managed-id:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for no ATTACH property</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>ETag!$etag:</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment with prefer'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment (with prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=</value>
+ <value>;FMTTYPE=</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for ATTACH property</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>ETag!$etag:</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=</value>
+ <value>;FMTTYPE=</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=$managed-id:</value>
+ <value>:$location:</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Remove attachment (with prefer)</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-remove&managed-id=$managed-id:</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Check for no ATTACH property</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>ETag!$etag:</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled resource with attachment removal'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=</value>
+ <value>;FMTTYPE=</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled remove attachment'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=</value>
+ <value>;FMTTYPE=</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Remove attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-remove&managed-id=$managed-id:</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test2.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>!Cal-Managed-ID:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled remove attachment invalid'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=</value>
+ <value>;FMTTYPE=</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Remove attachment fails</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-remove&managed-id=12345</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test2.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{urn:ietf:params:xml:ns:caldav}valid-managed-id-parameter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for unchanged ATTACH property</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>ETag$$etag:</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=</value>
+ <value>;FMTTYPE=</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=$managed-id:</value>
+ <value>:$location:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled update attachment'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Update attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-update&managed-id=$managed-id:</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test2.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test2.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=$managed-id:</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID$$managed-id:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/3.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled update attachment invalid'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabheader>
+ <name>Cal-Managed-ID</name>
+ <variable>$managed-id:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>Update attachment fails</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-update&managed-id=12345</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test2.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{urn:ietf:params:xml:ns:caldav}valid-managed-id-parameter</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for unchanged ATTACH property</description>
+ <request>
+ <method>GET</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>ETag$$etag:</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=</value>
+ <value>;FMTTYPE=</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=$managed-id:</value>
+ <value>:$location:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment - invalid managed-id'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{urn:ietf:params:xml:ns:caldav}valid-managed-id</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment - someone elses managed-id'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag1:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>PUT event by other user</description>
+ <request user="$userid2:" pswd="$pswd2:" end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath2:/2.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/9.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Delete calendar data</description>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>DELETE</method>
+ <ruri>$calendarpath2:/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ <request user="$userid2:" pswd="$pswd2:">
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{DAV:}need-privileges</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Delete original calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment existing managed-id'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag1:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>PUT another event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/4.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>;MANAGED-ID=$managed_id1:</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag2:</variable>
+ </grabheader>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach2:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size2:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Update original attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-update&managed-id=$managed_id1:</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test2.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/3.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test2.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=$managed_id1:</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/3.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Delete original calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='12' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment on update - invalid managed-id'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/5.ics</filepath>
+ </data>
+ <verify>
+ <callback>prepostcondition</callback>
+ <arg>
+ <name>error</name>
+ <value>{urn:ietf:params:xml:ns:caldav}valid-managed-id</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment update existing managed-id'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag1:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>PUT event another event without attachment</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/6.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/6.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag1:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>PUT update other event to add attachment</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/4.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/4.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>notcontains</name>
+ <value>;MANAGED-ID=$managed_id1:</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag2:</variable>
+ </grabheader>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach2:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype2:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size2:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>PUT to remove original attachment</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='8' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='9' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='10' ignore='no'>
+ <description>Delete original calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='11' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach2:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='12' ignore='no'>
+ <description>Delete calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/2.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='13' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <test-suite name='Simple non-recurring, non-scheduled add attachment update trying to change property'>
+ <test name='1' ignore='no'>
+ <description>PUT event</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/1.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>ETag</name>
+ <variable>$etag1:</variable>
+ </grabheader>
+ </request>
+ </test>
+ <test name='2' ignore='no'>
+ <description>Add attachment</description>
+ <request>
+ <method>POST</method>
+ <ruri>$calendarpath1:/1.ics?action=attachment-add</ruri>
+ <header>
+ <name>Content-Disposition</name>
+ <value>attachment;filename=test.txt</value>
+ </header>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/plain</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/2.txt</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/1.ics</value>
+ </arg>
+ <arg>
+ <name>filter</name>
+ <value>ATTACH</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>dataString</callback>
+ <arg>
+ <name>unwrap</name>
+ <value/>
+ </arg>
+ <arg>
+ <name>contains</name>
+ <value>ATTACH</value>
+ <value>;FILENAME=test.txt</value>
+ <value>;FMTTYPE=text/plain</value>
+ <value>;SIZE=</value>
+ <value>;MTAG=</value>
+ <value>;MANAGED-ID=</value>
+ </arg>
+ </verify>
+ <verify>
+ <callback>header</callback>
+ <arg>
+ <name>header</name>
+ <value>Cal-Managed-ID</value>
+ </arg>
+ </verify>
+ <grabheader>
+ <name>Location</name>
+ <variable>$location:</variable>
+ </grabheader>
+ <grabcalproperty>
+ <name>VEVENT/ATTACH</name>
+ <variable>$attach1:</variable>
+ </grabcalproperty>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MANAGED-ID</name>
+ <variable>$managed_id1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/MTAG</name>
+ <variable>$mtag1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FILENAME</name>
+ <variable>$filename1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/FMTTYPE</name>
+ <variable>$fmttype1:</variable>
+ </grabcalparameter>
+ <grabcalparameter>
+ <name>VEVENT/ATTACH/SIZE</name>
+ <variable>$size1:</variable>
+ </grabcalparameter>
+ </request>
+ </test>
+ <test name='3' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='4' ignore='no'>
+ <description>PUT update other event to change attachment</description>
+ <request end-delete='no'>
+ <method>PUT</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <header>
+ <name>Prefer</name>
+ <value>return-representation</value>
+ </header>
+ <data>
+ <content-type>text/calendar; charset=utf-8</content-type>
+ <filepath>Resource/CalDAV/managedattachments/simple/7.ics</filepath>
+ </data>
+ <verify>
+ <callback>calendarDataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/8.ics</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='5' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$attach1:</ruri>
+ <verify>
+ <callback>dataMatch</callback>
+ <arg>
+ <name>filepath</name>
+ <value>Resource/CalDAV/managedattachments/simple/2.txt</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ <test name='6' ignore='no'>
+ <description>Delete original calendar data</description>
+ <request>
+ <method>DELETE</method>
+ <ruri>$calendarpath1:/1.ics</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ </verify>
+ </request>
+ </test>
+ <test name='7' ignore='no'>
+ <description>Check for attachment</description>
+ <request>
+ <method>GET</method>
+ <ruri>$location:</ruri>
+ <verify>
+ <callback>statusCode</callback>
+ <arg>
+ <name>status</name>
+ <value>404</value>
+ </arg>
+ </verify>
+ </request>
+ </test>
+ </test-suite>
+
+ <end/>
+
+</caldavtest>
Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/verifiers/calendarDataMatch.py
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/verifiers/calendarDataMatch.py 2012-12-17 21:02:48 UTC (rev 10180)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/verifiers/calendarDataMatch.py 2012-12-17 22:26:01 UTC (rev 10181)
@@ -33,6 +33,7 @@
if "EMAIL parameter" not in manager.server_info.features:
filters.append("ATTENDEE:EMAIL")
filters.append("ORGANIZER:EMAIL")
+ filters.append("ATTENDEE:X-CALENDARSERVER-DTSTAMP")
filters.append("CALSCALE")
filters.append("PRODID")
filters.append("DTSTAMP")
@@ -40,6 +41,11 @@
filters.append("LAST-MODIFIED")
filters.append("X-WR-CALNAME")
+ for afilter in tuple(filters):
+ if afilter[0] == "!" and afilter[1:] in filters:
+ filters.remove(afilter[1:])
+ filters = filter(lambda x: x[0] != "!", filters)
+
# status code must be 200, 201, 207
if response.status not in (200, 201, 207):
return False, " HTTP Status Code Wrong: %d" % (response.status,)
@@ -79,8 +85,8 @@
for properties in component.getProperties().itervalues():
allProps.extend(properties)
for property in allProps:
- # Always reset DTSTAMP on this X- prop
- if property.getName() == "X-CALENDARSERVER-ATTENDEE-COMMENT":
+ # Always reset DTSTAMP on these properties
+ if property.getName() in ("ATTENDEE", "X-CALENDARSERVER-ATTENDEE-COMMENT"):
if property.hasAttribute("X-CALENDARSERVER-DTSTAMP"):
property.replaceAttribute(PyCalendarAttribute("X-CALENDARSERVER-DTSTAMP", "20080101T000000Z"))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20121217/da6fa246/attachment-0001.html>
More information about the calendarserver-changes
mailing list