[CalendarServer-changes] [11944] CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/ directory

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 12 11:20:18 PDT 2014


Revision: 11944
          http://trac.calendarserver.org//changeset/11944
Author:   gaya at apple.com
Date:     2013-11-13 19:37:20 -0800 (Wed, 13 Nov 2013)
Log Message:
-----------
add twistedcaldav.directory.test.test_directory.DirectoryRecordTests.test_attendee and fix DirectoryRecord.attendee()

Modified Paths:
--------------
    CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/directory/directory.py
    CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/directory/test/test_directory.py

Modified: CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/directory/directory.py	2013-11-13 22:32:32 UTC (rev 11943)
+++ CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/directory/directory.py	2013-11-14 03:37:20 UTC (rev 11944)
@@ -1531,17 +1531,17 @@
         if "PARTSTAT" not in params:
             params["PARTSTAT"] = "NEEDS-ACTION"
         if "CN"not in params:
-            if self.fullName():
-                params["CN"] = self.fullName()
+            if self.fullName:
+                params["CN"] = self.fullName
         if "EMAIL" not in params:
-            if self.emailAddresses():
-                params["EMAIL"] = self.emailAddresses()[0]
+            if self.emailAddresses:
+                params["EMAIL"] = list(self.emailAddresses)[0]
         if "CUTYPE" not in params:
             cuType = self.getCUType()
             if cuType is not "INDIVIDUAL":
                 params["CUTYPE"] = cuType
 
-        return Property("ATTENDEE", "urn:uuid:" + self.uid(), params=params)
+        return Property("ATTENDEE", "urn:uuid:" + self.uid, params=params)
 
 
 

Modified: CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/directory/test/test_directory.py
===================================================================
--- CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/directory/test/test_directory.py	2013-11-13 22:32:32 UTC (rev 11943)
+++ CalendarServer/branches/users/sagen/groupcacher/twistedcaldav/directory/test/test_directory.py	2013-11-14 03:37:20 UTC (rev 11944)
@@ -15,6 +15,7 @@
 ##
 
 
+
 from twext.who.groups import schedulePolledGroupCachingUpdate
 from twisted.internet.defer import inlineCallbacks
 from twisted.python.filepath import FilePath
@@ -29,9 +30,7 @@
 from twistedcaldav.test.util import TestCase
 from twistedcaldav.test.util import xmlFile, augmentsFile, proxiesFile, dirTest
 from txdav.common.datastore.test.util import buildStore
-
 import cPickle as pickle
