mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-10-06 04:20:33 +00:00
Monotone-Parent: bb3480fceb6cb5272d17ac7b9d0999cd0706581b
Monotone-Revision: a5bfd93a503f6042740a0ab88ca339c566d81c1f Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-06-01T18:14:17 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -11,7 +11,7 @@ class WebDAVTest(unittest.TestCase):
|
||||
unittest.TestCase.__init__(self, arg)
|
||||
self.client = webdavlib.WebDAVClient(hostname, port,
|
||||
username, password)
|
||||
self.dav_utility = utilities.TestUtility(self.client)
|
||||
self.dav_utility = utilities.TestUtility(self, self.client)
|
||||
|
||||
def testPrincipalCollectionSet(self):
|
||||
"""property: 'principal-collection-set' on collection object"""
|
||||
@@ -19,12 +19,11 @@ class WebDAVTest(unittest.TestCase):
|
||||
propfind = webdavlib.WebDAVPROPFIND(resource,
|
||||
["{DAV:}principal-collection-set"],
|
||||
0)
|
||||
propfind.xpath_namespace = { "D": "DAV:" }
|
||||
self.client.execute(propfind)
|
||||
self.assertEquals(propfind.response["status"], 207)
|
||||
nodes = propfind.xpath_evaluate('/D:multistatus/D:response/D:propstat/D:prop/D:principal-collection-set/D:href',
|
||||
None)
|
||||
responseHref = nodes[0].childNodes[0].nodeValue
|
||||
nodes = propfind.response["document"] \
|
||||
.findall('{DAV:}response/{DAV:}propstat/{DAV:}prop/{DAV:}principal-collection-set/{DAV:}href')
|
||||
responseHref = nodes[0].text
|
||||
if responseHref[0:4] == "http":
|
||||
self.assertEquals("http://%s/SOGo/dav/" % hostname, responseHref,
|
||||
"{DAV:}principal-collection-set returned %s instead of 'http../SOGo/dav/'"
|
||||
@@ -40,12 +39,11 @@ class WebDAVTest(unittest.TestCase):
|
||||
propfind = webdavlib.WebDAVPROPFIND(resource,
|
||||
["{DAV:}principal-collection-set"],
|
||||
0)
|
||||
propfind.xpath_namespace = { "D": "DAV:" }
|
||||
self.client.execute(propfind)
|
||||
self.assertEquals(propfind.response["status"], 207)
|
||||
nodes = propfind.xpath_evaluate('/D:multistatus/D:response/D:propstat/D:prop/D:principal-collection-set/D:href',
|
||||
None)
|
||||
responseHref = nodes[0].childNodes[0].nodeValue
|
||||
node = propfind.response["document"] \
|
||||
.find('{DAV:}response/{DAV:}propstat/{DAV:}prop/{DAV:}principal-collection-set/{DAV:}href')
|
||||
responseHref = node.text
|
||||
expectedHref = '/SOGo/dav/'
|
||||
if responseHref[0:4] == "http":
|
||||
self.assertEquals("http://%s%s" % (hostname, expectedHref), responseHref,
|
||||
@@ -61,19 +59,15 @@ class WebDAVTest(unittest.TestCase):
|
||||
propfind = webdavlib.WebDAVPROPFIND(resource,
|
||||
["{DAV:}displayname", "{DAV:}resourcetype"],
|
||||
1)
|
||||
propfind.xpath_namespace = { "D": "DAV:" }
|
||||
self.client.execute(propfind)
|
||||
self.assertEquals(propfind.response["status"], 207)
|
||||
|
||||
nodes = propfind.xpath_evaluate('/D:multistatus/D:response',
|
||||
None)
|
||||
nodes = propfind.response["document"].findall('{DAV:}response')
|
||||
for node in nodes:
|
||||
responseHref = propfind.xpath_evaluate('D:href', node)[0].childNodes[0].nodeValue
|
||||
responseHref = node.find('{DAV:}href').text
|
||||
hasSlash = responseHref[-1] == '/'
|
||||
resourcetypes = \
|
||||
propfind.xpath_evaluate('D:propstat/D:prop/D:resourcetype',
|
||||
node)[0].childNodes
|
||||
isCollection = len(resourcetypes) > 0
|
||||
resourcetype = node.find('{DAV:}propstat/{DAV:}prop/{DAV:}resourcetype')
|
||||
isCollection = len(resourcetype.getchildren()) > 0
|
||||
if isCollection:
|
||||
self.assertEquals(hasSlash, resourceWithSlash,
|
||||
"failure with href '%s' while querying '%s'"
|
||||
@@ -108,14 +102,11 @@ class WebDAVTest(unittest.TestCase):
|
||||
["displayname"], matches)
|
||||
self.client.execute(query)
|
||||
self.assertEquals(query.response["status"], 207)
|
||||
response = query.xpath_evaluate('/D:multistatus/D:response')[0]
|
||||
href = query.xpath_evaluate('D:href', response)[0]
|
||||
self.assertEquals("/SOGo/dav/%s/" % username,
|
||||
href.childNodes[0].nodeValue)
|
||||
displayname = query.xpath_evaluate('/D:multistatus/D:response' \
|
||||
+ '/D:propstat/D:prop' \
|
||||
+ '/D:displayname')[0]
|
||||
value = displayname.nodeValue
|
||||
response = query.response["document"].findall('{DAV:}response')[0]
|
||||
href = response.find('{DAV:}href').text
|
||||
self.assertEquals("/SOGo/dav/%s/" % username, href)
|
||||
displayname = response.find('{DAV:}propstat/{DAV:}prop/{DAV:}displayname')
|
||||
value = displayname.text
|
||||
if value is None:
|
||||
value = ""
|
||||
self.assertEquals(userInfo[0], value)
|
||||
@@ -126,60 +117,38 @@ class WebDAVTest(unittest.TestCase):
|
||||
resource = '/SOGo/dav/%s/' % username
|
||||
userInfo = self.dav_utility.fetchUserInfo(username)
|
||||
|
||||
query_props = {"owner": { "href": resource,
|
||||
"displayname": userInfo[0]},
|
||||
"principal-collection-set": { "href": "/SOGo/dav/",
|
||||
"displayname": "SOGo"}}
|
||||
query_props = {"{DAV:}owner": { "{DAV:}href": resource,
|
||||
"{DAV:}displayname": userInfo[0]},
|
||||
"{DAV:}principal-collection-set": { "{DAV:}href": "/SOGo/dav/",
|
||||
"{DAV:}displayname": "SOGo"}}
|
||||
query = webdavlib.WebDAVExpandProperty(resource, query_props.keys(),
|
||||
["displayname"])
|
||||
self.client.execute(query)
|
||||
self.assertEquals(query.response["status"], 207)
|
||||
|
||||
topResponse = query.xpath_evaluate('/D:multistatus/D:response')[0]
|
||||
topHref = query.xpath_evaluate('D:href', topResponse)[0]
|
||||
self.assertEquals(resource, topHref.childNodes[0].nodeValue)
|
||||
topResponse = query.response["document"].find('{DAV:}response')
|
||||
topHref = topResponse.find('{DAV:}href')
|
||||
self.assertEquals(resource, topHref.text)
|
||||
for query_prop in query_props.keys():
|
||||
propResponse = query.xpath_evaluate('D:propstat/D:prop/D:%s'
|
||||
% query_prop, topResponse)[0]
|
||||
|
||||
|
||||
# <?xml version="1.0" encoding="utf-8"?>
|
||||
# <D:multistatus xmlns:D="DAV:">
|
||||
# <D:response>
|
||||
# <D:href>/SOGo/dav/wsourdeau/</D:href>
|
||||
# <D:propstat>
|
||||
# <D:prop>
|
||||
# <D:owner>
|
||||
# <D:response>
|
||||
# <D:href>/SOGo/dav/wsourdeau/</D:href>
|
||||
# <D:propstat>
|
||||
# <D:prop>
|
||||
# <D:displayname>Wolfgang Sourdeau</D:displayname>
|
||||
# </D:prop>
|
||||
# <D:status>HTTP/1.1 200 OK</D:status>
|
||||
# </D:propstat>
|
||||
# </D:response>
|
||||
# </D:owner>
|
||||
propHref = query.xpath_evaluate('D:response/D:href',
|
||||
propResponse)[0]
|
||||
self.assertEquals(query_props[query_prop]["href"],
|
||||
propHref.childNodes[0].nodeValue,
|
||||
propResponse = topResponse.find('{DAV:}propstat/{DAV:}prop/%s'
|
||||
% query_prop)
|
||||
propHref = propResponse.find('{DAV:}response/{DAV:}href')
|
||||
self.assertEquals(query_props[query_prop]["{DAV:}href"],
|
||||
propHref.text,
|
||||
"'%s', href mismatch: exp. '%s', got '%s'"
|
||||
% (query_prop,
|
||||
query_props[query_prop]["href"],
|
||||
propHref.childNodes[0].nodeValue))
|
||||
propDisplayname = query.xpath_evaluate('D:response/D:propstat/D:prop/D:displayname',
|
||||
propResponse)[0]
|
||||
if len(propDisplayname.childNodes) > 0:
|
||||
displayName = propDisplayname.childNodes[0].nodeValue
|
||||
else:
|
||||
query_props[query_prop]["{DAV:}href"],
|
||||
propHref.text))
|
||||
propDisplayname = propResponse.find('{DAV:}response/{DAV:}propstat/{DAV:}prop/{DAV:}displayname')
|
||||
displayName = propDisplayname.text
|
||||
if displayName is None:
|
||||
displayName = ""
|
||||
self.assertEquals(query_props[query_prop]["displayname"],
|
||||
self.assertEquals(query_props[query_prop]["{DAV:}displayname"],
|
||||
displayName,
|
||||
"'%s', displayname mismatch: exp. '%s', got '%s'"
|
||||
% (query_prop,
|
||||
query_props[query_prop]["displayname"],
|
||||
propDisplayname.nodeValue))
|
||||
query_props[query_prop]["{DAV:}displayname"],
|
||||
propDisplayname))
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user