[CalendarServer-changes] [7956] CalendarServer/branches/users/glyph/imip-and-admin-html/ calendarserver/webadmin/test/test_resource.py

source_changes at macosforge.org source_changes at macosforge.org
Thu Aug 11 21:50:35 PDT 2011


Revision: 7956
          http://trac.macosforge.org/projects/calendarserver/changeset/7956
Author:   glyph at apple.com
Date:     2011-08-11 21:50:35 -0700 (Thu, 11 Aug 2011)
Log Message:
-----------
test for proxy list table

Modified Paths:
--------------
    CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/test/test_resource.py

Modified: CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/test/test_resource.py
===================================================================
--- CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/test/test_resource.py	2011-08-12 04:50:23 UTC (rev 7955)
+++ CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/test/test_resource.py	2011-08-12 04:50:35 UTC (rev 7956)
@@ -38,6 +38,7 @@
 
 from twext.web2.http import HTTPError
 from twext.web2.responsecode import CONFLICT
+from twext.web2.dav.element.rfc2518 import HRef
 from twistedcaldav.directory.directory import DirectoryRecord
 
 
@@ -250,6 +251,30 @@
             self.assertEquals(expectedTrue.getAttribute("selected"), "selected")
 
 
+    @inlineCallbacks
+    def test_proxiesListing(self):
+        """
+        Resource principals will have their proxies listed in a table.
+        """
+
+        self.resource.getResourceById = partial(FakePrincipalResource, self,
+                                                recordType="resources")
+        document = yield self.renderPage(dict(resourceId=["qux"]))
+        proxiesForm = document.getElementById("frm_proxies")
+        [proxiesTable] = getElementsByTagName(proxiesForm, "table")
+        rows = getElementsByTagName(proxiesTable, "tr")
+
+        # header + 3 data rows (see FakePrincipalResource)
+        self.assertEquals(len(rows), 4)
+        firstRowCells = getElementsByTagName(rows[1], "td")
+        # name, buttons, name, buttons
+        self.assertEquals(len(firstRowCells), 4)
+        lastRowCells = getElementsByTagName(rows[-1], "td")
+        # name, buttons, blank space
+        self.assertEquals(len(lastRowCells), 3)
+        self.assertEquals(lastRowCells[-1].getAttribute("colspan"), "2")
+
+
     # Properties for being a fake directory service as far as the implementation
     # of DirectoryRecord is concerned.
     realmName = 'Fake'
@@ -258,18 +283,20 @@
 
 
 class FakePrincipalResource(object):
-    def __init__(self, test, req, resid, autosched=True, recordType="users"):
+    def __init__(self, test, req=None, resid=None, autosched=True,
+                 recordType="users", extraProperties=()):
         self.test = test
-        test.assertEquals(resid, "qux")
+        self.resid = resid
         self.autosched = autosched
         self.recordType = recordType
+        self.extraProperties = extraProperties
 
 
     @property
     def record(self):
         authIds = ['fake auth id']
         emails = ['fake email']
-        shortNames = ['fake short name']
+        shortNames = [self.resid]
         fullName = 'nobody'
         return DirectoryRecord(
             service=self.test, recordType=self.recordType, guid=None,
@@ -283,6 +310,19 @@
 
 
     def getChild(self, name):
+        if name == 'calendar-proxy-read':
+            return FakePrincipalResource(
+                self.test,
+                extraProperties=[GroupMemberSet(HRef("read-1"),
+                                                HRef("read-2"),
+                                                HRef("read-3"))]
+            )
+        elif name == 'calendar-proxy-write':
+            return FakePrincipalResource(
+                self.test,
+                extraProperties=[GroupMemberSet(HRef("write-1"),
+                                                HRef("write-2"))]
+            )
         return self
 
 
@@ -291,6 +331,9 @@
         yield None
         if not isinstance(name, tuple):
             name = name.qname()
+        for prop in self.extraProperties:
+            if name == prop.qname():
+                returnValue(prop)
         if name == DisplayName.qname():
             returnValue(DisplayName("The Name To Display"))
         elif name == GroupMemberSet.qname():
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110811/cff53990/attachment.html>


More information about the calendarserver-changes mailing list