[CalendarServer-changes] [12538] CalDAVTester/trunk

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


Revision: 12538
          http://trac.calendarserver.org//changeset/12538
Author:   cdaboo at apple.com
Date:     2014-02-03 09:58:12 -0800 (Mon, 03 Feb 2014)
Log Message:
-----------
Turn on tests for JSON data. Make JSON calendar verifier use the same logic as the regular iCalendar one.

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/json.xml
    CalDAVTester/trunk/verifiers/calendarDataMatch.py
    CalDAVTester/trunk/verifiers/jcalDataMatch.py

Modified: CalDAVTester/trunk/scripts/server/serverinfo-pod.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-pod.xml	2014-02-02 22:26:27 UTC (rev 12537)
+++ CalDAVTester/trunk/scripts/server/serverinfo-pod.xml	2014-02-03 17:58:12 UTC (rev 12538)
@@ -68,7 +68,7 @@
 		<!-- <feature>per-object-ACLs</feature> -->		<!-- ACL for objects in calendar/address books -->
 		<!-- <feature>regular-collection</feature> -->  <!-- Regular collections allowed in calendar/address book homes -->
 
-		<!-- <feature>json-data</feature> -->			<!-- jCal and jCard support -->
+		<feature>json-data</feature>					<!-- jCal and jCard support -->
 
 		<!-- CalDAV specific extension -->
 		<feature>caldav</feature>					    <!-- Basic CalDAV feature enabler -->

Modified: CalDAVTester/trunk/scripts/server/serverinfo-template.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo-template.xml	2014-02-02 22:26:27 UTC (rev 12537)
+++ CalDAVTester/trunk/scripts/server/serverinfo-template.xml	2014-02-03 17:58:12 UTC (rev 12538)
@@ -63,7 +63,7 @@
 		<!-- <feature>per-object-ACLs</feature> -->		<!-- ACL for objects in calendar/address books -->
 		<!-- <feature>regular-collection</feature> -->  <!-- Regular collections allowed in calendar/address book homes -->
 
-		<!-- <feature>json-data</feature> -->			<!-- jCal and jCard support -->
+		<feature>json-data</feature>					<!-- jCal and jCard support -->
 
 		<!-- CalDAV specific extension -->
 		<feature>caldav</feature>					    <!-- Basic CalDAV feature enabler -->

Modified: CalDAVTester/trunk/scripts/server/serverinfo.xml
===================================================================
--- CalDAVTester/trunk/scripts/server/serverinfo.xml	2014-02-02 22:26:27 UTC (rev 12537)
+++ CalDAVTester/trunk/scripts/server/serverinfo.xml	2014-02-03 17:58:12 UTC (rev 12538)
@@ -63,7 +63,7 @@
 		<!-- <feature>per-object-ACLs</feature> -->		<!-- ACL for objects in calendar/address books -->
 		<!-- <feature>regular-collection</feature> -->  <!-- Regular collections allowed in calendar/address book homes -->
 
-		<!-- <feature>json-data</feature> -->			<!-- jCal and jCard support -->
+		<feature>json-data</feature>					<!-- jCal and jCard support -->
 
 		<!-- CalDAV specific extension -->
 		<feature>caldav</feature>					    <!-- Basic CalDAV feature enabler -->

Modified: CalDAVTester/trunk/scripts/tests/CalDAV/json.xml
===================================================================
--- CalDAVTester/trunk/scripts/tests/CalDAV/json.xml	2014-02-02 22:26:27 UTC (rev 12537)
+++ CalDAVTester/trunk/scripts/tests/CalDAV/json.xml	2014-02-03 17:58:12 UTC (rev 12538)
@@ -28,8 +28,8 @@
 
 	<start/>
 	
-	<test-suite name='PUT iCal/GET json' ignore='no'>
-		<test name='1' ignore='no'>
+	<test-suite name='PUT iCal/GET json'>
+		<test name='1'>
 			<description>PUT iCalendar</description>
 			<request>
 				<method>PUT</method>
@@ -43,7 +43,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>GET jCal</description>
 			<request>
 				<method>GET</method>
@@ -61,7 +61,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETE</method>
 				<ruri>$calendarpath1:/1.ics</ruri>
@@ -72,8 +72,8 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='PUT json/GET json/icalendar + Accept/q' ignore='no'>
-		<test name='1' ignore='no'>
+	<test-suite name='PUT json/GET json/icalendar + Accept/q'>
+		<test name='1'>
 			<description>PUT jCal</description>
 			<request>
 				<method>PUT</method>
@@ -87,7 +87,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>GET jCal</description>
 			<request>
 				<method>GET</method>
@@ -105,7 +105,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>GET iCalendar - with accept</description>
 			<request>
 				<method>GET</method>
