[CalendarServer-changes] [494] CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/ directory/test

source_changes at macosforge.org source_changes at macosforge.org
Thu Nov 16 17:06:52 PST 2006


Revision: 494
          http://trac.macosforge.org/projects/calendarserver/changeset/494
Author:   wsanchez at apple.com
Date:     2006-11-16 17:06:52 -0800 (Thu, 16 Nov 2006)

Log Message:
-----------
Use a common test suite for both XML and Apache directory implementations.

Modified Paths:
--------------
    CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_apache.py
    CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_xmlfile.py

Added Paths:
-----------
    CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/util.py

Modified: CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_apache.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_apache.py	2006-11-17 01:03:55 UTC (rev 493)
+++ CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_apache.py	2006-11-17 01:06:52 UTC (rev 494)
@@ -18,25 +18,9 @@
 
 import os
 
-import twisted.trial.unittest
-from twisted.cred.credentials import UsernamePassword
-
+import twistedcaldav.directory.test.util
 from twistedcaldav.directory.apache import BasicDirectoryService
 
-users = {
-    "wsanchez": "foo",
-    "cdaboo"  : "bar",
-    "dreid"   : "baz",
-    "lecroy"  : "quux",
-}
-
-groups = {
-    "managers"   : ("lecroy",),
-    "grunts"     : ("wsanchez", "cdaboo", "dreid"),
-    "right_coast": ("cdaboo",),
-    "left_coast" : ("wsanchez", "dreid", "lecroy"),
-}
-
 digestRealm = "Test"
 
 basicUserFile  = os.path.join(os.path.dirname(__file__), "basic")
@@ -45,81 +29,31 @@
 
 # FIXME: Add tests for GUID hooey, once we figure out what that means here
 
-class Basic (twisted.trial.unittest.TestCase):
+class Basic (twistedcaldav.directory.test.util.BasicTestCase):
     """
     Test Apache-Compatible UserFile/GroupFile directory implementation.
     """
-    def test_recordTypes_user(self):
-        """
-        BasicDirectoryService.recordTypes(userFile)
-        """
-        service = BasicDirectoryService(basicUserFile)
-        self.assertEquals(set(service.recordTypes()), set(("user",)))
+    recordTypes = set(("user", "group"))
 
-    def test_recordTypes_group(self):
-        """
-        BasicDirectoryService.recordTypes(userFile, groupFile)
-        """
-        service = BasicDirectoryService(basicUserFile, groupFile)
-        self.assertEquals(set(service.recordTypes()), set(("user", "group")))
+    users = {
+        "wsanchez": "foo",
+        "cdaboo"  : "bar",
+        "dreid"   : "baz",
+        "lecroy"  : "quux",
+    }
 
-    def test_listRecords_user(self):
-        """
-        BasicDirectoryService.listRecords("user")
-        """
-        service = BasicDirectoryService(basicUserFile)
-        self.assertEquals(set(service.listRecords("user")), set(users.keys()))
+    groups = {
+        "managers"   : ("lecroy",),
+        "grunts"     : ("wsanchez", "cdaboo", "dreid"),
+        "right_coast": ("cdaboo",),
+        "left_coast" : ("wsanchez", "dreid", "lecroy"),
+    }
 
-    def test_listRecords_group(self):
-        """
-        BasicDirectoryService.listRecords("group")
-        """
-        service = BasicDirectoryService(basicUserFile, groupFile)
-        self.assertEquals(set(service.listRecords("group")), set(groups.keys()))
+    def service(self):
+        return BasicDirectoryService(basicUserFile, groupFile)
 
-    def test_recordWithShortName_user(self):
+    def test_recordTypes_user(self):
         """
-        BasicDirectoryService.recordWithShortName("user")
+        IDirectoryService.recordTypes(userFile)
         """
-        service = BasicDirectoryService(basicUserFile)
-        for user in users:
-            record = service.recordWithShortName("user", user)
-            self.assertEquals(record.shortName, user)
-        self.assertEquals(service.recordWithShortName("user", "IDunnoWhoThisIsIReallyDont"), None)
-
-    def test_recordWithShortName_group(self):
-        """
-        BasicDirectoryService.recordWithShortName("group")
-        """
-        service = BasicDirectoryService(basicUserFile, groupFile)
-        for group in groups:
-            groupRecord = service.recordWithShortName("group", group)
-            self.assertEquals(groupRecord.shortName, group)
-        self.assertEquals(service.recordWithShortName("group", "IDunnoWhoThisIsIReallyDont"), None)
-
-    def test_groupMembers(self):
-        """
-        BasicDirectoryRecord.members()
-        """
-        service = BasicDirectoryService(basicUserFile, groupFile)
-        for group in groups:
-            groupRecord = service.recordWithShortName("group", group)
-            self.assertEquals(set(m.shortName for m in groupRecord.members()), set(groups[group]))
-
-    def test_groupMemberships(self):
-        """
-        BasicDirectoryRecord.groups()
-        """
-        service = BasicDirectoryService(basicUserFile, groupFile)
-        for user in users:
-            userRecord = service.recordWithShortName("user", user)
-            self.assertEquals(set(g.shortName for g in userRecord.groups()), set(g for g in groups if user in groups[g]))
-
-    def test_verifyCredentials(self):
-        """
-        BasicDirectoryRecord.verifyCredentials()
-        """
-        service = BasicDirectoryService(basicUserFile)
-        for user in users:
-            userRecord = service.recordWithShortName("user", user)
-            self.failUnless(userRecord.verifyCredentials(UsernamePassword(user, users[user])))
+        self.assertEquals(set(BasicDirectoryService(basicUserFile).recordTypes()), set(("user",)))

