blob: 145f2fea1a12374d32e83a649e28d613e7947eb3 [file] [log] [blame]
import urlparse
def setNoCacheAndCORSHeaders(request, response):
"""Set Cache-Control, CORS and Content-Type headers appropriate for the cookie tests."""
headers = [("Content-Type", "application/json"),
("Access-Control-Allow-Credentials", "true")]
origin = "*"
if "origin" in request.headers:
origin = request.headers["origin"]
headers.append(("Access-Control-Allow-Origin", origin))
#headers.append(("Access-Control-Allow-Credentials", "true"))
headers.append(("Cache-Control", "no-cache"))
headers.append(("Expires", "Fri, 01 Jan 1990 00:00:00 GMT"))
return headers
def makeCookieHeader(name, value, otherAttrs):
"""Make a Set-Cookie header for a cookie with the name, value and attributes provided."""
def makeAV(a, v):
if None == v or "" == v:
return a
return "%s=%s" % (a, v)
# ensure cookie name is always first
attrs = ["%s=%s" % (name, value)]
attrs.extend(makeAV(a, v) for (a,v) in otherAttrs.iteritems())
return ("Set-Cookie", "; ".join(attrs))
def makeDropCookie(name, secure):
attrs = {"MaxAge": 0, "path": "/"}
if secure:
attrs["secure"] = ""
return makeCookieHeader(name, "", attrs)
def readParameter(request, paramName, requireValue):
"""Read a parameter from the request. Raise if requireValue is set and the
parameter has an empty value or is not present."""
params = urlparse.parse_qs(request.url_parts.query)
param = params[paramName][0].strip()
if len(param) == 0:
raise Exception("Empty or missing name parameter.")
return param
def readCookies(request):
"""Read the cookies from the client present in the request."""
cookies = {}
for key in request.cookies:
for cookie in request.cookies.get_list(key):
# do we care we'll clobber cookies here? If so, do we
# need to modify the test to take cookie names and value lists?
cookies[key] = cookie.value
return cookies