@@ -123,7 +123,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='4' ignore='no'>
+		<test name='4'>
 			<description>GET iCalendar - no accept</description>
 			<request>
 				<method>GET</method>
@@ -137,7 +137,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='5' ignore='no'>
+		<test name='5'>
 			<description>GET jCal - preferred Accept</description>
 			<request>
 				<method>GET</method>
@@ -155,7 +155,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='6' ignore='no'>
+		<test name='6'>
 			<description>GET jCal - q= preferred Accept</description>
 			<request>
 				<method>GET</method>
@@ -173,7 +173,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETE</method>
 				<ruri>$calendarpath1:/1.ics</ruri>
@@ -184,8 +184,8 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='PUT + return-rep' ignore='no'>
-		<test name='1' ignore='no'>
+	<test-suite name='PUT + return-rep'>
+		<test name='1'>
 			<description>PUT jCal/return iCalendar</description>
 			<request>
 				<method>PUT</method>
@@ -210,7 +210,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>PUT jCal/return jCal</description>
 			<request>
 				<method>PUT</method>
@@ -239,7 +239,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>PUT iCalendar/return iCalendar</description>
 			<request>
 				<method>PUT</method>
@@ -264,7 +264,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='4' ignore='no'>
+		<test name='4'>
 			<description>PUT iCalendar/return jCal</description>
 			<request>
 				<method>PUT</method>
@@ -293,7 +293,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETE</method>
 				<ruri>$calendarpath1:/1.ics</ruri>
@@ -304,8 +304,8 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='Multiget json' ignore='no'>
-		<test name='1' ignore='no'>
+	<test-suite name='Multiget json'>
+		<test name='1'>
 			<description>PUT iCalendar</description>
 			<request>
 				<method>PUT</method>
@@ -319,7 +319,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>multiget jCal</description>
 			<request>
 				<method>REPORT</method>
@@ -343,14 +343,23 @@
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[@content-type="application/calendar+json"]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[json]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vcalendar]</value>
-						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vtimezone]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vevent]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*valarm]</value>
 					</arg>
 				</verify>
+				<verify>
+					<exclude-feature>
+						<feature>timezones-by-reference</feature>
+					</exclude-feature>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vtimezone]</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>multiget with filtered jCal</description>
 			<request>
 				<method>REPORT</method>
@@ -374,14 +383,23 @@
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[@content-type="application/calendar+json"]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[json]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vcalendar]</value>
-						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vtimezone]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[$vevent]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[$valarm]</value>
 					</arg>
 				</verify>
+				<verify>
+					<exclude-feature>
+						<feature>timezones-by-reference</feature>
+					</exclude-feature>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vtimezone]</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETE</method>
 				<ruri>$calendarpath1:/1.ics</ruri>
@@ -392,8 +410,8 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='Query json' ignore='no'>
-		<test name='1' ignore='no'>
+	<test-suite name='Query json'>
+		<test name='1'>
 			<description>PUT iCalendar</description>
 			<request>
 				<method>PUT</method>
@@ -407,7 +425,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>query jCal</description>
 			<request>
 				<method>REPORT</method>
@@ -431,14 +449,23 @@
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[@content-type="application/calendar+json"]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[json]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vcalendar]</value>
-						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vtimezone]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vevent]</value>
 						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*valarm]</value>
 					</arg>
 				</verify>
+				<verify>
+					<exclude-feature>
+						<feature>timezones-by-reference</feature>
+					</exclude-feature>
+					<callback>xmlElementMatch</callback>
+					<arg>
+						<name>exists</name>
+						<value>$verify-property-prefix:/{$CALDAV:}calendar-data[*vtimezone]</value>
+					</arg>
+				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>query with expanded jCal</description>
 			<request>
 				<method>REPORT</method>
@@ -470,7 +497,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETE</method>
 				<ruri>$calendarpath1:/1.ics</ruri>
@@ -481,8 +508,8 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='Freebusy json' ignore='no'>
-		<test name='1' ignore='no'>
+	<test-suite name='Freebusy json'>
+		<test name='1'>
 			<description>PUT iCalendar</description>
 			<request>
 				<method>PUT</method>
@@ -496,7 +523,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>POST json - get back json</description>
 			<request>
 				<method>POST</method>
@@ -517,7 +544,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETE</method>
 				<ruri>$calendarpath1:/1.ics</ruri>
@@ -528,11 +555,11 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='POST;add-member' ignore='no'>
+	<test-suite name='POST;add-member'>
 		<require-feature>
 			<feature>add-member</feature>
 		</require-feature>
-		<test name='1' ignore='no'>
+		<test name='1'>
 			<description>POST;add-member jCal</description>
 			<request>
 				<method>POST</method>
@@ -550,7 +577,7 @@
 				</grabheader>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>GET jCal</description>
 			<request>
 				<method>GET</method>
