[CalendarServer-changes] [7430] CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Wed May 11 13:44:03 PDT 2011
Revision: 7430
http://trac.macosforge.org/projects/calendarserver/changeset/7430
Author: cdaboo at apple.com
Date: 2011-05-11 13:44:02 -0700 (Wed, 11 May 2011)
Log Message:
-----------
Proper behavior for record.enabled.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/idirectory.py
CalendarServer/trunk/twistedcaldav/directory/principal.py
CalendarServer/trunk/twistedcaldav/directory/test/accounts.xml
CalendarServer/trunk/twistedcaldav/directory/test/augments.xml
CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py
Modified: CalendarServer/trunk/twistedcaldav/directory/idirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/idirectory.py 2011-05-10 19:20:24 UTC (rev 7429)
+++ CalendarServer/trunk/twistedcaldav/directory/idirectory.py 2011-05-11 20:44:02 UTC (rev 7430)
@@ -1,5 +1,5 @@
##
-# Copyright (c) 2006-2010 Apple Inc. All rights reserved.
+# Copyright (c) 2006-2011 Apple Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -102,7 +102,7 @@
recordType = Attribute("The type of this record.")
guid = Attribute("The GUID of this record.")
uid = Attribute("The UID of this record.")
- enabled = Attribute("Determines whether this record should be provisioned as a principal.")
+ enabled = Attribute("Determines whether this record should allow a principal to be created.")
serverID = Attribute("Identifies the server that actually hosts data for the record.")
partitionID = Attribute("Identifies the partition node that actually hosts data for the record.")
shortNames = Attribute("The names for this record.")
@@ -111,8 +111,8 @@
firstName = Attribute("The first name of this record.")
lastName = Attribute("The last name of this record.")
emailAddress = Attribute("The email address of this record.")
- enabledForCalendaring = Attribute("Determines whether this record should be provisioned with a calendar home.")
- enabledForAddressBooks = Attribute("Determines whether this record should be provisioned with an address book home.")
+ enabledForCalendaring = Attribute("Determines whether this record creates a principal with a calendar home.")
+ enabledForAddressBooks = Attribute("Determines whether this record creates a principal with an address book home.")
calendarUserAddresses = Attribute(
"""
An iterable of C{str}s representing calendar user addresses for this
Modified: CalendarServer/trunk/twistedcaldav/directory/principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/principal.py 2011-05-10 19:20:24 UTC (rev 7429)
+++ CalendarServer/trunk/twistedcaldav/directory/principal.py 2011-05-11 20:44:02 UTC (rev 7430)
@@ -1,6 +1,6 @@
# -*- test-case-name: twistedcaldav.directory.test.test_principal -*-
##
-# Copyright (c) 2006-2010 Apple Inc. All rights reserved.
+# Copyright (c) 2006-2011 Apple Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -443,7 +443,7 @@
return self.parent.principalForCalendarUserAddress(address)
def principalForRecord(self, record):
- if record is None:
+ if record is None or not record.enabled:
return None
if record.enabledForCalendaring or record.enabledForAddressBooks:
@@ -474,7 +474,7 @@
subType = None
record = self.directory.recordWithUID(primaryUID)
- primaryPrincipal = self.principalForRecord(record) if record and record.enabled else None
+ primaryPrincipal = self.principalForRecord(record)
if primaryPrincipal is None:
log.err("No principal found for UID: %s" % (name,))
return None
Modified: CalendarServer/trunk/twistedcaldav/directory/test/accounts.xml
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/accounts.xml 2011-05-10 19:20:24 UTC (rev 7429)
+++ CalendarServer/trunk/twistedcaldav/directory/test/accounts.xml 2011-05-11 20:44:02 UTC (rev 7430)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
-Copyright (c) 2006-2010 Apple Inc. All rights reserved.
+Copyright (c) 2006-2011 Apple Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -250,4 +250,11 @@
<name>Non-calendar proxy</name>
<email-address>non_calendar_proxy at example.com</email-address>
</resource>
+ <resource>
+ <uid>disabled</uid>
+ <guid>disabled</guid>
+ <password>disabled</password>
+ <name>Disabled Record</name>
+ <email-address>disabled at example.com</email-address>
+ </resource>
</accounts>
Modified: CalendarServer/trunk/twistedcaldav/directory/test/augments.xml
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/augments.xml 2011-05-10 19:20:24 UTC (rev 7429)
+++ CalendarServer/trunk/twistedcaldav/directory/test/augments.xml 2011-05-11 20:44:02 UTC (rev 7430)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
-Copyright (c) 2009-2010 Apple Inc. All rights reserved.
+Copyright (c) 2009-2011 Apple Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -144,6 +144,10 @@
<enable-addressbook>true</enable-addressbook>
</record>
<record>
+ <uid>disabled</uid>
+ <enable>false</enable>
+ </record>
+ <record>
<uid>7423F94A-6B76-4A3A-815B-D52CFD77935D</uid>
<enable>true</enable>
<enable-calendar>true</enable-calendar>
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py 2011-05-10 19:20:24 UTC (rev 7429)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_principal.py 2011-05-11 20:44:02 UTC (rev 7430)
@@ -1,5 +1,5 @@
##
-# Copyright (c) 2005-2010 Apple Inc. All rights reserved.
+# Copyright (c) 2005-2011 Apple Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -120,7 +120,8 @@
# Handle records with mulitple shortNames
expected = []
for r in directory.listRecords(recordType):
- expected.extend(r.shortNames)
+ if r.uid != "disabled":
+ expected.extend(r.shortNames)
self.assertEquals(shortNames, set(expected))
for shortName in shortNames:
@@ -140,7 +141,8 @@
Test of a test routine...
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
- self.assertEquals(recordResource.record, record)
+ if record.enabled:
+ self.assertEquals(recordResource.record, record)
##
# DirectoryPrincipalProvisioningResource
@@ -152,8 +154,11 @@
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
principal = provisioningResource.principalForShortName(recordType, record.shortNames[0])
- self.failIf(principal is None)
- self.assertEquals(record, principal.record)
+ if record.enabled:
+ self.failIf(principal is None)
+ self.assertEquals(record, principal.record)
+ else:
+ self.failIf(principal is not None)
def test_principalForUser(self):
"""
@@ -164,8 +169,11 @@
for user in directory.listRecords(DirectoryService.recordType_users):
userResource = provisioningResource.principalForUser(user.shortNames[0])
- self.failIf(userResource is None)
- self.assertEquals(user, userResource.record)
+ if user.enabled:
+ self.failIf(userResource is None)
+ self.assertEquals(user, userResource.record)
+ else:
+ self.failIf(userResource is not None)
def test_principalForAuthID(self):
"""
@@ -177,8 +185,11 @@
for user in directory.listRecords(DirectoryService.recordType_users):
creds = UsernamePassword(user.shortNames[0], "bogus")
userResource = provisioningResource.principalForAuthID(creds)
- self.failIf(userResource is None)
- self.assertEquals(user, userResource.record)
+ if user.enabled:
+ self.failIf(userResource is None)
+ self.assertEquals(user, userResource.record)
+ else:
+ self.failIf(userResource is not None)
def test_principalForUID(self):
"""
@@ -186,8 +197,11 @@
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
principal = provisioningResource.principalForUID(record.uid)
- self.failIf(principal is None)
- self.assertEquals(record, principal.record)
+ if record.enabled:
+ self.failIf(principal is None)
+ self.assertEquals(record, principal.record)
+ else:
+ self.failIf(principal is not None)
def test_principalForRecord(self):
"""
@@ -195,8 +209,11 @@
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
principal = provisioningResource.principalForRecord(record)
- self.failIf(principal is None, msg=str(record))
- self.assertEquals(record, principal.record)
+ if record.enabled:
+ self.failIf(principal is None)
+ self.assertEquals(record, principal.record)
+ else:
+ self.failIf(principal is not None)
def test_principalForCalendarUserAddress(self):
"""
@@ -205,13 +222,17 @@
for (
provisioningResource, recordType, recordResource, record
) in self._allRecords():
- principalURL = recordResource.principalURL()
- if principalURL.endswith("/"):
- alternateURL = principalURL[:-1]
- else:
- alternateURL = principalURL + "/"
+
+ test_items = tuple(record.calendarUserAddresses)
+ if recordResource:
+ principalURL = recordResource.principalURL()
+ if principalURL.endswith("/"):
+ alternateURL = principalURL[:-1]
+ else:
+ alternateURL = principalURL + "/"
+ test_items += (principalURL, alternateURL)
- for address in tuple(record.calendarUserAddresses) + (principalURL, alternateURL):
+ for address in test_items:
principal = provisioningResource.principalForCalendarUserAddress(address)
if record.enabledForCalendaring:
self.failIf(principal is None)
@@ -254,7 +275,11 @@
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
principal = provisioningResource.principalForRecord(record)
- self.failIf(principal is None)
+ if record.enabled:
+ self.failIf(principal is None)
+ else:
+ self.failIf(principal is not None)
+ continue
if record.enabledForCalendaring:
self.assertTrue(isinstance(principal, DirectoryCalendarPrincipalResource))
else:
@@ -348,15 +373,17 @@
that is an instance of DisabledCacheNotifier
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
- self.failUnless(isinstance(recordResource.cacheNotifier,
- DisabledCacheNotifier))
+ if record.enabled:
+ self.failUnless(isinstance(recordResource.cacheNotifier,
+ DisabledCacheNotifier))
def test_displayName(self):
"""
DirectoryPrincipalResource.displayName()
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
- self.failUnless(recordResource.displayName())
+ if record.enabled:
+ self.failUnless(recordResource.displayName())
@inlineCallbacks
def test_groupMembers(self):
@@ -364,8 +391,9 @@
DirectoryPrincipalResource.groupMembers()
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
- members = yield recordResource.groupMembers()
- self.failUnless(set(record.members()).issubset(set(r.record for r in members)))
+ if record.enabled:
+ members = yield recordResource.groupMembers()
+ self.failUnless(set(record.members()).issubset(set(r.record for r in members)))
@inlineCallbacks
def test_groupMemberships(self):
@@ -373,15 +401,17 @@
DirectoryPrincipalResource.groupMemberships()
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
- memberships = yield recordResource.groupMemberships()
- self.failUnless(set(record.groups()).issubset(set(r.record for r in memberships if hasattr(r, "record"))))
+ if record.enabled:
+ memberships = yield recordResource.groupMemberships()
+ self.failUnless(set(record.groups()).issubset(set(r.record for r in memberships if hasattr(r, "record"))))
def test_principalUID(self):
"""
DirectoryPrincipalResource.principalUID()
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
- self.assertEquals(record.guid, recordResource.principalUID())
+ if record.enabled:
+ self.assertEquals(record.guid, recordResource.principalUID())
def test_calendarUserAddresses(self):
"""
@@ -523,8 +553,9 @@
Default access controls for principals.
"""
for provisioningResource, recordType, recordResource, record in self._allRecords():
- for args in _authReadOnlyPrivileges(self, recordResource, recordResource.principalURL()):
- yield self._checkPrivileges(*args)
+ if record.enabled:
+ for args in _authReadOnlyPrivileges(self, recordResource, recordResource.principalURL()):
+ yield self._checkPrivileges(*args)
@inlineCallbacks
def test_defaultAccessControlList_provisioners(self):
@@ -627,8 +658,9 @@
def _authReadOnlyPrivileges(self, resource, url):
items = []
for provisioningResource, recordType, recordResource, record in self._allRecords():
- items.append(( davxml.HRef().fromString(recordResource.principalURL()), davxml.Read() , True ))
- items.append(( davxml.HRef().fromString(recordResource.principalURL()), davxml.Write() , False ))
+ 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 ))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110511/ab3c5ffc/attachment-0001.html>
More information about the calendarserver-changes
mailing list