[CalendarServer-changes] [12971] CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/ directory/test/test_principal.py

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 19 12:17:19 PDT 2014


Revision: 12971
          http://trac.calendarserver.org//changeset/12971
Author:   wsanchez at apple.com
Date:     2014-03-19 12:17:18 -0700 (Wed, 19 Mar 2014)
Log Message:
-----------
lint

Modified Paths:
--------------
    CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py

Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py	2014-03-19 16:55:24 UTC (rev 12970)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/test_principal.py	2014-03-19 19:17:18 UTC (rev 12971)
@@ -20,29 +20,38 @@
 
 from twisted.cred.credentials import UsernamePassword
 from twisted.internet.defer import inlineCallbacks
+
+from txweb2.dav.fileop import rmdir
+from txweb2.dav.resource import AccessDeniedError
+from txweb2.http import HTTPError
+from txweb2.test.test_server import SimpleRequest
+
+from txdav.common.datastore.file import CommonDataStore
+from txdav.xml import element as davxml
+
 from twistedcaldav import carddavxml
 from twistedcaldav.cache import DisabledCacheNotifier
 from twistedcaldav.caldavxml import caldav_namespace
 from twistedcaldav.config import config
 from twistedcaldav.customxml import calendarserver_namespace
-from twistedcaldav.directory.addressbook import DirectoryAddressBookHomeProvisioningResource
-from twistedcaldav.directory.calendar import DirectoryCalendarHomeProvisioningResource
-from twistedcaldav.directory.principal import DirectoryCalendarPrincipalResource
-from twistedcaldav.directory.principal import DirectoryPrincipalProvisioningResource
-from twistedcaldav.directory.principal import DirectoryPrincipalResource
-from twistedcaldav.directory.principal import DirectoryPrincipalTypeProvisioningResource
+from twistedcaldav.directory.addressbook import (
+    DirectoryAddressBookHomeProvisioningResource
+)
+from twistedcaldav.directory.calendar import (
+    DirectoryCalendarHomeProvisioningResource
+)
+from twistedcaldav.directory.principal import (
+    DirectoryCalendarPrincipalResource,
+    DirectoryPrincipalProvisioningResource,
+    DirectoryPrincipalResource,
+    DirectoryPrincipalTypeProvisioningResource,
+)
 from twistedcaldav.test.util import StoreTestCase
-from txdav.common.datastore.file import CommonDataStore
-from txdav.xml import element as davxml
-from txweb2.dav.fileop import rmdir
-from txweb2.dav.resource import AccessDeniedError
-from txweb2.http import HTTPError
-from txweb2.test.test_server import SimpleRequest
 
 
 
-
-class ProvisionedPrincipals(StoreTestCase):  # twistedcaldav.test.util.TestCase):
+# twistedcaldav.test.util.TestCase
+class ProvisionedPrincipals(StoreTestCase):
     """
     Directory service provisioned principals.
     """
@@ -93,13 +102,21 @@
         directory = self.directory
         if True:
             #print("\n -> %s" % (directory.__class__.__name__,))
-            provisioningResource = self.principalRootResources[directory.__class__.__name__]
+            provisioningResource = (
+                self.principalRootResources[directory.__class__.__name__]
+            )
 
             provisioningURL = "/" + directory.__class__.__name__ + "/"
-            self.assertEquals(provisioningURL, provisioningResource.principalCollectionURL())
+            self.assertEquals(
+                provisioningURL,
+                provisioningResource.principalCollectionURL()
+            )
 
             principalCollections = provisioningResource.principalCollections()
-            self.assertEquals(set((provisioningURL,)), set(pc.principalCollectionURL() for pc in principalCollections))
+            self.assertEquals(
+                set((provisioningURL,)),
+                set(pc.principalCollectionURL() for pc in principalCollections)
+            )
 
             recordTypes = set((yield provisioningResource.listChildren()))
             self.assertEquals(recordTypes, set(directory.recordTypes()))
@@ -107,13 +124,26 @@
             for recordType in recordTypes:
                 #print("   -> %s" % (recordType,))
                 typeResource = provisioningResource.getChild(recordType)