@@ -568,7 +595,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>GET iCalendar</description>
 			<request>
 				<method>GET</method>
@@ -586,7 +613,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETE</method>
 				<ruri>$posted:</ruri>
@@ -597,11 +624,11 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='POST;add-member - return' ignore='no'>
+	<test-suite name='POST;add-member - return'>
 		<require-feature>
 			<feature>add-member</feature>
 		</require-feature>
-		<test name='1' ignore='no'>
+		<test name='1'>
 			<description>POST;add-member jCal</description>
 			<request>
 				<method>POST</method>
@@ -631,7 +658,7 @@
 				</grabheader>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>GET jCal</description>
 			<request>
 				<method>GET</method>
@@ -649,7 +676,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>GET iCalendar</description>
 			<request>
 				<method>GET</method>
@@ -667,7 +694,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETE</method>
 				<ruri>$posted:</ruri>
@@ -678,11 +705,11 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='Simple BULK json - no return' ignore='no'>
+	<test-suite name='Simple BULK json - no return'>
 		<require-feature>
 			<feature>bulk-post</feature>
 		</require-feature>
-		<test name='1' ignore='no'>
+		<test name='1'>
 			<description>POST jCal</description>
 			<request>
 				<method>POST</method>
@@ -711,7 +738,7 @@
 				</grabelement>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>GET iCalendar</description>
 			<request>
 				<method>GET</method>
@@ -725,7 +752,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>GET iCalendar</description>
 			<request>
 				<method>GET</method>
@@ -739,7 +766,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETEALL</method>
 				<ruri>$calendarpath1:/</ruri>
@@ -750,11 +777,11 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='Simple BULK json - return' ignore='no'>
+	<test-suite name='Simple BULK json - return'>
 		<require-feature>
 			<feature>bulk-post</feature>
 		</require-feature>
-		<test name='1' ignore='no'>
+		<test name='1'>
 			<description>POST jCal</description>
 			<request>
 				<method>POST</method>
@@ -787,7 +814,7 @@
 				</grabelement>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>GET iCalendar</description>
 			<request>
 				<method>GET</method>
@@ -801,7 +828,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>GET iCalendar</description>
 			<request>
 				<method>GET</method>
@@ -815,7 +842,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETEALL</method>
 				<ruri>$calendarpath1:/</ruri>
@@ -826,11 +853,11 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='CRUD json' ignore='no'>
+	<test-suite name='CRUD json'>
 		<require-feature>
 			<feature>bulk-post</feature>
 		</require-feature>
-		<test name='1' ignore='no'>
+		<test name='1'>
 			<description>POST jCal</description>
 			<request>
 				<method>POST</method>
@@ -859,7 +886,7 @@
 				</grabelement>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>GET iCalendar</description>
 			<request>
 				<method>GET</method>
@@ -873,7 +900,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>GET iCalendar</description>
 			<request>
 				<method>GET</method>
@@ -887,7 +914,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='-1' ignore='no'>
+		<test name='-1'>
 			<request>
 				<method>DELETEALL</method>
 				<ruri>$calendarpath1:/</ruri>
@@ -898,8 +925,8 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='Timezone prop json' ignore='no'>
-		<test name='1' ignore='no'>
+	<test-suite name='Timezone prop json'>
+		<test name='1'>
 			<description>PROPPATCH jCal</description>
 			<request>
 				<method>PROPPATCH</method>
@@ -913,7 +940,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='2' ignore='no'>
+		<test name='2'>
 			<description>PROPFIND jCal</description>
 			<request>
 				<method>PROPFIND</method>
@@ -938,7 +965,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='3' ignore='no'>
+		<test name='3'>
 			<description>GET iCalendar - with accept</description>
 			<request>
 				<method>PROPFIND</method>
@@ -964,7 +991,7 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='Timezone service json' ignore='no'>
+	<test-suite name='Timezone service json'>
 	</test-suite>
 
 	<end/>

Modified: CalDAVTester/trunk/verifiers/calendarDataMatch.py
===================================================================
--- CalDAVTester/trunk/verifiers/calendarDataMatch.py	2014-02-02 22:26:27 UTC (rev 12537)
+++ CalDAVTester/trunk/verifiers/calendarDataMatch.py	2014-02-03 17:58:12 UTC (rev 12538)
@@ -24,7 +24,7 @@
 
 class Verifier(object):
 
-    def verify(self, manager, uri, response, respdata, args): #@UnusedVariable
+    def verify(self, manager, uri, response, respdata, args, is_json=False): #@UnusedVariable
         # Get arguments
         files = args.get("filepath", [])
         caldata = args.get("data", [])
@@ -113,13 +113,13 @@
                             component.removeProperty(property)
 
         try:
