[CalendarServer-changes] [7916] CalendarServer/branches/users/glyph/imip-and-admin-html/ calendarserver/webadmin
source_changes at macosforge.org
source_changes at macosforge.org
Thu Aug 11 21:43:04 PDT 2011
Revision: 7916
http://trac.macosforge.org/projects/calendarserver/changeset/7916
Author: glyph at apple.com
Date: 2011-08-11 21:43:04 -0700 (Thu, 11 Aug 2011)
Log Message:
-----------
first page-rendering test (for resourceSearch)
Modified Paths:
--------------
CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/resource.py
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/resource.py
===================================================================
--- CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/resource.py 2011-08-12 04:42:53 UTC (rev 7915)
+++ CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/resource.py 2011-08-12 04:43:04 UTC (rev 7916)
@@ -177,8 +177,7 @@
def htmlContent(self, directory, request):
def queryValue(arg):
- query = cgi.parse_qs(urlparse.urlparse(request.uri).query, True)
- return query.get(arg, [""])[0]
+ return request.args.get(arg, [""])[0]
def queryValues(arg):
query = cgi.parse_qs(urlparse.urlparse(request.uri).query, True)
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:42:53 UTC (rev 7915)
+++ CalendarServer/branches/users/glyph/imip-and-admin-html/calendarserver/webadmin/test/test_resource.py 2011-08-12 04:43:04 UTC (rev 7916)
@@ -20,11 +20,14 @@
from twisted.trial.unittest import TestCase
-from twisted.web.microdom import parseString
+from twisted.web.microdom import parseString, getElementsByTagName
+from twisted.web.domhelpers import gatherTextNodes
+
from calendarserver.tap.util import FakeRequest
from twisted.internet.defer import inlineCallbacks
from twisted.internet.defer import returnValue
from calendarserver.webadmin.resource import WebAdminResource
+from twistedcaldav.directory.directory import DirectoryRecord
@@ -33,6 +36,17 @@
Tests for HTML rendering L{WebAdminResource}.
"""
+ def expectRecordSearch(self, searchString, result):
+ """
+ Expect that a search will be issued via with the given fields, and will
+ yield the given result.
+ """
+ fields = []
+ for field in 'fullName', 'firstName', 'lastName', 'emailAddresses':
+ fields.append((field, searchString, True, "contains"))
+ self.expectedSearches[tuple(fields)] = result
+
+
def recordsMatchingFields(self, fields):
"""
Pretend to be a directory object for the purposes of testing.
@@ -40,20 +54,23 @@
# 'fields' will be a list of 4-tuples of (fieldName, searchStr, True,
# "contains"; implement this for tests which will want to call
# 'search()')
+ return self.expectedSearches[tuple(fields)]
def setUp(self):
+ self.expectedSearches = {}
self.resource = WebAdminResource(self.mktemp(), None, self)
@inlineCallbacks
- def renderPage(self):
+ def renderPage(self, args={}):
"""
Render a page, returning a Deferred that fires with the HTML as a
- result..
+ result.
"""
- req = FakeRequest(method='GET', path='/webadmin',
+ req = FakeRequest(method='GET', path='/admin',
rootResource=self.resource)
+ req.args = args
response = yield self.resource.render(req)
self.assertEquals(response.code, 200)
content = response.stream.mem
@@ -71,14 +88,48 @@
self.assertEquals(document.documentElement.tagName, 'html')
+ @inlineCallbacks
+ def test_resourceSearch(self):
+ """
+ Searching for resources should result in an HTML table resource search.
+ """
+ self.expectRecordSearch(
+ "bob", [
+ DirectoryRecord(
+ service=self, recordType='users', guid=None,
+ authIDs=authIds, emailAddresses=tuple(emails),
+ shortNames=tuple(shortNames), fullName=fullName
+ )
+ for (shortNames, fullName, authIds, emails)
+ in [
+ (["bob"], "Bob Bobson", ["boblogin"], [
+ "bob at example.com",
+ "bob at other.example.com"]),
+ (["bobd"], "Bob Dobson", ["bobdlogin"], ["bobd at example.com"]),
+ ]
+ ])
+ document = yield self.renderPage(dict(resourceSearch=["bob"]))
+ tables = getElementsByTagName(document, "table")
+ # search results are the first table
+ rows = getElementsByTagName(tables[0], 'tr')
+ self.assertEquals(len(rows), 3)
+ firstRowCells = getElementsByTagName(rows[1], 'td')
+ self.assertEquals([gatherTextNodes(cell) for cell in firstRowCells[1:]],
+ ["Bob Bobson", "User", "bob", "boblogin",
+ "bob at example.com, bob at other.example.com"])
+
+ realmName = 'Fake'
+ guid = '28c57671-2bf8-4ebd-bc45-fda5ffcee1e8'
+
+
class NewRenderingTests(RenderingTests):
"""
Tests for new L{WebAdminPage} renderer.
"""
@inlineCallbacks
- def renderPage(self):
+ def renderPage(self, args={}):
self.resource.render = self.resource.renderNew
returnValue((yield super(NewRenderingTests, self).renderPage()))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110811/4a559216/attachment-0001.html>
More information about the calendarserver-changes
mailing list