[CalendarServer-changes] [4689] CalendarServer/trunk/twistedcaldav/directory

source_changes at macosforge.org source_changes at macosforge.org
Mon Nov 2 10:14:00 PST 2009


Revision: 4689
          http://trac.macosforge.org/projects/calendarserver/changeset/4689
Author:   sagen at apple.com
Date:     2009-11-02 10:14:00 -0800 (Mon, 02 Nov 2009)
Log Message:
-----------
Don't allow /Local/Default users to be used for calendaring since there is no
support for complex queries (used in attendee lookup).

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
    CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py

Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py	2009-11-02 16:26:25 UTC (rev 4688)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py	2009-11-02 18:14:00 UTC (rev 4689)
@@ -565,6 +565,11 @@
             recordEmailAddresses = _setFromAttribute(value.get(dsattributes.kDSNAttrEMailAddress), lower=True)
             recordNodeName       = value.get(dsattributes.kDSNAttrMetaNodeLocation)
 
+            if recordNodeName == "/Local/Default":
+                self.log_warn("Local users aren't eligible for calendaring: %s"
+                    % (recordShortName,))
+                continue
+
             if not recordType:
                 self.log_debug("Record (unknown)%s in node %s has no recordType; ignoring."
                     % (recordShortName, recordNodeName))

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py	2009-11-02 16:26:25 UTC (rev 4688)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py	2009-11-02 18:14:00 UTC (rev 4689)
@@ -197,3 +197,35 @@
             recordTypes = [DirectoryService.recordType_users, DirectoryService.recordType_groups, DirectoryService.recordType_locations, DirectoryService.recordType_resources]
             self.service().queryDirectory(recordTypes, self.service().INDEX_TYPE_GUID, "1234567890", lookupMethod=lookupMethod)
             self.assertFalse(self.service().recordWithGUID("1234567890"))
+
+        def test_queryDirectoryLocalUsers(self):
+            """ Test for lookup on local users, ensuring they don't get
+                faulted in """
+
+            def lookupMethod(obj, attr, value, matchType, casei, recordType, attributes, count=0):
+
+                data = [
+                    {
+                        dsattributes.kDS1AttrGeneratedUID : "1234567890",
+                        dsattributes.kDSNAttrRecordName : ["user1", "User 1"],
+                        dsattributes.kDSNAttrRecordType : dsattributes.kDSStdRecordTypeUsers,
+                        dsattributes.kDSNAttrMetaNodeLocation : "/Local/Default",
+                    },
+                    {
+                        dsattributes.kDS1AttrGeneratedUID : "987654321",
+                        dsattributes.kDSNAttrRecordName : ["user2", "User 2"],
+                        dsattributes.kDSNAttrRecordType : dsattributes.kDSStdRecordTypeUsers,
+                        dsattributes.kDSNAttrMetaNodeLocation : "/LDAPv3/127.0.0.1",
+                    },
+                ]
+                results = []
+                for entry in data:
+                    if entry[attr] == value:
+                        results.append(("", entry))
+                return results
+
+            recordTypes = [DirectoryService.recordType_users, DirectoryService.recordType_groups, DirectoryService.recordType_locations, DirectoryService.recordType_resources]
+            self.service().queryDirectory(recordTypes, self.service().INDEX_TYPE_GUID, "1234567890", lookupMethod=lookupMethod)
+            self.service().queryDirectory(recordTypes, self.service().INDEX_TYPE_GUID, "987654321", lookupMethod=lookupMethod)
+            self.assertFalse(self.service().recordWithGUID("1234567890"))
+            self.assertTrue(self.service().recordWithGUID("987654321"))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20091102/24f2c4fe/attachment.html>


More information about the calendarserver-changes mailing list