[CalendarServer-changes] [10805] CalendarServer/trunk/twext/who/test

source_changes at macosforge.org source_changes at macosforge.org
Mon Feb 25 11:58:17 PST 2013


Revision: 10805
          http://trac.calendarserver.org//changeset/10805
Author:   wsanchez at apple.com
Date:     2013-02-25 11:58:17 -0800 (Mon, 25 Feb 2013)
Log Message:
-----------
More aggregate tests

Modified Paths:
--------------
    CalendarServer/trunk/twext/who/test/test_aggregate.py
    CalendarServer/trunk/twext/who/test/test_xml.py

Modified: CalendarServer/trunk/twext/who/test/test_aggregate.py
===================================================================
--- CalendarServer/trunk/twext/who/test/test_aggregate.py	2013-02-25 19:58:00 UTC (rev 10804)
+++ CalendarServer/trunk/twext/who/test/test_aggregate.py	2013-02-25 19:58:17 UTC (rev 10805)
@@ -19,12 +19,14 @@
 """
 
 from twisted.python.components import proxyForInterface
+from twisted.trial import unittest
 
-from twext.who.idirectory import IDirectoryService
+from twext.who.idirectory import IDirectoryService, DirectoryConfigurationError
 from twext.who.aggregate import DirectoryService
+from twext.who.util import ConstantsContainer
 
 from twext.who.test import test_directory, test_xml
-from twext.who.test.test_xml import QueryMixIn, xmlService
+from twext.who.test.test_xml import QueryMixIn, xmlService, TestService as XMLTestService
 
 
 
@@ -49,8 +51,8 @@
         return TestService("xyzzy", services)
 
 
-    def xmlService(self, xmlData=None):
-        return xmlService(self.mktemp(), xmlData)
+    def xmlService(self, xmlData=None, serviceClass=None):
+        return xmlService(self.mktemp(), xmlData, serviceClass)
 
 
 
@@ -68,3 +70,170 @@
 
 class DirectoryServiceImmutableTest(BaseTest, test_directory.DirectoryServiceImmutableTest):
     pass
+
+
+
+class AggregatedBaseTest(BaseTest):
+    def service(self):
+        class UsersDirectoryService(XMLTestService):
+            recordType = ConstantsContainer((XMLTestService.recordType.user,))
+
+        class GroupsDirectoryService(XMLTestService):
+            recordType = ConstantsContainer((XMLTestService.recordType.group,))
+
+        usersService  = self.xmlService(testXMLConfigUsers, UsersDirectoryService)
+        groupsService = self.xmlService(testXMLConfigGroups, GroupsDirectoryService)
+
+        return BaseTest.service(self, (usersService, groupsService))
+
+
+
+class DirectoryServiceAggregatedBaseTest(AggregatedBaseTest, DirectoryServiceBaseTest):
+    pass
+
+
+
+class DirectoryServiceAggregatedQueryTest(AggregatedBaseTest, test_xml.DirectoryServiceQueryTest):
+    pass
+
+
+
+class DirectoryServiceAggregatedImmutableTest(AggregatedBaseTest, test_directory.DirectoryServiceImmutableTest):
+    pass
+
+
+
+class DirectoryServiceTests(BaseTest, unittest.TestCase):
+    def test_conflictingRecordTypes(self):
+        self.assertRaises(
+            DirectoryConfigurationError,
+            BaseTest.service, self,
+            (self.xmlService(), self.xmlService(testXMLConfigUsers)),
+        )
+
+
+
+testXMLConfigUsers = """<?xml version="1.0" encoding="utf-8"?>
+
+<directory realm="Users Realm">
+
+  <record type="user">
+    <uid>__wsanchez__</uid>
+    <short-name>wsanchez</short-name>
+    <short-name>wilfredo_sanchez</short-name>
+    <full-name>Wilfredo Sanchez</full-name>
+    <password>zehcnasw</password>
+    <email>wsanchez at bitbucket.calendarserver.org</email>
+    <email>wsanchez at devnull.twistedmatrix.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__glyph__</uid>
+    <short-name>glyph</short-name>
+    <full-name>Glyph Lefkowitz</full-name>
+    <password>hpylg</password>
+    <email>glyph at bitbucket.calendarserver.org</email>
+    <email>glyph at devnull.twistedmatrix.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__sagen__</uid>
+    <short-name>sagen</short-name>
+    <full-name>Morgen Sagen</full-name>
+    <password>negas</password>
+    <email>sagen at bitbucket.calendarserver.org</email>
+    <email>shared at example.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__cdaboo__</uid>
+    <short-name>cdaboo</short-name>
+    <full-name>Cyrus Daboo</full-name>
+    <password>suryc</password>
+    <email>cdaboo at bitbucket.calendarserver.org</email>
+  </record>
+
+  <record type="user">
+    <uid>__dre__</uid>
+    <short-name>dre</short-name>
+    <full-name>Andre LaBranche</full-name>
+    <password>erd</password>
+    <email>dre at bitbucket.calendarserver.org</email>
+    <email>shared at example.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__exarkun__</uid>
+    <short-name>exarkun</short-name>
+    <full-name>Jean-Paul Calderone</full-name>
+    <password>nucraxe</password>
+    <email>exarkun at devnull.twistedmatrix.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__dreid__</uid>
+    <short-name>dreid</short-name>
+    <full-name>David Reid</full-name>
+    <password>dierd</password>
+    <email>dreid at devnull.twistedmatrix.com</email>
+  </record>
+
+  <record> <!-- type defaults to "user" -->
+    <uid>__joe__</uid>
+    <short-name>joe</short-name>
+    <full-name>Joe Schmoe</full-name>
+    <password>eoj</password>
+    <email>joe at example.com</email>
+  </record>
+
+  <record> <!-- type defaults to "user" -->
+    <uid>__alyssa__</uid>
+    <short-name>alyssa</short-name>
+    <full-name>Alyssa P. Hacker</full-name>
+    <password>assyla</password>
+    <email>alyssa at example.com</email>
+  </record>
+
+</directory>
+"""
+
+
+testXMLConfigGroups = """<?xml version="1.0" encoding="utf-8"?>
+
+<directory realm="Groups Realm">
+
+  <record type="group">
+    <uid>__calendar-dev__</uid>
+    <short-name>calendar-dev</short-name>
+    <full-name>Calendar Server developers</full-name>
+    <email>dev at bitbucket.calendarserver.org</email>
+    <member-uid>__wsanchez__</member-uid>
+    <member-uid>__glyph__</member-uid>
+    <member-uid>__sagen__</member-uid>
+    <member-uid>__cdaboo__</member-uid>
+    <member-uid>__dre__</member-uid>
+  </record>
+
+  <record type="group">
+    <uid>__twisted__</uid>
+    <short-name>twisted</short-name>
+    <full-name>Twisted Matrix Laboratories</full-name>
+    <email>hack at devnull.twistedmatrix.com</email>
+    <member-uid>__wsanchez__</member-uid>
+    <member-uid>__glyph__</member-uid>
+    <member-uid>__exarkun__</member-uid>
+    <member-uid>__dreid__</member-uid>
+    <member-uid>__dre__</member-uid>
+  </record>
+
+  <record type="group">
+    <uid>__developers__</uid>
+    <short-name>developers</short-name>
+    <full-name>All Developers</full-name>
+    <member-uid>__calendar-dev__</member-uid>
+    <member-uid>__twisted__</member-uid>
+    <member-uid>__alyssa__</member-uid>
+  </record>
+
+</directory>
+"""

Modified: CalendarServer/trunk/twext/who/test/test_xml.py
===================================================================
--- CalendarServer/trunk/twext/who/test/test_xml.py	2013-02-25 19:58:00 UTC (rev 10804)
+++ CalendarServer/trunk/twext/who/test/test_xml.py	2013-02-25 19:58:17 UTC (rev 10805)
@@ -34,127 +34,6 @@
 
 
 
-xmlRealmName = "Test Realm"
-
-testXMLConfig = """<?xml version="1.0" encoding="utf-8"?>
-
-<directory realm="xyzzy">
-
-  <record type="user">
-    <uid>__wsanchez__</uid>
-    <short-name>wsanchez</short-name>
-    <short-name>wilfredo_sanchez</short-name>
-    <full-name>Wilfredo Sanchez</full-name>
-    <password>zehcnasw</password>
-    <email>wsanchez at bitbucket.calendarserver.org</email>
-    <email>wsanchez at devnull.twistedmatrix.com</email>
-  </record>
-
-  <record type="user">
-    <uid>__glyph__</uid>
-    <short-name>glyph</short-name>
-    <full-name>Glyph Lefkowitz</full-name>
-    <password>hpylg</password>
-    <email>glyph at bitbucket.calendarserver.org</email>
-    <email>glyph at devnull.twistedmatrix.com</email>
-  </record>
-
-  <record type="user">
-    <uid>__sagen__</uid>
-    <short-name>sagen</short-name>
-    <full-name>Morgen Sagen</full-name>
-    <password>negas</password>
-    <email>sagen at bitbucket.calendarserver.org</email>
-    <email>shared at example.com</email>
-  </record>
-
-  <record type="user">
-    <uid>__cdaboo__</uid>
-    <short-name>cdaboo</short-name>
-    <full-name>Cyrus Daboo</full-name>
-    <password>suryc</password>
-    <email>cdaboo at bitbucket.calendarserver.org</email>
-  </record>
-
-  <record type="user">
-    <uid>__dre__</uid>
-    <short-name>dre</short-name>
-    <full-name>Andre LaBranche</full-name>
-    <password>erd</password>
-    <email>dre at bitbucket.calendarserver.org</email>
-    <email>shared at example.com</email>
-  </record>
-
-  <record type="user">
-    <uid>__exarkun__</uid>
-    <short-name>exarkun</short-name>
-    <full-name>Jean-Paul Calderone</full-name>
-    <password>nucraxe</password>
-    <email>exarkun at devnull.twistedmatrix.com</email>
-  </record>
-
-  <record type="user">
-    <uid>__dreid__</uid>
-    <short-name>dreid</short-name>
-    <full-name>David Reid</full-name>
-    <password>dierd</password>
-    <email>dreid at devnull.twistedmatrix.com</email>
-  </record>
-
-  <record> <!-- type defaults to "user" -->
-    <uid>__joe__</uid>
-    <short-name>joe</short-name>
-    <full-name>Joe Schmoe</full-name>
-    <password>eoj</password>
-    <email>joe at example.com</email>
-  </record>
-
-  <record>
-    <uid>__alyssa__</uid>
-    <short-name>alyssa</short-name>
-    <full-name>Alyssa P. Hacker</full-name>
-    <password>assyla</password>
-    <email>alyssa at example.com</email>
-  </record>
-
-  <record type="group">
-    <uid>__calendar-dev__</uid>
-    <short-name>calendar-dev</short-name>
-    <full-name>Calendar Server developers</full-name>
-    <email>dev at bitbucket.calendarserver.org</email>
-    <member-uid>__wsanchez__</member-uid>
-    <member-uid>__glyph__</member-uid>
-    <member-uid>__sagen__</member-uid>
-    <member-uid>__cdaboo__</member-uid>
-    <member-uid>__dre__</member-uid>
-  </record>
-
-  <record type="group">
-    <uid>__twisted__</uid>
-    <short-name>twisted</short-name>
-    <full-name>Twisted Matrix Laboratories</full-name>
-    <email>hack at devnull.twistedmatrix.com</email>
-    <member-uid>__wsanchez__</member-uid>
-    <member-uid>__glyph__</member-uid>
-    <member-uid>__exarkun__</member-uid>
-    <member-uid>__dreid__</member-uid>
-    <member-uid>__dre__</member-uid>
-  </record>
-
-  <record type="group">
-    <uid>__developers__</uid>
-    <short-name>developers</short-name>
-    <full-name>All Developers</full-name>
-    <member-uid>__calendar-dev__</member-uid>
-    <member-uid>__twisted__</member-uid>
-    <member-uid>__alyssa__</member-uid>
-  </record>
-
-</directory>
-"""
-
-
-
 class BaseTest(unittest.TestCase):
     def service(self, xmlData=None):
         return xmlService(self.mktemp(), xmlData)
@@ -846,11 +725,133 @@
 
 
 
-def xmlService(tmp, xmlData=None):
+def xmlService(tmp, xmlData=None, serviceClass=None):
     if xmlData is None:
         xmlData = testXMLConfig
 
+    if serviceClass is None:
+        serviceClass = TestService
+
     filePath = FilePath(tmp)
     filePath.setContent(xmlData)
 
-    return TestService(filePath)
+    return serviceClass(filePath)
+
+
+
+testXMLConfig = """<?xml version="1.0" encoding="utf-8"?>
+
+<directory realm="xyzzy">
+
+  <record type="user">
+    <uid>__wsanchez__</uid>
+    <short-name>wsanchez</short-name>
+    <short-name>wilfredo_sanchez</short-name>
+    <full-name>Wilfredo Sanchez</full-name>
+    <password>zehcnasw</password>
+    <email>wsanchez at bitbucket.calendarserver.org</email>
+    <email>wsanchez at devnull.twistedmatrix.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__glyph__</uid>
+    <short-name>glyph</short-name>
+    <full-name>Glyph Lefkowitz</full-name>
+    <password>hpylg</password>
+    <email>glyph at bitbucket.calendarserver.org</email>
+    <email>glyph at devnull.twistedmatrix.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__sagen__</uid>
+    <short-name>sagen</short-name>
+    <full-name>Morgen Sagen</full-name>
+    <password>negas</password>
+    <email>sagen at bitbucket.calendarserver.org</email>
+    <email>shared at example.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__cdaboo__</uid>
+    <short-name>cdaboo</short-name>
+    <full-name>Cyrus Daboo</full-name>
+    <password>suryc</password>
+    <email>cdaboo at bitbucket.calendarserver.org</email>
+  </record>
+
+  <record type="user">
+    <uid>__dre__</uid>
+    <short-name>dre</short-name>
+    <full-name>Andre LaBranche</full-name>
+    <password>erd</password>
+    <email>dre at bitbucket.calendarserver.org</email>
+    <email>shared at example.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__exarkun__</uid>
+    <short-name>exarkun</short-name>
+    <full-name>Jean-Paul Calderone</full-name>
+    <password>nucraxe</password>
+    <email>exarkun at devnull.twistedmatrix.com</email>
+  </record>
+
+  <record type="user">
+    <uid>__dreid__</uid>
+    <short-name>dreid</short-name>
+    <full-name>David Reid</full-name>
+    <password>dierd</password>
+    <email>dreid at devnull.twistedmatrix.com</email>
+  </record>
+
+  <record> <!-- type defaults to "user" -->
+    <uid>__joe__</uid>
+    <short-name>joe</short-name>
+    <full-name>Joe Schmoe</full-name>
+    <password>eoj</password>
+    <email>joe at example.com</email>
+  </record>
+
+  <record> <!-- type defaults to "user" -->
+    <uid>__alyssa__</uid>
+    <short-name>alyssa</short-name>
+    <full-name>Alyssa P. Hacker</full-name>
+    <password>assyla</password>
+    <email>alyssa at example.com</email>
+  </record>
+
+  <record type="group">
+    <uid>__calendar-dev__</uid>
+    <short-name>calendar-dev</short-name>
+    <full-name>Calendar Server developers</full-name>
+    <email>dev at bitbucket.calendarserver.org</email>
+    <member-uid>__wsanchez__</member-uid>
+    <member-uid>__glyph__</member-uid>
+    <member-uid>__sagen__</member-uid>
+    <member-uid>__cdaboo__</member-uid>
+    <member-uid>__dre__</member-uid>
+  </record>
+
+  <record type="group">
+    <uid>__twisted__</uid>
+    <short-name>twisted</short-name>
+    <full-name>Twisted Matrix Laboratories</full-name>
+    <email>hack at devnull.twistedmatrix.com</email>
+    <member-uid>__wsanchez__</member-uid>
+    <member-uid>__glyph__</member-uid>
+    <member-uid>__exarkun__</member-uid>
+    <member-uid>__dreid__</member-uid>
+    <member-uid>__dre__</member-uid>
+  </record>
+
+  <record type="group">
+    <uid>__developers__</uid>
+    <short-name>developers</short-name>
+    <full-name>All Developers</full-name>
+    <member-uid>__calendar-dev__</member-uid>
+    <member-uid>__twisted__</member-uid>
+    <member-uid>__alyssa__</member-uid>
+  </record>
+
+</directory>
+"""
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130225/ea79be05/attachment-0001.html>


More information about the calendarserver-changes mailing list