-import uuid
 
 def StubCheckSACL(cls, username, service):
     services = {
@@ -1094,24 +1093,48 @@
 
 
 class DirectoryRecordTests(TestCase):
-    """
-    Test L{DirectoryRecord} apis.
-    """
 
+    @inlineCallbacks
     def setUp(self):
-        self.service = DirectoryService()
-        self.service.setRealm("test")
-        self.service.baseGUID = "0E8E6EC2-8E52-4FF3-8F62-6F398B08A498"
+        super(DirectoryRecordTests, self).setUp()
 
+        self.directoryFixture.addDirectoryService(XMLDirectoryService(
+            {
+                'xmlFile' : xmlFile,
+                'augmentService' :
+                    augment.AugmentXMLDB(xmlFiles=(augmentsFile.path,)),
+            }
+        ))
+        calendaruserproxy.ProxyDBService = calendaruserproxy.ProxySqliteDB("proxies.sqlite")
 
+        # Set up a principals hierarchy for each service we're testing with
+        self.principalRootResources = {}
+        name = self.directoryService.__class__.__name__
+        url = "/" + name + "/"
+
+        provisioningResource = DirectoryPrincipalProvisioningResource(url, self.directoryService)
+
+        self.site.resource.putChild(name, provisioningResource)
+
+        self.principalRootResources[self.directoryService.__class__.__name__] = provisioningResource
+
+        yield XMLCalendarUserProxyLoader(proxiesFile.path).updateProxyDB()
+
+
+    def tearDown(self):
+        """ Empty the proxy db between tests """
+        return calendaruserproxy.ProxyDBService.clean() #@UndefinedVariable
+
+
     def test_cacheToken(self):
         """
         Test that DirectoryRecord.cacheToken is different for different records, and its value changes
         as attributes on the record change.
         """
 
-        record1 = DirectoryRecord(self.service, "users", str(uuid.uuid4()), shortNames=("testing1",))
-        record2 = DirectoryRecord(self.service, "users", str(uuid.uuid4()), shortNames=("testing2",))
+        records = list((yield self.directoryService.listRecords("users")))
+        record1 = records[0]
+        record2 = records[1]
         self.assertNotEquals(record1.cacheToken(), record2.cacheToken())
 
         cache1 = record1.cacheToken()
@@ -1121,3 +1144,61 @@
         cache1 = record1.cacheToken()
         record1.enabledForCalendaring = True
         self.assertNotEquals(cache1, record1.cacheToken())
+
+
+    @inlineCallbacks
+    def test_attendee(self):
+        """
+        check that attendee property is correct
+        """
+        for recordType in self.directoryService.recordTypes():
+            records = yield self.directoryService.listRecords(recordType)
+            for record in records:
+                record.attendee()
+
+        record = yield self.directoryService.recordWithShortName("users", "user01")
+        attendee = record.attendee(params={"PARTSTAT": "ACCEPTED"})
+        self.assertEquals(attendee.name(), "ATTENDEE")
+        self.assertEquals(attendee.value(), "urn:uuid:user01")
+        self.assertEquals(attendee.parameterNames(), set(['PARTSTAT', 'EMAIL', 'CN']))
+        self.assertEquals(attendee.parameterValue("CN"), "c4ca4238a0b923820dcc509a6f75849bc4c User 01")
+        self.assertEquals(attendee.parameterValue("EMAIL"), "c4ca4238a0 at example.com")
+        self.assertEquals(attendee.parameterValue("PARTSTAT"), "ACCEPTED")
+
+        record = yield self.directoryService.recordWithShortName("users", "user02")
+        attendee = record.attendee(params={"MEMBER": "urn:uuid:group02"})
+        self.assertEquals(attendee.name(), "ATTENDEE")
+        self.assertEquals(attendee.value(), "urn:uuid:user02")
+        self.assertEquals(attendee.parameterNames(), set(['MEMBER', 'PARTSTAT', 'EMAIL', 'CN']))
+        self.assertEquals(attendee.parameterValue("CN"), "c81e728d9d4c2f636f067f89cc14862cc81 User 02")
+        self.assertEquals(attendee.parameterValue("EMAIL"), "c81e728d9d at example.com")
+        self.assertEquals(attendee.parameterValue("PARTSTAT"), "NEEDS-ACTION")
+        self.assertEquals(attendee.parameterValue("MEMBER"), "urn:uuid:group02")
+
+        record = yield self.directoryService.recordWithShortName("groups", "managers")
+        attendee = record.attendee()
+        self.assertEquals(attendee.name(), "ATTENDEE")
+        self.assertEquals(attendee.value(), "urn:uuid:9FF60DAD-0BDE-4508-8C77-15F0CA5C8DD1")
+        self.assertEquals(attendee.parameterNames(), set(['CUTYPE', 'PARTSTAT', 'CN']))
+        self.assertEquals(attendee.parameterValue("CN"), "Managers")
+        self.assertEquals(attendee.parameterValue("PARTSTAT"), "NEEDS-ACTION")
+        self.assertEquals(attendee.parameterValue("CUTYPE"), "GROUP")
+
+        record = yield self.directoryService.recordWithShortName("locations", "mercury")
+        attendee = record.attendee()
+        self.assertEquals(attendee.name(), "ATTENDEE")
+        self.assertEquals(attendee.value(), "urn:uuid:mercury")
+        self.assertEquals(attendee.parameterNames(), set(['CUTYPE', 'PARTSTAT', 'EMAIL', 'CN']))
+        self.assertEquals(attendee.parameterValue("CN"), "Mercury Seven")
+        self.assertEquals(attendee.parameterValue("EMAIL"), "mercury at example.com")
+        self.assertEquals(attendee.parameterValue("PARTSTAT"), "NEEDS-ACTION")
+        self.assertEquals(attendee.parameterValue("CUTYPE"), "ROOM")
+
+        record = yield self.directoryService.recordWithShortName("resources", "ftlcpu")
+        attendee = record.attendee()
+        self.assertEquals(attendee.name(), "ATTENDEE")
+        self.assertEquals(attendee.value(), "urn:uuid:ftlcpu")
+        self.assertEquals(attendee.parameterNames(), set(['CUTYPE', 'PARTSTAT', 'EMAIL', 'CN']))
+        self.assertEquals(attendee.parameterValue("CN"), "Faster-Than-Light Microprocessor")
+        self.assertEquals(attendee.parameterValue("PARTSTAT"), "NEEDS-ACTION")
+        self.assertEquals(attendee.parameterValue("CUTYPE"), "RESOURCE")
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/e6ab2b19/attachment.html>


More information about the calendarserver-changes mailing list