[CalendarServer-changes] [11915] CalDAVTester/trunk

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 12 11:23:04 PDT 2014


Revision: 11915
          http://trac.calendarserver.org//changeset/11915
Author:   cdaboo at apple.com
Date:     2013-11-08 12:38:45 -0800 (Fri, 08 Nov 2013)
Log Message:
-----------
Update to new pycalendar api. Add tests for vpoll (currently not enabled).

Modified Paths:
--------------
    CalDAVTester/trunk/scripts/server/serverinfo-pod.xml
    CalDAVTester/trunk/scripts/server/serverinfo-template.xml
    CalDAVTester/trunk/scripts/server/serverinfo.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/implicitdefaultcalendar.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/sync-report.xml
    CalDAVTester/trunk/src/caldavtest.py
    CalDAVTester/trunk/verifiers/addressDataMatch.py
    CalDAVTester/trunk/verifiers/calendarDataMatch.py
    CalDAVTester/trunk/verifiers/freeBusy.py
    CalDAVTester/trunk/verifiers/postFreeBusy.py
    CalDAVTester/trunk/verifiers/xmlElementMatch.py

Added Paths:
-----------
    CalDAVTester/trunk/Resource/CalDAV/polls/
    CalDAVTester/trunk/Resource/CalDAV/polls/put/
    CalDAVTester/trunk/Resource/CalDAV/polls/put/1.ics
    CalDAVTester/trunk/Resource/CalDAV/polls/put/2.ics
    CalDAVTester/trunk/Resource/CalDAV/polls/put/3.ics
    CalDAVTester/trunk/Resource/CalDAV/polls/put/4.ics
    CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/
    CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/1.xml
    CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/2.xml
    CalDAVTester/trunk/scripts/tests/CalDAV/polls.xml

Added: CalDAVTester/trunk/Resource/CalDAV/polls/put/1.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/polls/put/1.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/polls/put/1.ics	2013-11-08 20:38:45 UTC (rev 11915)
@@ -0,0 +1,10 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VPOLL
+UID:put-1 at example.com
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:poll 1
+END:VPOLL
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/polls/put/2.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/polls/put/2.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/polls/put/2.ics	2013-11-08 20:38:45 UTC (rev 11915)
@@ -0,0 +1,10 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VPOLL
+UID:put-1 at example.com
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+SUMMARY:poll 1
+END:VPOLL
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/polls/put/3.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/polls/put/3.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/polls/put/3.ics	2013-11-08 20:38:45 UTC (rev 11915)
@@ -0,0 +1,28 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VPOLL
+UID:put-2 at example.com
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+POLL-MODE:BASIC
+POLL-PROPERTIES:DTSTART,DTEND
+SUMMARY:poll 1
+BEGIN:VEVENT
+UID:event-1 at example.com
+DTSTART;VALUE=DATE:20130101
+DTEND;VALUE=DATE:20130102
+DTSTAMP:20020101T000000Z
+POLL-ITEM-ID:1
+SUMMARY:Party option #1
+END:VEVENT
+BEGIN:VEVENT
+UID:event-2 at example.com
+DTSTART;VALUE=DATE:20130201
+DTEND;VALUE=DATE:20130202
+DTSTAMP:20020101T000000Z
+POLL-ITEM-ID:2
+SUMMARY:Party option #2
+END:VEVENT
+END:VPOLL
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/polls/put/4.ics
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/polls/put/4.ics	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/polls/put/4.ics	2013-11-08 20:38:45 UTC (rev 11915)
@@ -0,0 +1,28 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VPOLL
+UID:put-2 at example.com
+DTSTAMP:20051222T205953Z
+ORGANIZER;CN=$username1:;EMAIL=$email1::$cuaddrurn1:
+POLL-MODE:BASIC
+POLL-PROPERTIES:DTSTART,DTEND
+SUMMARY:poll 1
+BEGIN:VEVENT
+UID:event-1 at example.com
+DTSTART;VALUE=DATE:20130101
+DTEND;VALUE=DATE:20130102
+DTSTAMP:20020101T000000Z
+POLL-ITEM-ID:1
+SUMMARY:Party option #1
+END:VEVENT
+BEGIN:VEVENT
+UID:event-2 at example.com
+DTSTART;VALUE=DATE:20130201
+DTEND;VALUE=DATE:20130202
+DTSTAMP:20020101T000000Z
+POLL-ITEM-ID:2
+SUMMARY:Party option #2
+END:VEVENT
+END:VPOLL
+END:VCALENDAR

