[CalendarServer-changes] [2043] CalendarServer/branches/users/wsanchez/cache-miss/twistedcaldav/ directory/test/test_opendirectoryrecords.py

source_changes at macosforge.org source_changes at macosforge.org
Wed Dec 5 15:53:36 PST 2007


Revision: 2043
          http://trac.macosforge.org/projects/calendarserver/changeset/2043
Author:   wsanchez at apple.com
Date:     2007-12-05 15:53:34 -0800 (Wed, 05 Dec 2007)

Log Message:
-----------
Add tests for GUID cache misses.

Lots of cleanup:

Don't stomp on implementation of OpenDirectoryService to fake some results for testing; subclass it instead.

Add fakeODRecord() to create fake records rather than having lots of dictionaries defined everywhere.

Have _verifyDisabledRecords() take both lists instead of a disabled_type, to poke less intrusively into OpenDirectoryService's implementation.

Modified Paths:
--------------
    CalendarServer/branches/users/wsanchez/cache-miss/twistedcaldav/directory/test/test_opendirectoryrecords.py

Modified: CalendarServer/branches/users/wsanchez/cache-miss/twistedcaldav/directory/test/test_opendirectoryrecords.py
===================================================================
--- CalendarServer/branches/users/wsanchez/cache-miss/twistedcaldav/directory/test/test_opendirectoryrecords.py	2007-12-05 22:11:07 UTC (rev 2042)
+++ CalendarServer/branches/users/wsanchez/cache-miss/twistedcaldav/directory/test/test_opendirectoryrecords.py	2007-12-05 23:53:34 UTC (rev 2043)
@@ -19,30 +19,35 @@
 import twisted.trial.unittest
 
 try:
-    from twistedcaldav.directory.appleopendirectory import OpenDirectoryService
+    from twistedcaldav.directory.appleopendirectory import OpenDirectoryService as RealOpenDirectoryService
     import dsattributes
 except ImportError:
     pass
 else:
     from twistedcaldav.directory.directory import DirectoryService
+    from twistedcaldav.directory.util import uuidFromName
 
-    def _queryDirectory(dir, recordType, shortName=None):
+    class OpenDirectoryService (RealOpenDirectoryService):
+        def _queryDirectory(directory, recordType, shortName=None, guid=None):
+            if shortName is None and guid is None:
+                return directory.fakerecords[recordType]
 
-        if shortName:
-            for name, record in dir.fakerecords[recordType]:
-                if name == shortName:
-                    return ((name, record),)
-            else:
-                return ()
-        else:
-            return dir.fakerecords[recordType]
+            assert shortName is None or guid is None
+            if guid is not None:
+                guid = guid.lower()
+
+            records = []
+
+            for name, record in directory.fakerecords[recordType]:
+                if name == shortName or record[dsattributes.kDS1AttrGeneratedUID] == guid:
+                    records.append((name, record))
+
+            return tuple(records)
     
     class ReloadCache(twisted.trial.unittest.TestCase):
-
         def setUp(self):
             super(ReloadCache, self).setUp()
             self._service = OpenDirectoryService(node="/Search", dosetup=False)
-            OpenDirectoryService._queryDirectory = _queryDirectory
             
         def tearDown(self):
             for call in self._service._delayedCalls:
@@ -58,82 +63,37 @@
             self.assertTrue(len(missing) == 0, msg="Directory records not found: %s" % (missing,))
             self.assertTrue(len(extras) == 0, msg="Directory records not expected: %s" % (extras,))
                 
-        def _verifyDisabledRecords(self, recordType, disabled_type, expected):
-            expected = set(expected)
-            found = self._service._records[recordType]["disabled_%s" % (disabled_type,)]
+        def _verifyDisabledRecords(self, recordType, expectedNames, expectedGUIDs):
+            def check(disabledType, expected):
+                expected = set(expected)
+                found = self._service._records[recordType][disabledType]
             
-            missing = expected.difference(found)
-            extras = found.difference(expected)
+                missing = expected.difference(found)
+                extras = found.difference(expected)
 
