[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