-                self.failUnless(isinstance(typeResource, DirectoryPrincipalTypeProvisioningResource))
+                self.failUnless(
+                    isinstance(
+                        typeResource,
+                        DirectoryPrincipalTypeProvisioningResource
+                    )
+                )
 
                 typeURL = provisioningURL + recordType + "/"
-                self.assertEquals(typeURL, typeResource.principalCollectionURL())
+                self.assertEquals(
+                    typeURL, typeResource.principalCollectionURL()
+                )
 
                 principalCollections = typeResource.principalCollections()
-                self.assertEquals(set((provisioningURL,)), set(pc.principalCollectionURL() for pc in principalCollections))
+                self.assertEquals(
+                    set((provisioningURL,)),
+                    set(
+                        pc.principalCollectionURL()
+                        for pc in principalCollections
+                    )
+                )
 
                 shortNames = set((yield typeResource.listChildren()))
                 # Handle records with mulitple shortNames
@@ -126,21 +156,39 @@
                 for shortName in shortNames:
                     #print("     -> %s" % (shortName,))
                     recordResource = typeResource.getChild(shortName)
-                    self.failUnless(isinstance(recordResource, DirectoryPrincipalResource))
+                    self.failUnless(
+                        isinstance(recordResource, DirectoryPrincipalResource)
+                    )
 
                     # shortName may be non-ascii
                     recordURL = typeURL + quote(shortName) + "/"
-                    self.assertIn(recordURL, (recordResource.principalURL(),) + tuple(recordResource.alternateURIs()))
+                    self.assertIn(
+                        recordURL,
+                        (
+                            (recordResource.principalURL(),) +
+                            tuple(recordResource.alternateURIs())
+                        )
+                    )
 
-                    principalCollections = recordResource.principalCollections()
-                    self.assertEquals(set((provisioningURL,)), set(pc.principalCollectionURL() for pc in principalCollections))
+                    principalCollections = (
+                        recordResource.principalCollections()
+                    )
+                    self.assertEquals(
+                        set((provisioningURL,)),
+                        set(
+                            pc.principalCollectionURL()
+                            for pc in principalCollections
+                        )
+                    )
 
 
     def test_allRecords(self):
         """
         Test of a test routine...
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabled:
                 self.assertEquals(recordResource.record, record)
 
@@ -153,8 +201,12 @@
         """
         DirectoryPrincipalProvisioningResource.principalForShortName()
         """
-        for provisioningResource, recordType, _ignore_recordResource, record in self._allRecords():
-            principal = provisioningResource.principalForShortName(recordType, record.shortNames[0])
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
+            principal = provisioningResource.principalForShortName(
+                recordType, record.shortNames[0]
+            )
             if record.enabled:
                 self.failIf(principal is None)
                 self.assertEquals(record, principal.record)
@@ -167,10 +219,14 @@
         DirectoryPrincipalProvisioningResource.principalForUser()
         """
         directory = self.directory
-        provisioningResource = self.principalRootResources[directory.__class__.__name__]
+        provisioningResource = (
+            self.principalRootResources[directory.__class__.__name__]
+        )
 
         for user in directory.listRecords(DirectoryService.recordType_users):
-            userResource = provisioningResource.principalForUser(user.shortNames[0])
+            userResource = provisioningResource.principalForUser(
+                user.shortNames[0]
+            )
             if user.enabled:
                 self.failIf(userResource is None)
                 self.assertEquals(user, userResource.record)