-            resp_calendar = Calendar.parseText(respdata)
+            resp_calendar = Calendar.parseText(respdata) if not is_json else Calendar.parseJSONData(respdata)
             removePropertiesParameters(resp_calendar)
-            respdata = resp_calendar.getText()
+            respdata = resp_calendar.getText() if not is_json else resp_calendar.getTextJSON()
 
-            data_calendar = Calendar.parseText(data)
+            data_calendar = Calendar.parseText(data) if not is_json else Calendar.parseJSONData(data)
             removePropertiesParameters(data_calendar)
-            data = data_calendar.getText()
+            data = data_calendar.getText() if not is_json else data_calendar.getTextJSON()
 
             result = respdata == data
 

Modified: CalDAVTester/trunk/verifiers/jcalDataMatch.py
===================================================================
--- CalDAVTester/trunk/verifiers/jcalDataMatch.py	2014-02-02 22:26:27 UTC (rev 12537)
+++ CalDAVTester/trunk/verifiers/jcalDataMatch.py	2014-02-03 17:58:12 UTC (rev 12538)
@@ -14,8 +14,7 @@
 # limitations under the License.
 ##
 
-from difflib import unified_diff
-import json
+from verifiers.calendarDataMatch import Verifier as CalVerifier
 
 """
 Verifier that checks the response body for a semantic match to data in a file.
@@ -23,108 +22,9 @@
 
 class Verifier(object):
 
-    def verify(self, manager, uri, response, respdata, args): #@UnusedVariable
-        # Get arguments
-        files = args.get("filepath", [])
-        caldata = args.get("data", [])
-        filters = args.get("filter", [])
+    def verify(self, manager, uri, response, respdata, args):
 
-        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")
-        filters.append("CREATED")
-        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,)
-
-        # look for response data
-        if not respdata:
-            return False, "        No response body"
-
-        # look for content-type
-        hdrs = response.msg.getheaders("Content-Type")
-        if hdrs is None or len(hdrs) == 0:
-            return False, "        No Content-Type header"
-        if len(hdrs) != 1:
-            return False, "        Wrong number of Content-Type headers"
-        if hdrs[0].split(";")[0] != "application/calendar+json":
-            return False, "        Wrong Content-Type header"
-
-        # look for one file
-        if len(files) != 1 and len(caldata) != 1:
-            return False, "        No file to compare response to"
-
-        # read in all data from specified file or use provided data
-        if len(files):
-            fd = open(files[0], "r")
-            try:
-                try:
-                    data = fd.read()
-                finally:
-                    fd.close()
-            except:
-                data = None
-        else:
-            data = caldata[0] if len(caldata) else None
-
-        if data is None:
-            return False, "        Could not read data file"
-
-        data = manager.server_info.extrasubs(manager.server_info.subs(data))
-
-        def removePropertiesParameters(component):
-
-            # component = [name, props-array, subcomponent-array]
-
-            for subcomponent in component[2]:
-                removePropertiesParameters(subcomponent)
-
-            for pos, property in reversed(tuple(enumerate(component[1]))):
-
-                # property = [name, param-dict, value-type, values...]
-
-                # Always reset DTSTAMP on these properties
-                if property[0] in ("ATTENDEE".lower(), "X-CALENDARSERVER-ATTENDEE-COMMENT".lower()):
-                    if "X-CALENDARSERVER-DTSTAMP".lower() in property[1]:
-                        property[1]["X-CALENDARSERVER-DTSTAMP".lower()] = "20080101T000000Z"
-
-                for filter in filters:
-                    if ":" in filter:
-                        propname, parameter = filter.split(":")
-                        if property[0] == propname.lower():
-                            if parameter.lower in property[1]:
-                                del property[1][parameter.lower()]
-                    else:
-                        if property[0] == filter.lower():
-                            del component[1][pos]
-
-        try:
-            resp_calendar = json.loads(respdata)
-            removePropertiesParameters(resp_calendar)
-            respdata = json.dumps(resp_calendar)
-
-            data_calendar = json.loads(data)
-            removePropertiesParameters(data_calendar)
-            data = json.dumps(data_calendar)
-
-            result = respdata == data
-
-            if result:
-                return True, ""
-            else:
-                error_diff = "\n".join([line for line in unified_diff(data.split("\n"), respdata.split("\n"))])
-                return False, "        Response data does not exactly match file data%s" % (error_diff,)
-        except Exception, e:
-            return False, "        Response data is not calendar data: %s" % (e,)
+        # Just hand this off to the calendarDataMatch verifier which knows all about
+        # proper calendar normalization rules.
+        verifier = CalVerifier()
+        return verifier.verify(manager, uri, response, respdata, args, is_json=True)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/8aabc3b6/attachment.html>


More information about the calendarserver-changes mailing list