Modified: CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_xmlfile.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_xmlfile.py	2006-11-17 01:03:55 UTC (rev 493)
+++ CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/test_xmlfile.py	2006-11-17 01:06:52 UTC (rev 494)
@@ -21,6 +21,7 @@
 import twisted.trial.unittest
 from twisted.cred.credentials import UsernamePassword
 
+import twistedcaldav.directory.test.util
 from twistedcaldav.directory.xmlfile import XMLDirectoryService
 
 users = {
@@ -51,88 +52,35 @@
 
 # FIXME: Add tests for GUID hooey, once we figure out what that means here
 
-class Basic (twisted.trial.unittest.TestCase):
+class Basic (twistedcaldav.directory.test.util.BasicTestCase):
     """
     Test XML file based directory implementation.
     """
-    def test_recordTypes(self):
-        """
-        XMLDirectoryService.recordTypes(xmlFile)
-        """
-        service = XMLDirectoryService(xmlFile)
-        self.assertEquals(set(service.recordTypes()), set(("user", "group", "resource")))
+    recordTypes = set(("user", "group", "resource"))
 
-    def test_listRecords_user(self):
-        """
-        XMLDirectoryService.listRecords("user")
-        """
-        service = XMLDirectoryService(xmlFile)
-        self.assertEquals(set(service.listRecords("user")), set(users.keys()))
+    users = {
+        "admin"   : "nimda",
+        "proxy"   : "yxorp",
+        "wsanchez": "zehcnasw",
+        "cdaboo"  : "oobadc",
+        "lecroy"  : "yorcel",
+        "dreid"   : "dierd",
+        "user01"  : "01user",
+        "user02"  : "02user",
+    }
 
-    def test_listRecords_group(self):
-        """
-        XMLDirectoryService.listRecords("group")
-        """
-        service = XMLDirectoryService(xmlFile)
-        self.assertEquals(set(service.listRecords("group")), set(groups.keys()))
+    groups = {
+        "managers"   : ("lecroy",),
+        "grunts"     : ("wsanchez", "cdaboo", "dreid"),
+        "right_coast": ("cdaboo",),
+        "left_coast" : ("wsanchez", "dreid", "lecroy"),
+    }
 
-    def test_listRecords_resources(self):
-        """
-        XMLDirectoryService.listRecords("resource")
-        """
-        service = XMLDirectoryService(xmlFile)
-        self.assertEquals(set(service.listRecords("resource")), resources)
+    resources = set((
+        "mercury",
+        "gemini",
+        "apollo",
+    ))
 
-    def test_recordWithShortName_user(self):
-        """
-        XMLDirectoryService.recordWithShortName("user")
-        """
-        service = XMLDirectoryService(xmlFile)
-        for user in users:
-            record = service.recordWithShortName("user", user)
-            self.assertEquals(record.shortName, user)
-
-    def test_recordWithShortName_group(self):
-        """
-        XMLDirectoryService.recordWithShortName("group")
-        """
-        service = XMLDirectoryService(xmlFile)
-        for group in groups:
-            groupRecord = service.recordWithShortName("group", group)
-            self.assertEquals(groupRecord.shortName, group)
-
-    def test_recordWithShortName_resource(self):
-        """
-        XMLDirectoryService.recordWithShortName("resource")
-        """
-        service = XMLDirectoryService(xmlFile)
-        for resource in resources:
-            resourceRecord = service.recordWithShortName("resource", resource)
-            self.assertEquals(resourceRecord.shortName, resource)
-
-    def test_groupMembers(self):
-        """
-        FileDirectoryRecord.members()
-        """
-        service = XMLDirectoryService(xmlFile)
-        for group in groups:
-            groupRecord = service.recordWithShortName("group", group)
-            self.assertEquals(set(m.shortName for m in groupRecord.members()), set(groups[group]))
-
-    def test_groupMemberships(self):
-        """
-        FileDirectoryRecord.groups()
-        """
-        service = XMLDirectoryService(xmlFile)
-        for user in users:
-            userRecord = service.recordWithShortName("user", user)
-            self.assertEquals(set(g.shortName for g in userRecord.groups()), set(g for g in groups if user in groups[g]))
-
-    def test_verifyCredentials(self):
-        """
-        FileDirectoryRecord.verifyCredentials()
-        """
-        service = XMLDirectoryService(xmlFile)
-        for user in users:
-            userRecord = service.recordWithShortName("user", user)
-            self.failUnless(userRecord.verifyCredentials(UsernamePassword(user, users[user])))
+    def service(self):
+        return XMLDirectoryService(xmlFile)

Added: CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/util.py
===================================================================
--- CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/util.py	                        (rev 0)
+++ CalendarServer/branches/users/wsanchez/provisioning/twistedcaldav/directory/test/util.py	2006-11-17 01:06:52 UTC (rev 494)
@@ -0,0 +1,124 @@
+##
+# Copyright (c) 2005-2006 Apple Computer, 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.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# DRI: Wilfredo Sanchez, wsanchez at apple.com
+##
+
+import twisted.trial.unittest
+from twisted.cred.credentials import UsernamePassword
+
+# FIXME: Add tests for GUID hooey, once we figure out what that means here
+
+class DirectoryTestCase (twisted.trial.unittest.TestCase):
+    """
+    Tests a directory implementation.
+    """
+    # Subclass should init this to a set of recordtypes.
+    recordTypes = set()
+
+    # Subclass should init this to a dict of username keys and password values.
+    users = {}
+
+    # Subclass should init this to a dict of groupname keys and
+    # sequence-of-members values.
+    groups = {}
+
+    # Subclass should init this to a set of resourcenames.
+    resources = set()
+
+    # Subclass should init this to an IDirectoryService implementation class.
+    def service(self):
+        """
+        Returns an IDirectoryService.
+        """
+        raise NotImplementedError("Subclass needs to implement service()")
+
+    def test_recordTypes(self):
+        """
+        IDirectoryService.recordTypes()
+        """
+        self.assertEquals(set(self.service().recordTypes()), self.recordTypes)
+
+    def test_listRecords_user(self):
+        """
+        IDirectoryService.listRecords("user")
+        """
+        self.assertEquals(set(self.service().listRecords("user")), set(self.users.keys()))
+
+    def test_listRecords_group(self):
+        """
+        IDirectoryService.listRecords("group")
+        """
+        self.assertEquals(set(self.service().listRecords("group")), set(self.groups.keys()))
+
+    def test_recordWithShortName_user(self):
+        """
+        IDirectoryService.recordWithShortName("user")
+        """
+        service = self.service()
+        for user in self.users:
+            record = service.recordWithShortName("user", user)
+            self.assertEquals(record.shortName, user)
+        self.assertEquals(service.recordWithShortName("user", "IDunnoWhoThisIsIReallyDont"), None)
+
+    def test_recordWithShortName_group(self):
+        """
+        IDirectoryService.recordWithShortName("group")
+        """
+        service = self.service()
+        for group in self.groups:
+            groupRecord = service.recordWithShortName("group", group)
+            self.assertEquals(groupRecord.shortName, group)
+        self.assertEquals(service.recordWithShortName("group", "IDunnoWhoThisIsIReallyDont"), None)
+
+    def test_recordWithShortName_resource(self):
+        """
+        XMLDirectoryService.recordWithShortName("resource")
+        """
+        service = self.service()
+        for resource in self.resources:
+            resourceRecord = service.recordWithShortName("resource", resource)
+            self.assertEquals(resourceRecord.shortName, resource)
+
+    def test_groupMembers(self):
+        """
+        IDirectoryRecord.members()
+        """
+        service = self.service()
+        for group in self.groups:
+            groupRecord = service.recordWithShortName("group", group)
+            self.assertEquals(set(m.shortName for m in groupRecord.members()), set(self.groups[group]))
+
+    def test_groupMemberships(self):
+        """
+        IDirectoryRecord.groups()
+        """
+        service = self.service()
+        for user in self.users:
+            userRecord = service.recordWithShortName("user", user)
+            self.assertEquals(set(g.shortName for g in userRecord.groups()), set(g for g in self.groups if user in self.groups[g]))
+
+class BasicTestCase (DirectoryTestCase):
+    """
+    Tests a directory implementation with basic auth.
+    """
+    def test_verifyCredentials(self):
+        """
+        IDirectoryRecord.verifyCredentials()
+        """
+        service = self.service()
+        for user in self.users:
+            userRecord = service.recordWithShortName("user", user)
+            self.failUnless(userRecord.verifyCredentials(UsernamePassword(user, self.users[user])))

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20061116/c5406e90/attachment.html


More information about the calendarserver-changes mailing list