Added: CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/1.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/1.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/1.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+<D:prop>
+<C:supported-calendar-component-sets/>
+</D:prop>
+</D:propfind>

Added: CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/2.xml
===================================================================
--- CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/2.xml	                        (rev 0)
+++ CalDAVTester/trunk/Resource/CalDAV/polls/supported-component-set/2.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+<D:prop>
+<C:supported-calendar-component-set/>
+</D:prop>
+</D:propfind>

Modified: CalDAVTester/trunk/scripts/server/serverinfo-pod.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-pod.xml	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/scripts/server/serverinfo-pod.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -103,6 +103,7 @@
 		<feature>timezone-service</feature>				<!-- Timezone service extension for Wiki -->
 		<feature>timezone-std-service</feature>			<!-- Timezone standard service extension -->
 		<feature>vavailability</feature>				<!-- VAVAILABILITY on inbox -->
+		<!-- <feature>vpoll</feature> -->				<!-- VPOLL support for store and scheduling -->
 		<feature>webcal</feature>						<!-- Internet calendar subscription via GET on calendar collection -->
 
 		<!-- CardDAV specific extension -->

Modified: CalDAVTester/trunk/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-template.xml	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/scripts/server/serverinfo-template.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -98,6 +98,7 @@
 		<feature>timezone-service</feature>				<!-- Timezone service extension for Wiki -->
 		<feature>timezone-std-service</feature>			<!-- Timezone standard service extension -->
 		<feature>vavailability</feature>				<!-- VAVAILABILITY on inbox -->
+		<!-- <feature>vpoll</feature> -->				<!-- VPOLL support for store and scheduling -->
 		<feature>webcal</feature>						<!-- Internet calendar subscription via GET on calendar collection -->
 
 		<!-- CardDAV specific extension -->

Modified: CalDAVTester/trunk/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo.xml	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/scripts/server/serverinfo.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -98,6 +98,7 @@
 		<feature>timezone-service</feature>				<!-- Timezone service extension for Wiki -->
 		<feature>timezone-std-service</feature>			<!-- Timezone standard service extension -->
 		<feature>vavailability</feature>				<!-- VAVAILABILITY on inbox -->
+		<!-- <feature>vpoll</feature> -->				<!-- VPOLL support for store and scheduling -->
 		<feature>webcal</feature>						<!-- Internet calendar subscription via GET on calendar collection -->
 
 		<!-- CardDAV specific extension -->
@@ -248,6 +249,12 @@
 			<value>tasks</value>
 		</substitution>
 
+		<!-- primary polls-only calendar name-->
+		<substitution>
+			<key>$polls:</key>
+			<value>polls</value>
+		</substitution>
+
 		<!-- inbox name-->
 		<substitution>
 			<key>$inbox:</key>
@@ -485,6 +492,11 @@
 				<key>$taskspath%d:</key>
 				<value>$calendarhome%d:/$tasks:</value>
 			</substitution>
+			<!-- relative path to user polls calendar-->
+			<substitution>
+				<key>$pollspath%d:</key>
+				<value>$calendarhome%d:/$polls:</value>
+			</substitution>
 			<!-- relative path to user inbox-->
 			<substitution>
 				<key>$inboxpath%d:</key>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/implicitdefaultcalendar.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/implicitdefaultcalendar.xml	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/implicitdefaultcalendar.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -357,7 +357,7 @@
 					</arg>
 					<arg>
 						<name>nohrefs</name>
-						<value>events/</value>
+						<value>$calendar:/</value>
 					</arg>
 				</verify>
 			</request>
@@ -424,7 +424,7 @@
 					</arg>
 					<arg>
 						<name>okhrefs</name>
-						<value>events/</value>
+						<value>$calendar:/</value>
 					</arg>
 				</verify>
 			</request>
@@ -433,7 +433,7 @@
 			<description>Attendee has data</description>
 			<request user="$userid10:" pswd="$pswd10:" print-response='no'>
 				<method>GETNEW</method>
-				<ruri>$calendarhome10:/events/</ruri>
+				<ruri>$calendarpath10:/</ruri>
 				<verify>
 					<callback>calendarDataMatch</callback>
 					<arg>