@@ -183,7 +239,9 @@
         DirectoryPrincipalProvisioningResource.principalForAuthID()
         """
         directory = self.directory
-        provisioningResource = self.principalRootResources[directory.__class__.__name__]
+        provisioningResource = (
+            self.principalRootResources[directory.__class__.__name__]
+        )
 
         for user in directory.listRecords(DirectoryService.recordType_users):
             creds = UsernamePassword(user.shortNames[0], "bogus")
@@ -199,7 +257,9 @@
         """
         DirectoryPrincipalProvisioningResource.principalForUID()
         """
-        for provisioningResource, _ignore_recordType, _ignore_recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             principal = provisioningResource.principalForUID(record.uid)
             if record.enabled:
                 self.failIf(principal is None)
@@ -212,7 +272,9 @@
         """
         DirectoryPrincipalProvisioningResource.principalForRecord()
         """
-        for provisioningResource, _ignore_recordType, _ignore_recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             principal = provisioningResource.principalForRecord(record)
             if record.enabled:
                 self.failIf(principal is None)
@@ -226,7 +288,7 @@
         DirectoryPrincipalProvisioningResource.principalForCalendarUserAddress()
         """
         for (
-            provisioningResource, _ignore_recordType, recordResource, record
+            provisioningResource, recordType, recordResource, record
         ) in self._allRecords():
 
             test_items = tuple(record.calendarUserAddresses)
@@ -239,7 +301,10 @@
                 test_items += (principalURL, alternateURL)
 
             for address in test_items:
-                principal = provisioningResource.principalForCalendarUserAddress(address)
+                principal = (
+                    provisioningResource
+                    .principalForCalendarUserAddress(address)
+                )
                 if record.enabledForCalendaring:
                     self.failIf(principal is None)
                     self.assertEquals(record, principal.record)
@@ -247,7 +312,9 @@
                     self.failIf(principal is not None)
 
         # Explicitly check the disabled record
