[CalendarServer-changes] [2304]
CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Fri Apr 11 20:08:28 PDT 2008
Revision: 2304
http://trac.macosforge.org/projects/calendarserver/changeset/2304
Author: cdaboo at apple.com
Date: 2008-04-11 20:08:28 -0700 (Fri, 11 Apr 2008)
Log Message:
-----------
Make sure invalid plist in directory record does not cause cache reload to fail.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryschema.py
Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2008-04-11 21:23:17 UTC (rev 2303)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2008-04-12 03:08:28 UTC (rev 2304)
@@ -338,19 +338,31 @@
return result
- def _parseResourceInfo(self, plist):
+ def _parseResourceInfo(self, plist, guid, shortname):
"""
Parse OD ResourceInfo attribute and extract information that the server needs.
@param plist: the plist that is the attribute value.
@type plist: str
+ @param guid: the directory GUID of the record being parsed.
+ @type guid: str
+ @param shortname: the record shortname of the record being parsed.
+ @type shortname: str
@return: a C{tuple} of C{bool} for auto-accept and C{str} for proxy GUID.
"""
- plist = readPlistFromString(plist)
- wpframework = plist.get("com.apple.WhitePagesFramework", {})
- autoaccept = wpframework.get("AutoAcceptsInvitation", False)
- proxy = wpframework.get("CalendaringDelegate")
-
+ try:
+ plist = readPlistFromString(plist)
+ wpframework = plist.get("com.apple.WhitePagesFramework", {})
+ autoaccept = wpframework.get("AutoAcceptsInvitation", False)
+ proxy = wpframework.get("CalendaringDelegate")
+ except AttributeError:
+ logging.err(
+ "Failed to parse ResourceInfo attribute of record %s (%s): %s" %
+ (shortname, guid, plist,)
+ )
+ autoaccept = False
+ proxy = None
+
return (autoaccept, proxy)
def recordTypes(self):
@@ -535,7 +547,7 @@
if recordType in (DirectoryService.recordType_resources, DirectoryService.recordType_locations):
resourceInfo = value.get(dsattributes.kDSNAttrResourceInfo)
if resourceInfo is not None:
- autoSchedule, proxy = self._parseResourceInfo(resourceInfo)
+ autoSchedule, proxy = self._parseResourceInfo(resourceInfo, recordGUID, recordShortName)
if proxy:
proxyGUIDs = (proxy,)
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryschema.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryschema.py 2008-04-11 21:23:17 UTC (rev 2303)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryschema.py 2008-04-12 03:08:28 UTC (rev 2304)
@@ -1248,23 +1248,30 @@
</plist>
"""
+ plist_invalid = """<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>com.apple.WhitePagesFramework</key>
+ <string>bogus</string>
+ <string>another bogon</string>
+</dict>
+</plist>
+"""
+
test_bool = (
(plist_good_false, False, "1234-GUID-5678"),
(plist_good_true, True, ""),
(plist_good_missing, False, None),
(plist_wrong, False, None),
+ (plist_bad, False, None),
+ (plist_invalid, False, None),
)
- test_exception = (
- (plist_bad, AttributeError),
- )
-
def test_plists(self):
service = OpenDirectoryService(node="/Search", dosetup=False)
for item in ODResourceInfoParse.test_bool:
- self.assertEqual(service._parseResourceInfo(item[0])[0], item[1])
- self.assertEqual(service._parseResourceInfo(item[0])[1], item[2])
-
- for item in ODResourceInfoParse.test_exception:
- self.assertRaises(item[1], service._parseResourceInfo, item[0])
+ item1, item2 = service._parseResourceInfo(item[0], "guid", "name")
+ self.assertEqual(item1, item[1])
+ self.assertEqual(item2, item[2])
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080411/2447e1e1/attachment.html
More information about the calendarserver-changes
mailing list