@@ -451,7 +451,7 @@
 			</request>
 			<request user="$userid10:" pswd="$pswd10:">
 				<method>DELETEALL</method>
-				<ruri>$calendarhome10:/events/</ruri>
+				<ruri>$calendarpath10:/</ruri>
 			</request>
 			<request user="$userid1:" pswd="$pswd1:">
 				<method>DELETEALL</method>
@@ -461,14 +461,6 @@
 				<method>DELETEALL</method>
 				<ruri>$inboxpath10:/</ruri>
 			</request>
-			<request user="$userid10:" pswd="$pswd10:" print-response='no'>
-				<method>MKCALENDAR</method>
-				<ruri>$calendarpath10:/</ruri>
-			</request>
-			<request user="$userid10:" pswd="$pswd10:">
-				<method>DELETE</method>
-				<ruri>$calendarhome10:/events/</ruri>
-			</request>
 		</test>
 	</test-suite>
 	

Added: CalDAVTester/trunk/scripts/tests/CalDAV/polls.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/polls.xml	                        (rev 0)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/polls.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -0,0 +1,171 @@
+<?xml version="1.0" standalone="no"?>
+
+<!DOCTYPE caldavtest SYSTEM "caldavtest.dtd">
+
+<!--
+ Copyright (c) 2006-2013 Apple Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<caldavtest>
+	<description>Test PUT method in CalDAV</description>
+
+	<require-feature>
+		<feature>caldav</feature>
+		<feature>vpoll</feature>
+	</require-feature>
+
+	<start/>
+
+	<test-suite name='supported-component-set'>
+		<test name='1'>
+			<require-feature>
+				<feature>supported-component-sets</feature>
+			</require-feature>
+			<description>Check calendar home for property</description>
+			<request>
+				<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/polls/supported-component-set/1.xml</filepath>
+				</data>
+				<verify>
+					<exclude-feature>
+						<feature>supported-component-sets-one</feature>
+					</exclude-feature>
+					<callback>propfindItems</callback>
+					<arg>
+						<name>okprops</name>
+						<value>{urn:ietf:params:xml:ns:caldav}supported-calendar-component-sets$</value>
+					</arg>
+				</verify>
+				<verify>
+					<require-feature>
+						<feature>supported-component-sets-one</feature>
+					</require-feature>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-sets/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VEVENT"]</value>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-sets/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VTODO"]</value>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-sets/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VPOLL"]</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='2'>
+			<description>Check calendar for property</description>
+			<request>
+				<method>PROPFIND</method>
+				<ruri>$pollspath1:/</ruri>
+				<header>
+					<name>Depth</name>
+					<value>0</value>
+				</header>
+				<data>
+					<content-type>text/xml; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/polls/supported-component-set/2.xml</filepath>
+				</data>
+				<verify>
+					<require-feature>
+						<feature>exclude-calendars</feature>
+					</require-feature>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VEVENT"]</value>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VTODO"]</value>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VPOLL"]</value>
+					</arg>
+				</verify>
+				<verify>
+					<require-feature>
+						<feature>split-calendars</feature>
+					</require-feature>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VPOLL"]</value>
+					</arg>
+					<arg>
+						<name>notexists</name>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VEVENT"]</value>
+						<value>$verify-property-prefix:/{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set/{urn:ietf:params:xml:ns:caldav}comp[@name="VTODO"]</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+
+	<test-suite name='PUT VPOLL' ignore='no'>
+		<test name='1' ignore='no'>
+			<description>PUT unscheduled empty poll</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$pollspath1:/1.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/polls/put/1.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>GET</method>
+				<ruri>$pollspath1:/1.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/polls/put/2.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+		<test name='2' ignore='no'>
+			<description>PUT unscheduled event poll</description>
+			<request end-delete='yes'>
+				<method>PUT</method>
+				<ruri>$pollspath1:/2.ics</ruri>
+				<data>
+					<content-type>text/calendar; charset=utf-8</content-type>
+					<filepath>Resource/CalDAV/polls/put/3.ics</filepath>
+				</data>
+				<verify>
+					<callback>statusCode</callback>
+				</verify>
+			</request>
+			<request>
+				<method>GET</method>
+				<ruri>$pollspath1:/2.ics</ruri>
+				<verify>
+					<callback>calendarDataMatch</callback>
+					<arg>
+						<name>filepath</name>
+						<value>Resource/CalDAV/polls/put/4.ics</value>
+					</arg>
+				</verify>
+			</request>
+		</test>
+	</test-suite>
+	
+	<end/>
+	
+</caldavtest>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sharing-notification-sync.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -239,36 +239,12 @@
 					<filepath>Resource/CalDAV/sharing/notification-sync/2.xml</filepath>
 				</data>
 				<verify>
-					<exclude-feature>
-						<feature>split-calendars</feature>
-					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
-						<name>okhrefs</name>
-						<value>$calendar:/</value>
-						<value>$inbox:/</value>
-						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
-						<value>shared/</value>
+						<name>ignoremissing</name>
 					</arg>
 					<arg>
-						<name>badhrefs</name>
-						<value>$dropbox:/</value>
-					</arg>
-				</verify>
-				<verify>
-					<require-feature>
-						<feature>split-calendars</feature>
-					</require-feature>
-					<callback>multistatusItems</callback>
-					<arg>
 						<name>okhrefs</name>
-						<value>$calendar:/</value>
-						<value>$tasks:/</value>
-						<value>$inbox:/</value>
-						<value>$outbox:/</value>
-						<value>$freebusy:</value>
 						<value>$notification:/</value>
 						<value>shared/</value>
 					</arg>
@@ -300,35 +276,12 @@
 					<filepath>Resource/CalDAV/sharing/notification-sync/2.xml</filepath>
 				</data>
 				<verify>
-					<exclude-feature>
-						<feature>split-calendars</feature>
-					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
-						<name>okhrefs</name>
-						<value>$calendar:/</value>
-						<value>$inbox:/</value>
-						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
+						<name>ignoremissing</name>
 					</arg>
 					<arg>
-						<name>badhrefs</name>
-						<value>$dropbox:/</value>
-					</arg>
-				</verify>
-				<verify>
-					<require-feature>
-						<feature>split-calendars</feature>
-					</require-feature>
-					<callback>multistatusItems</callback>
-					<arg>
 						<name>okhrefs</name>
-						<value>$calendar:/</value>
-						<value>$tasks:/</value>
-						<value>$inbox:/</value>
-						<value>$outbox:/</value>
-						<value>$freebusy:</value>
 						<value>$notification:/</value>
 					</arg>
 					<arg>

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/sync-report.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/sync-report.xml	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/sync-report.xml	2013-11-08 20:38:45 UTC (rev 11915)
@@ -262,12 +262,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -282,13 +283,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -321,12 +323,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -341,13 +344,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -380,12 +384,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -400,13 +405,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -439,12 +445,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -463,13 +470,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -506,12 +514,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -530,13 +539,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -573,12 +583,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -597,13 +608,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -841,12 +853,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -861,13 +874,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -900,12 +914,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -924,13 +939,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -1005,12 +1021,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -1025,13 +1042,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -1064,12 +1082,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -1089,13 +1108,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -1166,12 +1186,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -1186,13 +1207,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -1225,12 +1247,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -1249,13 +1272,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -1329,12 +1353,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -1349,13 +1374,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar2/</value>
 					</arg>
@@ -1388,12 +1414,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -1412,13 +1439,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar1/</value>
 						<value>synccalendar1/1.ics</value>
 						<value>synccalendar1/2.ics</value>
@@ -2063,12 +2091,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar3/1.ics</value>
 						<value>synccalendar3/2.ics</value>
@@ -2087,13 +2116,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar3/1.ics</value>
 						<value>synccalendar3/2.ics</value>
@@ -2298,12 +2328,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar3/1.ics</value>
 						<value>synccalendar3/2.ics</value>
@@ -2322,13 +2353,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar3/1.ics</value>
 						<value>synccalendar3/2.ics</value>
@@ -2579,12 +2611,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar3/1.ics</value>
 						<value>synccalendar3/2.ics</value>
@@ -2603,13 +2636,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar3/1.ics</value>
 						<value>synccalendar3/2.ics</value>
@@ -2795,12 +2829,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -2815,13 +2850,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -3012,12 +3048,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -3032,13 +3069,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -3275,12 +3313,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -3295,13 +3334,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -3481,12 +3521,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 						<value>synccalendar4/1.ics</value>
@@ -3503,13 +3544,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 						<value>synccalendar4/1.ics</value>
@@ -3639,12 +3681,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -3659,13 +3702,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -3794,12 +3838,13 @@
 					</exclude-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>
@@ -3814,13 +3859,14 @@
 					</require-feature>
 					<callback>multistatusItems</callback>
 					<arg>
+						<name>ignoremissing</name>
+					</arg>
+					<arg>
 						<name>okhrefs</name>
 						<value>$calendar:/</value>
 						<value>$tasks:/</value>
 						<value>$inbox:/</value>
 						<value>$outbox:/</value>
-						<value>$freebusy:</value>
-						<value>$notification:/</value>
 						<value>synccalendar3/</value>
 						<value>synccalendar4/</value>
 					</arg>

Modified: CalDAVTester/trunk/src/caldavtest.py
===================================================================
--- CalDAVTester/trunk/src/caldavtest.py	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/src/caldavtest.py	2013-11-08 20:38:45 UTC (rev 11915)
@@ -19,7 +19,7 @@
 """
 
 from cStringIO import StringIO
-from pycalendar.calendar import PyCalendar
+from pycalendar.icalendar.calendar import Calendar
 from src.httpshandler import SmartHTTPConnection
 from src.manager import manager
 from src.request import data, pause
@@ -916,7 +916,7 @@
         prop = self._calProperty(propertyname, respdata)
 
         try:
-            return prop.getAttributeValue(pname) if prop else None
+            return prop.getParameterValue(pname) if prop else None
         except KeyError:
             return None
 
@@ -924,7 +924,7 @@
     def _calProperty(self, propertyname, respdata):
 
         try:
-            cal = PyCalendar.parseText(respdata)
+            cal = Calendar.parseText(respdata)
         except Exception:
             return None
 

Modified: CalDAVTester/trunk/verifiers/addressDataMatch.py
===================================================================
--- CalDAVTester/trunk/verifiers/addressDataMatch.py	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/verifiers/addressDataMatch.py	2013-11-08 20:38:45 UTC (rev 11915)
@@ -73,8 +73,8 @@
                     if ":" in filter:
                         propname, parameter = filter.split(":")
                         if property.getName() == propname:
-                            if property.hasAttribute(parameter):
-                                property.removeAttributes(parameter)
+                            if property.hasParameter(parameter):
+                                property.removeParameters(parameter)
                     else:
                         if property.getName() == filter:
                             component.removeProperty(property)

Modified: CalDAVTester/trunk/verifiers/calendarDataMatch.py
===================================================================
--- CalDAVTester/trunk/verifiers/calendarDataMatch.py	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/verifiers/calendarDataMatch.py	2013-11-08 20:38:45 UTC (rev 11915)
@@ -15,8 +15,8 @@
 ##
 
 from difflib import unified_diff
-from pycalendar.calendar import PyCalendar
-from pycalendar.attribute import PyCalendarAttribute
+from pycalendar.icalendar.calendar import Calendar
+from pycalendar.parameter import Parameter
 
 """
 Verifier that checks the response body for a semantic match to data in a file.
@@ -99,25 +99,25 @@
             for property in allProps:
                 # 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"))
+                    if property.hasParameter("X-CALENDARSERVER-DTSTAMP"):
+                        property.replaceParameter(Parameter("X-CALENDARSERVER-DTSTAMP", "20080101T000000Z"))
 
                 for filter in filters:
                     if ":" in filter:
                         propname, parameter = filter.split(":")
                         if property.getName() == propname:
-                            if property.hasAttribute(parameter):
-                                property.removeAttributes(parameter)
+                            if property.hasParameter(parameter):
+                                property.removeParameters(parameter)
                     else:
                         if property.getName() == filter:
                             component.removeProperty(property)
 
         try:
-            resp_calendar = PyCalendar.parseText(respdata)
+            resp_calendar = Calendar.parseText(respdata)
             removePropertiesParameters(resp_calendar)
             respdata = resp_calendar.getText()
 
-            data_calendar = PyCalendar.parseText(data)
+            data_calendar = Calendar.parseText(data)
             removePropertiesParameters(data_calendar)
             data = data_calendar.getText()
 

Modified: CalDAVTester/trunk/verifiers/freeBusy.py
===================================================================
--- CalDAVTester/trunk/verifiers/freeBusy.py	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/verifiers/freeBusy.py	2013-11-08 20:38:45 UTC (rev 11915)
@@ -18,8 +18,8 @@
 Verifier that checks the response of a free-busy-query.
 """
 
-from pycalendar.calendar import PyCalendar
-from pycalendar.exceptions import PyCalendarInvalidData
+from pycalendar.icalendar.calendar import Calendar
+from pycalendar.exceptions import InvalidData
 
 class Verifier(object):
 
@@ -36,7 +36,7 @@
 
         # Parse data as calendar object
         try:
-            calendar = PyCalendar.parseText(respdata)
+            calendar = Calendar.parseText(respdata)
 
             # Check for calendar
             if calendar is None:
@@ -61,8 +61,8 @@
                     periods[i].getValue().setUseDuration(False)
                 # Check param
                 fbtype = "BUSY"
-                if fp.hasAttribute("FBTYPE"):
-                    fbtype = fp.getAttributeValue("FBTYPE")
+                if fp.hasParameter("FBTYPE"):
+                    fbtype = fp.getParameterValue("FBTYPE")
                 if fbtype == "BUSY":
                     busyp.extend(periods)
                 elif fbtype == "BUSY-TENTATIVE":
@@ -97,7 +97,7 @@
             elif len(unavailablep.symmetric_difference(unavailable)):
                 raise ValueError("Busy-unavailable periods do not match")
 
-        except PyCalendarInvalidData:
+        except InvalidData:
             return False, "        HTTP response data is not a calendar"
         except ValueError, txt:
             return False, "        HTTP response data is invalid: %s" % (txt,)

Modified: CalDAVTester/trunk/verifiers/postFreeBusy.py
===================================================================
--- CalDAVTester/trunk/verifiers/postFreeBusy.py	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/verifiers/postFreeBusy.py	2013-11-08 20:38:45 UTC (rev 11915)
@@ -18,8 +18,8 @@
 Verifier that checks the response of a free-busy-query.
 """
 
-from pycalendar.calendar import PyCalendar
-from pycalendar.exceptions import PyCalendarInvalidData
+from pycalendar.icalendar.calendar import Calendar
+from pycalendar.exceptions import InvalidData
 from xml.etree.ElementTree import ElementTree
 from xml.parsers.expat import ExpatError
 import StringIO
@@ -47,7 +47,7 @@
         for calendar in tree.findall("./{urn:ietf:params:xml:ns:caldav}response/{urn:ietf:params:xml:ns:caldav}calendar-data"):
             # Parse data as calendar object
             try:
-                calendar = PyCalendar.parseText(calendar.text)
+                calendar = Calendar.parseText(calendar.text)
 
                 # Check for calendar
                 if calendar is None:
@@ -80,8 +80,8 @@
                         periods[i].getValue().setUseDuration(False)
                     # Check param
                     fbtype = "BUSY"
-                    if fp.hasAttribute("FBTYPE"):
-                        fbtype = fp.getAttributeValue("FBTYPE")
+                    if fp.hasParameter("FBTYPE"):
+                        fbtype = fp.getParameterValue("FBTYPE")
                     if fbtype == "BUSY":
                         busyp.extend(periods)
                     elif fbtype == "BUSY-TENTATIVE":
@@ -118,7 +118,7 @@
 
                 break
 
-            except PyCalendarInvalidData:
+            except InvalidData:
                 return False, "        HTTP response data is not a calendar"
             except ValueError, txt:
                 return False, "        HTTP response data is invalid: %s" % (txt,)

Modified: CalDAVTester/trunk/verifiers/xmlElementMatch.py
===================================================================
--- CalDAVTester/trunk/verifiers/xmlElementMatch.py	2013-11-08 20:35:58 UTC (rev 11914)
+++ CalDAVTester/trunk/verifiers/xmlElementMatch.py	2013-11-08 20:38:45 UTC (rev 11915)
@@ -19,7 +19,7 @@
 Verifier that checks the response body for an exact match to data in a file.
 """
 
-from pycalendar.calendar import PyCalendar
+from pycalendar.icalendar.calendar import Calendar
 from xml.etree.ElementTree import ElementTree
 import json
 import StringIO
@@ -225,7 +225,7 @@
                         # Try to parse as iCalendar
                         elif test == 'icalendar':
                             try:
-                                PyCalendar.parseText(node.text)
+                                Calendar.parseText(node.text)
                             except:
                                 result = "        Incorrect value returned in iCalendar for %s\n" % (path,)
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/bbeae250/attachment.html>


More information about the calendarserver-changes mailing list