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

source_changes at macosforge.org source_changes at macosforge.org
Thu Feb 21 20:14:12 PST 2008


Revision: 2174
          http://trac.macosforge.org/projects/calendarserver/changeset/2174
Author:   cdaboo at apple.com
Date:     2008-02-21 20:14:12 -0800 (Thu, 21 Feb 2008)

Log Message:
-----------
Fix a test and add some more for enabledForCalendaring state. Fix enabledForCalendaring = False behavior.

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

Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py	2008-02-22 02:51:48 UTC (rev 2173)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py	2008-02-22 04:14:12 UTC (rev 2174)
@@ -468,7 +468,6 @@
                         "Record (%s) %s is not enabled for calendaring but may be used in ACLs"
                         % (recordType, recordShortName), system="OpenDirectoryService"
                     )
-                    enabledForCalendaring = False
 
                 def invalidRecord():
                     logging.err(
@@ -487,12 +486,14 @@
                     else:
                         if allowForACLs():
                             disableForCalendaring()
+                            enabledForCalendaring = False
                         else:
                             invalidRecord()
                             continue
                 else:
                     if allowForACLs():
                         disableForCalendaring()
+                        enabledForCalendaring = False
                     else:
                         invalidRecord()
                         continue

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryrecords.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryrecords.py	2008-02-22 02:51:48 UTC (rev 2173)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryrecords.py	2008-02-22 04:14:12 UTC (rev 2174)
@@ -46,6 +46,7 @@
         def setUp(self):
             super(ReloadCache, self).setUp()
             self._service = OpenDirectoryService(node="/Search", dosetup=False)
+            self._service.servicetags.add("FE588D50-0514-4DF9-BCB5-8ECA5F3DA274:030572AE-ABEC-4E0F-83C9-FCA304769E5F:calendar")
             
         def tearDown(self):
             for call in self._service._delayedCalls:
@@ -61,6 +62,17 @@
             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 _verifyRecordsCheckEnabled(self, recordType, expected, enabled):
+            expected = set(expected)
+            found = set([item for item in self._service._records[recordType]["records"].iterkeys()
+                         if self._service._records[recordType]["records"][item].enabledForCalendaring == enabled])
+            
+            missing = expected.difference(found)
+            extras = found.difference(expected)
+
+            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, expectedNames, expectedGUIDs):
             def check(disabledType, expected):
                 expected = set(expected)
@@ -78,20 +90,20 @@
         def test_normal(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    fakeODRecord("User 01"),
-                    fakeODRecord("User 02"),
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02"),
                 ],
                 DirectoryService.recordType_groups: [
-                    fakeODRecord("Group 01"),
-                    fakeODRecord("Group 02"),
+                    fakeODRecordWithServicesLocator("Group 01"),
+                    fakeODRecordWithServicesLocator("Group 02"),
                 ],
                 DirectoryService.recordType_resources: [
-                    fakeODRecord("Resource 01"),
-                    fakeODRecord("Resource 02"),
+                    fakeODRecordWithServicesLocator("Resource 01"),
+                    fakeODRecordWithServicesLocator("Resource 02"),
                 ],
                 DirectoryService.recordType_locations: [
-                    fakeODRecord("Location 01"),
-                    fakeODRecord("Location 02"),
+                    fakeODRecordWithServicesLocator("Location 01"),
+                    fakeODRecordWithServicesLocator("Location 02"),
                 ],
             }
 
@@ -112,10 +124,55 @@
             self._verifyRecords(DirectoryService.recordType_locations, ("location01", "location02"))
             self._verifyDisabledRecords(DirectoryService.recordType_locations, (), ())
 
+        def test_normal_disabledusers(self):
+            self._service.fakerecords = {
+                DirectoryService.recordType_users: [
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02"),
+                    fakeODRecordWithoutServicesLocator("User 03"),
+                    fakeODRecordWithoutServicesLocator("User 04"),
+                ],
+                DirectoryService.recordType_groups: [
+                    fakeODRecordWithServicesLocator("Group 01"),
+                    fakeODRecordWithServicesLocator("Group 02"),
+                    fakeODRecordWithoutServicesLocator("Group 03"),
+                    fakeODRecordWithoutServicesLocator("Group 04"),
+                ],
+                DirectoryService.recordType_resources: [
+                    fakeODRecordWithServicesLocator("Resource 01"),
+                    fakeODRecordWithServicesLocator("Resource 02"),
+                    fakeODRecordWithoutServicesLocator("Resource 03"),
+                    fakeODRecordWithoutServicesLocator("Resource 04"),
+                ],
+                DirectoryService.recordType_locations: [
+                    fakeODRecordWithServicesLocator("Location 01"),
+                    fakeODRecordWithServicesLocator("Location 02"),
+                    fakeODRecordWithoutServicesLocator("Location 03"),
+                    fakeODRecordWithoutServicesLocator("Location 04"),
+                ],
+            }
+
+            self._service.reloadCache(DirectoryService.recordType_users)
+            self._service.reloadCache(DirectoryService.recordType_groups)
+            self._service.reloadCache(DirectoryService.recordType_resources)
+            self._service.reloadCache(DirectoryService.recordType_locations)
+
+            self._verifyRecordsCheckEnabled(DirectoryService.recordType_users, ("user01", "user02"), True)
+            self._verifyRecordsCheckEnabled(DirectoryService.recordType_users, ("user03", "user04"), False)
+
+            self._verifyRecordsCheckEnabled(DirectoryService.recordType_groups, ("group01", "group02"), True)
+            self._verifyRecordsCheckEnabled(DirectoryService.recordType_groups, ("group03", "group04"), False)
+
+            self._verifyRecordsCheckEnabled(DirectoryService.recordType_resources, ("resource01", "resource02"), True)
+            self._verifyRecordsCheckEnabled(DirectoryService.recordType_resources, (), False)
+
+            self._verifyRecordsCheckEnabled(DirectoryService.recordType_locations, ("location01", "location02"), True)
+            self._verifyRecordsCheckEnabled(DirectoryService.recordType_locations, (), False)
+
         def test_normalCacheMiss(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    fakeODRecord("User 01"),
+                    fakeODRecordWithServicesLocator("User 01"),
                 ],
             }
 
