[CalendarServer-changes] [10688] CalendarServer/trunk/twext/who
source_changes at macosforge.org
source_changes at macosforge.org
Mon Feb 11 15:14:20 PST 2013
Revision: 10688
http://trac.calendarserver.org//changeset/10688
Author: wsanchez at apple.com
Date: 2013-02-11 15:14:20 -0800 (Mon, 11 Feb 2013)
Log Message:
-----------
Get rid of unknownFieldNames attribute; use unknownFieldElements only.
Add tests for unknown field elements being captured.
Modified Paths:
--------------
CalendarServer/trunk/twext/who/test/test_xml.py
CalendarServer/trunk/twext/who/xml.py
Modified: CalendarServer/trunk/twext/who/test/test_xml.py
===================================================================
--- CalendarServer/trunk/twext/who/test/test_xml.py 2013-02-11 22:43:01 UTC (rev 10687)
+++ CalendarServer/trunk/twext/who/test/test_xml.py 2013-02-11 23:14:20 UTC (rev 10688)
@@ -150,11 +150,16 @@
class BaseTest(object):
- def _testService(self):
+ def _testService(self, xmlData=None):
if not hasattr(self, "_service"):
+ if xmlData is None:
+ xmlData = testXMLConfig
+
filePath = FilePath(self.mktemp())
- filePath.setContent(testXMLConfig)
+ filePath.setContent(xmlData)
+
self._service = DirectoryService(filePath)
+
return self._service
@@ -248,24 +253,48 @@
)
- def test_unknownRecordTypes(self):
+ def test_unknownRecordTypesClean(self):
service = self._testService()
- service.loadRecords()
self.assertEquals(set(service.unknownRecordTypes), set())
- def test_unknownFieldElements(self):
+ def test_unknownRecordTypesDirty(self):
+ service = self._testService(xmlData=
+"""<?xml version="1.0" encoding="utf-8"?>
+
+<directory realm="Unknown Record Types">
+ <record type="camera">
+ <uid>__d600__</uid>
+ <short-name>d600</short-name>
+ <full-name>Nikon D600</full-name>
+ </record>
+</directory>
+"""
+ )
+ self.assertEquals(set(service.unknownRecordTypes), set(("camera",)))
+
+
+ def test_unknownFieldElementsClean(self):
service = self._testService()
- service.loadRecords()
self.assertEquals(set(service.unknownFieldElements), set())
- def test_unknownFieldNames(self):
- service = self._testService()
- service.loadRecords()
- self.assertEquals(set(service.unknownFieldNames), set())
+ def test_unknownFieldElementsDirty(self):
+ service = self._testService(xmlData=
+"""<?xml version="1.0" encoding="utf-8"?>
+<directory realm="Unknown Record Types">
+ <record type="user">
+ <uid>__wsanchez__</uid>
+ <short-name>wsanchez</short-name>
+ <political-affiliation>Community and Freedom Party</political-affiliation>
+ </record>
+</directory>
+"""
+ )
+ self.assertEquals(set(service.unknownFieldElements), set(("political-affiliation",)))
+
@inlineCallbacks
def test_updateRecord(self):
service = self._testService()
Modified: CalendarServer/trunk/twext/who/xml.py
===================================================================
--- CalendarServer/trunk/twext/who/xml.py 2013-02-11 22:43:01 UTC (rev 10687)
+++ CalendarServer/trunk/twext/who/xml.py 2013-02-11 23:14:20 UTC (rev 10688)
@@ -195,11 +195,6 @@
return self._unknownFieldElements
@property
- def unknownFieldNames(self):
- self.loadRecords()
- return self._unknownFieldNames
-
- @property
def index(self):
self.loadRecords()
return self._index
@@ -256,13 +251,12 @@
unknownRecordTypes = set()
unknownFieldElements = set()
- unknownFieldNames = set()
records = set()
- for recordNode in directoryNode.getchildren():
+ for recordNode in directoryNode:
try:
- records.add(self.parseRecordNode(recordNode))
+ records.add(self.parseRecordNode(recordNode, unknownFieldElements))
except UnknownRecordTypeParseError, e:
unknownRecordTypes.add(e.token)
@@ -290,7 +284,6 @@
self._unknownRecordTypes = unknownRecordTypes
self._unknownFieldElements = unknownFieldElements
- self._unknownFieldNames = unknownFieldNames
self._index = index
@@ -300,7 +293,7 @@
return etree
- def parseRecordNode(self, recordNode, unknownFieldNamesSet=None):
+ def parseRecordNode(self, recordNode, unknownFieldElements=None):
recordTypeAttribute = recordNode.get(self.attribute.recordType.value, "").encode("utf-8")
if recordTypeAttribute:
try:
@@ -313,18 +306,18 @@
fields = {}
fields[self.fieldName.recordType] = recordType
- for fieldNode in recordNode.getchildren():
+ for fieldNode in recordNode:
try:
fieldElement = self.element.lookupByValue(fieldNode.tag)
except ValueError:
- if unknownFieldNamesSet is not None:
- unknownFieldNamesSet.add(fieldNode.tag)
+ if unknownFieldElements is not None:
+ unknownFieldElements.add(fieldNode.tag)
try:
fieldName = fieldElement.fieldName
except AttributeError:
- if unknownFieldNamesSet is not None:
- unknownFieldNamesSet.add(fieldNode.tag)
+ if unknownFieldElements is not None:
+ unknownFieldElements.add(fieldNode.tag)
value = fieldNode.text.encode("utf-8")
@@ -349,7 +342,6 @@
self._realmName = None
self._unknownRecordTypes = None
self._unknownFieldElements = None
- self._unknownFieldNames = None
self._index = None
self._cacheTag = None
self._lastRefresh = 0
@@ -446,7 +438,7 @@
# Walk through the record nodes in the XML tree and apply
# updates.
- for recordNode in directoryNode.getchildren():
+ for recordNode in directoryNode:
uid = self._uidForRecordNode(recordNode)
record = recordsByUID.get(uid, None)
@@ -475,7 +467,7 @@
# Walk through the record nodes in the XML tree and start
# zapping.
#
- for recordNode in directoryNode.getchildren():
+ for recordNode in directoryNode:
uid = self._uidForRecordNode(recordNode)
if uid in uids:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130211/a97e4e40/attachment.html>
More information about the calendarserver-changes
mailing list