-        provisioningResource = self.principalRootResources['XMLDirectoryService']
+        provisioningResource = (
+            self.principalRootResources['XMLDirectoryService']
+        )
 
         self.failUnlessIdentical(
             provisioningResource.principalForCalendarUserAddress(
@@ -280,7 +347,9 @@
         """
         DirectoryPrincipalProvisioningResource.principalForCalendarUserAddress()
         """
-        for provisioningResource, _ignore_recordType, _ignore_recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             principal = provisioningResource.principalForRecord(record)
             if record.enabled:
                 self.failIf(principal is None)
@@ -288,13 +357,25 @@
                 self.failIf(principal is not None)
                 continue
             if record.enabledForCalendaring:
-                self.assertTrue(isinstance(principal, DirectoryCalendarPrincipalResource))
+                self.assertTrue(
+                    isinstance(principal, DirectoryCalendarPrincipalResource)
+                )
             else:
-                self.assertTrue(isinstance(principal, DirectoryPrincipalResource))
+                self.assertTrue(
+                    isinstance(principal, DirectoryPrincipalResource)
+                )
                 if record.enabledForAddressBooks:
-                    self.assertTrue(isinstance(principal, DirectoryCalendarPrincipalResource))
+                    self.assertTrue(
+                        isinstance(
+                            principal, DirectoryCalendarPrincipalResource
+                        )
+                    )
                 else:
-                    self.assertFalse(isinstance(principal, DirectoryCalendarPrincipalResource))
+                    self.assertFalse(
+                        isinstance(
+                            principal, DirectoryCalendarPrincipalResource
+                        )
+                    )
 
             @inlineCallbacks
             def hasProperty(property):
@@ -311,31 +392,68 @@
                 except:
                     self.fail("Wrong exception type")
                 else:
-                    self.fail("No exception principal: %s, property %s" % (principal, property,))
+                    self.fail(
+                        "No exception principal: %s, property %s"
+                        % (principal, property,)
+                    )
 
             if record.enabledForCalendaring:
-                yield hasProperty((caldav_namespace, "calendar-home-set"))
-                yield hasProperty((caldav_namespace, "calendar-user-address-set"))
-                yield hasProperty((caldav_namespace, "schedule-inbox-URL"))
-                yield hasProperty((caldav_namespace, "schedule-outbox-URL"))
-                yield hasProperty((caldav_namespace, "calendar-user-type"))
-                yield hasProperty((calendarserver_namespace, "calendar-proxy-read-for"))
-                yield hasProperty((calendarserver_namespace, "calendar-proxy-write-for"))
-                yield hasProperty((calendarserver_namespace, "auto-schedule"))
+                yield hasProperty(
+                    (caldav_namespace, "calendar-home-set")
+                )
+                yield hasProperty(
+                    (caldav_namespace, "calendar-user-address-set")
+                )
+                yield hasProperty(
+                    (caldav_namespace, "schedule-inbox-URL")
+                )
+                yield hasProperty(
+                    (caldav_namespace, "schedule-outbox-URL")
+                )
+                yield hasProperty(
+                    (caldav_namespace, "calendar-user-type")
+                )
+                yield hasProperty(
+                    (calendarserver_namespace, "calendar-proxy-read-for")
+                )
+                yield hasProperty(
+                    (calendarserver_namespace, "calendar-proxy-write-for")
+                )
+                yield hasProperty(
+                    (calendarserver_namespace, "auto-schedule")
+                )
             else:
-                yield doesNotHaveProperty((caldav_namespace, "calendar-home-set"))
-                yield doesNotHaveProperty((caldav_namespace, "calendar-user-address-set"))
-                yield doesNotHaveProperty((caldav_namespace, "schedule-inbox-URL"))
-                yield doesNotHaveProperty((caldav_namespace, "schedule-outbox-URL"))
-                yield doesNotHaveProperty((caldav_namespace, "calendar-user-type"))
-                yield doesNotHaveProperty((calendarserver_namespace, "calendar-proxy-read-for"))
-                yield doesNotHaveProperty((calendarserver_namespace, "calendar-proxy-write-for"))
-                yield doesNotHaveProperty((calendarserver_namespace, "auto-schedule"))
+                yield doesNotHaveProperty(
+                    (caldav_namespace, "calendar-home-set")
+                )
+                yield doesNotHaveProperty(
+                    (caldav_namespace, "calendar-user-address-set")
+                )
+                yield doesNotHaveProperty(
+                    (caldav_namespace, "schedule-inbox-URL")
+                )
+                yield doesNotHaveProperty(
+                    (caldav_namespace, "schedule-outbox-URL")
+                )
+                yield doesNotHaveProperty(
+                    (caldav_namespace, "calendar-user-type")
+                )
+                yield doesNotHaveProperty(
+                    (calendarserver_namespace, "calendar-proxy-read-for")
+                )
+                yield doesNotHaveProperty(
+                    (calendarserver_namespace, "calendar-proxy-write-for")
+                )
+                yield doesNotHaveProperty(
+                    (calendarserver_namespace, "auto-schedule")
+                )
 
             if record.enabledForAddressBooks:
                 yield hasProperty(carddavxml.AddressBookHomeSet.qname())
             else:
-                yield doesNotHaveProperty(carddavxml.AddressBookHomeSet.qname())
+                yield doesNotHaveProperty(
+                    carddavxml.AddressBookHomeSet.qname()
+                )
 
 
     def test_enabledAsOrganizer(self):
@@ -346,12 +464,17 @@
         ok_types = (
             DirectoryService.recordType_users,
         )
-        for provisioningResource, recordType, _ignore_recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
 
             if record.enabledForCalendaring:
                 principal = provisioningResource.principalForRecord(record)
                 self.failIf(principal is None)
-                self.assertEqual(principal.enabledAsOrganizer(), recordType in ok_types)
+                self.assertEqual(
+                    principal.enabledAsOrganizer(),
+                    recordType in ok_types
+                )
 
         config.Scheduling.Options.AllowGroupAsOrganizer = True
         config.Scheduling.Options.AllowLocationAsOrganizer = True
@@ -362,15 +485,20 @@
             DirectoryService.recordType_locations,
             DirectoryService.recordType_resources,
         )
-        for provisioningResource, recordType, _ignore_recordResource, record in self._allRecords():
-
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
                 principal = provisioningResource.principalForRecord(record)
                 self.failIf(principal is None)
-                self.assertEqual(principal.enabledAsOrganizer(), recordType in ok_types)
+                self.assertEqual(
+                    principal.enabledAsOrganizer(),
+                    recordType in ok_types
+                )
 
 
-    # FIXME: Run DirectoryPrincipalProvisioningResource tests on DirectoryPrincipalTypeProvisioningResource also
+    # FIXME: Run DirectoryPrincipalProvisioningResource tests on
+    # DirectoryPrincipalTypeProvisioningResource also
 
     ##
     # DirectoryPrincipalResource
@@ -381,17 +509,25 @@
         Each DirectoryPrincipalResource should have a cacheNotifier attribute
         that is an instance of DisabledCacheNotifier
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabled:
-                self.failUnless(isinstance(recordResource.cacheNotifier,
-                                           DisabledCacheNotifier))
+                self.failUnless(
+                    isinstance(
+                        recordResource.cacheNotifier,
+                        DisabledCacheNotifier
+                    )
+                )
 
 
     def test_displayName(self):
         """
         DirectoryPrincipalResource.displayName()
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabled:
                 self.failUnless(recordResource.displayName())
 
@@ -401,10 +537,16 @@
         """
         DirectoryPrincipalResource.groupMembers()
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabled:
                 members = yield recordResource.groupMembers()
-                self.failUnless(set(record.members()).issubset(set(r.record for r in members)))
+                self.failUnless(
+                    set(record.members()).issubset(
+                        set(r.record for r in members)
+                    )
+                )
 
 
     @inlineCallbacks
@@ -412,17 +554,28 @@
         """
         DirectoryPrincipalResource.groupMemberships()
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabled:
                 memberships = yield recordResource.groupMemberships()
-                self.failUnless(set(record.groups()).issubset(set(r.record for r in memberships if hasattr(r, "record"))))
+                self.failUnless(
+                    set(record.groups()).issubset(
+                        set(
+                            r.record
+                            for r in memberships if hasattr(r, "record")
+                        )
+                    )
+                )
 
 
     def test_principalUID(self):
         """
         DirectoryPrincipalResource.principalUID()
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabled:
                 self.assertEquals(record.guid, recordResource.principalUID())
 
@@ -431,9 +584,14 @@
         """
         DirectoryPrincipalResource.calendarUserAddresses()
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
-                self.assertEqual(set(record.calendarUserAddresses), set(recordResource.calendarUserAddresses()))
+                self.assertEqual(
+                    set(record.calendarUserAddresses),
+                    set(recordResource.calendarUserAddresses())
+                )
 
                 # Verify that if not enabled for calendaring, no CUAs:
                 record.enabledForCalendaring = False
@@ -444,17 +602,25 @@
         """
         DirectoryPrincipalResource.canonicalCalendarUserAddress()
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
-                self.failUnless(recordResource.canonicalCalendarUserAddress().startswith("urn:uuid:"))
+                self.failUnless(
+                    recordResource.canonicalCalendarUserAddress()
+                    .startswith("urn:uuid:")
+                )
 
 
     def test_addressBookHomeURLs(self):
         """
         DirectoryPrincipalResource.addressBookHomeURLs(),
         """
-        # No addressbook home provisioner should result in no addressbook homes.
-        for provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        # No addressbook home provisioner should result in no addressbook
+        # homes.
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForAddressBooks:
                 self.failIf(tuple(recordResource.addressBookHomeURLs()))
 
@@ -469,29 +635,37 @@
         os.mkdir(path)
 
         # need a data store
-        _newstore = commondatastore(path, none, none, true, false)
+        newstore = commondatastore(path, none, none, true, false)
 
         provisioningresource = directoryaddressbookhomeprovisioningresource(
             directory,
             "/addressbooks/",
-            _newstore
+            newstore
         )
 
-        addressbookrootresources[directory.__class__.__name__] = provisioningResource
+        addressbookrootresources[directory.__class__.__name__] = (
+            provisioningResource
+        )
 
         # AddressBook home provisioners should result in addressBook homes.
-        for provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForAddressBooks:
                 homeURLs = tuple(recordResource.addressBookHomeURLs())
                 self.failUnless(homeURLs)
 
-                # Turn off enabledForAddressBooks and addressBookHomeURLs should
-                # be empty
+                # Turn off enabledForAddressBooks and addressBookHomeURLs
+                # should be empty
                 record.enabledForAddressBooks = False
                 self.failIf(tuple(recordResource.addressBookHomeURLs()))
                 record.enabledForAddressBooks = True
 
-                addressBookRootURL = addressBookRootResources[record.service.__class__.__name__].url()
+                addressBookRootURL = (
+                    addressBookRootResources[
+                        record.service.__class__.__name__
+                    ].url()
+                )
 
                 for homeURL in homeURLs:
                     self.failUnless(homeURL.startswith(addressBookRootURL))
@@ -504,7 +678,9 @@
         DirectoryPrincipalResource.scheduleOutboxURL()
         """
         # No calendar home provisioner should result in no calendar homes.
-        for provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
                 self.failIf(tuple(recordResource.calendarHomeURLs()))
                 self.failIf(recordResource.scheduleInboxURL())
@@ -529,10 +705,14 @@
             _newStore
         )
 
-        calendarRootResources[directory.__class__.__name__] = provisioningResource
+        calendarRootResources[directory.__class__.__name__] = (
+            provisioningResource
+        )
 
         # Calendar home provisioners should result in calendar homes.
-        for provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
                 homeURLs = tuple(recordResource.calendarHomeURLs())
                 self.failUnless(homeURLs)
@@ -543,7 +723,11 @@
                 self.failIf(tuple(recordResource.calendarHomeURLs()))
                 record.enabledForCalendaring = True
 
-                calendarRootURL = calendarRootResources[record.service.__class__.__name__].url()
+                calendarRootURL = (
+                    calendarRootResources[
+                        record.service.__class__.__name__
+                    ].url()
+                )
 
                 inboxURL = recordResource.scheduleInboxURL()
                 outboxURL = recordResource.scheduleOutboxURL()
@@ -574,13 +758,20 @@
         """
 
         # Set all resources and locations to auto-schedule, plus one user
-        for _ignore_provisioningResource, recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
-                if recordType in ("locations", "resources") or record.uid == "cdaboo":
+                if (
+                    recordType in ("locations", "resources") or
+                    record.uid == "cdaboo"
+                ):
                     recordResource.record.autoSchedule = True
 
         # Default state - resources and locations, enabled, others not
-        for _ignore_provisioningResource, recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
                 if recordType in ("locations", "resources"):
                     self.assertTrue(recordResource.canAutoSchedule())
@@ -589,16 +780,23 @@
 
         # Set config to allow users
         self.patch(config.Scheduling.Options.AutoSchedule, "AllowUsers", True)
-        for _ignore_provisioningResource, recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
-                if recordType in ("locations", "resources") or record.uid == "cdaboo":
+                if (
+                    recordType in ("locations", "resources") or
+                    record.uid == "cdaboo"
+                ):
                     self.assertTrue(recordResource.canAutoSchedule())
                 else:
                     self.assertFalse(recordResource.canAutoSchedule())
 
         # Set config to disallow all
         self.patch(config.Scheduling.Options.AutoSchedule, "Enabled", False)
-        for _ignore_provisioningResource, recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabledForCalendaring:
                 self.assertFalse(recordResource.canAutoSchedule())
 
@@ -608,19 +806,30 @@
         DirectoryPrincipalResource.canAutoSchedule(organizer)
         """
 
-        # Location "apollo" has an auto-accept group ("both_coasts") set in augments.xml,
-        # therefore any organizer in that group should be able to auto schedule
+        # Location "apollo" has an auto-accept group ("both_coasts") set in
+        # augments.xml, therefore any organizer in that group should be able to
+        # auto schedule
 
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.uid == "apollo":
 
                 # No organizer
                 self.assertFalse(recordResource.canAutoSchedule())
 
                 # Organizer in auto-accept group
-                self.assertTrue(recordResource.canAutoSchedule(organizer="mailto:wsanchez at example.com"))
+                self.assertTrue(
+                    recordResource.canAutoSchedule(
+                        organizer="mailto:wsanchez at example.com"
+                    )
+                )
                 # Organizer not in auto-accept group
-                self.assertFalse(recordResource.canAutoSchedule(organizer="mailto:a at example.com"))
+                self.assertFalse(
+                    recordResource.canAutoSchedule(
+                        organizer="mailto:a at example.com"
+                    )
+                )
 
 
     @inlineCallbacks
@@ -628,9 +837,13 @@
         """
         Default access controls for principals.
         """
-        for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+        for (
+            provisioningResource, recordType, recordResource, record
+        ) in self._allRecords():
             if record.enabled:
-                for args in _authReadOnlyPrivileges(self, recordResource, recordResource.principalURL()):
+                for args in _authReadOnlyPrivileges(
+                    self, recordResource, recordResource.principalURL()
+                ):
                     yield self._checkPrivileges(*args)
 
 
@@ -641,16 +854,23 @@
         """
         directory = self.directory
         #print("\n -> %s" % (directory.__class__.__name__,))
-        provisioningResource = self.principalRootResources[directory.__class__.__name__]
+        provisioningResource = (
+            self.principalRootResources[directory.__class__.__name__]
+        )
 
-        for args in _authReadOnlyPrivileges(self, provisioningResource, provisioningResource.principalCollectionURL()):
+        for args in _authReadOnlyPrivileges(
+            self, provisioningResource,
+            provisioningResource.principalCollectionURL()
+        ):
             yield self._checkPrivileges(*args)
 
         for recordType in (yield provisioningResource.listChildren()):
             #print("   -> %s" % (recordType,))
             typeResource = provisioningResource.getChild(recordType)
 
-            for args in _authReadOnlyPrivileges(self, typeResource, typeResource.principalCollectionURL()):
+            for args in _authReadOnlyPrivileges(
+                self, typeResource, typeResource.principalCollectionURL()
+            ):
                 yield self._checkPrivileges(*args)
 
 
@@ -664,23 +884,73 @@
             def qname(self):
                 return self.ns, self.name
 
-        provisioningResource = self.principalRootResources['XMLDirectoryService']
+        provisioningResource = (
+            self.principalRootResources['XMLDirectoryService']
+        )
 
         expected = (
-            ("DAV:", "displayname", "morgen", "fullName", "morgen"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-type", "INDIVIDUAL", "recordType", "users"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-type", "GROUP", "recordType", "groups"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-type", "RESOURCE", "recordType", "resources"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-type", "ROOM", "recordType", "locations"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-address-set", "/principals/__uids__/AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA/", "guid", "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-address-set", "http://example.com:8008/principals/__uids__/AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA/", "guid", "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-address-set", "urn:uuid:AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", "guid", "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-address-set", "/principals/users/example/", "recordName", "example"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-address-set", "https://example.com:8443/principals/users/example/", "recordName", "example"),
-            ("urn:ietf:params:xml:ns:caldav", "calendar-user-address-set", "mailto:example at example.com", "emailAddresses", "example at example.com"),
-            ("http://calendarserver.org/ns/", "first-name", "morgen", "firstName", "morgen"),
-            ("http://calendarserver.org/ns/", "last-name", "sagen", "lastName", "sagen"),
-            ("http://calendarserver.org/ns/", "email-address-set", "example at example.com", "emailAddresses", "example at example.com"),
+            (
+                "DAV:", "displayname",
+                "morgen", "fullName", "morgen"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-type",
+                "INDIVIDUAL", "recordType", "users"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-type",
+                "GROUP", "recordType", "groups"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-type",
+                "RESOURCE", "recordType", "resources"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-type",
+                "ROOM", "recordType", "locations"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-address-set",
+                "/principals/__uids__/AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA/",
+                "guid", "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-address-set",
+                "http://example.com:8008/principals/__uids__/"
+                "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA/",
+                "guid", "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-address-set",
+                "urn:uuid:AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
+                "guid", "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-address-set",
+                "/principals/users/example/", "recordName", "example"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-address-set",
+                "https://example.com:8443/principals/users/example/",
+                "recordName", "example"
+            ),
+            (
+                "urn:ietf:params:xml:ns:caldav", "calendar-user-address-set",
+                "mailto:example at example.com",
+                "emailAddresses", "example at example.com"
+            ),
+            (
+                "http://calendarserver.org/ns/", "first-name",
+                "morgen", "firstName", "morgen"
+            ),
+            (
+                "http://calendarserver.org/ns/", "last-name",
+                "sagen", "lastName", "sagen"
+            ),
+            (
+                "http://calendarserver.org/ns/", "email-address-set",
+                "example at example.com", "emailAddresses", "example at example.com"
+            ),
         )
 
         for ns, property, match, field, converted in expected:
@@ -694,11 +964,10 @@
     def _allRecords(self):
         """
         @return: an iterable of tuples
-            C{(provisioningResource, recordType, recordResource, record)}, where
-            C{provisioningResource} is the root provisioning resource,
-            C{recordType} is the record type,
-            C{recordResource} is the principal resource and
-            C{record} is the directory service record
+            C{(provisioningResource, recordType, recordResource, record)},
+            where C{provisioningResource} is the root provisioning resource,
+            C{recordType} is the record type, C{recordResource} is the
+            principal resource and C{record} is the directory service record
             for each record in each directory in C{directoryServices}.
         """
         directory = self.directory
@@ -707,7 +976,9 @@
         ]
         for recordType in directory.recordTypes():
             for record in directory.listRecords(recordType):
-                recordResource = provisioningResource.principalForRecord(record)
+                recordResource = (
+                    provisioningResource.principalForRecord(record)
+                )
                 yield provisioningResource, recordType, recordResource, record
 
 
@@ -715,19 +986,28 @@
         request = SimpleRequest(self.site, "GET", "/")
 
         def gotResource(resource):
-            d = resource.checkPrivileges(request, (privilege,), principal=davxml.Principal(principal))
+            d = resource.checkPrivileges(
+                request, (privilege,), principal=davxml.Principal(principal)
+            )
             if allowed:
                 def onError(f):
                     f.trap(AccessDeniedError)
                     #print(resource.readDeadProperty(davxml.ACL))
-                    self.fail("%s should have %s privilege on %r" % (principal.sname(), privilege.sname(), resource))
+                    self.fail(
+                        "%s should have %s privilege on %r"
+                        % (principal.sname(), privilege.sname(), resource)
+                    )
                 d.addErrback(onError)
             else:
                 def expectAccessDenied(f):
                     f.trap(AccessDeniedError)
+
                 def onSuccess(_):
                     #print(resource.readDeadProperty(davxml.ACL))
-                    self.fail("%s should not have %s privilege on %r" % (principal.sname(), privilege.sname(), resource))
+                    self.fail(
+                        "%s should not have %s privilege on %r"
+                        % (principal.sname(), privilege.sname(), resource)
+                    )
                 d.addCallbacks(onSuccess, expectAccessDenied)
             return d
 
@@ -739,12 +1019,24 @@
 
 def _authReadOnlyPrivileges(self, resource, url):
     items = []
-    for _ignore_provisioningResource, _ignore_recordType, recordResource, record in self._allRecords():
+    for (
+        provisioningResource, recordType, recordResource, record
+    ) in self._allRecords():
         if record.enabled:
-            items.append((davxml.HRef().fromString(recordResource.principalURL()), davxml.Read()  , True))
-            items.append((davxml.HRef().fromString(recordResource.principalURL()), davxml.Write() , False))
-    items.append((davxml.Unauthenticated() , davxml.Read()  , False))
-    items.append((davxml.Unauthenticated() , davxml.Write() , False))
+            items.append((
+                davxml.HRef().fromString(recordResource.principalURL()),
+                davxml.Read(), True
+            ))
+            items.append((
+                davxml.HRef().fromString(recordResource.principalURL()),
+                davxml.Write(), False
+            ))
+    items.append((
+        davxml.Unauthenticated(), davxml.Read(), False
+    ))
+    items.append((
+        davxml.Unauthenticated(), davxml.Write(), False
+    ))
 
     for principal, privilege, allowed in items:
         yield resource, url, principal, privilege, allowed
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140319/0800186d/attachment-0001.html>


More information about the calendarserver-changes mailing list