@@ -126,9 +183,9 @@
 
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    fakeODRecord("User 01"),
-                    fakeODRecord("User 02"),
-                    fakeODRecord("User 03", guid="D10F3EE0-5014-41D3-8488-3819D3EF3B2A"),
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02"),
+                    fakeODRecordWithServicesLocator("User 03", guid="D10F3EE0-5014-41D3-8488-3819D3EF3B2A"),
                 ],
             }
 
@@ -141,9 +198,9 @@
         def test_duplicateRecords(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    fakeODRecord("User 01"),
-                    fakeODRecord("User 02"),
-                    fakeODRecord("User 02"),
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02"),
+                    fakeODRecordWithServicesLocator("User 02"),
                 ],
             }
 
@@ -157,9 +214,9 @@
         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"),
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02", guid="A25775BB-1281-4606-98C6-2893B2D5CCD7"),
+                    fakeODRecordWithServicesLocator("User 02", guid="30CA2BB9-C935-4A5D-80E2-79266BCB0255"),
                 ],
             }
 
@@ -175,9 +232,9 @@
         def test_duplicateGUID(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    fakeODRecord("User 01"),
-                    fakeODRecord("User 02", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8"),
-                    fakeODRecord("User 03", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8"),
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8"),
+                    fakeODRecordWithServicesLocator("User 03", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8"),
                 ],
             }
 
@@ -193,10 +250,10 @@
         def test_duplicateCombo(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    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"),
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8"),
+                    fakeODRecordWithServicesLocator("User 02", guid="113D7F74-F84A-4F17-8C96-CE8F10D68EF8", shortName="user03"),
+                    fakeODRecordWithServicesLocator("User 02", guid="136E369F-DB40-4135-878D-B75D38242D39"),
                 ],
             }
 
@@ -212,9 +269,9 @@
         def test_duplicateGUIDCacheMiss(self):
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    fakeODRecord("User 01"),
-                    fakeODRecord("User 02", guid="EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E"),
-                    fakeODRecord("User 03", guid="D10F3EE0-5014-41D3-8488-3819D3EF3B2A"),
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02", guid="EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E"),
+                    fakeODRecordWithServicesLocator("User 03", guid="D10F3EE0-5014-41D3-8488-3819D3EF3B2A"),
                 ],
             }
 
@@ -225,11 +282,11 @@
             
             self._service.fakerecords = {
                 DirectoryService.recordType_users: [
-                    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"),
+                    fakeODRecordWithServicesLocator("User 01"),
+                    fakeODRecordWithServicesLocator("User 02", guid="EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E"),
+                    fakeODRecordWithServicesLocator("User 02", guid="EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E", shortName="user04"),
+                    fakeODRecordWithServicesLocator("User 03", guid="62368DDF-0C62-4C97-9A58-DE9FD46131A0"),
+                    fakeODRecordWithServicesLocator("User 03", guid="62368DDF-0C62-4C97-9A58-DE9FD46131A0", shortName="user05"),
                 ],
             }
 
@@ -243,7 +300,7 @@
                 ("EDB9EE55-31F2-4EA9-B5FB-D8AE2A8BA35E", "62368DDF-0C62-4C97-9A58-DE9FD46131A0", "D10F3EE0-5014-41D3-8488-3819D3EF3B2A"),
             )
 
-def fakeODRecord(fullName, shortName=None, guid=None, email=None):
+def fakeODRecordWithServicesLocator(fullName, shortName=None, guid=None, email=None):
     if shortName is None:
         shortName = shortNameForFullName(fullName)
 
@@ -265,6 +322,27 @@
         }
     ]
 
+def fakeODRecordWithoutServicesLocator(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.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
+        }
+    ]
+
 def shortNameForFullName(fullName):
     return fullName.lower().replace(" ", "")
 

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


More information about the calendarserver-changes mailing list