Commit 4f7b8a56 authored by Maks Orlovich's avatar Maks Orlovich Committed by Commit Bot

Make xhr/cookies test work when we accept secure cookies on localhost

...by converting it into a WPT test that runs on a different hostname

Bug: 1076138
Change-Id: I2e687685ea32a4c742383900cd0b871dcc5b9c37
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2475934
Commit-Queue: Maksim Orlovich <morlovich@chromium.org>
Reviewed-by: default avatarYoav Weiss <yoavweiss@chromium.org>
Reviewed-by: default avatarRobert Ma <robertma@chromium.org>
Cr-Commit-Position: refs/heads/master@{#821844}
parent cb14bbe4
<!doctype html>
<meta charset=utf-8>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
<p>Derived from historical testcase for <a href="http://bugs.webkit.org/show_bug.cgi?id=3420">WebKit bug 3420</a>:
XMLHttpRequest does not handle set-cookie headers.</p>
<script>
function clearCookies()
{
return new Promise(resolve => {
var req = new XMLHttpRequest;
req.open("POST", "resources/get-set-cookie.py?clear=1");
req.onload = () => resolve();
req.send("");
});
}
function getAndSetCookies()
{
return new Promise(resolve => {
var req = new XMLHttpRequest;
req.open("POST", "resources/get-set-cookie.py");
req.onload = () => resolve(req.responseText);
req.send("");
});
}
promise_test(async function(t) {
await clearCookies();
var response = await getAndSetCookies();
assert_equals(response.match(/.*WK-test=1.*/), null,
"The cookie must not be present after clear. clearCookies() failed. Must be a bug in the test!");
var response = await getAndSetCookies();
assert_equals(response.match(/.*WK-test-secure=1.*/), null,
"a secure cookie was sent via HTTP");
assert_regexp_match(response, /.*WK-test=1.*/, "an insecure cookie was sent");
await clearCookies();
}, "Basic non-cross-site cookie handling in XHR");
</script>
</html>
import datetime
def main(request, response):
response.headers.set(b"Content-type", b"text/plain")
# By default use a session cookie.
expiration = None
if request.GET.get(b"clear"):
# If deleting, expire yesterday.
expiration = -datetime.timedelta(days=1)
response.set_cookie(b"WK-test", b"1", expires=expiration);
response.set_cookie(b"WK-test-secure", b"1", secure=True,
expires=expiration);
content = ""
for cookie in request.cookies:
content = content + b" " + cookie + b"=" + request.cookies.get(cookie).value
response.content = content
CONSOLE WARNING: line 11: Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
Tests for bug 3420: XMLHttpRequest does not handle set-cookie headers.
SUCCESS
<html>
<body>
<p>Tests for <a href="http://bugs.webkit.org/show_bug.cgi?id=3420">bug 3420</a>:
XMLHttpRequest does not handle set-cookie headers.</p>
<div id="result">FAIL: test script didn't run.</div>
<script>
function clearCookies()
{
req = new XMLHttpRequest;
req.open("POST", "resources/get-set-cookie.cgi?clear=1", false);
req.send("");
}
function getAndSetCookies()
{
req = new XMLHttpRequest;
req.open("POST", "resources/get-set-cookie.cgi", false);
req.send("");
return req.responseText;
}
function setResult(result)
{
document.getElementById("result").firstChild.data = result;
}
if (window.testRunner)
testRunner.dumpAsText();
try {
clearCookies();
var response = getAndSetCookies();
if (response && response.match(/.*WK-test=1.*/)) {
setResult("FAIL: The cookie still present after clear. clearCookies() failed. Must be a bug in the test!");
} else {
var response = getAndSetCookies();
if (response.match(/.*WK-test-secure=1.*/))
setResult("FAIL: a secure cookie was sent via HTTP");
else if (response.match(/.*WK-test=1.*/))
setResult("SUCCESS");
else
setResult("FAIL: the cookie was not set");
}
} catch (ex) {
setResult(ex);
} finally {
clearCookies();
}
</script>
<body>
</html>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment