[CalendarServer-changes] [3314] CalDAVTester/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Mon Nov 3 19:11:42 PST 2008
Revision: 3314
http://trac.macosforge.org/projects/calendarserver/changeset/3314
Author: cdaboo at apple.com
Date: 2008-11-03 19:11:42 -0800 (Mon, 03 Nov 2008)
Log Message:
-----------
Tweaked header tests to allow grabbing header values for later tests.
Modified Paths:
--------------
CalDAVTester/trunk/scripts/tests/caldavtest.dtd
CalDAVTester/trunk/src/caldavtest.py
CalDAVTester/trunk/src/request.py
CalDAVTester/trunk/src/xmlDefs.py
CalDAVTester/trunk/verifiers/header.py
Modified: CalDAVTester/trunk/scripts/tests/caldavtest.dtd
===================================================================
--- CalDAVTester/trunk/scripts/tests/caldavtest.dtd 2008-11-04 03:10:03 UTC (rev 3313)
+++ CalDAVTester/trunk/scripts/tests/caldavtest.dtd 2008-11-04 03:11:42 UTC (rev 3314)
@@ -22,7 +22,7 @@
<!ELEMENT start (request*)>
<!ELEMENT end (request*)>
- <!ELEMENT request (method, header*, ruri?, data?, verify*, grablocation?, grabproperty?)>
+ <!ELEMENT request (method, header*, ruri*, data?, verify*, grabheader?, grabproperty?)>
<!ATTLIST request auth (yes|no) "yes"
user CDATA ""
pswd CDATA ""
@@ -44,7 +44,7 @@
<!ELEMENT callback (#PCDATA)>
<!ELEMENT arg (name, value+)>
- <!ELEMENT grablocation EMPTY>
+ <!ELEMENT grabheader (name, variable)>
<!ELEMENT grabproperty (property, variable)>
<!ELEMENT property (#PCDATA)>
Modified: CalDAVTester/trunk/src/caldavtest.py
===================================================================
--- CalDAVTester/trunk/src/caldavtest.py 2008-11-04 03:10:03 UTC (rev 3313)
+++ CalDAVTester/trunk/src/caldavtest.py 2008-11-04 03:11:42 UTC (rev 3314)
@@ -165,6 +165,7 @@
hrefs = []
req = request(self.manager)
req.method = "PROPFIND"
+ req.ruris.append(collection[0])
req.ruri = collection[0]
req.headers["Depth"] = "1"
if len(collection[1]):
@@ -211,6 +212,7 @@
for deleter in deletes:
req = request(self.manager)
req.method = "DELETE"
+ req.ruris.append(deleter[0])
req.ruri = deleter[0]
if len(deleter[1]):
req.user = deleter[1]
@@ -222,6 +224,7 @@
hresult = ""
req = request(self.manager)
req.method = "PROPFIND"
+ req.ruris.append(collection[0])
req.ruri = collection[0]
req.headers["Depth"] = "1"
if len(collection[1]):
@@ -301,6 +304,7 @@
for deleter in self.end_deletes:
req = request(self.manager)
req.method = "DELETE"
+ req.ruris.append(deleter[0])
req.ruri = deleter[0]
if len(deleter[1]):
req.user = deleter[1]
@@ -369,13 +373,14 @@
# Special check for DELETEALL
if req.method == "DELETEALL":
- collection = (req.ruri, req.user, req.pswd)
- hrefs = self.dofindall(collection)
- self.dodeleteall(hrefs)
+ for ruri in req.ruris:
+ collection = (ruri, req.user, req.pswd)
+ hrefs = self.dofindall(collection)
+ self.dodeleteall(hrefs)
return True, "", None, None
# Special check for ACCESS-DISABLE
- if req.method == "ACCESS-DISABLE":
+ elif req.method == "ACCESS-DISABLE":
if self.doaccess(req.ruri, False):
return True, "", None, None
else:
@@ -387,7 +392,7 @@
return False, "Could not remove caldav-access-disabled xattr on file", None, None
# Special check for QUOTA
- if req.method == "QUOTA-DISABLE":
+ elif req.method == "QUOTA-DISABLE":
if self.doquota(req.ruri, None):
return True, "", None, None
else:
@@ -399,7 +404,7 @@
return False, "Could not set quota-root xattr on file", None, None
# Special for delay
- if req.method == "DELAY":
+ elif req.method == "DELAY":
# self.ruri contains a numeric delay in seconds
delay = int(req.ruri)
starttime = time.time()
@@ -407,14 +412,8 @@
pass
return True, "", None, None
- # Special for LISTNEW
- if req.method == "LISTNEW":
- collection = (req.ruri, req.user, req.pswd)
- self.grabbedlocation = self.dofindnew(collection)
- return True, "", None, None
-
# Special for GETNEW
- if req.method == "GETNEW":
+ elif req.method == "GETNEW":
collection = (req.ruri, req.user, req.pswd)
self.grabbedlocation = self.dofindnew(collection)
req.method = "GET"
@@ -480,10 +479,10 @@
resulttxt += str(response.msg) + "\n" + respdata
resulttxt += "\n--------END:RESPONSE--------\n"
- if req.grablocation:
- hdrs = response.msg.getheaders("Location")
+ if req.grabheader:
+ hdrs = response.msg.getheaders(req.grabheader[0])
if hdrs:
- self.grabbedlocation = hdrs[0]
+ self.manager.server_info.addextrasubs({req.grabheader[1]: hdrs[0].encode("utf-8")})
if req.grabproperty:
if response.status == 207:
Modified: CalDAVTester/trunk/src/request.py
===================================================================
--- CalDAVTester/trunk/src/request.py 2008-11-04 03:10:03 UTC (rev 3313)
+++ CalDAVTester/trunk/src/request.py 2008-11-04 03:11:42 UTC (rev 3314)
@@ -127,8 +127,8 @@
be used to determine a satisfactory output or not.
"""
__slots__ = ['manager', 'auth', 'user', 'pswd', 'end_delete', 'print_response',
- 'method', 'headers', 'ruri', 'data', 'datasubs', 'verifiers',
- 'grablocation', 'grabproperty']
+ 'method', 'headers', 'ruris', 'ruri', 'data', 'datasubs', 'verifiers',
+ 'grabheader', 'grabproperty']
def __init__( self, manager ):
self.manager = manager
@@ -139,15 +139,16 @@
self.print_response = False
self.method = ""
self.headers = {}
+ self.ruris = []
self.ruri = ""
self.data = None
self.datasubs = True
self.verifiers = []
- self.grablocation = False
+ self.grabheader = None
self.grabproperty = None
def __str__(self):
- return "Method: %s; uri: %s" % (self.method, self.ruri)
+ return "Method: %s; uris: %s" % (self.method, self.ruris if len(self.ruris) > 1 else self.ruri,)
def getURI( self, si ):
if self.ruri == "$":
@@ -161,6 +162,8 @@
def getHeaders( self, si ):
hdrs = self.headers
+ for key, value in hdrs.items():
+ hdrs[key] = si.extrasubs(value)
# Content type
if self.data != None:
@@ -279,15 +282,17 @@
elif child._get_localName() == src.xmlDefs.ELEMENT_HEADER:
self.parseHeader(child)
elif child._get_localName() == src.xmlDefs.ELEMENT_RURI:
- self.ruri = self.manager.server_info.subs(child.firstChild.data.encode("utf-8"))
+ self.ruris.append(self.manager.server_info.subs(child.firstChild.data.encode("utf-8")))
+ if len(self.ruris) == 1:
+ self.ruri = self.ruris[0]
elif child._get_localName() == src.xmlDefs.ELEMENT_DATA:
self.data = data()
self.datasubs = self.data.parseXML( child )
elif child._get_localName() == src.xmlDefs.ELEMENT_VERIFY:
self.verifiers.append(verify(self.manager))
self.verifiers[-1].parseXML( child )
- elif child._get_localName() == src.xmlDefs.ELEMENT_GRABLOCATION:
- self.grablocation = True
+ elif child._get_localName() == src.xmlDefs.ELEMENT_GRABHEADER:
+ self.parseGrabHeader(child)
elif child._get_localName() == src.xmlDefs.ELEMENT_GRABPROPERTY:
self.parseGrabProperty(child)
@@ -315,6 +320,19 @@
parseList = staticmethod( parseList )
+ def parseGrabHeader(self, node):
+
+ header = None
+ variable = None
+ for child in node._get_childNodes():
+ if child._get_localName() == src.xmlDefs.ELEMENT_NAME:
+ header = child.firstChild.data.encode("utf-8")
+ elif child._get_localName() == src.xmlDefs.ELEMENT_VARIABLE:
+ variable = self.manager.server_info.subs(child.firstChild.data.encode("utf-8"))
+
+ if (header is not None) and (variable is not None):
+ self.grabheader = (header, variable)
+
def parseGrabProperty(self, node):
property = None
Modified: CalDAVTester/trunk/src/xmlDefs.py
===================================================================
--- CalDAVTester/trunk/src/xmlDefs.py 2008-11-04 03:10:03 UTC (rev 3313)
+++ CalDAVTester/trunk/src/xmlDefs.py 2008-11-04 03:11:42 UTC (rev 3314)
@@ -30,7 +30,7 @@
ELEMENT_DESCRIPTION = "description"
ELEMENT_END = "end"
ELEMENT_FILEPATH = "filepath"
-ELEMENT_GRABLOCATION = "grablocation"
+ELEMENT_GRABHEADER = "grabheader"
ELEMENT_GRABPROPERTY = "grabproperty"
ELEMENT_HEADER = "header"
ELEMENT_HOST = "host"
Modified: CalDAVTester/trunk/verifiers/header.py
===================================================================
--- CalDAVTester/trunk/verifiers/header.py 2008-11-04 03:10:03 UTC (rev 3313)
+++ CalDAVTester/trunk/verifiers/header.py 2008-11-04 03:11:42 UTC (rev 3314)
@@ -35,50 +35,52 @@
p = p[1:]
present = "multiple"
if p.find("$") != -1:
- testheader[i] = (p.split("$", 1)[0], p.split("$", 1)[1], present,)
+ testheader[i] = (p.split("$", 1)[0], p.split("$", 1)[1], present, True,)
+ elif p.find("!") != -1:
+ testheader[i] = (p.split("!", 1)[0], p.split("!", 1)[1], present, False,)
else:
- testheader[i] = (p, None, present,)
+ testheader[i] = (p, None, present, True,)
result = True
resulttxt = ""
- for test in testheader:
- hdrs = response.msg.getheaders(test[0])
+ for hdrname, hdrvalue, presence, matchvalue in testheader:
+ hdrs = response.msg.getheaders(hdrname)
if (hdrs is None or (len(hdrs) == 0)):
- if test[2] != "none":
+ if presence != "none":
result = False
if len(resulttxt):
resulttxt += "\n"
- resulttxt += " Missing Response Header: %s" % (test[0],)
+ resulttxt += " Missing Response Header: %s" % (hdrname,)
continue
else:
continue
- if (hdrs is not None) and (len(hdrs) != 0) and (test[2] == "none"):
+ if (hdrs is not None) and (len(hdrs) != 0) and (presence == "none"):
result = False
if len(resulttxt):
resulttxt += "\n"
- resulttxt += " Response Header was present one or more times: %s" % (test[0],)
+ resulttxt += " Response Header was present one or more times: %s" % (hdrname,)
continue
- if (len(hdrs) != 1) and (test[2] == "single"):
+ if (len(hdrs) != 1) and (presence == "single"):
result = False
if len(resulttxt):
resulttxt += "\n"
- resulttxt += " Multiple Response Headers: %s" % (test[0],)
+ resulttxt += " Multiple Response Headers: %s" % (hdrname,)
continue
- if (test[1] is not None):
+ if (hdrvalue is not None):
matched = False
for hdr in hdrs:
- if (re.match(test[1], hdr) is not None):
+ if (re.match(hdrvalue, hdr) is not None):
matched = True
break
- if not matched:
+ if matchvalue and not matched or not matchvalue and matched:
result = False
if len(resulttxt):
resulttxt += "\n"
- resulttxt += " Wrong Response Header Value: %s: %s" % (test[0], str(hdrs))
+ resulttxt += " Wrong Response Header Value: %s: %s" % (hdrname, str(hdrs))
return result, resulttxt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20081103/d9258350/attachment-0001.html>
More information about the calendarserver-changes
mailing list