summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/service-workers/service-worker/resources/fetch-access-control.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/service-workers/service-worker/resources/fetch-access-control.py')
-rw-r--r--testing/web-platform/tests/service-workers/service-worker/resources/fetch-access-control.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/fetch-access-control.py b/testing/web-platform/tests/service-workers/service-worker/resources/fetch-access-control.py
new file mode 100644
index 000000000..862718ad0
--- /dev/null
+++ b/testing/web-platform/tests/service-workers/service-worker/resources/fetch-access-control.py
@@ -0,0 +1,69 @@
+import base64
+import json
+
+def main(request, response):
+ headers = []
+ headers.append(('X-ServiceWorker-ServerHeader', 'SetInTheServer'))
+
+ if "ACAOrigin" in request.GET:
+ for item in request.GET["ACAOrigin"].split(","):
+ headers.append(("Access-Control-Allow-Origin", item))
+
+ for suffix in ["Headers", "Methods", "Credentials"]:
+ query = "ACA%s" % suffix
+ header = "Access-Control-Allow-%s" % suffix
+ if query in request.GET:
+ headers.append((header, request.GET[query]))
+
+ if "ACEHeaders" in request.GET:
+ headers.append(("Access-Control-Expose-Headers", request.GET[query]))
+
+ if ("Auth" in request.GET and not request.auth.username) or "AuthFail" in request.GET:
+ status = 401
+ headers.append(('WWW-Authenticate', 'Basic realm="Restricted"'))
+ body = 'Authentication canceled'
+ return status, headers, body
+
+ if "PNGIMAGE" in request.GET:
+ headers.append(("Content-Type", "image/png"))
+ body = base64.decodestring("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B"
+ "AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG"
+ "jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
+ return headers, body
+
+
+ username = request.auth.username if request.auth.username else "undefined"
+ password = request.auth.password if request.auth.username else "undefined"
+ cookie = request.cookies['cookie'].value if 'cookie' in request.cookies else "undefined"
+
+ files = []
+ for key, values in request.POST.iteritems():
+ assert len(values) == 1
+ value = values[0]
+ if not hasattr(value, "file"):
+ continue
+ data = value.file.read()
+ files.append({"key": key,
+ "name": value.file.name,
+ "type": value.type,
+ "error": 0, #TODO,
+ "size": len(data),
+ "content": data})
+
+ get_data = {key:request.GET[key] for key,value in request.GET.iteritems()}
+ post_data = {key:request.POST[key] for key,value in request.POST.iteritems()
+ if not hasattr(request.POST[key], "file")}
+ headers_data = {key:request.headers[key] for key,value in request.headers.iteritems()}
+
+ data = {"jsonpResult": "success",
+ "method": request.method,
+ "headers": headers_data,
+ "body": request.body,
+ "files": files,
+ "GET": get_data,
+ "POST": post_data,
+ "username": username,
+ "password": password,
+ "cookie": cookie}
+
+ return headers, "report( %s )" % json.dumps(data)