-            self.assertTrue(len(missing) == 0, msg="Disabled directory records not found: %s" % (missing,))
-            self.assertTrue(len(extras) == 0, msg="Disabled directory records not expected: %s" % (extras,))
+                self.assertTrue(len(missing) == 0, msg="Disabled directory records not found: %s" % (missing,))
+                self.assertTrue(len(extras) == 0, msg="Disabled directory records not expected: %s" % (extras,))
 
-        def test_Normal(self):
-            
+            check("disabled names", expectedNames)
+            check("disabled guids", (guid.lower() for guid in expectedGUIDs))
+
+        def test_normal(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    ["user01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user01",
-                        dsattributes.kDS1AttrDistinguishedName: "User 01",
-                        dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("User 01"),
+                    fakeODRecord("User 02"),
                 ],
                 DirectoryService.recordType_groups: [
-                    ["group01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_group01",
-                        dsattributes.kDS1AttrDistinguishedName: "Group 01",
-                        dsattributes.kDSNAttrEMailAddress: "group01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["group02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_group02",
-                        dsattributes.kDS1AttrDistinguishedName: "Group 02",
-                        dsattributes.kDSNAttrEMailAddress: "group02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("Group 01"),
+                    fakeODRecord("Group 02"),
                 ],
                 DirectoryService.recordType_resources: [
-                    ["resource01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_resource01",
-                        dsattributes.kDS1AttrDistinguishedName: "Resource 01",
-                        dsattributes.kDSNAttrEMailAddress: "resource01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["resource02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_resource02",
-                        dsattributes.kDS1AttrDistinguishedName: "Resource 02",
-                        dsattributes.kDSNAttrEMailAddress: "resource02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("Resource 01"),
+                    fakeODRecord("Resource 02"),
                 ],
                 DirectoryService.recordType_locations: [
-                    ["location01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_location01",
-                        dsattributes.kDS1AttrDistinguishedName: "Location 01",
-                        dsattributes.kDSNAttrEMailAddress: "location01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["location02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_location02",
-                        dsattributes.kDS1AttrDistinguishedName: "Location 02",
-                        dsattributes.kDSNAttrEMailAddress: "location02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("Location 01"),
+                    fakeODRecord("Location 02"),
                 ],
             }
 
@@ -142,221 +102,173 @@
             self._service.reloadCache(DirectoryService.recordType_resources)
             self._service.reloadCache(DirectoryService.recordType_locations)
 
-            self._verifyRecords(DirectoryService.recordType_users, ("user01", "user02",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "names", ())
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "guids", ())
+            self._verifyRecords(DirectoryService.recordType_users, ("user01", "user02"))
+            self._verifyDisabledRecords(DirectoryService.recordType_users, (), ())
 
-            self._verifyRecords(DirectoryService.recordType_groups, ("group01", "group02",))
-            self._verifyDisabledRecords(DirectoryService.recordType_groups, "names", ())
-            self._verifyDisabledRecords(DirectoryService.recordType_groups, "guids", ())
+            self._verifyRecords(DirectoryService.recordType_groups, ("group01", "group02"))
+            self._verifyDisabledRecords(DirectoryService.recordType_groups, (), ())
 
-            self._verifyRecords(DirectoryService.recordType_resources, ("resource01", "resource02",))
-            self._verifyDisabledRecords(DirectoryService.recordType_resources, "names", ())
-            self._verifyDisabledRecords(DirectoryService.recordType_resources, "guids", ())
+            self._verifyRecords(DirectoryService.recordType_resources, ("resource01", "resource02"))
+            self._verifyDisabledRecords(DirectoryService.recordType_resources, (), ())
 
-            self._verifyRecords(DirectoryService.recordType_locations, ("location01", "location02",))
-            self._verifyDisabledRecords(DirectoryService.recordType_locations, "names", ())
-            self._verifyDisabledRecords(DirectoryService.recordType_locations, "guids", ())
+            self._verifyRecords(DirectoryService.recordType_locations, ("location01", "location02"))
+            self._verifyDisabledRecords(DirectoryService.recordType_locations, (), ())
 
-        def test_DuplicateRecords(self):
+        def test_normalCacheMiss(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    ["user01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user01",
-                        dsattributes.kDS1AttrDistinguishedName: "User 01",
-                        dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("User 01"),
                 ],
             }
 
             self._service.reloadCache(DirectoryService.recordType_users)
 
-            self._verifyRecords(DirectoryService.recordType_users, ("user01", "user02",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "names", ())
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "guids", ())
+            self._verifyRecords(DirectoryService.recordType_users, ("user01",))
+            self._verifyDisabledRecords(DirectoryService.recordType_users, (), ())
 
+            self._service.fakerecords = {
+                DirectoryService.recordType_users: [
+                    fakeODRecord("User 01"),
+                    fakeODRecord("User 02"),
+                    fakeODRecord("User 03", guid="D10F3EE0-5014-41D3-8488-3819D3EF3B2A"),
+                ],
+            }
 
-        def test_DuplicateName(self):
-            
+            self._service.reloadCache(DirectoryService.recordType_users, shortName="user02")
+            self._service.reloadCache(DirectoryService.recordType_users, guid="D10F3EE0-5014-41D3-8488-3819D3EF3B2A")
+
+            self._verifyRecords(DirectoryService.recordType_users, ("user01", "user02", "user03"))
+            self._verifyDisabledRecords(DirectoryService.recordType_users, (), ())
+
+        def test_duplicateRecords(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    ["user01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user01",
-                        dsattributes.kDS1AttrDistinguishedName: "User 01",
-                        dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02-1",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02-2",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("User 01"),
+                    fakeODRecord("User 02"),
+                    fakeODRecord("User 02"),
                 ],
             }
 
             self._service.reloadCache(DirectoryService.recordType_users)
 
+            self._verifyRecords(DirectoryService.recordType_users, ("user01", "user02"))
+            self._verifyDisabledRecords(DirectoryService.recordType_users, (), ())
+            self._verifyDisabledRecords(DirectoryService.recordType_users, (), ())
+
+
+        def test_duplicateName(self):
+            self._service.fakerecords = {
+                DirectoryService.recordType_users: [
+                    fakeODRecord("User 01"),
+                    fakeODRecord("User 02", guid="A25775BB-1281-4606-98C6-2893B2D5CCD7"),
+                    fakeODRecord("User 02", guid="30CA2BB9-C935-4A5D-80E2-79266BCB0255"),
+                ],
+            }
+
+            self._service.reloadCache(DirectoryService.recordType_users)
+
             self._verifyRecords(DirectoryService.recordType_users, ("user01",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "names", ("user02",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "guids", ("GUID_user02-1", "GUID_user02-2", ))
+            self._verifyDisabledRecords(
+                DirectoryService.recordType_users,
+                ("user02",),
+                ("A25775BB-1281-4606-98C6-2893B2D5CCD7", "30CA2BB9-C935-4A5D-80E2-79266BCB0255"),
+            )
 
-        def test_DuplicateGUID(self):
-            
+        def test_duplicateGUID(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    ["user01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user01",
-                        dsattributes.kDS1AttrDistinguishedName: "User 01",
-                        dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user03", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("User 01"),
+                    fakeODRecord("User 02", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8"),
+                    fakeODRecord("User 03", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8"),
                 ],
             }
 
             self._service.reloadCache(DirectoryService.recordType_users)
 
             self._verifyRecords(DirectoryService.recordType_users, ("user01",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "names", ("user02", "user03",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "guids", ("GUID_user02", ))
+            self._verifyDisabledRecords(
+                DirectoryService.recordType_users,
+                ("user02", "user03"),
+                ("113D7F74-F84A-4F17-8C96-CE8F10D68EF8",),
+            )
 
-        def test_DuplicateCombo(self):
-            
+        def test_duplicateCombo(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    ["user01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user01",
-                        dsattributes.kDS1AttrDistinguishedName: "User 01",
-                        dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user03", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02-2",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("User 01"),
+                    fakeODRecord("User 02", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8"),
+                    fakeODRecord("User 02", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8", shortName="user03"),
+                    fakeODRecord("User 02", guid="136E369F-DB40-4135-878D-B75D38242D39"),
                 ],
             }
 
             self._service.reloadCache(DirectoryService.recordType_users)
 
             self._verifyRecords(DirectoryService.recordType_users, ("user01",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "names", ("user02", "user03",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "guids", ("GUID_user02", "GUID_user02-2"))
+            self._verifyDisabledRecords(
+                DirectoryService.recordType_users,
+                ("user02", "user03"),
+                ("113D7F74-F84A-4F17-8C96-CE8F10D68EF8", "136E369F-DB40-4135-878D-B75D38242D39"),
+            )
 
-        def test_DuplicateGUIDCacheMiss(self):
-            
+        def test_duplicateGUIDCacheMiss(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    ["user01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user01",
-                        dsattributes.kDS1AttrDistinguishedName: "User 01",
-                        dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("User 01"),
+                    fakeODRecord("User 02", guid="EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E"),
+                    fakeODRecord("User 03", guid="D10F3EE0-5014-41D3-8488-3819D3EF3B2A"),
                 ],
             }
 
             self._service.reloadCache(DirectoryService.recordType_users)
 
-            self._verifyRecords(DirectoryService.recordType_users, ("user01", "user02",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "names", ())
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "guids", ())
+            self._verifyRecords(DirectoryService.recordType_users, ("user01", "user02", "user03"))
+            self._verifyDisabledRecords(DirectoryService.recordType_users, (), ())
             
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    ["user01", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user01",
-                        dsattributes.kDS1AttrDistinguishedName: "User 01",
-                        dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user02", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
-                    ["user03", {
-                        dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
-                        dsattributes.kDS1AttrDistinguishedName: "User 02",
-                        dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
-                        dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
-                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
-                    }],
+                    fakeODRecord("User 01"),
+                    fakeODRecord("User 02", guid="EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E"),
+                    fakeODRecord("User 02", guid="EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E", shortName="user04"),
+                    fakeODRecord("User 03", guid="62368DDF-0C62-4C97-9A58-DE9FD46131A0"),
+                    fakeODRecord("User 03", guid="62368DDF-0C62-4C97-9A58-DE9FD46131A0", shortName="user05"),
                 ],
             }
 
-            self._service.reloadCache(DirectoryService.recordType_users, "user03")
+            self._service.reloadCache(DirectoryService.recordType_users, shortName="user04")
+            self._service.reloadCache(DirectoryService.recordType_users, guid="62368DDF-0C62-4C97-9A58-DE9FD46131A0")
 
-            self._verifyRecords(DirectoryService.recordType_users, ("user01", "user02",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "names", ("user03",))
-            self._verifyDisabledRecords(DirectoryService.recordType_users, "guids", ("GUID_user02", ))
+            self._verifyRecords(DirectoryService.recordType_users, ("user01",))
+            self._verifyDisabledRecords(
+                DirectoryService.recordType_users,
+                ("user02", "user03", "user04", "user05"),
+                ("EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E", "62368DDF-0C62-4C97-9A58-DE9FD46131A0", "D10F3EE0-5014-41D3-8488-3819D3EF3B2A"),
+            )
 
+def fakeODRecord(fullName, shortName=None, guid=None, email=None):
+    if shortName is None:
+        shortName = shortNameForFullName(fullName)
+
+    if guid is None:
+        guid = guidForShortName(shortName)
+    else:
+        guid = guid.lower()
+
+    if email is None:
+        email = "%s at example.com" % (shortName,)
+
+    return [
+        shortName, {
+            dsattributes.kDS1AttrDistinguishedName: fullName,
+            dsattributes.kDS1AttrGeneratedUID: guid,
+            dsattributes.kDSNAttrEMailAddress: email,
+            dsattributes.kDSNAttrServicesLocator: "FE588D50-0514-4DF9-BCB5-8ECA5F3DA274:030572AE-ABEC-4E0F-83C9-FCA304769E5F:calendar",
+            dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
+        }
+    ]
+
+def shortNameForFullName(fullName):
+    return fullName.lower().replace(" ", "")
+
+def guidForShortName(shortName):
+    return uuidFromName(OpenDirectoryService.baseGUID, shortName)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20071205/d5d6a91d/attachment-0001.html


More information about the calendarserver-changes mailing list